[解決済][VX]スキルに命中率マイナス補正を設定したい

ランチ
記事: 13
登録日時: 2018年5月14日(月) 22:56

[解決済][VX]スキルに命中率マイナス補正を設定したい

投稿記事by ランチ » 2019年12月19日(木) 17:57

こんばんは。またお世話になります。
例えば命中率95%の武器を装備し、全体攻撃で命中率補正が20%落ちるスキルを使った時
95%から20%引かれ、75%の確率で当たるが、25%の確率で避ける敵もいる全体攻撃を行う
といった感じのスキルを作りたいのですが、何かいい方法は無いでしょうか?
「成功率」をいじってしまうとスキルそのものが不発してしまうので全体攻撃に運用出来ませんでした。
よろしくおねがいします。
最後に編集したユーザー ランチ on 2019年12月19日(木) 21:11 [ 編集 1 回目 ]

ショウ
記事: 130
登録日時: 2016年8月10日(水) 19:52

Re: [VX]スキルに命中率マイナス補正を設定したい

投稿記事by ショウ » 2019年12月19日(木) 18:36

なんか仕様を若干勘違いしている様な気がするのでそこをまず、
まずデフォルトでは武器の命中率は通常攻撃にのみ反映されます。
つまり仮に命中率1%に設定していても成功率100%のスキルを使えば
命中判定自体は100%で判定されます。
次にスキルの命中率に関してですが成功率がそのまま命中率として扱われます。
成功率を50%に設定した全体攻撃スキルの場合ちゃんと一体毎に50%で判定されていますので
スキル自体が不発に終わるという訳ではありません。
そしてVXには場合によってはある種厄介な仕様があり、命中判定と回避判定は全く別判定という仕様です。
ようするに例え命中率100%の通常攻撃なりスキルなりを使ったとしても回避率が5%に設定された敵に
使った場合5%の確率で無効化されてしまいます。(物理攻撃にチェックを入れてある場合)

前振りはここまでとして。
武器の命中率とスキルの成功率(命中率)を絡ませたいという事ですが、
Game_Battlerの最終命中率の計算という所があるのでそこを弄りましょう。
一例として簡単な物を作ってみました。

コード: 全て選択

#==============================================================================
# 簡易的なスキル命中率補正
# byショウ
#利用規約 素材単体での販売以外は自由
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 最終命中率の計算
  #     user : 攻撃者、スキルまたはアイテムの使用者
  #     obj  : スキルまたはアイテム (通常攻撃の場合は nil)
  #--------------------------------------------------------------------------
  def calc_hit(user, obj = nil)
    if obj == nil                           # 通常攻撃の場合
      hit = user.hit                        # 命中率を取得
      physical = true
    elsif obj.is_a?(RPG::Skill)             # スキルの場合
      if obj.note.include?("プラス補正") # スキルのメモにプラス補正とあった場合
        hit = user.hit + obj.hit
      elsif obj.note.include?("マイナス補正")# スキルのメモにマイナス補正とあった場合
        hit = user.hit - obj.hit
      else# スキルのメモに上記が無い場合
        hit = obj.hit                         # 成功率を取得
      end
      physical = obj.physical_attack
    else                                    # アイテムの場合
      hit = 100                             # 命中率を 100% とする
      physical = obj.physical_attack
    end
    if physical                             # 物理攻撃の場合
      hit /= 4 if user.reduce_hit_ratio?    # 使用者が暗闇なら 1/4 にする
    end
    return hit
  end
end

スキルのメモにプラス補正とあった場合、命中率が武器の命中率+スキルの成功率になります。
マイナス補正の場合は命中率が武器の命中率-スキルの成功率になります。
これらが記述されていない場合は通常通り成功率が命中率になります。

利用規約
素材単体での販売以外は自由
ランチ
記事: 13
登録日時: 2018年5月14日(月) 22:56

Re: [VX]スキルに命中率マイナス補正を設定したい

投稿記事by ランチ » 2019年12月19日(木) 21:10

ショウ様、返信ありがとうございます。
色々と仕様を勘違いしていたようですみません。詳細に説明していただきありがとうございます。
試して見たところ、理想通りの動作をさせる事に成功しました。ありがとうございました!

“VX / Ace:質問” へ戻る