Project1

标题: 如何让特殊角色,攻击时伤害算法重定义。 [打印本页]

作者: 美丽晨露    时间: 2013-3-31 14:47
标题: 如何让特殊角色,攻击时伤害算法重定义。
本帖最后由 美丽晨露 于 2013-3-31 15:29 编辑

比如魔法师使用攻击指令时
不再说用攻击力跟力量来决定敌方伤害
而是换为魔力来决定敌方伤害,这个要怎么改?
作者: 亿万星辰    时间: 2013-3-31 15:08
其实默认的物理伤害计算都在Game_Battler 3中的def attack_effect(attacker)中,你说的大致上是这段
  1.       # 计算基本伤害
  2.       atk = [attacker.atk - self.pdef / 2, 0].max
  3.       self.damage = atk * (20 + attacker.str) / 20
复制代码
可以根据你的要求做这样的修改,
  1.       # 计算基本伤害
  2.       # 如果攻击方是角色
  3.       if attacker.is_a?(Game_Actor)
  4.         # 魔法类的职业ID,可自行添加修改数组
  5.         if [7,8].include?(attacker.class_id)
  6.           # 与被攻击方的魔法防御有关
  7.           atk = [attacker.atk - self.mdef / 2, 0].max
  8.           # 与攻击方的魔力有关
  9.           self.damage = atk * (20 + attacker.int) / 20
  10.         # 非魔法类职业就是下面的常规计算方法了
  11.         else
  12.           atk = [attacker.atk - self.pdef / 2, 0].max
  13.           self.damage = atk * (20 + attacker.str) / 20
  14.         end
  15.       # 甚至可以在这里加入敌方角色
  16.       else
  17.         # 魔法类的怪物ID,可自行添加修改数组
  18.         if [].include?(attacker.id)
  19.           # 与被攻击方的魔法防御有关
  20.           atk = [attacker.atk - self.mdef / 2, 0].max
  21.           # 与攻击方的魔力有关
  22.           self.damage = atk * (20 + attacker.int) / 20
  23.         # 非魔法类怪物就是下面的常规计算方法了
  24.         else
  25.           atk = [attacker.atk - self.pdef / 2, 0].max
  26.           self.damage = atk * (20 + attacker.str) / 20
  27.         end
  28.       end
复制代码

作者: 美丽晨露    时间: 2013-3-31 15:29
亿万星辰 发表于 2013-3-31 15:08
其实默认的物理伤害计算都在Game_Battler 3中的def attack_effect(attacker)中,你说的大致上是这段可以根 ...

谢谢您
能否追问一下
如果改为武器影响攻击算法的话
也是这样改吗?
作者: 亿万星辰    时间: 2013-3-31 15:36
美丽晨露 发表于 2013-3-31 15:29
谢谢您
能否追问一下
如果改为武器影响攻击算法的话

默认的角色的攻击,就是来自于武器提供的攻击的,以及状态的一些加成。




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