Power Pullee
var config = {
betHeader: { label: "Bet", type: "noop" },
//**************************************************************** */
bet_base: { label: "Base", type: "balance", value: 100 },
bet_max: { label: "Maximal", type: "balance", value: 2000 },
bet_power: { label: "Power", type: "multiplier", value: 0.14 },
targetHeader: { label: "Target", type: "noop" },
//**************************************************************** */
target_base: { label: "Base", type: "multiplier", value: 2 },
target_max: { label: "Maximal", type: "multiplier", value: 15 },
target_power: { label: "Power", type: "multiplier", value: 0.125 },
featuresHeader: { label: "Features", type: "noop" },
//**************************************************************** */
reverse_bet: { label: "Reverse Bet", type: "checkbox", value: true },
reverse_target: { label: "Reverse Target", type: "checkbox", value: true },
change_seed: { label: "Change seed every ", type: "number", value: 250 },
}
var bet_base = config.bet_base.value
var bet_max = config.bet_max.value
var bet_power = config.bet_power.value
var target_base = config.target_base.value
var target_max = config.target_max.value
var target_power = config.target_power.value
var reverse_bet = config.reverse_bet.value
var reverse_target = config.reverse_target.value
var change_seed = config.change_seed.value
var engine = this
var target = CreatePullee(target_base,target_base,target_max,target_power)();
var bet = CreatePullee(bet_base,bet_base,bet_max,bet_power)();
let rolls = 0
while(true){
if (rolls >= change_seed && change_seed != 0){
await generateSeed()
rolls = 0
} else {
rolls++
}
this.clearLog()
this.log(`Roll: ${rolls}`)
this.log(`Bet: ${Math.round(bet.pull() / 100)}`)
this.log(`Target: ${target.pull().toFixed(2)}`)
const{multiplier} = await this.bet(betSize(bet.current), target.current.toFixed(2) + 1)
if (multiplier >= target.current.toFixed(2) + 1){)
if (reverse_target) target.reverse(); target.pull();
if (reverse_bet) bet.reverse(); bet.pull();
}
if (multiplier >= (target.current.toFixed(2)+1) * 2){
//target.yank("initial") // 0.5
// target.yank("max") // 1
// target.reverse(); target.pull();
}
if (betSize(bet.current) > config.bet_max.value * 0.7){
//target.puller="min"; target.pull(); //0.21875
}
}
function betSize(bet) {
return Math.max(100, Math.round((bet) / 100) * 100)
}
async function generateSeed() {
const { server_seed_hash } = await engine.newSeedPair()
const clientSeed = await createSeed()
await engine.setClientSeed(clientSeed)
}
async function createSeed() {
const s = new TextEncoder('utf-8').encode(Date.now());
const h = await crypto.subtle.digest('SHA-256', s);
const a = Array.from(new Uint8Array(h));
const r = a.map(b => ('00' + b.toString(16)).slice(-2)).join('');
return r;
}
/* Can create using a single number as an argument, and modify later if needed */
function CreatePullee(initial, min = undefined, max = undefined, power = 0) {
min===undefined?min=initial:null;
max===undefined?max=initial:null;
var pullee = {
min: min,
max: max,
current: initial,
puller: "max",
reversed: false,
initial: initial,
power: power
}
return function(){
// yank() will instantly pull the number to the puller (essentially a 100% power pull)
pullee.yank=function(puller=pullee.puller){pullee.current=pullee[puller]; return pullee.current;};
// attach the pull function so it can be called as a method
pullee.pull=function(puller=undefined){pullee.current=pull(pullee,puller); return pullee.current;};
// attach a function to reverse the polarity, reversed will become true if false, and false if true
pullee.reverse=function(){pullee.reversed=!pullee.reversed;}
return pullee;
};
}
function pull(num=undefined, to_num=undefined, percent=undefined) {
var pullee;
if (typeof num === "object") {
pullee = {};
pullee = Object.create(num);
num = pullee.current;
if (to_num!==undefined){
if ((typeof to_num==="string") && (to_num==="max" || to_num==="min" || to_num==="reverse")){
if (to_num==="reverse"){
let reversable=false;
pullee.puller==="max"?reversable="min":null;
pullee.puller==="min"?reversable="max":null;
if (reversable!==false){
pullee.puller=reversable;
}
} else {
pullee.puller=to_num;
}
to_num = pullee[pullee.puller];
} else if (typeof to_num==="number") {
} else if (typeof to_num==="string") {
if (pullee[to_num]!==undefined){
pullee.puller=to_num;
to_num = pullee[pullee.puller];
} else {
to_num = pullee[pullee.puller];
}
} else {
to_num = pullee[pullee.puller];
}
} else {
if (pullee.reversed===true && (pullee.puller==="max" || pullee.puller==="min")){
let reversable=false;
pullee.puller==="max"?reversable="min":null;
pullee.puller==="min"?reversable="max":null;
if (reversable!==false){
pullee.puller=reversable;
}
}
to_num = pullee[pullee.puller];
}
if (percent!==undefined){
pullee.power = percent;
} else {
percent = pullee.power;
}
} else {
}
let pull_strength;
if (num===undefined || to_num===undefined || percent===undefined){
console.log('PULL() Error, an argument was missing.');
pull_strength = 0;
} else if (typeof num!=="number" || typeof to_num!=="number" || typeof percent!=="number"){
console.log('PULL() Error, all arguments must be numbers');
pull_strength = 0;
} else {
percent>1?percent=1:null;
pull_strength = ((to_num - num) * percent);
}
return (num + pull_strength);
}