@plokkke/sw-rune
Version:
Library defining all utils for summoners war rune handling
48 lines (47 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomEffectValue = exports.randomSubEffect = exports.randomMainEffect = exports.randomQuality = exports.randomGrade = exports.randomSlot = exports.randomSet = exports.randomHasInnateStat = exports.randomIsAncient = void 0;
const constants_1 = require("./constants");
const random_1 = require("@plokkke/toolbox/random");
const probalilities_1 = require("./probalilities");
const constraints_1 = require("./constraints");
function randomIsAncient() {
return Math.random() < probalilities_1.ANCIENT_PROBABILITY;
}
exports.randomIsAncient = randomIsAncient;
function randomHasInnateStat() {
return Math.random() < probalilities_1.INNATE_STAT_PROBABILITY;
}
exports.randomHasInnateStat = randomHasInnateStat;
function randomSet() {
return constants_1.RUNE_SETS[(0, random_1.randomIdxByDensity)(probalilities_1.SET_DENSITY)];
}
exports.randomSet = randomSet;
function randomSlot() {
return (0, random_1.randomInt)(1, 6);
}
exports.randomSlot = randomSlot;
function randomGrade() {
return ((0, random_1.randomIdxByDensity)(probalilities_1.GRADE_DENSITY) + 1);
}
exports.randomGrade = randomGrade;
function randomQuality() {
return constants_1.RUNE_QUALITIES[(0, random_1.randomIdxByDensity)(probalilities_1.QUALITY_DENSITY)];
}
exports.randomQuality = randomQuality;
function randomMainEffect(slot) {
return (0, random_1.randomItem)(constraints_1.MAIN_EFFECT_BY_SLOT[slot]);
}
exports.randomMainEffect = randomMainEffect;
function randomSubEffect(...exclude) {
const excluded = exclude.flat();
const effects = constants_1.RUNE_EFFECTS.filter((effect) => !excluded.includes(effect));
return (0, random_1.randomItem)(effects);
}
exports.randomSubEffect = randomSubEffect;
function randomEffectValue(grade, effect, isAncientFirst = false) {
const rangeByEffect = isAncientFirst && grade === 6 ? constraints_1.ANCIENT_RANGE_BY_GRADE_AND_EFFECT[grade] : constraints_1.RANGE_BY_GRADE_AND_EFFECT[grade];
const { min, max } = rangeByEffect[effect];
return (0, random_1.randomInt)(min, max);
}
exports.randomEffectValue = randomEffectValue;