Project1

标题: 普通能力加成问题(问题已解决) [打印本页]

作者: 小小西    时间: 2017-10-22 22:48
标题: 普通能力加成问题(问题已解决)
本帖最后由 小小西 于 2017-10-23 19:48 编辑

系统正常加成如下:
基础物理攻击100

附加状态A:物理攻击100*200%
物理攻击200
附加状态B:物理攻击100*200%
物理攻击400
附加状态C:
物理攻击100*200%
物理攻击800


我想要这样的效果:
物理攻击100
附加状态A:物理攻击100*200%
物理攻击200
附加状态B:物理攻击100*200%
物理攻击300
附加状态C:物理攻击100*200%
物理攻击400


所有状态效果以基础能力加成。








作者: cinderelmini    时间: 2017-10-22 23:05
本帖最后由 cinderelmini 于 2017-10-24 12:08 编辑

唔……也许可以把计算时,能力值加成比率求积的地方改成求和,
不知道下边这个处理姿势是不是正确,姑且想到了这个做法。
代码改了一下,现在可以使用特性里的*50%表示减少50%,用120%表示增加20%,两种都有的时候会变成-0.5+0.2=-0.3,
(很纠结的处理方式,现在这个办法是真的特蠢,暂时就先这么着吧
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 计算特性值的总和(指定数据ID)
  4.   #--------------------------------------------------------------------------
  5.   def features_sum_other(code, id)
  6.     value = 1.0
  7.     features_with_id(code, id).each do |ft|
  8.       ft_v = ft.value
  9.       ft_v *= -1 if ft_v < 1.0
  10.       ft_v -= 1.0 if ft_v >= 1.0
  11.       value += ft_v
  12.     end
  13.     return value
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 获取普通能力的变化率
  17.   #--------------------------------------------------------------------------
  18.   def param_rate_other(param_id)
  19.     features_sum_other(FEATURE_PARAM, param_id)
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 获取普通能力
  23.   #--------------------------------------------------------------------------
  24.   def param(param_id)
  25.     value = param_base(param_id) + param_plus(param_id)
  26.     rate = param_rate_other(param_id)
  27.     value *= rate
  28.     value *= param_buff_rate(param_id)
  29.     [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  30.   end
  31. end
复制代码






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