Random script i found?

much better than before Press [=] for instructions also my discord not Trollers xD#0961


    // ==UserScript==
    // @name         Random script i found?
    // @namespace    Don't use console for this!
    // @version      v2.6.6
    // @description  much better than before Press [=] for instructions also my discord not Trollers xD#0961
    // @license      TC Meadow
    // @author       TC Meadow
    // @match        *://zombs.io/*
    // @require      https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
    // ==/UserScript==
    /*
    ######### CHANGELOG:
    1.0.0 -> 1.79.9 === Unknown, this was too far before the changelog was created
    1.80.0 -> 1.90.0 ==== UI fixes
    1.90.1 -> 1.93.2 ===== Menu and score logger styling
    1.93.3 -> 1.97.2 ====== User agent adjusts on CSS margin values and basic user agent detection to prevent inaccuracy over different screen resolutions
    1.97.3 ======= Created Changelog
    1.97.4 ======== Map styling
    1.97.5 -> 1.97.9 ========= Fixed bugs with the onEnterWorld handlers and similar
    1.98.1 -> 1.98.9 ========== Made it so that it blurs the game canvas and score logger when you open the menu
    1.99.0 -> 1.99.5 =========== Created an algorithm for moving to a specific position on the map. Will be implemented later
    1.99.5 -> 2.0.0 === Fixed bugs, and finally v2!
    2.0.0 -> 2.1.6 ==== Made the MapMover stop when it gets to the destination
    2.1.7 -> 2.1.9 ===== Optimized code and performance
    2.2.0 -> 2.3.1 ====== Added new features to MapMover, for example being able to cancel the process, and a restart at a new click. Also fixed some bugs with it.
    2.3.2 -> 2.3.7 ======= Better performance, also made game blurring and focusing more accurate when you open the menu. A couple other minor changes but thats pretty much it
    2.3.7 -> 2.3.9 ======== Optimization, eHaxx watermark, and cross-compatability on different devices
    2.3.9 -> 2.4.1 ========= Added confirmation when you wanted to MapMove
    2.4.1 -> 2.4.3 ========== Added coordinates to bottom left of game, and fixed some styling issues
    2.4.4 ===== Fixed some bugs with MapMover 4 minute timeouts
    2.4.4 -> 2.4.6 ====== Made the script load with less glitches in styling
    2.4.6 -> 2.6.6 ======= Added region capacity as to adapt to the new server population patches
    */
     
    let serverCapacity;
    let capacity = new XMLHttpRequest();
    capacity.open("GET", "http://zombs.io/capacity", true);
    capacity.onreadystatechange = () => {
        if(capacity.readyState === 4) {
            if(capacity.status === 200) {
                serverCapacity = JSON.parse(capacity.responseText);
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(1)").label = `US East [${serverCapacity.regions["US East"].players} / ${serverCapacity.regions["US East"].capacity}]`;
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(2)").label = `US West [${serverCapacity.regions["US West"].players} / ${serverCapacity.regions["US West"].capacity}]`;
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(3)").label = `Europe [${serverCapacity.regions["Europe"].players} / ${serverCapacity.regions["Europe"].capacity}]`;
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(4)").label = `Asia [${serverCapacity.regions["Asia"].players} / ${serverCapacity.regions["Asia"].capacity}]`;
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(5)").label = `Australia [${serverCapacity.regions["Australia"].players} / ${serverCapacity.regions["Australia"].capacity}]`;
                document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select > optgroup:nth-child(6)").label = `South America [${serverCapacity.regions["South America"].players} / ${serverCapacity.regions["South America"].capacity}]`;
            };
        };
    };
    capacity.send();
     
    const lololololol = `eHaxx`
     
    let mapTimeouts = [];
     
    function createCoordinates() {
        let x = document.createElement('div')
        x.innerHTML = `<p id="coords" style="color:brown;">     X: 0, Y: 0</p>
    `
        x.style.textAlign = "center"
        document.querySelector("#hud > div.hud-bottom-left").append(x)
    }
     
    let mapMouseX;
    let mapMouseY;
    let hasBeenInWorld = false;
    const uAgent = navigator.userAgent;
    const isChromeOS = uAgent.includes('CrOS');
    const isMac = uAgent.includes('Macintosh');
    const isWindows = uAgent.includes('Windows');
     
    function blurText(path) {
        document.querySelector(path)
            .style.color = "transparent";
        document.querySelector(path)
            .style.textShadow = "0 0 5px rgba(0,0,0,0.5)";
    }
     
    function focusText(path, originalColor) {
        document.querySelector(path)
            .style.color = originalColor;
        document.querySelector(path)
            .style.textShadow = "none";
    }
    setInterval(() => {
        try {
            if (window.isInMenu) {
                blurText('#scorelog')
                blurCanvas()
            } else {
                focusText('#scorelog', 'black')
                focusCanvas()
            }
        } catch (err) {
            // console.log('Cannot blur or focus canvas. This is most likely because the score logger has not been loaded yet. Error: ' + err);
        }
        _isInChatbox = document.querySelector('.hud-chat')
            .classList.contains('is-focused')
        if (botMode) {
            if (parseInt((getEntitiesByModel('Tree')[0][1].targetTick.position.x - game.world.getEntityByUid(game.world.getMyUid())
                          .targetTick.position.x)
                         .toString()
                         .replaceAll('-', '')) < 250) {
                game.network.sendRpc({
                    name: "SendChatMessage",
                    channel: "Local",
                    message: "Tree @ Angle (in radians): " + getNearestTreeAngle()
                })
                danceRandom = false;
            } else {
                danceRandom = true;
            }
            if (parseInt((getEntitiesByModel('Stone')[0][1].targetTick.position.x - game.world.getEntityByUid(game.world.getMyUid())
                          .targetTick.position.x)
                         .toString()
                         .replaceAll('-', '')) < 250) {
                game.network.sendRpc({
                    name: "SendChatMessage",
                    channel: "Local",
                    message: "Stone @ Angle (in radians): " + getNearestStoneAngle()
                })
            }
        }
    }, 2.5)
     
    function blurCanvas() {
        document.querySelector('canvas')
            .style.filter = "blur(8px)";
    }
     
    function focusCanvas() {
        document.querySelector('canvas')
            .style.filter = "none";
    }
    const version = "2.4.6";
     
    const authors = "eh#6968 and Sirr0m";
     
    document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29);
    console.log('%ceHaxx', 'color: green; background: yellow; font-size: 30px');
    game.network.addEnterWorldHandler(function () {
        setTimeout(() => {
            game.network.sendRpc({
                name: "SendChatMessage",
                channel: "Local",
                message: "eHaxx v" + version + " (✓) made by " + authors
            })
        }, 500)
     
     
        document.querySelector("#hud > div.hud-bottom-center").style.textAlign = "center"
        document.querySelector("#hud > div.hud-bottom-center").style.color = "rgba(192, 192, 192, 0.75)"
        document.querySelector("#hud > div.hud-bottom-center").style.fontSize = "30px"
        setInterval(() => {
            document.querySelector("#hud > div.hud-top-right")
                .style.backgroundColor = "rgba(0, 0, 0, 0.25)";
            document.querySelector("#hud > div.hud-top-right")
                .style.border = "5px solid rgba(0, 0, 0, 0.30)";
            document.querySelector("#hud-spell-icons")
                .style.border = "5px solid rgba(0, 0, 0, 0.30)";
            document.querySelector("#hud-menu-icons")
                .style.border = "5px solid rgba(0, 0, 0, 0.30)";
            document.querySelector("#hud-menu-icons")
                .childNodes.forEach((item) => (item.innerHTML = ""));
            document.querySelectorAll(".hud-toolbar-building")
                .forEach((item) => {
                (item.style.border = "5px solid rgba(0, 0, 0, 0.30)"), (item.style.babsdsd = "25%");
            });
            document.querySelector("#hud-debug")
                .style.color = "grey";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(1)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.45)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(2)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.45)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(3)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.45)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(4)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.45)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(5)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.45)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(6)")
                .style.backgroundColor = "rgba(0, 0, 0, 0.25)";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(1)")
                .style.border = "3px solid lightBlue";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(2)")
                .style.border = "3px solid lightBlue";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(3)")
                .style.border = "3px solid lightBlue";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(4)")
                .style.border = "3px solid lightBlue";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(5)")
                .style.border = "3px solid lightBlue";
            document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(6)")
                .style.border = "3px solid lightBlue";
            if (isChromeOS) {
                document.querySelector("#hud-menu-icons")
                    .style.marginBottom = "120px";
            }
            document.querySelector("#hud-map")
                .style.backgroundColor = "rgba(0, 0, 0, 0.25)";
            document.querySelector("#hud-map")
                .style.border = "5px solid rgba(0, 0, 0, 0.40)";
        }, 250);
        setTimeout(() => {
            if (!hasBeenInWorld) {
                var scoreLogged = 0;
                if(!hasBeenInWorld) {
                    hasBeenInWorld = true
                    setInterval(() => {
                        document.querySelector('#scorelog')
                            .innerText = `Score in Last Wave: ${scoreLogged}`
                        document.querySelector("#coords")
                            .innerText = `      X: ${game.world.localPlayer.entity.targetTick.position.x}, Y: ${game.world.localPlayer.entity.targetTick.position.y}`
                    }, 100)
                    createCoordinates()
                }
                hasBeenInWorld = true;
                document.querySelector("#hud > div.hud-bottom-center").append('eHaxx ')
                var oldScore = Game.currentGame.ui.playerTick.score,
                    newScore = 0;
                Game.currentGame.network.addRpcHandler("DayCycle", () => {
                    newScore = Game.currentGame.ui.playerTick.score;
                    scoreLogged = ((newScore - oldScore)
                                   .toLocaleString("en"));
                    oldScore = Game.currentGame.ui.playerTick.score;
                });
                const topCenter = document.querySelector("#hud > div.hud-top-center");
                let logElem;
                logElem = document.createElement('div');
                logElem.innerHTML = `<h1 id="scorelog" style="color:white;">Score in Last Wave: 0</h1>`;
                topCenter.append(logElem);
            }
        }, 500)
     
    })
    var changeChat = true;
    var hoverOver;
    var mousemove;
    addEventListener('mousemove', (e) => {
        mousemove = e;
    })
     
    function roundTenThousands(x) {
        if (x > 10000) {
            return x.toString()
                .slice(0, 3) + "00"
        } else {
            return x.toString()
        }
    }
     
    function roundMyPosition(e) {
        return {
            x: roundTenThousands(e.getPositionX()),
            y: roundTenThousands(e.getPositionY())
        }
    }
    /*
    var mouseOverInterval = setInterval(() => {
    	if (game.world.inWorld) {
    		Object.entries(game.world.entities)
    			.forEach((item => {
    				if (roundMyPosition(item[1])
    					.x == parseInt(roundTenThousands(game.renderer.screenToWorld(mousemove.clientX, mousemove.clientY)
    						.x)) && roundMyPosition(item[1])
    					.y == parseInt(roundTenThousands(game.renderer.screenToWorld(mousemove.clientX, mousemove.clientY)
    						.y))) {
    					hoverOver = 'Hovering over entity: ' + JSON.stringify(item[1].targetTick)
    				} else {
    					hoverOver = 'Hovering over no entities.'
    				}
    			}))
    		document.querySelector('#hoverOver')
    			.innerText = hoverOver;
    	}
    }, 100)
    */
    var isSpamming = 0;
     
    function pauseChatSpam(e) {
        if (!isSpamming) {
            if (e == "") {
                // e = "<-=_eHaxx_=->"
                e = lololololol
            }
            window.spammer = setInterval(() => {
                game.network.sendRpc({
                    name: "SendChatMessage",
                    channel: "Local",
                    message: e
                })
            }, 100)
        } else if (isSpamming) {
            clearInterval(window.spammer)
        }
        isSpamming = !isSpamming
    }
    window.rainbowwww = false;
     
    function degreesToYaw(deg) {
        let ans;
        if ((deg - 90) < 90) {
            ans = deg - 90
        } else if (deg == 90) {
            ans = deg + 90
        } else if (deg > 90) {
            ans = deg + 90
        }
        if (ans < 0) {
            ans = Math.abs(ans)
        }
    }
    if (localStorage.timesEhacked == undefined) {
        localStorage.timesEhacked = 1;
    } else {
        localStorage.timesEhacked++;
    }
    document.title = "eHaxx | Times Played: " + localStorage.timesEhacked
    var autoRespawn = false
    let hue = 10
    var settingsRainbow = document.querySelector("#hud-menu-settings")
     
    function changeHue() {
        if (window.rainbowwww) {
            hue -= 20
        }
    }
     
    function getEntitiesByModel(type) {
        let entities = []
        Object.entries(game.world.entities)
            .forEach((item => {
            if (item[1].targetTick.model == type) {
                entities.push(item)
            }
        }))
        return entities;
    }
     
    function moveUp() {
        game.inputPacketScheduler.scheduleInput({
            down: 0,
            up: 1
        })
    }
     
    function moveDown() {
        game.inputPacketScheduler.scheduleInput({
            up: 0,
            down: 1
        })
    }
     
    function moveLeft() {
        game.inputPacketScheduler.scheduleInput({
            right: 0,
            left: 1
        })
    }
     
    function moveRight() {
        game.inputPacketScheduler.scheduleInput({
            left: 0,
            right: 1
        })
    }
    var danceCounter = 0
    var danceRandom = true
    var botMode = false
    var danceInterval = setInterval(() => {
        if (botMode) {
            if (danceCounter < moves.length) {
                moves[danceCounter]()
                if (danceRandom) {
                    danceCounter = Math.floor(Math.random() * moves.length)
                } else {
                    danceCounter++
                }
            } else {
                danceCounter = 0;
            }
        }
    }, 500)
    var respawnInterval = setInterval(() => {
        if (document.querySelector('.hud-respawn')
            .style.display == "block" && autoRespawn) {
            game.inputPacketScheduler.scheduleInput({
                respawn: 1
            })
            document.querySelector('.hud-respawn')
                .style.display = "none"
        }
    }, 10)
    var moves = [moveUp, moveRight, moveDown, moveLeft]
     
    function getNearestStoneAngle() {
        let stoneEntities = getEntitiesByModel('Stone');
        let firstStone = stoneEntities[0][1].targetTick;
        let player = game.world.localPlayer.entity.targetTick
     
        return Math.atan2(player.position.y - firstStone.position.y / 2,
                          player.position.x - firstStone.position.x)
    }
     
    function getNearestTreeAngle() {
        return Math.atan2(game.world.entities[game.world.getMyUid()].targetTick.position.y - getEntitiesByModel('Tree')[0][1].targetTick.position.y / 2, game.world
                          .entities[game.world.getMyUid()].targetTick.position.x - getEntitiesByModel('Tree')[0][1].targetTick.position.x)
    }
     
    function scanServer() {
        var current = []
        Object.entries(game.ui.getComponent('Leaderboard')
                       .playerNames)
            .forEach((item => {
            current.push(item)
        }))
        return JSON.stringify(current)
    }
    var leaveChats = ['POP', 'BING', 'TONG', 'RIIING', 'POOF']
     
    function leaveChat() {
        let counter = 0;
        window.leaveChatInterval = setInterval(() => {
            if (counter < leaveChats.length) {
                doNewSend(['ch', [leaveChats[counter]]]);
                counter++;
            } else {
                counter = 0;
                clearInterval(window.leaveChatInterval);
                Game.currentGame.network.disconnect();
            };
        }, 1500);
    };
    window.startaito = false;
    window.useSamePI = false
    addEventListener('keyup', function (e) {
        if (e.key == "`" && !_isInChatbox) {
            game.inputManager.onKeyRelease({
                keyCode: 117
            })
        }
    }) // debug info
    var bw1 = "😈 Boss Waves [1/2]: 9, 17, 25, 33, 41, 49, 57, 65, 73, 81 😈"
    var bw2 = "😈 Boss Waves [2/2]: 89, 97, 105, 121 😈"
    window.ajsd = Math.random()
        .toString()
        .slice(0, 6)
    console.log(window.ajsd)
    var users = [
        {
            "name": "☭ 𝑒𝒽 ✨ ツ ✓",
            "roles": ['Owner', 'Admin']
        }
     
     
     
     
     
     
        , {
            "name": "u7🤗ツ✔",
            "roles": ['Co-Owner', 'Admin']
        }
     
     
     
     
     
     
        , {
            "name": "☢₦Ʉ₵ⱠɆ₳Ɽ☣✔",
            "roles": ['Co-Owner', 'Admin']
        }
     
     
     
     
     
     
        , {
            "name": "⦕NR⦖☭𝑒𝒽✨ツ✓",
            "roles": ['Owner', 'Admin']
        }
     
     
     
     
     
     
        , {
            "name": "Potato Bot",
            "roles": ['Admin', 'Leaker']
        }
     
     
     
     
     
     
        , {
            "name": "⦕NR⦖ F3AR ツ",
            "roles": ['Admin', 'Official']
        }
     
     
     
     
     
     
        , {
            "name": "Yazeet",
            "roles": ['Stealer']
        }
    ]
    var q = [
        {
            word: "is",
            answers: ['Naw', 'Yup.'],
            random: true
        }
     
     
     
     
     
     
        , {
            word: "will",
            answers: ['Outlook good.', 'Perhaps.', 'Yup.', 'Naw'],
            random: true
        }
     
     
     
     
     
     
        , {
            word: "when",
            answers: ['Soon.', 'Never.'],
            random: true
        }
     
     
     
     
     
     
        , {
            word: "are",
            answers: ['Yup.', 'Naw', 'Perhaps.'],
            random: true
        }]
    let ppInterval = setInterval(() => { // show private parties
        if (document.querySelector('#showpp')
            .checked) {
            document.querySelectorAll('.hud-party-link')
                .forEach((elem => {
                if (elem.style.display == "none") {
                    elem.style.display = "block"
                    elem.childNodes[0].innerText = elem.childNodes[0].innerText + "[PRIVATE]"
                    elem.addEventListener('click', function () {
                        game.ui.getComponent('PopupOverlay')
                            .showHint('Cannot join this party as it is private', 1e4)
                    })
                }
            }))
        }
    }, 3000) // show private parties
     
    window.lpSave = []
     
    const altSpace = " " // alternate space character
     
    String.prototype.multiChatSpaces = function () {
        return this.replaceAll(' ', altSpace)
    }
    var chatAnims = {
        makeRect: [
            "________________________"
     
     
     
     
     
     
            , "| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |"
     
     
     
     
     
     
            , "________________________"
        ],
        makeCircle: [
            "   ╱‾‾‾‾‾╲"
     
     
     
     
     
     
            , "  /         \\"
     
     
     
     
     
     
            , " |            |"
     
     
     
     
     
     
            , "  \\          /"
     
     
     
     
     
     
            , "   ╲_____╱"
        ]
    } // :D
    window.use_di = true;
    window.isInMenu = false;
     
    function doorWall() {
        var stashPosition = getGoldStash()
        PlaceBuilding(stashPosition.x + 0, stashPosition.y + 0, 'GoldStash', 180);
        PlaceBuilding(stashPosition.x + -96, stashPosition.y + -96, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + 0, stashPosition.y + -96, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + 96, stashPosition.y + -96, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + 96, stashPosition.y + -192, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + 0, stashPosition.y + -192, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + -96, stashPosition.y + -192, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + -96, stashPosition.y + -288, 'GoldMine', 180);
        PlaceBuilding(stashPosition.x + -24, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -72, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -120, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -168, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -216, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -264, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -312, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -360, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -408, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -456, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -504, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -552, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 24, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 72, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 120, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 168, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 216, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 264, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -600, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -648, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -696, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -744, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -792, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -792, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -744, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -696, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -648, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -600, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -552, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -504, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -456, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -408, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -360, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -312, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -264, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -216, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -168, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -120, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -72, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + -24, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 24, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 72, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 120, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 168, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 216, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 264, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 312, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 360, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 408, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 456, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 504, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 552, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 600, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 648, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 696, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 744, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 792, 'Door', 180);
        PlaceBuilding(stashPosition.x + -840, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -792, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -744, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -696, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -648, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -600, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -552, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -504, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -456, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -408, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -360, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -216, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -168, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -72, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 24, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -312, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -264, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -120, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + -24, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 72, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 120, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 168, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 216, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 264, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 312, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 360, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 456, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 408, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 504, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 552, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 600, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 648, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 696, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 744, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 792, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 792, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 744, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 696, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 648, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 600, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 552, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 504, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 456, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 408, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 360, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 312, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 264, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 216, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 168, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 120, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 72, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + 24, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -24, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -72, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -168, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -264, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -312, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -360, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -408, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -456, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -504, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -552, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -600, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -648, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -216, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -120, 'Door', 180);
        PlaceBuilding(stashPosition.x + 312, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 360, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 408, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 456, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 504, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 552, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 600, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 648, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 696, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 744, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 792, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -840, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -792, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -744, 'Door', 180);
        PlaceBuilding(stashPosition.x + 840, stashPosition.y + -696, 'Door', 180);
    }
    var animChat = {
        makeRect: function () {
            let counter = 0;
            let rectInterval = setInterval(() => {
                if (counter < chatAnims.makeRect.length) {
                    doNewSend(['ch', [chatAnims.makeRect[counter].multiChatSpaces()]])
                    counter++
                } else {
                    counter = 0
                    clearInterval(rectInterval)
                }
            }, 3000)
            },
        makeCircle: function () {
            let counter = 0;
            let circleInterval = setInterval(() => {
                if (counter < chatAnims.makeCircle.length) {
                    doNewSend(['ch', [chatAnims.makeCircle[counter].multiChatSpaces()]])
                    counter++
                } else {
                    counter = 0
                    clearInterval(circleInterval)
                }
            }, 3000)
            }
    }
     
    function btnChatCircle() {
        animChat.makeCircle()
    }
     
    function btnChatRect() {
        animChat.makeRect()
    }
     
    function upgradeAll() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            Game.currentGame.network.sendRpc({
                name: "UpgradeBuilding",
                uid: obj.fromTick.uid
            })
        }
        doNewSend(['ch', ['♦️ Upgraded All! ♦️']])
    }
     
    function movePlayer(e) {
        if (!_isInChatbox) {
            switch (e.toLowerCase()
                    .replaceAll(' ', '')) {
                case "a":
                    Game.currentGame.network.sendInput({
                        left: 1
                    })
                    break;
                case "d":
                    Game.currentGame.network.sendInput({
                        right: 1
                    })
                    break;
                case "w":
                    Game.currentGame.network.sendInput({
                        up: 1
                    })
                    break;
                case "s":
                    Game.currentGame.network.sendInput({
                        down: 1
                    })
                    break;
            }
        }
    }
    var emojis = [
        {
            text: ":happy:",
            char: "😄"
        }
     
     
     
     
     
     
        , {
            text: ":sad:",
            char: "😥"
        }
     
     
     
     
     
     
        , {
            text: ":angry:",
            char: "😠"
        }
     
     
     
     
     
     
        , {
            text: ":laughing:",
            char: "😂"
        }
     
     
     
     
     
     
        , {
            text: ":stop:",
            char: "🛑"
        }
     
     
     
     
     
     
        , {
            text: ":revenge:",
            char: "😈"
        }
     
     
     
     
     
     
        , {
            text: ":smiley:",
            char: "ヅ"
        }
     
     
     
     
     
     
        , {
            text: ":pog:",
            char: "ÌŠ<ÌŠ"
        }]
     
    function heal() {
        Game.currentGame.network.sendRpc({
            "name": "BuyItem",
            "itemName": "HealthPotion",
            "tier": 1
        })
        Game.currentGame.network.sendRpc({
            "name": "EquipItem",
            "itemName": "HealthPotion",
            "tier": 1
        })
        Game.currentGame.network.sendRpc({
            "name": "BuyItem",
            "itemName": "PetHealthPotion",
            "tier": 1
        })
        Game.currentGame.network.sendRpc({
            "name": "EquipItem",
            "itemName": "PetHealthPotion",
            "tier": 1
        })
    }
     
    function getGoldStash() {
        let entities = Game.currentGame.ui.buildings
        for (let uid in entities) {
            if (!entities.hasOwnProperty(uid)) {
                continue
            }
            let obj = entities[uid]
            if (obj.type == "GoldStash") {
                return obj
            }
        }
    }
     
    function PlaceBuilding(x, y, building, yaw) {
        Game.currentGame.network.sendRpc({
            name: "MakeBuilding",
            x: x,
            y: y,
            type: building,
            yaw: yaw
        })
    }
    var isBowing = false;
    var slotChars = [
        {
            char: "7️⃣",
            value: 33
        }
     
     
     
     
     
     
        , {
            char: "🍎",
            value: 10
        }
     
     
     
     
     
     
        , {
            char: "🍔",
            value: 25
        }
     
     
     
     
     
     
        , {
            char: "🥓",
            value: 15
        }
     
     
     
     
     
     
        , {
            char: "âš½",
            value: 12
        }
     
     
     
     
     
     
        , {
            char: "🐾",
            value: 10
        }
     
     
     
     
     
     
        , {
            char: "1️⃣",
            value: 27
        }
     
     
     
     
     
     
        , {
            char: "💡",
            value: 30
        }]
    console.log(slotChars)
    window.generateSlots = function () { // fp is the returned array, fs is the joined | fp string, pp is the score
        let fp = [];
        let fs = "";
        let pp = 0;
        var f1 = slotChars[Math.floor(Math.random() * slotChars.length)]
        fp.push(f1.char)
        pp += f1.value
        var f2 = slotChars[Math.floor(Math.random() * slotChars.length)]
        fp.push(f2.char)
        pp += f2.value
        var f3 = slotChars[Math.floor(Math.random() * slotChars.length)]
        fp.push(f3.char)
        pp += f3.value
        fs = [fp.join('|'), pp + " / 99"]
        return fs;
    }
     
    function ahrc1() { // 1 ahrc (collect and refuel), used in lpinterval
        var entities = Game.currentGame.world.entities
        for (let uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            let obj = entities[uid];
            Game.currentGame.network.sendRpc({
                name: "CollectHarvester",
                uid: obj.fromTick.uid
            });
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 1) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.07
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 2) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.11
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 3) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.17
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 4) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.22
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 5) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.25
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 6) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.28
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 7) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.42
                });
            }
            if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 8) {
                Game.currentGame.network.sendRpc({
                    name: "AddDepositToHarvester",
                    uid: obj.fromTick.uid,
                    deposit: 0.65
                });
            }
        }
    }
    var lpinterval = setInterval(function () { // loaded player info, ahrc, isInMenu, noob = chatbot
        document.querySelector('#lpi')
            .innerText = "Loaded Player Info: " + JSON.stringify(window.loadedIDS())
        if (window.ahrc) {
            ahrc1()
        }
        window.isInMenu = document.querySelector('#hud-menu-settings')
            .style.display == "block" ? true : false
        if ((window.lpSave[window.lpSave.length - 1] !== loadedPlayers()[loadedPlayers()
                                                                         .length - 1]) && document.querySelector('#noobchat')
            .checked) {
            doNewSend(['ch', ['NOOB = ' + loadedPlayers()[Math.floor(Math.random() * loadedPlayers()
                                                                     .length)]]])
            window.lpSave = loadedPlayers()
        }
        document.querySelector("#hud-menu-party > div.hud-party-grid > div.hud-party-joining")
            .style.display = "none"
    }, 250)
    // enable/disable chat
    // 🟩 🟥
    function enDisAbleEmj(bool, txt) {
        return bool ? "🟩 " + txt + " Enabled 🟩" : "🟥 " + txt + " Disabled 🟥"
    }
    // disable enable in chat
    window.cmdsEnabled = true
    // these are all button event listeners --->
    function toggleCmds() {
        window.cmdsEnabled = !window.cmdsEnabled
        if (changeChat) {
            doNewSend(['ch', [enDisAbleEmj(window.cmdsEnabled, "Commands")]])
        }
        document.querySelector('#togglecmd')
            .innerText = window.cmdsEnabled ? "Disable Commands" : "Enable Commands"
    }
     
    function sellAll() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model !== "GoldStash") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold All 💰']])
    }
     
    function sellWalls() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "Wall") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                })
            }
        }
        doNewSend(['ch', ['💰 Sold Walls 💰']])
    }
     
    function sellBombTowers() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "BombTower") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Bomb Towers 💰']])
    }
     
    function sellGoldMines() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "GoldMine") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Gold Mines 💰']])
    }
     
    function sellArrowTowers() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "ArrowTower") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Arrow Towers 💰']])
    }
     
    function sellSlowTraps() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "SlowTrap") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Slow Traps 💰']])
    }
     
    function sellCannonTowers() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "CannonTower") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Cannon Towers 💰']])
    }
     
    function sellMageTowers() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "MagicTower") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Mage Towers 💰']])
    }
     
    function sellMeleeTowers() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "MeleeTower") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Melee Towers 💰']])
    }
     
    function sellHarvesters() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "Harvester") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Harvesters 💰']])
    }
     
    function sellDoors() {
        var entities = Game.currentGame.world.entities;
        for (var uid in entities) {
            if (!entities.hasOwnProperty(uid)) continue;
            var obj = entities[uid];
            if (obj.fromTick.model == "Door") {
                Game.currentGame.network.sendRpc({
                    name: "DeleteBuilding",
                    uid: obj.fromTick.uid
                });
            }
        }
        doNewSend(['ch', ['💰 Sold Doors 💰']])
    }
    // <--- end of button event listeners
    //
    document.querySelector('.hud-chat-input')
        .addEventListener('keypress', function (e) {
        emojis.forEach((item => {
            this.value = this.value.replaceAll(item.text, item.char)
        }))
        if (e.keyCode == 13) { // exclude commands and html entities
            this.value = this.value.replaceAll('fuck', 'fuc‌k')
                .replaceAll('FUCK', 'FUC‌K')
                .replaceAll('shit', 'shi‌t')
                .replaceAll('SHIT', 'SHI‌T')
                .replaceAll('bitch', 'bit‌ch')
                .replaceAll('BITCH', 'BIT‌CH')
                .replaceAll('ass', 'as‌s')
                .replaceAll('ASS', 'AS‌S')
                .replaceAll('dick', 'dic‌k')
                .replaceAll('DICK', "DIC‌K")
                .slice(0, 63) // anti censor C:
            if (this.value.toLowerCase()
                .includes('nigg') || this.value.toLowerCase()
                .includes('niga') || this.value.toLowerCase()
                .includes('nig ') || this.value.toLowerCase()
                .includes('nige')) {
                this.value = "I am a building, don't be racist"
            }
        }
    })
    var insults = ["you smooth brained potato", "you rotten pumpkin brain", "you soggy zuicini", "you watered down banana"
     
     
     
     
     
                   , "you're orange juice toothpaste flavored"] // just an array of insults
    // menu stuff (defining & appending) --->
    var settingsHTML = `
    <h3>𝓮𝓗𝓪𝔁𝔁</h3>
    <hr>
    <input type="text" id="spamchat" placeholder="Message" class="menu-textbox">
    <br>
    <button class="btn btn-purple ehack-btn" style="border-radius:25%" id="spamchatbtn">Split Chat</button>
    <br>
    <input type="text" id="spmchinput" placeholder="Message" class="menu-textbox">
    <br>
    <button class="btn btn-purple ehack-btn" style="border-radius:25%" id="togglespmch">Enable Chat Spam</button>
    <hr>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="clearchatbtn">Clear Chat</button>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="upgradeallbtn">Upgrade All</button>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="mainxaito">Enable Aito</button>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="walldoor">Wall of Doors</button>
    <hr>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="idkbtn33">Chat Leave Sounds</button>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="idkbtn22">Chat Rectangle</button>
    <button class="btn btn-blue ehack-btn" style="border-radius:25%" id="idkbtn11">Chat Circle</button>
    <hr>
    <button class="btn btn-red ehack-btn" style="border-radius:25%" id="resetinsultsbtn">Reset Insults</button>
    <button class="btn btn-red ehack-btn" style="border-radius:25%" id="togglecmd">Disable Commands</button>
    <button class="btn btn-red ehack-btn ehack-btn" style="border-radius:25%" id="toggleahrc">Enable AHRC</button>
    <button class="btn btn-red ehack-btn" style="border-radius:25%" id="toggleab">Enable AutoBow</button>
    <hr>
    <button class="btn btn-red ehack-btn" style="border-radius:25%" id="togglebot">Enable Bot Mode</button>
    <button class="btn btn-red ehack-btn" style="border-radius:25%" id="toggleresp">Enable Auto Respawn</button>
    <hr>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellall">Sell All</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellwalls">Sell Walls</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="selldoors">Sell Doors</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="selltraps">Sell Traps</button>
    <hr>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellmines">Sell Gold Mines</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellarrows">Sell Arrows</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellcannons">Sell Cannons</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellmelees">Sell Melees</button>
    <hr>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellbombs">Sell Bombs</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellmages">Sell Mages</button>
    <button class="btn btn-green ehack-btn" style="border-radius:25%" id="sellharvesters">Sell Harvesters</button>
    <hr>
    <button class="btn btn-gold ehack-btn" style="border-radius:25%" id="menu-leaveparty-btn">Leave Party</button>
    <br>
    <input type="text" class="menu-textbox" id="menu-jpbsk-input" placeholder="Party share key">
    <br>
    <button class="btn btn-gold ehack-btn" style="border-radius:25%" id="menu-jpbsk-btn" onclick='Game.currentGame.network.sendRpc({name:"JoinPartyByShareKey", partyShareKey: document.querySelector("#menu-jpbsk-input").value})'>Join Party By Share Key</button>
    <hr>
    <button class="btn btn-white ehack-btn" style="border-radius:25%" onclick="Game.currentGame.network.disconnect()">Disconnect</button>
    <hr>
    <p style="font-size:10px;">Use default insults?</p><input type="checkbox" id="use-di" checked>
    <br>
    <p style="font-size:10px;">Show private parties?</p><input type="checkbox" id="showpp" checked>
    <br>
    <p style="font-size:10px;">Noob chat?</p><input type="checkbox" id="noobchat">
    <br>
    <p style="font-size:10px;">Advanced Player Info?</p><input type="checkbox" id="advancedlpi">
    <br>
    <p style="font-size:10px;">Zoom On Scroll?</p><input type="checkbox" id="zos">
    <br>
    <p style="font-size:10px;">CopyCat?</p><input type="checkbox" id="copycat">
    <br>
    <p style="font-size:10px;">Death Chat?</p><input type="checkbox" id="deadchat">
    <br>
    <p style="font-size:10px;">Enable/Disable Chat?</p><input type="checkbox" id="apexmode" checked>
    <hr>
    <p id="lpi">Loaded Player Info: </p>
    <style>
    .menu-textbox{
        border-radius:25%;
        background-color: rgba(171, 183, 183, 0.25);
        border: 2px solid black;
        color:white;
    }
    .ehack-btn:hover{
    border: 3px solid grey;
    }
    </style>
    ` // aka mod menu
    settingsHTML.id = "modmenu"
    document.getElementsByClassName("hud-settings-grid")[0].innerHTML = settingsHTML;
    document.querySelector('#clearchatbtn')
        .addEventListener('click', function () {
        document.querySelector('.hud-chat-messages')
            .innerHTML = ""
        console.clear()
        Game.currentGame.network.sendRpc({
            name: "SendChatMessage",
            channel: "Local",
            message: "✨ Cleared Chat ✨"
        })
    })
    document.querySelector('#sellbombs')
        .addEventListener('click', sellBombTowers)
    document.querySelector('#sellarrows')
        .addEventListener('click', sellArrowTowers)
    document.querySelector('#sellcannons')
        .addEventListener('click', sellCannonTowers)
    document.querySelector('#sellmages')
        .addEventListener('click', sellMageTowers)
    document.querySelector('#sellall')
        .addEventListener('click', sellAll)
    document.querySelector('#selltraps')
        .addEventListener('click', sellSlowTraps)
    document.querySelector('#selldoors')
        .addEventListener('click', sellDoors)
    document.querySelector('#sellmines')
        .addEventListener('click', sellGoldMines)
    document.querySelector('#sellwalls')
        .addEventListener('click', sellWalls)
    document.querySelector('#sellmelees')
        .addEventListener('click', sellMeleeTowers)
    document.querySelector('#sellharvesters')
        .addEventListener('click', sellHarvesters)
     
    function onLeaveParty() {
        Game.currentGame.network.sendRpc({
            name: "LeaveParty"
        })
    }
    document.querySelector('#use-di')
        .addEventListener('change', function () {
        var THIS_DI_EVENT = this
        game.ui.getComponent('PopupOverlay')
            .showConfirmation('Are you sure you want to change default insults? This will reset all custom insults', 1e4, function () {
            if (THIS_DI_EVENT.checked) {
                insults = ["you smooth brained potato", "you rotten pumpkin brain", "you soggy zuicini", "you watered down banana"
     
     
     
     
     
                           , "you're orange juice toothpaste flavored"]
                game.ui.getComponent('PopupOverlay')
                    .showHint('Successfully activated default insults.', 1e4)
                window.use_di = true
                if (changeChat) {
                    doNewSend(['ch', ['⚙️ Activated Use Default Insults ⚙️']])
                }
            } else {
                insults = ["There are no insults, use !addinsult to add one!"]
                game.ui.getComponent('PopupOverlay')
                    .showHint('Successfully deactivated default insults.', 1e4)
                window.use_di = false
                if (changeChat) {
                    doNewSend(['ch', ['⚙️ Deactivated Use Default Insults ⚙️']])
                }
            }
        }, function () {
            game.ui.getComponent('PopupOverlay')
                .showHint('OK!', 1e4)
        })
    })
    document.querySelector('#menu-leaveparty-btn')
        .addEventListener('click', onLeaveParty)
    document.querySelector('#showpp')
        .addEventListener('change', function () {
        var THIS_PP_EVENT = this;
        if (THIS_PP_EVENT.checked) {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Activated Show Private Parties ⚙️']])
            }
        } else {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Deactivated Show Private Parties ⚙️']])
            }
        }
    })
    document.querySelector('#copycat')
        .addEventListener('change', function () {
        var THIS_CC_EVENT = this;
        if (THIS_CC_EVENT.checked) {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Activated CopyCat ⚙️']])
            }
        } else {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Deactivated CopyCat ⚙️']])
            }
        }
    })
    document.querySelector('#deadchat')
        .addEventListener('change', function () {
        var THIS_DC_EVENT = this;
        if (THIS_DC_EVENT.checked) {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Activated Death Chat ⚙️']])
            }
        } else {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Deactivated Death Chat ⚙️']])
            }
        }
    })
    document.querySelector('#noobchat')
        .addEventListener('change', function () {
        var THIS_NC_EVENT = this;
        if (THIS_NC_EVENT.checked) {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Activated Noob Chat ⚙️']])
            }
        } else {
            if (changeChat) {
                doNewSend(['ch', ['⚙️ Deactivated Noob Chat ⚙️']])
            }
        }
    })
    // <--- end of menu stuff (defining & appending)
    // also event listeners on the menu forgot to add that at start of script
    var removeDeleted = function (e) { // remove deleted/empty/undefined/null items in an array
        let fp = []
        for (let i = 0; i < e.length; i++) {
            if (e[i] !== undefined) {
                fp.push(e[i])
            }
        }
        return fp;
    }
     
    function loadedPlayers() { // loaded player names
        var returns = []
        Object.entries(Game.currentGame.world.entities)
            .forEach((stuff => {
            if (stuff[1].targetTick.entityClass == "PlayerEntity" && ((stuff[1].targetTick.uid !== Game.currentGame.world.entities[Game.currentGame
                                                                                                                                   .world.getMyUid()].targetTick.uid) || window.useSamePI)) {
                returns.push(stuff[1].targetTick.name)
            }
        }))
        return returns;
    }
    window.loadedIDS = function () {
        var returns = []
        Object.entries(Game.currentGame.world.entities)
            .forEach((stuff => {
            if (stuff[1].targetTick.entityClass == "PlayerEntity" && ((stuff[1].targetTick.uid !== Game.currentGame.world.entities[Game.currentGame
                                                                                                                                   .world.getMyUid()].targetTick.uid) || window.useSamePI)) {
                var h = stuff[1].targetTick
                if (document.querySelector('#advancedlpi')
                    .checked) {
                    returns.push(JSON.stringify(h))
                } else {
                    returns.push(stuff[1].targetTick.name + " - Wood: " + Game.currentGame.world.entities[stuff[1].targetTick.uid].targetTick.wood +
                                 ", Stone: " + Game.currentGame.world.entities[stuff[1].targetTick.uid].targetTick.stone + ", Gold: " + Game.currentGame
                                 .world.entities[stuff[1].targetTick.uid].targetTick.gold)
                }
            }
        }))
        return returns;
    }
     
    function spamchatclick() { // used to be called spam chat, its split chat now
        var user = document.querySelector('#spamchat')
        .value
        splitChatLength(user)
    }
    document.querySelector('#spamchatbtn')
        .addEventListener('click', spamchatclick)
    document.querySelector('#resetinsultsbtn')
        .addEventListener('click', resetInsults)
     
    function resetInsults() {
        if (window.use_di) {
            insults = ["you smooth brained potato", "you rotten pumpkin brain", "you soggy zuicini", "you watered down banana"
     
     
     
     
     
                       , "you're orange juice toothpaste flavored"]
        } else {
            insults = ["There are no insults, use !addinsult to add one!"]
        }
        doNewSend(['ch', ["✅ Successfully reset insults ✅"]])
    }
    document.querySelector('#togglecmd')
        .addEventListener('click', toggleCmds)
    var balls = ["Outlook good.", "Really?", "Perhaps.", "Definitely not.", "Yup.", "Are you retarded?", "Naw", "Yup.", "Yup."]
    var breadEaten = 0
    var cmdInterval = setInterval(function () {
        if (game.world.isInWorld) {
            if (window.cmdsEnabled) {
                var playerName = Game.currentGame.world.entities[Game.currentGame.world.getMyUid()].targetTick.name
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1, 4) == "!ch") {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                .length - 1].innerText.split(':')[1].slice(4)
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1, 7) == "!bread") {
                    breadEaten++;
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "🍞🍞🍞 @" + document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                             .length - 1].innerText.split(':')[0] + " has eaten bread! " + breadEaten + " people have eaten bread! 🍞🍞🍞"
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1, 13) == "!willigetagf") {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "💐 The chances of you getting a girlfriend are " + Math.floor(Math.random() * 10) + "%! @" + document
                        .querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                               .length - 1].innerText.split(':')[0] + " 💐"
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1, 9) == "!insults") {
                    var insultCounteRz = 1;
                    var innsultSInterval = setInterval(() => {
                        if (insultCounteRz <= (insults.length)) {
                            doNewSend(['ch', ['📖 Insults [' + insultCounteRz + "/" + (insults.length) + "]: " + insults[insultCounteRz - 1] +
                                              " 📖"]])
                            insultCounteRz++;
                        } else {
                            insultCounteRz = 0;
                            clearInterval(innsultSInterval)
                        }
                    }, 1500)
                    }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1)
                    .includes('**')) {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "❌ Don't fuc‌king swear you bitc‌h @" + document.querySelectorAll('.hud-chat-message')[document.querySelectorAll(
                            '.hud-chat-message')
                                                                                                                        .length - 1].innerText.split(':')[0] + " ❌"
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.toLowerCase()
                    .split(':')[1].slice(1, 7) == "!8ball") {
                    q.forEach((item => {
                        if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                           .length - 1].innerText.toLowerCase()
                            .split(':')[1].includes(item.word)) {
                            window.ball = item.answers[Math.floor(Math.random() * item.answers.length)]
                        } else {
                            window.ball = balls[Math.floor(Math.random() * balls.length)]
                        }
                    }))
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "🎱 Magic 8Ball answered with " + window.ball + " 🎱"
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.toLowerCase()
                    .split(':')[1].slice(1, 10) == "!commands") {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "💻 Commands [1/3]: !8ball,!ch,!bread,!insult,!addinsult 💻"
                    })
                    setTimeout(function () {
                        Game.currentGame.network.sendRpc({
                            name: "SendChatMessage",
                            channel: "Local",
                            message: "💻 Commands [2/3]: !willigetagf, !slots, !boss, !insults 💻"
                        })
                    }, 1500)
                    setTimeout(function () {
                        Game.currentGame.network.sendRpc({
                            name: "SendChatMessage",
                            channel: "Local",
                            message: "💻 Commands [3/3]: none 💻"
                        })
                    }, 3000)
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.toLowerCase()
                    .split(':')[1].slice(1, 6) == "!boss") {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: bw1
                    })
                    setTimeout(function () {
                        Game.currentGame.network.sendRpc({
                            name: "SendChatMessage",
                            channel: "Local",
                            message: bw2
                        })
                    }, 1500)
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.toLowerCase()
                    .split(':')[1].slice(1, 11) == "!addinsult") {
                    if (!insults.includes(document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                         .length - 1].innerText.toLowerCase()
                                          .split(':')[1].slice(11))) {
                        if (window.use_di) {
                            insults.push(document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                        .length - 1].innerText.toLowerCase()
                                         .split(':')[1].slice(11))
                        } else {
                            insults = []
                            insults.push(document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                        .length - 1].innerText.toLowerCase()
                                         .split(':')[1].slice(11))
                        }
                        Game.currentGame.network.sendRpc({
                            name: "SendChatMessage",
                            channel: "Local",
                            message: "📝 Added to insults 📝"
                        })
                    } else {
                        Game.currentGame.network.sendRpc({
                            name: "SendChatMessage",
                            channel: "Local",
                            message: "❌ That insult already exists ❌"
                        })
                    }
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.toLowerCase()
                    .split(':')[1].slice(1, 8) == "!insult" && document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                                              .length - 1].innerText.split(':')[1].slice(1, 9) !== "!insults") {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "📝 " + insults[Math.floor(Math.random() * insults.length)] + " @" + loadedPlayers()[Math.floor(Math.random() *
                                                                                                                                 loadedPlayers()
                                                                                                                                 .length)] + " 📝"
                    })
                }
                if (document.querySelector('#hud-respawn')
                    .style.display == "block" && document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                                .length - 1].innerText.split(':')[1] !== (playerName + " thinks that whoever killed them is an idiot!") && document.querySelector(
                    '#deadchat')
                    .checked) {
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: (playerName + " thinks that whoever killed them is an idiot!")
                    })
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].slice(1, 7) == "!slots") {
                    var f = window.generateSlots()
                    Game.currentGame.network.sendRpc({
                        name: "SendChatMessage",
                        channel: "Local",
                        message: "🎰 @" + document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                                         .length - 1].innerText.split(':')[0] + " Your slots results are: " + f[0] + " with a score of " + f[1] + "! 🎰"
                    })
                }
     
                function getUserRoles(s) {
                    users.forEach((item => {
                        if (item.name == s) {
                            return item.roles
                        } else {
                            return []
                        }
                    }))
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].includes('!disconnect ' + window.ajsd) && (users[0].name == document.querySelectorAll(
                    '.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                         .length - 1].innerText.split(':')[0] || users[1].name == document.querySelectorAll('.hud-chat-message')[document
                                                                                                                                                 .querySelectorAll('.hud-chat-message')
                                                                                                                                                 .length - 1].innerText.split(':')[0] || users[2].name == document.querySelectorAll('.hud-chat-message')[document
    						.querySelectorAll('.hud-chat-message')
    						.length - 1].innerText.split(':')[0] || users[3].name == document.querySelectorAll('.hud-chat-message')[document
                                                                                                                                    .querySelectorAll('.hud-chat-message')
                                                                                                                                    .length - 1].innerText.split(':')[0] || document.querySelectorAll('.hud-chat-message')[document.querySelectorAll(
                    '.hud-chat-message')
    						.length - 1].innerText.split(':')[0].toLowerCase()
                                                                                                                                                   .includes('pot') || users[4].name == document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
    						.length - 1].innerText.toLowerCase()
                                                                                                                                                   .split(':')[0])) {
                    document.querySelector('.hud-chat-messages')
                        .innerHTML = ""
                    console.clear()
                    doNewSend(['ch', ['Bye have a great day!']])
                    Game.currentGame.network.disconnect()
                }
                if (document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
                                                                   .length - 1].innerText.split(':')[1].includes('!eid') && (users[0].name == document.querySelectorAll('.hud-chat-message')[document
    						.querySelectorAll('.hud-chat-message')
    						.length - 1].innerText.split(':')[0] || users[1].name == document.querySelectorAll('.hud-chat-message')[document
                                                                                                                                    .querySelectorAll('.hud-chat-message')
                                                                                                                                    .length - 1].innerText.split(':')[0] || users[2].name == document.querySelectorAll('.hud-chat-message')[document
    						.querySelectorAll('.hud-chat-message')
    						.length - 1].innerText.split(':')[0] || users[3].name == document.querySelectorAll('.hud-chat-message')[document
                                                                                                                                    .querySelectorAll('.hud-chat-message')
                                                                                                                                    .length - 1].innerText.split(':')[0] || document.querySelectorAll('.hud-chat-message')[document.querySelectorAll(
                    '.hud-chat-message')
    						.length - 1].innerText.split(':')[0].toLowerCase()
                                                                                                                             .includes('pot') || users[4].name == document.querySelectorAll('.hud-chat-message')[document.querySelectorAll('.hud-chat-message')
    						.length - 1].innerText.toLowerCase()
                                                                                                                             .split(':')[0])) {
                    doNewSend(['ch', [window.ajsd]])
                }
            }
        }
    }, 750)
    let dimension = 1;
    const onWindowResize = () => {
        if (!window.isInMenu && window.zoomonscroll) {
            const renderer = Game.currentGame.renderer;
            let canvasWidth = window.innerWidth * window.devicePixelRatio;
            let canvasHeight = window.innerHeight * window.devicePixelRatio;
            let ratio = canvasHeight / (1080 * dimension);
            renderer.scale = ratio;
            renderer.entities.setScale(ratio);
            renderer.ui.setScale(ratio);
            renderer.renderer.resize(canvasWidth, canvasHeight);
            renderer.viewport.width = renderer.renderer.width / renderer.scale + 2 * renderer.viewportPadding;
            renderer.viewport.height = renderer.renderer.height / renderer.scale + 2 * renderer.viewportPadding;
        }
    } // Zoom by Apex, modified by eh
    onWindowResize();
    var transparentMenu = false;
    window.onresize = onWindowResize;
    window.onwheel = e => {
        if (e.deltaY > 0) {
            dimension += 0.02;
            onWindowResize();
        } else if (e.deltaY < 0) {
            dimension -= 0.02;
            onWindowResize();
        }
    }
    var _isInChatbox = false;
    window.isChatting = 0
     
    function doNewSend(sender) {
        if (sender[0] == "ch") {
            Game.currentGame.network.sendRpc({
                name: "SendChatMessage",
                channel: "Local",
                message: sender[1][0]
            })
        }
    }
     
    function splitChatLength(text) {
        let i = 0;
        window.chatSetInterval = setInterval(function () {
            if (i < text.length) {
                doNewSend(['ch', [text.slice(i, i + 45)]])
                i += 45;
            } else {
                clearInterval(window.chatSetInterval)
            }
        }, 1500)
    }
    addEventListener('keydown', function (e) {
        if (!_isInChatbox && e.key == "/") {
            document.querySelector("#hud-menu-settings")
                .style.display = document.querySelector("#hud-menu-settings")
                .style.display == "none" ? "block" : "none"
            document.querySelector("#hud-menu-shop")
                .style.display = "none"
            document.querySelector("#hud-menu-party")
                .style.display = "none"
        }
        if (!_isInChatbox && e.key == "-") {
            Game.currentGame.network.sendRpc({
                name: "BuyItem",
                itemName: "Crossbow",
                tier: 1
            });
            Game.currentGame.network.sendRpc({
                name: "EquipItem",
                itemName: "Crossbow",
                tier: 1
            });
        }
        if (e.key == "u" && !_isInChatbox) {
            transparentMenu = !transparentMenu
            console.log('done')
        } else if (e.key == "=" && !_isInChatbox) {
            game.ui.getComponent("PopupOverlay").showHint(
                'Say !commands in chat for the chat commands, press [/] for menu, press [=] for help and press [u] for transparent menu. Left click somewhere on the minimap to automatically move there.',
                1.5e4
            )
        }
    })
    document.querySelector('#toggleahrc')
        .addEventListener('click', function () {
        window.ahrc = !window.ahrc
        document.querySelector('#toggleahrc')
            .innerText = window.ahrc ? "Disable AHRC" : "Enable AHRC"
        if (changeChat) {
            doNewSend(['ch', [enDisAbleEmj(window.ahrc, 'AHRC')]])
        }
    })
     
    function autoBow() {
        if (isBowing) {
            isBowing = false
            clearInterval(window.bow)
        } else {
            isBowing = true
            if (Game.currentGame.ui.inventory.Bow) {
                Game.currentGame.network.sendRpc({
                    name: "EquipItem",
                    itemName: "Bow",
                    tier: Game.currentGame.ui.inventory.Bow.tier
                })
                window.bow = setInterval(function () {
                    Game.currentGame.inputPacketScheduler.scheduleInput({
                        space: 1
                    })
                    Game.currentGame.inputPacketScheduler.scheduleInput({
                        space: 0
                    })
                    Game.currentGame.inputPacketScheduler.scheduleInput({
                        space: 0
                    })
                }, 0);
            }
        }
        document.querySelector('#toggleab')
            .innerText = isBowing ? "Disable AutoBow" : "Enable AutoBow"
        doNewSend(['ch', [isBowing ? "🟩 Enabled AutoBow 🟩" : "🟥 Disabled AutoBow 🟥"]])
    }
    document.querySelector('#toggleab')
        .addEventListener('click', autoBow)
    document.querySelector('#upgradeallbtn')
        .addEventListener('click', upgradeAll)
     
    function onChangePP() {
        game.ui.getComponent('PopupOverlay')
            .showHint('This may take a bit to apply, so be patient')
    }
    document.querySelector('#showpp')
        .addEventListener('change', onChangePP)
    document.querySelector('#idkbtn11')
        .addEventListener('click', btnChatCircle)
    document.querySelector('#idkbtn22')
        .addEventListener('click', btnChatRect)
    document.querySelector('#advancedlpi')
        .addEventListener('change', function (e) {
        var THIS_LPI_EVENT = this;
        if (THIS_LPI_EVENT.checked) {
            doNewSend(['ch', ['⚙️ Activated Advanced Player Info ⚙️']])
        } else {
            doNewSend(['ch', ['⚙️ Deactivated Advanced Player Info ⚙️']])
        }
    })
    document.querySelector('#zos')
        .addEventListener('change', function (e) {
        var THIS_ZOS_EVENT = this;
        window.zoomonscroll = THIS_ZOS_EVENT.checked
        if (THIS_ZOS_EVENT.checked) {
            doNewSend(['ch', ['⚙️ Activated Zoom On Scroll ⚙️']])
        } else {
            doNewSend(['ch', ['⚙️ Deactivated Zoom On Scroll ⚙️']])
        }
    })
    // AITO from Main X (credit to pot for giving me this)
    window.sendAitoAlt = () => {
        if (window.startaito) {
            let ws = new WebSocket(`ws://${Game.currentGame.options.servers[Game.currentGame.options.serverId].hostname}:8000`);
            ws.binaryType = "arraybuffer";
            ws.onclose = () => {
                ws.isclosed = true;
            }
            ws.onopen = () => {
                ws.network = new Game.currentGame.networkType();
                ws.network.sendEnterWorldAndDisplayName = (t) => {
                    ws.network.sendPacket(4, {
                        displayName: t
                    });
                };
                ws.network.sendInput = (t) => {
                    ws.network.sendPacket(3, t);
                };
                ws.network.sendRpc = (t) => {
                    ws.network.sendPacket(9, t);
                };
                ws.network.sendPacket = (e, t) => {
                    if (!ws.isclosed) {
                        ws.send(ws.network.codec.encode(e, t));
                    }
                };
                ws.network.sendEnterWorldAndDisplayName(localStorage.name);
            }
            ws.onEnterWorld = () => {
                // useless
            }
            ws.onmessage = msg => {
                ws.data = ws.network.codec.decode(msg.data);
                if (ws.data.uid) {
                    ws.uid = ws.data.uid;
                }
                if (ws.data.name) {
                    ws.dataType = ws.data;
                }
                if (!window.startaito && !ws.isclosed) {
                    ws.isclosed = true;
                    ws.close();
                }
                if (ws.verified) {
                    if (!ws.isDay && !ws.isclosed) {
                        ws.isclosed = true;
                        ws.close();
                        window.sendAitoAlt();
                    }
                }
                if (ws.data.name == "DayCycle") {
                    ws.isDay = ws.data.response.isDay;
                    if (ws.isDay) {
                        ws.verified = true;
                    }
                }
                if (ws.data.name == "Dead") {
                    ws.network.sendInput({
                        respawn: 1
                    });
                }
                if (ws.data.name == "Leaderboard") {
                    ws.lb = ws.data;
                    if (ws.psk) {
                        ws.network.sendRpc({
                            name: "JoinPartyByShareKey",
                            partyShareKey: game.ui.getPlayerPartyShareKey()
                        });
                        if (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) {
                            ws.network.sendRpc({
                                name: "BuyItem",
                                itemName: "Pause",
                                tier: 1
                            });
                        }
                    }
                }
                if (ws.data.name == "PartyShareKey") {
                    ws.psk = ws.data;
                }
                switch (ws.data.opcode) {
                    case 4:
                        ws.onEnterWorld(ws.data);
                        break;
                }
            }
        }
    }
     
    function toggleAito() {
        if (window.startaito) {
            window.startaito = false;
        } else {
            window.startaito = true;
            window.sendAitoAlt()
        }
        doNewSend(['ch', [window.startaito ? "🟩 Enabled Aito 🟩" : "🟥 Disabled Aito 🟥"]])
        document.querySelector('#mainxaito')
            .innerText = window.startaito ? "Disable Aito" : "Enable Aito"
    }
    document.querySelector('#mainxaito')
        .addEventListener('click', toggleAito)
    document.querySelector('#idkbtn33')
        .addEventListener('click', leaveChat)
    Game.currentGame.network.addRpcHandler('ReceiveChatMessage', (e) => {
        if (e.uid !== game.world.getMyUid() && document.querySelector('#copycat')
            .checked) {
            Game.currentGame.network.sendRpc({
                name: "SendChatMessage",
                channel: "Local",
                message: e.message
            })
        }
        if (e.message.toLowerCase()
            .includes('ligma')) {
            doNewSend(['ch', ['LIGMA BALLS BITCH AHAHA @' + e.displayName]])
        }
    })
    document.querySelector('#togglebot')
        .addEventListener('click', function () {
        botMode = !botMode
        this.innerText = botMode ? "Disable Bot Mode" : "Enable Bot Mode"
        if (changeChat) {
            doNewSend(['ch', [enDisAbleEmj(botMode, "Bot Mode")]])
        }
    })
    document.querySelector('#toggleresp')
        .addEventListener('click', function () {
        autoRespawn = !autoRespawn
        this.innerText = autoRespawn ? "Disable Auto Respawn" : "Enable Auto Respawn"
        if (changeChat) {
            doNewSend(['ch', [enDisAbleEmj(autoRespawn, "Auto Respawn")]])
        }
    })/*
    window.lol = setInterval(changeHue, 50)
    window.rainbow = setInterval(() => {
        if (!transparentMenu) {
            settingsRainbow.style.backgroundColor = `hsla(${hue}, 25%, 30%, 0.45)`
    		document.querySelector("#hud-menu-settings > div")
                .style.backgroundColor = `rgba(0, 0, 0, 0.25)`
    	} else {
            settingsRainbow.style.backgroundColor = `rgba(0, 0, 0, 0)`
    		document.querySelector("#hud-menu-settings > div")
                .style.backgroundColor = `rgba(0, 0, 0, 0)`
    	}
    }, 10)*/
    document.querySelector('#togglespmch')
        .addEventListener('click', function () {
        pauseChatSpam(document.querySelector('#spmchinput')
                      .value)
        if (changeChat) {
            doNewSend(['ch', [enDisAbleEmj(isSpamming, "Chat Spam")]])
        }
        this.innerText = isSpamming ? "Disable Spam Chat" : "Enable Spam Chat"
    })
    document.querySelector('#walldoor')
        .addEventListener('click', doorWall)
    document.querySelector('#apexmode')
        .addEventListener('change', function () {
        changeChat = this.checked
    })
    // ==UserScript==
    // @name         ZoGUI
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Makes the ZOMBS.io ui look better!
    // @author       ehScripts
    // @match        zombs.io
    // @grant        none
    // ==/UserScript==
    // addEventListener('load', function(e){
    setTimeout(() => {
        document.querySelector("a")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-corner-bottom-left")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-footer")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form")
            .style.border = "3px solid purple";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form")
            .style.backgroundImage = "linear-gradient(to bottom right, rgba(0, 0, 128, 0.80), rgba(48, 25, 52, 0.80))";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form")
            .style.babsdsd = "25px";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form")
            .style.marginLeft = "400px";
        document.querySelector("#hud-intro > span:nth-child(1)")
            .remove();
        document.querySelector("#hud-intro > span:nth-child(2)")
            .remove();
        document.querySelector("#hud-intro > span:nth-child(3)")
            .remove();
        document.querySelector("#hud-intro > span")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > a")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-guide")
            .innerHTML = "eHaxx by <strong>eh#6968</strong>";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-guide")
            .style.marginTop = "100px";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > label")
            .remove();
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > div")
            .remove();
        style = document.createElement("style");
        style.innerHTML =
            `.slide_diagonal:hover { box-shadow: inset 400px 50px 0 0 #D80286; } .button_slide { color: #FFF; border: 2px solid rgb(216, 2, 134); border-radius: 0px; padding: 18px 36px; display: inline-block; font-family: "Lucida Console", Monaco, monospace; font-size: 14px; letter-spacing: 1px; cursor: pointer; box-shadow: inset 0 0 0 0 pink; -webkit-transition: ease-out 0.4s; -moz-transition: ease-out 0.4s; transition: ease-out 0.4s; }`;
        document.body.append(style);
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > button")
            .classList.add("slide_diagonal", "button_slide");
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > button")
            .style.backgroundColor = "pink";
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > button")
            .innerText = "";
        document.querySelectorAll(".hud-intro-tree")
            .forEach((item) => item.remove());
        document.querySelectorAll(".hud-intro-stone")
            .forEach((item) => item.remove());
    }, 100)
    // })
     
    // $("body")
    // .css('cursor', 'url(https://ani.cursors-4u.net/cursors/cur-13/cur1163.png), default');
    // ==UserScript==
    // @name         ZoGUI Extras
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  A background for the ZoGUI menus, and some other stuff.
    // @author       ehScripts
    // @match        http://zombs.io/
    // @grant        none
    // ==/UserScript==
    var css;
    var style;
    if (localStorage.loadReminder == undefined) {
        localStorage.loadReminder = true;
        alert(
            'Our script is very buggy at loading for now, we are working on it. So some things may not load correctly. If so, please reload the page and try again.'
        )
    } else if (Math.floor(Math.random() * 3) === 2) {
        alert(
            'Our script is very buggy at loading for now, we are working on it. So some things may not load correctly. If so, please reload the page and try again.'
        )
    }
     
    setTimeout(() => {
     
        document.querySelector("#hud-intro > div.hud-intro-wrapper > h2")
            .innerHTML = ":)"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > h1 > small")
            .remove()
        document.querySelector("#hud-intro > div.hud-intro-wrapper > h1")
            .innerHTML = "Zᴏᴍʙs<small>.</small>"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > h1")
            .style.color = "rgba(128, 0, 128, 0.75)"
        css =
            '.hud-intro::after { background: url(\'https://cutewallpaper.org/21/wallpaper-gif-1920x1080/Gif-Background-Space-1920x1080-Backgrounds-For-Html-Gif-.gif\'); background-size: cover; }';
        style = document.createElement('style');
        style.appendChild(document.createTextNode(css));
        document.head.appendChild(style);
        css =
            '.hud-intro-footer { background: url(\'https://cutewallpaper.org/21/wallpaper-gif-1920x1080/Gif-Background-Space-1920x1080-Backgrounds-For-Html-Gif-.gif\'); background-size: cover; }';
        style = document.createElement('style');
        style.appendChild(document.createTextNode(css));
        document.head.appendChild(style);
     
        document.querySelector("#hud-intro > div.hud-intro-corner-bottom-right > div")
            .remove()
        document.querySelector("#hud-intro > div.hud-intro-corner-top-left > div > a")
            .remove()
        document.querySelector("#hud-intro > div.hud-intro-corner-top-left > div > h3")
            .innerText = "by ehScripts"
        document.querySelector("#hud-intro > div.hud-intro-corner-top-right > div")
            .style.opacity = "0.55"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > input")
            .style.backgroundColor = "rgba(255, 255, 255, 0.80)"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select")
            .style.backgroundColor = "rgba(255, 255, 255, 0.80)"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > input")
            .style.border = "2px solid grey"
        document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-form > select")
            .style.border = "2px solid grey"
    }, 100)
    // document.querySelector('.hud-top-left').appendChild($('#hud-health-bar')[0]);
    function moveNext(targetX, targetY) {
        let player = game.world.localPlayer.entity.targetTick.position
        if (player.x <= targetX && player.y <= targetY) {
            game.network.sendInput({
                right: 1,
                left: 0,
                up: 0,
                down: 1
            })
            doNewSend(['ch', ['MapMover - Moving RightDown']])
        } else if (player.x >= targetX && player.y <= targetY) {
            game.network.sendInput({
                right: 0,
                left: 1,
                up: 0,
                down: 1
            })
            doNewSend(['ch', ['MapMover - Moving LeftDown']])
        } else if (player.x <= targetX && player.y >= targetY) {
            game.network.sendInput({
                right: 1,
                left: 0,
                up: 1,
                down: 0
            })
            doNewSend(['ch', ['MapMover - Moving RightUp']])
        } else if (player.x >= targetX && player.y >= targetY) {
            game.network.sendInput({
                right: 0,
                left: 1,
                up: 1,
                down: 0
            })
            doNewSend(['ch', ['MapMover - Moving LeftUp']])
        }
    }
     
    function isXYCloseTo(x, y) {
        let playerTargetTick = game.world.localPlayer.entity.targetTick.position;
        const radius = 50;
        // console.log('checking if xy position is close to target position')
        return ((x <= (playerTargetTick.x + radius) && x >= (playerTargetTick.x - radius)) && (y <= (playerTargetTick.y + radius) && y >= (playerTargetTick.y -
                                                                                                                                           radius)));
    }
     
    let moveIsActive = false;
     
    function goToPos(x, y) {
        moveIsActive = true;
        window.goToPosInterval = setInterval(() => {
            moveNext(x, y)
        }, 250)
        window.checkPosInterval = setInterval(() => {
            if (moveIsActive) {
                if (isXYCloseTo(x, y)) {
                    doNewSend(['ch', ['MapMover: Done!']])
                    game.network.sendInput({
                        left: 0,
                        right: 0,
                        up: 0,
                        down: 0
                    })
                    game.ui.getComponent('PopupOverlay')
                        .showHint('Finished moving!', 1e4)
                    moveIsActive = false;
                    mapTimeouts.forEach((item => { clearTimeout(item) }))
                    clearInterval(window.goToPosInterval)
                    clearInterval(window.checkPosInterval)
                }
            } else {
                game.network.sendInput({
                    left: 0,
                    right: 0,
                    up: 0,
                    down: 0
                })
                doNewSend(['ch', ['MapMover: Unexpectedly shut down']])
                mapTimeouts.forEach((item => { clearTimeout(item) }))
                game.ui.getComponent('PopupOverlay')
                    .showHint('MapMover unexpectedly stopped', 1e4)
                clearInterval(window.checkPosInterval)
            }
        }, 10)
        let g = setTimeout(() => {
            clearInterval(window.goToPosInterval)
            game.ui.getComponent('PopupOverlay')
                .showHint('It has been 4 minutes to move to the position on the map, so it has automatically stopped to prevent infinite loops.', 1e4)
            moveIsActive = false;
            game.network.sendInput({
                left: 0,
                right: 0,
                up: 0,
                down: 0
            })
        }, 240000)
        mapTimeouts.push(g)
    }
    let mapContainer = document.createElement('div')
     
    mapContainer.id = "hud-map-container"
    document.querySelector('.hud-bottom-left')
        .append(mapContainer)
    $('#hud-map')
        .appendTo(document.querySelector('#hud-map-container'))
    document.querySelector("#hud-map-container")
        .addEventListener('mousemove', function (e) {
        var offset = $('#hud-map-container')
        .offset();
        // Then refer to
        mapMouseX = e.pageX - offset.left;
        mapMouseY = e.pageY - offset.top;
    })
     
    document.querySelector("#hud-map-container")
        .addEventListener('click', function (e) {
        if (!moveIsActive) {
            mapTimeouts.forEach((item => { clearTimeout(item) }))
            let yn = "y"
            game.ui.getComponent('PopupOverlay').showConfirmation('Are you sure you want to move to X:' + (mapMouseX * 170.4390625) + ",Y:" + (mapMouseY * 171.9977142857143) + '? You can right click the minimap to cancel this at any time.', 5e3, function() {
                if (yn.toLowerCase() == "y") {
                    game.ui.getComponent('PopupOverlay').showHint('Starting MapMove...', 3e3)
                    let moveToMapX = (mapMouseX * 170.4390625)
                    let moveToMapY = (mapMouseY * 171.9977142857143)
                    goToPos(moveToMapX, moveToMapY)
                }
            }, function() {
                game.ui.getComponent('PopupOverlay').showHint('OK, did not start MapMove', 3e3)
            })
        } else {
            moveIsActive = false;
            clearInterval(window.goToPosInterval)
            clearInterval(window.checkPosInterval)
            game.network.sendInput({
                left: 0,
                right: 0,
                up: 0,
                down: 0
            })
            mapTimeouts.forEach((item => { clearTimeout(item) }))
            game.ui.getComponent('PopupOverlay').showHint('MapMove is already in process. Restarting and moving to X:' + (mapMouseX * 170.4390625) + ",Y:" + (mapMouseY * 171.9977142857143) + '. You can right click the minimap to cancel this at any time.', 5e3)
            let yn = "y"
            if (yn.toLowerCase() == "y") {
                let moveToMapX = (mapMouseX * 170.4390625)
                let moveToMapY = (mapMouseY * 171.9977142857143)
                goToPos(moveToMapX, moveToMapY)
            }
        }
    })
     
    document.querySelector('#hud-map-container').addEventListener('contextmenu', function(ev) {
        ev.preventDefault();
        if(moveIsActive) {
            game.ui.getComponent('PopupOverlay').showConfirmation('Are you sure you want to cancel the current MapMove process?', 5e3, function() {
                moveIsActive = false;
                clearInterval(window.goToPosInterval)
                clearInterval(window.checkPosInterval)
                game.network.sendInput({
                    left: 0,
                    right: 0,
                    up: 0,
                    down: 0
                })
                game.ui.getComponent('PopupOverlay').showHint('Successfully stopped MapMover.', 3e3)
                mapTimeouts.forEach((item => { clearTimeout(item) }))
            }, function() {
                game.ui.getComponent('PopupOverlay').showHint('OK, did not stop MapMover.', 3e3)
            })
        } else {
            game.ui.getComponent('PopupOverlay').showHint('You are not in a MapMover process right now. Left click somewhere on the minimap to start one.')
        }
        return false;
    }, false);
     
    setInterval(() => {
        if(document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > a")) {
            document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > a").remove()
        }
        if(document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-guide")) {
            document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-guide").remove()
        }
        if(document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > div")) {
            document.querySelector("#hud-intro > div.hud-intro-wrapper > div.hud-intro-main > div.hud-intro-left > div").remove()
        }
    }, 10)