查看: 2190|回复: 2

[已经解决] 关于伤害变量相关的技能设置

[复制链接]
梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
发表于 2014-7-19 12:25:49 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 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秒以上。

现在就是想问,写在哪里可以不受造成新的伤害而影响变量,又或者,怎么做才能减少技能使用到强制攻击前的时间间隔。

…あたしは天

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

开拓者贵宾

发表于 2014-7-19 12:35:40 | 显示全部楼层
[pre lang="ruby" line="1"]class Game_Battler
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    # 除非技能为 20 号技能,否则将伤害存进 1 号变量
    $game_variables[1] = value unless item == $data_skills[20]
    @result.make_damage(value.to_i, item)
  end
end[/pre]

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

未测试~

评分

参与人数 1梦石 +1 收起 理由
熊喵酱 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2014-7-19 12:57:00 | 显示全部楼层
目前测试可行

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部