From cc12282de46d82dbd7089355fee823d4edc13663 Mon Sep 17 00:00:00 2001 From: Guitared Date: Wed, 31 Mar 2021 20:07:08 +0700 Subject: [PATCH 1/4] Improve roll logic --- core/utils.js | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/core/utils.js b/core/utils.js index 0dda340..2db79bf 100644 --- a/core/utils.js +++ b/core/utils.js @@ -7,25 +7,17 @@ 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 + if(_player.rollCounter >= 80) { + let rateUp = (_player.rollCounter == 100)? 100 : _player.rollCounter / 10; + if(dice < critRate + rateUp) { + _player.rollCounter = 0; + return true; + } } - let rateUp = 0; - if (_player.rollCounter >= 80) { - rateUp = _player.rollCounter / 10; - } - let catchIt = dice < (critRate + rateUp); - if (catchIt) { - // reset roll counter - _player.rollCounter = 0; - } - return catchIt; } + return dice < critRate; } module.exports = { From 5317a23ffe8f31cc36c3a5412d5381a0e358609f Mon Sep 17 00:00:00 2001 From: Guitared Date: Wed, 31 Mar 2021 20:38:33 +0700 Subject: [PATCH 2/4] enable dynamic subversion for upOrDown function e.g. 1.0 vs 1.0.0.0.0.0.1 --- core/migrate.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/migrate.js b/core/migrate.js index a2948e0..b1d9bb1 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"; @@ -22,7 +22,7 @@ const migrate = (schema, migrations, toVersion) => { return schema; } const currentMigration = migrations.find( - migration => migration[direction === "up" ? "from" : "to"] === fromVersion + migration => migration[direction === "up" ? "from" : "to"] === fromVersion; ); const newSchema = currentMigration[direction](schema); return migrate(newSchema, migrations, toVersion); From 6abb62c4efdfd978c3a1f2cd6422e255b5a58f34 Mon Sep 17 00:00:00 2001 From: Guitared Date: Wed, 31 Mar 2021 20:42:17 +0700 Subject: [PATCH 3/4] Remove semicolon --- core/migrate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/migrate.js b/core/migrate.js index b1d9bb1..8c57b21 100644 --- a/core/migrate.js +++ b/core/migrate.js @@ -22,7 +22,7 @@ const migrate = (schema, migrations, toVersion) => { return schema; } const currentMigration = migrations.find( - migration => migration[direction === "up" ? "from" : "to"] === fromVersion; + migration => migration[direction === "up" ? "from" : "to"] === fromVersion ); const newSchema = currentMigration[direction](schema); return migrate(newSchema, migrations, toVersion); From 9e74774de27a3e0a41eb6d4a2097a649b7547112 Mon Sep 17 00:00:00 2001 From: Guitared Date: Wed, 31 Mar 2021 21:07:12 +0700 Subject: [PATCH 4/4] fix rollcounter not reset after successful roll --- core/utils.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/utils.js b/core/utils.js index 2db79bf..a77c951 100644 --- a/core/utils.js +++ b/core/utils.js @@ -9,12 +9,13 @@ const roll = (critRate, _player = null) => { dice = Math.random() * 100; if(_player && _player.rollCounter >= 0) { _player.rollCounter++; - if(_player.rollCounter >= 80) { - let rateUp = (_player.rollCounter == 100)? 100 : _player.rollCounter / 10; - if(dice < critRate + rateUp) { - _player.rollCounter = 0; - return true; - } + let rateUp = 0; + if (_player.rollCounter >= 80) { + rateUp = (_player.rollCounter == 100)? 100 : _player.rollCounter / 10; + } + if (dice < critRate + rateUp) { + _player.rollCounter = 0; + return true; } } return dice < critRate;