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:

62 lines (61 loc) 2.81 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.WeaponAscension = void 0; const Client_1 = require("../../client/Client"); const OutOfRangeError_1 = require("../../errors/OutOfRangeError"); const StatProperty_1 = require("../../models/StatProperty"); /** * Class of weapon ascension */ class WeaponAscension { /** * Create a weapon ascension * @param weaponId Weapon ID * @param promoteLevel Weapon promote level (0-6). Default: 0 */ constructor(weaponId, promoteLevel = 0) { var _b; this.id = weaponId; this.promoteLevel = promoteLevel; const maxPromoteLevel = _a.getMaxPromoteLevelByWeaponId(this.id); if (this.promoteLevel < 0 || this.promoteLevel > maxPromoteLevel) { throw new OutOfRangeError_1.OutOfRangeError('promoteLevel', this.promoteLevel, 0, maxPromoteLevel); } const weaponJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponExcelConfigData', this.id); const weaponPromoteJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponPromoteExcelConfigData', weaponJson.weaponPromoteId)[this.promoteLevel]; this.costItems = weaponPromoteJson.costItems .map((costItem) => { return { id: costItem.id, count: costItem.count, }; }) .filter((costItem) => costItem.id !== undefined && costItem.count !== undefined); this.costMora = (_b = weaponPromoteJson.coinCost) !== null && _b !== void 0 ? _b : 0; this.addProps = weaponPromoteJson.addProps .filter((addProp) => addProp.propType !== undefined && addProp.propType !== 'FIGHT_PROP_NONE' && addProp.value !== undefined) .map((addProp) => { var _b; return new StatProperty_1.StatProperty(addProp.propType, ((_b = addProp.value) !== null && _b !== void 0 ? _b : 0)); }); this.unlockMaxLevel = weaponPromoteJson.unlockMaxLevel; } /** * Get max promote level by weapon ID * @param weaponId Weapon ID * @returns Max promote level */ static getMaxPromoteLevelByWeaponId(weaponId) { const weaponJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponExcelConfigData', weaponId); const weaponPromoteJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponPromoteExcelConfigData', weaponJson.weaponPromoteId); return Math.max(...Object.values(weaponPromoteJson).map((promote) => { var _b; return ((_b = promote.promoteLevel) !== null && _b !== void 0 ? _b : 0); })); } } exports.WeaponAscension = WeaponAscension; _a = WeaponAscension; (() => { Client_1.Client._addExcelBinOutputKeyFromClassPrototype(_a.prototype); })();