enka-network-api
Version:
Enka-network API wrapper for Genshin Impact.
41 lines (40 loc) • 2.05 kB
JavaScript
"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;