适用源码:
9da0beb8e8fdad85f50d7039408c3d98494e91c7。本文记录源码行为,默认配置不等于实服配置。
设计状态:按现状编写,具体业务批准记录未逐项核定;开发状态:下述能力有实现证据,限制单列;验证状态:完成定向源码核对,未执行自动测试或实服验收。
规格、实例与结果分离
EquipmentSpec 定义身份、基础属性与动作;EquipmentFactory 按精确 id+version 创建物品,EquipmentPdcCodec 读写正式实例。CE 模型或显示名不是正式装备身份。缺历史规格不能静默改用最新版。
非消耗品逐件 UUID;预览模板不应分配可领取身份。当前损伤、附魔、制造冻结值和临时效果是不同数据层,不能把被动/附魔倍率写回出厂基础值。
工艺结算
ForgeResolver.resolve 在配方闭区间抽一次整数,加所选工艺 score_bonus 并 clamp 到0~1000。档位阈值500/650/800/950,对应预算2%/4%/6%/8%,低档为0。按 allocation 相对权重分配实际存在的属性;耐久向下取整。大师由 MasterpieceRules.qualifies 同次分数判定,不叠加第二次随机或额外预算。
弹仓容量也可按规格范围抽取并冻结。默认值、阈值和配方许可由对应配置决定,不用本页替代配方完整数据。
订单数据流
制造菜单→ManufacturingService.submit:检查访问、图纸、材料、revision→生成模板与 V3 ProductionPlan→原子提交材料及计划。
advance 推进剩余时间;到零不等于已可领取,后续 EquipmentFactory.settle 分配身份、按冻结计划结算并保存完整成品。claim 只读成品字节,再走背包交接。改配置、重启和重复领取不重新抽品质/词条。
订单队列与成品属于设施共享,材料仓按玩家独立。数据库版本检查与客户端预览均不能替代服务端最终验权。
交接、换肤与维护
handoff 先预留,保存玩家背包与凭据,回读实际玩家文件后 finish;失败保持 pending,不猜测回放。
换肤匹配类型、部位和可选材质,保持实例语义;大师破损通过冻结恢复模板和费用维护,不按当前新配方重抽。历史缺字段要沿迁移规则处理,损坏/未知数据不可用默认值“修好”。
战斗与限制
EquipmentAttackBehavior 分派独立输入,RangedWeaponService 管理枪弩弹仓;发射/命中快照与当前手持物品分离。潜行输入不继承普通输入。跨区域命中、高级弹丸及组合兼容仍有待办,本文不宣称已通过真实世界测试。
来源
docs/装备设计与制造.md、docs/装备配置与数据规范.md、docs/装备战斗与被动.md、docs/装备皮肤与铁匠铺换肤.md。代码根 folia_plugin/src/main/java/com/flrv/:logic/smithing/process/ForgeResolver.java#resolve、logic/blacksmith/manufacturing/ManufacturingService.java#submit/advance/claim/handoff、factory/EquipmentFactory.java、infrastructure/platform/item/EquipmentPdcCodec.java、behavior/item/EquipmentAttackBehavior.java。配置见 folia_plugin/src/main/resources/blacksmith/。
相关:玩家装备指南、持久化。