diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2021-06-02 16:04:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-02 16:04:59 -0500 |
| commit | 709d428b4cb94e8eca53b6f32e0f8b1be5a323b9 (patch) | |
| tree | e1581056d7d7ea9fa254184627c9cb71362cdc0f | |
| parent | 732dfb76766533687982d7232078411af76bd2a9 (diff) | |
| download | skyblock-api-709d428b4cb94e8eca53b6f32e0f8b1be5a323b9.tar.gz skyblock-api-709d428b4cb94e8eca53b6f32e0f8b1be5a323b9.tar.bz2 skyblock-api-709d428b4cb94e8eca53b6f32e0f8b1be5a323b9.zip | |
include more data about skills (#51)
| -rw-r--r-- | build/cleaners/skyblock/member.js | 2 | ||||
| -rw-r--r-- | build/cleaners/skyblock/skills.js | 54 | ||||
| -rw-r--r-- | build/constants.js | 10 | ||||
| -rw-r--r-- | src/cleaners/skyblock/member.ts | 2 | ||||
| -rw-r--r-- | src/cleaners/skyblock/skills.ts | 66 | ||||
| -rw-r--r-- | src/constants.ts | 8 | ||||
| -rw-r--r-- | test-data-generator/index.ts | 13 | ||||
| -rw-r--r-- | test/data/constants/manual/skill_xp.json | 61 | ||||
| -rw-r--r-- | test/data/constants/manual/skill_xp_easier.json | 26 | ||||
| -rw-r--r-- | test/data/constants/minions.json | 1 | ||||
| -rw-r--r-- | test/data/constants/slayers.json | 1 | ||||
| -rw-r--r-- | test/data/constants/stats.json | 69 | ||||
| -rw-r--r-- | test/data/constants/values.json | 2 | ||||
| -rw-r--r-- | test/data/constants/zones.json | 1 | ||||
| -rw-r--r-- | test/data/player/6536bfed869548fd83a1ecd24cf2a0fd.json | 214 | ||||
| -rw-r--r-- | test/data/player/ef3bb867eec048a1a9b92b451f0ffc66.json | 645 | ||||
| -rw-r--r-- | test/data/skyblock/profiles/6536bfed869548fd83a1ecd24cf2a0fd.json | 626 | ||||
| -rw-r--r-- | test/data/skyblock/profiles/ef3bb867eec048a1a9b92b451f0ffc66.json | 1428 | ||||
| -rw-r--r-- | test/test.js | 27 |
19 files changed, 2121 insertions, 1135 deletions
diff --git a/build/cleaners/skyblock/member.js b/build/cleaners/skyblock/member.js index a9a419a..8e72be8 100644 --- a/build/cleaners/skyblock/member.js +++ b/build/cleaners/skyblock/member.js @@ -68,7 +68,7 @@ async function cleanSkyBlockProfileMemberResponse(member, included = null) { fairy_souls: fairySouls, inventories: inventoriesIncluded ? await inventory_1.cleanInventories(member) : undefined, objectives: objectives_1.cleanObjectives(member), - skills: skills_1.cleanSkills(member), + skills: await skills_1.cleanSkills(member), visited_zones: zones_1.cleanVisitedZones(member), collections: collections_1.cleanCollections(member), slayers: slayers_1.cleanSlayers(member) diff --git a/build/cleaners/skyblock/skills.js b/build/cleaners/skyblock/skills.js index 4ec5ec2..a761ec8 100644 --- a/build/cleaners/skyblock/skills.js +++ b/build/cleaners/skyblock/skills.js @@ -1,15 +1,61 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.cleanSkills = void 0; -function cleanSkills(data) { +exports.cleanSkills = exports.levelForSkillXp = void 0; +const constants_1 = require("../../constants"); +// the highest level you can have in each skill +// numbers taken from https://hypixel-skyblock.fandom.com/wiki/Skills +// maybe these should be moved to skyblock-constants? +const skillsMaxLevel = { + farming: 60, + mining: 60, + combat: 60, + foraging: 50, + fishing: 50, + enchanting: 60, + alchemy: 50, + taming: 50, + dungeoneering: 50, + carpentry: 50, + runecrafting: 25, + social: 25 +}; +// for skills that aren't in maxSkills, default to this +const skillsDefaultMaxLevel = 50; +/** + * Get the skill level for the amount of total xp + * @param xp The xp we're finding the level for + * @param easierLevel Whether it should use the alternate leveling xp table (used for cosmetic skills and dungeoneering) + */ +async function levelForSkillXp(xp, maxLevel) { + const xpTable = maxLevel <= 25 ? await constants_1.fetchSkillXpEasier() : await constants_1.fetchSkillXp(); + const skillLevel = [...xpTable].reverse().findIndex(levelXp => xp >= levelXp); + return skillLevel === -1 ? 0 : xpTable.length - skillLevel; +} +exports.levelForSkillXp = levelForSkillXp; +async function cleanSkills(data) { + var _a; const skills = []; for (const item in data) { if (item.startsWith('experience_skill_')) { const skillName = item.substr('experience_skill_'.length); - const skillValue = data[item]; + // the amount of total xp you have in this skill + const skillXp = data[item]; + const skillMaxLevel = (_a = skillsMaxLevel[skillName]) !== null && _a !== void 0 ? _a : skillsDefaultMaxLevel; + const xpTable = skillMaxLevel <= 25 ? await constants_1.fetchSkillXpEasier() : await constants_1.fetchSkillXp(); + // the level you're at for this skill + const skillLevel = await levelForSkillXp(skillXp, skillMaxLevel); + // the total xp required for the previous level + const previousLevelXp = skillLevel >= 1 ? xpTable[skillLevel - 1] : 0; + // the extra xp left over + const skillLevelXp = skillXp - previousLevelXp; + // the amount of extra xp required for this level + const skillLevelXpRequired = xpTable[skillLevel] - previousLevelXp; skills.push({ name: skillName, - xp: skillValue + xp: skillXp, + level: skillLevel, + levelXp: skillLevelXp, + levelXpRequired: skillLevelXpRequired }); } } diff --git a/build/constants.js b/build/constants.js index c620a32..22327c5 100644 --- a/build/constants.js +++ b/build/constants.js @@ -25,7 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.setConstantValues = exports.fetchConstantValues = exports.addMinions = exports.fetchMinions = exports.addSlayers = exports.fetchSlayers = exports.addZones = exports.fetchZones = exports.addSkills = exports.fetchSkills = exports.addCollections = exports.fetchCollections = exports.addStats = exports.fetchStats = exports.addJSONConstants = exports.fetchJSONConstant = void 0; +exports.setConstantValues = exports.fetchConstantValues = exports.addMinions = exports.fetchSkillXpEasier = exports.fetchSkillXp = exports.fetchMinions = exports.addSlayers = exports.fetchSlayers = exports.addZones = exports.fetchZones = exports.addSkills = exports.fetchSkills = exports.addCollections = exports.fetchCollections = exports.addStats = exports.fetchStats = exports.addJSONConstants = exports.fetchJSONConstant = void 0; // we have to do this so we can mock the function from the tests properly const constants = __importStar(require("./constants")); const node_cache_1 = __importDefault(require("node-cache")); @@ -223,6 +223,14 @@ async function fetchMinions() { return await constants.fetchJSONConstant('minions.json'); } exports.fetchMinions = fetchMinions; +async function fetchSkillXp() { + return await constants.fetchJSONConstant('manual/skill_xp.json'); +} +exports.fetchSkillXp = fetchSkillXp; +async function fetchSkillXpEasier() { + return await constants.fetchJSONConstant('manual/skill_xp_easier.json'); +} +exports.fetchSkillXpEasier = fetchSkillXpEasier; /** Add skills to skyblock-constants. This has caching so it's fine to call many times */ async function addMinions(addingMinions) { await constants.addJSONConstants('minions.json', addingMinions, 'minion'); diff --git a/src/cleaners/skyblock/member.ts b/src/cleaners/skyblock/member.ts index 0ec2c0a..4a2f8cc 100644 --- a/src/cleaners/skyblock/member.ts +++ b/src/cleaners/skyblock/member.ts @@ -79,7 +79,7 @@ export async function cleanSkyBlockProfileMemberResponse(member, included: Inclu fairy_souls: fairySouls, inventories: inventoriesIncluded ? await cleanInventories(member) : undefined, objectives: cleanObjectives(member), - skills: cleanSkills(member), + skills: await cleanSkills(member), visited_zones: cleanVisitedZones(member), collections: cleanCollections(member), slayers: cleanSlayers(member) diff --git a/src/cleaners/skyblock/skills.ts b/src/cleaners/skyblock/skills.ts index e283379..fa27217 100644 --- a/src/cleaners/skyblock/skills.ts +++ b/src/cleaners/skyblock/skills.ts @@ -1,17 +1,77 @@ +import { fetchSkillXp, fetchSkillXpEasier } from '../../constants' + export interface Skill { name: string xp: number + level: number + + levelXp: number + levelXpRequired: number +} + +// the highest level you can have in each skill +// numbers taken from https://hypixel-skyblock.fandom.com/wiki/Skills +// maybe these should be moved to skyblock-constants? +const skillsMaxLevel: { [ key: string ]: number } = { + farming: 60, + mining: 60, + combat: 60, + foraging: 50, + fishing: 50, + enchanting: 60, + alchemy: 50, + taming: 50, + dungeoneering: 50, + carpentry: 50, + runecrafting: 25, + social: 25 } -export function cleanSkills(data: any): Skill[] { +// for skills that aren't in maxSkills, default to this +const skillsDefaultMaxLevel: number = 50 + +/** + * Get the skill level for the amount of total xp + * @param xp The xp we're finding the level for + * @param easierLevel Whether it should use the alternate leveling xp table (used for cosmetic skills and dungeoneering) + */ +export async function levelForSkillXp(xp: number, maxLevel: number) { + const xpTable = maxLevel <= 25 ? await fetchSkillXpEasier() : await fetchSkillXp() + const skillLevel = [...xpTable].reverse().findIndex(levelXp => xp >= levelXp) + return skillLevel === -1 ? 0 : xpTable.length - skillLevel +} + +export async function cleanSkills(data: any): Promise<Skill[]> { const skills: Skill[] = [] for (const item in data) { if (item.startsWith('experience_skill_')) { const skillName = item.substr('experience_skill_'.length) - const skillValue = data[item] + + // the amount of total xp you have in this skill + const skillXp = data[item] + + const skillMaxLevel = skillsMaxLevel[skillName] ?? skillsDefaultMaxLevel + + const xpTable = skillMaxLevel <= 25 ? await fetchSkillXpEasier() : await fetchSkillXp() + + // the level you're at for this skill + const skillLevel = await levelForSkillXp(skillXp, skillMaxLevel) + + // the total xp required for the previous level + const previousLevelXp = skillLevel >= 1 ? xpTable[skillLevel - 1] : 0 + + // the extra xp left over + const skillLevelXp = skillXp - previousLevelXp + + // the amount of extra xp required for this level + const skillLevelXpRequired = xpTable[skillLevel] - previousLevelXp + skills.push({ name: skillName, - xp: skillValue + xp: skillXp, + level: skillLevel, + levelXp: skillLevelXp, + levelXpRequired: skillLevelXpRequired }) } } diff --git a/src/constants.ts b/src/constants.ts index 48f9619..9699e57 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -227,6 +227,14 @@ export async function fetchMinions(): Promise<string[]> { return await constants.fetchJSONConstant('minions.json') } +export async function fetchSkillXp(): Promise<number[]> { + return await constants.fetchJSONConstant('manual/skill_xp.json') +} + +export async function fetchSkillXpEasier(): Promise<number[]> { + return await constants.fetchJSONConstant('manual/skill_xp_easier.json') +} + /** Add skills to skyblock-constants. This has caching so it's fine to call many times */ export async function addMinions(addingMinions: string[]): Promise<void> { await constants.addJSONConstants('minions.json', addingMinions, 'minion') diff --git a/test-data-generator/index.ts b/test-data-generator/index.ts index 408f76a..b0b3ba6 100644 --- a/test-data-generator/index.ts +++ b/test-data-generator/index.ts @@ -20,7 +20,7 @@ const playerUuids = [ async function writeTestData(requestPath: string, name: string, contents: any) { const dir = path.join(__dirname, '..', 'test', 'data', requestPath) - await fs.mkdir(dir, { recursive: true }) + await fs.mkdir(path.dirname(path.join(dir, `${name}.json`)), { recursive: true }) await fs.writeFile(path.join(dir, `${name}.json`), JSON.stringify(contents, null, 2)) } @@ -35,7 +35,16 @@ async function addResponse(requestPath: string, args: { [ key: string ]: string async function addConstants() { - const constantNames = ['collections', 'minions', 'skills', 'slayers', 'stats', 'zones'] + const constantNames = [ + 'collections', + 'minions', + 'skills', + 'slayers', + 'stats', + 'zones', + 'manual/skill_xp', + 'manual/skill_xp_easier', + ] for (const constantName of constantNames) { const constantData = await constants.fetchJSONConstant(constantName + '.json') await writeTestData('constants', constantName, constantData) diff --git a/test/data/constants/manual/skill_xp.json b/test/data/constants/manual/skill_xp.json new file mode 100644 index 0000000..2aee873 --- /dev/null +++ b/test/data/constants/manual/skill_xp.json @@ -0,0 +1,61 @@ +[ 50, + 175, + 375, + 675, + 1175, + 1925, + 2925, + 4425, + 6425, + 9925, + 14925, + 22425, + 32425, + 47425, + 67425, + 97425, + 147425, + 222425, + 322425, + 522425, + 822425, + 1222425, + 1722425, + 2322425, + 3022425, + 3822425, + 4722425, + 5722425, + 6822425, + 8022425, + 9322425, + 10722425, + 12222425, + 13822425, + 15522425, + 17322425, + 19222425, + 21222425, + 23322425, + 25522425, + 27822425, + 30222425, + 32722425, + 35322425, + 38072425, + 40972425, + 44072425, + 47472425, + 51172425, + 55172425, + 59472425, + 64072425, + 68972425, + 74172425, + 79672425, + 85472425, + 91572425, + 97972425, + 104672425, + 111672425 +]
\ No newline at end of file diff --git a/test/data/constants/manual/skill_xp_easier.json b/test/data/constants/manual/skill_xp_easier.json new file mode 100644 index 0000000..b1be10b --- /dev/null +++ b/test/data/constants/manual/skill_xp_easier.json @@ -0,0 +1,26 @@ +[ 50, + 150, + 275, + 435, + 635, + 885, + 1200, + 1600, + 2100, + 2725, + 3510, + 4510, + 5760, + 7325, + 9325, + 11825, + 14950, + 18950, + 23950, + 30200, + 38050, + 47850, + 60100, + 75400, + 94450 +]
\ No newline at end of file diff --git a/test/data/constants/minions.json b/test/data/constants/minions.json index 5291a34..a44cd62 100644 --- a/test/data/constants/minions.json +++ b/test/data/constants/minions.json @@ -50,6 +50,7 @@ "spruce", "sugar_cane", "tarantula", + "voidling", "wheat", "zombie" ]
\ No newline at end of file diff --git a/test/data/constants/slayers.json b/test/data/constants/slayers.json index f9bc036..f7ba838 100644 --- a/test/data/constants/slayers.json +++ b/test/data/constants/slayers.json @@ -1,4 +1,5 @@ [ + "enderman", "spider", "wolf", "zombie" diff --git a/test/data/constants/stats.json b/test/data/constants/stats.json index 89685bd..0632eef 100644 --- a/test/data/constants/stats.json +++ b/test/data/constants/stats.json @@ -53,16 +53,22 @@ "deaths_crypt_souleater", "deaths_crypt_tank_zombie", "deaths_crypt_undead", + "deaths_crypt_undead_adamwho", "deaths_crypt_undead_agentk", "deaths_crypt_undead_alexander", "deaths_crypt_undead_apunch", + "deaths_crypt_undead_bembo", "deaths_crypt_undead_bernhard", + "deaths_crypt_undead_blockskey", + "deaths_crypt_undead_bloozing", "deaths_crypt_undead_cecer", "deaths_crypt_undead_chilynn", "deaths_crypt_undead_christian", "deaths_crypt_undead_codename_b", "deaths_crypt_undead_connorlinfoot", "deaths_crypt_undead_dctr", + "deaths_crypt_undead_donpireso", + "deaths_crypt_undead_dueces", "deaths_crypt_undead_erosemberg", "deaths_crypt_undead_externalizable", "deaths_crypt_undead_flameboy101", @@ -71,8 +77,10 @@ "deaths_crypt_undead_jamiethegeek", "deaths_crypt_undead_jayavarmen", "deaths_crypt_undead_judg3", + "deaths_crypt_undead_ladybleu", "deaths_crypt_undead_likaos", "deaths_crypt_undead_luckykessie", + "deaths_crypt_undead_magicboys", "deaths_crypt_undead_marius", "deaths_crypt_undead_minikloon", "deaths_crypt_undead_nicholas", @@ -84,7 +92,9 @@ "deaths_crypt_undead_relenter", "deaths_crypt_undead_revengeee", "deaths_crypt_undead_rezzus", + "deaths_crypt_undead_robitybobity", "deaths_crypt_undead_sfarnham", + "deaths_crypt_undead_skyerzz", "deaths_crypt_undead_sylent", "deaths_crypt_undead_thorlon", "deaths_crypt_undead_valentin", @@ -128,10 +138,12 @@ "deaths_goblin_weakling_melee", "deaths_great_white_shark", "deaths_grim_reaper", + "deaths_grinch", "deaths_guardian", "deaths_guardian_defender", "deaths_guardian_emperor", "deaths_headless_horseman", + "deaths_horse", "deaths_horseman_bat", "deaths_horseman_horse", "deaths_horseman_zombie", @@ -161,29 +173,48 @@ "deaths_master_crypt_tank_zombie", "deaths_master_crypt_undead", "deaths_master_crypt_undead__fudgiethewhale", + "deaths_master_crypt_undead__onah", "deaths_master_crypt_undead_adamwho", "deaths_master_crypt_undead_agentk", + "deaths_master_crypt_undead_alexander", "deaths_master_crypt_undead_apunch", + "deaths_master_crypt_undead_bernhard", + "deaths_master_crypt_undead_bloozing", + "deaths_master_crypt_undead_chilynn", "deaths_master_crypt_undead_codename_b", "deaths_master_crypt_undead_connorlinfoot", "deaths_master_crypt_undead_dctr", + "deaths_master_crypt_undead_districtgecko", "deaths_master_crypt_undead_donpireso", + "deaths_master_crypt_undead_dueces", + "deaths_master_crypt_undead_externalizable", + "deaths_master_crypt_undead_flameboy101", + "deaths_master_crypt_undead_friedrich", "deaths_master_crypt_undead_hypixel", "deaths_master_crypt_undead_jamiethegeek", "deaths_master_crypt_undead_jayavarmen", "deaths_master_crypt_undead_judg3", + "deaths_master_crypt_undead_ladybleu", "deaths_master_crypt_undead_likaos", + "deaths_master_crypt_undead_magicboys", "deaths_master_crypt_undead_minikloon", + "deaths_master_crypt_undead_mistresseldrid", "deaths_master_crypt_undead_nicholas", "deaths_master_crypt_undead_nitroholic_", "deaths_master_crypt_undead_orangemarshall", + "deaths_master_crypt_undead_plancke", "deaths_master_crypt_undead_plummel", "deaths_master_crypt_undead_relenter", + "deaths_master_crypt_undead_revengeee", "deaths_master_crypt_undead_rezzus", "deaths_master_crypt_undead_sfarnham", + "deaths_master_crypt_undead_skyerzz", + "deaths_master_crypt_undead_sylent", "deaths_master_crypt_undead_themgrf", "deaths_master_crypt_undead_thorlon", + "deaths_master_crypt_undead_valentin", "deaths_master_crypt_undead_vinny8ball666", + "deaths_master_crypt_undead_williamtiger", "deaths_master_crypt_witherskeleton", "deaths_master_deathmite", "deaths_master_diamond_guy", @@ -219,6 +250,7 @@ "deaths_master_skeletor_prime", "deaths_master_sniper_skeleton", "deaths_master_spirit_bat", + "deaths_master_spirit_bull", "deaths_master_spirit_chicken", "deaths_master_spirit_miniboss", "deaths_master_spirit_rabbit", @@ -265,6 +297,7 @@ "deaths_professor_priest_guardian", "deaths_professor_warrior_guardian", "deaths_protector_dragon", + "deaths_rabbit", "deaths_random_slime", "deaths_redstone_pigman", "deaths_respawning_skeleton", @@ -289,6 +322,8 @@ "deaths_sea_witch", "deaths_shadow_assassin", "deaths_sheep", + "deaths_shrine_charged_creeper", + "deaths_shrine_skeleton_horseman", "deaths_siamese_lynx", "deaths_silverfish", "deaths_skeleton", @@ -304,6 +339,7 @@ "deaths_snowman", "deaths_soul_of_the_alpha", "deaths_spider", + "deaths_spider_1", "deaths_spider_jockey", "deaths_spirit_bat", "deaths_spirit_bull", @@ -329,7 +365,10 @@ "deaths_unburried_zombie", "deaths_unknown", "deaths_unstable_dragon", + "deaths_vicious_wolf", "deaths_void", + "deaths_voidling_extremist", + "deaths_voidling_fanatic", "deaths_voracious_spider", "deaths_watcher", "deaths_watcher_bonzo", @@ -365,6 +404,7 @@ "deaths_zombie_lord", "deaths_zombie_soldier", "deaths_zombie_villager", + "deaths_lost_adventure", "dungeon_hub_crystal_core_anything_no_return_best_time", "dungeon_hub_crystal_core_anything_with_return_best_time", "dungeon_hub_crystal_core_no_abilities_no_return_best_time", @@ -538,24 +578,48 @@ "kills_master_crypt_souleater", "kills_master_crypt_tank_zombie", "kills_master_crypt_undead", + "kills_master_crypt_undead__onah", + "kills_master_crypt_undead_agentk", "kills_master_crypt_undead_alexander", + "kills_master_crypt_undead_apunch", + "kills_master_crypt_undead_bembo", "kills_master_crypt_undead_bernhard", "kills_master_crypt_undead_bloozing", + "kills_master_crypt_undead_cecer", "kills_master_crypt_undead_chilynn", "kills_master_crypt_undead_christian", + "kills_master_crypt_undead_codename_b", + "kills_master_crypt_undead_connorlinfoot", "kills_master_crypt_undead_dctr", "kills_master_crypt_undead_donpireso", + "kills_master_crypt_undead_dueces", + "kills_master_crypt_undead_externalizable", "kills_master_crypt_undead_flameboy101", "kills_master_crypt_undead_friedrich", "kills_master_crypt_undead_hypixel", + "kills_master_crypt_undead_jamiethegeek", + "kills_master_crypt_undead_jayavarmen", "kills_master_crypt_undead_judg3", + "kills_master_crypt_undead_ladybleu", + "kills_master_crypt_undead_likaos", + "kills_master_crypt_undead_magicboys", "kills_master_crypt_undead_marius", + "kills_master_crypt_undead_minikloon", "kills_master_crypt_undead_nicholas", "kills_master_crypt_undead_nitroholic_", + "kills_master_crypt_undead_orangemarshall", "kills_master_crypt_undead_pieter", + "kills_master_crypt_undead_plancke", + "kills_master_crypt_undead_relenter", + "kills_master_crypt_undead_revengeee", + "kills_master_crypt_undead_rezzus", "kills_master_crypt_undead_sfarnham", "kills_master_crypt_undead_skyerzz", + "kills_master_crypt_undead_sylent", + "kills_master_crypt_undead_themgrf", + "kills_master_crypt_undead_thorlon", "kills_master_crypt_undead_valentin", + "kills_master_crypt_undead_williamtiger", "kills_master_crypt_witherskeleton", "kills_master_deathmite", "kills_master_diamond_guy", @@ -658,6 +722,8 @@ "kills_sea_witch", "kills_shadow_assassin", "kills_sheep", + "kills_shrine_charged_creeper", + "kills_shrine_skeleton_horseman", "kills_siamese_lynx", "kills_silverfish", "kills_skeleton", @@ -700,6 +766,9 @@ "kills_unburried_zombie", "kills_unstable_dragon", "kills_vicious_wolf", + "kills_voidling_enderman", + "kills_voidling_extremist", + "kills_voidling_fanatic", "kills_voracious_spider", "kills_watcher", "kills_watcher_bonzo", diff --git a/test/data/constants/values.json b/test/data/constants/values.json index a7aed8e..4b2a608 100644 --- a/test/data/constants/values.json +++ b/test/data/constants/values.json @@ -1,4 +1,4 @@ { - "max_minions": 609, + "max_minions": 613, "max_fairy_souls": 227 }
\ No newline at end of file diff --git a/test/data/constants/zones.json b/test/data/constants/zones.json index 9c34487..9943fc4 100644 --- a/test/data/constants/zones.json +++ b/test/data/constants/zones.json @@ -87,6 +87,7 @@ "treasure_hunter_camp", "upper_mines", "village", + "void_sepulture", "wilderness", "windmill", "winter_island", diff --git a/test/data/player/6536bfed869548fd83a1ecd24cf2a0fd.json b/test/data/player/6536bfed869548fd83a1ecd24cf2a0fd.json index 9bd0611..4c5ad19 100644 --- a/test/data/player/6536bfed869548fd83a1ecd24cf2a0fd.json +++ b/test/data/player/6536bfed869548fd83a1ecd24cf2a0fd.json @@ -274,7 +274,8 @@ "skyblock_fully_evolved", "tntgames_spleef_repulsor", "pit_get_endless_quiver_arrows", - "pit_small_streak" + "pit_small_streak", + "skyblock_bigger_storage_is_seeded" ], "displayname": "py5", "firstLogin": 1424644924085, @@ -288,12 +289,12 @@ "py5", "b3abus" ], - "lastLogin": 1620001797684, - "networkExp": 14303970, + "lastLogin": 1622501301452, + "networkExp": 14449927, "playername": "py5", "stats": { "Arcade": { - "coins": 2113250, + "coins": 2122258, "deaths_throw_out": 13, "kills_throw_out": 10, "music": true, @@ -396,10 +397,10 @@ "legacyachievement10", "legacyachievement9" ], - "coins": 162465 + "coins": 166325 }, "TNTGames": { - "coins": 66894, + "coins": 70584, "deaths_bowspleef": 15, "tags_bowspleef": 271, "new_spleef_repulsor": 1, @@ -487,7 +488,7 @@ "shoes_active": "GOLD_SHOES", "jacket_active": "GOLD_JACKET", "pants_active": "GOLD_PANTS", - "coins": 66890, + "coins": 70395, "lastTourneyAd": 1596934457455 }, "SkyWars": { @@ -569,7 +570,7 @@ "losses_kit_basic_solo_default": 59, "deaths_team_insane": 23, "survived_players_kit_mining_team_default": 91, - "coins": 599383, + "coins": 603673, "survived_players_team": 235, "losses_team_insane": 22, "losses_kit_mining_team_default": 8, @@ -1170,7 +1171,7 @@ "melee_kills_lab_kit_mining_team_default": 2 }, "MCGO": { - "coins": 172085, + "coins": 176555, "packages": [ "legacyachievementnewnewnew", "achievement_flag_3", @@ -1205,7 +1206,7 @@ "achievement_flag_3" ], "kills": 249, - "coins": 73327, + "coins": 76832, "monthly_kills_b": 110, "weekly_kills_b": 225, "deaths": 183, @@ -1248,7 +1249,7 @@ "achievement_flag_1", "achievement_flag_2" ], - "coins": 70402, + "coins": 73907, "favorite_slots": "null,null,null", "showKillPrefix": true, "kills": 38, @@ -1261,7 +1262,7 @@ "updated_stats": true, "human_deaths": 7, "zombie_kills": 22, - "coins": 69174, + "coins": 72679, "vampire_deaths": 20, "votes_Cavern": 3, "vampire_kills": 13, @@ -1657,7 +1658,7 @@ "entity_explosion_final_kills_bedwars": 1 }, "HungerGames": { - "coins": 119759, + "coins": 123789, "packages": [ "fixachievements2", "fixachievements1", @@ -1703,7 +1704,7 @@ "autoarmor": true }, "Walls": { - "coins": 71890, + "coins": 75395, "monthly_assists_a": 2, "assists": 2, "weekly_assists_a": 1, @@ -1712,10 +1713,10 @@ "weekly_assists_b": 1 }, "Arena": { - "coins": 66890 + "coins": 70395 }, "Walls3": { - "coins": 69430, + "coins": 72950, "packages": [ "achievement_fix_flag", "legacy_achievement_a" @@ -1805,13 +1806,13 @@ "phoenix_wins": 1 }, "UHC": { - "coins": 60126, + "coins": 63301, "clearup_achievement": true, "saved_stats": true, "deaths": 1 }, "SuperSmash": { - "coins": 113810, + "coins": 117850, "lastLevel_THE_BULK": 0, "active_class": "THE_BULK", "win_streak": 0, @@ -1867,7 +1868,7 @@ ] }, "SpeedUHC": { - "coins": 203305, + "coins": 206600, "firstJoinLobbyInt": 3, "killstreak": 0, "win_streak": 0, @@ -2475,7 +2476,7 @@ "Duels": { "kit_menu_option": "off", "sw_duels_kit": "kit_ranked_ranked_champion", - "games_played_duels": 16774, + "games_played_duels": 16801, "show_lb_option": "on", "rematch_option_1": "default", "duels_recently_played": "BRIDGE_DUEL#SUMO_DUEL#BRIDGE_DUEL", @@ -2492,17 +2493,17 @@ "duels_winstreak_best_op_duel": 14, "duels_winstreak_best_combo_duel": 6, "duels_winstreak_best_classic_duel": 18, - "melee_swings": 321294, - "losses": 5354, - "melee_hits": 113417, - "rounds_played": 13033, + "melee_swings": 322031, + "losses": 5366, + "melee_hits": 113648, + "rounds_played": 13060, "sw_duel_health_regenerated": 6475, "sw_duel_losses": 781, - "deaths": 7425, + "deaths": 7435, "sw_duel_damage_dealt": 16893, - "health_regenerated": 38179, + "health_regenerated": 38180, "sw_duel_rounds_played": 2035, - "damage_dealt": 166764, + "damage_dealt": 166773, "sw_duel_deaths": 782, "sw_duel_melee_hits": 7860, "sw_duel_melee_swings": 23838, @@ -2514,19 +2515,19 @@ "combo_duel_deaths": 30, "combo_duel_melee_swings": 15388, "combo_duel_wins": 32, - "wins": 6674, - "kills": 6071, + "wins": 6689, + "kills": 6086, "combo_duel_kills": 26, - "classic_duel_rounds_played": 7554, - "classic_duel_melee_hits": 62256, - "classic_duel_health_regenerated": 14787, - "classic_duel_damage_dealt": 120525, - "classic_duel_melee_swings": 171816, + "classic_duel_rounds_played": 7555, + "classic_duel_melee_hits": 62262, + "classic_duel_health_regenerated": 14788, + "classic_duel_damage_dealt": 120534, + "classic_duel_melee_swings": 171826, "classic_duel_wins": 4204, - "bow_shots": 21561, - "classic_duel_losses": 3176, - "classic_duel_bow_shots": 18254, - "classic_duel_deaths": 3176, + "bow_shots": 21564, + "classic_duel_losses": 3177, + "classic_duel_bow_shots": 18257, + "classic_duel_deaths": 3177, "bow_hits": 8914, "classic_duel_bow_hits": 7928, "classic_duel_kills": 4176, @@ -2607,24 +2608,24 @@ }, "current_bow_winstreak": 0, "best_bow_winstreak": 1, - "coins": 451678, + "coins": 458208, "bow_duel_wins": 1, "bow_duel_kills": 1, - "current_sumo_winstreak": 4, - "sumo_duel_losses": 759, - "sumo_duel_melee_swings": 64266, - "sumo_duel_rounds_played": 1919, - "sumo_duel_melee_hits": 20398, - "sumo_duel_deaths": 689, + "current_sumo_winstreak": 0, + "sumo_duel_losses": 770, + "sumo_duel_melee_swings": 64993, + "sumo_duel_rounds_played": 1945, + "sumo_duel_melee_hits": 20623, + "sumo_duel_deaths": 698, "best_sumo_winstreak": 18, - "sumo_duel_wins": 849, + "sumo_duel_wins": 864, |
