Project1

标题: 如何修改伤害的计算方式 [打印本页]

作者: denitk    时间: 2014-5-15 16:34
标题: 如何修改伤害的计算方式
怎么通过脚本修改伤害的计算方式
原来的那种VX的计算方式太过于复杂了
作者: 化螺耕    时间: 2014-5-15 19:28
脚本里面关于战斗部分的脚本时可以修改的,但是VX的不太清楚,我是纯正的XP党
作者: moy    时间: 2014-5-15 23:08
在原脚本中,伤害值的计算是由Game_Battler中的两个方法作为核心的,这两个方法的名字分别是make_attack_damage_value和make_obj_damage_value,位于Game_Battler的第627行。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算普通攻击伤害
  3.   #     attacker : 攻击者
  4.   #    计算结果赋值入 @hp_damage
  5.   #--------------------------------------------------------------------------
  6.   def make_attack_damage_value(attacker)
  7.     damage = attacker.atk * 4 - self.def * 2        # 基础计算
  8.     damage = 0 if damage < 0                        # 设负数伤害为 0
  9.     damage *= elements_max_rate(attacker.element_set)   # 属性校正
  10.     damage /= 100
  11.     if damage == 0                                  # 若伤害为 0
  12.       damage = rand(2)                              # 一半机率伤害为1
  13.     elsif damage > 0                                # 若伤害为正数
  14.       @critical = (rand(100) < attacker.cri)        # 会心一击判断
  15.       @critical = false if prevent_critical         # 防止会心一击判断
  16.       damage *= 3 if @critical                      # 会心一击校正
  17.     end
  18.     damage = apply_variance(damage, 20)             # 分散度
  19.     damage = apply_guard(damage)                    # 防御校正
  20.     @hp_damage = damage                             # 体力伤害
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 计算技能/物品伤害
  24.   #     user : 技能或物品的使用者
  25.   #     obj  : 使用的技能或物品
  26.   #    计算结果赋值入 @hp_damage
  27.   #--------------------------------------------------------------------------
  28.   def make_obj_damage_value(user, obj)
  29.     damage = obj.base_damage                        # 基础计算
  30.     if damage > 0                                   # 若伤害为正
  31.       damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  32.       damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  33.       unless obj.ignore_defense                     # 除非无视防御力
  34.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  35.         damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
  36.       end
  37.       damage = 0 if damage < 0                      # 设负数伤害为0
  38.     elsif damage < 0                                # 若伤害为负
  39.       damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  40.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  41.     end
  42.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  43.     damage /= 100
  44.     damage = apply_variance(damage, obj.variance)   # 分散度
  45.     damage = apply_guard(damage)                    # 防御校正
  46.     if obj.damage_to_mp  
  47.       @mp_damage = damage                           # 伤害魔力
  48.     else
  49.       @hp_damage = damage                           # 伤害体力
  50.     end
  51.   end

在这两个方法中,都是以damage作为关键的载体,鉴于默认脚本在这段几乎每行都有注释,我想你可以先试着自己改。记得在新页面改别玩脱了~




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