 let imgEnemy = GetCurrentScriptDirectory~"img\ExRumia.png";
 let startWait = 90;
 let spellCard = ["puN[vouX-Easy-v",
                  "puN[vouX-Normal-v",
                  "puN[vouX-Hard-v",
                  "puN[vouX-Lunatic-v",
                  "puN[vouX-Extra-v"];
 let explosionSE = GetCurrentScriptDirectory~"se\explosion1.wav";
 let countdownSE = GetCurrentScriptDirectory~"se\nc12518.wav";

 //wt[҂֐
 function wait(w) {
  loop(w) { yield; }
 }

 //eoue
 task TBubbleShot(speed, angle, count, explosionTime, shotRank) {
  let obj = Obj_Create(OBJ_SHOT);
  let countTurn = [0, 180];
  let time = 0;
  let flag = 0;

  Obj_SetPosition(obj, GetX, GetY);
  Obj_SetSpeed(obj, speed);
  Obj_SetAngle(obj, angle);
  ObjShot_SetGraphic(obj, 170);
  ObjShot_SetDelay(obj, 0);

  while(!Obj_BeDeleted(obj)) {
   //]̐ݒ
   let countScope1Y = [Obj_GetY(obj), GetClipMinY];
   let countScope1YY = [GetClipMaxY, Obj_GetY(obj)];
   let countScope2X = [Obj_GetX(obj), GetClipMaxX];
   let countScope2XX = [GetClipMinX, Obj_GetX(obj)];
   let countScope3Y = [Obj_GetY(obj), GetClipMaxY];
   let countScope3YY = [GetClipMinY, Obj_GetY(obj)];
   let countScope4X = [Obj_GetX(obj), GetClipMinX];
   let countScope4XX = [GetClipMaxX, Obj_GetX(obj)];

   if(Obj_GetX(obj) >= GetClipMaxX && countScope1Y[count] <= countScope1YY[count]) {
    Obj_SetAngle(obj, 90 + countTurn[count]);
    flag = 1;
   }
   else if(Obj_GetY(obj) >= GetClipMaxY && countScope2X[count] >= countScope2XX[count]) {
    Obj_SetAngle(obj, 180 + countTurn[count]);
    flag = 1;
   }
   else if(Obj_GetX(obj) <= GetClipMinX && countScope3Y[count] >= countScope3YY[count]) {
    Obj_SetAngle(obj, 270 + countTurn[count]);
    flag = 1;
   }
   else if(Obj_GetY(obj) <= GetClipMinY && countScope4X[count] <= countScope4XX[count]) {
    Obj_SetAngle(obj, 360 + countTurn[count]);
    flag = 1;
   }

   time += 1;
   if(time == round(explosionTime / 3 * 2)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(15);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 6 * 5)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(10);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 12 * 11)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(10);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 24 * 23)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(5);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 36 * 35)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(5);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 48 * 47)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(3);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == round(explosionTime / 60 * 59)) {
    PlaySE(countdownSE);
    Obj_SetAlpha(obj, 128);
    wait(3);
    Obj_SetAlpha(obj, 255);
   }
   else if(time == explosionTime) {
    PlaySE(explosionSE);
    loop(shotRank) {
     TExplosionShot(Obj_GetX(obj), Obj_GetY(obj));
    }

    Obj_Delete(obj);
   }

   if(time > explosionTime / 48 * 47) {
    Obj_SetSpeed(obj, 0);
   }

   if(flag == 1) {
    if(absolute(Obj_GetX(obj) - GetPlayerX) < 40) {
     if(absolute(Obj_GetY(obj) - GetPlayerY) < 50) {
      Obj_SetSpeed(obj, 0);
      wait(30);
      Obj_SetAlpha(obj, 128);
      wait(10);
      Obj_SetAlpha(obj, 255);
      PlaySE(explosionSE);
      loop(shotRank + 5) {
       TExplosionShot(Obj_GetX(obj), Obj_GetY(obj));
      }

      Obj_Delete(obj);
     }
    }
   }

   yield;
  }
 }

 task TExplosionShot(x, y) {
  let obj = Obj_Create(OBJ_SHOT);

  Obj_SetPosition(obj, x, y);
  Obj_SetSpeed(obj, 0.5);
  Obj_SetAngle(obj, rand(0, 360));
  ObjShot_SetGraphic(obj, 14);
  ObjShot_SetDelay(obj, 0);
 }