查看: 2951|回复: 11

[已经解决] 普通能力加成问题(问题已解决)

[复制链接]
梦石
0
星屑
1461
在线时间
815 小时
注册时间
2013-8-3
回帖
355
发表于 2017-10-22 22:48:41 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 小小西 于 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


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








【同人游戏】勇者斗恶龙TG
欢迎加入游戏测试群333599798
如有需私聊请加QQ:516425000

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2017-10-22 23:05:17 | 显示全部楼层
本帖最后由 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
复制代码

点评

可以了,完美解决{:4_110:}  发表于 2017-10-24 19:28
再改了一下代码,现在这样是能想到的最好的办法了,比率基础值1.0,设置100%以上时会在基础值上叠加,设置100%以下会在基础值上消减,默认100%  发表于 2017-10-24 12:10
但是~~我原本想要的效果没有了。  发表于 2017-10-24 00:04
代码更新了一下,应该可以满足需求了……大概……  发表于 2017-10-23 23:04
有点小问题,以前普通能力+5%需要填写增加105%,现在增加5%只需要填写5%了,普通能力不能为负数,我想减少5%做不到了。  发表于 2017-10-23 21:14
回复 2 0

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部