# 逃走確率の計算方法の変更 # デフォルトでは ESCAPE_RATE = 50、GET_AVERAGE = true、AGILITY_BASE = 0となっている。 # 計算方法はこんな感じになってます。 # 1.アクターの素早さ合計(GET_AVERAGEがtrueなら平均値)を出す (これをactor_agiに代入) # 2.エネミーの素早さ合計(GET_AVERAGEがtrueなら平均値)を出す (これをenemy_agiに代入) # 3.actor_agi と enemy_agi に AGILITY_BASE の値をそのまま足す。 # 4.逃走成功率は ESCAPE_RATE × actor_agi ÷ enemie_agi (%) # 実際にやってみれば分かりますが、AGILITY_BASEが大きいほどブレが小さくなります。 # 例えば actor_agiが100、enemy_agiが200の時は逃走成功確率は基準の半分になります。 # ここで「AGILITY_BASE = 50」の場合、それぞれに50足すので # 150と250になりますね。この場合は逃走成功確率は基準の3分の5になります。 module Etorier ESCAPE_RATE = 50 # 基準となる逃走成功確率 GET_AVERAGE = true # 素早さ平均から計算するか否か。 # false なら 敵が多ければ多いほど不利になる AGILITY_BASE = 30 # 各々の素早さの合計に、最後にこの値だけ足すことでブレの矯正 end Scene_Battle #-------------------------------------------------------------------------- # ● フレーム更新 (パーティコマンドフェーズ : 逃げる) (再定義) #-------------------------------------------------------------------------- def update_phase2_escape # 逃走成功確率判定 success = get_escape_rate # 逃走成功の場合 if success # 逃走 SE を演奏 $game_system.se_play($data_system.escape_se) # バトル開始前の BGM に戻す $game_system.bgm_play($game_temp.map_bgm) # バトル終了 battle_end(1) # 逃走失敗の場合 else # パーティ全員のアクションをクリア $game_party.clear_actions # メインフェーズ開始 start_phase4 end end #-------------------------------------------------------------------------- # ◎ 追加:逃走成功判定 #-------------------------------------------------------------------------- def get_escape_rate # エネミーの素早さを計算 enemies_agi = 0 enemies_number = 0 for enemy in $game_troop.enemies if enemy.exist? enemies_agi += enemy.agi enemies_number += 1 end end # 平均値を取る場合は人数で割る if Etolier::GET_AVERAGE and enemies_number > 0 enemies_agi /= enemies_number end # 基底を足す enemies_agi += Etolier::AGILITY_BASE # アクターの素早さを計算 actors_agi = 0 actors_number = 0 for actor in $game_party.actors if actor.exist? actors_agi += actor.agi actors_number += 1 end end # 平均値を取る場合は人数で割る if Etolier::GET_AVERAGE and actors_number > 0 actors_agi /= actors_number end # 基底を足す actors_agi += Etolier::AGILITY_BASE # 逃走成功判定 return rand(100) < Etolier::ESCAPE_RATE * actors_agi / enemies_agi end end