服务端(Go): - GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面 - GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新 - 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新) - 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍 - 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0) - 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算 启动器(Python/JS): - 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭 - GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐) - 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
62 lines
3.4 KiB
Markdown
62 lines
3.4 KiB
Markdown
# 独立掉落编辑器
|
||
|
||
入口:工具 → 独立掉落;也可打开 `etc/independent_drop.etc` 切换 GUI。
|
||
外部共享列表位于 `etc/independentdrop/`,同样支持 GUI。
|
||
|
||
支持按来源、物品名称或 ID 搜索,按掉落模式过滤;编辑、复制、删除、新增记录,
|
||
转换直接物品/内嵌列表/外部列表三种模式;对筛选结果批量设置概率、数量和等级。
|
||
内嵌列表支持物品选择、增删、ID 与权重编辑;保留重复项、零权重及顺序。
|
||
外部列表通过 `etc/independentdrop.lst` 解析,可更换引用或打开共享文件编辑。
|
||
副本平衡参数按原字段顺序编辑。未知物品不阻止加载。
|
||
|
||
修改先进入当前文件草稿,保存独立掉落后进入工作区,再通过保存 PVF 写入归档。
|
||
文件 GUI 与文本编辑器共用草稿、撤销及保存流程,归档切换或文本改变后旧表单自动失效。
|
||
共享列表修改影响所有引用它的记录。
|
||
|
||
## 格式与变体研究
|
||
|
||
参考上游 [pvfUtility 独立掉落模型](https://github.com/Lancarus/pvfUtility/tree/master/PvfCode/ViewModels/independent_drop),
|
||
依据实际数据结构重新实现 Go 投影与 Vue GUI,不引入 WPF、商业组件或上游二进制。
|
||
|
||
17 项主体依次为:来源类型、来源 ID、物品 ID、五档概率、五档数量、最低等级、
|
||
最高等级、职业、掉落模式。常规模式的概率分母为 1000000,每档独立计算。
|
||
界面保留原始难度顺序,不把不同客户端的第五档强行解释为同一难度名称。
|
||
`0` 为直接物品,`1` 为内嵌 `[list]` ID/权重对,`2` 为 `[list]` 中的外部列表 ID。
|
||
上游采用三种模式;模式 2 由合成样例验证,当前真实样例没有使用该模式。
|
||
|
||
本地 `testdata` 验证结果:
|
||
|
||
| 变体 | 主体记录数 | 模式 | 差异 |
|
||
| --- | ---: | --- | --- |
|
||
| TW | 3898 | 0、1 | 132 个外部列表;6 个副本平衡参数 |
|
||
| 90CN(两份样例) | 2173 | 0、1 | 外部列表索引为空 |
|
||
| 90US | 2178 | 0、1 | 外部列表索引为空 |
|
||
| 100CN | 2000 | 0、1、5 | 模式 5 与 replace list 条件段 |
|
||
| 110US | 1834 | 0、1、5 | 模式 5 与 replace list 条件段 |
|
||
| 115US | 1806 | 0、1、5 | 模式 5 与 replace list 条件段 |
|
||
| 60ACT(A1/A4/A5/A12 样例) | — | — | 未包含该文件,入口明确提示不支持 |
|
||
|
||
模式 5 的概率含义尚未确认:展示原始值,禁止 GUI 修改概率、列表、模式及结构性增删,
|
||
允许已确认的来源、数量、等级等主体字段编辑。附属条件及其他未知 section 原样保留。
|
||
批量修改概率若包含扩展模式会明确拒绝,应先过滤为常规模式。
|
||
不对其他变体套用 TW 的整个文件序列化;字段编辑仅替换精确 UTF-16 源码范围。
|
||
已观察到的 `[replace list]`/`[dungeon condition]` 不会在保存时丢失。
|
||
|
||
## 验证
|
||
|
||
```sh
|
||
go test ./...
|
||
cd frontend && npm test && npm run build
|
||
```
|
||
|
||
真实样例回归(源文件只读;保存至测试临时目录,测试结束自动清理):
|
||
|
||
```sh
|
||
PVF_TESTFILE=/path/to/Script.pvf PVF_DROP_SAVE_ROUNDTRIP=1 \
|
||
go test ./services -run '^TestIndependentDropReal$' -v
|
||
```
|
||
|
||
该测试读取 GUI 文档、验证所有注册的外部列表,修改单个概率字段后比较整个脚本
|
||
二进制 payload,要求除该整数之外所有 token 逐字节不变;可选保存重开再次比对。
|
||
60ACT 缺少配置时跳过,不能把跳过视为已支持独立掉落。
|