外观
SSecondaryConditionArgs:次要目标条件
状态:Authoritative Reference v1
1. Schema
原版 Game.proto descriptor:
proto
message SSecondaryConditionArgs {
int32 condition = 1;
int32 num = 2;
}字段名、字段号和类型均为 Confirmed。
2. BTL 位置
secondaryConditions 不在固定 0x80 Header 中,而位于 v3+ BattleExArgs field 2:
text
BTL Header
-> 主 VictoryCondition 与条件参数
BTL ExtensionArea / BattleExArgs
-> secondaryConditions[]不能把 Legend 的三项目标全部硬编码成 Header 固定字段,也不能按文件末尾固定倒数 offset 读取。
3. Corpus
当前 1.28.0 原版 corpus:
text
含 secondaryConditions 的 BTL = 398
每个相关文件记录数 = 2
SSecondaryConditionArgs 总数 = 796每条消息都显式携带:
text
condition
num60 个 legend*.btl 全部满足:
text
secondaryConditions.Count == 2
BattleMode == 11
BattleIdent == 184. 原版 loader consumer
FUN_00339B58 将每条:
text
condition
num复制到 Battle 的 secondary condition 表。
因此这两个字段不只是 protobuf schema 已知,而是 BTL loader consumer 也已 Confirmed。
5. Legend 三行目标
FUN_003991C8 在 BattleIdent == 18 的 Legend 包装路径中:
text
objective 1 <- Header 主目标
objective 2 <- secondaryConditions[0]
objective 3 <- secondaryConditions[1]相关 consumer:
| 函数 | 已恢复作用 |
|---|---|
FUN_003999B8 | 格式化主目标 |
FUN_00399A88 | 按 secondary condition/num 格式化目标 |
FUN_0033DAE4 | 按索引取得 secondary condition;当前消费索引 0/1 |
FUN_0033DB94 | 读取目标当前进度,用于 (current/required) |
FUN_003991C8 | Legend/Ident18 三行目标和皇冠区域 UI 包装 |
因此“两个 secondary 是正式显示、正式计数的额外目标”是 Confirmed。
6. 已闭合 condition 子语义
如果只需要查已知 condition 数值,可看 ExtensionArea 值域速查。
目前至少有以下 condition 的当前进度 consumer 已由 native + 文本资源互相支持:
| condition | 当前安全语义 | 状态 |
|---|---|---|
9 | 玩家阵营当前存活的关键单位数量 | Confirmed for audited consumer |
13 | 第一人控侧当前存活单位数量 | Confirmed for audited consumer |
这不代表全部 secondary condition enum 已经闭合。其他 condition 值仍应按原版 consumer 逐项恢复,而不是从社区标签补全。
7. num
num 是对应 secondary condition 的目标参数/要求数量,并由目标格式化和进度显示消费。
安全结论:
text
condition -> 选择目标/进度规则
num -> 该规则的条件参数/目标数量不同 condition 是否对 num 使用完全相同的比较方式,必须由各 condition branch 单独证明。
8. 皇冠、奖励与整场胜负边界
当前已经确认:
- Header 主目标仍进入公共主胜负计算链;
- 两条 secondary 有独立目标显示;
- 两条 secondary 有当前进度/满足度读取;
- Legend UI 在同一区域展示三项目标与皇冠表现。
但以下结论仍未闭合:
text
每条 secondary 是否严格对应一枚皇冠 Partial
secondary 是否永远只影响星级/皇冠 Unknown
secondary 失败是否绝不导致整场失败 Unknown
secondary 是结束时检查还是保留历史失败状态 Unknown
主目标提前完成与 secondary/敌军全灭优先级 Unknown因此 不能 在 Runtime 中无条件实现:
“次要目标只影响皇冠,不会影响胜负。”
该说法目前超出证据范围。
9. Writer 边界
当前:
text
Extension semantic writer = NoGo
variable-length save = NoGo即使 condition/num schema 与 consumer 已知,也仍缺:
- 完整 condition 值域;
- condition-specific 参数约束;
- 结果合成规则;
- protobuf reserialize compatibility。
所以不授权直接增删/修改 secondaryConditions 后重新生成 Tail。
10. 主要证据
text
reports/btl_v3_tail_legend_recovery.md
reports/btl_v3_secondary_conditions_matrix.csv
reconstruction/docs/btl_editor_round39_extension_descriptor_complete_schema_recovery_report.md
reconstruction/docs/btl_editor_round40_extension_native_consumer_coverage_recovery_report.md