Initial import of BardFrontline
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
# 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、无敌、暂时不可选中或遮挡不会让它从补给威胁扫描中消失。安全喝药时不会因为自疗刚转好而自行打断;出现威胁或控制且有紧急技能可用时,才取消插件发起的补给读条。普通插件读条可为紧急生存技能取消;手动读条不主动取消。
|
||||
|
||||
## 构建和测试
|
||||
|
||||
从本目录运行:
|
||||
|
||||
```powershell
|
||||
.\build.ps1
|
||||
```
|
||||
|
||||
默认引用目录:`C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\addon\Hooks\dev`,通过 `APPDATA` 自动解析。可覆盖:
|
||||
|
||||
```powershell
|
||||
.\build.ps1 -HooksDevPath 'D:\Path\To\Hooks\dev'
|
||||
```
|
||||
|
||||
项目没有 NuGet 包依赖。`build.ps1` 执行还原、Release 构建、离线测试并在 `dist` 下打包,仅包含 DLL 和 JSON;不会安装到游戏,也不会修改 Hooks 目录。
|
||||
|
||||
离线测试直接编译生产代码的纯逻辑模块,使用假客户端检查接口。详见 `VERIFICATION.md`,**游戏内验收尚未完成**。
|
||||
Reference in New Issue
Block a user