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:

61 lines (60 loc) 2.08 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.SetBonus = void 0; const Client_1 = require("../client/Client"); const Artifact_1 = require("../models/Artifact"); /** * Class of set bonuses that can be activated by artifacts */ class SetBonus { /** * Create a SetBonus * @param artifacts Artifacts equipped by the character */ constructor(artifacts) { const countIds = {}; const activeSetIds = []; const setBracers = {}; artifacts.forEach((artifact) => { const setId = artifact.setId; if (setId !== undefined) { countIds[setId] = (countIds[setId] || 0) + 1; const setJson = Client_1.Client._getJsonFromCachedExcelBinOutput('ReliquarySetExcelConfigData', setId); setBracers[setId] = new Artifact_1.Artifact(setJson.containsList[0], 10001); } }); Object.keys(countIds).forEach((setId) => { const count = countIds[setId]; if (_a.oneSetBonusIds.includes(+setId)) countIds[setId] = 1; else if (count >= 4) countIds[setId] = 4; else if (count >= 2) countIds[setId] = 2; else delete countIds[setId]; activeSetIds.push(setId); }); this.oneSetBonus = activeSetIds .filter((setId) => countIds[setId] === 1) .map((setId) => setBracers[setId]); this.twoSetBonus = activeSetIds .filter((setId) => countIds[setId] === 2) .map((setId) => setBracers[setId]); this.fourSetBonus = activeSetIds .filter((setId) => countIds[setId] === 4) .map((setId) => setBracers[setId]); } } exports.SetBonus = SetBonus; _a = SetBonus; /** * IDs of set bonuses that can be activated with one artifact */ SetBonus.oneSetBonusIds = [ 15009, 15010, 15011, 15012, 15013, ]; (() => { Client_1.Client._addExcelBinOutputKeyFromClassPrototype(_a.prototype); })();