Project1

标题: 求教不同怪不同技能爆伤不同的代码 [打印本页]

作者: aaggeenn    时间: 2014-3-22 16:23
标题: 求教不同怪不同技能爆伤不同的代码
本帖最后由 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倍爆伤,使用职业常规为双倍爆,因而似乎略有冲突,

因为必爆、必中、双倍爆、无视闪、招、躲、反… …技能较多,因此,打算都用备注处理,而不是直接在底层中写入技能名
求教
作者: taroxd    时间: 2014-3-22 21:39
有什么问题吗?楼主的思路没错呀


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

Game_Battler有这段脚本
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品的必杀几率
  3.   #--------------------------------------------------------------------------
  4.   def item_cri(user, item)
  5.     return 1 if item.always_critical? # 加这行。最好使用alias的方法,这里不再赘述。
  6.     item.damage.critical ? user.cri * (1 - cev) : 0
  7.   end
  8.  
  9. #...
  10.  
  11.   #--------------------------------------------------------------------------
  12.   # ● 计算伤害
  13.   #--------------------------------------------------------------------------
  14.   def make_damage_value(user, item)
  15.     value = item.damage.eval(user, self, $game_variables)
  16.     value *= item_element_rate(user, item)
  17.     value *= pdr if item.physical?
  18.     value *= mdr if item.magical?
  19.     value *= rec if item.damage.recover?
  20.     # value = apply_critical(value) if @result.critical  原来的代码
  21.     if @result.critical
  22.       # 如果技能没有特殊效果,还是用原来的算法
  23.       # 当然也可以直接把一般技能的critical_rate设为3
  24.       value = item.critical_rate ? value * item.critical_rate : apply_critical(value)
  25.     end
  26.     value = apply_variance(value, item.damage.variance)
  27.     value = apply_guard(value)
  28.     @result.make_damage(value.to_i, item)
  29.   end


其他效果类似处理




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