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)}");