Bonk.io Auto Colour Switching

Automatically, rotate through bonk icon colours/teams

Versión del día 22/11/2022. Echa un vistazo a la versión más reciente.

// ==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
// ==/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)