diff --git a/core/migrate.js b/core/migrate.js index a2948e0..8c57b21 100644 --- a/core/migrate.js +++ b/core/migrate.js @@ -1,12 +1,12 @@ const upOrDown = (fromVersion, toVersion) => { const fromNumbers = fromVersion.split(".").map(el => Number(el)); const toNumbers = toVersion.split(".").map(el => Number(el)); - for (let i = 0; i < fromNumbers.length; i++) { - if (fromNumbers[i] < toNumbers[i]) { - return "up"; - } - if (fromNumbers[i] > toNumbers[i]) { - return "down"; + const longestLength = Math.max(fromNumbers.length, toNumbers.length); + for (let i = 0; i < longestLength; i++) { + if (!fromNumbers[i]) fromNumbers[i] = 0; + if (!toNumbers[i]) toNumbers[i] = 0; + if (fromNumbers[i] != toNumbers[i]) { + return (fromNumbers[i] < toNumbers[i]) ? "up" : "down"; } } return "same"; diff --git a/core/utils.js b/core/utils.js index 0dda340..a77c951 100644 --- a/core/utils.js +++ b/core/utils.js @@ -7,25 +7,18 @@ const sleep = (ms = 0) => { const roll = (critRate, _player = null) => { dice = Math.random() * 100; - if (!_player) { - return dice < critRate; - } else { + if(_player && _player.rollCounter >= 0) { _player.rollCounter++; - if (_player.rollCounter == 100) { - _player.rollCounter = 0; - return true; // 100% guarantee rate - } let rateUp = 0; if (_player.rollCounter >= 80) { - rateUp = _player.rollCounter / 10; + rateUp = (_player.rollCounter == 100)? 100 : _player.rollCounter / 10; } - let catchIt = dice < (critRate + rateUp); - if (catchIt) { - // reset roll counter + if (dice < critRate + rateUp) { _player.rollCounter = 0; + return true; } - return catchIt; } + return dice < critRate; } module.exports = {