farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
55 lines (54 loc) • 2.49 kB
TypeScript
import { type GardenChipId } from '../../constants/chips.js';
import type { Effect, EffectEnvironment } from '../../effects/types.js';
import type { FarmingPlayer } from '../../player/player.js';
import { FortuneSource } from './base.js';
/**
* Generic chip source - turns the chip's `statsPerRarity` table into
* `add-stat` effects keyed by the chip's level-derived rarity.
*
* Skips `Stat.Overbloom` because Overbloom is a virtual stat in the new model,
* not an additive number; the dedicated {@link RarefinderChipSource} emits the
* correct `add-rare-pct` effect for that case.
*
* Hypercharge's `tempMultiplierPerLevel` and Mechamind/Synthesis's bespoke
* mechanics are NOT modeled here - they remain in the legacy temp-fortune /
* tool exp pipelines and are wired in at the calculator level.
*/
export declare class GenericChipSource extends FortuneSource {
readonly id: string;
readonly name: string;
private readonly chipId;
constructor(chipId: GardenChipId);
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
* Rarefinder Chip - global Overbloom contributor. The legacy implementation
* surfaces this as a flat `Stat.Overbloom` value (2/2.5/3 by rarity); in the
* effect model it becomes an `add-rare-pct` with a global Overbloom scope and
* `relatedStats: [Stat.Overbloom]`, which the resolver consumes both as a
* scalar contribution to the virtual Overbloom stat AND as an additive percent
* to the rare-drop pipeline.
*/
export declare class RarefinderChipSource extends FortuneSource {
readonly id = "chip:rarefinder";
readonly name: string;
getEffects(player: FarmingPlayer, _env: EffectEnvironment): Effect[];
}
/**
* Class registry of every garden chip keyed by chip id. Hypercharge,
* Synthesis, Mechamind, Evergreen, Overdrive, Quickdraw have no stat or
* rare-pct contribution; they're either bespoke (temp-fortune multiplier,
* tool-exp multiplier) or progress-only and intentionally emit `[]`.
*/
export declare const GARDEN_CHIP_CLASSES: {
readonly cropshot: GenericChipSource;
readonly vermin_vaporizer: GenericChipSource;
readonly synthesis: GenericChipSource;
readonly sowledge: GenericChipSource;
readonly mechamind: GenericChipSource;
readonly hypercharge: GenericChipSource;
readonly evergreen: GenericChipSource;
readonly overdrive: GenericChipSource;
readonly quickdraw: GenericChipSource;
readonly rarefinder: RarefinderChipSource;
};