farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
93 lines (92 loc) • 3.97 kB
TypeScript
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;
}