Project1

标题: 关于伤害变量相关的技能设置 [打印本页]

作者: lirn    时间: 2014-7-19 12:25
标题: 关于伤害变量相关的技能设置
本帖最后由 lirn 于 2014-7-19 12:27 编辑

我设置了一个技能,就是对对方全体造成场上最后伤害、

首先,我在造成伤害的时候,设置了一个变量,就是伤害发生时& 伤害大于0    就 变量(1) = 伤害 。表面看起来,只需要在那个技能设置成 V(1)就行了,但实际上存在着其他问题,就是当第一个角色受到的伤害数值会影响下一个数值、
比如V(1)=1000
敌人1 受到伤害1000
敌人2 防御 受到伤害500.
那么敌人3受到的伤害也是500.因为在敌人2受到伤害时 V(1)=500了、

解决这个办法的我的猜想设置个变量2,在战斗前将 V(2) =V(1)就行了,那样无论伤害怎么变化,影响的是V(1),而不是V(2)

不过,我也有个问题,使用救世小树的计算公式是没有意义,因为计算公式是每个角色重新计算,如果写在那里,V2的变化就跟V1一样。同理,写在判断是否命中发动会心的也一样。

而使用公共事件,先将V(2)=V(1)然后再强制攻击也是可能,但这样的话,技能使用到强制攻击之间的间隔会比较长,感觉有2秒以上。

现在就是想问,写在哪里可以不受造成新的伤害而影响变量,又或者,怎么做才能减少技能使用到强制攻击前的时间间隔。
作者: taroxd    时间: 2014-7-19 12:35
RUBY 代码复制
  1. class Game_Battler
  2.   def make_damage_value(user, item)
  3.     value = item.damage.eval(user, self, $game_variables)
  4.     value *= item_element_rate(user, item)
  5.     value *= pdr if item.physical?
  6.     value *= mdr if item.magical?
  7.     value *= rec if item.damage.recover?
  8.     value = apply_critical(value) if @result.critical
  9.     value = apply_variance(value, item.damage.variance)
  10.     value = apply_guard(value)
  11.     # 除非技能为 20 号技能,否则将伤害存进 1 号变量
  12.     $game_variables[1] = value unless item == $data_skills[20]
  13.     @result.make_damage(value.to_i, item)
  14.   end
  15. end


然后 20 号技能公式就写 v[1] 就好了~

未测试~
作者: lirn    时间: 2014-7-19 12:57
目前测试可行

我改成了$game_variables[6] = value unless item == $data_skills[999] or value <=0




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