1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! 记录类型索引说明
//!
//! ## 统一索引机制
//!
//! 自 v0.6.0 起,所有 string subrecord 都按 Record 内出现顺序分配索引(0, 1, 2...)。
//! 不再区分"特殊"和"普通"记录类型,所有字段都有 index。
//!
//! ## 常见的多字段记录类型
//!
//! 以下记录类型经常包含多个相同类型的 subrecord,因此索引尤为重要:
//!
//! - **MESG**: 消息/对话框记录
//! - `ITXT`: 按钮/选项文本(可能有多个)
//! - `DESC`: 消息描述(通常只有 1 个)
//! - `FULL`: 消息标题(通常只有 1 个)
//!
//! - **INFO**: 对话信息记录
//! - `NAM1`: 对话选项文本(可能有多个)
//! - `RNAM`: 对话响应文本(可能有多个)
//!
//! - **PERK**: 技能/特长记录
//! - `EPF2`: 技能等级 2 描述(可能有多个)
//! - `EPF3`: 技能等级 3 描述(可能有多个)
//!
//! - **QUST**: 任务记录
//! - `CNAM`: 任务目标/条件(可能有多个)
//! - `NNAM`: 任务描述(可能有多个)
//!
//! ## 索引分配示例
//!
//! ```text
//! MESG Record:
//! ┌─────────────┬───────┐
//! │ Subrecord │ Index │
//! ├─────────────┼───────┤
//! │ DESC │ 0 │ ← "请选择楼层"
//! │ ITXT │ 1 │ ← "1楼"
//! │ ITXT │ 2 │ ← "2楼"
//! │ ITXT │ 3 │ ← "3楼"
//! │ ITXT │ 4 │ ← "取消"
//! └─────────────┴───────┘
//! ```
//!
//! ## 唯一键格式
//!
//! 所有 ExtractedString 的唯一键格式为:
//! ```text
//! {editor_id}|{form_id}|{record_type} {subrecord_type}|{index}
//! ```
//!
//! 示例:
//! ```text
//! DimRiftSpellMenuDormsMSG|0539C5C2|GostedDimensionalRift.esp|MESG ITXT|1
//! DimRiftSpellMenuDormsMSG|0539C5C2|GostedDimensionalRift.esp|MESG ITXT|2
//! ```
/// 特殊记录处理器(已简化为文档模块)
///
/// 自 v0.6.0 起,不再需要特殊的记录处理逻辑。
/// 所有记录都使用统一的索引分配机制。
;