Project1

标题: 出血和中毒状态一起出现在敌人身上只有一个有伤害效果 [打印本页]

作者: jklpgh    时间: 2015-7-22 15:56
标题: 出血和中毒状态一起出现在敌人身上只有一个有伤害效果
本帖最后由 jklpgh 于 2015-7-22 16:04 编辑

当敌人同时中了出血和中毒状态,两个都是连续伤害的状态,一个伤害是每回合8,一个是每回合10,按理来说现在应该每回合费18,但只费了其中一个的伤害,能有人帮忙看下是怎么回事吗?多谢了
作者: 冷峻逸    时间: 2015-7-22 18:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 未命名    时间: 2015-7-22 20:24
本帖最后由 未命名 于 2015-7-23 10:52 编辑

唉,两个self.damage 最后都用=赋值了,所以显示出来的伤害会是最后一个=的数值。

现在的结果是你人物实际-28HP
没错-28。

因为self.hp在过程中被实际减掉了。
然后按默认脚本,最后再扣掉self.damage,一共是28。

你先把self.damage = 改为 self.damage +=,然后最后得到的self.damage就是两个状态合计伤害,然后系统再显示它,再扣掉HP。
另外再把self.hp - self.damage删掉,要不然会扣掉比显示更多的伤害。

当然,你甚至可以制作徐徐回复状态,只要把self.damage变成负值就可以了。

对了,还要在开头就写上self.damage = 0,以免各个伤害叠加等BUG。

————————————————————————————————————————————————————————

(=゚ω゚)=显示伤害是之后执行的,它会把self.damage的值可视化。

但是在此之前……它会先得出damage的值,然后减掉hp,再显示出来。

你的脚本中,第一次
self.damage = 8,
然后self.hp-self.damage,人物自己已经扣血。

但是这个时候self.damage还是个值,人家还没显示出来( ´_ゝ`)。

然后第二个状态,
self.damage = 10,所以就无法挣扎的=10了 (゚Д゚≡゚Д゚)!
然而self.hp-self.damage人物还是扣了HP。

(つд⊂)

最后,到了执行伤害显示的时候,它们打上了damage_pop,但是self.damage还是10。
|д` )
然后显示了10。

但是人物已经扣了18HP了。
(先前我还以为你在最后没有删掉原来的self.hp-self.damage,所以我以为是28。)
( ´_っ`)

———————————————————————————————————————————————

不知道清楚了没有……

所以解决方法像这样:

    # 设置伤害
    self.damage = 0              #一开始先归零。
    if self.state?(17)
      self.damage -= 200       #这个是回血状态,减法。
    end
    if self.state?(23)
      self.damage += 100      #损血就用加法。
    end
    if self.state?(24)
      self.damage += 250
    end

#如果角色中了以上三个状态,那么他就得到self.damage = 150的值。

    # HP 的伤害减法运算
    self.hp -= self.damage          #然后再扣掉。
    # 过程结束
    return true               #这里结束之后,才转到伤害显示的脚本,把得出的damage显示出来。




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