Bard Frontline

独立的吟游诗人 PVP Dalamud 插件。支持已开始的纷争前线和烈羽争锋对局,自动选敌、主动攻击、执行诗人循环与生存技能,不依赖 RotationSolverReborn。

安装和使用

  1. 将发行包解压到一个固定目录,保留 BardFrontline.dll 与 BardFrontline.json 在同一目录。
  2. 在 Dalamud 的开发插件设置中添加 BardFrontline.dll 的完整路径,保存后在开发插件列表加载它。
  3. 输入 /bardpvp 打开中文设置,或使用浮窗的“自动运行”开关。
  4. 每次加载默认关闭自动运行。/bardpvp on 开启,/bardpvp off 关闭,/bardpvp toggle 切换。
  5. 需要使用 Eagle Eye Shot 时,请在游戏中装备该 PVP 职能技能。诊断页会显示未装备的职能技能。

设置在 Dalamud 插件配置中自动保存。关闭设置窗不会停止运行;关闭总开关后不再提交新动作,游戏已经接受的动作仍由游戏完成。

本版运行基线为 .NET 10 / x64 / Dalamud API 15。编译引用来自本机 Hooks\dev 的成品 DLL;源码目录中的 Dalamud / FFXIVClientStructs 不参与编译。没有游戏版本号白名单;缺失单项技能会跳过并显示原因,缺失核心技能会暂停。

0.2.1:可选主动爆发

针对输出技能释放偏慢,新增 /bardpvp →「穿插、爆发与范围攻击」→「爆发策略」→ 主动爆发。升级保留原策略,需手动选中此项;选择后自动保存,无需反复按爆发按钮。

  • 已就绪的完美音调和爆破箭优先于连续和弦箭;缺少进行曲时的绝峰箭仍优先。
  • 普通鹰眼和沉默提前到和弦箭及强力射击之前,仍受技能开关、前置状态和原生可用性检查限制。鹰眼“严格保留,只用于收割”仍生效;已有完美音调时不重复用沉默覆盖。
  • 瞬发攻击(后跳除外)、职能增益和极限技不额外预留穿插空间,可能短暂推迟普攻。原生动作确认、动画锁、动作队列、冷却、读条及目标检查继续生效。读条动作不享受这项放宽。
  • 生存阈值、玩家优先、安可及鹰眼收割优先级、后跳设置保留。诊断新增当前爆发 / 鹰眼策略,便于确认实际启用的设置。

离线测试验证了决策变化,尚未验证游戏内伤害收益和实际释放节奏。

0.2.0:六项优化

  1. 完整决策诊断:每 0.25 秒生成完整快照,所有技能均给出选中、未满足策略、目标过滤、原生检查、穿插等待或未获优先级的结果。复制内容包括版本、模式、资源、状态、动作队列、待确认动作、目标分类及近期 40 条事件。支持冻结快照再复制;就绪检查忽略正在执行的读条和动画锁,实际提交仍受执行阶段限制。
  2. 选敌稳定与手动接管:可选 0.6 秒目标保持,当前 HP 优势达到 2000 则立即切换;目标失效、玩家优先及鹰眼收割不受保持限制。其他排序按各自的显著差异判断。自动检测手动切目标或其他来源动作后可接管 3 秒;显式接管持续到手动恢复。接管暂停所有自动动作,包括生存,不取消已经接受的动作。自动检测也会识别其他插件动作,无法区分动作来源。
  3. 自适应穿插:默认启用。以本插件瞬发动作的确认和动画锁结束为样本,最近 20 个样本的 90 分位加 50ms 作为预算,限制在 0.5–1.25 秒。少于 3 个样本回退到旧值 0.65 秒;读条、超时样本不参与。可关闭以使用固定预算。安可、鹰眼收割和即将过期状态沿用原来的额外预留豁免,但不绕过游戏锁。
  4. 烈羽争锋目标细分:按 BNpcName ID 和机甲状态区分机甲、兵线、佣兵、防御塔、核心及其他目标,另有冰块分类。每类可独立关闭,默认全部允许,受战场目标总开关控制;未知 ID 归入其他。攻击开关不移除补给威胁,友军仍由原生目标及阵营检查过滤。
  5. 可选爆发与范围策略:默认原循环不变。和弦箭可等待增益 / 指定充能,默认最多保留 4 秒;手动爆发模式将和弦箭、职能增益、极限技保留到 10 秒爆发窗口,生存、鹰眼和安可不等待。范围策略可按客户端圆形半径、直线长度及宽度估算覆盖数,达到默认 2 个有效目标才改变选敌,仍优先普通玩家。覆盖数仅是几何估算,无法保证移动、地形和服务端判定后的实际命中。
  6. 集火生存和后跳切换:可选集火判断结合 30 米内敌人的当前目标 / 读条目标及 2 秒累计 HP 损失。默认阈值为 3 名敌人指向自己或累计掉血 25%;危险时 HP ≤40% 可防御,自疗缺失阈值降低至不超过 6000。目标指向是风险信号,并非确定将受到攻击。后跳可以单独切到手动模式,其余循环继续。

默认偏好保留:最低当前 HP、玩家优先、鹰眼优先收割、原循环爆发方式、自动后跳及原生存阈值不变;稳定选敌、自动接管检测、范围策略和集火防御默认关闭。旧配置缺少的新字段自动使用这些默认值。自适应穿插是默认启用的执行层优化,设置中可以回到固定预算。

命令 用途
/bardpvp manual 持续手动接管
/bardpvp auto 恢复自动控制,不改变总开关
/bardpvp burst 开启 10 秒爆发窗口
/bardpvp burst off 结束爆发窗口
/bardpvp backstep 切换后跳自动 / 手动
/bardpvp backstep manual / auto 明确指定后跳模式

浮窗提供接管、恢复和爆发按钮;详细选项位于设置的新增折叠项中。手动后跳由玩家按游戏技能,插件不替玩家判断后退位置是否安全。

0.1.4:烈羽争锋支持

  • 通过战场类型识别烈羽争锋(TerritoryIntendedUse 39),保留纷争前线(18);水晶冲突、训练区域和其他内容仍不运行。浮窗及复制诊断显示当前模式。
  • 驾驶机甲时暂停全部自动诗人技能及选敌,清空待处理请求;离开机甲并满足普通运行条件后自动恢复。检测机甲条件、搭乘状态和当前战场机甲数据,不驾驶或操纵机甲技能。
  • 普通玩家优先;无有效玩家攻击时,可攻击敌方兵线、建筑、机甲等客户端允许攻击的战场目标,受原有战场目标开关控制。机甲按战场目标处理,鹰眼不用于机甲收割;礼赞不对机甲使用。
  • 烈羽争锋的敌方战斗 NPC 和机甲均计入 30 米补给威胁,包括暂时不可选中或免疫的敌方单位;关闭战场目标攻击也不会忽略这些威胁。碎冰战的冰块仍不阻止补给。
  • 发行 ZIP 仅包含 DLL 和 JSON。新版模式识别、兵线 / 建筑分类和上机甲 / 下机甲行为尚需实机验证。

0.1.3:安可释放与和弦箭变体修复

  • 英雄的安可(Encore of Light,41467)有执行许可且目标合法时,优先于普通武器技能、后跳、沉默和普通鹰眼释放,不再等到状态接近过期。紧急生存、鹰眼收割及其他即将过期的攻击状态仍在其前。
  • 安可不受额外的共享冷却穿插预留限制,避免叠加加速后连续错过释放窗口;仍检查游戏动作锁、读条、冷却、射程及目标状态。
  • 修复和弦箭变为 41465 / 41466 / 41964 时被误判为错误技能的问题;使用客户端返回的合法变体执行原生检查和动作请求,不允许其他未知变换。
  • 目标诊断细分为 Guard、免疫、目标类型、原生拒绝、射程 / 视线错误码等,附检查目标;新增“复制诊断”,包括版本、安可执行许可和最近候选检查。旧版截图中的合并提示不足以确认具体目标拒绝原因,新版仍需游戏内复测。

0.1.2:战场目标与循环优化

  • 默认玩家优先:只要有可用攻击能命中敌方玩家,整轮攻击只选择玩家;否则攻击冰块等可攻击的战场目标。目标组内仍按所选 HP / 距离 / 标记排序。设置中可关闭战场目标攻击。
  • 通过战斗 NPC 类型及客户端原生可攻击性识别目标,不依赖名字;排除宠物、召唤物、友军及不可攻击物件。尚需在实际碎冰战确认目标识别。
  • 鹰眼始终只对玩家使用,冰块残血不会消耗鹰眼。补给威胁扫描仍只统计敌方玩家。
  • 完美音调、爆破箭、Encore of Light 的前置状态剩余不超过 3 秒时优先消耗;多个状态即将过期时先用剩余最短的可用技能。生存和鹰眼收割仍在其前。
  • 按实际主冷却组及附加冷却组判断共享冷却,独立冷却的武器技能也检查穿插窗口;忽略已停止计时的冷却残值。即将过期的技能与鹰眼收割可跳过额外穿插预留,但仍遵守客户端动作限制。

0.1.1:目标响应与鹰眼 Guard 处理

  • 选敌独立于动作确认和动画锁更新,已有目标每个决策周期重新比较 HP,无需等待当前目标死亡。决策最短间隔由 50ms 降为 20ms,新对象扫描间隔由 100ms 降为 50ms;实际更新间隔受游戏帧率限制。
  • 游戏画面目标可以提前切换,但已经提交的技能仍保持原目标,不会覆盖动作队列或绕过动画锁。手动读条期间不自动切换目标;自身 Guard 期间仍暂停。
  • Guard 不进入通用无敌分类;鹰眼独立检查自身射程及可用性,即使附近只有开启 Guard 的敌人,也不要求先找到普通射击的目标。
  • 鹰眼不可用时,不会因为未来可能收割而让普通攻击一直盯住 Guard 目标。

默认行为

  • 普通选敌:当前 HP 最低,然后距离最近;完全相同时保留当前目标。不把护盾计入普通选敌排序,也不优先标记。可切换为 HP 比例、距离或攻击标记 1–8 排序。
  • 主动开战:有有效敌人即可攻击,无需手动进入战斗。默认玩家优先,无可用攻击能命中玩家时攻击冰块等战场目标;不会操作需要交互的物件。
  • 技能开关:各技能均可独立关闭,默认开启;可单独停止攻击和进攻增益,保留共通生存技能。
  • Guard:默认避开敌方 Guard。开启“无视敌方 Guard”后允许普通技能攻击,伤害减免仍由游戏决定。Eagle Eye Shot 本身允许攻击 Guard 目标。
  • 自身 Guard:持续期间停止所有自动动作,避免插件解除防御。此规则不受敌方 Guard 开关影响。
  • 后跳:默认开启,实际释放会使角色后退;可在技能列表关闭。
  • 范围限制:非诗人、非纷争前线 / 烈羽争锋、对局未开始或已结束、切区、死亡、上坐骑、驾驶机甲时暂停。没有自动移动、寻路、上下坐骑或操作机甲功能。

Eagle Eye Shot 优先收割

默认策略为 “优先收割,否则按原循环”:有符合条件的玩家目标时,鹰眼优先于普通输出、进攻增益及极限技。没有符合条件的目标时,鹰眼仍在原本的攻击能力优先级中对玩家使用。两种策略均不向战场 PVE 目标释放鹰眼。

收割目标按 当前 HP + 吸收护盾 筛选,默认上限 10,000;候选中选择有效 HP 最低的敌人,再比较距离及当前目标。鹰眼按自己的客户端射程检查,不受普通射击的较短射程限制。

阈值是可调整的经验值,不是精确伤害预测。客户端只提供护盾百分比,插件换算为护盾 HP;实际伤害还会受职业调整、增伤、减伤和状态同步影响。因此,进入阈值不等于保证击杀。可结合实战调整阈值。

另有“严格保留,只用于收割”策略,不符合阈值时留住鹰眼。自身生存技能始终优先,自动动作始终尊重游戏的动画锁、读条和动作队列。不会为了鹰眼主动取消正在进行的读条。

循环

普通武器技能优先级参考本地 RSR:缺少 Frontliner's March 时的 Apex Arrow → Harmonic Arrow → Pitch Perfect → Blast Arrow → Apex Arrow → Powerful Shot。技能状态、变换及充能条件不满足时跳过。前置状态剩余不超过 3 秒的 Pitch Perfect / Blast Arrow / Encore of Light 在普通循环和进攻增益之前消耗,避免状态过期;不改变平时的 Harmonic Arrow 充能使用策略。

安可有执行许可时优先于普通输出消耗;普通攻击能力顺序为无 Repertoire 时的 Repelling Shot → 无 Repertoire 时的 Silent Nocturne → Eagle Eye Shot。鹰眼收割分支在这些攻击前检查。可用武器技能优先于其余普通能力穿插,临近共享冷却结束时保留窗口;鹰眼收割、安可和即将过期的技能不因这个额外预留而延后。

Final Fantasia 在战斗中有有效敌人且极限量谱满时使用;获得 Encore of Light Ready(4312)后,在下一个符合动作条件的时机优先释放安可。只使用实际装备的 Bravery、Dervish 或 Eagle Eye Shot 职能技能。

生存与补给

优先顺序:自身礼赞解控 → 净化 → 防御 → 自疗 → 可选队友礼赞 → 安全补给 → 鹰眼收割 → 即将过期的攻击状态 → 安可 → 增益、极限技及攻击循环。

功能 默认条件
礼赞 自身存在可解除控制;帮助小队成员默认关闭
净化 存在已启用的控制类型,且礼赞不可用
防御 战斗中 HP ≤15%
自疗 缺失 HP ≥15,000,MP 和冷却满足客户端要求
军用圣灵药 HP 或 MP ≤三分之一,静止且 30 米内无存活敌方玩家;烈羽争锋还检查敌方兵线、建筑和机甲,碎冰战冰块不阻止补给
冲刺 移动中、无有效攻击目标、没有冲刺状态

防御、自疗、补给在登录/复活后等待 5 秒。解控不受此等待限制。没有攻击目标时仍检查生存技能。

敌人的 Guard、无敌、暂时不可选中或遮挡不会让它从补给威胁扫描中消失。安全喝药时不会因为自疗刚转好而自行打断;出现威胁或控制且有紧急技能可用时,才取消插件发起的补给读条。普通插件读条可为紧急生存技能取消;手动读条不主动取消。

构建和测试

从本目录运行:

.\build.ps1

默认引用目录:C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\addon\Hooks\dev,通过 APPDATA 自动解析。可覆盖:

.\build.ps1 -HooksDevPath 'D:\Path\To\Hooks\dev'

项目没有 NuGet 包依赖。build.ps1 执行还原、Release 构建、离线测试并在 dist 下打包,仅包含 DLL 和 JSON;不会安装到游戏,也不会修改 Hooks 目录。

离线测试直接编译生产代码的纯逻辑模块,使用假客户端检查接口。详见 VERIFICATION.md,游戏内验收尚未完成。

S
Description
No description provided
Readme
91 KiB
2026-10-13 23:03:16 +08:00
Languages
C# 99.3%
PowerShell 0.7%