Skip to content

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
num

60 个 legend*.btl 全部满足:

text
secondaryConditions.Count == 2
BattleMode == 11
BattleIdent == 18

4. 原版 loader consumer

FUN_00339B58 将每条:

text
condition
num

复制到 Battle 的 secondary condition 表。

因此这两个字段不只是 protobuf schema 已知,而是 BTL loader consumer 也已 Confirmed

5. Legend 三行目标

FUN_003991C8BattleIdent == 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_003991C8Legend/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