farming-weight 0.4.7 → 0.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ import { Rarity } from "../constants/reforges";
3
3
  export interface LevelingStats {
4
4
  level: number;
5
5
  ratio: number;
6
+ maxed: boolean;
6
7
  progress: number;
7
8
  goal?: number;
8
9
  next?: number;
@@ -13,11 +14,12 @@ export interface LevelingStats {
13
14
  * @param exp Current experience/progress
14
15
  * @param expRequired Array of the amount of experience required to reach each level, not cumulative
15
16
  * @param maxLevel Maximum level to return
17
+ * @param overflow Calculate overflow levels
16
18
  */
17
- export declare function getLevel(exp: number, expRequired: number[], maxLevel?: number): LevelingStats;
19
+ export declare function getLevel(exp: number, expRequired: number[], maxLevel?: number, overflow?: boolean): LevelingStats;
18
20
  export declare function getGardenLevel(exp: number): LevelingStats;
19
- export declare function getCropMilestones(crops: Record<string, number | string>): Record<Crop, LevelingStats>;
20
- export declare function getCropMilestoneLevels(crops: Record<string, number | string | null | undefined>): Record<Crop, number>;
21
+ export declare function getCropMilestones(crops: Record<string, number | string>, overflow?: boolean): Record<Crop, LevelingStats>;
22
+ export declare function getCropMilestoneLevels(crops: Record<string, number | string | null | undefined>, overflow?: boolean): Record<Crop, number>;
21
23
  export declare function getCropUpgrades(upgrades: Record<string, number>): Record<Crop, number>;
22
24
  export declare function getGardenVisitor(visitor: string): import("../constants/garden").GardenVisitor | undefined;
23
25
  export interface GardenVisitorStats {
@@ -8,32 +8,45 @@ const names_1 = require("./names");
8
8
  * @param exp Current experience/progress
9
9
  * @param expRequired Array of the amount of experience required to reach each level, not cumulative
10
10
  * @param maxLevel Maximum level to return
11
+ * @param overflow Calculate overflow levels
11
12
  */
12
- function getLevel(exp, expRequired, maxLevel) {
13
+ function getLevel(exp, expRequired, maxLevel, overflow = false) {
13
14
  let level = 0;
14
15
  let xp = exp;
15
- let maxed = false;
16
+ let maxed = true;
16
17
  for (const xpRequired of expRequired) {
17
18
  if ((xp -= xpRequired) > 0) {
18
19
  level++;
19
20
  if (level === maxLevel) {
20
- maxed = true;
21
21
  break;
22
22
  }
23
23
  }
24
24
  else {
25
+ maxed = false;
25
26
  xp += xpRequired;
26
27
  break;
27
28
  }
28
29
  }
29
- const nextReq = expRequired[level];
30
+ const overflowing = !maxLevel && maxed && overflow;
31
+ if (overflowing) {
32
+ const overflowReq = expRequired.at(-1) ?? 0;
33
+ if (overflowReq) {
34
+ const overflowLevels = Math.floor(xp / overflowReq);
35
+ level += overflowLevels;
36
+ xp -= overflowLevels * overflowReq;
37
+ }
38
+ }
39
+ const nextReq = (overflowing)
40
+ ? expRequired.at(-1) ?? 0
41
+ : expRequired[level];
30
42
  return {
31
43
  total: exp,
32
44
  level: level,
33
- ratio: maxed ? 1 : xp / (nextReq ?? xp),
45
+ maxed: maxed,
46
+ ratio: maxed && !overflowing ? 1 : xp / (nextReq ?? xp),
34
47
  progress: xp,
35
- goal: maxed ? undefined : nextReq,
36
- next: maxed ? undefined : level + 1,
48
+ goal: maxed && !overflowing ? undefined : nextReq,
49
+ next: maxed && !overflowing ? undefined : level + 1,
37
50
  };
38
51
  }
39
52
  exports.getLevel = getLevel;
@@ -41,26 +54,26 @@ function getGardenLevel(exp) {
41
54
  return getLevel(exp, garden_1.GARDEN_EXP_REQUIRED);
42
55
  }
43
56
  exports.getGardenLevel = getGardenLevel;
44
- function getCropMilestones(crops) {
57
+ function getCropMilestones(crops, overflow = false) {
45
58
  const milestones = {};
46
59
  for (const [cropName, collection] of Object.entries(crops)) {
47
60
  const crop = (0, names_1.getCropFromName)(cropName);
48
61
  const col = typeof collection === 'string' ? parseInt(collection) : collection;
49
62
  if (isNaN(col) || !crop)
50
63
  continue;
51
- milestones[crop] = getLevel(col, garden_1.CROP_MILESTONES[crop]);
64
+ milestones[crop] = getLevel(col, garden_1.CROP_MILESTONES[crop], undefined, overflow);
52
65
  }
53
66
  return milestones;
54
67
  }
55
68
  exports.getCropMilestones = getCropMilestones;
56
- function getCropMilestoneLevels(crops) {
69
+ function getCropMilestoneLevels(crops, overflow = false) {
57
70
  const milestones = {};
58
71
  for (const [cropName, collection] of Object.entries(crops)) {
59
72
  const crop = (0, names_1.getCropFromName)(cropName);
60
73
  const col = typeof collection === 'string' ? parseInt(collection) : collection ?? NaN;
61
74
  if (isNaN(col) || !crop)
62
75
  continue;
63
- milestones[crop] = getLevel(col, garden_1.CROP_MILESTONES[crop]).level;
76
+ milestones[crop] = getLevel(col, garden_1.CROP_MILESTONES[crop], undefined, overflow).level;
64
77
  }
65
78
  return milestones;
66
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"garden.js","sourceRoot":"","sources":["../../src/util/garden.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"garden.js","sourceRoot":"","sources":["../../src/util/garden.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "farming-weight",
3
- "version": "0.4.7",
3
+ "version": "0.4.9",
4
4
  "description": "Tools for calculating farming weight and fortune in Hypixel Skyblock",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",