diff --git a/source/LootDumpProcessor/LootDumpProcessor.csproj b/source/LootDumpProcessor/LootDumpProcessor.csproj
index c4bbc05..fb0ee1b 100644
--- a/source/LootDumpProcessor/LootDumpProcessor.csproj
+++ b/source/LootDumpProcessor/LootDumpProcessor.csproj
@@ -1,36 +1,35 @@
-
- Exe
- net8.0
- enable
- enable
- true
- 1
- true
-
+
+ Exe
+ net8.0
+ enable
+ enable
+ true
+ 1
+ true
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
- Always
-
-
- Always
-
-
- Always
-
-
+
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
diff --git a/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/LooseLootProcessor.cs b/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/LooseLootProcessor.cs
index e15eda0..13be903 100644
--- a/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/LooseLootProcessor.cs
+++ b/source/LootDumpProcessor/Process/Processor/v2/LooseLootProcessor/LooseLootProcessor.cs
@@ -6,7 +6,6 @@ using LootDumpProcessor.Storage;
using LootDumpProcessor.Storage.Collections;
using LootDumpProcessor.Utils;
using Microsoft.Extensions.Logging;
-using NumSharp;
namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor
{
@@ -61,7 +60,7 @@ namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor
)
{
var config = LootDumpProcessorContext.GetConfig();
- var spawnPointTolerance = config.ProcessorConfig.SpawnPointToleranceForForced / 100;
+ var spawnPointTolerance = config.ProcessorConfig.SpawnPointToleranceForForced / 100.0;
var looseLootDistribution = new LooseLootRoot();
var probabilities = new Dictionary();
@@ -73,9 +72,9 @@ namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor
probabilities[itemId] = (double)count / mapCount;
}
- var spawnPointCount = looseLootCountsItem.MapSpawnpointCount.Select(Convert.ToDouble);
- var initialMean = np.mean(np.array(spawnPointCount)).ToArray().First();
- var tolerancePercentage = config.ProcessorConfig.LooseLootCountTolerancePercentage / 100;
+ var spawnPointCount = looseLootCountsItem.MapSpawnpointCount.Select(Convert.ToDouble).ToList();
+ var initialMean = CalculateMean(spawnPointCount);
+ var tolerancePercentage = config.ProcessorConfig.LooseLootCountTolerancePercentage / 100.0;
var highThreshold = initialMean * (1 + tolerancePercentage);
looseLootCountsItem.MapSpawnpointCount = looseLootCountsItem.MapSpawnpointCount
@@ -84,8 +83,8 @@ namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor
looseLootDistribution.SpawnPointCount = new SpawnPointCount
{
- Mean = np.mean(np.array(looseLootCountsItem.MapSpawnpointCount)),
- Std = np.std(np.array(looseLootCountsItem.MapSpawnpointCount))
+ Mean = CalculateMean(looseLootCountsItem.MapSpawnpointCount.Select(Convert.ToDouble).ToList()),
+ Std = CalculateStandardDeviation(looseLootCountsItem.MapSpawnpointCount.Select(Convert.ToDouble).ToList())
};
looseLootDistribution.SpawnPointsForced = new List();
looseLootDistribution.SpawnPoints = new List();
@@ -227,5 +226,21 @@ namespace LootDumpProcessor.Process.Processor.v2.LooseLootProcessor
return looseLootDistribution;
}
+
+ private double CalculateMean(IReadOnlyList numbers)
+ {
+ if (!numbers.Any()) return 0;
+
+ return numbers.Average();
+ }
+
+ private double CalculateStandardDeviation(IReadOnlyList numbers)
+ {
+ if (numbers.Count == 0) return 0;
+
+ var mean = CalculateMean(numbers);
+ var variance = numbers.Sum(num => Math.Pow(num - mean, 2)) / numbers.Count;
+ return Math.Sqrt(variance);
+ }
}
}
\ No newline at end of file