diff --git a/Content.Server/Ame/AmeNodeGroup.cs b/Content.Server/Ame/AmeNodeGroup.cs index bb482f7726b622..f4eb1bb302f481 100644 --- a/Content.Server/Ame/AmeNodeGroup.cs +++ b/Content.Server/Ame/AmeNodeGroup.cs @@ -169,11 +169,13 @@ public float InjectFuel(int fuel, out bool overloading) public float CalculatePower(int fuel, int cores) { // Balanced around a single core AME with injection level 2 producing 120KW. - // Overclocking yields diminishing returns until it evens out at around 360KW. + // Two core with four injection is 150kW. Two core with two injection is 90kW. - // The adjustment for cores make it so that a 1 core AME at 2 injections is better than a 2 core AME at 2 injections. - // However, for the relative amounts for each (1 core at 2 and 2 core at 4), more cores has more output. - return 200000f * MathF.Log10(fuel * fuel) * MathF.Pow(0.75f, cores - 1); + // Increasing core count creates diminishing returns, increasing injection amount increases + // Unlike the previous solution, increasing fuel and cores always leads to an increase in power, even if by very small amounts. + // Increasing core count without increasing fuel always leads to reduced power as well. + // At 18+ cores and 2 inject, the power produced is less than 0, the Max ensures the AME can never produce "negative" power. + return MathF.Max(200000f * MathF.Log10(2 * fuel * MathF.Pow(cores, (float)-0.5)), 0); } public int GetTotalStability()