Change AddAchievementPoints to account for overflow and underflow

This is for minisaurs in WoJ, but I think it would be a good idea in general, so I didn't limit it to WoJ.

The issue happens because if you buy medicine for minisaurs. It takes away one coin, and so if you already have 0 coins, the server currently returns your coin count as int.MaxValue.

This is tested in WoJ 1.1.0 and 1.21.0. I tested buying, overflowing, underflowing, using commands with big and negative values and playing games.
This commit is contained in:
YesntSoup 2024-09-08 18:56:03 -04:00 committed by GitHub
parent 5173f093b6
commit 19f3f697ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -82,7 +82,7 @@ namespace sodoff.Services {
viking.AchievementPoints.Add(xpPoints); viking.AchievementPoints.Add(xpPoints);
} }
int initialPoints = xpPoints.Value; int initialPoints = xpPoints.Value;
xpPoints.Value += value ?? 0; xpPoints.Value += value ?? 0;
if (value > 0 && initialPoints > xpPoints.Value) { if (value > 0 && initialPoints > xpPoints.Value) {