farming-weight 0.3.11 → 0.4.1

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.
Files changed (41) hide show
  1. package/README.md +15 -7
  2. package/dist/classes/farmingequipment.d.ts +24 -0
  3. package/dist/classes/farmingequipment.js +116 -0
  4. package/dist/classes/farmingequipment.js.map +1 -0
  5. package/dist/classes/player.d.ts +4 -3
  6. package/dist/classes/player.js +8 -8
  7. package/dist/classes/player.js.map +1 -1
  8. package/dist/classes/weightcalc.d.ts +12 -3
  9. package/dist/classes/weightcalc.js +43 -18
  10. package/dist/classes/weightcalc.js.map +1 -1
  11. package/dist/classes/weightcalc.test.d.ts +1 -0
  12. package/dist/classes/weightcalc.test.js +108 -0
  13. package/dist/classes/weightcalc.test.js.map +1 -0
  14. package/dist/constants/armor.d.ts +3 -1
  15. package/dist/constants/armor.js +99 -13
  16. package/dist/constants/armor.js.map +1 -1
  17. package/dist/constants/lotus.d.ts +1 -1
  18. package/dist/constants/lotus.js +26 -2
  19. package/dist/constants/lotus.js.map +1 -1
  20. package/dist/constants/pests.d.ts +20 -3
  21. package/dist/constants/pests.js +169 -46
  22. package/dist/constants/pests.js.map +1 -1
  23. package/dist/constants/tools.d.ts +2 -1
  24. package/dist/constants/tools.js +57 -14
  25. package/dist/constants/tools.js.map +1 -1
  26. package/dist/constants/upgrades.d.ts +18 -0
  27. package/dist/constants/upgrades.js +35 -0
  28. package/dist/constants/upgrades.js.map +1 -0
  29. package/dist/constants/weight.d.ts +4 -2
  30. package/dist/constants/weight.js +4 -2
  31. package/dist/constants/weight.js.map +1 -1
  32. package/dist/index.d.ts +5 -1
  33. package/dist/index.js +5 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/util/pests.d.ts +4 -0
  36. package/dist/util/pests.js +68 -0
  37. package/dist/util/pests.js.map +1 -0
  38. package/dist/util/pests.test.d.ts +1 -0
  39. package/dist/util/pests.test.js +27 -0
  40. package/dist/util/pests.test.js.map +1 -0
  41. package/package.json +8 -4
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uncountedCropsFromPests = exports.fortuneFromPestBestiary = exports.fortuneFromPests = void 0;
4
+ const pests_1 = require("../constants/pests");
5
+ function fortuneFromPests(pests) {
6
+ return pests_1.PEST_EXCHANGE_RATES[pests] ?? 0;
7
+ }
8
+ exports.fortuneFromPests = fortuneFromPests;
9
+ function fortuneFromPestBestiary(bestiaryKills) {
10
+ let reachedBrackets = 0;
11
+ const brackets = Object.entries(pests_1.KILLS_PER_PEST_BRACKET).sort((a, b) => b[1] - a[1]);
12
+ for (const pestId of pests_1.PEST_IDS) {
13
+ const kills = bestiaryKills[`pest_${pestId}_1`];
14
+ if (!kills)
15
+ continue;
16
+ // Find the highest reached bracket for this pest
17
+ const bracket = brackets.find((b) => +kills >= b[1]);
18
+ reachedBrackets += bracket ? +bracket[0] : 0;
19
+ }
20
+ return reachedBrackets * pests_1.FORTUNE_PER_PEST_BRACKET;
21
+ }
22
+ exports.fortuneFromPestBestiary = fortuneFromPestBestiary;
23
+ function uncountedCropsFromPests(pestKills) {
24
+ const crops = {};
25
+ const brackets = pests_1.PEST_COLLECTION_BRACKETS;
26
+ for (const pestId of pests_1.PEST_IDS) {
27
+ let kills = pestKills[`pest_${pestId}_1`];
28
+ if (!kills)
29
+ continue;
30
+ const crop = pests_1.PEST_TO_CROP[pestId];
31
+ if (!crop)
32
+ continue;
33
+ let pestsToCount = 0;
34
+ let totalDrops = 0;
35
+ for (let i = 0; i < brackets.length; i++) {
36
+ const bracket = brackets[i];
37
+ // Exit if there are no more pests to calculate
38
+ if (kills <= 0)
39
+ break;
40
+ const bracketCrops = pests_1.PEST_COLLECTION_ADJUSTMENTS[pestId][bracket] ?? 0;
41
+ // Use the last bracket for all remaining pests
42
+ if (i === brackets.length - 1) {
43
+ totalDrops += Math.ceil(bracketCrops * kills);
44
+ continue;
45
+ }
46
+ // Get the next bracket to find the maximum pests in the current bracket
47
+ const nextBracket = brackets.at(i + 1);
48
+ if (nextBracket === undefined)
49
+ break;
50
+ if (!Number.isInteger(nextBracket))
51
+ continue;
52
+ // Calculate the pests to count in the current bracket
53
+ pestsToCount = Math.min(nextBracket - pestsToCount, kills);
54
+ if (bracketCrops === 0) {
55
+ // If the value is 0, we don't need to calculate the drops
56
+ kills -= pestsToCount;
57
+ continue;
58
+ }
59
+ // Calculate the drops for the current bracket
60
+ kills -= pestsToCount;
61
+ totalDrops += Math.ceil(bracketCrops * pestsToCount);
62
+ }
63
+ crops[crop] = totalDrops;
64
+ }
65
+ return crops;
66
+ }
67
+ exports.uncountedCropsFromPests = uncountedCropsFromPests;
68
+ //# sourceMappingURL=pests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pests.js","sourceRoot":"","sources":["../../src/util/pests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const pests_1 = require("./pests");
5
+ const crops_1 = require("../constants/crops");
6
+ const pests_2 = require("../constants/pests");
7
+ (0, vitest_1.test)('Pest bestiary fortune', () => {
8
+ const bestiaryKills = {
9
+ pest_fly_1: 1,
10
+ pest_beetle_1: 2,
11
+ random_thing: 100
12
+ };
13
+ (0, vitest_1.expect)((0, pests_1.fortuneFromPestBestiary)(bestiaryKills)).toBeCloseTo(1.2);
14
+ });
15
+ (0, vitest_1.test)('Uncounted crops from pests', () => {
16
+ const bestiaryKills = {
17
+ pest_fly_1: 13414,
18
+ pest_beetle_1: 10,
19
+ pest_worm_1: 51,
20
+ };
21
+ const uncounted = (0, pests_1.uncountedCropsFromPests)(bestiaryKills);
22
+ (0, vitest_1.expect)(Object.values(uncounted)).toHaveLength(3);
23
+ (0, vitest_1.expect)(uncounted[crops_1.Crop.NetherWart]).toBe(0);
24
+ (0, vitest_1.expect)(uncounted[crops_1.Crop.Melon]).toBe(Math.ceil(pests_2.PEST_COLLECTION_ADJUSTMENTS[pests_2.Pest.Worm][50] ?? 0));
25
+ (0, vitest_1.expect)(uncounted[crops_1.Crop.Wheat]).toBe(311892563);
26
+ });
27
+ //# sourceMappingURL=pests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pests.test.js","sourceRoot":"","sources":["../../src/util/pests.test.ts"],"names":[],"mappings":";;AAAA,mCAAsC;AACtC,mCAA2E;AAC3E,8CAA0C;AAC1C,8CAAuE;AAEvE,IAAA,aAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;IAClC,MAAM,aAAa,GAAG;QACrB,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,GAAG;KACjB,CAAA;IAED,IAAA,eAAM,EAAC,IAAA,+BAAuB,EAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,4BAA4B,EAAE,GAAG,EAAE;IACvC,MAAM,aAAa,GAAG;QACrB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,EAAE;KACf,CAAA;IAED,MAAM,SAAS,GAAG,IAAA,+BAAuB,EAAC,aAAa,CAAC,CAAC;IAEzD,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjD,IAAA,eAAM,EAAC,SAAS,CAAC,YAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAA,eAAM,EAAC,SAAS,CAAC,YAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mCAA2B,CAAC,YAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAA,eAAM,EAAC,SAAS,CAAC,YAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "farming-weight",
3
- "version": "0.3.11",
3
+ "version": "0.4.1",
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",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
9
  "format": "prettier --write \"src/**/*.ts\"",
10
- "lint": "eslint"
10
+ "lint": "eslint",
11
+ "test": "vitest"
11
12
  },
12
13
  "keywords": [
13
14
  "farming",
@@ -22,7 +23,9 @@
22
23
  "type": "git",
23
24
  "url": "git+https://github.com/EliteFarmers/Tools.git"
24
25
  },
25
- "files": [ "dist/**/*" ],
26
+ "files": [
27
+ "dist/**/*"
28
+ ],
26
29
  "bugs": {
27
30
  "url": "https://github.com/EliteFarmers/Tools/issues"
28
31
  },
@@ -37,6 +40,7 @@
37
40
  "@typescript-eslint/eslint-plugin": "^6.7.4",
38
41
  "eslint": "^8.50.0",
39
42
  "prettier": "^3.0.3",
40
- "typescript": "^5.2.2"
43
+ "typescript": "^5.2.2",
44
+ "vitest": "^1.6.0"
41
45
  }
42
46
  }