Project1

标题: 战斗升级,改进版【已解决】 [打印本页]

作者: 间桐樱    时间: 7 天前
标题: 战斗升级,改进版【已解决】
本帖最后由 间桐樱 于 2025-6-17 09:40 编辑

原贴https://rpg.blue/thread-496243-1-1.html
以前求助过大佬,在取消等级后,每击败一名敌人自身全属性+1,但考虑到打败boss和打败杂兵都是全属性+1,付出和收获太不匹配,于是改进了,变成打败敌人后,自身全属性增加敌人全属性1%
然后问题又来了,死亡判定失败(.dead?,self.dead?,target.dead?),不是不生效就是报错,不加又不行,会变成每攻击一次敌人,自身全属性增加敌人属性的1%,太bug了,求帮助呀
  #--------------------------------------------------------------------------
  # ● 计算伤害
  #--------------------------------------------------------------------------
  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
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item)
    if user.actor? && user.id == 1
      user.add_param(0, self.mhp * 0.01)
      user.add_param(1, self.mmp * 0.01)
      user.add_param(2, self.atk * 0.01)
      user.add_param(3, self.def * 0.01)
      user.add_param(4, self.mat * 0.01)
      user.add_param(5, self.mdf * 0.01)
      user.add_param(6, self.agi * 0.01)
      user.add_param(7, self.luk * 0.01)
    end
  end
作者: 百里_飞柳    时间: 7 天前
因为这个方法里只是计算了技能所造成的伤害值,并把数字写入了@result里,但还并没有真正应用伤害,所以敌人也就不存在什么死亡
你需要在这个方法里修改

  1. class Game_Battler < Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 处理伤害
  4.   #    调用前需要设置好
  5.   #    @result.hp_damage   @result.mp_damage
  6.   #    @result.hp_drain    @result.mp_drain
  7.   #--------------------------------------------------------------------------
  8.   def execute_damage(user)
  9.     on_damage(@result.hp_damage) if @result.hp_damage > 0
  10.     self.hp -= @result.hp_damage
  11.     self.mp -= @result.mp_damage
  12.     user.hp += @result.hp_drain
  13.     user.mp += @result.mp_drain
  14.     # 这里之后才完成了伤害结算
  15.     if user.actor? && user.id == 1 && enemy? && dead?
  16.        # 这里增加你想要的 1 号角色使用技能击杀当前敌人(self)后的处理
  17.     end
  18.   end
  19. end
复制代码

作者: 间桐樱    时间: 6 天前
百里_飞柳 发表于 2025-6-16 22:12
因为这个方法里只是计算了技能所造成的伤害值,并把数字写入了@result里,但还并没有真正应用伤害,所以敌 ...

已解决,非常感谢




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