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:

28 lines (27 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calculatePromoteLevel = calculatePromoteLevel; const OutOfRangeError_1 = require("../errors/OutOfRangeError"); /** * Calculate promote level * @param promotesJson Promotes json * @param level Level (1-90) * @param isAscended Is ascended * @returns Promote level (0-6) */ function calculatePromoteLevel(promotesJson, level, isAscended) { if (level < 1 || level > 90) throw new OutOfRangeError_1.OutOfRangeError('level', level, 1, 90); const maxPromoteLevel = Math.max(...Object.values(promotesJson).map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0); })); const beforePromoteLevels = Object.values(promotesJson) .filter((promote) => promote.unlockMaxLevel < level) .map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0) + 1; }); const afterPromoteLevels = Object.values(promotesJson) .filter((promote) => promote.unlockMaxLevel <= level) .map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0) + 1; }); const beforePromoteLevelByLevel = Math.max(...beforePromoteLevels, 0); const afterPromoteLevelByLevel = Math.max(...afterPromoteLevels, 0); return isAscended ? Math.min(afterPromoteLevelByLevel, maxPromoteLevel) : beforePromoteLevelByLevel; }