Project1

标题: 如何提升暴击(必杀)伤害? [打印本页]

作者: blueeyescyj    时间: 2015-3-9 18:58
标题: 如何提升暴击(必杀)伤害?
如何通过使用道具或附加状态,使暴击伤害提升?
比如:未使用道具态时是1.5倍,使用道具后则变为2倍。
作者: 三途亚梦    时间: 2015-3-9 23:14
估计你动用过make_damage_value来写技能吧,那么就把改的方法告诉你。
  1.   def make_damage_value(user, item)
  2.     value = item.damage.eval(user, self, $game_variables)
  3.     value *= item_element_rate(user, item)
  4.     value *= pdr if item.physical?
  5.     value *= mdr if item.magical?
  6.     value *= rec if item.damage.recover?
  7.     value = apply_critical(value) if @result.critical
  8.     value = apply_variance(value, item.damage.variance)
  9.     value = apply_guard(value)
  10.     @result.make_damage(value.to_i, item)
  11.   end
复制代码
这是make_damage_value原方法,
其中这句
  1.     value = apply_critical(value) if @result.critical
复制代码
是当此次攻击判断为暴击的时候调用暴击计算的方法,也就是
  1.   def apply_critical(damage)
  2.     damage * 3
  3.   end
复制代码
这个方法的作用是单纯的将传递过来的“伤害”乘以三倍,并返回到make_damage_value中。
所以只要改动这个方法就行了,根据你的要求是想要根据user(使用者)的状态改变暴击伤害倍数,
那么我们要做的是给这个方法追加一个新的参数,让这个方法能够根据user进行判断。
  1.   def apply_critical(damage, user)
  2.     damage *= user.state?(2) 2 : 1.5
  3.   end
复制代码
这样的效果就是如果使用者处在状态2,则暴击效果为2倍,否则是1.5倍
然后改变make_damage_value中的判断是否暴击的那一行,让它在判断为暴击的时候能够传递使用者的参数过来进行判断,
  1.     value = apply_critical(value, user) if @result.critical
复制代码
以上就是实现的具体过程。
作者: blueeyescyj    时间: 2015-3-10 06:54
本帖最后由 blueeyescyj 于 2015-3-10 07:22 编辑
三途亚梦 发表于 2015-3-9 23:14
估计你动用过make_damage_value来写技能吧,那么就把改的方法告诉你。这是make_damage_value原方 ...


感谢万分。我突然之间也想到了一个解决办法。
我可以设置一个属性,名为“必杀”,假定是10号属性。
那么,直接把必杀伤害的计算方法改成
damage * 3*a.element_rate(10)
这样就可以直接通过对10号的属性比率的更改作出不同的伤害了,装备,道具也可以使用了吧。
理论上我觉得是可行的……但总觉得有哪里不对的样子。




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