farming-weight 0.3.10 → 0.4.0

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 (46) hide show
  1. package/README.md +15 -7
  2. package/dist/classes/farmingarmor.d.ts +10 -6
  3. package/dist/classes/farmingarmor.js +49 -4
  4. package/dist/classes/farmingarmor.js.map +1 -1
  5. package/dist/classes/farmingequipment.d.ts +24 -0
  6. package/dist/classes/farmingequipment.js +116 -0
  7. package/dist/classes/farmingequipment.js.map +1 -0
  8. package/dist/classes/item.d.ts +1 -1
  9. package/dist/classes/player.d.ts +5 -4
  10. package/dist/classes/player.js +18 -10
  11. package/dist/classes/player.js.map +1 -1
  12. package/dist/classes/weightcalc.d.ts +12 -3
  13. package/dist/classes/weightcalc.js +43 -18
  14. package/dist/classes/weightcalc.js.map +1 -1
  15. package/dist/classes/weightcalc.test.d.ts +1 -0
  16. package/dist/classes/weightcalc.test.js +108 -0
  17. package/dist/classes/weightcalc.test.js.map +1 -0
  18. package/dist/constants/armor.d.ts +4 -1
  19. package/dist/constants/armor.js +111 -13
  20. package/dist/constants/armor.js.map +1 -1
  21. package/dist/constants/lotus.d.ts +1 -1
  22. package/dist/constants/lotus.js +26 -2
  23. package/dist/constants/lotus.js.map +1 -1
  24. package/dist/constants/pests.d.ts +20 -3
  25. package/dist/constants/pests.js +169 -46
  26. package/dist/constants/pests.js.map +1 -1
  27. package/dist/constants/tools.d.ts +2 -1
  28. package/dist/constants/tools.js +57 -14
  29. package/dist/constants/tools.js.map +1 -1
  30. package/dist/constants/upgrades.d.ts +19 -0
  31. package/dist/constants/upgrades.js +37 -0
  32. package/dist/constants/upgrades.js.map +1 -0
  33. package/dist/constants/weight.d.ts +4 -2
  34. package/dist/constants/weight.js +4 -2
  35. package/dist/constants/weight.js.map +1 -1
  36. package/dist/index.d.ts +5 -1
  37. package/dist/index.js +5 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/util/gems.js.map +1 -1
  40. package/dist/util/pests.d.ts +4 -0
  41. package/dist/util/pests.js +68 -0
  42. package/dist/util/pests.js.map +1 -0
  43. package/dist/util/pests.test.d.ts +1 -0
  44. package/dist/util/pests.test.js +27 -0
  45. package/dist/util/pests.test.js.map +1 -0
  46. package/package.json +46 -42
@@ -0,0 +1,19 @@
1
+ import { GearSlot } from "./armor";
2
+ import { Crop } from "./crops";
3
+ import { FARMING_TOOLS } from "./tools";
4
+ export declare enum UpgradeReason {
5
+ Standard = "standard",
6
+ DeadEnd = "dead_end",
7
+ Situational = "situational"
8
+ }
9
+ export interface Upgrade {
10
+ id: string;
11
+ reason: UpgradeReason;
12
+ why?: string;
13
+ }
14
+ export interface InitialItems {
15
+ tools: Partial<Record<Crop, keyof typeof FARMING_TOOLS>>;
16
+ armor: Record<GearSlot, string | string[]>;
17
+ pets: string[];
18
+ }
19
+ export declare const INITIAL_ITEMS: InitialItems;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INITIAL_ITEMS = exports.UpgradeReason = void 0;
4
+ const armor_1 = require("./armor");
5
+ const crops_1 = require("./crops");
6
+ var UpgradeReason;
7
+ (function (UpgradeReason) {
8
+ UpgradeReason["Standard"] = "standard";
9
+ UpgradeReason["DeadEnd"] = "dead_end";
10
+ UpgradeReason["Situational"] = "situational";
11
+ })(UpgradeReason || (exports.UpgradeReason = UpgradeReason = {}));
12
+ exports.INITIAL_ITEMS = {
13
+ tools: {
14
+ [crops_1.Crop.Cactus]: 'CACTUS_KNIFE',
15
+ [crops_1.Crop.CocoaBeans]: 'COCO_CHOPPER',
16
+ [crops_1.Crop.Carrot]: 'THEORETICAL_HOE_CARROT_1',
17
+ [crops_1.Crop.Melon]: 'MELON_DICER',
18
+ [crops_1.Crop.Mushroom]: 'FUNGI_CUTTER',
19
+ [crops_1.Crop.NetherWart]: 'THEORETICAL_HOE_WARTS_1',
20
+ [crops_1.Crop.Potato]: 'THEORETICAL_HOE_POTATO_1',
21
+ [crops_1.Crop.Pumpkin]: 'PUMPKIN_DICER',
22
+ [crops_1.Crop.SugarCane]: 'THEORETICAL_HOE_CANE_1',
23
+ [crops_1.Crop.Wheat]: 'THEORETICAL_HOE_WHEAT_1'
24
+ },
25
+ armor: {
26
+ [armor_1.GearSlot.Boots]: ['MELON_BOOTS', 'FARMER_BOOTS', 'RANCHERS_BOOTS'],
27
+ [armor_1.GearSlot.Leggings]: 'MELON_LEGGINGS',
28
+ [armor_1.GearSlot.Chestplate]: 'MELON_CHESTPLATE',
29
+ [armor_1.GearSlot.Helmet]: 'MELON_HELMET',
30
+ [armor_1.GearSlot.Necklace]: 'LOTUS_NECKLACE',
31
+ [armor_1.GearSlot.Cloak]: 'LOTUS_CLOAK',
32
+ [armor_1.GearSlot.Belt]: 'LOTUS_BELT',
33
+ [armor_1.GearSlot.Gloves]: 'LOTUS_BRACELET',
34
+ },
35
+ pets: ['ELEPHANT', 'MOOSHROOM_COW']
36
+ };
37
+ //# sourceMappingURL=upgrades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrades.js","sourceRoot":"","sources":["../../src/constants/upgrades.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,mCAA+B;AAG/B,IAAY,aAIX;AAJD,WAAY,aAAa;IACxB,sCAAqB,CAAA;IACrB,qCAAoB,CAAA;IACpB,4CAA2B,CAAA;AAC5B,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAcY,QAAA,aAAa,GAAiB;IAC1C,KAAK,EAAE;QACN,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,cAAc;QAC7B,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,cAAc;QACjC,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,0BAA0B;QACzC,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,aAAa;QAC3B,CAAC,YAAI,CAAC,QAAQ,CAAC,EAAE,cAAc;QAC/B,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,yBAAyB;QAC5C,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,0BAA0B;QACzC,CAAC,YAAI,CAAC,OAAO,CAAC,EAAE,eAAe;QAC/B,CAAC,YAAI,CAAC,SAAS,CAAC,EAAE,wBAAwB;QAC1C,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,yBAAyB;KACvC;IACD,KAAK,EAAE;QACN,CAAC,gBAAQ,CAAC,KAAK,CAAC,EAAE,CAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAE;QACrE,CAAC,gBAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB;QACrC,CAAC,gBAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB;QACzC,CAAC,gBAAQ,CAAC,MAAM,CAAC,EAAE,cAAc;QACjC,CAAC,gBAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB;QACrC,CAAC,gBAAQ,CAAC,KAAK,CAAC,EAAE,aAAa;QAC/B,CAAC,gBAAQ,CAAC,IAAI,CAAC,EAAE,YAAY;QAC7B,CAAC,gBAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB;KACnC;IACD,IAAI,EAAE,CAAE,UAAU,EAAE,eAAe,CAAE;CACrC,CAAC"}
@@ -5,9 +5,11 @@ export declare const BONUS_WEIGHT: {
5
5
  readonly Farming60Bonus: 250;
6
6
  readonly Farming50Bonus: 100;
7
7
  readonly AnitaBuffBonusMultiplier: 2;
8
- readonly MaxMedalsCounted: 1000;
9
8
  readonly GoldMedalRewardInterval: 50;
10
- readonly WeightPerGoldMedal: 0.5;
11
9
  readonly MinionRewardTier: 12;
12
10
  readonly MinionRewardWeight: 5;
11
+ readonly MaxMedalsCounted: 1000;
12
+ readonly WeightPerDiamondMedal: 0.75;
13
+ readonly WeightPerPlatinumMedal: 0.5;
14
+ readonly WeightPerGoldMedal: 0.25;
13
15
  };
@@ -32,10 +32,12 @@ exports.BONUS_WEIGHT = {
32
32
  Farming60Bonus: 250,
33
33
  Farming50Bonus: 100,
34
34
  AnitaBuffBonusMultiplier: 2,
35
- MaxMedalsCounted: 1000,
36
35
  GoldMedalRewardInterval: 50,
37
- WeightPerGoldMedal: 0.5,
38
36
  MinionRewardTier: 12,
39
37
  MinionRewardWeight: 5,
38
+ MaxMedalsCounted: 1000,
39
+ WeightPerDiamondMedal: 0.75,
40
+ WeightPerPlatinumMedal: 0.5,
41
+ WeightPerGoldMedal: 0.25,
40
42
  };
41
43
  //# sourceMappingURL=weight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"weight.js","sourceRoot":"","sources":["../../src/constants/weight.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,mCAAmC;AACtB,QAAA,WAAW,GAAyB;IAChD,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,UAAU;IACzB,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,UAAU;IACzB,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,UAAU;IAC7B,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,UAAU;IACxB,CAAC,YAAI,CAAC,QAAQ,CAAC,EAAE,SAAS;IAC1B,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,OAAO;IAC1B,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,OAAO;IACtB,CAAC,YAAI,CAAC,OAAO,CAAC,EAAE,SAAS;IACzB,CAAC,YAAI,CAAC,SAAS,CAAC,EAAE,OAAO;IACzB,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,OAAO;IACrB,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,0CAA0C;CAC3D,CAAC;AAEW,QAAA,eAAe,GAAsB;IACjD,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,UAAU;IACV,aAAa;IACb,UAAU;IACV,WAAW;IACX,eAAe;IACf,iBAAiB;CACR,CAAC;AAEE,QAAA,YAAY,GAAG;IAC3B,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,wBAAwB,EAAE,CAAC;IAC3B,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,EAAE;IAC3B,kBAAkB,EAAE,GAAG;IACvB,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,CAAC;CACZ,CAAC"}
1
+ {"version":3,"file":"weight.js","sourceRoot":"","sources":["../../src/constants/weight.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,mCAAmC;AACtB,QAAA,WAAW,GAAyB;IAChD,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,UAAU;IACzB,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,UAAU;IACzB,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,UAAU;IAC7B,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,UAAU;IACxB,CAAC,YAAI,CAAC,QAAQ,CAAC,EAAE,SAAS;IAC1B,CAAC,YAAI,CAAC,UAAU,CAAC,EAAE,OAAO;IAC1B,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,OAAO;IACtB,CAAC,YAAI,CAAC,OAAO,CAAC,EAAE,SAAS;IACzB,CAAC,YAAI,CAAC,SAAS,CAAC,EAAE,OAAO;IACzB,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,OAAO;IACrB,CAAC,YAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,0CAA0C;CAC3D,CAAC;AAEW,QAAA,eAAe,GAAsB;IACjD,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,UAAU;IACV,aAAa;IACb,UAAU;IACV,WAAW;IACX,eAAe;IACf,iBAAiB;CACR,CAAC;AAEE,QAAA,YAAY,GAAG;IAC3B,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,wBAAwB,EAAE,CAAC;IAC3B,uBAAuB,EAAE,EAAE;IAC3B,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,CAAC;IACrB,gBAAgB,EAAE,IAAI;IACtB,qBAAqB,EAAE,IAAI;IAC3B,sBAAsB,EAAE,GAAG;IAC3B,kBAAkB,EAAE,IAAI;CACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,10 +2,10 @@ export * from './classes/farmingarmor.js';
2
2
  export * from './classes/farmingtool.js';
3
3
  export * from './classes/farmingpet.js';
4
4
  export * from './classes/farmingaccessory.js';
5
+ export * from './classes/farmingequipment.js';
5
6
  export * from './classes/item.js';
6
7
  export * from './classes/player.js';
7
8
  export * from './classes/weightcalc.js';
8
- export * from './classes/lotusgear.js';
9
9
  export * from './constants/armor.js';
10
10
  export * from './constants/crops.js';
11
11
  export * from './constants/reforges.js';
@@ -16,11 +16,15 @@ export * from './constants/weight.js';
16
16
  export * from './constants/pests.js';
17
17
  export * from './constants/pets.js';
18
18
  export * from './constants/personalbests.js';
19
+ export * from './constants/lotus.js';
20
+ export * from './constants/upgrades.js';
19
21
  export * from './util/itemstats.js';
20
22
  export * from './util/jacob.js';
21
23
  export * from './util/names.js';
22
24
  export * from './util/skyblocktime.js';
23
25
  export * from './util/ratecalc.js';
26
+ export * from './util/lore.js';
27
+ export * from './util/pests.js';
24
28
  export * from './crops/special.js';
25
29
  export * from './crops/pumpkin.js';
26
30
  export * from './crops/melon.js';
package/dist/index.js CHANGED
@@ -18,10 +18,10 @@ __exportStar(require("./classes/farmingarmor.js"), exports);
18
18
  __exportStar(require("./classes/farmingtool.js"), exports);
19
19
  __exportStar(require("./classes/farmingpet.js"), exports);
20
20
  __exportStar(require("./classes/farmingaccessory.js"), exports);
21
+ __exportStar(require("./classes/farmingequipment.js"), exports);
21
22
  __exportStar(require("./classes/item.js"), exports);
22
23
  __exportStar(require("./classes/player.js"), exports);
23
24
  __exportStar(require("./classes/weightcalc.js"), exports);
24
- __exportStar(require("./classes/lotusgear.js"), exports);
25
25
  __exportStar(require("./constants/armor.js"), exports);
26
26
  __exportStar(require("./constants/crops.js"), exports);
27
27
  __exportStar(require("./constants/reforges.js"), exports);
@@ -32,11 +32,15 @@ __exportStar(require("./constants/weight.js"), exports);
32
32
  __exportStar(require("./constants/pests.js"), exports);
33
33
  __exportStar(require("./constants/pets.js"), exports);
34
34
  __exportStar(require("./constants/personalbests.js"), exports);
35
+ __exportStar(require("./constants/lotus.js"), exports);
36
+ __exportStar(require("./constants/upgrades.js"), exports);
35
37
  __exportStar(require("./util/itemstats.js"), exports);
36
38
  __exportStar(require("./util/jacob.js"), exports);
37
39
  __exportStar(require("./util/names.js"), exports);
38
40
  __exportStar(require("./util/skyblocktime.js"), exports);
39
41
  __exportStar(require("./util/ratecalc.js"), exports);
42
+ __exportStar(require("./util/lore.js"), exports);
43
+ __exportStar(require("./util/pests.js"), exports);
40
44
  __exportStar(require("./crops/special.js"), exports);
41
45
  __exportStar(require("./crops/pumpkin.js"), exports);
42
46
  __exportStar(require("./crops/melon.js"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,2DAAyC;AACzC,0DAAwC;AACxC,gEAA8C;AAC9C,oDAAkC;AAClC,sDAAoC;AACpC,0DAAwC;AACxC,yDAAuC;AAEvC,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,wDAAsC;AACtC,8DAA4C;AAC5C,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAE7C,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,yDAAuC;AACvC,qDAAmC;AAEnC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,2DAAyC;AACzC,0DAAwC;AACxC,gEAA8C;AAC9C,gEAA8C;AAC9C,oDAAkC;AAClC,sDAAoC;AACpC,0DAAwC;AAExC,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,wDAAsC;AACtC,8DAA4C;AAC5C,uDAAqC;AACrC,wDAAsC;AACtC,uDAAqC;AACrC,sDAAoC;AACpC,+DAA6C;AAC7C,uDAAqC;AACrC,0DAAwC;AAExC,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,yDAAuC;AACvC,qDAAmC;AACnC,iDAA+B;AAC/B,kDAAgC;AAEhC,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":";;;AACA,4CAA4C;AAG5C,SAAgB,iBAAiB,CAAC,MAAc,EAAE,IAAkB;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,cAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAE,GAAG,CAAE,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAVD,8CAUC"}
1
+ {"version":3,"file":"gems.js","sourceRoot":"","sources":["../../src/util/gems.ts"],"names":[],"mappings":";;;AACA,4CAA4C;AAG5C,SAAgB,iBAAiB,CAAC,MAAc,EAAE,IAAkB;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,cAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,MAAM,CAAC,CAAC,CAAE,GAAG,CAAE,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,CAAC;AAVD,8CAUC"}
@@ -0,0 +1,4 @@
1
+ import { Crop } from '../constants/crops';
2
+ export declare function fortuneFromPests(pests: number): number;
3
+ export declare function fortuneFromPestBestiary(bestiaryKills: Record<string, number>): number;
4
+ export declare function uncountedCropsFromPests(pestKills: Record<string, number>): Partial<Record<Crop, number>>;
@@ -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,42 +1,46 @@
1
- {
2
- "name": "farming-weight",
3
- "version": "0.3.10",
4
- "description": "Tools for calculating farming weight and fortune in Hypixel Skyblock",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc",
9
- "format": "prettier --write \"src/**/*.ts\"",
10
- "lint": "eslint"
11
- },
12
- "keywords": [
13
- "farming",
14
- "weight",
15
- "farming-weight",
16
- "skyblock",
17
- "hypixel",
18
- "hypixel-skyblock",
19
- "fortune"
20
- ],
21
- "repository": {
22
- "type": "git",
23
- "url": "git+https://github.com/EliteFarmers/Tools.git"
24
- },
25
- "files": [ "dist/**/*" ],
26
- "bugs": {
27
- "url": "https://github.com/EliteFarmers/Tools/issues"
28
- },
29
- "publishConfig": {
30
- "registry": "https://registry.npmjs.org/",
31
- "access": "public"
32
- },
33
- "homepage": "https://github.com/EliteFarmers/Tools#readme",
34
- "author": "Kaeso",
35
- "license": "LGPL-3.0-only",
36
- "devDependencies": {
37
- "@typescript-eslint/eslint-plugin": "^6.7.4",
38
- "eslint": "^8.50.0",
39
- "prettier": "^3.0.3",
40
- "typescript": "^5.2.2"
41
- }
42
- }
1
+ {
2
+ "name": "farming-weight",
3
+ "version": "0.4.0",
4
+ "description": "Tools for calculating farming weight and fortune in Hypixel Skyblock",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "format": "prettier --write \"src/**/*.ts\"",
10
+ "lint": "eslint",
11
+ "test": "vitest"
12
+ },
13
+ "keywords": [
14
+ "farming",
15
+ "weight",
16
+ "farming-weight",
17
+ "skyblock",
18
+ "hypixel",
19
+ "hypixel-skyblock",
20
+ "fortune"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/EliteFarmers/Tools.git"
25
+ },
26
+ "files": [
27
+ "dist/**/*"
28
+ ],
29
+ "bugs": {
30
+ "url": "https://github.com/EliteFarmers/Tools/issues"
31
+ },
32
+ "publishConfig": {
33
+ "registry": "https://registry.npmjs.org/",
34
+ "access": "public"
35
+ },
36
+ "homepage": "https://github.com/EliteFarmers/Tools#readme",
37
+ "author": "Kaeso",
38
+ "license": "LGPL-3.0-only",
39
+ "devDependencies": {
40
+ "@typescript-eslint/eslint-plugin": "^6.7.4",
41
+ "eslint": "^8.50.0",
42
+ "prettier": "^3.0.3",
43
+ "typescript": "^5.2.2",
44
+ "vitest": "^1.6.0"
45
+ }
46
+ }