farming-weight
Version:
Tools for calculating farming weight and fortune in Hypixel Skyblock
36 lines (35 loc) • 2.17 kB
TypeScript
import type { FarmingPlayer } from '../player/player.js';
import type { DynamicFortuneSource } from '../upgrades/sources/dynamicfortunesources.js';
import { Crop } from './crops.js';
import { Rarity } from './reforges.js';
import { Stat, type StatsRecord } from './stats.js';
type ShardId = keyof typeof FARMING_ATTRIBUTE_SHARDS;
export type FarmingAttributes = Record<ShardId | string, number>;
export interface FarmingAttributeShardContext {
attributes?: FarmingAttributes | Record<string, number>;
infestedPlotProbability?: number;
crop?: Crop;
}
export type FarmingAttributeShardSourceContext = FarmingPlayer | FarmingAttributeShardContext;
export interface FarmingAttributeShard {
name: string;
skyblockId: string;
rarity: Rarity;
wiki: string;
effect: FarmingAttributeShardEffect;
stats?: StatsRecord<unknown, FarmingAttributeShardSourceContext>;
perLevelStats?: StatsRecord<unknown, FarmingAttributeShardSourceContext>;
active?: DynamicFortuneSource<FarmingAttributeShardSourceContext>['active'];
}
export type FarmingAttributeShardEffect = 'none' | 'rates' | 'fortune' | 'wisdom';
export declare const FARMING_ATTRIBUTE_SHARDS: Record<string, FarmingAttributeShard>;
export declare function normalizeAttributeId(id: string): ShardId | undefined;
export declare function getAttributeAmount(attributes: Record<string, number> | undefined, id: ShardId): number;
export declare function normalizeAttributes(attributes?: Record<string, number>): Record<string, number> | undefined;
export declare const ATTRIBUTE_SHARD_LEVELING: Partial<Record<Rarity, number[]>>;
export declare function getShardLevel(rarity: Rarity, amount?: number | null): number;
export declare function getShardsForLevel(rarity: Rarity, level: number): number;
export declare function getShardsForNextLevel(rarity: Rarity, amount: number): number;
export declare function getShardFortune(shard: FarmingAttributeShard, player: FarmingAttributeShardSourceContext, level?: number): number;
export declare function getShardStat(shard: FarmingAttributeShard, player: FarmingAttributeShardSourceContext, stat: Stat, level?: number): number;
export {};