命中率と回避率の変更

 2011-10-17
命中率と回避率を敏捷性で補正する方法

VXでは、命中率と回避率があり敏捷性などのパラメータに関係なく確率で判定します。
命中率と回避率は別々の処理で使われているので、
命中に成功して回避に失敗しなければ、攻撃は当たりません。

今回も2000の計算式に変更したいと思います。
2000には回避率が無いので、この辺は適当に。

どちらも百分率で表すので、メソッドの戻り値は 0~100 になるように
意識しておくと良いかもです。
ただ、その範囲に収める必要はないと思います。


命中率の補正
命中率の計算は、Game_Battler#calc_hit で行われています。
class Game_Battler
def calc_hit(user, obj = nil)
if obj == nil # 通常攻撃の場合
hit = 100 - Integer((100-user.hit)*(1+(Float(self.agi)/user.agi-1)/2))
physical = true
elsif obj.is_a?(RPG::Skill) # スキルの場合
hit = obj.hit # 成功率を取得
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


回避率の補正
回避率の計算は、Game_Battler#calc_eva で行われています。
class Game_Battler
def calc_eva(user, obj = nil)
eva = Integer(self.eva * (1 + (Float(self.agi) / user.agi - 1) / 2))
eva = 0 if eva < 0 # マイナスなら0
eva = 0 if obj != nil && !obj.physical_attack # 物理攻撃ではない場合
eva = 0 unless parriable? # 回避不可能な状態の場合
return eva
end
end
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

ありがとうございます!
すごい助かりました!
【2015/12/06 00:55】 | usisi | [編集]
Re: スキルの命中率
elsif obj.is_a?(RPG::Skill) # スキルの場合
hit = obj.hit # 成功率を取得
physical = obj.physical_attack
hit = 100-((100-hit)*(1+(self.agi.to_f/user.agi-1)/2)).to_i if physical


こんな感じでしょうか?
斜線の行を追加してください。
【2015/12/03 22:03】 | CACAO | [編集]
スキルの命中率
ずいぶん前の記事に質問してすみませんが。
もしよければスキルが物理攻撃だった場合にも計算式を変更した命中率を適用させるにはどうすればいいのか教えて頂けませんでしょうか?
【2015/12/02 01:21】 | usisi | [編集]
トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/587-0743fd59
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/02 >> 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -

カテゴリー
最近の記事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事
08/08 お返事

最近のコメント
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事
02/24 お返事

タグクラウド

リンク