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