// ==UserScript== // @name Bonk.io Auto Colour Switching // @author Figurative Lag // @description Automatically rotate through bonk icon colours/teams // @match https://bonk.io/* // @version 1.3 // @namespace https://github.com/michaelskyba // @run-at document-idle // @grant none // @license Apache 2.0 // @downloadURL none // ==/UserScript== const colours = { Blue: true, Green: true, Red: true, Yellow: true, FFA: true } let currentColour = "FFA" 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) } function setColour(colour) { currentColour = colour getId(`newbonklobby_${colour.toLowerCase()}button`).click() } let menu = document.getElementById("descriptioninner") menu.style.cssText = "background-color: black !important;" // Clear old screen while (menu.children.length > 0) { menu.children[0].remove() } function createCheckbox(colour) { let id = `${colour}Checkbox` let label = document.createElement("label") label.innerHTML = colour label.htmlFor = id menu.appendChild(label) let checkbox = document.createElement("input") checkbox.type = "checkbox" checkbox.id = id checkbox.checked = true checkbox.onchange = function() { colours[colour] = this.checked } menu.appendChild(checkbox) menu.appendChild(document.createElement("br")) } let h1 = document.createElement("h1") h1.innerHTML = "Automatic Colour (Team) Switching" menu.appendChild(h1) Object.keys(colours).forEach(colour => { createCheckbox(colour) }) menu.appendChild(document.createElement("hr")) let p = document.createElement("p") p.innerHTML = "Made by Figurative Lag" menu.appendChild(p) function timeout() { listChecked = [] for (const [colour, checked] of Object.entries(colours)) { if (checked) listChecked.push(colour) } if (listChecked.length == 0) return if (listChecked.length == 1 && currentColour == listChecked[0]) return // Don't set the colour that is already set let colour = currentColour while (colour == currentColour) { colour = listChecked[RNG(0, listChecked.length-1)] } setColour(colour) } setInterval(timeout, 1000)