Skip to content

Commit

Permalink
feat(stats/mining): add glacite tunnels
Browse files Browse the repository at this point in the history
  • Loading branch information
DuckySoLucky committed Feb 5, 2025
1 parent 34658eb commit 0015f71
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 9 deletions.
9 changes: 9 additions & 0 deletions src/lib/server/constants/mining.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2056,3 +2056,12 @@ export const FORGE = {
SKELETON_KEY: { name: "Skeleton Key", duration: 1800000 },
PORTABLE_CAMPFIRE: { name: "Portable Campfire", duration: 1800000 }
} as Record<string, { name: string; duration: number }>;

export const FOSSILS = ["CLAW", "SPINE", "CLUBBED", "UGLY", "HELIX", "FOOTPRINT", "WEBBED", "TUSK"];

export const CORPSES = {
lapis: "/api/item/LAPIS_ARMOR_HELMET",
umber: "/api/item/ARMOR_OF_YOG_HELMET",
tungsten: "/api/item/MINERAL_HELMET",
vanguard: "/api/item/VANGUARD_HELMET"
} as Record<string, string>;
43 changes: 34 additions & 9 deletions src/lib/server/stats/mining.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
import * as constants from "$lib/server/constants/constants";
import * as helper from "$lib/server/helper";
import { getLevelByXp } from "$lib/server/stats/leveling/leveling";
import type { Member } from "$types/global";
import type { Player } from "$types/raw/player/lib";
import { getHotmItems } from "./hotm";
import { stripItems } from "./items/stripping";

/**
* @param {number} hotmTier
* @param {number} potmTier
* @returns {number}
*/
export function calcHotmTokens(hotmTier: number, potmTier: number) {
let tokens = 0;

for (let tier = 1; tier <= hotmTier; tier++) {
tokens += constants.HOTM.rewards.hotm[tier]?.token_of_the_mountain || 0;
tokens += constants.HOTM.rewards.hotm[tier]?.token_of_the_mountain ?? 0;
}

for (let tier = 1; tier <= potmTier; tier++) {
tokens += (constants.HOTM.rewards.potm[tier]?.token_of_the_mountain || 0) as number;
tokens += (constants.HOTM.rewards.potm[tier]?.token_of_the_mountain ?? 0) as number;
}

return tokens;
Expand Down Expand Up @@ -72,6 +68,34 @@ function getForge(userProfile: Member) {
return output;
}

function getGlaciteTunnels(userProfile: Member) {
const glaciteData = userProfile.glacite_player_data ?? {};
const corpseIds = Object.keys(constants.CORPSES);

return {
mineshaftsEntered: glaciteData.mineshafts_entered ?? 0,
fossilDust: glaciteData.fossil_dust ?? 0,
corpses: {
found: corpseIds.reduce((acc, corpse) => acc + (glaciteData.corpses_looted?.[corpse] ?? 0), 0),
max: corpseIds.length,
corpses: corpseIds.map((corpse) => ({
name: helper.titleCase(corpse),
amount: glaciteData.corpses_looted?.[corpse] ?? 0,
texture_path: constants.CORPSES[corpse]
}))
},
fossils: {
found: (glaciteData.fossils_donated ?? []).length,
max: constants.FOSSILS.length,
fossils: constants.FOSSILS.map((fossil) => ({
name: helper.titleCase(fossil),
found: (glaciteData.fossils_donated ?? []).includes(fossil),
texture_path: `/api/item/${fossil === "HELIX" ? fossil : `${fossil}_FOSSIL`}`
}))
}
};
}

export function getMining(userProfile: Member, player: Player, packs: string[]) {
const HOTM = getLevelByXp(userProfile.mining_core?.experience, { type: "hotm" });
const totalTokens = calcHotmTokens(HOTM.level, userProfile.mining_core?.nodes?.special_0 ?? 0);
Expand All @@ -96,7 +120,7 @@ export function getMining(userProfile: Member, player: Player, packs: string[])
},
commissions: {
milestone: getCommissionMilestone(userProfile),
completions: player.achievements.skyblock_hard_working_miner || 0
completions: player.achievements?.skyblock_hard_working_miner ?? 0
},
crystalHollows: {
crystalHollowsLastAccess: userProfile.mining_core?.greater_mines_last_access,
Expand All @@ -121,6 +145,7 @@ export function getMining(userProfile: Member, player: Player, packs: string[])
}
},
forge: getForge(userProfile),
hotm: stripItems(getHotmItems(userProfile, packs))
hotm: stripItems(getHotmItems(userProfile, packs)),
glaciteTunnels: getGlaciteTunnels(userProfile)
};
}
20 changes: 20 additions & 0 deletions src/lib/types/processed/profile/mining.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,24 @@ export type MiningStats = {
};
forge: ForgeItem[];
hotm: ProcessedItem[];
glaciteTunnels: {
mineshaftsEntered: number;
fossilDust: number;
corpses: {
found: number;
corpses: {
name: string;
amount: number;
texture_path: string;
}[];
};
fossils: {
found: number;
fossils: {
name: string;
found: boolean;
texture_path: string;
}[];
};
};
};
8 changes: 8 additions & 0 deletions src/lib/types/raw/profile/lib.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ export type Member = {
confirmed: boolean;
};
garden_player_data?: MemberGardenData;
glacite_player_data: GlacitePlayerData;
};

export type Medal = "gold" | "silver" | "bronze";
Expand Down Expand Up @@ -467,3 +468,10 @@ export type AccessoryBagStorage = {
export type MemberGardenData = {
copper?: number;
};

export type GlacitePlayerData = {
fossils_donated: string[];
fossil_dust: number;
corpses_looted: Record<string, number>;
mineshafts_entered: number;
};

0 comments on commit 0015f71

Please sign in to comment.