steamutils 1.4.96 → 1.4.98

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/utils.js +37 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "steamutils",
3
- "version": "1.4.96",
3
+ "version": "1.4.98",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "alpha-common-utils": "^1.0.6",
package/utils.js CHANGED
@@ -985,3 +985,40 @@ export async function loginWithCredentials({ username, password, timeoutMs = 120
985
985
  }
986
986
  });
987
987
  }
988
+
989
+ export function calculateAccountXP(currentXp, xpEarnedThisWeek, xpEarned, nextXp) {
990
+ return (
991
+ (() => {
992
+ if (typeof nextXp !== "number" || !Number.isFinite(nextXp)) {
993
+ return;
994
+ }
995
+
996
+ currentXp = currentXp || 0;
997
+ if (currentXp === nextXp) {
998
+ return;
999
+ }
1000
+
1001
+ const update = { currentXp: nextXp };
1002
+ if (nextXp < currentXp) {
1003
+ update.xpExceed = Date.now();
1004
+ }
1005
+ const resetDay = getBonusXpTimeRefresh().format("YYYY-MM-DD");
1006
+ const isWeekReset = xpEarnedThisWeek !== resetDay;
1007
+ let xpEarnedThisRank = nextXp - currentXp;
1008
+ if (xpEarnedThisRank < 0) {
1009
+ xpEarnedThisRank += 5000;
1010
+ }
1011
+ if (isWeekReset) {
1012
+ update.xpEarnedThisWeek = resetDay;
1013
+ update.xpEarned = xpEarnedThisRank;
1014
+ } else {
1015
+ update.xpEarned = (xpEarned || 0) + xpEarnedThisRank;
1016
+ if (xpEarnedThisRank === 0) {
1017
+ return;
1018
+ }
1019
+ }
1020
+
1021
+ return update;
1022
+ })() || {}
1023
+ );
1024
+ }