This is a internal script for bigger project but it has its own custome theme auto upgrades/auto respawn as well as custom stats upgrades that can be request to be add to the builds list
// ==UserScript== // @name Gaston's Diep stuff mod // @namespace http://tampermonkey.net/ // @version 2.8 // @description This is a internal script for bigger project but it has its own custome theme auto upgrades/auto respawn as well as custom stats upgrades that can be request to be add to the builds list // @author gaton1779 // @match *://diep.io/* // @icon https://www.google.com/s2/favicons?sz=64&domain=diep.io // @grant GM_getValue // @grant GM_setValue // @grant GM_info // @grant GM_addStyle // @grant GM_addValueChangeListener // @grant GM_removeValueChangeListener // @grant GM_xmlhttpRequest // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js // @license MIT // ==/UserScript== //YT: https://www.youtube.com/channel/UCOA8lE9-0XnEIdHqjfQUz1A _GM_getValue=GM_getValue;["http://code.createjs.com/easeljs-0.5.0.min.js","https://cdn.jsdelivr.net/gh/naquangaston/HostedFiles@master/JS_obf.js","https://cdn.jsdelivr.net/gh/naquangaston/HostedFiles@master/ResourceLoader_.js","https://cdn.jsdelivr.net/gh/naquangaston/HostedFiles@master/JS_Formatter_.js"].map(e => {let t = new URL(e);t.protocol = 'https:';return t.href}).map(e => ({name: new URL(e).pathname.split('/').pop(),id: new URL(e).pathname,url: e})).forEach(async e => {var t = _GM_getValue(e.id),l = falset ? (l = true,console.log(e.name,'Loaded',eval(t))) : console.warn(e.name, 'wasnt installed this Userscript may not Function as Intended.');console.log('Checking', e.name);await fetch(e.url).then(e => e.text(), b => ('Failed:', e.id, b)).then(b => (_GM_getValue(e.id) != b && (_GM_setValue(e.id, b), console.log(e.name,!l&&(eval(b))?'Has been updates':'Failed to update')), e))}); infothingy = {}, inf = {}, _upgrade = "", autoPlay_ = !1; const Screens = { inGame: "in-game-screen", gameOver: "game-over-screen", home: "home-screen", loading: "loading-screen", nickname: "spawn-nickname" }, Settings = GM_getValue("Settings") || {}, extended = { update: function(e) {} }, getV = function(e, t) { return 1 != arguments.length ? (GM_setValue(e, t), t) : GM_getValue(e) }; function setElement(e) { return !(!String(e).match(/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?)|(shorts\/))\??v?=?([^#\&\?]*).*/) || 11 != String(e).match(/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?)|(shorts\/))\??v?=?([^#\&\?]*).*/)[8].length) && String(e).match(/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?)|(shorts\/))\??v?=?([^#\&\?]*).*/)[8] } function sleep(e) { return new Promise((t => setTimeout(t, e))) } function RemoveAds() { return [...document.getElementsByTagName("iframe")].forEach((e => e.remove())) } function checkWin(e = this.win1) { return !!e && !e.closed } function startwin(e, t = null, n, o) { var r; null == t && (t = e), console.log("attemp the close", e); try { n && window[e].close() } catch (t) { window[e] = null, console.warn("attemp the close", e, "Fail") } try { checkWin(window[e]) ? (globalRoot[t] = open("", "PROFILES", "width=256,height=305"), globalRoot[t].window.document.body.innerHTML = "", globalRoot[t].window.document.head.innerHTML = "") : (window[e] = r = open(o, "PROFILES", "width=256,height=305"), console.log("Making", e, "in", t), console.log(window[e]), console.log("writing defalt styles", "to", e, t), r.document.write(htmlContent.element.outerHTML)) } catch (e) { console.warn(e) } return globalRoot[t] = globalRoot[e], console.log("complete win"), r } function get(e, t = document.body) { if (t.id === e) return t; if (t.shadowRoot) { const n = get(e, t.shadowRoot); if (n) return n } for (const n of t.children) { const t = get(e, n); if (t) return t } return null } function log_(e, t) { new CustomLog(e).log(t) } getClose = function(e) { return e.map((e => (e.dist = getDistance(...e._lineTo, canvas.width / 2, canvas.height / 2), e))).sort(((e, t) => e.dist - t.dist))[0] }, getMid = function(e = [{ x: 0, y: 0 }]) { var t = e.length, [n, o] = [0, 0]; return e.forEach((e => { n += e.x, o += e.y })), { x: n / t, y: o / t } }, function() { Object.assign(this || arguments[0], { CustomLog: class { constructor(e) { this.title = { body: e || "---", color: "darkgrey", size: "1rem" }, this.body = { color: "#008f68", size: "1rem" } } setTitleBody(e) { this.title.body = e } setTitleStyle({ color: e, size: t }) { void 0 !== e && (this.title.color = e), void 0 !== t && (this.title.size = t) } setBodyStyle({ color: e, size: t }) { void 0 !== e && (this.body.color = e), void 0 !== t && (this.body.size = t) } log(e = "") { console.log(`%c${this.title.body} | %c${e}`, `color: ${this.title.color}; font-weight: bold; font-size: ${this.title.size};`, `color: ${this.body.color}; font-weight: bold; font-size: ${this.body.size}; text-shadow: 0 0 5px rgba(0,0,0,0.2);`) } } }) }(window.globalRoot || window), draw = function(e) { try { if (e.shape && "undefined" != e.shape && !e.custom) { var { x: t, y: n } = getMid(this._lineTo_.map((e => ({ x: e[0], y: e[1] })))); let e = canvas.getContext("2d"); e.beginPath(), e.custom = !0; var o = e.createLinearGradient(0, 0, 170, 0); o.addColorStop("0", "magenta"), o.addColorStop("0.5", "blue"), o.addColorStop("1.0", "red"), e.strokeStyle = o, e.lineWidth = 5, e.moveTo(t, n), e.arc(t, n, 50, 0, 2 * Math.PI), e.stroke(), e.custom = !1 } } catch (e) {} }, MySrc = function() { const e = document.getElementById("chooseFile"); function t(e, t) { a.src = e, t && a.addEventListener("ended", t) } Array.prototype.forEachAsync = async function(e = function() {}) { for (let t = 0; t < this.length; t++) await e(this[t], t, this.length); return null }, Array.prototype.mapAsync = async function(e = function() {}) { for (let t = 0; t < this.length; t++) this[t] = await e(this[t], t, this.length); return this }; var n = 0; function o(e) { ! function o() { n + 1 === e.length ? (console.log("Now playing", e[n].name), t(e[n].sound, null)) : (console.log("Now playing", e[n].name), t(e[n].sound, (function() { n++, o() }))) }() } var r = document.getElementById("Songs_"); const a = new Audio; var s = []; a.volume = .3, [ ["Shuffle", () => (s.shuffle(), a.pause(), o(s))], ["play all", function() { o(s) }], ["Skip", () => { a.currentTime = a.duration - 10 }], ["Previous", () => { n -= 2, a.currentTime = a.duration - 10 }], ["play", () => a.play()], ["pause", () => a.pause()], ["loop", function(e) { a.loop = !a.loop, e.innerText = "loop:" + (a.loop ? "on" : "off") }], ["volume", () => { a.volume = prompt("Enter volume", "50") / 100 }] ].forEach((e => { var t = "function" == typeof e[1] ? e[1] : function() { alert(`The "${e[0]}" button is W.I.P`) }, n = document.createElement("button"); n.innerText = e[0], n.onclick = t, r.append(n), console.log(n) })), a.oncanplaythrough = e => { a.play() }, e.addEventListener("change", (t => { (async function(t, n, o = function() { return !0 }) { var r = new class { constructor() { this.files = [] } push(...e) { this.files.push(...e) } }; const a = (e => { var t = []; for (const n of e) { const e = n.name ? n.name : "NOT SUPPORTED", o = n.type ? n.type : "NOT SUPPORTED", r = n.size ? n.size : "NOT SUPPORTED"; t.push({ file: n, name: e, type: o, size: r }) } return t })([...(t && t.files ? t.files : 0) || e.files]); return r.files = await a.filter(o).mapAsync((async(e, t, n) => { const { file: o, name: r, type: a, size: s } = e; console.log("Unloading:" + r, "\nFiles left", n - t); const i = new FileReader; var l = await new Promise((e => { var t = document.createElement("span"); t.className = "file", t.innerHTML = r, t.id = r; var n = document.createElement("span"); function a(t) { var n = [r, `${t.type}:`, (t.loaded / t.total * 100).toFixed(2) + "%"]; if (document.getElementById("TextAl").innerHTML = n[0], document.getElementById("myBar").style.width = n[2], console.log(...n), "error" == t.type && console.error(t.target.error), "load" === t.type) { var o = i.r###lt; e(o) } } n.className = "progress", n.innerHTML = "0%", n.id = r + "%", function(e) { e.addEventListener("loadstart", a), e.addEventListener("load", a), e.addEventListener("loadend", a), e.addEventListener("progress", a), e.addEventListener("error", a), e.addEventListener("abort", a) }(i), i.readAsDataURL(o) })), c = l.split(","), d = l.match(/(data):([-\w]+\/[-\w]+);(\w+)/); if (dt = c, "NOT SUPPORTED" == a) { var u = r.split(".").pop().split("(")[0], p = new Error(a + ' file extentsion:\n"' + u + '" is not a supported file extentsion'); p.name = a, console.warn(p) } return { file: o, name: r, type: a, size: s, data: dt, ecode: d, b: e } })), "function" == typeof n && n(r), { files: r } })(!1, !1, (e => e.type.includes("audio"))).then((e => { e.files.files.forEach((e => { var t = document.createElement("span"); t.innerHTML = e.name, t.href = "", t.onclick = function(t) { a.pause(), a.src = e.ecode.input }, Songs_2.append(document.createElement("br")), r.append(t), s.push({ name: e.name, sound: e.ecode.input }) })) }), console.error) })) }, set_convar = function(e, t) { console.log("Set", e, t), input.set_convar(e, t) }, execute = function(e) { var t = (e.match(/(?<name>[\w_]+) ?(?<index>[0-9]+)? ?(?<value>(0x|#)[\w]+)\t?(?<for>.+)?/i) || { groups: {} }).groups, n = (e.split(" "), findColor(t)); if (null != n) { colors[otherStuff.colors[n].for] = "#" + t.value.match(/(0x|#)(?<hex>[\w]+)/i).groups.hex, otherStuff.colors[n].prev = otherStuff.colors[n].new || otherStuff.colors[n].default, otherStuff.colors[n].new = t.value.toUpperCase(); let e = otherStuff.colors[n]; console.log("Set", e.for, "from", e.prev, "To", e.new, { item: e, res: t }) } input.execute(e) }; class Build { buildSet(e) { this.Build = e; var t = 0; this.BuildPath = ""; var n = e.regen, o = e.health, r = e.body, a = e.bspeed, s = e.pen, i = e.dmg, l = e.reloads, c = e.speed; for (let e = 0; e <= 7; e++) e < i && t < 34 && (this.BuildPath += "6", t++), e < a && t < 34 && (this.BuildPath += "4", t++), e < s && t < 34 && (this.BuildPath += "5", t++), e < l && t < 34 && (this.BuildPath += "7", t++); for (let e = 0; e <= 7; e++) e < c && t < 34 && (this.BuildPath += "8", t++); for (let e = 0; e <= 7; e++) e < n && t < 34 && (this.BuildPath += "1", t++), e < o && t < 34 && (this.BuildPath += "2", t++), e < r && t < 34 && (this.BuildPath += "3", t++) } } class bool { constructor(e) { e && this.toggle() }#e = !1; toggle() { this.#e = !this.#e } get status() { return this.#e } set status(e) { this.#e = !!e } } class element { static get br() { return new element("br") } constructor(e, t) { this.element = e.constructor.name.includes("HTML") && e || function() { for (let e in arguments[1]) arguments[0].setAttribute(e, arguments[1][e]); return arguments[0] }(document.createElement(arguments[0]), arguments[1]) } style(e) { for (let t in e) this.element.style[t] = e[t]; return this } append(e, ...t) { this.element.append(e.element || e), console.log("T:", { targets: t, fe: t && t.forEach }); for (let e = 0; e < t.length; e++) { let n = t[e]; console.log("Appending:", { element: n, target: this }), this.element.append(n.element || n) } return this } appendTo(e) { return (e.element || "string" == typeof e ? document.querySelector(e) : e).append(this.element), this } on(e, t) { return this.element[`on${e}`] = t, this } set(e, t) { return this.element[e] = t, this } remove() { return this.element.remove(), this } get() { return this.element[arguments[0]] } get children() { return new class { constructor(e) { for (var t = 0; t < e.length; t += 1) this[t] = e[t]; Object.defineProperty(this, "length", { get: function() { return e.length } }), Object.freeze(this) } item(e) { return null != this[e] ? this[e] : null } namedItem(e) { for (var t = 0; t < this.length; t += 1) if (this[t].id === e || this[t].name === e) return this[t]; return null } get toArray() { return [...this] } }([...this.element.children]) } } const { win1: win1, win2: win2, win3: win3, win4: win4, hh: hh, jj: jj, dd: dd } = [null, null, null, null, function(e, t) { localStorage.setItem(e, t) }, function(e) { return localStorage.getItem(e) }, function(e) { let t = {}; return e.forEach((function(e) { t[e] || (t[e] = !0) })), Object.keys(t) }], AutoUpgrade = new bool(1), AutoReload = new bool(1), Firing = new bool, AutoSpawn = new bool(1), A = {get screen() { return [...app.children].filter((e => [...e.classList].includes("active"))).map((e => e.id))[0] } }, bootstrapCss = new element("link").set("rel", "stylesheet").set("href", "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"), jqueryUiCss = new element("link").set("rel", "stylesheet").set("href", "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css"), jqueryScript = new element("script", { integrity: "sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=", crossorigin: "anonymous" }).set("src", "https://code.jquery.com/jquery-3.7.1.js"), jqueryUiScript = new element("script").set("src", "https://code.jquery.com/ui/1.12.1/jquery-ui.js"), bootstrapScript = new element("script").set("src", "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"), jqueryMinScript = new element("script").set("src", "https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"), style = new element("style").set("innerHTML", "\n .stat {\n height: 100%;\n width: 10%;\n\t\t\t\t\t\ttransition:width 2s\n }\n\n .stats {\n height: 10px;\n width: 50%;\n }\n\n body {\n color: white;\n -ms-overflow-style: none;\n /* IE and Edge */\n scrollbar-width: none;\n /* Firefox */\n background-color: rgb(54, 57, 63);\n overflow-x: hidden;\n }\n\n img,\n button,\n .menu {\n border: 2px solid red;\n border-radius: 8px;\n border-style: solid;\n border-width: medium;\n }\n #MusicPlayer {\n border-radius: 8px;\n border-radius: 8px;\n border-style: solid;\n }\n button {\n color: rgb(27, 51, 99)\n }\n\n input {\n /*border-width: 1px;*/\n border: 2px dashed rgb(87, 167, 12);\n color: white;\n background: rgba(0, 0, 0, 0)\n }\n\n .name {\n color: red\n }\n\n .Status {\n color: blue\n }\n\n .server_nick {\n color: white\n }\n\n body::-webkit-scrollbar {\n display: none;\n }\n\n .hidden {\n display: none;\n }\n\n .dropdown {\n display: inline-block;\n position: relative;\n }\n\n #Songs_2 {\n max-height: 444px;\n }\n\n #thefile {\n position: fixed;\n top: 10px;\n left: 10px;\n z-index: 100;\n }\n\n #canvas {\n position: fixed;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n }\n\n audio {\n position: fixed;\n left: 10px;\n bottom: 10px;\n width: calc(100% - 20px);\n }\n\n .center {\n width: 100%;\n color: red;\n align-items: center;\n }\n\n input[type=button] {\n border: 2px solid rgb(255, 255, 255);\n color: white;\n }\n\n * {\n box-sizing: border-box;\n }\n\n #myInput {\n background-image: url('/css/searchicon.png');\n background-position: 10px 12px;\n background-repeat: no-repeat;\n width: 100%;\n font-size: 16px;\n padding: 12px 20px 12px 40px;\n border: 1px solid #ddd;\n margin-bottom: 12px;\n }\n\n #myUL {\n list-style-type: none;\n padding: 0;\n margin: 0;\n }\n\n #myUL li div {\n border: 1px solid #ddd;\n margin-top: -1px;\n /* Prevent double borders */\n background-color: rgba(238, 238, 238, 0.192);\n ;\n padding: 12px;\n text-decoration: none;\n font-size: 18px;\n color: black;\n display: block\n }\n\n #myUL li a {\n border: 1px solid #ddd;\n margin-top: -1px;\n /* Prevent double borders */\n background-color: rgba(238, 238, 238, 0.192);\n ;\n padding: 12px;\n text-decoration: none;\n font-size: 18px;\n color: black;\n display: block\n }\n\n #myUL li div {\n cursor: pointer;\n border: 1px solid #ddd;\n margin-top: -1px;\n /* Prevent double borders */\n background-color: rgba(238, 238, 238, 0.192);\n ;\n padding: 12px;\n text-decoration: none;\n font-size: 18px;\n color: black;\n display: block\n }\n\n #myUL li a:hover:not(.header) {\n background-color: rgb(238, 238, 238);\n }\n #myUL li div div input[type=button]:hover:not(.header) {\n background-color: rgb(238, 238, 238);\n color:black;\n }\n"), bodyContent = new element("div").set("className", "my-game-container").append(new element("div", { id: "CustomSoungs" }).set("className", "menu").append(new element("a").set("innerText", " "), new element("h2").set("innerText", "play custom songs"), new element("input").set("type", "file").set("multiple", "").set("id", "chooseFile"), new element("br"), new element("br"), new element("div").set("id", "myProgress").append(new element("div").set("id", "myBar").append(new element("span").set("id", "TextAl"))), new element("br"), new element("div").set("id", "Files_"), new element("div").set("id", "Songs_"), new element("div").set("id", "Songs_2"), new element("canvas").set("id", "canvas")), new element("br"), new element("hr"), new element("br"), new element("div", { id: "CustomSoungs" }).set("className", "menu").append(new element("center").append(new element("iframe", { id: "MusicPlayer", src: getV("LP") || "" }).set("allowfullscreen", !0), element.br, element.br, new element("input", { id: "playlistInput" }), new element("script").set("innerHTML", `\n ${setElement.toString()};\n document.getElementById('playlistInput').onchange=\n function({target,isTrusted,target:{parentNode:{getElementById}}}){\n console.log("Change")\n var url=\`https://www.youtube.com/embed/\${setElement(target.value)}?\${[...(new URL(target.value)).searchParams].map(e=>e.join('=')).join('&')}&autoplay=1\`\n document.getElementById('MusicPlayer').src=url\n window.getV('LP',url)\n }`))), new element("hr"), new element("div").set("className", "menu").set("id", "menu").append(new element("h2").set("innerText", "Menu-")), new element("br"), new element("hr"), new element("br"), new element("div").set("className", "menu").set("id", "Builds_").append(new element("style").set("innerHTML", "\n /* CSS styles for .regen, .health, .body, etc. */\n .regen {\n background: #EEB690;\n }\n .health {\n background: #EC6CF0;\n }\n .body {\n background: #9A6CF0;\n }\n .bspeed {\n background: #6C96F0;\n }\n .pen {\n background: #F0D96C;\n }\n .dmg {\n background: #F06C6C;\n }\n .reloads {\n background: rgb(152, 240, 108);\n }\n .speed {\n background: #6CF0EC;\n }\n "), new element("h2").set("innerText", "Builds-"), new element("div").set("id", "stats_show").append(new element("div").append(new element("span").set("innerText", "Regen:"), new element("span").set("className", "regen_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat regen"))), new element("div").append(new element("span").set("innerText", "Health:"), new element("span").set("className", "health_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat health"))), new element("div").append(new element("span").set("innerText", "Body:"), new element("span").set("className", "body_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat body"))), new element("div").append(new element("span").set("innerText", "BSpeed:"), new element("span").set("className", "bspeed_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat bspeed"))), new element("div").append(new element("span").set("innerText", "Pen:"), new element("span").set("className", "pen_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat pen"))), new element("div").append(new element("span").set("innerText", "Dmg:"), new element("span").set("className", "dmg_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat dmg"))), new element("div").append(new element("span").set("innerText", "Reload:"), new element("span").set("className", "reloads_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat reloads"))), new element("div").append(new element("span").set("innerText", "Speed:"), new element("span").set("className", "speed_")).append(new element("div").set("className", "stats").append(new element("div").set("className", "stat speed")))), new element("hr"), new element("input").set("id", "search_").set("placeholder", "Search for names..").set("title", "Type in a name"), new element("br"), new element("br"), new element("ul").set("id", "myUL"))), script = new element("script").set("innerHTML", '\n console.log(\'Test Passed\')\n document.getElementById(\'search_\').onkeyup=function () {\n // Your function code here\n var input, filter, ul, li, a, i, txtValue;\n input = document.getElementById("search_");\n filter = input.value.toUpperCase();\n ul = document.getElementById("myUL");\n li = ul.getElementsByTagName("li");\n for (i = 0; i < li.length; i++) {\n try{\n a = li[i].getElementsByTagName("div")[0];\n txtValue = a.textContent || a.innerText;\n if (txtValue.toUpperCase().indexOf(filter) > -1) {\n li[i].style.display = "";\n } else {\n li[i].style.display = "none";\n }\n }catch(err){console.log(a)}\n }\n };\n'), htmlContent = new element("html").append(new element("head").append(bootstrapCss, jqueryUiCss, jqueryScript, jqueryUiScript, bootstrapScript, jqueryMinScript, style), new element("body").append(bodyContent, script, new element("script").set("innerHTML", MySrc.toString() + "\nMySrc();"))); function download(e, t) { const n = new Blob([e], { type: `text/${t}` }), o = URL.createObjectURL(n), r = document.createElement("a"); r.href = o, r.download = `file.${t}`, document.body.appendChild(r), r.click(), URL.revokeObjectURL(o), document.body.removeChild(r) } const _myWin = startwin("myWin_"); function updateFunction() { log_("Screen:", A.screen), extended.update && extended.update(A.screen) } globalRoot._myWin = _myWin, addEventListener("beforeunload", (function() { _myWin.close() })), globalRoot.startwin_ = startwin, globalRoot.checkWin_ = checkWin, function() { let e = ""; ! function t() { const n = A.screen; n !== e && (updateFunction(), e = n), requestAnimationFrame(t) }() }(), updateFunction(); class Player { static down(e) { input.key_down(e) } static up(e) { input.key_up(e) } static get A() { return A } static send(e) { input.key_down(e), input.key_up(e) } static get getNN() { return get(Screens.nickname) } static get nickname() { return this.getNN.value } static set nickname(e) { this.getNN.value = e } static get onGame() { return this.A.screen == Screens.ingame } static get onStats() { return this.A.screen == Screens.gameOver } static get canSpawn() { return this.A.screen == Screens.home } static get screen() { return this.A.screen } static wfs(e) { let t = () => this.screen; return t == e || new Promise((n => { let o = setInterval((() => { t() == e && (n(!0), clearInterval(o)) }), 1) })) } static async spawn(e) { return this.onStats && (this.send(13), await this.wfs(Screens.home)), input.try_spawn(this.nickname), await this.wfs(Screens.isGame), !0 } } const keys = e => Object.keys(e || this); function findColor(e) { const t = e.index, n = e.name; for (let e = 0; e < otherStuff.colors.length; e++) { let { index: o, name: r } = otherStuff.colors[e]; if (o == t && n == r) return e } } _Player = Player, alert("OK"), otherStuff = { toggles: [{ name: "net_predict_movement", bool: "true", for: "Enable clientside prediction for movement" }, { name: "ren_achievements", bool: "true", for: "Render achievements" }, { name: "ren_background", bool: "true", for: "Render background[6]" }, { name: "ren_cache_grid", bool: "true", for: "Cache grid on separate canvas" }, { name: "ren_context_reinitialization", bool: "true", for: "Reinitialize contexts if FPS is too low[7]" }, { name: "ren_debug_collisions", bool: "false", for: "Render collidable debug info[8]" }, { name: "ren_debug_info", bool: "false", for: "Render some debug info on the server stats test" }, { name: "ren_fps", bool: "false", for: "Render FPS" }, { name: "ren_health_bars", bool: "true", for: "Render health bars" }, { name: "ren_names", bool: "true", for: "Render names" }, { name: "ren_pattern_grid", bool: "true", for: "Use canvas createPattern for grid, it's faster but looks slightly worse" }, { name: "ren_raw_health_values", bool: "false", for: "Render raw health bar values" }, { name: "ren_scoreboard", bool: "true", for: "Render scoreboard" }, { name: "ren_scoreboard_names", bool: "true", for: "Render scoreboard names" }, { name: "ren_solid_background", bool: "true", for: "Render background as solid color, without the grid" }, { name: "ren_stats", bool: "true", for: "Render stat upgrades" }, { name: "ren_stroke_soft_color", bool: "true", for: "Renders strokes as a darker shade of fill color" }, { name: "ren_ui", bool: "true", for: "Render UI layer" }, { name: "ren_upgrades", bool: "true", for: "Render class upgrades" }, { name: "ui_prevent_right_click", bool: "true", for: "Prevent right click from triggering context menu" }], colors: [{ name: "net_replace_color", index: "0", default: "0x555555", for: "Smasher and Dominator Bases" }, { name: "net_replace_color", index: "1", default: "0x999999", for: "Barrels" }, { name: "net_replace_color", index: "2", default: "0x00B1DE", for: "Body (You)" }, { name: "net_replace_color", index: "3", default: "0x00B1DE", for: "Blue Team" }, { name: "net_replace_color", index: "4", default: "0xF14E54", for: "Red Team" }, { name: "net_replace_color", index: "5", default: "0xBE7FF5", for: "Purple Team" }, { name: "net_replace_color", index: "6", default: "0x00F46C", for: "Green Team" }, { name: "net_replace_color", index: "6", default: "0xD68163", for: "Green Team (Making Green Team Brown, like it was formerly)" }, { name: "net_replace_color", index: "7", default: "0x89FF69", for: "Shiny Polygons" }, { name: "net_replace_color", index: "8", default: "0xFFE869", for: "Square" }, { name: "net_replace_color", index: "9", default: "0xFC7677", for: "Triangle" }, { name: "net_replace_color", index: "10", default: "0x768DFC", for: "Pentagon" }, { name: "net_replace_color", index: "11", default: "0xFF77DC", for: "Crashers" }, { name: "net_replace_color", index: "12", default: "0xFFE869", for: "Arena Closers/Neutral Dominators/Defender Ammo" }, { name: "net_replace_color", index: "13", default: "0x44FFA0", for: "Scoreboard" }, { name: "net_replace_color", index: "14", default: "0xBBBBBB", for: "Maze Walls" }, { name: "net_replace_color", index: "15", default: "0xF14E54", for: "Others (FFA)" }, { name: "net_replace_color", index: "16", default: "0xFBC477", for: "Summoned Squares (Necromancer)" }, { name: "net_replace_color", index: "17", default: "0xC0C0C0", for: "Fallen Bosses" }, { name: "ren_background_color", default: "0xCDCDCD", for: "Base color for the background" }, { name: "ren_border_color", default: "0x000000", for: "The area outside the map (overlayed on top of the inside the map color, semi-transparent)" }, { name: "ren_minimap_background_color", default: "0xCDCDCD", for: "Minimap" }, { name: "ren_minimap_border_color", default: "0x555555", for: "Minimap Border" }, { name: "ren_health_fill_color", default: "0x85E37D", for: "Health Bar" }, { name: "ren_health_background_color", default: "0x555555", for: "Health Bar Background" }, { name: "ren_xp_bar_fill_color", default: "0xFFDE43", for: "EXP Bar" }, { name: "ren_score_bar_fill_color", default: "0x43FF91", for: "Score Bar" }, { name: "ren_bar_background_color", default: "0x000000", for: "EXP/Score Bar/Scoreboard Background" }, { name: "ren_stroke_solid_color", default: "0x555555", for: "Outlines (For ren_stroke_soft_color false)" }, { name: "ren_grid_color", default: "0x000000", for: "Grid Lines (Note: Actual R###lts Vary, seeing as the border is different for each section)" }] }, colors = {}, otherStuff.colors.forEach((e => { colors[e.for] = "#" + e.default.split("0x").pop() })), async function() { alert("A"); var e = class { constructor({ type: e, default_: t, name: n, command: o }) { t = Settings[n] || t; var r = ""; switch (e) { case "toggle": r = "checkbox"; break; case "color": r = "color" } var a = new element("label").set("for", n).set("innerText", n + ": "), s = new element("input", { type: r, id: n, name: o }).set("onchange", (function(e) { var t = e.target, a = "checkbox" == r ? t.checked : e.target.value; console.log({ name: n, value: a, target: t, e: e, type_: r, command: o }), Settings[n] = { value: a }, execute(`${o} ${a}`) })); t && ("checkbox" == r && s.set("checked", t), s.set("value", t)), this.input = s, this.label = a } }; console.log("Loading builds"); const t = await fetch("https://raw.githubusercontent.com/naquangaston/HostedFiles/main/builds.json").then((e => e.json())); console.log("Got Builds"); const n = Object.keys(t).map((e => [...new Set(Object.keys(t[e]._builds).map((n => t[e]._builds[n].p)))])); function o(e = {}) { let t = e; var n = 0, o = []; for (let e in t) "MAX" == t[e] && (t[e] = "7"), Number.isNaN(1 * t[e]) ? (o.push(e), console.log("Skipping", e, "key")) : n += 1 * t[e]; var r = 33 - n, a = Math.floor(r / o.length); o.forEach((e => { t[e] = a })), n = 0; for (let e in t) Number.isNaN(1 * t[e]) || (n += 1 * t[e]); if (0 != (r = 33 - n)) for (let e = 0; e < r; e++) for (let e = 0; e < Object.keys(t).length; e++) { r = 33 - n; var s = Object.keys(t)[e]; t[s] < 7 && r && o.includes(s) && (n += 1, t[s] += 1, console.log("Added to", s)) } return Object.keys(t).forEach((e => { t[e] = 1 * t[e] })), t } console.log({ BuildsName: n, Builds: t }), console.log("Fixing Builds"), function() { var [e, n] = ["map", "build"]; for (let a in t) { var r = t[a]; for (let s in r) "object" == typeof t[a][s] && (t[a][s] = t[a][s][e]((e => (e[n] = o(e[n]), e)))) } }(), console.log("EZ"); function r(e, t, { desc: n, line: o, space: r, befors: a, afters: s }) { var i = document.createElement("button"); i.innerText = e, i.onclick = t; var l, d = (l = "span", document.createElement(l)); d.innerText = n || "No description.", d.className = "menuDesc", o && c.append(document.createElement("br")), c.append(i), c.append(d) } function a(e, t) { setTimeout((function() { input.key_down(32) }), 1e3 * e), setTimeout((function() { input.key_up(32) }), 1e3 * e + t) } function s(e, t, { defaut: n, desc: o, line: r, space: a, befors: s, afters: i }) { var l = document.createElement("label"); l.innerText = e, l.for = e; var d = document.createElement("input"); d.type = "checkbox", d.name = e, d.onclick = t, d.checked = !!n; var u, p = (u = "span", document.createElement(u)); p.innerText = o || "No description.", p.className = "menuDesc", r && c.append(document.createElement("br")), c.append(l), c.append(d), c.append(p) } for (_myWin_ = globalRoot.myWin_; !_myWin_.window.document.getElementById("menu");) console.log("Menu not FOund!"), await sleep(1e3); _upgrade = GM_getValue("u") || "", console.log("ok"), await Player.wfs(Screens.home), console.log("WHy!!"); var i, l, c = _myWin_.window.document.getElementById("menu"); _myWin_.window.getV = getV, function() { Array.prototype.map_ = function(e) { const t = ["length"], n = this; for (let o = 0; o < this[t[0]]; o++) n[o] = e(this[o], o); return n }, addEventListener("beforeunload", (function() { GM_setValue("Settings", Settings) })); var t = new element("div", { id: "toggles" }).append(new element("h1").set("innerText", "Toggles")).append(element.br); otherStuff.toggles.map((t => new e({ name: t.for, type: "toggle", default_: "true" == t.bool, command: `${t.name} ` }))).forEach((e => { t.append(e.label).append(e.input).append(element.br) })); var n = new element("div", { id: "colors" }).append(new element("h1").set("innerText", "Styles")).append(element.br); otherStuff.colors.map((t => new e({ name: t.for, type: "color", default_: "#" + (t.new || t.default).match(/0x(?<o>.+)/i).groups.o, command: `${t.name}${t.index?" "+t.index:" "}` }))).forEach((e => { n.append(e.label).append(e.input).append(element.br) })), t.appendTo(c), n.appendTo(c) }(), r("Reset stats", (function() { GM_setValue("u", "") }), { desc: "Only use if your (game reloads without finish loading) or if game doesnt load." }), r("Fix Game", (function() { var e = function({ gamemode: e, name: t }) { return { gamemode: e, name: t } }(localStorage); for (let e in localStorage) localStorage.removeItem(e); localStorage.clear(); for (let t in e) localStorage.setItem(t, e[t]); location.href = location.href }), { desc: "Only use if your (game reloads without finish loading) or if game doesnt load." }), r("Remove-Ads", RemoveAds, { line: !0, desc: "Use to remove ads that may cause gae lag" }), r("Stack", (function() { a(0, 100), a(.75, 200), a(1.5, 750), setTimeout((function() { input.key_down(69) }), 2e3) }), { line: !0, desc: "stack preditor bullets max reload requried" }), s("AutoReload", (function() { AutoReload.toggle(), log_("AutoReloads", AutoReload.status) }), { defaut: AutoReload.status, line: !0, desc: "Auto Reloads page is loading take too long.(10 Seconds)" }), s("AutoUpgrade", (function() { AutoUpgrade.toggle(), log_("AutoUpgrade", AutoUpgrade.status) }), { defaut: AutoUpgrade.status, line: !0, desc: "AutoUpgrade you stats when you spawn into the game" }), s("AutoSpawn", (function() { AutoSpawn.toggle(), log_("AutoSpawn", AutoSpawn.status) }), { defaut: AutoSpawn.status, line: !0, desc: "Just auto respawn" }), console.log({ AutoSpawn: AutoSpawn, AutoUpgrade: AutoUpgrade, AutoReload: AutoReload }), setInterval((() => { AutoReload.status && ["loading", "captcha"].includes(Player.screen) && (alert("Auto reload is on\n page will reload in 5 seconds"), setTimeout((() => { AutoReload.status && ["loading", "captcha"].includes(Player.screen) ? location.reload() : consolelog("Reload ABprted") }), 5e3)) }), 1e4), _window = window; class d { static createCanvas() { const e = document.createElement("canvas"); return e.className = "CanvasKit-bypass", e.style.pointerEvents = "none", e.style.position = "fixed", e.style["z-index"] = 1, e.style.top = "0px", e.style.left = "0px", e.style.right = "0px", e.style.bottom = "0px", e.style.width = "100%", e.style.height = "100%", e } static hookRAF(e) { requestAnimationFrame = new Proxy(requestAnimationFrame, { apply: (t, n, o) => (e(), Reflect.apply(t, n, o)) }) } static hookCtx(e, t) { const n = CanvasRenderingContext2D.prototype; n[e] = new Proxy(n[e], { apply: (e, n, o) => ("CanvasKit-bypass" !== n.canvas.className && t(e, n, o), Reflect.apply(e, n, o)) }) } static overrideCtx(e, t) { const n = CanvasRenderingContext2D.prototype; n[e] = new Proxy(n[e], { apply: (e, n, o) => "CanvasKit-bypass" !== n.canvas.className ? t(e, n, o) : Reflect.apply(e, n, o) }) } static hookPolygon(e, t) {} } class u extends EventTarget { emit(e, ...t) { this.dispatchEvent(new CustomEvent(e, { detail: t })) } on(e, t) { this.addEventListener(e, (e => Reflect.apply(t, this, e.detail))) } once(e, t) { this.addEventListener(e, (e => Reflect.apply(t, this, e.detail)), { once: !0 }) } off(e, t) { this.removeEventListener(e, t) } } class p { x; y; constructor(e, t) { this.x = e, this.y = t } static len(e) { return Math.sqrt(e.x ** 2 + e.y ** 2) } static round(e) { return new p(Math.round(e.x), Math.round(e.y)) } static scale(e, t) { return new p(e * t.x, e * t.y) } static unscale(e, t) { return new p(t.x / e, t.y / e) } static add(e, t) { return new p(e.x + t.x, e.y + t.y) } static subtract(e, t) { return new p(e.x - t.x, e.y - t.y) } static multiply(e, t) { return new p(e.x * t.x, e.y * t.y) } static divide(e, t) { return new p(e.x / t.x, e.y / t.y) } static distance(e, t) { return p.len(p.subtract(e, t)) } static centroid(...e) { const t = e.reduce(((e, t) => p.add(e, t)), new p(0, 0)); return p.scale(1 / e.length, t) } static radius(...e) { const t = p.centroid(...e); return e.reduce(((e, n) => e + p.distance(t, n)), 0) / e.length } }! function(e) { e[e.Player = 0] = "Player", e[e.Bullet = 1] = "Bullet", e[e.Drone = 2] = "Drone", e[e.Trap = 3] = "Trap", e[e.Square = 4] = "Square", e[e.Triangle = 5] = "Triangle", e[e.Pentagon = 6] = "Pentagon", e[e.AlphaPentagon = 7] = "AlphaPentagon", e[e.Crasher = 8] = "Crasher", e[e.UNKNOWN = 9] = "UNKNOWN" }(i || (i = {})), function(e) { e.TeamBlue = "#00b2e1", e.TeamRed = "#f14e54", e.TeamPurple = "#bf7ff5", e.TeamGreen = "#00e16e", e.Square = "#ffe869", e.Triangle = "#fc7677", e.Pentagon = "#768dfc", e.AlphaPentagon = "#768dfc", e.Crasher = "#f177dd", e.NecromancerDrone = "#fcc376" }(l || (l = {})); const m = new class extends u {#t = !1;#n; constructor() { super(), d.hookRAF((() => this.#o())) }#o() { this.#t || void 0 === input || (this.#t = !0, this.#r()), super.emit("frame"), super.emit("frame_end") }#r() { setTimeout((() => super.emit("ready")), 100), this.#n = document.querySelector("d-base").shadowRoot, new MutationObserver(((e, t) => { e.forEach((e => { 0 !== e.addedNodes.length && (super.emit("state", this.state), super.emit(`s_${this.state}`)) })) })).observe(this.#n, { childList: !0 }) } get state() { return _Player.screen } get inHome() { return this.state == Screens.loading } get inGame() { return this.state == Screens.inGame } get inStats() { return this.state == Screens.gameOver } get inLoading() { return this.state == Screens.loading } get isCaptcha() { return "captcha" == this.state } }, h = new class {#a = 1; constructor() { setInterval((() => { const e = p.divide(g.minimapDim, g.viewportDim), t = p.multiply(e, f.screenToCanvas(new p(innerWidth, innerHeight))), n = f.toArenaUnits(t); this.#a = n.x }), 16) } get size() { return this.#a } scale(e) { const t = e => Math.round(this.#a * (e - .5)); return new p(t(e.x), t(e.y)) } unscale(e) { const t = e => e / this.#a + .5; return new p(t(e.x), t(e.y)) } }, f = new class {#s = 1;#i = !1; constructor() { Player.wfs(Screens.home).then((() => { input.set_convar = new Proxy(input.set_convar, { apply: (e, t, n) => { "ren_solid_background" === n[0] ? this.#i = n[1] : Reflect.apply(e, t, n) } }) })) } get windowRatio() { return Math.max(innerWidth / 1920, innerHeight / 1080) } get scalingFactor() { return this.#s } get fov() { return this.#s / this.windowRatio } toArenaUnits(e) { return p.round(p.unscale(this.#s, e)) } toCanvasUnits(e) { return p.round(p.scale(this.#s, e)) } toArenaPos(e) { const t = p.subtract(e, this.screenToCanvas(new p(innerWidth / 2, innerHeight / 2))), n = this.toArenaUnits(t); return p.add(n, w.position) } toCanvasPos(e) { const t = p.subtract(e, w.position), n = this.toCanvasUnits(t); return p.add(n, this.screenToCanvas(new p(innerWidth / 2, innerHeight / 2))) } screenToCanvasUnits(e) { return e * devicePixelRatio } canvasToScreenUnits(e) { return e / devicePixelRatio } screenToCanvas(e) { return p.scale(devicePixelRatio, e) } canvasToScreen(e) { return p.scale(1 / devicePixelRatio, e) } }, g = new class {#l = new p(1, 1);#c = new p(0, 0);#d = new p(1, 1);#u = new p(1, 1);#p = new p(.5, .5);#m = !1; constructor() { Player.wfs(Screens.home).then((() => { input.set_convar("ren_minimap_viewport", "true"), input.set_convar = new Proxy(input.set_convar, { apply: (e, t, n) => { if ("ren_minimap_viewport" !== n[0]) return Reflect.apply(e, t, n); this.#m = n[1] } }) })), this.#h(), this.#f(), this.#g() } get minimapDim() { return this.#l } get minimapPos() { return this.#c } get viewportDim() { return this.#d } get viewportPos() { return this.#u } get arrowPos() { return this.#p }#h() { d.hookCtx("strokeRect", ((e, t, n) => { const o = t.getTransform(); this.#l = new p(o.a, o.d), this.#c = new p(o.e, o.f) })) }#f() { d.overrideCtx("fillRect", ((e, t, n) => { const o = t.getTransform(); return .1 !== t.globalAlpha || Math.abs(o.a / o.d - innerWidth / innerHeight) > innerWidth / innerHeight * 5e-5 ? Reflect.apply(e, t, n) : (this.#d = new p(o.a, o.d), this.#u = new p(o.e, o.f), this.#m ? Reflect.apply(e, t, n) : void 0) })) }#g() { d.hookPolygon(3, ((e, t) => { const n = Math.round(p.distance(e[0], e[1])), o = Math.round(p.distance(e[0], e[2])), r = Math.round(p.distance(e[1], e[2])); if (n === o && o === r) return; const a = p.centroid(...e), s = p.subtract(a, this.#c), i = p.divide(s, this.#l); this.#p = i })) } }, w = new class {#w; constructor() { m.on("frame_end", (() => { const e = p.add(g.viewportPos, p.unscale(2, g.viewportDim)), t = p.subtract(e, g.minimapPos), n = p.divide(t, g.minimapDim); this.#w = h.scale(n) })) } get position() { return this.#w } }; const y = new Object; for (let e in t) try { t[e]._builds.forEach((e => { var t = e.p; const { name: n, desc: o, build: r } = e; y[t] || (y[t] = []), y[t].push({ name: n, desc: o, build: r }) })) } catch (e) {} var _ = window.myWin_.document.getElementById("myUL"); await new Promise((e => { var t = setInterval((() => { (_ = window.myWin_.document.getElementById("myUL")) && (e(), clearInterval(t)) })) })), function({ obj: e, func: t = function() {} }) { if (!t) throw "func must be property of object"; for (let n in e || this) t((e || this)[n], n) }({ obj: y, func: function(e, t) { try { function n(e) { return document.createElement(e) } _ = window.myWin_.document.getElementById("myUL"); let l = _myWin_.window.$; var o = n("span"); o.id = `dropDown_${t}`, o.className = "classBuild", o.innerText = t; var r = `dropDown_${t.split(" ").join("_")}_div`; o.onclick = function() { console.log(l(`#dropDown_${t.split(" ").join("_")}_div`)), l(`#dropDown_${t.split(" ").join("_")}_div`).toggle(2e3, "swing") }; var a = n("div"); a.id = r, console.log({ a: e, b: t }), e.forEach((e => { var { name: o, build: r, desc: s } = e, i = n("div"), l = n("input"); l.type = "button", l.value = "Select Build"; var c = n("span"); c.innerText = `Name:${o}\nDesc:${s}`, i.append(l), i.append(n("br")), e.p = t, l.onclick = function() { ! function(e) { var t = new Build; t.buildSet(e.build); var n = "####:" + e.p + "\n\nPath:" + t.BuildPath + "\n\nName:" + e.name + "\nBuild:" + Object.keys(e.build).map((t => e.build[t])).join(" / ") + "\n\nDesc:" + e.desc; upgrade = window.upgrade = t.BuildPath, _upgrade = t.BuildPath, console.log(n), console.log(e), console.log({ _upgrade: _upgrade, upgrade: upgrade }), GM_setValue("u", _upgrade); for (let t in e.build) try { var o = e.build[t] / 7; o *= 100, _myWin_.document.getElementsByClassName(`${t}_`)[0].innerText = e.build[t], _myWin_.document.getElementsByClassName(t)[0].style.width = `${o}%` } catch (e) { log_("Error", e.message), console.error({ err: e, i: t, p: `${o}%`, text: `${t}_` }) } }(e) }, i.append(c), a.append(i), a.append(n("br")) })); var s = n("li"), i = n("div"); i.append(o), s.append(i), s.append(a), _.append(s), l(`#dropDown_${t.split(" ").join("_")}_div`).toggle() } catch (c) { log_("Warning", c.message) } } }), set_convar("ren_health_bars", !0), set_convar("ren_raw_health_values", !0), set_convar("ren_stroke_soft_color", !1), set_convar("ren_solid_background", !0), otherStuff.colors.map((e => `${e.name} ${e.index?` $ { e.index } $ { e.default } `:e.default}`)).forEach(execute), execute("net_replace_color 0 0x000000"), execute("net_force_secure true"), execute("net_replace_color 1 0x999999"), execute("net_replace_color 2 0x050505"), execute("net_replace_color 3 0x0000FF"), execute("net_replace_color 4 0xFF0000"), execute("net_replace_color 5 0x990099"), execute("net_replace_color 6 0x00FF00"), execute("net_replace_color 8 0xFFFF00"), execute("net_replace_color 9 0xFFBBBB"), execute("net_replace_color 10 0xCCCCFF"), execute("net_replace_color 11 0xFF69B4"), execute("net_replace_color 12 0xFFFF00"), execute("net_replace_color 14 0x888888"), execute("net_replace_color 16 0xBBBB00"), execute("net_replace_color 17 0x777777"), execute("ren_stroke_solid_color 0xFFFFFF"), execute("ren_stroke_soft_color_intensity .5"), execute("ren_health_background_color 0x8c8c8c"), execute("ren_minimap_background_color 0xFFFFFF"), execute("ren_background_color 0x333231"), execute("ren_border_color 0xffffff"), execute("ren_bar_background_color 0x8c8c8c"), execute("net_replace_color 14 0x595959"), execute("ren_stroke_solid_color 0xFFFFFF"), execute("net_replace_color 15 0x8B0000"), shapes = Object.keys(colors).map((e => [colors[e], e])); var b = Player.screen; function x(e, t) { const n = e[0] - t[0], o = e[1] - t[1]; return [Math.hypot(n, o), n, o] } extended.update = async function(e) { "in-game-screen" == e && "users" != b && (AutoUpgrade.status && execute(`game_stats_build ${_upgrade}`), autoPlay && (Player.down(75), await sleep(4e3), Player.up(75))), "stats" == e && (Firing.status && (Firing.toggle(), log_("AutoFire", "off")), AutoSpawn.status && (log_("PlayerStatus", "Spawning into game"), await sleep(5e3), await Player.spawn())) }, testList = { f: {}, s: {} }, Firing.status, aim = function(e, t, n = !1) { var o; input.mouse(e, t), o = n, !Firing.status && o ? (log_("AutoFire", "on"), Firing.toggle(), Player.send(69)) : !o && Firing.status && (Firing.toggle(), Player.send(69), log_("AutoFire", "off")) }; playerPos = [0, 0], enemies = [], buttlets = [], enemies2 = [], TempotherList = {}; let v = [], S = [], k = []; squares = []; let P = []; triangles = []; let F = [], C = []; crashers = [], pentagons = [], sortedShapes = []; let T = []; autoPlay = !1, setTimeout((function e() { window.requestAnimationFrame(e), squares = P, triangles = F, pentagons = T, enemies = v, enemies2 = k, otherList = infothingy, crashers = C, infothingy = { text: [] }, P = [], F = [], T = [], v = [], k = [], C = [], O = 0, I = [], M = [], otherList["Others (FFA)"], sortedShapes = function(e) { if (!e.length) return e; function t(e) { const [t, n] = e[0], o = E.width / 2, r = E.height / 2; return Math.sqrt((t - o) ** 2 + (n - r) ** 2) } const n = e.filter((e => "BARRELS" === e[3].toUpperCase())).sort(((e, n) => t(e) - t(n))), o = e.filter((e => "PENTAGON" === e[3].toUpperCase())).sort(((e, n) => t(e) - t(n))), r = e.filter((e => "TRIANGLE" === e[3].toUpperCase())).sort(((e, n) => t(e) - t(n))), a = e.filter((e => "SQUARE" === e[3].toUpperCase())).sort(((e, n) => t(e) - t(n))); return [...n, ...o, ...r, ...a] }([...enemies, ...crashers, ...pentagons, ...triangles, ...squares]).filter((e => !e.shape || !e.shape[1].includes("Body (You)"))), rt = { Screens: Screens, screen: _Player || Player ? (window._Player || Player).screen : null, autoPlay_: !!autoPlay_, targetShape: sortedShapes && sortedShapes[0] ? sortedShapes[0] : [], shape: sortedShapes && sortedShapes[0] ? sortedShapes[0].shape : [] } }), 100); const E = document.getElementById("canvas"); E.getContext("2d"); function B(e, t) { window.requestAnimationFrame((function n() { window.requestAnimationFrame(n); const o = CanvasRenderingContext2D.prototype[e]; o.toString().includes(e) && (CanvasRenderingContext2D.prototype[e] = new Proxy(o, { apply: (e, n, o) => (t(n, o), Reflect.apply(e, n, o)) })) })) } function R(e, t, n, o) { return t.getTransform().transformPoint(new DOMPoint(n, o)) } determineDirection = function(e, t) { const [n, o] = e[0]; innerWidth, innerHeight; const r = innerWidth / 2, a = innerHeight / 2; Math.sqrt((n - r) ** 2 + (o - a) ** 2) <= t ? (n < r && o < a || n > r && o < a ? Player.down(40) : (n < r && o > a || n > r && o > a) && Player.down(38), n < r && o < a ? Player.down(37) : n > r && o < a ? Player.down(39) : n < r && o > a ? Player.down(37) : n > r && o > a && Player.down(39)) : (Player.up(38), Player.up(40), Player.up(37), Player.up(39)) }, logCtx = !1; let A = 0, N = []; var U = [], L = [], j = !1, D = [], M = [], O = 0, I = []; B("beginPath", (function(e, t) { M = [], pos_ = [], A = 1, N = [], U = [], L = [], shapes = Object.keys(colors).map((e => [colors[e], e])) })), B("fillText", (function(e, t) { var n = R(t, e, ...t); infothingy.text.push({ args: t, x: n.x, y: n.y }) })), B("fillRect", (function(e, t) { shapes = Object.keys(colors).map((e => [colors[e], e])), M.push(t) })), B("rect", (function(e, t) { L.push(t) })), B("moveTo", (function(e, t) { I.push(t), 1 == A ? (A += 1, N.push(t)) : A = 0, U.push(t) })), B("stroke", (function(e, t) { var n = {...e }; shapes = Object.keys(colors).map((e => [colors[e], e])), n.x_y = M, n.arcs = O, n.lines = I; for (let r = 0; r < shapes.length; r++) { let a = shapes[r][0].includes(e.fillStyle) || shapes[r][0].toUpperCase().includes(e.fillStyle.toUpperCase()); if (shapes[r][0].includes(e.strokeStyle) || shapes[r][0].toUpperCase().includes(e.strokeStyle.toUpperCase()) || a) { n.shape = shapes[r][1], n.calls = A; var o = R(n.shape, e, ...t); n.pos = { x: o.x, y: o.y }, "Barrels" != n.shape || 3 != O && 6 != O || (n.pos = D, n.calledEnemyLast = j), "Barrels" == n.shape && logCtx && (console.log({ _this: n }, n), logCtx = !1), infothingy[n.shape] || (infothingy[n.shape] = []), !n.custom && infothingy[n.shape].push({...n }); break } } j = !1 })), B("lineTo", (function(e, t) { I.push(t), A >= 2 && A <= 6 ? (A += 1, N.push(t)) : A = 0, U.push(t) })), B("fill", (function(e, t) { if (e.fillStyle, shapes = Object.keys(colors).map((e => [colors[e], e])), A >= 4 && A <= 6) { const t = function(e) { let t = [0, 0]; return e.forEach((e => { t[0] += e[0], t[1] += e[1] })), t[0] /= e.length, t[1] /= e.length, t }(N), n = 4 == A ? triangles : 5 == A ? squares : pentagons; if (e.globalAlpha < 1) return; let o = [ [0, 0], 0 ]; for (let e = 0; e < n.length; e++) { const r = x(o[0], t)[0]; x(n[e][0], t)[0] < r && (o = n[e]) } if (x(o[0], t)[0] < 50 && (o[2] && (o[2] == e.fillStyle ? o[1]++ : o[1] = 0), o[1] > 2)) return; let r = [t, o[1], e.fillStyle]; if (r.shape = shapes.filter((t => t[0].toUpperCase() == e.fillStyle.toUpperCase()))[0], j = !1, 4 == A) { if (colors["Body (You)"].toUpperCase() == e.fillStyle.toUpperCase() || "#000000" == e.fillStyle) return; colors.Crashers.toUpperCase() == e.fillStyle.toUpperCase() ? (r.push("Crashers"), C.push(r)) : (r.push("triangle"), F.push(r)) } else 5 == A ? (r.push("square"), P.push(r)) : (r.push("pentagon"), T.push(r)) } else A = 0 })), B("arc", (function(e, t) { const n = e.getTransform(); $ = new p(n.e, n.f), W = n.a, z = i.Player; f.toArenaUnits(new p(W, W)).x; O++; const o = e.getTransform(); shapes = Object.keys(colors).map((e => [colors[e], e])); let r = [ [o.e, o.f], 0, e.fillStyle ]; D = r[0], r.arcs = O, r.shape = shapes.filter((t => t[0].toUpperCase() == e.fillStyle.toUpperCase()))[0], r.shape && !r.shape[1].includes("You") && (W < 40 ? S.push([$, W, z, q]) : (r.calls = A, r.push("Barrels"), r.push(W), v.push(r), j = !0)) })); var q, $, W, z; return "EZ" }().then(console.log, console.warn).catch((e => console.warn(e))); var mouseInteraction = 1; document.onkeydown = function(e) { 88 == e.keyCode && (mouseInteraction ? (document.body.style.pointerEvents = "none", mouseInteraction = !1) : (document.body.style.pointerEvents = "auto", mouseInteraction = !0)) }, window.s = A;