ruzli
4/12/2019 - 2:29 AM

Power Pullee

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);
}