Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
PerfectBlock
Auto-perfect-block assist inspired by Dark and Darker parries and WoW's Parrot combat text. Learns each creature's timing, blocks just before impact without touching vanilla rules, and adds Parrot-style floating damage numbers and parry flashes.
CHANGELOG
版本记录
1.6.8
代码审计后的一次集中清理,默认值全部改为作者实测配置(Font/Label Font = Norsebold、Base Font Size = 30、Animation Style = Static、Detect Range = 10、Flash 6 / 0.216 / 2s、Temp Buff 0.624 / 0.4、Buff Scale 1.5、Buff Max Rows 1、English Labels = true)。
- 修复
Line Spacing完全无效:行距变量算了没用,现在真正作用于叠放行距 Static2不再是Static的复制品,改成真正的「固定向下」- Sprinkler 的角度扇只剩 2 个角度(公式恒为 0):改用
Max Lines决定扇面切片 - Sprinkler 不再被左右翻转二次镜像
- Toggle 模式下不再每帧强制
m_blocking,与「只发边沿」的设计一致 - 手动完美格挡也会弹 PERFECT BLOCK 闪字(统计与后摇仍只针对自动格挡)
- 格挡数值只记录玩家/宠物那一侧,避免被怪物格挡的数字串台
- 普通格挡的日志不再谎称「按早了」,改报 blockTimer 与格挡武器
- 配置节顺序整理为 General / Feedback / Buff Panel / Combat / Learning,cfg 不再出现重复节标题
- 补上缺失的 yml 键
PatchBlocked、PatchObjects;删掉废弃的PatchVanilla、CancelAttack - 删除死代码
ReportShowTextDamage及其专用字段;learned.json版本号改为真实版本 - 术语与描述修正:
Scroll Size(像素)、Max Lines(仅 Static)、Show Vanilla Numbers(挖矿也归我们管)、Show Block Text(当前格式) - 反击窗口改用独立样式,不再和 BUFF 面板共用同一个 GUIStyle
- 字体查找改为可重扫 + 字形缓存;
SeenEffects加上上限
1.6.6
- 修复战斗数字完全不显示:
PatchVanillaDamageText在 1.6.2 删补丁时连注册一起删了,导致Show Vanilla Numbers控制的是个不存在的开关,我们的数字也从未被创建 - 修复数值捕捉时机:原版在这版是在
Character.ApplyDamage内部就调DamageText.ShowText,而我们在 postfix 才记 pending,永远晚一步。改为在 ApplyDamage 前缀记录,ShowText前缀消费 Test All UI只在进入世界后生效,主菜单不再刷测试文字- 启动日志改为显示真实版本号(之前硬编码 0.3.3)
- 新增诊断日志:
damage text/blocked number/block text(受Log Attempts控制)
1.6.5
- 伤害类型标签改用游戏自己的词条(
$inventory_*),和武器面板逐字一致,并跟随游戏语言:劈砍 / 戳刺 / 锤击 / 切剁 / 镐 / 火焰 / 冰霜 / 闪电 / 蛊毒 / 精神 - 修正之前自编的词:Slash 是「劈砍」不是 Chop,Pierce 是「戳刺」,Poison 是「蛊毒」
- 括号改全角并加空格:
+12 (劈砍),与格挡行+ 格挡 (0.5)同一套写法 - 主伤害类型判定补上镐(Pickaxe)
1.6.4
- 挖矿/砍树/砸建筑也使用我们的文字与动画:
[图标] +12 (劈砍) - 标签取该击的主伤害类型,不拆分多类型伤害
- 只接管玩家自己的伤害,环境伤害保留原版
1.6.3
- 格挡提示并入受伤区:
+ 格挡 (0.5),数值取自游戏自己的格挡数字 - 完美格挡按暴击处理:更大字号 + Punch 动画
- 删除独立的格挡/招架位置开关
1.6.2
Show Vanilla Numbers移到[General]- 修正隐藏逻辑:只隐藏被我们替换的那条伤害数字,治疗/制作奖励/“太硬了”等文本恢复显示
- 挖矿、砍树的原版数字保留(我们的数字依赖 Character 命中信息)
1.6.1
- 修复伤害数字不显示(ApplyDamage 与 ShowText 的时序搞反,改为先记录后由 ShowText 用原版数值创建)
- 修复原版数字没被隐藏(1.6.0 的属性错位导致
隐藏原版数字补丁失败) - 格挡/招架文本改为
+格挡/+招架 Test All UI改为每 0.8 秒生成真实条目,改动画样式立即生效
1.6.0
- 伤害数字改为直接取原版
DamageText.ShowText的数值,与游戏显示逐位一致 - 移植 Parrot 全部 15 种滚动动画 + 方向/滚动距离/行距/层数/淡出/时长配置
- 新增格挡与招架提示(左侧,抄 Parrot avoid 事件):
格挡/招架! Test All UI移到[General],一次画出全部 UI- 删除常驻 BUFF 列与相关配置;BUFF 面板只显示格挡临时 BUFF + 肾上腺素
1.5.1
Flash Animation默认改为Punch并排在第一顺位- BUFF 面板拆成常驻 / 临时两列,位置分开可调;无持续时间的效果不再显示负数倒计时
- 肾上腺素必定显示在临时列,不受“只显示格挡带来的 buff”影响
- 新增
Hide Vanilla Buff Icons:面板开启时隐藏原版(含 My Little UI)状态图标 - 伤害数字改为向右上缓出滑动并淡出;暴击/连击终结使用 Punch 缩放
1.5.0
反馈 UI 与格挡 BUFF 提示(战斗逻辑未改动):
- 完美提示可调 位置 X/Y、字号(屏幕高度百分比)、颜色、停留时长,新增 5 种动画:Pop / Punch / Slam / Slide / Shake
- 新增 BUFF 面板:完美格挡后出现的状态效果逐个显示(图标 + 本地化名称 + 剩余时间 + 层数),并显示肾上腺素增量
- 新增反击窗口:进度条显示强制格挡剩余时间(连击保持段位的窗口),并显示当前连击段数
- 新增诊断开关 Log Perfect Block Buffs
- 新配置项全部带中英文说明
0.3.3
⚠️ 从 0.3.2 及更早版本升级的玩家:请手动把
Hold After Perfect (ms)改成500(配置里原来是多少就改成 500)。 升级不会重写你已生成的 cfg,旧值留在 0 的话格挡会失效/挡不住——这个值必须手动改。 全新安装的玩家不用管,默认已经是 500。
参数调整(默认值改成实测最顺手的一套):
Enable Auto Block默认开启Detect Range25 → 5 米Log Attempts默认开启Min Samples3 → 5Hold After Perfect (ms)0 → 500(升级用户请手动改,见上)Show Vanilla Numbers默认开启Lead Ms 70/Press Tail Ms 150/Base Font Size 27/Big Hit Scale 2.4/ 数字位置0.2,0.6与0.7,0.6保持上一版
0.3.2
- 文档:README 封面图改到 jsDelivr(固定 commit 地址),解决 GitHub / Thunderstore 页面上演示 GIF 裂图的问题(原图 19–38MB,超出图片代理与 CDN 的 20MB 上限,已重新编码到 2–4MB)
- 文档:标题标注实测成功率,中英双语补齐实测数据与「关闭切换格挡最佳」的说明
- 无功能改动
0.3.1
首次公开版本。
- 学习:hook 非玩家实体的
OnAttackTrigger,按(预制体, 动画状态)记录命中瞬间的动画进度,存BepInEx/config/PerfectBlock/learned.json;样本数与离散度达标后才开始自动格挡 - 自动格挡:命中点前
Lead Ms(70)按下,命中后按满Press Tail Ms(150);固定值,不做自适应(自适应会把提前量推到 0.25 秒窗口之外) - 两种格挡模式:自动识别游戏的「切换格挡」;长按模式实测 91% 完美率、0 漏挡,切换模式约 4% 漏挡
- 手动格挡取消挥刀(等价 AttackCancel):只对你手动按下的格挡生效,自动格挡不会打断挥击
- Reliable Perfect Block:只在完美格挡那一下忽略「大伤害破防」规则
- 完美提示:屏幕中央
PERFECT BLOCK !!!,连续触发向上叠加 - 战斗数字:
武器图标 + 数字 + (伤害类型),承伤红色在左、输出黄色在右;位置/字号/字体/武器图标可调,带常显测试开关 - 中英双语 yml,按游戏语言自动加载;配置项带完整说明
- 修复早前版本:
Release Delay语义写反导致每次格挡后主动卸防 250ms;战斗数字取血量差值的位置错误(Character.Damage只发 RPC,血量在Character.ApplyDamage里改)