setup.qsp_rand = function (min, max) { min = Math.ceil(min); max = Math.floor(max) + 1; let randomNumber; if(State.temporary.randFunctionOverwrite && State.temporary.randFunctionOverwrite.length > 0){ randomNumber = State.temporary.randFunctionOverwrite.last()(); } else{ if(!State.variables.randomNumbers){ State.variables.randomNumbers = []; } while(State.variables.randomNumbers.length < 50) State.variables.randomNumbers.push(Math.random()); randomNumber = State.variables.randomNumbers.shift(); } //return Math.floor(State.variables.randomNumbers.shift() * (max - min) + min); // The maximum is inclusive and the minimum is inclusive return Math.floor(randomNumber * (max - min) + min); // The maximum is inclusive and the minimum is inclusive } setup.cyrb128 = function (str) { let h1 = 1779033703, h2 = 3144134277, h3 = 1013904242, h4 = 2773480762; for (let i = 0, k; i < str.length; i++) { k = str.charCodeAt(i); h1 = h2 ^ Math.imul(h1 ^ k, 597399067); h2 = h3 ^ Math.imul(h2 ^ k, 2869860233); h3 = h4 ^ Math.imul(h3 ^ k, 951274213); h4 = h1 ^ Math.imul(h4 ^ k, 2716044179); } h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067); h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233); h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213); h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179); return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0]; } setup.mulberry32 = function(a) { return function() { var t = a += 0x6D2B79F5; t = Math.imul(t ^ t >>> 15, t | 1); t ^= t + Math.imul(t ^ t >>> 7, t | 61); return ((t ^ t >>> 14) >>> 0) / 4294967296; } }