ai真是太好用了。
f:\Games\CPP2IL\diffable_cs\DiffableCs\Assembly-CSharp\TSKBattleCalculationManager.cs#L220-220 ,ghidra中解析出来是这样 c:\Users\MR\AppData\Roaming\Trae CN\User\workspaceStorage\27af8ecb3076795b1841f0786ba82e9d\long-text\home\mvbaik9b-52mf\__ulonglon....txt 。我想知道你能还原得到GetBaseExGaugeRate的值后又做了什么数学运算吗?
我这样问,它还真的很简单就得出了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| int exGaugeRate = data.GetBaseExGaugeRate();
// --- 累计 6 类技能效果的加成值 ---
int bonus = 0;
foreach (var s in data.GetSkillEffect(SkillType.ExRateUp)) bonus += s.SkillValue1; // +0x34
foreach (var s in data.GetSkillEffect(SkillType.ExRateDown)) bonus -= s.SkillValue1; // -0x34
foreach (var s in data.GetSkillEffect(SkillType.ExRateUpAllyCount)) bonus += s.SkillEffectValue; // +0x70
foreach (var s in data.GetSkillEffect(SkillType.ExRateUpAttrOut)) bonus += s.SkillEffectValue; // +0x70
foreach (var s in data.GetSkillEffect(SkillType.ExRateUpSkillCount)) bonus += s.SkillEffectValue; // +0x70
foreach (var s in data.GetSkillEffect(SkillType.ExRateUpSpecific)) bonus += s.SkillValue1; // +0x34
// --- 上限裁剪 ---
bonus = Math.Min(bonus, 300);
// --- 与基础值合成 ---
int total = Math.Max(0, exGaugeRate + bonus);
// --- 最终公式 ---
int result = (int)(baseValue * (1.0f + (total - 50.0f) / 150.0f));
|
baseValue=40对应return Math.ceil((100 + this.exUp) / 3.75)。