#e
#Title[SupjbNou -Lunatic-v]
#Text[R̖APĂ܂BpjbNɂȂȂƂƌՂ̈Ӗ𗝉邱Ƃs̕ꓹ]
#ScriptVersion[2]

script_enemy_main {
 let img = "script\img\ExRumia.png";
 let pet = 0;
 let name = "SupjbNou-Lunatic-v";
 let xStart = GetCenterX;
 let yStart = GetCenterY;
 let brow = 0;
 let boss = 90;
 let draw = 0;

 function nway(dir, way, span, color) {
  let radius = rand(0, 50);
  let mid = dir - (way - 1) / 2 * span;

  loop(way) {
   let x = GetX + offsetX(radius, mid);
   let y = GetY + offsetY(radius, mid);

   CreateShot01(x, y, rand(1, 3), mid, color, 0);
   mid += span;
  }
 }

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

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

 function moveToPlayer(xMove, yMove, frame, left, top, right, bottom) {
  let x;
  let y;

  x = GetX + xMove;
  if(x < left) {
   x = left;
  }
  else if(right < x) {
   x = right;
  }

  y = GetY + yMove;
  if(y < top) {
   y = top;
  }
  else if(bottom < y) {
   y = bottom;
  }

  SetMovePosition02(x, y, frame);
 }

 @Initialize {
  CutIn(KOUMA, name, "", 0, 0, 0, 0);
  SetLife(rand(5000, 7000));
  SetTimer(99);
  SetScore(5000000);

  LoadGraphic(img);
  SetTexture(img);
  SetGraphicRect(1, 1, 64, 64);

  TMain;
 }

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

  pet += 1;
  if(pet == 241) {
   CreateShot01(GetCenterX / 3, GetCenterY / 3, 0, 0, GREEN01, 0);
  }
  if(pet == 242) {
   CreateShot01(GetCenterX * 2 / 3, GetCenterY / 3, 0, 0, YELLOW01, 0);
  }
  if(pet == 243) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY / 3, 0, 0, BLUE01, 0);
  }
  if(pet == 244) {
   CreateShot01(GetCenterX * 4 / 3, GetCenterY / 3, 0, 0, RED01, 0);
  }
  if(pet == 245) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY / 3, 0, 0, AQUA01, 0);
  }
  if(pet == 246) {
   CreateShot01(GetCenterX / 3, GetCenterY * 2 / 3, 0, 0, AQUA01, 0);
  }
  if(pet == 247) {
   CreateShot01(GetCenterX * 2 / 3, GetCenterY * 2 / 3, 0, 0, GREEN01, 0);
  }
  if(pet == 248) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY * 2 / 3, 0, 0, YELLOW01, 0);
  }
  if(pet == 249) {
   CreateShot01(GetCenterX * 4 / 3, GetCenterY * 2 / 3, 0, 0, BLUE01, 0);
  }
  if(pet == 250) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY * 2 / 3, 0, 0, RED01, 0);
  }
  if(pet == 251) {
   CreateShot01(GetCenterX / 3, GetCenterY * 3 / 3, 0, 0, RED01, 0);
  }
  if(pet == 252) {
   CreateShot01(GetCenterX * 2 / 3, GetCenterY * 3 / 3, 0, 0, AQUA01, 0);
  }
  if(pet == 253) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY * 3 / 3, 0, 0, GREEN01, 0);
  }
  if(pet == 254) {
   CreateShot01(GetCenterX * 4 / 3, GetCenterY * 3 / 3, 0, 0, YELLOW01, 0);
  }
  if(pet == 255) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY * 3 / 3, 0, 0, BLUE01, 0);
  }
  if(pet == 256) {
   CreateShot01(GetCenterX / 3, GetCenterY * 4 / 3, 0, 0, BLUE01, 0);
  }
  if(pet == 257) {
   CreateShot01(GetCenterX * 2 / 3, GetCenterY * 4 / 3, 0, 0, RED01, 0);
  }
  if(pet == 258) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY * 4 / 3, 0, 0, AQUA01, 0);
  }
  if(pet == 259) {
   CreateShot01(GetCenterX * 4 / 3, GetCenterY * 4 / 3, 0, 0, GREEN01, 0);
  }
  if(pet == 260) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY * 4 / 3, 0, 0, YELLOW01, 0);
  }
  if(pet == 261) {
   CreateShot01(GetCenterX / 3, GetCenterY * 5 / 3, 0, 0, YELLOW01, 0);
  }
  if(pet == 262) {
   CreateShot01(GetCenterX * 2 / 3, GetCenterY * 5 / 3, 0, 0, BLUE01, 0);
  }
  if(pet == 263) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY * 5 / 3, 0, 0, RED01, 0);
  }
  if(pet == 264) {
   CreateShot01(GetCenterX * 4 / 3, GetCenterY * 5 / 3, 0, 0, AQUA01, 0);
  }
  if(pet == 265) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY * 5 / 3, 0, 0, GREEN01, 0);
  }
  if(pet == 245) {
   CreateShot01(GetCenterX / 3, GetCenterY * rand(1, 5) / 3, 1, rand(90, 360), RED03, 0);
  }
  if(pet == 250) {
   CreateShot01(GetCenterX * rand(3, 5) / 3, GetCenterY * rand(1, 5) / 3, 1, rand(-180, 90), BLUE03, 0);
  }
  if(pet == 255) {
   CreateShot01(GetCenterX * rand(1, 5) / 3, GetCenterY * rand(1, 4) / 3, 1, rand(0, 360), AQUA03, 0);
  }
  if(pet == 260) {
   CreateShot01(GetCenterX * 5 / 3, GetCenterY * 5 / 3, 1, rand(180, 270), YELLOW03, 0);
  }
  if(pet == 265) {
   CreateShot01(GetCenterX * 3 / 3, GetCenterY * 3 / 3, 2, rand(0, 360), GREEN03, 0);
   pet = 240;
  }

  brow += 1;
  if(brow == 250) {
   CreateShot01(GetCenterX, GetCenterY, 1, boss, RED22, 0);
   boss += 37.16;
   brow = 247;
  }

  draw += 1;
  if(draw == 260) {
   CreateShot01(GetCenterX * rand(0, 6) / 3, GetClipMinY, 1, 90, GREEN32, 0);
   draw = 249;
  }

  yield;
 }

 @DrawLoop {
  DrawGraphic(GetX, GetY);
 }

 @Finalize {
  DeleteGraphic(img);
 }

 task TMain {
  yield;

  standBy;
  concentration;

  TNway;
  TMove;
 }

 sub standBy {
  let wStart = 120;

  SetDamageRate(0, 0);

  SetMovePosition02(xStart, yStart, wStart);
  wait(wStart);
 }

 sub concentration {
  let wConc = 120;

  Concentration01(wConc);
  wait(wConc);

  SetDamageRate(100, 5);
 }

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

 task TNway {
  let angle = 90;
  yield;

  loop {
   loop(15) { yield; }
   nway(angle, rand(1, 10), rand(0, 180), BLUE12);
   angle += rand(1, 360);

   loop(30) { yield; }
   nway(angle, rand(1, 10), rand(180, 360), RED32);
   angle += rand(1, 360);
  }
 }

 task TMove {
  yield;

  loop {
   loop(10) { yield; }
   moveToPlayer(rand(-500, 500), rand(-500, 250), rand(0, 150),
                GetClipMinX, GetClipMinY,
                GetCenterX * 2, GetCenterY * 2);
  }
 }

}