Files
habitica/common/script/fns/predictableRandom.js
Matteo Pagliazzi bb6f0f4252 split user.fns
2016-03-08 18:58:39 +01:00

21 lines
533 B
JavaScript

import _ from 'lodash';
/*
Because the same op needs to be performed on the client and the server (critical hits, item drops, etc),
we need things to be "random", but technically predictable so that they don't go out-of-sync
*/
module.exports = function(user, seed) {
var x;
if (!seed || seed === Math.PI) {
seed = _.reduce(user.stats, (function(m, v) {
if (_.isNumber(v)) {
return m + v;
} else {
return m;
}
}), 0);
}
x = Math.sin(seed++) * 10000;
return x - Math.floor(x);
};