UNPKG

farming-weight

Version:

Tools for calculating farming weight and fortune in Hypixel Skyblock

93 lines (92 loc) 3.97 kB
import { type Crop } from '../constants/crops.js'; import { type Rarity, type Reforge, ReforgeTarget, type ReforgeTier } from '../constants/reforges.js'; import { Stat } from '../constants/stats.js'; import { type FortuneSourceProgress, type FortuneUpgrade, type StatQueryOptions } from '../constants/upgrades.js'; import type { Effect, EffectEnvironment } from '../effects/types.js'; import { type FarmingToolInfo } from '../items/tools.js'; import type { PlayerOptions } from '../player/playeroptions.js'; import type { EliteItemDto } from './item.js'; import type { UpgradeableInfo } from './upgradeable.js'; import { UpgradeableBase } from './upgradeablebase.js'; export interface ToolCurrentLevelProgress { /** Current displayed tool level (1-based). */ level: number; /** Next level number (1-based). Present when we know the requirement. */ next?: number; /** Raw XP value from the API for this level. */ total: number; /** XP progress within this level (clamped to the current level goal). */ progress: number; /** XP required to reach the next level from the current level. */ goal?: number; /** Progress ratio within this level (0..1). */ ratio: number; /** * True when the tool is effectively capped (shows 100% but does not advance). * This is inferred when XP meets/exceeds the current goal, or when the tool is already level 50. */ maxed: boolean; } export declare class FarmingTool extends UpgradeableBase { item: EliteItemDto; crops: Crop[]; info: FarmingToolInfo; get type(): ReforgeTarget; get tool(): FarmingToolInfo; itemname: string; private colorPrefix; get name(): string; get bountiful(): boolean; rarity: Rarity; counter: number | undefined; cultivating: number; reforge: Reforge | undefined; reforgeStats: ReforgeTier | undefined; logCounter: number; collAnalysis: number; farmingForDummies: number; recombobulated: boolean; fortune: number; fortuneBreakdown: Record<string, number>; level: number; xp: number; overclocks: number; /** * Tool XP (`levelable_exp`) is XP within the current level and resets on level-up. * When a tool is capped it can show >= 100% progress but not advance. */ getCurrentLevelProgress(): ToolCurrentLevelProgress; options?: PlayerOptions; constructor(item: EliteItemDto, options?: PlayerOptions); getProgress(stats?: Stat[], zeroed?: boolean): FortuneSourceProgress[]; getUpgrades(options?: StatQueryOptions): FortuneUpgrade[]; setOptions(options: PlayerOptions): void; rebuildTool(item: EliteItemDto, options?: PlayerOptions): void; private setReforge; changeReforgeTo(reforgeId: string): void; changeFarmedCropsTo(crops: number): void; getStat(stat: Stat, selectedCrop?: Crop): number; /** * Returns the declarative `Effect[]` representation of every contribution * this tool makes. Tool-level fortune (per-crop), Farming for Dummies, * baseline Farming Wisdom, gems, reforge, enchants. The tool-level fortune * uses the tool's own `crops` list to emit one `add-stat` per crop fortune * type. The resolver applies these unconditionally; the calculator picks * the appropriate per-crop fortune based on the active crop. */ getEffects(env: EffectEnvironment): Effect[]; getFortune(): number; private getCounter; private getCultivating; private getToolLevel; private getXp; private getOverclocks; getCultivatingLevel(): number; get farmed(): number; isUsed(): boolean; supportsCultivating(): boolean; isMissingDedication(): boolean | 0 | null | undefined; static isValid(item: EliteItemDto | FarmingTool): boolean; static fromArray(items: EliteItemDto[], options?: PlayerOptions): FarmingTool[]; static fakeItem(info: UpgradeableInfo, options?: PlayerOptions): FarmingTool | undefined; }