2025年版モビルファイト戦闘実行処理のコード公開!!

今回は2025年版モビルファイトの対戦コードを公開いたします。
基本的には同じですが2017年と比べてやや変わっているところがあります。
皆さんの参考になれば幸いです(˘ω˘)

#
#戦闘実行処理
#
for(my $turn = 0; $turn < 200; $turn++){
   #ゲージ増加スピード依存
   $my_gauge += $my_sp;
   $vs_gauge += $vs_sp;
   if ($my_gauge >= $vs_gauge and $my_atcnt > 0){
      $my_prob = int(rand(100) + 1);
      $my_critical_prob = int(rand(100) + 1);
      if ($my_hit >= $my_prob){
         if ($$MY_STATE[22] >= 60 and $my_cho >= $my_critical_prob){
            #直撃
            $$VS_STATE[13] -= int(($my_at * 1.5));$my_meichu[$my_cnt] = 3;
         } elsif ($my_cho >= $my_critical_prob){
            #クリティカル
            $$VS_STATE[13] -= int(($my_at * 1.4));$my_meichu[$my_cnt] = 3;
         } else {
            #ヒット
            $$VS_STATE[13] -= int($my_at);$my_meichu[$my_cnt] = 2;
         } 
         $my_gauge = 0;$my_atcnt--;$my_cnt++;
      } else {
         #ハズレ
         $my_meichu[$my_cnt] = 1;$my_gauge = 0;$my_atcnt--;$my_cnt++;
      }
      #ターンメッセージ
      $turn_msg .= "◯";
   } elsif ($vs_gauge >= $my_gauge and $vs_atcnt > 0){
      $vs_prob = int(rand(100) + 1);
      $vs_critical_prob = int(rand(100) + 1);
      if ($vs_hit >= $vs_prob){
         if ($$VS_STATE[22] >= 60 and  $vs_cho >= $vs_critical_prob){
            #直撃
            $$MY_STATE[13] -= int(($vs_at * 1.5));$vs_meichu[$vs_cnt] = 3;
         } elsif ($vs_cho >= $vs_critical_prob){
            #クリティカル
            $$MY_STATE[13] -= int(($vs_at * 1.4));$vs_meichu[$vs_cnt] = 3;
         } else {
            #ヒット
            $$MY_STATE[13] -= int($vs_at);$vs_meichu[$vs_cnt] = 2;
         } 
         $vs_gauge = 0;$vs_atcnt--;$vs_cnt++;
      } else {
         #ハズレ
         $vs_meichu[$vs_cnt] = 1;$vs_gauge = 0;$vs_atcnt--;$vs_cnt++;
      }
      #ターンメッセージ
      $turn_msg .= "▽";
   }
   #敵撃墜判定
   if ($$VS_STATE[13] <= 0){
      $$VS_STATE[24] = 0;$$VS_STATE[13] = 0;
      if ($nb_flag eq "1"){
         $msg = "「$$MY_STATE[0]」が「$$VS_STATE[0]」を撃破。「$$VS_STATE[3]」機は中破。";
      } else {
         $msg = "「$$MY_STATE[0]」が「$$VS_STATE[0]」を撃破。「$$VS_STATE[3]」機は大破。";
      }
      $msg2 = "「$$MY_STATE[0]」が「$$VS_STATE[0]」を撃破。";
      $result = 1;
      #自爆大破
      if ($mission eq "12"){
         $zibaku_win_flag = 1;
         $$MY_STATE[24] = 0;
      }
      last;
   }
   #自機大破判定
   if ($$MY_STATE[13] <= 0){
      $$MY_STATE[24] = 0;$$MY_STATE[13] = 0;
      if ($nb_flag eq "1"){
         $msg = "「$$VS_STATE[0]」が「$$MY_STATE[0]」を撃破。「$$MY_STATE[3]」機は中破。";
      } else {
         $msg = "「$$VS_STATE[0]」が「$$MY_STATE[0]」を撃破。「$$MY_STATE[3]」機は大破。";
      }
      $msg2 = "「$$VS_STATE[0]」が「$$MY_STATE[0]」を撃破。";
      $result = 0;
      last;
   }
   #自機攻撃終了判定
   if ($my_atcnt <= 0){
      $my_gauge = 0; $my_sp = 0; $vs_at = $vs_at_down; $vs_hit = $vs_hit_down;
      if ($skill_msg eq ""){
         $skill_msg = "自機の攻撃終了特殊補正が発動。";
      }
   }
   #敵機攻撃終了判定
   if ($vs_atcnt <= 0){
      $vs_gauge = 0; $vs_sp = 0; $my_at = $my_at_down; $my_hit = $my_hit_down;
      if ($skill_msg eq ""){
         $skill_msg = "敵機の攻撃終了特殊補正が発動。";
      }
   }
   #両機未大破終了判定
   if ($my_atcnt == 0 and $vs_atcnt == 0){
      $msg = "「$$MY_STATE[0]」と「$$VS_STATE[0]」は交戦後、戦闘を終了。";
      $msg2 = "「$$MY_STATE[0]」と「$$VS_STATE[0]」が交戦。";
      $result = 2;
      last;
   }
}

ブログ主が運営しているゲームです。

 MobileFight

 ジマさんの囲碁入門