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:
58 lines (57 loc) • 2.7 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CharacterAscension = void 0;
const Client_1 = require("../../client/Client");
const OutOfRangeError_1 = require("../../errors/OutOfRangeError");
const StatProperty_1 = require("../../models/StatProperty");
/**
* Class of character ascension
*/
class CharacterAscension {
/**
* Create a character ascension
* @param characterId Character ID
* @param promoteLevel Character promote level (0-6). Default: 0
*/
constructor(characterId, promoteLevel = 0) {
var _b;
this.id = characterId;
this.promoteLevel = promoteLevel;
const maxPromoteLevel = _a.getMaxPromoteLevelByCharacterId(this.id);
if (this.promoteLevel < 0 || this.promoteLevel > maxPromoteLevel) {
throw new OutOfRangeError_1.OutOfRangeError('promoteLevel', this.promoteLevel, 0, maxPromoteLevel);
}
const avatarJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarExcelConfigData', this.id);
const avatarPromoteJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarPromoteExcelConfigData', avatarJson.avatarPromoteId)[this.promoteLevel];
this.costItems = avatarPromoteJson.costItems
.map((costItem) => {
return {
id: costItem.id,
count: costItem.count,
};
})
.filter((costItem) => costItem.id !== undefined && costItem.count !== undefined);
this.costMora = (_b = avatarPromoteJson.scoinCost) !== null && _b !== void 0 ? _b : 0;
this.addProps = avatarPromoteJson.addProps.map((addProp) => {
var _b;
return new StatProperty_1.StatProperty(addProp.propType, ((_b = addProp.value) !== null && _b !== void 0 ? _b : 0));
});
this.unlockMaxLevel = avatarPromoteJson.unlockMaxLevel;
}
/**
* Get max promote level by character ID
* @param characterId Character ID
* @returns Max promote level
*/
static getMaxPromoteLevelByCharacterId(characterId) {
const avatarJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarExcelConfigData', characterId);
const avatarPromoteJson = Client_1.Client._getJsonFromCachedExcelBinOutput('AvatarPromoteExcelConfigData', avatarJson.avatarPromoteId);
return Math.max(...Object.values(avatarPromoteJson).map((promote) => { var _b; return ((_b = promote.promoteLevel) !== null && _b !== void 0 ? _b : 0); }));
}
}
exports.CharacterAscension = CharacterAscension;
_a = CharacterAscension;
(() => {
Client_1.Client._addExcelBinOutputKeyFromClassPrototype(_a.prototype);
})();