ArtianCharm Editor Enhance
《怪物猎人:荒野》的 REFramework Lua mod「Artian / Charm Editor」的增强版。原作作者是 Nexus 上的 lingsamuel,他为荒野制作了非常多的 mod,总下载量超百万。
Artian 和 Charm 分别是游戏里的机械武器和任务护石,有随机的词条和孔位产出,游戏也正是依靠这样的无底洞机制,逼迫玩家不断进行游戏,刷出自己满意的武器词条和护石技能。
但游戏既然都上了电脑,那可就由不得你了:D——artian_editor和 charm_editor应运而生,它们依赖 lingsamuel 自己的 CatLib 库。这两个 mod 实现了根据现有的机械武器和护石,直接编辑强化阶段、技能词条和孔位的功能,这样玩家动动手就有了毕业武器和极限护石。可以说,只要是在 PC 上玩荒野的活跃玩家,基本 REF 里都有一个 editor。
原版 editor 的问题
原版 editor 在 REF 菜单中以 tree_node 逐条列出所有武器/护石,无搜索、无分类、无排序。玩家装备箱里常有几十上百件机械武器和护石,找一个特定条目只能滚动翻找。具体有四个痛点:
- 找不到目标:武器护石乱序排列,找特定武器虽然知道名字,但同名武器很多;改护石只能看到稀有度,想看技能得逐条展开。找到要修改的武器,往往已经过了两三分钟
- 编辑后条目消失:编辑器每帧从存档全量重建列表,修改字段后(武器 ID / 激化类型 / 稀有度),条目名称会变、排序下的位置就会改变。比如把护石稀有度从 R6 点到 R8,当前条目就会跑到别的列表里,需要用户重新寻找
- 护石无法按技能检索:想要找到如"带攻击技能的护石"只能逐条展开查看
- 分页不直观:原作者用
PAGE_LEN=100分页显示,但只是 UI 折叠(避免一次性渲染上千个 imgui 树节点卡帧),并非数据分页,用户仍需逐页翻
增强版功能
| 功能 | 机械武器编辑器 | 护石编辑器 |
|---|---|---|
| 名称搜索框 | 是 | 是 |
| 分类下拉(按武器类型 / 稀有度) | 是 | 是 |
| 排序(箱子默认 / 按分类) | 是 | 是 |
| 技能筛选下拉 | — | 是 |
| 最近编辑定位 | 是 | 是 |
| UI 固定英文 | 是 | 是 |
名称搜索
输入框实时过滤,大小写不敏感,子串匹配武器/护石名称。 尽管 ref 里对中文很不友好...我甚至自己都不用中文搜索
分类
- 机械武器:All / 14 种武器
- 护石:All / Rarity 5-8
通过几种限定结合真实玩家的库存来看,能把搜索范围限定到很小。例如找一把太刀,列表里就不需要出现其他武器。

排序
- Mode 0(默认):保持装备箱原始顺序
- Mode 1:按分类值排序(机械武器=武器类型、护石=稀有度),同类内保持箱子顺序
技能筛选(护石专属)
下拉选项列出所有护石可能出现的第一技能词条,按基础技能名去重("攻击 Lv1"、"攻击 Lv2" 合并为"攻击"),选择后只显示该技能的护石。同一技能可能出现在不同点数池(如"强四射击 Lv2"在 2 分池和 4 分池),按名匹配可以筛到全部同名护石。

最近编辑定位
编辑任意字段后,列表顶部出现信息条 "Last edited: XXX",点击 "Go to item" 按钮自动滚动到该条目并展开其树节点,给用户一种连续编辑的感觉。若条目被当前筛选条件过滤掉,会提示 "The last edited item is not in the current results",点击跳转时自动清空筛选后定位。

单一列表
支持检索后不再需要把条目分散到多个下拉列表里,回归单个列表。超过 500 把时要求用户缩小检索范围——毕竟这个列表是用来修改的,只要找到要修改的那一把就可以了。

设计取舍
- 收藏/装备标识:最初计划支持收藏和当前装备筛选,需要动态探测存档字段名(Fav/Favorite/Register/Lock/Bookmark),运行时不可靠,放弃
- 中英双语切换:尝试过语言下拉切换和双语并排两种方案,但 imgui.combo 的有状态方案在每帧重建场景下不稳定(切换后当前项仍显示旧语言),最终移除 i18n 模块,UI 固定英文
实现细节
共享模块
两个编辑器共用的浏览增强模块 equipbox_browser.lua(183 行)最初独立于 _shared/ 目录,经原作者 lingsamuel 审查后并入他的 CatLib 依赖库,由两个编辑器直接引用。模块提供:
textNewState() → 创建浏览器状态(SearchText / FilterKey / SortMode / SkillKey / LastEdited* / ScrollTo*) Toolbar(state, opts) → 渲染搜索框/分类/排序/技能下拉工具栏 Filter(state, entries, categoryKeyOf, skillList) → 过滤 + 排序,返回 filtered 列表 MarkEdited(state, idx, name) → 标记最近编辑条目 BeginScroll(state, idx) → 渲染时命中待定位条目则滚动+展开 EditedBar(state, filtered) → 最近编辑信息条 + 跳转按钮
分类下标映射
imgui.combo 的选项表需要从 0 连续编号,但游戏数据里的分类值不连续,由 categoryKeyOf 回调完成映射:
- 机械武器:combo 下标
k→ 实际值k-1(0=All, 1=大剑, ..., 14=轻弩) - 护石:combo 下标
k→ 实际值k+188(0=All, 1=Rarity5=189, ..., 4=Rarity8=192)
滚动安全保护
imgui.set_scroll_here_y 和 imgui.set_next_item_open 两个 API 在某些 REFramework 版本可能未绑定,缺失时静默降级(仅保留信息条,不滚动/不强制展开)。
护石技能名规范化
下拉选项和条目必须走同一个规范化函数,否则选项去等级后与条目(带等级)比较永远不等,筛选会失效:
hljs lualocal function NormalizeSkillName(name)
local n = string.gsub(name, "%s*[Ll][Vv]%d+%s*$", "")
n = string.gsub(n, "%s+$", "")
if n == "" then return nil end
return n
end
去掉尾部 "Lv1"/"Lv2" 等级后缀、trim 尾空格;构建下拉选项时先规范化去重再 table.sort。
发布
在完成之后我向原作者 lingsamuel 发了消息,他在第二天早上给予了我回复,并且很快就把增强版上线了 Nexus。才更新了两三天不到,下载量就来到了 1700 多——毕竟上一个版本的更新已经是 6 个多月前,还有一个是一年以前的了。我相信玩家只要更新了这个模组,会立刻被新版的舒适度惊艳的。
相关链接
- Charm Editor(护石):https://www.nexusmods.com/monsterhunterwilds/mods/3067
- Artian Editor(武器):https://www.nexusmods.com/monsterhunterwilds/mods/196
- CatLib(依赖库):https://www.nexusmods.com/monsterhunterwilds/mods/65