# 確率調節可能版 A # パーティー全員の素早さの合計に、ステートによる補正を百分率でかける。 # その割合に基準値をかけたもの。 # # アクター側先制攻撃確率 # アクター先制攻撃基準値 × アクターAGI合計 ÷ エネミーAGI合計 # エネミー側先制攻撃確率 # エネミー先制攻撃基準値 × エネミーAGI合計 ÷ アクターAGI合計 # # またこれら基準値は変数として格納しているため、 # イベントを用いることで先制攻撃の基準確率を変更可能。 # ココから設定 module Annex # アクター側先制攻撃成功率の基準値を格納した変数のID ACTORS_FIRST_ATTACK_RATE = 2 # エネミー側先制攻撃成功率の基準値を格納した変数のID ENEMIES_FIRST_ATTACK_RATE = 3 end class Scene_Battle #-------------------------------------------------------------------------- # ◎ 追加:先制攻撃の計算式 # return 1 : アクター先制 # return 0 : 通常通り # return -1 : エネミー先制 #-------------------------------------------------------------------------- def first_attack_calculate # とりあえずサンプルとしての計算式 # 両方とも素早さ合計を出す。 # 計算開始 # 全員のステートと計算を確認する # アクター側 actor_size = 0 actors_agi = 0 actor_correct = 0 for actor in $game_party.actors next if not actor.exist? # 生存していない場合はスルー actor_size += 1 # 人数の増加 if actor.movable? # 行動可能ならばAGIを増加させる actors_agi += actor.agi end # ステート補正チェック actor_correct += actor.first_attack_state_check end # 敵側 enemy_size = 0 enemies_agi = 0 enemy_correct = 0 for enemy in $game_troop.enemies next if not enemy.exist? # 不可視の場合などはスルー enemy_size += 1 # 人数の増加 if enemy.movable? # 行動可能ならばAGIを増加させる enemies_agi += enemy.agi end # ステート補正チェック enemy_correct += actor.first_attack_state_check end actors = actors_agi * (100 + actor_correct) / 100 enemies = enemies_agi * (100 + enemy_correct) / 100 # アクター先制率 actor_rate = (actors / enemies) * $game_variables[ACTORS_FIRST_ATTACK_RATE] # エネミー先制率 enemy_rate = (enemies / actors) * $game_variables[ENEMIES_FIRST_ATTACK_RATE] # 先にアクター側の先制攻撃計算を実行 if rand(100) < actor_rate return 1 end # エネミー側の先制攻撃計算を実行 if rand(100) < enemy_rate return -1 end # 通常通り return 0 end end # ココまでが計算式設定