UNPKG

enka-network-api

Version:

Enka-network API wrapper for Genshin Impact.

41 lines (40 loc) 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Weapon = void 0; const config_file_js_1 = require("config_file.js"); const WeaponData_1 = require("./WeaponData"); const IGOODResolvable_1 = require("../good/IGOODResolvable"); const ExcelTransformer_1 = require("../../client/ExcelTransformer"); class Weapon { constructor(data, enka) { var _a; /** The name of character who has this weapon for the GOOD. */ this.location = null; this.enka = enka; this._data = data; const json = new config_file_js_1.JsonReader(config_file_js_1.defaultJsonOptions, this._data); this.weaponData = WeaponData_1.WeaponData.getById(json.getAsNumber("itemId"), enka); const weaponDataJson = new config_file_js_1.JsonReader(ExcelTransformer_1.excelJsonOptions, this.weaponData._data); const weapon = json.get("weapon"); this.refinementRank = weapon.getAsNumberWithDefault(0, "affixMap", `${weaponDataJson.getAsNumberWithDefault(0, "skillAffix", 0)}`) + 1; this.refinement = (_a = this.weaponData.refinements[this.refinementRank - 1]) !== null && _a !== void 0 ? _a : null; this.level = weapon.getAsNumber("level"); this.ascension = weapon.getAsNumberWithDefault(0, "promoteLevel"); this.maxLevel = (this.ascension + 1) * 20 - (this.ascension > 1 ? (this.ascension - 1) * 10 : 0); this.isAwaken = this.ascension >= 2; this.weaponStats = this.weaponData.getStats(this.ascension, this.level); } /** `lock` is always false since enka.network cannot get the lock state from the game. */ toGOOD() { var _a; return { key: (0, IGOODResolvable_1.convertToGOODKey)(this.weaponData.name.get("en")), level: this.level, ascension: this.ascension, refinement: Math.max(this.refinementRank, 1), location: (_a = this.location) !== null && _a !== void 0 ? _a : "", lock: false, }; } } exports.Weapon = Weapon;