Hyppy / AutoHorde

// ==UserScript==
// @name         AutoHorde
// @namespace    http://tampermonkey.net/
// @version      2.2
// @description  Automatically click various action buttons in Gooboo
// @author       Hyppy
// @match        https://html-classic.itch.zone/html/9100894/index.html
// @match        https://tendsty.github.io/gooboo/
// @match        https://tendsty.itch.io/gooboo
// @icon         https://tendsty.github.io/gooboo/favicon-32x32.png
// @license      MIT
// @updateURL    https://openuserjs.org/src/scripts/Hyppy/AutoHorde.user.js
// @downloadURL  https://openuserjs.org/src/scripts/Hyppy/AutoHorde.user.js
// @homepage     https://openuserjs.org/scripts/Hyppy/AutoHorde
// @grant        none
// ==/UserScript==

// ==OpenUserJS==
// @author Hyppy
// ==/OpenUserJS==

/* jshint esversion: 6 */ 

(function() {
    'use strict';
    // Define vue store object for use across script
    var vsO = document.getElementById('app').__vue__.$store;


    // ---------------
    //  XHORDE SECTION
    // ---------------

    // Top button
    var actionInt = -1;
    var actionState = -1; // -1 is disabled, 1 is for all buttons, 2 is for utilities and short cooldowns only
    var actionDiv = document.createElement('div');
    actionDiv.id = 'actionDivId';
    actionDiv.innerHTML = `&nbsp&nbsp<button data-autoaction id="actionButton" type="button" class="balloon-text-dynamic v-chip theme--dark v-size--small">XHorde OFF</button>`;
    document.getElementsByClassName("v-toolbar__content")[0].querySelector('.spacer').insertAdjacentElement("afterend", actionDiv);

    // Toggle
    document.getElementById("actionButton").onclick = function () {
        if (actionInt == -1) {
            actionInt = setInterval( actionClicker, 1000);
            actionState = 1;
            document.getElementById("actionButton").innerHTML = "XHorde ON - ALL";
        } else if ( actionState == 1 ) {
            actionState = 2;
            document.getElementById("actionButton").innerHTML = "XHorde ON - SHORT";
        } else {
            clearInterval(actionInt);
            actionInt = -1;
            actionState = -1;
            document.getElementById("actionButton").innerHTML = "XHorde OFF";
        }

    };

    // Clicker logic
    function actionClicker() {
        var actionList = vsO.getters['horde/itemsActiveList'];
        var actionKeys = Object.keys(actionList);
        if (actionKeys.length > 0) {
            for (let i=0; i<actionKeys.length; i++) {
                if (Object.entries(actionList)[i][1].cooldownLeft <= 0) {
                    if (actionState == 1 || Object.entries(actionList)[i][1].cooldown(Object.entries(actionList)[i][1].level) < 601 || Object.entries(actionList)[i][1].activeType == 'utility') {
                        vsO.dispatch("horde/useActive", actionKeys[i]);
                    }
                }
            }
        }
    }

    // ---------------
    //  XFARM SECTION
    // ---------------

    // Top button
    var farmInt = -1;
    var farmDiv = document.createElement('div');
    farmDiv.id = 'farmDivId';
    farmDiv.innerHTML = '&nbsp&nbsp<button data-autoaction id="farmButton" type="button" class="balloon-text-dynamic v-chip theme--dark v-size--small">XFarm OFF</button>';
    document.getElementsByClassName("v-toolbar__content")[0].querySelector('.spacer').insertAdjacentElement("afterend", farmDiv);

    // Toggle
    document.getElementById("farmButton").onclick = function () {
        if (farmInt == -1) {
            farmInt = setInterval( farmClicker, 1000);
            document.getElementById("farmButton").innerHTML = "XFarm ON";
        }
        else {
            clearInterval(farmInt);
            farmInt = -1;
            document.getElementById("farmButton").innerHTML = "XFarm OFF";
        }

    };

    // Clicker logic
    function farmClicker() {
        vsO.dispatch("farm/replantAll");
    }

    // ---------------
    //  XGALLERYPRESTIGE SECTION
    // ---------------

    // Top button
    var galleryInt = -1;
    var galleryDiv = document.createElement('div');
    galleryDiv.id = 'galleryDivId';
    galleryDiv.innerHTML = '&nbsp&nbsp<button data-autoaction id="galleryButton" type="button" class="balloon-text-dynamic v-chip theme--dark v-size--small">XGalleryPrestige OFF</button>';
    document.getElementsByClassName("v-toolbar__content")[0].querySelector('.spacer').insertAdjacentElement("afterend", galleryDiv);

    // Toggle
    document.getElementById("galleryButton").onclick = function () {
        if (galleryInt == -1) {
            galleryInt = setInterval( galleryClicker, 250);
            document.getElementById("galleryButton").innerHTML = "XGalleryPrestige ON";
        }
        else {
            clearInterval(galleryInt);
            galleryInt = -1;
            document.getElementById("galleryButton").innerHTML = "XGalleryPrestige OFF";
        }

    };

    // Clicker logic
    function galleryClicker() {
        
        while (vsO.state.currency.gallery_inspiration.value > 0) {
            vsO.dispatch('gallery/buyIdea', "advertise");
        }
        
        if (vsO.getters['gallery/prestigeGain'] > 0) {
            vsO.dispatch("gallery/prestige");
        }
    }

    // ---------------
    //  XNITER SECTION
    // ---------------

    // Top button
    var niterMoveOn = 1000;
    var niterDiv = document.createElement('div');
    var niterInt = -1;
    niterDiv.id = 'niterDivId';
    niterDiv.innerHTML = `&nbsp&nbsp<button data-autoaction id="niterButton" type="button" class="balloon-text-dynamic v-chip theme--dark v-size--small">XNiter OFF</button>`;
    document.getElementsByClassName("v-toolbar__content")[0].querySelector('.spacer').insertAdjacentElement("afterend", niterDiv);
    var niterButton = niterDiv.children[0];

    // Toggle
    document.getElementById("niterButton").onclick = function () {
        if (niterInt == -1) {
            niterMoveOn = 1000;
            niterButton.innerHTML = "XNiter ON - " + niterMoveOn;
            niterInt = setInterval( niterClicker, 1000);
        }
        else if ( niterMoveOn == 1000 ){
            niterMoveOn = 100;
            niterButton.innerHTML = "XNiter ON - " + niterMoveOn;
        }
        else {
            clearInterval(niterInt);
            niterInt = -1;
            niterButton.style = "";
            niterButton.innerHTML = "XNiter OFF";
        }
    };

    // Clicker logic
    function niterClicker() {
        niterButton.style = "";
        niterButton.innerHTML = "XNiter ON - " + niterMoveOn;
        if ( vsO.state.stat.mining_maxDepth0.value < 130 ) {
            niterButton.style = "background-color:red";
            niterButton.innerHTML = "Need Max Depth of 130";
        } else if ( vsO.state.stat.mining_maxDepth0.value == vsO.state.mining.depth ) {
            niterButton.style = "background-color:red";
            niterButton.innerHTML = "At Max Depth, Go Lower";
        } else if ( vsO.state.mining.depth < 130 ) {
            vsO.state.mining.depth = 130;
        } else {
            if ( vsO.state.mining.breaks[vsO.state.mining.depth - 1] > niterMoveOn ) {
                vsO.state.mining.depth = vsO.state.mining.depth + 1;
                }
        }
    }



})();