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:

66 lines (65 loc) 2.92 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.WeaponRefinement = void 0; const Client_1 = require("../../client/Client"); const OutOfRangeError_1 = require("../../errors/OutOfRangeError"); const StatProperty_1 = require("../../models/StatProperty"); /** * Class of weapon refinement */ class WeaponRefinement { /** * Create a weapon refinement * @param weaponId Weapon ID * @param refinementRank Weapon refinement rank (1-5). Default: 1 */ constructor(weaponId, refinementRank = 1) { this.id = weaponId; this.refinementRank = refinementRank; if (this.refinementRank < 1 || this.refinementRank > 5) throw new OutOfRangeError_1.OutOfRangeError('refinementRank', this.refinementRank, 1, 5); const weaponJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponExcelConfigData', this.id); const skillAffix = weaponJson.skillAffix[0] * 10 + this.refinementRank - 1; if (Client_1.Client._hasCachedExcelBinOutputById('EquipAffixExcelConfigData', skillAffix)) { const equipAffixJson = Client_1.Client._getJsonFromCachedExcelBinOutput('EquipAffixExcelConfigData', skillAffix); this.skillName = Client_1.Client._cachedTextMap.get(String(equipAffixJson.nameTextMapHash)) || ''; this.skillDescription = Client_1.Client._cachedTextMap.get(String(equipAffixJson.descTextMapHash)) || ''; this.addProps = equipAffixJson.addProps .filter((addProp) => addProp.propType !== undefined && addProp.propType !== 'FIGHT_PROP_NONE') .map((addProp) => { var _b; return new StatProperty_1.StatProperty(addProp.propType, ((_b = addProp.value) !== null && _b !== void 0 ? _b : 0)); }); } else { this.skillName = undefined; this.skillDescription = undefined; this.addProps = []; if (this.refinementRank > 1) throw new OutOfRangeError_1.OutOfRangeError('refinementRank', this.refinementRank, 1, 1); } } /** * Get max refinement rank by weapon ID * @param weaponId Weapon ID * @returns Max refinement rank */ static getMaxRefinementRankByWeaponId(weaponId) { const weaponJson = Client_1.Client._getJsonFromCachedExcelBinOutput('WeaponExcelConfigData', weaponId); for (let i = 1; i < 6; i++) { const skillAffix = weaponJson.skillAffix[0] * 10 + i - 1; if (!Client_1.Client._hasCachedExcelBinOutputById('EquipAffixExcelConfigData', skillAffix)) return i - 1 || 1; } return 5; } } exports.WeaponRefinement = WeaponRefinement; _a = WeaponRefinement; (() => { Client_1.Client._addExcelBinOutputKeyFromClassPrototype(_a.prototype); })();