调整敌人经验配置、修复百分率属性问题

This commit is contained in:
2026-09-24 23:03:59 +08:00
parent 02f4c67464
commit c61eb7fb68
5 changed files with 47 additions and 8 deletions
@@ -253,5 +253,30 @@ namespace VampireLike.Tests.Gameplay.EditMode
string multDesc = SepCore.CustomUtility.ItemDescUtility.Describe(multMod);
Assert.IsTrue(multDesc.Contains("x1.25"), $"Expected x1.25 in: {multDesc}");
}
[Test]
public void RateStats_CritChanceAndDodge_ZeroBaseValue_CorrectlyAccumulatesPercentAddModifiers()
{
var pipeline = new AttributePipeline();
// 1. 验证默认初值为 0
Assert.AreEqual(0f, pipeline.GetValue(StatType.CritChance), 1e-4f);
Assert.AreEqual(0f, pipeline.GetValue(StatType.Dodge), 1e-4f);
// 2. 模拟选了两个 +30% 暴击率奖励(即升级奖励 1015,ModifierType 为 PercentAdd 0.30)
pipeline.AddModifier(StatType.CritChance, new StatModifier(0.30f, ModifierType.PercentAdd));
Assert.AreEqual(0.30f, pipeline.GetValue(StatType.CritChance), 1e-4f);
pipeline.AddModifier(StatType.CritChance, new StatModifier(0.30f, ModifierType.PercentAdd));
Assert.AreEqual(0.60f, pipeline.GetValue(StatType.CritChance), 1e-4f); // 此时暴击率应正确累加到 60%
// 3. 模拟叠加 Flat 词条道具(如磨刀石 +27% 暴击率,ModifierType 为 Flat 0.27)
pipeline.AddModifier(StatType.CritChance, new StatModifier(0.27f, ModifierType.Flat));
Assert.AreEqual(0.87f, pipeline.GetValue(StatType.CritChance), 1e-4f); // 0.60 + 0.27 = 0.87
// 4. 验证闪避率同理:0 基础值下 PercentAdd 0.15 正确累加为 15% 闪避
pipeline.AddModifier(StatType.Dodge, new StatModifier(0.15f, ModifierType.PercentAdd));
Assert.AreEqual(0.15f, pipeline.GetValue(StatType.Dodge), 1e-4f);
}
}
}