Project1

标题: 调整命中/回避和暴击/暴击回避计算方式的办法 [打印本页]

作者: 白玉楼的台阶    时间: 2015-2-7 22:26
标题: 调整命中/回避和暴击/暴击回避计算方式的办法
是这样的,VA默认的命中计算方式似乎是第一命中率和第二命中率
角色命中先判断,再判断敌人回避率
这样的话,角色命中100%就最高了,而且100%命中也打不到100%回避的敌人……
我想要把命中和回避在一起计算,造成“命中率提升,有更高机会命中高回避的敌人”,能够堆命中达到必中效果,公式上简单的我方命中减去敌方回避就可以了

另外,暴击和暴击回避也能这样就好了……
作者: 三途亚梦    时间: 2015-2-7 22:30
本帖最后由 三途亚梦 于 2015-2-7 23:07 编辑

100不是最高呀,如果你200,你受到一个减少50%命中的debuff依然能都保持在命中是100。

你肯定没有好好看我给你的回复,暴击默认就是大致上是 攻击者暴击率-被击者暴击回避。
  1. class Game_Battler < Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 计算技能/物品的必杀几率
  4.   #--------------------------------------------------------------------------
  5.   def item_cri(user, item)
  6.     item.damage.critical ? [user.cri - cev, 0].max : 0
  7.   end
  8. end
复制代码
这样就是把暴击彻底改成普通的减法了。

命中太麻烦我就不管了~
当然如果你单纯的想不分 miss(未命中) 和 evad(闪避) 概念处理会简单一些。
作者: taroxd    时间: 2015-2-8 08:18
觉得命中100是最高的,先去看一遍F1再说
作者: 上贺茂润    时间: 2015-2-8 08:44
第一步打开脚本找到计算最后命中率
把公式改成hit=user.hit-self.eva if damge >=0
然后下滚找到计算最后闪避率
把公式也改成上面那样,就可以做出命中闪避一次性计算抵消
作者: 白玉楼的台阶    时间: 2015-2-11 13:13
上贺茂润 发表于 2015-2-8 08:44
第一步打开脚本找到计算最后命中率
把公式改成hit=user.hit-self.eva if damge >=0
然后下滚找到计算最后闪 ...

啊,这样做的结果是,只要命中大于回避就必中了……

怎么说呢……
比方说,A的命中是100%,B的回避是30%,最终有70%的几率命中
当A的命中堆到了150%,B的回避仍然是30%,最终命中率是85%……
或者A的命中是120%,B的回避是10%,必中;B的回避堆到了30%,最终90%命中……
嘛,计算公式如何变化不重要,加减或者乘除都可以……重要的是,更高的命中可以【降低】回避造成的影响
作者: taroxd    时间: 2015-2-11 13:31
白玉楼的台阶 发表于 2015-2-11 13:13
啊,这样做的结果是,只要命中大于回避就必中了……

怎么说呢……

这个公式如何?
Math.log10(user.hit) - eva + 1

(不过命中率不到10%的话就注定无法命中了= =)
作者: 上贺茂润    时间: 2015-2-11 13:49
白玉楼的台阶 发表于 2015-2-11 13:13
啊,这样做的结果是,只要命中大于回避就必中了……

怎么说呢……

我这样的结果命中大于闪避不是必中,而是当命中大于闪避+100才必中。
你需要的效果是:A>100时,最终命中率=(100-B闪避)+B闪避*(A-100)
而且你所罗列的例子毫无逻辑性:
100-30:70
150-30:85【难道不是( 100-30 )+ (150-100)*30?】
又来个120-10:0?什么鬼
————————————————————————
告诉你实经验:你花心思在这些东西上其实毫无用处,玩家根本不管你是怎么算的
作者: taroxd    时间: 2015-2-11 21:45
大概就是这个意思(未测试)

直接删除了“闪避”的概念

RUBY 代码复制
  1. class Game_Battler
  2.   def item_apply(user, item)
  3.     @result.clear
  4.     @result.used = item_test(user, item)
  5.     @result.missed = @result.used && rand >= Math.log10(item_hit(user, item)) - item_eva(user, item) + 1
  6.     # @result.missed = (@result.used && rand >= item_hit(user, item))
  7.     # @result.evaded = ([email protected] && rand < item_eva(user, item))
  8.     if @result.hit?
  9.       unless item.damage.none?
  10.         @result.critical = (rand < item_cri(user, item))
  11.         make_damage_value(user, item)
  12.         execute_damage(user)
  13.       end
  14.       item.effects.each {|effect| item_effect_apply(user, item, effect) }
  15.       item_user_effect(user, item)
  16.     end
  17.   end
  18. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1