XP的敌人技能选取判定和目标判定是各自独立的,需要分开讨论
至于主楼说的属于目标判定,可以通过修改Game_Party类解决
class Game_Party #-------------------------------------------------------------------------- # ● 对像角色的随机确定 # hp0 : 限制为 HP 0 的角色 #-------------------------------------------------------------------------- def random_target_actor(hp0 = false) # 初始化轮流 roulette = [] # 循环 for actor in @actors # 符合条件的场合 if (not hp0 and actor.exist?) or (hp0 and actor.hp0?) # 获取角色职业的位置 [位置] position = $data_classes[actor.class_id].position # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2 n = 4 - position # ++优先攻击血量低于1/3的角色 if actor.hp <= (actor.maxhp / 3).ceil #向上取整以增大概率 n += 4 #极大增加,本参数可自行调整 end # ++ # 添加角色的轮流 n 回 n.times do roulette.push(actor) end end end # 轮流大小为 0 的情况 if roulette.size == 0 return nil end # 转轮盘赌,决定角色 return roulette[rand(roulette.size)] end end
class Game_Party
#--------------------------------------------------------------------------
# ● 对像角色的随机确定
# hp0 : 限制为 HP 0 的角色
#--------------------------------------------------------------------------
def random_target_actor(hp0 = false)
# 初始化轮流
roulette = []
# 循环
for actor in @actors
# 符合条件的场合
if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
# 获取角色职业的位置 [位置]
position = $data_classes[actor.class_id].position
# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position
# ++优先攻击血量低于1/3的角色
if actor.hp <= (actor.maxhp / 3).ceil #向上取整以增大概率
n += 4 #极大增加,本参数可自行调整
end
# ++
# 添加角色的轮流 n 回
n.times do
roulette.push(actor)
end
end
end
# 轮流大小为 0 的情况
if roulette.size == 0
return nil
end
# 转轮盘赌,决定角色
return roulette[rand(roulette.size)]
end
end
仅供参考不建议直接复制粘贴覆盖。XP允许覆盖式重定义是很方便,但是多个覆盖会存在后面的取代前面的问题,只要是战斗增强类脚本这个类就极大可能被改过 |