farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
120 lines (119 loc) • 4.78 kB
TypeScript
import type { Effect, EffectEnvironment } from '../../effects/types.js';
import type { FarmingPlayer } from '../../player/player.js';
import { FortuneSource, type FortuneSourceActiveState } from './base.js';
export declare class CropeetleShard extends FortuneSource {
readonly id = "cropeetle";
readonly name: string;
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
* Warty Bug Shard - adds Warty drops while farming Nether Wart.
*
* Emits an `add-drop` effect crop-scoped to Nether Wart. Drops are tagged
* `['overbloom','rare-crop']` so Overbloom (and any future global rare-crop
* multipliers) buff them by default. The drop kind is `'rare'`.
*/
export declare class WartyBugShard extends FortuneSource {
readonly id = "wart_eater";
readonly name: string;
getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
* Dragonfly Shard - `+0.5` Farming Wisdom per level. Always active.
*/
export declare class DragonflyShard extends FortuneSource {
readonly id = "dragonfly";
readonly name: string;
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
* Firefly Shard - `+5` Farming Fortune per level during the day.
*
* Active rules (preserved from the existing implementation, which assumes the
* world is during the day unless overridden):
* - If the player has selected Sunflower, force active.
* - If the player has selected Moonflower, force inactive.
* - If Lunar Moth shard is at an equal-or-higher level, defer to it (inactive).
* - Otherwise active.
*/
export declare class FireflyShard extends FortuneSource {
readonly id = "firefly";
readonly name: string;
private resolve;
getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
* Lunar Moth Shard - `+5` Farming Fortune per level during the night.
*
* Active rules mirror Firefly (Moonflower forces active, Sunflower forces
* inactive, otherwise the higher-level shard wins ties going to Lunar Moth).
*/
export declare class LunarMothShard extends FortuneSource {
readonly id = "lunar_moth";
readonly name: string;
private resolve;
getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
* Termite Shard - `+3` Farming Fortune per level while on an infested plot.
*/
export declare class TermiteShard extends FortuneSource {
readonly id = "termite";
readonly name: string;
getActive(player: FarmingPlayer, env: EffectEnvironment): FortuneSourceActiveState;
getEffects(player: FarmingPlayer, env: EffectEnvironment): Effect[];
}
/**
* Galaxy Fish Shard - `+1` Farming/Mining/Foraging Fortune per level.
*/
export declare class GalaxyFishShard extends FortuneSource {
readonly id = "galaxy_fish";
readonly name: string;
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class LadybugShard extends FortuneSource {
readonly id = "ladybug";
readonly name: string;
getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class InvisibugShard extends FortuneSource {
readonly id = "invisibug";
readonly name: string;
getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class PrayingMantisShard extends FortuneSource {
readonly id = "praying_mantis";
readonly name: string;
getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class PestShard extends FortuneSource {
readonly id = "pest";
readonly name: string;
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
export declare class MudwormShard extends FortuneSource {
readonly id = "mudworm";
readonly name: string;
getEffects(_player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
* Class registry of every farming attribute shard, keyed by the SkyBlock
* attribute key (matching `FARMING_ATTRIBUTE_SHARDS`). Use this to enumerate
* sources during effect collection.
*/
export declare const FARMING_ATTRIBUTE_SHARD_CLASSES: {
readonly wart_eater: WartyBugShard;
readonly garden_wisdom: DragonflyShard;
readonly solar_power: FireflyShard;
readonly lunar_power: LunarMothShard;
readonly pretty_clothes: LadybugShard;
readonly crop_bug: CropeetleShard;
readonly fancy_visit: InvisibugShard;
readonly infiltration: TermiteShard;
readonly insect_power: PrayingMantisShard;
readonly pest_luck: PestShard;
readonly visitor_bait: MudwormShard;
readonly ultimate_dna: GalaxyFishShard;
};