The comment states the following, for calculating the Line variable:
Draw a line starting from when we only have 1k left and increasing linearly to double the current weight.
However, the value was not calculated as described. Instead, it would result in a negative value, which resulted in the function always returning 0 afterwards.
// Invariant: CurrentSize <= MaxSize - 200 // Invariant: CurrentWeight >= 0 int Line = (-2 * CurrentWeight) * (MaxSize - CurrentSize + 1000); // {Line <= 0}
This commit fixes the issue and linearly interpolates as described.