Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 - #5123
PigeonNian merged 1 commit into
Conversation
- 为 super_kill 增加皇家铁砧锤物品条件,保留原有 80 点伤害阈值。 - 传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份,并保持其他进度和原有调用方式不变。 - fixed Anvil-Dev#5122
|
审查完成。以下为审查意见(将自动发布到 PR #5123 评论区): 代码审查摘要 — PR #5123 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤操作: opened(当前 PR 状态 = draft, 📋 issue #5122 复核issue 正文:「在使用除皇家以外类型的铁砧锤 单次造成 80 点伤害完成…」,而描述文案为
即修复前多种非皇家锤都能拿到 🔴 关键未发现阻塞性缺陷。核心判定逻辑经核对是正确的: return (this.damage.isEmpty() || damage >= this.damage.get())
&& (this.item.isEmpty() || this.item.get().test(item.getDefaultInstance()));与旧
|
| 声称 | 状态 | 证据 |
|---|---|---|
为 super_kill 增加皇家铁砧锤物品条件 |
✅ | AnvilHammerHurtEntityTrigger.java:58-62 + super_kill.json |
| 保留原有 80 点伤害阈值 | ✅ | JSON "damage": 80.0;matches 中 damage >= this.damage.get() |
| 传递实际攻击所用铁砧锤,避免耐久耗尽时丢失身份 | ✅ | AnvilHammerItem.java:463 传 this;ItemStack.getItem()=AIR-when-empty 已字节码核实 |
| 保持其他进度与原有调用方式不变 | ✅ | hurt_entity 走 2 参构造 ⇒ item 为空 ⇒ 判定恒真;JSON criteria 键名仍为 super_kill |
| fixed #5122 | ✅ | issue #5122 正文与各锤 calculateFallDamageBonus 复核一致(不阻塞;仅剩 |
🧪 测试建议(手动验收矩阵,本仓库无 advancement 单测)
| 场景 | 期望 |
|---|---|
| 皇家锤 + 下落 ≥40 格攻击实体(单次 ≥80) | 获得 super_kill |
| Ember / Frost 锤同条件(120 上限) | 不获得 super_kill |
| Transcendence 锤同条件 | 不获得 super_kill |
| 任意锤单次 <80 伤害 | 不获得 |
| 任意锤命中实体 | hurt_entity 仍正常获得(回归) |
旧存档/第三方数据包中仅含 "damage": 80.0 的 criterion |
仍可被任何锤触发(向后兼容) |
结论: COMMENT(非阻塞) — 因为当前为 draft 状态,仅给出上述观察而不要求改动。核心修复正确、向后兼容、datagen 产物形状对得上;建议合入前处理 Items.AIR 死重载)并确认 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 准确清晰,无需修改。
|
💾 Self-improvement review: Skill 'advancement-criterion-pr-review' created. · Patched references/merged-state-and-ci-verification.md in skill 'github-webhook-pr-review' (1 replacement). |
代码审查摘要 — PR #5123状态: 🔎 关键路径交叉验证(结论:实现正确)
🔴 关键
|
| PR 声称 | 状态 | 证据 |
|---|---|---|
为 super_kill 增加皇家铁砧锤物品条件,保留 80 伤害阈值 |
✅ | super_kill.json → damage: 80.0 + item.items=anvilcraft:royal_anvil_hammer;datagen hurtEntity(80, ROYAL_ANVIL_HAMMER.get()) |
| 传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份 | ✅ | AnvilHammerItem:463 传 this;已验证 hurtEnemy 先 hurtAndBreak(会清空 stack),传 stack 反而更糟 |
| 保持其他进度和原有调用方式不变 | ✅ | all_in_one 等 json 无变更;旧重载全部保留(见 |
fixed #5122 |
✅ | Issue #5122 确为「非皇家锤造成 80 伤害也完成'超杀…差一点'」,期望方案之一(仅允许皇家锤)已被采纳,且与 lang 文案一致 |
结论: APPROVE — 修复正确且最小,无阻塞问题。建议顺手把 @Deprecated 或收掉,避免将来静默失效。
🧪 测试建议
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
| datagen 输出 | 本地/CI 跑 runData,断言 super_kill.json 无 diff(本环境无 java/gradle,未能代跑 compileJava/runData,需在此确认) |
🔴 |
TriggerInstance.matches(damage, item) |
皇家锤 + 80.0/79.9 边界;ember/frost/transcendence 造成 ≥80 必须不完成 | 🔴 |
AnvilHammerItem.hurtEnemy 回归 |
皇家锤仅剩 1 点耐久且下落 ≥40 格 → 仍授予(验证传 this 的意义) |
🟡 |
| 旧数据包兼容 | 加载无 item 字段的旧 super_kill.json 正常;all_in_one/hurt_entity 仍可完成 |
🟡 |
| 多玩家半径 | 5 格内旁观玩家是否应完成(按 |
🟢 |
由 Hermes Agent 审查
代码审查摘要 — PR #5123操作: diff 完整性对账: 🔴 关键无。
|
| PR 声称 | 状态 | 证据 |
|---|---|---|
为 super_kill 增加皇家铁砧锤物品条件,保留原 80 点伤害阈值 |
✅ | super_kill.json 增 "item";AnvilCraftAdvancement:162 改用 hurtEntity(80, ROYAL_ANVIL_HAMMER.get()) |
| 传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份 | ✅ | AnvilHammerItem:463 传 this;ItemStack.getItem() 字节码 + 子类未覆写 hurtEnemy 双向坐实 |
| 保持其他进度和原有调用方式不变 | ✅ | AdvancementLineHelper 未改、hammerHurt("hurt_entity") 未动;criterion 的无条件/仅伤害路径语义等价 |
| fixed #5122 | ✅ | issue 正文("使用除皇家以外类型的铁砧锤造成 80 点伤害会完成该进度")与修复方向一致 |
🧪 手动验收矩阵(本仓库此类改动无单测,建议按此验)
| 场景 | 期望 |
|---|---|
| 皇家锤,坠落 ≥40(damageBonus 80)击杀/击中 | ✅ 发放 super_kill |
| 皇家锤,坠落 <40(<80) | 不发放 |
| Ember / Frost / Transcendence 锤,damageBonus ≥80 | 不再发放(修复点) |
| 普攻(无坠落,damageBonus 0)持皇家锤 | 不发放 |
旧数据包仅写 "damage": 40 |
仍可触发(item 缺省恒真) |
hurt_entity 兄弟进度 |
不受影响 |
| 目标 5 格内的空手旁观玩家 | 当前会一并发放(既有半径语义,确认是否符合预期) |
结论: COMMENT(无阻塞项,可合并) — 修复方向与实现均正确,this 的必要性经字节码坐实;仅剩 2 条非阻塞确认项(Items.AIR 哨兵死路径清理 / 5 格广播是否等于期望语义)。
PR 标题 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 已符合 <英文> <中文> 格式且描述准确,未作修改。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'advancement-criterion-pr-review' (1 replacement). |
|
💾 Self-improvement review: Patched SKILL.md in skill 'advancement-criterion-pr-review' (1 replacement). · Patched references/verification-recipes.md in skill 'advancement-criterion-pr-review' (1 replacement). |
|
PR #5123 事件为 closed,按 webhook 规则(closed/labeled → 停止)不作审查、不发布评论。 未执行任何 diff 下载、gh 命令或评论操作。 |
fix(advancement): 限定超杀进度使用皇家铁砧锤 (#5122)
super_kill增加皇家铁砧锤物品条件,保留原有 80 点伤害阈值。