调整敌人经验配置、修复百分率属性问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user