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
JavaScript
;
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);
})();