设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1739|回复: 18
打印 上一主题 下一主题

[已经过期] 怎么判定敌人,攻击技能,打击我方最少血量的角色

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
帖子
272
1
发表于 2023-2-21 00:48:30 | 显示全部楼层
XP的敌人技能选取判定和目标判定是各自独立的,需要分开讨论

至于主楼说的属于目标判定,可以通过修改Game_Party类解决

RUBY 代码复制
  1. class Game_Party
  2.   #--------------------------------------------------------------------------
  3.   # ● 对像角色的随机确定
  4.   #     hp0 : 限制为 HP 0 的角色
  5.   #--------------------------------------------------------------------------
  6.   def random_target_actor(hp0 = false)
  7.     # 初始化轮流
  8.     roulette = []
  9.     # 循环
  10.     for actor in @actors
  11.       # 符合条件的场合
  12.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  13.         # 获取角色职业的位置 [位置]
  14.         position = $data_classes[actor.class_id].position
  15.         # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  16.         n = 4 - position
  17.         # ++优先攻击血量低于1/3的角色
  18.         if actor.hp <= (actor.maxhp / 3).ceil #向上取整以增大概率
  19.           n += 4 #极大增加,本参数可自行调整
  20.         end
  21.         # ++
  22.         # 添加角色的轮流 n 回
  23.         n.times do
  24.           roulette.push(actor)
  25.         end
  26.       end
  27.     end
  28.     # 轮流大小为 0 的情况
  29.     if roulette.size == 0
  30.       return nil
  31.     end
  32.     # 转轮盘赌,决定角色
  33.     return roulette[rand(roulette.size)]
  34.   end
  35. end


仅供参考不建议直接复制粘贴覆盖。XP允许覆盖式重定义是很方便,但是多个覆盖会存在后面的取代前面的问题,只要是战斗增强类脚本这个类就极大可能被改过

点评

实际使用,确实会出现问题。不过也是一种方法,我现在知道的是SEP插件可以,不过没法单独使用。  发表于 2023-4-29 12:30
不过如果每回合都维持满血这功能就没有用了  发表于 2023-2-22 17:13
取最低角色的话在这之上要加个判定用的接口,而且感觉低比最低打击面更大一点  发表于 2023-2-22 10:27
我方最少血量的角色是指剩余血量比例吗? 我还以为是指血量值  发表于 2023-2-21 13:46
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-14 12:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表