| name | add-action |
| description | 引导添加新的 FrameDataAction,确保 provenance、hitbox、reaction、cancel policy 完整 |
Add Action Skill
引导在战斗系统中添加新的 FrameDataAction,确保所有必需字段和 provenance 追踪完整。
使用方式
/add-action <ActionName> — 例如 /add-action GoreCross
工作流程
Step 1: 确认 Action 基本信息
收集以下信息(如果用户未提供则询问):
- ActionName: 技能名称(必须添加到
src/combat/types.ts 的 ActionName 联合类型)
- totalFrames: 总帧数
- 数据来源:
local_baseline / pvf_extraction / neople_api / dfo_world_wiki
- 技能类型: 普攻链 / 主动技能 / 被动触发 / 移动技能
Step 2: 定义 Hitbox
每个 hitbox 需要:
hit(id, start, end, hitGroupId, baseDamage, {
hitType: "slash" | "shockwave" | "blood_pillar" | "grab",
offsetX, offsetZ, offsetY,
w, d, h,
canHitDowned, canLaunch, canKnockdown,
maxTargets,
reactionProfile
})
Step 3: 定义 Reaction Profile
reaction({
hitStunFrames,
knockbackX,
knockbackZ,
launchVelocityY,
horizontalFriction,
downFrames,
getUpFrames
})
Step 4: 定义 Cancel Policy
cancelPolicy: {
hitCancelFrom: number,
whiffCancelFrom: number,
into: combatCancelTargets
}
Step 5: Root Motion(可选)
rootMotion: { frames: lunge([frameNumbers], dx, dz) }
Step 6: 注册 Action
- 在
src/combat/types.ts 的 ActionName 类型中添加新名称
- 在
src/combat/actions/FrameDataAction.ts 中定义完整 action
- 在
src/data/actions/ 对应文件中注册到 manifest
- 确保
fieldProvenance 使用正确的 provenance 函数
Step 7: 验证
运行:
npm run typecheck && npm run static:test
检查清单
参考数值范围(DNF 70-85 classic)
| 参数 | 轻攻击 | 中攻击 | 重攻击 |
|---|
| hitStunFrames | 10-13 | 15-18 | 20-25 |
| knockbackX | 3-5 | 5-8 | 8-12 |
| baseDamage | 8-12 | 12-18 | 18-30 |
| totalFrames | 24-30 | 30-45 | 45-70 |