查看: 623|回复: 2

[有事请教] 关于敌方回血技能使用概率的问题

[复制链接]
梦石
0
星屑
579
在线时间
83 小时
注册时间
2021-3-17
回帖
40
发表于 2026-6-24 16:18:08 | 显示全部楼层 |阅读模式
悬赏100星屑未解决
我想修改敌方回血技能的Ai,具体为敌人血量越低加血概率越大
我的做法是在在gamg enemy行动里面修改增加代码:
    ###回血技能按血量分配权重###
    if (117..121).include?(action.skill_id)
      # 找出全场存活敌人最低血量百分比
      min_hp_rate = 1.0
      $game_troop.enemies.each do |enemy|
        next if enemy.dead?
        rate = enemy.hp.to_f / enemy.maxhp
        min_hp_rate = rate if rate < min_hp_rate
      end
      # 根据最低血量统一加权
      if min_hp_rate <= 0.2
        action.rating += 3
      elsif min_hp_rate <= 0.5
        action.rating += 2
      elsif min_hp_rate <= 0.7
        action.rating += 1
      end
    end
经测试,我把敌人打到残血后,它开始回血后,会一直加血,哪怕他已经满血了,还是会每回合加血,我应该怎么改

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2026-6-24 16:44:00 | 显示全部楼层
class  Game_Enemy < Game_Battler
  def 修正加血权重(action)
    return if action.kind != 1 or (sk=$data_skills[action.skill_id]).nil? or sk.power >= 0
    r = $game_troop.enemies.map{|i| i.exist? ? i.hp.to_f / i.maxhp : 1}.min
    action.rating = (11 - 10 * r).round
  end
end

把它塞到mian前,  然后 找到 available_actions.push(action) 这句, 在它上面加上  修正加血权重(action)

这样, 敌人持有加血技能的时候, 这个行动就会根据队伍里血量比例最低的来增减权重
回复

使用道具 举报

梦石
0
星屑
579
在线时间
83 小时
注册时间
2021-3-17
回帖
40
 楼主| 发表于 2026-6-27 10:31:32 | 显示全部楼层
灯笼菜刀王 发表于 2026-6-24 16:44
class  Game_Enemy < Game_Battler
  def 修正加血权重(action)
    return if action.kind != 1 or (sk=$d ...

谢谢,搞定了
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部