查看: 2350|回复: 2

[已经解决] 请问一并改变人物对多个状态的抗性值

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2015-10-11 15:15:31 | 显示全部楼层 |阅读模式

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

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

×
比如,我将状态10、15、25等数个状态设定为毒状态,然后设我的某人物对毒有150%的抗性,希望能让所有的毒都看这个抗性,不需要逐个重复设置,免疫也是如此。

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-10-11 15:20:04 | 显示全部楼层
逐个设置很麻烦吗?还有能比逐个设置(O(n))更快的方式?

点评

也或者直接用状态抗性来代表所有同类状态的抗性,例如4号是毒状态,那么4号状态的抗性可以对应XX号、XX号……等数十个状态的抗性值  发表于 2015-10-11 15:32
例如,我增加了个毒抵抗的属性,属性值为70%,那么所有被我标注为毒的状态在计算完有效度之后赋予时再和这个数值相乘  发表于 2015-10-11 15:29
所以我就想,能否把他们都分为一个组,这个组就让某属性来代表,然后这些特定状态赋予时计算这个属性的有效度来当做成功率  发表于 2015-10-11 15:26
如果只有毒都还好说,但一个装备可能抗性多种状态例如毒+盲目+冻结,特性栏不知道要添加多少行,很容易写漏,也极不方便检查  发表于 2015-10-11 15:25
比如说我突然新作了个一个带毒技能的怪,那么我还要去找以前所有解除、抵抗、免疫毒的所有装备和状态进行修改  发表于 2015-10-11 15:24
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-10-11 15:35:01 | 显示全部楼层
本帖最后由 taroxd 于 2015-10-11 15:54 编辑

可以更改人物的 all_features 方法。当人物满足某些条件时,往 all_features 里面添加东西

按照你的要求,可以将特性分组。把一组的特性写在一个状态里(或者装备之类的都可以,脚本中的示例是 40,42)。
比如说这样(未测试)
[pre lang="ruby"]
class Game_BattlerBase
  alias_method :af_20151011, :all_features

  def all_features
    features = af_20151011

    # 如果角色的职业 ID 为 1
    # Enemy 的 @class_id 为 nil,不会被判定
    if @class_id == 1
      # 特性列表中添加 40 号状态的所有特性
      features.push $data_states[40].features
    end

    # 如果拥有 41 号状态
    if state? 41
      # 特性列表中添加 42 号状态的所有特性
      features.push $data_states[42].features
    end

    features
  end
end
[/pre]

也可以通过备注栏读取的方式,对每个 feature_object 的备注栏进行读取,按上面那段脚本的方式添加特性。比如说(依旧没测试):
[pre lang="ruby"]
class Game_BattlerBase
  alias_method :af_20151011, :all_features

  def all_features

    feature_objects.each_with_object af_20151011 do |fo, features|
      # 备注 <feature x>  x 为状态的ID
      fo.note.scan /<feature\s+(\d+)>/i do |(id)|
        features.push $data_states[id]
      end
    end

  end
end
[/pre]

点评

不会脚本的我还是让状态100%附加更可行一点……  发表于 2015-10-11 15:58
有事闪了 代码你自己写吧,和这层的差不多  发表于 2015-10-11 15:57
那请用类似的方式修改方法 state_rate。本楼中的两种方式都可以  发表于 2015-10-11 15:53
我觉得还是用属性来当判断状态成功率更可行。给状态增加备注什么的,然后这个状态计算成功率的时候最终乘以个某状态  发表于 2015-10-11 15:52
而且还是要每个状态都去添加抗性,例如我增加了一个毒状态,那么所有和毒相关的都要去添加这个状态,虽然相比原本的功能来说更不容易出错了  发表于 2015-10-11 15:49

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
VIPArcher + 1 认可答案
jianyulei + 10 精品文章

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部