Skip to content

ExtensionArea 值域速查 ​

状态:Authoritative Reference v1 / Semantic Closure Incomplete

本页集中列出 v3+ BattleExArgs 中已经有直接 consumer 证据的值域语义。对于“磁盘正样本缺失但 runtime consumer 已闭合”的字段,会明确拆开 disk-domain 与 runtime-semantic 状态。

SecondaryCondition condition ​

BattleExArgs.secondaryConditions[] 中:

proto
message SSecondaryConditionArgs {
    int32 condition = 1;
    int32 num = 2;
}

当前已闭合的 condition 子语义:

condition当前安全语义num状态
9玩家阵营当前存活的关键单位数量对应目标要求数量/参数Confirmed for audited progress consumer
13第一人控侧当前存活单位数量对应目标要求数量/参数Confirmed for audited progress consumer

这里的 Confirmed 只覆盖已经审计的目标显示/当前进度 consumer,不自动推出完整失败、皇冠、奖励或胜负合成。完整 condition enum 仍未闭合。

BattleArmyExArgs 的数值/状态字段 ​

字段当前值域 / runtime 信息状态
area1.30 当前 8467 条全部匹配至少一个固定 Unit 的全局 TileId;8409 唯一匹配、58 same-Tile 多匹配StrongEvidence reference domain
bynameId1.30 有 8467 条存在,8014 条非零;强证据指向 unit_name_<id> 显示覆盖StrongEvidence
tunnelFromArea1.30 有 8421 条显式字段且全 0,另 46 条缺省;runtime 为 ArmyFeature Type 0x59“隧道挖掘”的当前 link 来源全局 TileIdRuntimeSemanticsConfirmed / NoPositiveBtlCorpus
steelWillValue1.30 有 8405 条显式字段且全 0,另 62 条缺省;runtime 为“钢铁意志”叠层计数,每层额外 10 个百分点减伤,公式最多取 3 层RuntimeSemanticsConfirmed / NoPositiveBtlCorpus
legendArmyId1.30 有 8265 条存在,453 条非零;非零观察值仍为 1..10Partial

tunnelFromArea ​

原版 runtime owner FUN_00482AB0 由 ArmyFeature Type 0x59 / 89“隧道挖掘”路径调用。技能成功时,source/target 都按全局 Map TileId lookup,并在两个 Tile 的 +0x68 建立双向 link;随后:

text
Army+0x11C = sourceArea

因此 tunnelFromArea 是当前 tunnel link 的来源/起点全局 TileId。替换/清除旧 link 时,原版会用该字段找回起点,断开双方 Tile+0x68 互指并清零字段。

当前 disk corpus 仍无非零实例,所以非零 BTL authoring/save-load acceptance 还未建立;也不能在缺少额外证据时把它与 BattleCountryExArgs.tunnels/TunnelArgs 合并成同一数据结构。

steelWillValue ​

原版 runtime 字段:

text
BattleArmyExArgs.steelWillValue
-> ARM64 Army+0x174

原版 SkillSettings.Type 0x89 / 137 是:

text
钢铁意志

正常伤害 consumer:

text
stack = min(steelWillValue, 3)
damage factor = (100 - skill.field30 - 10 * stack) / 100

原版中文描述同时给出:

text
受到敌军攻击后额外增加10%减伤
持续1回合
最多叠加3次

所以 steelWillValue 的 runtime 业务语义已经闭合。fresh ARM64 1.28.0 native 还确认 FUN_0048157C 在统一单位回合维护中于 0x00481CF0 执行 STR WZR,[Army,#0x174],位于主动槽状态/CD 递减之后,因此一回合生命周期也已闭合。仍缺的是非零 BTL 正样本与 authoring/save-load acceptance。

注意 namespace:

text
SkillSettings.Type 0x89       = 钢铁意志
ArmyFeatureSettings.Type 0x89 = 火控雷达

不能因为数值相同而混为一项。

BattleArmyExArgs 的嵌套状态结构 ​

armyBuffs ​

proto
message SArmyBuffArgs {
    int32 buffId = 1;
    int32 round = 2;
    int32 countryIdx = 3;
    int32 value = 4;
}

原版 loader 会按 buffId 查 ArmyBuff definition;查不到就跳过该条。成功条目进入 Army+0x88..+0x98 的 0x18 stride runtime Buff vector:

text
+0x00 definition pointer
+0x08 round
+0x0C countryIdx
+0x10 value

value 还被正常 runtime Buff API 作为可累加 numeric payload 使用;round 在 FUN_0047A04C 中按“新值更大才刷新,相同 round 再比较 countryIdx”的规则维护。同 Type 不同 definition 则按 abs(definition+0x28) 的 priority-like 值决定是否替换。

但 BTL importer 本身不走这套 add/refresh 合并:FUN_00480CC8 对每条 lookup 成功的记录直接 append,因此同 Id/同 Type 的重复 BTL 记录在 loader 阶段可以形成多个独立 runtime entries。随后 FUN_00476E4C/FUN_0047A538 是派生状态 refresh;当前无证据表明它们会对 vector 去重。不要把正常 runtime producer 的替换策略误写成 BTL import 规则。

Android 1.30 的精确 stock 静态 gate audit 已把此前的一个 Unknown 闭合:FUN_00486220(1.30 ArmyEx importer)仍只要求 ArmyBuffSettings.Id lookup 成功;上层 FUN_0033BCCC 没有为 armyExs 增加 BattleMode gate,post-import FUN_0047C16C/FUN_0047F858 不做“不支持 Type”清理,native writer FUN_004861AC/FUN_00486524 也不按 Type/模式筛选。因此在已审计的 1.30 runtime load/post-load/native-save path 中,没有独立 ArmyBuff Type 白名单或 BattleMode acceptance 白名单。accepted plaintext 1.30 SO 在这些相关函数区间与 stock 逐字节一致。

countryIdx 已闭合为 CountryContainer+0x48 的 current/selected 容器索引。FUN_0047A824(Army,countryIdx) 只 tick 同一 countryIdx 的 Buff:有限 round >= 0 每次减 1,归零后删除;round = -1 / 0xFFFFFFFF 不递减。国家轮转 FUN_0033C724 使用同一 currentIndex 对战场对象执行该维护链。因此它是按 operation-country index 分区的 duration,而不是 Country.RecordId。

状态:

text
runtime structure/lifecycle = Confirmed
countryIdx identity = Confirmed CountryContainer index
disk positive BTL instance = 0
buffId runtime reference domain = Confirmed ArmyBuffSettings.Id
runtime Type/mode acceptance whitelist = None in audited Android 1.30 path
official/internal authoring UI candidate filtering = Unknown
Type-specific final gameplay consumption = Partial
editor writer = NoGo

armyStats ​

proto
message SArmyStatArgs {
    int32 statType = 1;
    int32 value = 2;
}

它进入 Army+0x198..+0x1A8 的 8-byte pair vector,并由:

text
FUN_00482438(Unit,key,value)  // upsert
FUN_0047D704(Unit,key)        // query

在其他 runtime 路径中作为 keyed state/status map 使用。

因此 armyStats 不能解释成“攻击/防御等基础面板属性覆盖”。Android 1.30 exact-stock 已把三个 helper 迁移为 FUN_00487B80 upsert、FUN_00482AD4 query、FUN_00488308 add/increment,并通过全 caller xref 直接观察到 key 1..15(其中 11..15 即 0x0B..0x0F)和 0x11;新回合维护 FUN_00486AD4 还重新生成 0x10,因此当前审计到的 namespace 至少覆盖 1..17。

当前最重要的闭合结果是:1=本回合击杀计数;4=Skill157 Wipe Out The North 击杀带来的再次行动概率累计(每杀 +20);6 -> 7=待下回合/当前回合的通用机动力正向 payload;8=Leclerc Division 的 LegendTactics Type28/Id10502 士气提升 recipient latch;9=Skill173 Marshall Plan 本回合 3 格内击杀奖励触发次数(最多 3 次,每次 +40 Industry/+4 Technology);10=Lightning Division 的 LegendTactics Type32/Id10602 Effect 投影槽,但 exact-stock 暂无 gameplay consumer;0x0B=ArmyFeature Type153 Aerial Countermeasures 的下回合机动力降低 payload,并在新回合投影为 Buff1641 Fuel Consumption: Reduced Mobility;0x0C=同一 Type153 的移动/恢复生命周期计数;0x0D=Buff1731 Disorganized 本回合已触发/禁止再施加锁;0x0F -> 0x10=Skill187 Ace Tank IV 击杀后“下回合机动力 +3”的 pending→active 传递;0x11=Buff1811 Lightning General 的 once-per-turn 再攻击已消费锁。2/3/5/0x0E 的既有 scoped 语义继续成立。

FUN_00486AD4 每轮先提取旧 key 6 / 0x0F / 0x0B,清空旧 map,再执行 min(key6,20) -> key7、key0x0F -> key0x10、key0x0B -> Buff1641.value;FUN_00482B10 最终 movement 直接把 key7/key0x10 的正值加到移动力,并读取 Type64/Fuel Consumption 状态做机动力扣减。8/9/0x0C 已进一步闭合到玩法/生命周期语义。10 的 producer 已精确绑定 Lightning Division -> LegendTactics Id10602/Type32/Effect20,但 exact-stock 统一 query helper 全 xref 和 direct stat-map 反扫均未发现 gameplay reader,因此状态改为 NoConsumerObserved,不能从 20 推断百分比或伤害公式。disk-tail field 6 正实例仍为 0,BTL authoring value domain 与异常值/save-load acceptance 继续 Unknown。

legendArmyId 边界 ​

legendArmyId 1..10 的数值出现范围不能直接转成 10 个完整玩法 enum 名称;当前只确认它参与 Legend formation/coordination identity。显示名称资源与完整 runtime coordination 规则仍应分开。

证据入口 ​

text
reconstruction/docs/btl-reference/extension/secondary_condition.md
reconstruction/docs/btl-reference/extension/army_ex.md
reports/btl_reference/android_1300_value_domain_polish.json
reports/btl_reference/army_extension_runtime_semantics.json
reports/btl_v3_tail_legend_recovery.md
reports/btl_v3_secondary_conditions_matrix.csv
reports/btl_editor/round40/delegated_consumers_decompile.txt
reports/raw_recovery/damage_rounds06_08/damage_formula_recovery_rounds06_08/round07_defender_skill_matrix.csv

除另有说明外,本站有权许可的原创文档采用 CC BY-SA 4.0;第三方内容除外。