UNPKG

genshin-manager

Version:

<div align="center"> <p> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https://img.shields.io/npm/v/genshin-manager.svg?maxAge=3600" alt="npm version" /></a> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https:

103 lines (102 loc) 4.82 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CharacterSkill = void 0; const Client_1 = require("../../client/Client"); const OutOfRangeError_1 = require("../../errors/OutOfRangeError"); const ImageAssets_1 = require("../../models/assets/ImageAssets"); const CharacterInfo_1 = require("../../models/character/CharacterInfo"); /** * Class of character's skill */ class CharacterSkill { /** * Create a Skill * @param skillId Skill ID * @param level Skill level (1-15). Default: 1 * @param extraLevel Levels increased by constellation (0 or 3). Default: 0 */ constructor(skillId, level = 1, extraLevel = 0) { /** * Skill param descriptions * @returns (`${description}|${param}`)[] */ this.paramDescriptions = []; this.id = skillId; const skillJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarSkillExcelConfigData', this.id); this.name = Client_1.Client._cachedTextMap.get(String(skillJson.nameTextMapHash)) || ''; this.description = Client_1.Client._cachedTextMap.get(String(skillJson.descTextMapHash)) || ''; this.icon = new ImageAssets_1.ImageAssets(skillJson.skillIcon); this.extraLevel = extraLevel; this.level = level + this.extraLevel; if (this.level < 1 || this.level > 15) throw new OutOfRangeError_1.OutOfRangeError('level + extraLevel', this.level, 1, 15); if (skillJson.proudSkillGroupId === undefined || skillJson.proudSkillGroupId === 0) return; const proudSkillGroupId = skillJson.proudSkillGroupId; const proudSkillJson = Client_1.Client._getJsonFromCachedExcelBinOutput('ProudSkillExcelConfigData', proudSkillGroupId)[this.level]; const params = proudSkillJson.paramList; proudSkillJson.paramDescList.forEach((paramDescHash) => { const paramDesc = (Client_1.Client._cachedTextMap.get(String(paramDescHash)) || '').replace(/|/g, ''); if (paramDesc === '') return; this.paramDescriptions.push(paramDesc.replace(/\{param.*?\}/g, (paramTag) => { var _b, _c, _d, _e; const paramId = (_b = paramTag.match(/(?<=param).*?(?=:)/g)) === null || _b === void 0 ? void 0 : _b[0]; const replaceTag = (_c = paramTag.match(/(?<=:).*?(?=})/g)) === null || _c === void 0 ? void 0 : _c[0]; if (paramId === undefined || replaceTag === undefined) return ''; const fixedIndex = +((_e = (_d = replaceTag.match(/(?<=F)./g)) === null || _d === void 0 ? void 0 : _d[0]) !== null && _e !== void 0 ? _e : '0'); const isInt = replaceTag.includes('I'); const isPercent = replaceTag.includes('P'); const paramValue = params[+paramId - 1]; if (isInt) return `${Math.floor(paramValue)}`; if (isPercent) return `${(paramValue * 100).toFixed(fixedIndex)}%`; return `${paramValue.toFixed(fixedIndex)}`; })); }); } /** * Get all skill IDs * @returns All skill IDs */ static get allSkillIds() { const characterIds = CharacterInfo_1.CharacterInfo.allCharacterIds; return characterIds.flatMap((characterId) => { if ([10000005, 10000007].includes(characterId)) { return CharacterInfo_1.CharacterInfo.getTravelerSkillDepotIds(characterId).flatMap((skillDepotId) => { return new CharacterInfo_1.CharacterInfo(characterId, skillDepotId).skillOrder; }); } return new CharacterInfo_1.CharacterInfo(characterId).skillOrder; }); } /** * Get skill order by character ID * @param characterId Character ID * @param skillDepotId Skill depot ID * @returns Skill order */ static getSkillOrderByCharacterId(characterId, skillDepotId) { const avatarJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarExcelConfigData', characterId); const depotId = skillDepotId && [10000005, 10000007].includes(characterId) ? skillDepotId : avatarJson.skillDepotId; const depotJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarSkillDepotExcelConfigData', depotId); return [501, 701].includes(depotId) ? depotJson.skills.slice(0, 1) : depotJson.skills .slice(0, 2) .concat(depotJson.energySkill); } } exports.CharacterSkill = CharacterSkill; _a = CharacterSkill; (() => { Client_1.Client._addExcelBinOutputKeyFromClassPrototype(_a.prototype); })();