今回は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; } }