#e
#Title[FuTVN~chGv]
#Text[G@ĹuvYo[Oov]
#ScriptVersion[2]
#PlayLevel[Easy]
#Player[FREE]

script_enemy_main {
 let img = "script\img\ExRumia.png";
 let name = "FuTVN~chGv";
 let pet = rand(1, 4);

 @Initialize {
  CutIn(KOUMA, name, "", 0, 0, 0, 0);
  SetX(GetCenterX);
  SetY(GetCenterY);
  SetLife(1);
  SetTimer(60);
  SetScore(2000000);
  SetDamageRate(0, 0);

  LoadGraphic(img);
  SetTexture(img);
  SetGraphicRect(64, 0, 128, 64);

  TMain;
 }

 @MainLoop {
  SetCollisionB(GetX, GetY, 24);

  yield;
 }

 @DrawLoop {
  DrawGraphic(GetX, GetY);
 }

 @Finalize {
  DeleteGraphic(img);
 }

 task TMain {
  yield;

  TShot;
 }

 task TShot {
  yield;

  loop {
   TColorShot(1);
   loop(200) { yield; }
  }
 }

 task TColorShot(delay) {
  TRed(1);
  TBlue(1);
  TYellow(1);
 }

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

 task TRed(delay) {
  let obj = Obj_Create(OBJ_SHOT);

  Obj_SetPosition(obj, rand(GetClipMinX + 30, GetClipMaxX - 30), rand(GetClipMinY, GetCenterY - 120));
  Obj_SetSpeed(obj, 0.5);
  Obj_SetAngle(obj, rand(0, 360));
  ObjShot_SetGraphic(obj, RED03);
  ObjShot_SetDelay(obj, delay);

  loop(delay) { yield; }

  while(!Obj_BeDeleted(obj)) {

   if(Obj_GetX(obj) < GetClipMinX) {
    Obj_SetX(obj, GetClipMinX * 2 - Obj_GetX(obj));
    Obj_SetAngle(obj, rand(-80, 80));
   }

   if(Obj_GetY(obj) < GetClipMinY) {
    Obj_SetY(obj, GetClipMinY * 2 - Obj_GetY(obj));
    Obj_SetAngle(obj, rand(10, 170));
   }

   if(Obj_GetY(obj) > GetCenterY - 110) {
    Obj_SetY(obj, (GetCenterY - 110) * 2 - Obj_GetY(obj));
    Obj_SetAngle(obj, rand(-170, -10));
   }

   if(pet <= 2 && GetTimer > 40) {
    let angle = 0;

    CreateShot01(GetX, GetY, 0, 90, RED01, 1);
    CreateShot01(GetX, GetY, 0, 90, RED01, 120);
    wait(120);

    loop(18) {
     CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 3, angle, RED11, 0);
     angle += 20;
     pet = rand(1, 4);
    }
   }

   if(pet <= 2 && GetTimer < 20) {
    let angle = 0;

    CreateShot01(GetX, GetY, 0, 90, RED01, 1);
    CreateShot01(GetX, GetY, 0, 90, RED01, 120);
    wait(120);

    loop(18) {
     CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 3, angle, RED11, 0);
     angle += 20;
     pet = rand(1, 4);
    }
   }

   if(pet <= 2 && GetTimer < 40) {
    let speed = 1;

    CreateShot01(GetX, GetY, 0, 90, ORANGE01, 1);
    CreateShot01(GetX, GetY, 0, 90, ORANGE01, 120);
    wait(120);

    loop(8) {
     CreateShot01(Obj_GetX(obj), Obj_GetY(obj), speed, 90, ORANGE31, 1);
     speed += 0.2;
    }
    speed = 1;
    pet = rand(1, 4);
   }

   if(pet >= 2.5 && pet <= 3.5 && GetTimer < 40) {
    CreateShot01(GetX, GetY, 0, 90, PURPLE01, 1);
    CreateShot01(GetX, GetY, 0, 90, PURPLE01, 120);
    wait(120);

    CreateLaser01(Obj_GetX(obj), Obj_GetY(obj), 2, atan2(GetPlayerY - Obj_GetY(obj), GetPlayerX - Obj_GetX(obj)), 100, 10, PURPLE11, 1);
    pet = rand(1, 4);
   }

   yield;
  }
 }

 task TBlue(delay) {
  let obj2 = Obj_Create(OBJ_SHOT);

  Obj_SetPosition(obj2, rand(GetClipMinX + 30, GetClipMaxX - 30), rand(GetClipMinY, GetCenterY - 120));
  Obj_SetSpeed(obj2, 0.5);
  Obj_SetAngle(obj2, rand(0, 360));
  ObjShot_SetGraphic(obj2, BLUE03);
  ObjShot_SetDelay(obj2, delay);

  loop(delay) { yield; }

  while(!Obj_BeDeleted(obj2)) {

   if(Obj_GetX(obj2) < GetClipMinX) {
    Obj_SetX(obj2, GetClipMinX * 2 - Obj_GetX(obj2));
    Obj_SetAngle(obj2, rand(-80, 80));
   }

   if(Obj_GetY(obj2) < GetClipMinY) {
    Obj_SetY(obj2, GetClipMinY * 2 - Obj_GetY(obj2));
    Obj_SetAngle(obj2, rand(10, 170));
   }

   if(Obj_GetY(obj2) > GetCenterY - 110) {
    Obj_SetY(obj2, (GetCenterY - 110) * 2 - Obj_GetY(obj2));
    Obj_SetAngle(obj2, rand(-170, -10));
   }

   if(pet >= 2 && pet <= 3 && GetTimer > 40) {

    CreateShot01(GetX, GetY, 0, 90, BLUE01, 1);
    CreateShot01(GetX, GetY, 0, 90, BLUE01, 120);
    wait(120);

    loop(18) {
     CreateShot01(Obj_GetX(obj2), Obj_GetY(obj2), rand(2, 3), rand(0, 180), BLUE11, 0);
     pet = rand(1, 4);
    }
   }

   if(pet >= 2 && pet <= 3 && GetTimer < 20) {
    CreateShot01(GetX, GetY, 0, 90, BLUE01, 1);
    CreateShot01(GetX, GetY, 0, 90, BLUE01, 120);
    wait(120);

    loop(18) {
     CreateShot01(Obj_GetX(obj2), Obj_GetY(obj2), rand(2, 3), rand(0, 180), BLUE11, 0);
     pet = rand(1, 4);
    }
   }

   if(pet >= 2.5 && pet <= 3.5 && GetTimer < 40) {
    let angle = 0;
    let angle2 = 0;

    CreateShot01(GetX, GetY, 0, 90, GREEN01, 1);
    CreateShot01(GetX, GetY, 0, 90, GREEN01, 120);
    wait(120);

    loop(20) {
     CreateShot01(Obj_GetX(obj2), Obj_GetY(obj2), 2, angle, GREEN11, 0);
     angle += 18;
    }
    pet = rand(1, 4);
   }

   if(pet >= 3 && pet <= 4 && GetTimer < 40) {
    CreateShot01(GetX, GetY, 0, 90, PURPLE01, 1);
    CreateShot01(GetX, GetY, 0, 90, PURPLE01, 120);
    wait(120);

    CreateLaser01(Obj_GetX(obj2), Obj_GetY(obj2), 2, atan2(GetPlayerY - Obj_GetY(obj2), GetPlayerX - Obj_GetX(obj2)), 100, 10, PURPLE11, 1);
    pet = rand(1, 4);
   }

   yield;
  }
 }

 task TYellow(delay) {
  let obj = Obj_Create(OBJ_SHOT);

  Obj_SetPosition(obj, rand(GetClipMinX + 30, GetClipMaxX - 30), rand(GetClipMinY, GetCenterY - 120));
  Obj_SetSpeed(obj, 0.5);
  Obj_SetAngle(obj, rand(0, 360));
  ObjShot_SetGraphic(obj, YELLOW03);
  ObjShot_SetDelay(obj, delay);

  loop(delay) { yield; }

  while(!Obj_BeDeleted(obj)) {

   if(Obj_GetY(obj) < GetClipMinY) {
    Obj_SetY(obj, GetClipMinY * 2 - Obj_GetY(obj));
    Obj_SetAngle(obj, rand(10, 170));
   }

   if(Obj_GetY(obj) > GetCenterY - 110) {
    Obj_SetY(obj, (GetCenterY - 110) * 2 - Obj_GetY(obj));
    Obj_SetAngle(obj, rand(-170, -10));
   }

   if(pet > 3 && pet <= 4 && GetTimer > 40) {

    CreateShot01(GetX, GetY, 0, 90, YELLOW01, 1);
    CreateShot01(GetX, GetY, 0, 90, YELLOW01, 120);
    wait(120);

    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, atan2(GetPlayerY - Obj_GetY(obj), GetPlayerX - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.7, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.7, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 100) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 100) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 150) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 150) - Obj_GetX(obj)), YELLOW01, 0);
    pet = rand(1, 4);
   }

   if(pet >= 3 && pet <= 4 && GetTimer < 20) {

    CreateShot01(GetX, GetY, 0, 90, YELLOW01, 1);
    CreateShot01(GetX, GetY, 0, 90, YELLOW01, 120);
    wait(120);

    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, atan2(GetPlayerY - Obj_GetY(obj), GetPlayerX - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.7, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.7, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 100) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.4, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 100) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 150) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX + 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 50) - Obj_GetX(obj)), YELLOW01, 0);
    CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 1.1, atan2(GetPlayerY - Obj_GetY(obj), (GetPlayerX - 150) - Obj_GetX(obj)), YELLOW01, 0);
    pet = rand(1, 4);
   }

   if(pet <= 2.5 && pet >= 1.5 && GetTimer < 40) {
    let speed = 1;

    CreateShot01(GetX, GetY, 0, 90, ORANGE01, 1);
    CreateShot01(GetX, GetY, 0, 90, ORANGE01, 120);
    wait(120);

    loop(8) {
     CreateShot01(Obj_GetX(obj), Obj_GetY(obj), speed, 90, ORANGE31, 1);
     speed += 0.3;
    }
    speed = 1;
    pet = rand(1, 4);
   }

   if(pet >= 2 && pet <= 3 && GetTimer < 40) {
    let angle = 0;
    let angle2 = 0;

    CreateShot01(GetX, GetY, 0, 90, GREEN01, 1);
    CreateShot01(GetX, GetY, 0, 90, GREEN01, 120);
    wait(120);

    loop(20) {
     CreateShot01(Obj_GetX(obj), Obj_GetY(obj), 2, angle, GREEN11, 0);
     angle += 18;
    }
    pet = rand(1, 4);
   }

   yield;
  }
 }

}