查看: 2554|回复: 1

[已经解决] 请问如何让“速度”影响命中率、回避率、必杀率和反击率

[复制链接]
梦石
0
星屑
50
在线时间
353 小时
注册时间
2010-12-27
回帖
38
发表于 2015-5-25 21:24:46 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
请问如何让“速度”影响命中率、回避率、必杀率和反击率,谢谢!
梦石
0
星屑
166
在线时间
454 小时
注册时间
2015-2-25
回帖
358
发表于 2015-5-26 10:53:28 | 显示全部楼层
  1. class BattlerBase
  2.   def hit;  xparam(0);  end    # 命中機率      
  3.   def eva;  xparam(1);  end    # 閃避機率   
  4.   def cri;  xparam(2);  end    # 必殺機率
  5.   def cev;  xparam(3);  end    # 閃避必殺機率   
  6.   def cnt;  xparam(6);  end    # 反擊機率   
  7. end
复制代码
把xparam(x)改成你要的算式 比如[pre lang="ruby"]agi[/pre][pre lang="ruby"]agi*10[/pre][pre lang="ruby"][agi*10,100].max[/pre][pre lang="ruby"][[10+agi/2,100].max,50].min[/pre]



以下的是戰鬥中命中,閃避等的計算,設定算式時須參考一下(或者不改上面的,直接改下面的,改起來會比較簡單..分別在於上面的是角色/敵人的能力值,下面的是實際作用時的算法)
  1.     (@result.used && rand >= item_hit(user, item))   #命中
  2.     (!@result.missed && rand < item_eva(user, item))   #閃避
  3.     (rand < item_cri(user, item))       #必殺
  4.     rand < target.item_cnt(@subject, item)    #反擊
复制代码
[pre lang="ruby"]  #--------------------------------------------------------------------------
  # ● 計算技能/物品的成功幾率
  #--------------------------------------------------------------------------
  def item_hit(user, item)
    rate = item.success_rate * 0.01         # 獲取成功幾率
    rate *= user.hit if item.physical?      # 物理攻擊:計算成功幾率的乘積
    return rate                             # 返回計算后的成功幾率
  end
  #--------------------------------------------------------------------------
  # ● 計算技能/物品的閃避幾率
  #--------------------------------------------------------------------------
  def item_eva(user, item)
    return eva if item.physical?            # 是物理攻擊則返回閃避幾率
    return mev if item.magical?             # 是魔法攻擊則返回閃避魔法幾率
    return 0
  end
  #--------------------------------------------------------------------------
  # ● 計算技能/物品的必殺幾率
  #--------------------------------------------------------------------------
  def item_cri(user, item)
    item.damage.critical ? user.cri * (1 - cev) : 0
  end
  #--------------------------------------------------------------------------
  # ● 計算技能/物品的反擊幾率
  #--------------------------------------------------------------------------
  def item_cnt(user, item)
    return 0 unless item.physical?          # 攻擊類型不是物理攻擊
    return 0 unless opposite?(user)         # 隊友無法反擊
    return cnt                              # 返回反擊幾率
  end[/pre]

点评

谢谢~~  发表于 2015-5-26 11:10

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部