
#Title[ʏe2]
#Text[]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
    #include_script".\Local.txt"
   #include_function".\function_bullet.txt"
   let imgBOSS = csd~"img\dot_murasa.png";
   let shotData = csd ~ "11-221Shot.txt";
  let difficult = GetCommonDataDefaultEx("","dif",3); 

   @Initialize{
   SetCommonDataEx("","dif",difficult);
           SetLife(2500);
      SetDamageRate(100,40);
           SetTimer(45);  
           SetInvincibility(120);
        SetAlpha(255);
           LoadGraphic(imgBOSS);
          LoadUserShotData(shotData);
           TMain;
    }

   @MainLoop{
    if(OnEvent){break;}
    if(GetCommonDataDefaultEx("","gof",false)){
       SetDamageRate(0,0);
       SetTimer(100);
       break;
       }
           SetCollisionA(GetX, GetY, 24);
           SetCollisionB(GetX, GetY, 20);

         yield;
       }

   @DrawLoop{
         SetTexture(imgBOSS);  
        if(GetHitCount >= rand_int(1,damage) && GetTimeOfInvincibility == 0){
   SetColor(0,0,255);
        }
        DrawGraphic(GetX,GetY);
        SetColor(255,255,255);
  SetFontColor(255,255,0,255,255,0);
  DrawText("Minamitsu Murasa",minx+15,miny+15,10,255);
  SetFontColor(255,255,255,255,255,255);
     }

    @Finalize{
        DeleteGraphic(imgBOSS);
     }
 
     task TMain{
  yield;
    Count;
 SetMovePosition03(cx,miny+100,10,3);
  wait(60);
 Concentration01(60);
 PlaySE(Concentration);
  wait(60);
  alternative(difficult)
   case(0){Easy;}
   case(1){Normal;}
   case(2){Hard;}
   case(3){Lunatic;}
    }

 task Easy{
   let way = 30;
   loop{
   let delay = 10;
  sgrnum = 4;
  let x = GetX-6*way/2;
   let y = GetY+2*way;
  ascent(a in 0..way){
  CreateShot01(x,y,3,180-12*a,22,delay);
  CreateShot01(x,y,1,180-12*a,21,delay);
  CreateShot01(x,y,2,0+18*a,30,delay);
 CreateShot01(x,y,2,180+18*a,30,delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

    let x = GetX+6*way/2;
   let y = GetY+1*way;
  ascent(a in 0..way){
  CreateShot01(x,y,3,180-12*a,22,delay);
  CreateShot01(x,y,1,180-12*a,21,delay);
  CreateShot01(x,y,2,0+18*a,30,delay);
 CreateShot01(x,y,2,180+18*a,30,delay);
  x -= 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX-6*way/2;
  let y = GetY-0*way;
 ascent(a in 0..way){
  let vx = (x-GetX)/50;
  let vy = -1; 
  let ay = 0.01;
  let ly = 3;
 CreateShot12(x,y,vx,vy,0,ay,vx,ly,19,delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

 way += 2;
    wait(90);
  Move;
    wait(90);
       }
    }

 task Normal{
  let way = 30;
   loop{
   let delay = 10;
  sgrnum = 4;
  let x = GetX-6*way/2;
   let y = GetY+2*way;
  ascent(a in 0..way){
  CreateShot01(x,y,1,180-12*a,21,delay);
  CreateShot01(x,y,3.5,180-12*a,22,delay);
  CreateShot01(x,y,1,0-12*a,29,delay);
  CreateShot01(x,y,2.5,0+77*a,30,delay);
  CreateShot01(x,y,2.5,180-77*a,21,delay);
  CreateShot01(x,y,2,180+12*a,30,delay);
  CreateShot01(x,y,2,0+12*a,30,delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX+6*way/2;
   let y = GetY+1*way;
  ascent(a in 0..way){
  CreateShot01(x,y,1,180+12*a,21,delay);
  CreateShot01(x,y,3.5,180-12*a,22,delay);
  CreateShot01(x,y,1,0+12*a,29,delay);
  CreateShot01(x,y,2.5,0-77*a,30,delay);
  CreateShot01(x,y,2.5,180+77*a,21,delay);
  CreateShot01(x,y,2,180+12*a,30,delay);
  CreateShot01(x,y,2,0+12*a,30,delay);
  x -= 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX-6*way/2;
  let y = GetY-0*way;
 ascent(a in 0..way){
  let vx = x-GetX;
  let vy = -1;
  let ay = 0.01; 
  let ly = 3;
 CreateShot12(x,y,vx/50,vy,0,ay+0.0001*a,vx,ly,19,delay);
 CreateShot12(x,y,vx/60,vy,0,ay+0.003+0.0001*(way-a),vx,ly,18,delay);
 CreateShot12(x,y,vx/40,vy,0,ay-0.003+0.0001*(way-a),vx,ly,18,delay); 

  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

 way += 2;
    wait(90);
  Move;
    wait(90);
       }
    }

   task Hard{
   let way = 30;
   loop{
   let delay = 10;
  sgrnum = 4;
  let x = GetX-6*way/2;
   let y = GetY+1.5*way;
  ascent(a in 0..way){
  CreateShot01(x,y,1,150-18*a,21,delay);
  CreateShot01(x,y,1.5,120-18*a,21,delay);
  CreateShot01(x,y,3.5,180-8*a,22,delay);
  CreateShot01(x,y,1,30-18*a,29,delay);
  CreateShot01(x,y,1.5,60-18*a,29,delay);
  CreateShot01(x,y,2.5,0+73*a,30,delay);
  CreateShot01(x,y,2.5,180-73*a,21,delay);
  CreateShot01(x,y,2.2,90+123*a,22,delay);
  CreateShot01(x,y,2.2,-90-123*a,29,delay);
 CreateShot01(x,y,rand(0.5,3),rand(-180,180),23+8*rand_int(0,1),delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX+6*way/2;
   let y = GetY+1*way;
  ascent(a in 0..way){
 CreateShot01(x,y,1,150+18*a,21,delay);
 CreateShot01(x,y,1.5,150+18*a,21,delay);
  CreateShot01(x,y,3.5,180-8*a,22,delay);
  CreateShot01(x,y,1,30+18*a,29,delay);
  CreateShot01(x,y,1.5,30+18*a,29,delay);
  CreateShot01(x,y,2.5,0-73*a,30,delay);
  CreateShot01(x,y,2.5,180+73*a,21,delay);
  CreateShot01(x,y,2.2,90-123*a,22,delay);
  CreateShot01(x,y,2.2,-90+123*a,29,delay);
 CreateShot01(x,y,rand(0.5,3),rand(-180,180),23+8*rand_int(0,1),delay);
  x -= 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX-6*way/2;
  let y = GetY-0*way;
 ascent(a in 0..way){
  let vx = x-GetX;
  let vy = -1;
 let ay = 0.015; 
  let ly = 4;
  CreateShot12(x,y,vx/50,vy,0,ay+0.0001*a,vx,ly,19,delay);
 CreateShot12(x,y,vx/60,vy,0,ay+0.003+0.0001*(way-a),vx,ly,18,delay);
 CreateShot12(x,y,vx/40,vy,0,ay-0.003+0.0001*(way-a),vx,ly,18,delay); 
 CreateShot12(x,y,vx/70,vy,0,ay+0.006+0.0001*(way-a),vx,ly,19,delay);
 CreateShot12(x,y,vx/30,vy,0,ay-0.006+0.0001*(way-a),vx,ly,19,delay); 
 CreateShot01(x,y,rand(0.5,3),rand(-180,180),23+8*rand_int(0,1),delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

 way += 2;
    wait(90);
  Move;
    wait(90);
       }
    }

  task Lunatic{
   let way = 30;
   loop{
   let delay = 10;
  sgrnum = 4;
  let x = GetX-6*way/2;
   let y = GetY+1.5*way;
  ascent(a in 0..way){
  CreateShot01(x,y,1,120-12*a,21,delay);
  CreateShot01(x,y,5,180-6*a,22,delay);
  CreateShot01(x,y,1,60-12*a,29,delay);
  CreateShot01(x,y,2.5,0+73*a,30,delay);
  CreateShot01(x,y,2.5,180-73*a,21,delay);
  CreateShot01(x,y,2.2,90+123*a,22,delay);
  CreateShot01(x,y,2.2,-90-123*a,29,delay);
 CreateShot01(x,y,1.8,0+115*a,30,delay);
  CreateShot01(x,y,3,180-33*a,21,delay);
  CreateShot01(x,y,1.4,90+29*a,22,delay);
  CreateShot01(x,y,3.5,-90-157*a,29,delay);
  CreateShot01(x,y,1.2,0-55*a,30,delay);
  CreateShot01(x,y,rand(0.5,4),rand(-180,180),23,delay);
  CreateShot01(x,y,rand(0.5,4),rand(-180,180),31,delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX+6*way/2;
   let y = GetY+1*way;
  ascent(a in 0..way){
  CreateShot01(x,y,1,120+12*a,21,delay);
  CreateShot01(x,y,5,180-6*a,22,delay);
  CreateShot01(x,y,1,60+12*a,29,delay);
  CreateShot01(x,y,2.5,0-73*a,30,delay);
  CreateShot01(x,y,2.5,180+73*a,21,delay);
  CreateShot01(x,y,2.2,90-123*a,22,delay);
  CreateShot01(x,y,2.2,-90+123*a,29,delay);
 CreateShot01(x,y,1.8,0-115*a,30,delay);
  CreateShot01(x,y,3,180+33*a,21,delay);
  CreateShot01(x,y,1.4,90-29*a,22,delay);
  CreateShot01(x,y,3.5,-90+157*a,29,delay);
  CreateShot01(x,y,1.2,0+55*a,30,delay);
  CreateShot01(x,y,rand(0.5,4),rand(-180,180),23,delay);
  CreateShot01(x,y,rand(0.5,4),rand(-180,180),31,delay);
  x -= 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

  let x = GetX-6*way/2;
  let y = GetY-0*way;
 ascent(a in 0..way){
  let vx = x-GetX;
  let vy = -1;
  let ay = 0.03;
  let ly = 5;
   ascent(b in 1..6){
 CreateShot12(x,y,vx/(40+b*10),vy,0,ay-0.005*b+0.0001*a,vx,ly,19,delay);
 CreateShot12(x,y,vx/(45+b*10),vy,0,ay-0.005*b-0.0025+0.0001*(way-a),vx,ly,18,delay);
   }
 CreateShot01(x,y,rand(0.5,4),rand(-180,180),23,delay);
  CreateShot01(x,y,rand(0.5,4),rand(-180,180),31,delay);
  x += 6;
  y -= 1.5;
  PlaySE(seshot1);
   wait(1);
       }

 way += 2;
    wait(90);
  Move;
    wait(90);
       }
    }

    task Move{
   let f = 1.5;
  let r = rand_int(0,1);
  if(GetX < minx+100){r = 0;}
 else if(GetX > maxx-100){r = 1;}
 else if(GetX < GetPlayerX){r = 0;}
 else if(GetX > GetPlayerX){r = 1;}
    let x = GetX + rand(30,45)*(-1)^r;
    let y = GetY + rand(-32,32);
    if(y < miny+48){y = miny+48;}
    else if(y > miny+130){y = miny+130;}
   if(GetX > x){sgrnum = 1;}
   else if(GetX < x){sgrnum = 2;}  
    SetMovePosition03(x,y,15,f);
     wait(90);
   /* sgrnum = 0;*/
    }

    function offsetX(radius,angle){
           return radius * cos(angle);
     }

        function offsetY(radius,angle){
            return radius * sin(angle);
     }           

       function move(f){
          SetMovePosition02(rand(GetClipMinX+60,GetClipMaxX-60),GetY+rand(-20,20),f);
     }
            
        function sc(r,g,b){
             SetShotColor(r,g,b);
     }

  function sgr(a,b){SetGraphicRect(a*128,b*128,(a+1)*128,(b+1)*128);}

       function wait(w){
                loop(w){yield;}
       }
}