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.
- package/README.md +15 -7
- package/dist/classes/farmingequipment.d.ts +24 -0
- package/dist/classes/farmingequipment.js +116 -0
- package/dist/classes/farmingequipment.js.map +1 -0
- package/dist/classes/player.d.ts +4 -3
- package/dist/classes/player.js +8 -8
- package/dist/classes/player.js.map +1 -1
- package/dist/classes/weightcalc.d.ts +12 -3
- package/dist/classes/weightcalc.js +43 -18
- package/dist/classes/weightcalc.js.map +1 -1
- package/dist/classes/weightcalc.test.d.ts +1 -0
- package/dist/classes/weightcalc.test.js +108 -0
- package/dist/classes/weightcalc.test.js.map +1 -0
- package/dist/constants/armor.d.ts +3 -1
- package/dist/constants/armor.js +99 -13
- package/dist/constants/armor.js.map +1 -1
- package/dist/constants/lotus.d.ts +1 -1
- package/dist/constants/lotus.js +26 -2
- package/dist/constants/lotus.js.map +1 -1
- package/dist/constants/pests.d.ts +20 -3
- package/dist/constants/pests.js +169 -46
- package/dist/constants/pests.js.map +1 -1
- package/dist/constants/tools.d.ts +2 -1
- package/dist/constants/tools.js +57 -14
- package/dist/constants/tools.js.map +1 -1
- package/dist/constants/upgrades.d.ts +18 -0
- package/dist/constants/upgrades.js +35 -0
- package/dist/constants/upgrades.js.map +1 -0
- package/dist/constants/weight.d.ts +4 -2
- package/dist/constants/weight.js +4 -2
- package/dist/constants/weight.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/util/pests.d.ts +4 -0
- package/dist/util/pests.js +68 -0
- package/dist/util/pests.js.map +1 -0
- package/dist/util/pests.test.d.ts +1 -0
- package/dist/util/pests.test.js +27 -0
- package/dist/util/pests.test.js.map +1 -0
- 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
|
+
"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": [
|
|
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
|
}
|