// ==UserScript== // @name Rainbow UI 🌈 | Ad Block 🛑 | Better Map 🗺 | Show Ping 🏓 | And More … | MooMoo.IO // @namespace - // @version 1.3.1 // @description Rainbow UI, ad block, better map, always show ping, start with extra resources, and more for moomoo.io. // @author NotYou // @include *://moomoo.io/* // @include *://*.moomoo.io/* // @match https://moomoo.io/* // @match https://*.moomoo.io/* // @match http://moomoo.io/* // @match http://*.moomoo.io/* // @run-at document-body // @license GPL-3.0-or-later // @grant none // @downloadURL none // ==/UserScript== // You can change "false" to "true" (without quotes) let modConfig = { rainbowObjects: false, } // Do NOT edit code below let extra = function() { let getResources = window.follmoo if(getResources) { getResources() } } let style = document.createElement('style') style.appendChild(document.createTextNode(` :root { --w: rgb(255, 255, 255); --b: rgb(19, 19, 19); --f: rgb(9, 9, 9); --b-t: rgba(0, 0, 0, 0.6); --f-t: rgba(0, 0, 0, 0.8); } /* AD BLOCK */ #adCard, #menuContainer > :last-child, #promoImgHolder, #pre-content-container, #ot-sdk-btn-floating, #moomooio_728x90_home, #moomooio_300x250_1, /* COOKIE BLOCK */ #onetrust-consent-sdk { display: none !important; } /* RAINBOW UI */ #serverBrowser, #vipServerBrowser, .menuCard, #linksContainer2 { background-color: var(--b); } #loadingText, #diedText, #gameName, #partyButton, #youtuberOf, #pingDisplay, #ageText, #linksContainer2, #enterGame span, #nameInput, .material-icons { color: var(--f); } #ageBody, #actionBar *, #resDisplay *, #upgradeHolder *, #mapDisplay, #topInfoHolder, #killCounter, .uiElement, #ageBar, #storeHolder, .storeTab, #allianceHolder, #allianceManager *, #chatBox, .notifButton { background-color: var(--f-t) !important; } .uiElement.gameButton:hover, #actionBar *:hover, #upgradeHolder *:hover, .storeTab:hover, .notifButton:hover { background-color: var(--b-t); } #menuCardHolder[style*="block"] { display: grid !important; } #rightCardHolder, #guideCard { height: 147px; } .menuCard { box-shadow: var(--f) 0 7px; } .menuCard * { color: var(--w); } #serverBrowser, #vipServerBrowser { border: 1px solid var(--f); } #gameName { text-shadow: var(--b) 0px 1px 0px, var(--b) 0px 2px 0px, var(--b) 0px 3px 0px, var(--b) 0px 4px 0px, var(--b) 0px 5px 0px, var(--b) 0px 6px 0px, var(--b) 0px 7px 0px, var(--b) 0px 8px 0px, var(--b) 0px 9px 0px; } #ageBarBody { background-color: red; } #gameUI .material-icons, .joinAlBtn { color: red !important; } #enterGame, #joinPartyButton, #ageBarBody, #gameUI .material-icons, .joinAlBtn, a { animation: 5s infinite linear both normal rainbow; } @keyframes rainbow { 0% { filter: hue-rotate(0deg) } 100% { filter: hue-rotate(360deg) } } /* OTHER */ #mapDisplay { background-image: url(https://ksw2-center.glitch.me/users/fzb/map.png) !important; background-size: contain !important; } #topInfoHolder { border-radius: 3px; } #pingDisplay { display: block; } #vipServerBrowser { width: 100%; height: 24px; } /* MODIFICATIONS */ ${modConfig.invertColors ? ` #gameCanvas { -webkit-filter: invert(1); filter: invert(1); } `: ''} `)) document.head.appendChild(style) window.addEventListener('DOMContentLoaded', () => { let mainMenu = document.querySelector('#mainMenu') CanvasRenderingContext2D.prototype._rotate = CanvasRenderingContext2D.prototype.rotate let discord = document.querySelector('#linksContainer2 [href*="discord"]') discord.href = '//greasyfork.org/scripts/449133' discord.innerHTML = 'Rainbow UI' // Always show ping mainMenu.insertAdjacentElement('beforebegin', document.querySelector('#pingDisplay')) // Extra Resources ;(function() { extra() let obs = new MutationObserver(extra) obs.observe(document.body, { childList: true, subtree: true, }) })() // VIP Servers ;(function() { document.querySelector('#altServer').insertAdjacentHTML('afterend', '
') let serverBrowser = document.querySelector('#serverBrowser') let vipServerBrowser = document.querySelector('#vipServerBrowser') let obs = new MutationObserver(() => { let servers = Array.from(serverBrowser.children).filter(e => e.textContent.includes('[0/')) if(servers.length > 1) { servers.forEach(e => { e = e.cloneNode(true) e.textContent = e.textContent.split(' [')[0] vipServerBrowser.insertAdjacentElement('beforeend', e) }) vipServerBrowser.addEventListener('click', e => { let value = e.target.value if(value.includes(':')) { location.replace('http://moomoo.io/?server=' + value) } }) obs.disconnect() } }) obs.observe(mainMenu, { childList: true, subtree: true, }) })() // Rainbow Objects if(modConfig.rainbowObjects) { let deg = 0 CanvasRenderingContext2D.prototype.rotate = function(e) { this.filter = `hue-rotate(${deg}deg)` this._rotate(e) deg++ if(deg > 360) { deg = 0 } } } })