Project1

标题: 中毒的伤害调整和持续回血 [打印本页]

作者: wangswz    时间: 2008-8-1 01:24
标题: 中毒的伤害调整和持续回血
def slip_damage_effect
  if slip_damage? and @hp > 0
    @hp_damage = apply_variance(maxhp / 10, 10)
    @hp_damage = @hp - 1 if @hp_damage >= @hp
    self.hp -= @hp_damage
  end
end

前面得那个10是 每回合10%得掉血 后面那个10是干什么得啊?
用这个做持续回血技能只要判断状态 再把 self.hp+= @hp_damage 就行了么?
作者: dbshy    时间: 2008-8-1 01:26
分散度

LZ看这个吧
def apply_variance(damage, variance)
    if damage != 0                                  # 若伤害不为0
      amp = [damage.abs * variance / 100, 0].max    # 计算极差
      damage += rand(amp+1) + rand(amp+1) - amp     # 执行分散度
    end
    return damage
  end [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: Beside    时间: 2008-8-1 01:28
apply_variance(maxhp / 10, 10)
这个是定义过的方法
前面是生命的10% 后面是分散度  
  def apply_variance(damage, variance)
    if damage != 0                                  # 伤害为 0 以外的情况
      amp = [damage.abs * variance / 100, 0].max    # 计算分散幅度
      damage += rand(amp+1) + rand(amp+1) - amp     # 执行分散
    end
    return damage
  end

原方法是这样的 效果就是以生命值的1/10为基准浮动
这里的damage就是生命值的1/10 取绝对值乘上分散度再除以100 再和0比较大小 以大的作为amp的值
然后这个damamge加两次1-amp的随机数再减amp 得到最终结果 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~




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