diff --git a/src/NosCore.Algorithm/Constants.cs b/src/NosCore.Algorithm/Constants.cs index def9677..ff97081 100644 --- a/src/NosCore.Algorithm/Constants.cs +++ b/src/NosCore.Algorithm/Constants.cs @@ -20,6 +20,7 @@ internal class Constants internal const byte MaxShellOptionLevel = 12; internal const byte MinShellValueLevel = 30; internal const byte MaxSpPerfection = 100; + internal const byte MaxSumLevel = 5; internal static readonly int ClassCount = Enum.GetNames(typeof(CharacterClassType)).Length; } } diff --git a/src/NosCore.Algorithm/SumService/ISumService.cs b/src/NosCore.Algorithm/SumService/ISumService.cs index 4b30bf9..ebe4464 100644 --- a/src/NosCore.Algorithm/SumService/ISumService.cs +++ b/src/NosCore.Algorithm/SumService/ISumService.cs @@ -11,6 +11,11 @@ namespace NosCore.Algorithm.SumService /// public interface ISumService { + /// + /// Gets the highest level the sum tables cover; a combined level above it cannot be summed + /// + byte MaxLevel => Constants.MaxSumLevel; + /// /// Gets the success rate for a summoning operation at a specific level /// diff --git a/src/NosCore.Algorithm/SumService/SumService.cs b/src/NosCore.Algorithm/SumService/SumService.cs index 8e6f5d2..c20411b 100644 --- a/src/NosCore.Algorithm/SumService/SumService.cs +++ b/src/NosCore.Algorithm/SumService/SumService.cs @@ -11,6 +11,9 @@ namespace NosCore.Algorithm.SumService /// public class SumService : ISumService { + /// + public byte MaxLevel => Constants.MaxSumLevel; + internal static readonly byte[] SuccessRate = { 100, 100, 85, 70, 50, 20 }; internal static readonly ushort[] Price = { 1500, 3000, 6000, 12000, 24000, 48000 }; internal static readonly byte[] SandCost = { 5, 10, 15, 20, 25, 30 }; diff --git a/test/NosCore.Algorithm.Tests/DocumentationTest.cs b/test/NosCore.Algorithm.Tests/DocumentationTest.cs index 19ccd2f..1dc91d9 100644 --- a/test/NosCore.Algorithm.Tests/DocumentationTest.cs +++ b/test/NosCore.Algorithm.Tests/DocumentationTest.cs @@ -417,7 +417,7 @@ public void SumDocumentation() var resultBuilder = new StringBuilder($"# Sum Table"); resultBuilder.AppendLine(); - for (byte i = 0; i < 6; i++) + for (byte i = 0; i <= sumService.MaxLevel; i++) { resultBuilder.AppendLine( $"- Sum {i + 1} - Rate: {sumService.GetSuccessRate(i)}% - Cost: {sumService.GetPrice(i)} - Sand: {sumService.GetSandCost(i)}");