UNPKG

enka-network-api

Version:

Enka-network API wrapper for Genshin Impact.

52 lines (51 loc) 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UpgradableSkill = void 0; const config_file_js_1 = require("config_file.js"); const SkillAttributeAssets_1 = require("../../assets/SkillAttributeAssets"); const TextAssets_1 = require("../../assets/TextAssets"); const UpgradeCost_1 = require("../../material/UpgradeCost"); const Skill_1 = require("./Skill"); const ts_utils_1 = require("../../../utils/ts_utils"); const ExcelTransformer_1 = require("../../../client/ExcelTransformer"); class UpgradableSkill extends Skill_1.Skill { getSkillAttributes(level) { const proudSkillGroupId = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, this._data).getAsNumber("proudSkillGroupId"); if (!proudSkillGroupId) return []; const leveledSkillData = this.enka.cachedAssetsManager.getExcelData("ProudSkillExcelConfigData", proudSkillGroupId, level); if (!leveledSkillData) return []; const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, leveledSkillData); const paramDescList = json.has("paramDescList") ? json.get("paramDescList").mapArray((_, p) => p.getAsNumber()) : undefined; if (!paramDescList) return []; return paramDescList.map(id => { // TODO: better filter try { new TextAssets_1.TextAssets(id, this.enka).get("en"); } catch (_a) { return null; } return new SkillAttributeAssets_1.SkillAttributeAssets(id, json.has("paramList") ? json.get("paramList").mapArray((_, p) => p.getAsNumber()) : [], this.enka); }).filter(ts_utils_1.nonNullable); } /** * @param level the base level you want to upgrade to. (Do not add extra levels.) */ getUpgradeCost(level) { const proudSkillGroupId = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, this._data).getAsNumber("proudSkillGroupId"); if (!proudSkillGroupId) return null; const leveledSkillData = this.enka.cachedAssetsManager.getExcelData("ProudSkillExcelConfigData", proudSkillGroupId, level); if (!leveledSkillData) return null; const json = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, leveledSkillData); return new UpgradeCost_1.UpgradeCost(json.getAsNumberWithDefault(0, "coinCost"), json.has("costItems") ? json.get("costItems").mapArray((_, p) => p.getAsJsonObject()) : [], this.enka); } static getById(id, enka) { return new UpgradableSkill(this._getJsonObjectById(id, enka), enka); } } exports.UpgradableSkill = UpgradableSkill;