UNPKG

@plokkke/sw-rune

Version:

Library defining all utils for summoners war rune handling

48 lines (47 loc) 2.16 kB
"use strict"; 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;