- Adds a saveguard to the current profile being saved to prevent it from
being called again for a save if one is already underway, this is only
ever possible in my testing to happen on certain race conditions where a
user might quit the game at the same time as the server is saving, none
the less it's better if this is only processed one-time
- Wraps current timed saves in a try-catch so that if one profile errors
out during saving this does not completely stop the method from running.
The launcher currently thinks all profile deletions fail. This should
fix it
Testing:
- Create new profile (No need to log in)
- Delete new profile
Reasoning:
We need to invert the returned value of the `exists` call, which means
we need to actually await it instead of trying to return the inverse of
the promise
I did a quick search over the codebase for other places we have
Promise<boolean> return types, and didn't see any other similar issues
elsewhere
- Create a new RewardHelper class that contains the majority of shared
reward handling
- Move a lot of methods from QuestRewardHelper into RewardHelper
- Fix a bug in `applyMoneyBoost` that could result in compounding money
boost being applied across characters
- Route achievement reward handling through RewardHelper
- Create a new RewardHelper class that contains the majority of shared reward handling
- Move a lot of methods from QuestRewardHelper into RewardHelper
- Fix a bug in `applyMoneyBoost` that could result in compounding money boost being applied across characters
- Route achievement reward handling through RewardHelper