// ==UserScript== // @name Bonk.io Auto Colour Switching // @author Figurative Lag // @description Automatically, rotate through bonk icon colours/teams // @match https://bonk.io/* // @version 1.0.6 // @namespace https://github.com/michaelskyba // @run-at document-idle // @grant none // @license Apache 2.0 // @downloadURL none // ==/UserScript== const RNG = (min, max) => { return Math.round(Math.random() * (max - min)) + min } function getFrame() { return document.getElementById("maingameframe").contentWindow.document } function getId(id) { let frame = getFrame() return frame.getElementById(id) } const colours = ["Blue", "Green", "Red", "Yellow", "FFA"] let colourTimer = 0 let currentColour = "FFA" function setColour(colour) { currentColour = colour getId(`newbonklobby_${colour.toLowerCase()}button`).click() } function timeout() { if (!document.getElementById("autoColour").checked) return if (colourTimer > 9) { // Don't set the colour that is already set let colour = currentColour while (colour == currentColour) { colour = colours[RNG(0, 4)] } setColour(colour) colourTimer = 0 } colourTimer++ } setInterval(timeout, 100) // Clear old screen let menu = document.getElementById("descriptioninner") menu.style.cssText = "background-color: black !important;" while (menu.children.length > 0) { menu.children[0].remove() } function createButton(colour) { let button = document.createElement("input") button.type = "button" button.value = colour button.style.color = "white" button.style.backgroundColor = "black" button.style.fontSize = "20px" button.onclick = () => { setColour(colour) } return button } let h1 = document.createElement("h1") h1.innerHTML = "Automatic Colour (Team) Switching" let p = document.createElement("p") p.innerHTML = "Made by Figurative Lag" menu.appendChild(h1) menu.appendChild(p) // Create colour buttons colours.forEach(colour => { menu.appendChild(createButton(colour)) }) menu.appendChild(document.createElement("br")) menu.appendChild(document.createElement("br")) let label = document.createElement("label") label.innerHTML = "Automatically change?" label.htmlFor = "autoColour" menu.appendChild(label) let checkbox = document.createElement("input") checkbox.type = "checkbox" checkbox.id = "autoColour" checkbox.checked = true menu.appendChild(checkbox)