查看: 2291|回复: 1

[已经解决] 求教不同怪不同技能爆伤不同的代码

[复制链接]
梦石
0
星屑
508
在线时间
6 小时
注册时间
2014-1-27
回帖
0
发表于 2014-3-22 16:23:30 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 aaggeenn 于 2014-3-22 16:40 编辑

在下做出了不同职业不同爆伤的代码

class RPG::Class < RPG::BaseItem
  def cri_coe
    self.note.split(/[\r\n]+/).each{ |line|
      if line =~ /\<(?:致命打击)[ ]*(\d+)\>/
        return $1.to_i
      end}
    return 2
  end
end
class Game_Actor < Game_Battler
  def apply_critical(damage)
    damage * $data_classes[@class_id].cri_coe
  end
end
基础为双倍爆,但某些职业为n倍爆

但怪没有职业~~~因此该代码对其无效~~~因此,打算改写代码,直接放在怪身上和角色身上

另设计某技能,如名为:炼狱九重,必爆,9倍爆伤,使用职业常规为双倍爆,因而似乎略有冲突,

因为必爆、必中、双倍爆、无视闪、招、躲、反… …技能较多,因此,打算都用备注处理,而不是直接在底层中写入技能名
求教

…あたしは天

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

开拓者贵宾

发表于 2014-3-22 21:39:33 | 显示全部楼层
有什么问题吗?楼主的思路没错呀


假设RPG::UsableItem类定义了方法always_critical?(必爆)、critical_rate(暴击倍率)
并且假设如果技能没有备注的话,critical_rate返回false
看楼主应该已经会定义了

Game_Battler有这段脚本
[pre lang="ruby" line="1"]
  #--------------------------------------------------------------------------
  # ● 计算技能/物品的必杀几率
  #--------------------------------------------------------------------------
  def item_cri(user, item)
    return 1 if item.always_critical? # 加这行。最好使用alias的方法,这里不再赘述。
    item.damage.critical ? user.cri * (1 - cev) : 0
  end

#...

  #--------------------------------------------------------------------------
  # ● 计算伤害
  #--------------------------------------------------------------------------
  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  原来的代码
    if @result.critical
      # 如果技能没有特殊效果,还是用原来的算法
      # 当然也可以直接把一般技能的critical_rate设为3
      value = item.critical_rate ? value * item.critical_rate : apply_critical(value)
    end
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item)
  end
[/pre]

其他效果类似处理

评分

参与人数 1星屑 +132 收起 理由
熊喵酱 + 132 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部