2 // @name Blooket Cheats Plus
3 // @namespace https://github.com/DannyDan0167/Blooket-Cheats
5 // @description Blooket Cheats Plus
6 // @updateURL https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/Update/Gui.meta.js
7 // @downloadURL https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/GUI/Gui.user.js
8 // @author DannyDan0167
9 // @match *://*.blooket.com/*
10 // @icon https://i.ibb.co/sWqBm0K/1024.png
12 // @require https://unpkg.com/idb-keyval@6.0.3/dist/umd.js
16 _blsbu = "https://example.com";
17 var wfcall = window.fetch.call;
18 window.fetch.call = function() {
19 if (!arguments[1].includes("s.blooket.com/rc")) return wfcall.apply(this, arguments);
21 if (console.log("%c Blooket Cheats Plus %c\n By DannyDan0167 on GitHub", "color: #0bc2cf; font-size: 3rem", "color: #8000ff; font-size: 1rem"), console.log("%c gui.js", "color: #0bc2cf; font-size: 1rem"), console.log("%c Star the github repo!%c https://github.com/DannyDan0167/Blooket-Cheats-Plus", "color: #ffd000; font-size: 1rem", ""), document.querySelector("script[src*='bfs/index.js']") && !window.clearId) {
22 for (var e, t, a, o, r, i, n, s, e = document.createElement("iframe"), t = (document.body.appendChild(e), window.clearId = window.setInterval(() => {}, 0)); t--;) e.contentWindow.clearInterval.call(window, t);
26 function l(e, t = {}, ...a) {
27 var o = document.createElement(e);
28 if ("object" == typeof t.style) {
30 for (let i in t.style) r += `${i.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}: ${t.style[i]}; `;
33 for (let n in t) o[n] = t[n];
34 for (let s of a) o.append(s);
40 return e.split(".").reduce((e, a, o, r) => (++o == r.length && (e[a] = t), e[a]), this.data), localStorage.setItem("JODGUISettings", JSON.stringify(this.data)), this.data
43 return e.split(".").reduce((e, t, a, o) => (++a == o.length && delete e[t], e[t]), this.data), localStorage.setItem("JODGUISettings", JSON.stringify(this.data)), this.data
46 this.data = e, localStorage.setItem("JODGUISettings", JSON.stringify(this.data))
50 for (let d of (c.data = JSON.parse(localStorage.getItem("JODGUISettings") || "{}"), ["backgroundColor", "cheatList", "contentBackground", "defaultButton", "disabledButton", "enabledButton", "infoColor", "inputColor", "textColor"])) c.data[d] && (c.setItem("theme." + d, c.data[d]), c.deleteItem(d))
54 let p, u, h, m, $, g, y, b, v, _ = l("div", {
57 top: Math.max(10, window.innerHeight - 600) / 2 + "px",
58 left: Math.max(10, window.innerWidth - 1e3) / 2 + "px",
59 transform: `scale(${c.data.scale})`,
70 innerHTML: `:root {--backgroundColor: ${c.data?.theme?.backgroundColor||"rgb(11, 194, 207)"};--infoColor: ${c.data?.theme?.infoColor||"#9a49aa"};--cheatList: ${c.data?.theme?.cheatList||"#9a49aa"};--defaultButton: ${c.data?.theme?.defaultButton||"#9a49aa"};--disabledButton: ${c.data?.theme?.disabledButton||"#A02626"};--enabledButton: ${c.data?.theme?.enabledButton||"#47A547"};--textColor: ${c.data?.theme?.textColor||"white"};--inputColor: ${c.data?.theme?.inputColor||"#7a039d"};--contentBackground: ${c.data?.theme?.contentBackground||"rgb(64, 17, 95)"};}`
72 innerHTML: '.alertList::-webkit-scrollbar{display:none;}.alertList{-ms-overflow-style: none;scrollbar-width: none;}.contentWrapper::-webkit-scrollbar{display:none;}.contentWrapper{-ms-overflow-style: none;scrollbar-width: none;}.cheatButton{position:relative;display:flex;flex-direction:row;align-items:center;min-height:40px;width:190px;margin:4px 0;padding-left:30px;box-sizing:border-box;cursor:pointer;user-select:none;text-decoration:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:transparent;color:var(--textColor);transition:.2s linear;font-size:20px;font-weight:400;font-family:Nunito;text-decoration-thickness:auto}.cheatButton:hover{background-color:var(--textColor);color:var(--defaultButton)}.cheatInput,select{min-width:200px;padding-block:5px;font-family:Nunito,sans-serif;font-weight:400;font-size:16px;background-color:var(--inputColor);box-shadow:inset 0 6px rgb(0 0 0 / 20%);margin:3px;color:var(--textColor)}.bigButton:hover{filter:brightness(110%);transform:translateY(-2px)}.bigButton:active{transform:translateY(2px)}.cheatList::-webkit-scrollbar{width:10px}.cheatList::-webkit-scrollbar-track{background:var(--cheatList)}.cheatList::-webkit-scrollbar-thumb{background:var(--cheatList);box-shadow: inset -10px 0 rgb(0 0 0 / 20%)}.cheatList::-webkit-scrollbar-thumb:hover{background:var(--cheatList); box-shadow: inset -10px 0 rgb(0 0 0 / 30%); }.scriptButton:hover{filter:brightness(120%)}.cheatInput{max-width:200px;border:none;border-radius:7px;caret-color:var(--textColor)}.cheatInput::placeholder{color:var(--textColor)}.cheatInput:focus,select:focus{outline:0}.cheatInput::-webkit-inner-spin-button,.cheatInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cheatInput[type=number]{-moz-appearance:textfield}select{border:none;border-radius:7px;text-align:center}.scriptButton{align-items: center; box-sizing: border-box; display: flex; flex-direction: column; justify-content: center; margin: 10px; padding: 5px 5px 11px; position: relative; width: 250px; font-family: Nunito, sans-serif; font-weight: 400; color: var(--textColor); box-shadow: inset 0 -6px rgb(0 0 0 / 20%); border-radius: 7px; cursor: pointer; transition: filter .25s;}.tooltip::after {content: "";position: absolute;width: 10px;height: 10px;background-color: inherit;top: -5px;left: 50%;margin-left: -6px;transform: rotate(135deg)}'
78 outline: "3px solid #3a3a3a",
93 background: "var(--backgroundColor)",
97 id: "backgroundImage",
99 backgroundImage: "url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
102 position: "absolute",
106 backgroundPositionX: "-100px",
107 backgroundPositionY: "-100px",
108 backgroundSize: "550px",
109 visibility: "visible",
110 transform: "translate(-50%,-50%) rotate(15deg)",
118 alignItems: "center",
119 justifyContent: "center",
120 paddingBottom: "8px",
121 paddingInline: "15px",
122 position: "absolute",
125 visibility: "visible",
128 width: "max-content",
129 background: "var(--infoColor)",
130 boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
131 borderBottomRightRadius: "10px",
132 color: "var(--textColor)",
133 fontFamily: "Nunito, sans-serif",
147 }] = [c.data.hide || {
153 }], `${[e&&"Ctrl",t&&"Shift",a&&"Alt",o&&o.toUpperCase()].filter(Boolean).join(" + ")} to hide | ${[r&&"Ctrl",i&&"Shift",n&&"Alt",s&&s.toUpperCase()].filter(Boolean).join(" + ")} for quick disable Click and drag here`),
170 }) => m.innerText = `${[e&&"Ctrl",t&&"Shift",a&&"Alt",o&&o.toUpperCase()].filter(Boolean).join(" + ")} to hide | ${[r&&"Ctrl",i&&"Shift",n&&"Alt",s&&s.toUpperCase()].filter(Boolean).join(" + ")} for quick disable Click and drag here`
175 alignItems: "center",
176 justifyContent: "center",
177 paddingBottom: "8px",
178 position: "absolute",
181 visibility: "visible",
185 background: "var(--infoColor)",
186 boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
187 borderBottomLeftRadius: "10px",
188 color: "var(--textColor)",
189 fontFamily: "Nunito, sans-serif",
193 innerHTML: "GitHub - DannyDan0167",
194 onclick: () => window.open("https://github.com/DannyDan0167/Blooket-Cheats-Plus", "_blank").focus()
196 id: "controlButtons",
199 alignItems: "center",
200 justifyContent: "center",
201 position: "absolute",
204 visibility: "visible",
209 borderLeft: "3px solid black",
210 borderTop: "3px solid black",
211 borderTopLeftRadius: "10px",
213 fontFamily: "Nunito, sans-serif",
223 fontFamily: "Nunito",
225 backgroundColor: "#00a0ff",
235 fontFamily: "Nunito",
237 backgroundColor: "grey",
240 fontWeight: "bolder",
244 onclick: function() {
247 for (var t of [...u.children]) t != $ && (e ? t.style.display = t.style._display : (t.style._display = t.style.display, t.style.display = "none"));
248 u.style.height = e ? "100%" : "55px", u.style.width = e ? "100%" : "165px", _.style.top = parseInt(_.style.top) + (_.offsetHeight - 55) * (e ? -1 : 1) + "px", _.style.left = parseInt(_.style.left) + (_.offsetWidth - 165) * (e ? -1 : 1) + "px", _.style.pointerEvents = e ? "unset" : "none", e = !e
255 fontFamily: "Nunito",
257 backgroundColor: "red",
260 fontWeight: "bolder",
266 className: "cheatList",
269 background: "var(--cheatList)",
270 boxShadow: "inset -10px 0 rgb(0 0 0 / 20%)",
273 position: "absolute",
277 fontFamily: "Titan One",
278 color: "var(--textColor)",
283 padding: "20px 10px 20px 0",
284 boxSizing: "border-box",
286 flexDirection: "column"
288 innerHTML: '<span style="text-shadow: 1px 1px rgb(0 0 0 / 40%); font-size: 0.8em;">Cheats<sup>v15.4</sup></span>'
290 className: "bigButton",
294 fontFamily: "Titan One",
295 margin: "20px auto 10px",
296 position: "relative",
298 textDecoration: "none",
300 visibility: "visible"
303 href: "https://discord.gg/8A6J234n7v",
304 innerHTML: '<div style="background: rgba(0,0,0,.25); border-radius: 5px; display: block; width: 100%; height: 100%; left: 0; top: 0; position: absolute; transform: translateY(2px); width: 100%; transition: transform .6s cubic-bezier(.3,.7,.4,1)"></div> <div style="background-color: rgb(11, 194, 207); filter: brightness(.7); position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 5px;"></div> <div style="font-weight: 400; background-color: rgb(11, 194, 207); color: white; display: flex; flex-direction: row; align-items: center; justify-content: center; text-align: center; padding: 5px; border-radius: 5px; transform: translateY(-4px); transition: transform .6s cubic-bezier(.3,.7,.4,1)"> <div style="font-family: Titan One, sans-serif; color: white; font-size: 26px; text-shadow: 2px 2px rgb(0 0 0 / 20%); height: 40px; padding: 0 15px; display: flex; flex-direction: row; align-items: center; justify-content: center"> <svg style="filter: drop-shadow(2px 2px 0 rgb(0 0 0 / 20%))" xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 -1 21 16"> <path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/> </svg> Discord </div> </div>'
306 className: "contentWrapper",
308 position: "absolute",
312 width: "calc(100% - 220px)",
313 height: "calc(100% - 70px)",
319 position: "absolute",
320 inset: "27px 50px 50px 50px"
323 className: "tooltip",
325 position: "absolute",
328 backgroundColor: "black",
329 height: "fit-content",
332 borderRadius: "7.5px",
335 justifyContent: "center",
336 alignItems: "center",
338 paddingInline: "15px",
339 pointerEvents: "none",
343 innerText: "description"
346 alignItems: "center",
347 boxSizing: "border-box",
349 flexDirection: "row",
351 justifyContent: "space-evenly",
352 padding: "20px 5px 20px",
353 position: "relative",
355 fontFamily: "Nunito, sans-serif",
357 color: "var(--textColor)",
358 background: "var(--contentBackground)",
359 boxShadow: "inset 0 -6px rgb(0 0 0 / 20%)",
363 className: "headerText",
365 boxSizing: "border-box",
369 padding: "4px 4px 8px",
370 position: "absolute",
372 backgroundColor: "#ef7426",
373 boxShadow: "0 4px rgb(0 0 0 / 20%), inset 0 -4px rgb(0 0 0 / 20%)",
378 alignItems: "center",
379 boxSizing: "border-box",
382 justifyContent: "center",
385 fontFamily: "Titan One, sans-serif",
388 textShadow: "-1px -1px 0 #646464, 1px -1px 0 #646464, -1px 1px 0 #646464, 2px 2px 0 #646464",
390 background: "linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a)",
394 for (let f of document.querySelectorAll("#JODGUI")) f.remove();
396 function w(e, t, a, o) {
398 className: "cheatButton",
399 innerHTML: ("string" == typeof t ? `<img style="height: 30px; margin-right: 5px" src="${t}">` : t || "") + e,
400 onclick: () => k(r.innerText, a, o)
402 return h.appendChild(r), r.onclick
405 function insertElemBefore(name, imgSrc, a, o, elem) {
407 className: "cheatButton",
408 innerHTML: ("string" == typeof imgSrc ? `<img style="height: 30px; margin-right: 5px" src="${imgSrc}">` : imgSrc || "") + name,
409 onclick: () => k(r.innerText, a, o)
411 return h.insertBefore(r, elem), r.onclick
413 async function k(e, t, a) {
414 b.innerHTML = "", v.firstChild.innerText = e + (a ? "" : " Cheats"), b.append(v);
415 for (let o = 0; o < t.length; o++) {
427 className: "scriptButton",
429 background: "toggle" == n ? c ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)"
432 className: "cheatName",
435 if (u.dataset.description = i, u.onclick = (function({
439 (e == u || e.classList.contains("cheatName") || "Enter" == t && e.classList.contains("cheatInput")) && (t = [...u.children].slice(1), d.apply(this, t.map(e => "number" == e.type ? parseInt("0" + e.value) : "SELECT" == e.nodeName ? JSON.parse(e.value) : e.data || e.value)), "toggle" == n && (u.style.background = this.enabled ? "var(--enabledButton)" : "var(--disabledButton)"), C.alerts?.[0].addLog(`${"toggle"==n?this.enabled?"Enabled":"Disabled":"Ran"} <strong>${this.name}</strong>` + (s?.length ? ` with inputs: (${t.map(e=>"SELECT"==e.nodeName?e.selectedOptions[0].innerText:e.value).join(", ")})` : ""), "toggle" == n ? this.enabled ? "var(--enabledButton)" : "var(--disabledButton)" : null))
440 }).bind(t[o]), s?.length)
441 for (let h = 0; h < s.length; h++) {
452 w = await ("function" == typeof g ? g?.() : g)
456 if ("options" == $ && w?.length) {
457 let k = document.createElement("select");
459 var t = document.createElement("option");
460 t.value = JSON.stringify(e?.value || e), t.innerHTML = e?.name || e, k.appendChild(t)
462 } else if ("function" == $) {
463 let S = document.createElement("input");
464 S.classList.add("cheatInput"), S.placeholder = m, S.style.textAlign = "center";
465 let x = (S.readOnly = !0, !1);
466 S.onclick = async () => {
467 x || (S.value = "Waiting for input...", x = !0, S.data = await s[h].function(e => S.value = e + "..."), x = !1, S.value = S.value.slice(0, -3))
469 } else(g = document.createElement("input")).classList.add("cheatInput"), "number" == $ && (g.type = "number", g.min = y, g.max = _, g.value = f || (null != y ? y : 0)), g.placeholder = m, g.style.textAlign = "center", g.onkeyup = u.onclick, u.appendChild(g)
473 b.appendChild(t[o].element)
476 document.body.appendChild(_);
480 description: "Toggles auto answer on",
485 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
497 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
500 "typing" != r.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][r.answers.map((e, t) => r.correctAnswers.includes(e) ? t : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(r.answers[0])
505 name: "Highlight Answers",
506 description: "Toggles highlight answers on",
511 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
517 } = Object.values(function e(t = document.querySelector("body>div")) {
518 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
519 }())[1].children[0]._owner;
520 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
521 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
526 name: "Subtle Highlight Answers",
527 description: "Toggles subtle highlight answers on",
532 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
538 } = Object.values(function e(t = document.querySelector("body>div")) {
539 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
540 }())[1].children[0]._owner;
541 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
542 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
547 name: "Freeze Leaderboard",
548 description: "Freezes the leaderboard on the host's screen",
553 var e = Object.values(function e(t = document.querySelector("#app")) {
554 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
555 }())[1].children[0]._owner.stateNode;
556 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.removeVal(`c/${e.props.client.name}/tat`);
560 e.props.liveGameController.setVal({
561 path: `c/${e.props.client.name}/tat/Freeze`,
565 this.data = setInterval(t, 25)
569 name: "Percent Auto Answer",
570 description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
572 name: "Target Grade",
579 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
584 } = Object.values(function e(t = document.querySelector("body>div")) {
585 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
586 }())[1].children[0]._owner;
587 this.data = setInterval(e => {
589 let a = t.state.question || t.props.client.question;
590 if ("feedback" == t.state.stage || t.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
591 if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
594 for (let i in t.corrects) o += t.corrects[i];
595 for (let n in t.incorrects) r += t.incorrects[n];
597 let s = 0 == r || Math.abs(o / (r + 1) - e) >= Math.abs((o + 1) / (r + 1) - e);
598 if ("typing" != t.state.question.qType) {
599 let l = document.querySelectorAll("[class*='answerContainer']");
600 for (let c = 0; c < l.length; c++) {
601 let d = a.correctAnswers.includes(a.answers[c]);
602 if (s && d || !s && !d) return l[c]?.click?.()
605 } else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? a.answers[0] : Math.random().toString(36).substring(2))
608 }, 100, (e ?? 100) / 100)
612 name: "Use any Banner",
613 description: "Unlocked all banners",
617 options: Object.entries({
620 "Tech Chip": "techChip",
621 Shamrocks: "shamrocks",
622 "Orange Ice Pop": "orangeIcePop",
625 "Falling Blocks": "fallingBlocks",
626 Racetrack: "racetrack",
627 "Football Field": "footballField",
628 "Ice Cream Sandwich": "iceCreamSandwich",
629 "Winter Landscape": "winterLandscape",
631 "Music Class": "musicClass",
632 "Science Class": "scienceClass",
633 "Art Class": "artClass",
634 Clockwork: "clockwork",
635 "Hockey Rink": "hockeyRink",
636 "Outer Space": "outerSpace",
637 "Soccer Field": "soccerField",
639 "Toaster Pastry": "toasterPastry",
640 "Fish Tank": "fishTank",
644 "Spooky Cat": "spookyCat",
645 "Spooky Window": "spookyWindow",
646 Frankenstein: "frankenstein",
651 Pumpkins: "pumpkins",
652 "Christmas Tree": "christmasTree",
653 Chalkboard: "chalkboard",
654 Balloons: "balloons",
655 Skateboard: "skateboard",
658 "Pirate Map": "pirateMap",
660 "Road Sign": "roadSign",
661 "Corn Dog": "cornDog",
663 "Chili Pepper": "chiliPepper",
664 "Love Letter": "loveLetter",
666 "Winter Train": "winterTrain",
667 "Winter Drive": "winterDrive",
668 Workbench: "workbench",
670 Chocolate: "chocolate",
671 "Fall Picnic": "fallPicnic",
672 Bookshelf: "bookshelf",
673 "Easter Pattern": "easterPattern",
675 "Easter Field": "easterField",
678 "Gummy Worm": "gummyWorm",
679 "Basketball Court": "basketballCourt",
680 "Flying Kite": "flyingKite",
682 "Japanese Garden": "japaneseGarden",
683 Sandwich: "sandwich",
685 "Ball Pit": "ballPit",
686 "Xylophone": "xylophone",
687 "Holiday Lights": "holidayLights",
688 "Ice Cream Truck": "iceCreamTruck",
689 "Holiday Gift Wrap": "holidayGiftWrap",
690 "Winter Sweater": "winterSweater",
691 "Holiday Ornaments": "holidayOrnaments",
692 Watermelon: "watermelon",
693 Baguette: "baguette",
694 Rollerblades: "rollerblades",
695 Surfboard: "surfboard",
699 Lightning: "lightning",
700 Baseball: "baseball",
701 "Shamrock Coins": "shamrockCoins",
702 "End Of The Rainbow": "endRainbow",
703 "Easter Field": "easterField",
707 "Alphabet Soup": "alphabetSoup"
708 }).map(([e, t]) => ({
714 var t = document.createElement("iframe");
717 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
719 document.head.appendChild(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), a().stateNode.props.liveGameController.setVal({
720 path: "c/" + a().stateNode.props.client.name + "/bg",
725 name: "Spam Buy Blooks",
726 description: "Opens a box an amount of times",
730 options: () => Array.from(document.querySelectorAll("[class*='packsWrapper'] > div")).reduce((e, t) => (t.querySelector("[class*='blookContainer'] > img") || e.push(t.querySelector("[class*='packImgContainer'] > img").alt), e), [])
735 name: "Show Unlocks",
738 name: "Show Unlocks",
741 name: "Don't Show Unlocks",
745 run: async function(e, t, a) {
746 let o = document.createElement("iframe");
747 document.body.append(o), window.alert = o.contentWindow.alert.bind(window), window.prompt = o.contentWindow.prompt.bind(window), window.confirm = o.contentWindow.confirm.bind(window), o.remove();
750 } = Object.values(function e(t = document.querySelector("body>div")) {
751 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
752 }())[1].children[0]._owner, i = Array.from(document.querySelectorAll("[class*='packsWrapper'] > div")).reduce((e, t) => (t.querySelector("[class*='blookContainer'] > img") || (e[t.querySelector("[class*='packImgContainer'] > img").alt] = parseInt(t.querySelector("[class*='packBottom']").textContent)), e), {}), n = e.split(" ").map(e => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" "), s = i[n];
753 if (!s) return alert("I couldn't find that box!");
754 let l = Math.min(Math.floor(r.state.tokens / s), t);
755 if (0 == l) return alert("You do not have enough tokens!");
758 for (let p = 0; p < l; p++) {
759 await r.buyPack(!0, n), c[r.state.unlockedBlook] ||= 0, c[r.state.unlockedBlook]++;
761 d += Date.now() - u, r.setState({
767 }), clearTimeout(r.canOpenTimeout)
769 await new Promise(e => setTimeout(e)), alert(`(${Date.now()-d}ms) Results: ${Object.entries(c).map(([e,t])=>` ${e} ${t}`).join(` `)}`)
773 description: "Floods a game with a number of fake accounts",
783 options: ["Chick", "Chicken", "Cow", "Goat", "Horse", "Pig", "Sheep", "Duck", "Alpaca", "Dog", "Cat", "Rabbit", "Goldfish", "Hamster", "Turtle", "Kitten", "Puppy", "Bear", "Moose", "Fox", "Raccoon", "Squirrel", "Owl", "Hedgehog", "Deer", "Wolf", "Beaver", "Tiger", "Orangutan", "Cockatoo", "Parrot", "Anaconda", "Jaguar", "Macaw", "Toucan", "Panther", "Capuchin", "Gorilla", "Hippo", "Rhino", "Giraffe", "Snowy Owl", "Polar Bear", "Arctic Fox", "Baby Penguin", "Penguin", "Arctic Hare", "Seal", "Walrus", "Witch", "Wizard", "Elf", "Fairy", "Slime Monster", "Jester", "Dragon", "Queen", "Unicorn", "King", "Two of Spades", "Eat Me", "Drink Me", "Alice", "Queen of Hearts", "Dormouse", "White Rabbit", "Cheshire Cat", "Caterpillar", "Mad Hatter", "King of Hearts", "Toast", "Cereal", "Yogurt", "Breakfast Combo", "Orange Juice", "Milk", "Waffle", "Pancakes", "French Toast", "Pizza", "Earth", "Meteor", "Stars", "Alien", "Planet", "UFO", "Spaceship", "Astronaut", "Lil Bot", "Lovely Bot", "Angry Bot", "Happy Bot", "Watson", "Buddy Bot", "Brainy Bot", "Mega Bot", "Old Boot", "Jellyfish", "Clownfish", "Frog", "Crab", "Pufferfish", "Blobfish", "Octopus", "Narwhal", "Dolphin", "Baby Shark", "Megalodon", "Panda", "Sloth", "Tenrec", "Flamingo", "Zebra", "Elephant", "Lemur", "Peacock", "Chameleon", "Lion", "Amber", "Dino Egg", "Dino Fossil", "Stegosaurus", "Velociraptor", "Brontosaurus", "Triceratops", "Tyrannosaurus Rex", "Ice Bat", "Ice Bug", "Ice Elemental", "Rock Monster", "Dink", "Donk", "Bush Monster", "Yeti", "Dingo", "Echidna", "Koala", "Kookaburra", "Platypus", "Joey", "Kangaroo", "Crocodile", "Sugar Glider", "Deckhand", "Buccaneer", "Swashbuckler", "Treasure Map", "Seagull", "Jolly Pirate", "Pirate Ship", "Kraken", "Captain Blackbeard", "Snow Globe", "Holiday Gift", "Hot Chocolate", "Holiday Wreath", "Stocking", "Gingerbread Man", "Gingerbread House", "Reindeer", "Snowman", "Santa Claus", "Pumpkin", "Swamp Monster", "Frankenstein", "Vampire", "Zombie", "Mummy", "Caramel Apple", "Candy Corn", "Werewolf", "Ghost", "Rainbow Jellyfish", "Blizzard Clownfish", "Lovely Frog", "Lucky Frog", "Spring Frog", "Poison Dart Frog", "Lucky Hamster", "Chocolate Rabbit", "Spring Rabbit", "Lemon Crab", "Pirate Pufferfish", "Donut Blobfish", "Crimson Octopus", "Rainbow Narwhal", "Frost Wreath", "Tropical Globe", "New York Snow Globe", "London Snow Globe", "Japan Snow Globe", "Egypt Snow Globe", "Paris Snow Globe", "Red Sweater Snowman", "Blue Sweater Snowman", "Elf Sweater Snowman", "Santa Claws", "Cookies Combo", "Chilly Flamingo", "Snowy Bush Monster", "Nutcracker Koala", "Sandwich", "Ice Slime", "Frozen Fossil", "Ice Crab", "Rainbow Panda", "White Peacock", "Tiger Zebra", "Teal Platypus", "Red Astronaut", "Orange Astronaut", "Yellow Astronaut", "Lime Astronaut", "Green Astronaut", "Cyan Astronaut", "Blue Astronaut", "Pink Astronaut", "Purple Astronaut", "Brown Astronaut", "Black Astronaut", "Lovely Planet", "Lovely Peacock", "Haunted Pumpkin", "Pumpkin Cookie", "Ghost Cookie", "Red Gummy Bear", "Blue Gummy Bear", "Green Gummy Bear", "Chick Chicken", "Chicken Chick", "Raccoon Bandit", "Owl Sheriff", "Vampire Frog", "Pumpkin King", "Leprechaun", "Anaconda Wizard", "Spooky Pumpkin", "Spooky Mummy", "Agent Owl", "Master Elf", "Party Pig", "Wise Owl", "Spooky Ghost", "Phantom King", "Tim the Alien", "Rainbow Astronaut", "Hamsta Claus", "Light Blue", "Black", "Red", "Purple", "Pink", "Orange", "Lime", "Green", "Teal", "Tan", "Maroon", "Gray", "Mint", "Salmon", "Burgandy", "Baby Blue", "Dust", "Brown", "Dull Blue", "Yellow", "Blue"].map(e => ({
790 options: Object.entries({
793 "Tech Chip": "techChip",
794 Shamrocks: "shamrocks",
795 "Orange Ice Pop": "orangeIcePop",
798 "Falling Blocks": "fallingBlocks",
799 Racetrack: "racetrack",
800 "Football Field": "footballField",
801 "Ice Cream Sandwich": "iceCreamSandwich",
802 "Winter Landscape": "winterLandscape",
804 "Music Class": "musicClass",
805 "Science Class": "scienceClass",
806 "Art Class": "artClass",
807 Clockwork: "clockwork",
808 "Hockey Rink": "hockeyRink",
809 "Outer Space": "outerSpace",
810 "Soccer Field": "soccerField",
812 "Toaster Pastry": "toasterPastry",
813 "Fish Tank": "fishTank",
817 "Spooky Cat": "spookyCat",
818 "Spooky Window": "spookyWindow",
819 Frankenstein: "frankenstein",
824 Pumpkins: "pumpkins",
825 "Christmas Tree": "christmasTree",
826 Chalkboard: "chalkboard",
827 Balloons: "balloons",
828 Skateboard: "skateboard",
831 "Pirate Map": "pirateMap",
833 "Road Sign": "roadSign",
834 "Corn Dog": "cornDog",
836 "Chili Pepper": "chiliPepper",
837 "Love Letter": "loveLetter",
839 "Winter Train": "winterTrain",
840 "Winter Drive": "winterDrive",
841 Workbench: "workbench",
843 Chocolate: "chocolate",
844 "Fall Picnic": "fallPicnic",
845 Bookshelf: "bookshelf",
846 "Easter Pattern": "easterPattern",
848 "Easter Field": "easterField",
851 "Gummy Worm": "gummyWorm",
852 "Basketball Court": "basketballCourt",
853 "Flying Kite": "flyingKite",
855 "Japanese Garden": "japaneseGarden",
856 Sandwich: "sandwich",
858 "Ball Pit": "ballPit",
859 "Xylophone": "xylophone",
860 "Holiday Lights": "holidayLights",
861 "Ice Cream Truck": "iceCreamTruck",
862 "Holiday Gift Wrap": "holidayGiftWrap",
863 "Winter Sweater": "winterSweater",
864 "Holiday Ornaments": "holidayOrnaments",
865 Watermelon: "watermelon",
866 Baguette: "baguette",
867 Rollerblades: "rollerblades",
868 Surfboard: "surfboard",
872 Lightning: "lightning",
873 Baseball: "baseball",
874 "Shamrock Coins": "shamrockCoins",
875 "End Of The Rainbow": "endRainbow",
876 "Easter Field": "easterField",
880 "Alphabet Soup": "alphabetSoup"
881 }).map(([e, t]) => ({
886 run: async function(e, t, a, o) {
887 let r = document.createElement("iframe");
890 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode
892 document.body.append(r), window.prompt = r.contentWindow.prompt.bind(window), window.alert = r.contentWindow.alert.bind(window), r.remove();
896 if (!i().props.liveGameController._liveApp) {
897 alert("You must be in a game to use the flooder!");
900 var s = i().props.liveGameController._liveApp.firebase;
901 async function l(e, t) {
902 let r = await fetch("https://fb.blooket.com/c/firebase/join", {
903 body: JSON.stringify({
907 credentials: "include",
909 }).then(e => e.json());
911 let i = s.initializeApp({
912 apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
913 authDomain: "blooket-2020.firebaseapp.com",
914 projectId: "blooket-2020",
915 storageBucket: "blooket-2020.appspot.com",
916 messagingSenderId: "741533559105",
917 appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
918 measurementId: "G-S3H5NGN10Z",
919 databaseURL: r.fbShardURL
921 await i.auth().signInWithCustomToken(r.fbToken);
922 let n = i.database();
923 await n.ref(`${e}/c/${t}`).set({
926 }), C.alerts[0].addLog(`Bot ${t} joined!`)
927 } else alert("Connect error: " + r.msg)
930 if (!i().props.liveGameController._liveApp) {
931 alert("You must be in a game for the flooder to work!");
934 var a, o = i().props.liveGameController._liveGameCode,
937 alert("You must use a valid number!");
940 if (!n.randomNames) var s = e;
941 for (var c = 0; c < r; c++) await l(o, a = n.randomNames ? d(15) : s + Math.floor(4e3 * Math.random()))
945 for (var t = "", a = 0; a < e; a++) t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
951 name: "Simulate Unlock",
952 description: "Simulates unlocking a certian blook",
954 name: "Blook (Case Sensitive)"
956 run: (unlockedBlook) => {
957 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
965 setTimeout(() => stateNode.setState({
970 name: "Bypass Filter",
971 description: "Bypasses the name filter",
980 for (var a = t.split(""), o = "", r = 0; r < a.length; r++) o += "\xad" + a[r];
982 }(t = e), r = document.createElement("iframe"), document.body.appendChild(r), window.alert = r.contentWindow.alert.bind(r.contentWindow), (o = document.createElement("textarea")).value = a, o.style.position = "fixed", o.style.top = 0, o.style.left = 0, o.style.opacity = 0, document.body.appendChild(o), o.select(), document.execCommand("copy"), alert("Bypassed text copied to clipboard!"), r.remove(), document.body.removeChild(o)
985 name: "Change Name Ingame",
986 description: "Changes your name ingame",
991 run: (function(newname) {
993 const reactHandler = (e => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode);
994 let i = document.createElement('iframe');
995 document.body.append(i);
996 let alert = i.contentWindow.alert.bind(window);
999 async function genToken(name) {
1000 const res = await fetch("https://fb.blooket.com/c/firebase/join", {
1001 body: JSON.stringify({
1002 id: reactHandler().props.client.hostId,
1006 "Content-Type": "application/json"
1009 credentials: "include"
1010 }).then(e => e.json());
1012 alert("Error: " + res.msg);
1018 const oldname = reactHandler().props.client.name;
1019 reactHandler().props.client.name = newname;
1020 const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
1021 await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
1022 const token = await genToken(newname);
1026 await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
1027 reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
1028 if (e.uid.split(":")[1] === newname) {
1029 reactHandler().props.liveGameController.setVal({
1030 path: `c/${newname}`,
1035 reactHandler().setState({});
1039 name: "Use Banner IDs",
1040 description: "Enter Banner ID to use Banner",
1046 var t = document.createElement("iframe");
1049 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1051 document.head.appendChild(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), a().stateNode.props.liveGameController.setVal({
1052 path: "c/" + a().stateNode.props.client.name + "/bg",
1057 name: "Change Blook Ingame",
1058 description: "Changes your blook",
1065 } = webpackJsonp.push([
1075 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a)
1081 } = Object.values(function e(t = document.querySelector("body>div")) {
1082 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1083 }())[1].children[0]._owner.stateNode;
1084 t.client.blook = e, t.liveGameController.setVal({
1085 path: `c/${t.client.name}/b`,
1090 name: "Set Custom Blook URL",
1091 description: "Sets a custom image as your blook.",
1097 let t = Object.values(function e(t = document.querySelector("body>div")) {
1098 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1099 }())[1].children[0]._owner.stateNode;
1100 if (!t.state.unlocks) {
1101 t.props.client.blook = e;
1103 t.props.liveGameController.setVal({
1104 path: `c/${t.props.client.name}/b`,
1109 name: "Set Blook Ad Text",
1110 description: "Sets a load of text as your blook and floods teachers screen on lobby",
1116 let t = Object.values(function e(t = document.querySelector("body>div")) {
1117 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1118 }())[1].children[0]._owner.stateNode;
1119 if (!String.prototype.inc) {
1120 String.prototype.inc = String.prototype.includes;
1122 String.prototype.includes = function(a) {
1123 if (a == "#" && this.length > 30) {
1126 return String.prototype.inc.apply(this, arguments);
1128 let repeatedText = Array(500).fill(e).join(' ');
1129 if (!t.state.unlocks) {
1130 t.client.blook = repeatedText;
1132 t.props.liveGameController.setVal({
1133 path: `c/${t.props.client.name}/b`,
1138 name: "Set Blook Ad Text Ingame",
1139 description: "Sets a load of text as your blook",
1146 } = webpackJsonp.push([
1156 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a);
1162 } = Object.values(function e(t = document.querySelector("body>div")) {
1163 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1164 }())[1].children[0]._owner.stateNode;
1166 let repeatedText = Array(500).fill(e).join(' ');
1167 t.client.blook = repeatedText;
1168 t.liveGameController.setVal({
1169 path: `c/${t.client.name}/b`,
1174 name: "Auto Answer",
1175 description: "Click the correct answer for you",
1188 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1190 "typing" != e.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][(e || o).answers.map((t, a) => (e || o).correctAnswers.includes(t) ? a : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(e.answers[0])
1194 name: "Highlight Answers",
1195 description: "Colors answers to be red or green highlighting the correct ones",
1202 } = Object.values(function e(t = document.querySelector("body>div")) {
1203 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1204 }())[1].children[0]._owner;
1205 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1206 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
1210 name: "Subtle Highlight Answers",
1211 description: "Removes the shadow from correct answers",
1218 } = Object.values(function e(t = document.querySelector("body>div")) {
1219 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1220 }())[1].children[0]._owner;
1221 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1222 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
1226 name: "Get Daily Rewards",
1227 description: "Gets max daily tokens and xp",
1228 run: async function() {
1229 let e = document.createElement("iframe");
1230 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
1233 } = await fetch("https://play.blooket.com/api/playersessions/solo", {
1234 body: JSON.stringify({
1235 gameMode: "Factory",
1236 questionSetId: ["5fac96fe2ca0da00042b018f", "66702d024ec37ac03062cc06", "600b1491d42a140004d5215a", "65d4810a8a408800b6449e57", "5fac96fe2ca0da00042b018f", "615e9cd727d0720066bcf638", "5fac96fe2ca0da00042b018f", "600b1491d42a140004d5215a", "63ee6c1fbd7c007948b2f986", "65d8de5bd25f9bd49916d855", "600b14d8d42a140004d52165", "6352e93608ea4ee9d0a5fe7f", "64cd1b99ff6f69f3025fc25a", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "65fb6005f986c984060ed92c", "65e88b461a39195a37309c57", "60cc9f943f191b00230ae2a2", "61f5484186dade0979280d54", "664418e736bd1bf1890b2dae", "640a7d9bde68f5243d403977", "66256e6b861ee38a258b8b61", "65119f1fba0bb577d186df8e", "661d7540a452254baf51b1dd", "65ff17a207a715061a6249e6", "61c3570ad8f92ff303ee4733", "63efbff8e2b70e8a1bb1a583", "644a30c06dd4d2c2c5c9c6ae", "66461ff5c671f7c7db225cb3", "664777444be95fa91fc9a4ee", "6425e5e052b1ba5ae2cb07a2", "612e2aad654d48002a4f384d", "6548ffabcbe542c105812e64", "666092337e18e9b7b044e6c8", "6277e6ca21e2151edc435c53", "6268270201c2a958b75af1cf", "61aa4f9c190f70ceda79cf92", "6680e522559ac110b3c6ef28", "6657d986e92bbd481c12a6e8", "61d877c1910d317630b69e02", "618e5d8b7242bec7572b53ca", "656d4a2ac3bc01302555bfbd", "61d7463d2250de5603ad8ba1", "6650bd7a87c4bb5302d69c08", "61b1fdb09a3347d1a298157b", "60b632ff2089ea0028d26fc8", "5fdcacc85d465a0004b021b9", "665e3161785c8a4e8853f995", "61b9d07a7a1e178d18ccd903", "6624a2cd861ee38a258b814d", "650b3ccd54b65594ff99e620", "61b2a39895bd185869e3844e", "6581df4af27a6029a933d954", "641eecaec2e1181b54481588", "668ce3d2eb8513f5ed4c79c1", "5fac96fe2ca0da00042b018f", "6192afff6cb94db501ecc7d5", "600b14d8d42a140004d52165", "665898ae99eca64187ffe7df", "5fe3d085a529560004cd3076", "64fb8fbfdbeffc06f36f8f5f", "654e79558169fc618f544ac7", "628d24107ffc913af879c58a", "617041e0e97439003084cb25", "6408cc2a52d433570018126b", "663c5686d93c1e441547529f", "666c3d24c9e069d6094bbcce", "6548ffabcbe542c105812e64", "663d4766d93c1e4415476a9d", "5f88953cdb209e00046522c7", "64fcec87be8604702a6e0559", "614b2b3747e4cd002c3c0e35", "600b14d8d42a140004d52165", "63640a18c5370a98f00349b1", "6690e0ec559ac110b3c7b4dd", "664644bd7ea36b003839459c", "600b153ad42a140004d52172", "63e638d8db4486e546547014", "61406d240c2275002a272a95", "627bced5fdb8934dfba749a8", "619c2736a7fb3a4c9d3810cc", "650a06c4fe5c6757ff82208c", "6060c2240db34f001ddfe119", "6525532901343f98c90eee3e", "60101da869e8c70013913b59", "625db660c6842334835cb4c6", "60268f8861bd520016eae038", "611e6c804abdf900668699e3", "60ba5ff6077eb600221b7145", "642467af9b704783215c1f1b", "605bd360e35779001bf57c5e", "6234cc7add097ff1c9cff3bd", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "5fac96fe2ca0da00042b018f", "600b14d8d42a140004d52165", "5f88953cdb209e00046522c7", "600b153ad42a140004d52172", "5fe260e72a505b00040e2a11", "5fe3d085a529560004cd3076", "5f5fc017aee59500041a1456", "608b0a5863c4f2001eed43f4", "5fad491512c8620004918ace", "5fc91a9b4ea2e200046bd49a", "5c5d06a7deebc70017245da7", "5ff767051b68750004a6fd21", "5fdcacc85d465a0004b021b9", "5fb7eea20bd44300045ba495"][Math.floor(24 * Math.random())]
1238 credentials: "include",
1240 }).then(e => e.json());
1241 await fetch("https://play.blooket.com/api/playersessions/landings", {
1242 body: JSON.stringify({
1245 credentials: "include",
1247 }), await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
1248 credentials: "include"
1255 } = Object.values(function e(t = document.querySelector("body>div")) {
1256 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1257 }())[1].children[0]._owner.stateNode.props.user.data;
1258 await fetch("https://play.blooket.com/api/users/factorystats", {
1259 body: JSON.stringify({
1263 cash: Math.floor(9e7 * Math.random()) + 1e7,
1264 correctAnswers: Math.floor(500 * Math.random()) + 500,
1265 upgrades: Math.floor(300 * Math.random()) + 300,
1271 credentials: "include",
1273 }), fetch("https://play.blooket.com/api/users/add-rewards", {
1274 body: JSON.stringify({
1280 credentials: "include",
1282 }).then(e => e.json()).then(({
1284 }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
1285 } else alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
1288 name: "Use any Blook",
1289 description: "Allows you to play as any blook.",
1292 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1293 let i = document.createElement('iframe');
1294 document.body.append(i);
1295 const alert = i.contentWindow.alert.bind(window);
1297 if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
1298 alert("This must be run on the lobby or dashboard!");
1301 if (stateNode.state.blookData) {
1302 let oe = Object.entries;
1303 Object.entries = function(a) {
1306 Object.entries = oe;
1308 return oe.apply(this, arguments);
1312 function allBlooks(blooks) {
1314 stateNode.setState({
1315 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
1316 allSets: Object.values(blooks).reduce((a, b) => {
1317 return !a.includes(b.set) && a.push(b.set), a
1322 stateNode.setState({
1331 name: "Get More Blooks (Lobby)",
1332 description: "Gives you an abundance of custom blooks to try (Some images might be blocked)",
1334 const containerClass = '_blooksHolder_1bg6w_141';
1335 const targetContainer = document.querySelector(`.${containerClass}`);
1337 if (targetContainer) {
1338 const imageUrls = ["https://i.imghippo.com/files/wfNvV1725233960.webp", "https://i.imghippo.com/files/3kDQK1725233922.webp", "https://camo.githubusercontent.com/e471c0c3c98c8b0095b5cc645dfd4732db238c98632f1638d8fa153d4b6e003d/68747470733a2f2f63646e2e646973636f72646170702e636f6d2f656d6f6a69732f31303536393839373839363931333232343539", "https://i.ibb.co/YfwphhN/youtubelogo.png", "https://i.ibb.co/wCGsQD7/1107210565740396625.webp", "https://i.ibb.co/j3k7jYJ/1056899107844800522.webp", "https://i.ibb.co/xsQfVdm/1056898967801188404.webp", "https://i.ibb.co/LxHL2bP/1061744882496065566.webp", "https://ac.blooket.com/dashboard/assets/Cashier-BqZ02xhF.svg", "https://i.ibb.co/sm60M8q/merk.png", "https://ac.blooket.com/dashboard/assets/Token-DmrosBZF.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat35.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat36.svg", "https://media.blooket.com/image/upload/v1664334114/BlookParts/glasses16.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat33.svg", "https://preview.redd.it/custom-blooks-i-made-v0-b0hneftessz91.png?width=300&format=png&auto=webp&s=f7cdba1490c1aba76b9bde994b082a3c76818466", "https://preview.redd.it/custom-blooks-i-made-v0-g3nvjltessz91.png?width=300&format=png&auto=webp&s=0d38efcec1212896912c1ec4e20b7601eaa686ea", "https://preview.redd.it/custom-blooks-i-made-v0-ka56tptessz91.png?width=300&format=png&auto=webp&s=0f247448aa4b0ca2b1f1fe8f0e1059767d3d15f8", "https://preview.redd.it/custom-blooks-i-made-v0-6asu9ztessz91.png?width=300&format=png&auto=webp&s=6bc047e638e0cb6596e619d0eb367d551dc455b0", "https://preview.redd.it/custom-blooks-i-made-v0-czdr64uessz91.png?width=500&format=png&auto=webp&s=858764ba17888fa8aaa487f97feb32b2d8b81f62", "https://preview.redd.it/custom-blooks-i-made-v0-lsgc29uessz91.png?width=500&format=png&auto=webp&s=cddb4dbf09a226c296d2e659aa80851bbd481921", "https://preview.redd.it/64mcrm1aceh91.png?width=1256&format=png&auto=webp&s=5f53991654cd7a45fe58de4097c9ae1177a10bfd", "https://preview.redd.it/trp3snp9ceh91.png?width=1419&format=png&auto=webp&s=663663e4d93424141cd6500c6b24d91042700cc2", "https://preview.redd.it/1d4uxcb9ceh91.png?width=1254&format=png&auto=webp&s=3a54cc9a95897f47c2f9007b8a49aa98cf46089f", "https://preview.redd.it/k0894xv8ceh91.png?width=1254&format=png&auto=webp&s=181019f5ef1c288cb9c855776dd14f6eec0ff993", "https://preview.redd.it/xrb6fug8ceh91.png?width=1273&format=png&auto=webp&s=7df11f3dddc5f1fd8354c99de670c2fb34cc2f10", "https://preview.redd.it/beicsi08ceh91.png?width=1258&format=png&auto=webp&s=313cc36ded78d3c3e386b85abf2d6ba498401d1f", "https://preview.redd.it/810eoco7ceh91.png?width=1258&format=png&auto=webp&s=16be55f32fda316611c41ab5dbc53da0b42a5891", "https://preview.redd.it/4iq2am87ceh91.png?width=1255&format=png&auto=webp&s=af5825a0f2a0e0680252767de622c8b16b8bd530", "https://preview.redd.it/9b0eq1v6ceh91.png?width=1258&format=png&auto=webp&s=3c570c3f2f70a156723f375ba1cc68b1879283d8", "https://preview.redd.it/0g4eflh6ceh91.png?width=1252&format=png&auto=webp&s=ba426c277dbf7a89dbd01e108bb4b397895bd9e2", "https://preview.redd.it/gq1ol7z5ceh91.png?width=1258&format=png&auto=webp&s=72eb5b3df4c152b0f1405c2fa1c8f6689c96e5ea", "https://preview.redd.it/zs746135ceh91.png?width=1254&format=png&auto=webp&s=fed0bb921be560d8fe254065b9a986ac88e08010", "https://preview.redd.it/custom-blooks-i-have-made-v0-uz0uxh4sh9gc1.png?width=485&format=png&auto=webp&s=f8fb21906226f94e64272616cbe37ce2292a0494", "https://preview.redd.it/custom-blooks-i-have-made-v0-gfdrycozh9gc1.png?width=536&format=png&auto=webp&s=445b74e0e1f1d12ae3c4c470cab1b46527792e18", "https://preview.redd.it/custom-blooks-i-have-made-v0-nojhsxb2i9gc1.png?width=504&format=png&auto=webp&s=e2b22b88b703ff7fb908248a7de93c7bc02861fe", "https://preview.redd.it/custom-blooks-i-have-made-v0-dagyqk2pi9gc1.png?width=522&format=png&auto=webp&s=5be59b74b295e5634fb7769efc2b78ed1a2d0ab2", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-evaee2nzi92a1.png?width=300&format=png&auto=webp&s=e2910bcf63138d255d8f2d2a42819e04aa25b20c", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-3jkr9dlzi92a1.png?width=300&format=png&auto=webp&s=36834cdd172dd4377f0f040a1cfa0348a0cf9f2c", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-chgp4clzi92a1.png?width=300&format=png&auto=webp&s=2ba607d48f1a01c48cca5f5177ce609c8e3b740e", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-esxetdlzi92a1.png?width=300&format=png&auto=webp&s=843674b51fecfc633c67386d6ec7a53664002229", "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7e7e889a-de90-46e6-b7e0-a80a0e698de6/dbpu9b-51118e9e-16bd-4a28-bbe6-921fc1da8181.gif?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7InBhdGgiOiJcL2ZcLzdlN2U4ODlhLWRlOTAtNDZlNi1iN2UwLWE4MGEwZTY5OGRlNlwvZGJwdTliLTUxMTE4ZTllLTE2YmQtNGEyOC1iYmU2LTkyMWZjMWRhODE4MS5naWYifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6ZmlsZS5kb3dubG9hZCJdfQ.h309S-rnZJWgrquS7zLKqNmCyGpKi6EydLGfeGlmwSY", "https://i.ibb.co/2tPhQQ9/Screenshot-2024-03-13-8-38-54-PM-removebg-preview.png", "https://i.ibb.co/hfGKRGg/5rcse2.png", "https://i.ibb.co/dk5X1Qx/wolf-svg-1.gif", "https://i.ibb.co/MRYh2jY/madhatter-svg-1-1.gif", "https://i.ibb.co/prhrSLG/penguin-svg.png", "https://i.ibb.co/y0Lz9KM/dog-2-svg-1.png", "https://i.ibb.co/ZVjPyyW/egyptsnowglobe-svg.gif", "https://i.ibb.co/27J4Tzc/hamster-1-svg-2.gif", "https://i.ibb.co/GWS1F1B/Untitled1942-20240816213512.png", "https://i.ibb.co/b1w1Zt3/Untitled1944-20240816220241-2.png", "https://i.ibb.co/sP1n7px/image-2.png", "https://i.ibb.co/749D31P/31-BFAFFD-21-D5-416-C-8-EDB-C1-EC31-FE9-B7-E.png", "https://i.ibb.co/k8y3Q3C/image-3.png", "https://i.ibb.co/h9sgDc3/1185712529960349726.png", "https://i.ibb.co/6X1mCwq/moai-blook.png", "https://i.imghippo.com/files/VfIxx1725062188.gif", "https://i.ibb.co/Rb8B8xH/pickle-jar-blook.png", "https://i.ibb.co/FntT4VR/c96edb96a2571742004c4240a5c4abe3.webp", "https://styles.redditmedia.com/t5_2zesh/styles/communityIcon_6gx6y4qpdw651.png", "https://play-lh.googleusercontent.com/AUGkRrKMtUCLVE9vCvlfMY9Ny9EBqzx17yejVtEEhvpkw-H6lJlvBHgCMqPJm8HV_tM=s256-rw", "https://play-lh.googleusercontent.com/JQqSn7wuCj0SxBqpBThNI33qCR9gwY0str2TIAnu-m_xrVCgZk3IPxYK2S7zC9WG0ig=s256-rw", "https://play-lh.googleusercontent.com/epeBd8ftLXNHy9TjcB4k2Ip0KzcMT-4oTjDUt_DwMjgDwrbSTuVI77ccVWMdoDMXDQ=s256-rw", "https://play-lh.googleusercontent.com/ndILnpPIPE5Kfqmwzjlbdz2duHMjh0yvnZ31PBJ_-oZOPa9iYfh1jedpj2-td2pyrKmj=w240-h256-rw", "https://i.ibb.co/Rp56kCC/bee-blook.png", "https://i.ibb.co/y0Sdwg0/golden-blook.gif", "https://i.ibb.co/B2ZyFBj/rainbow-blook.gif", "https://i.ibb.co/Y0mJq9g/blacket-legacy.png", "https://i.ibb.co/JHFsXdx/betastar.png", "https://i.ibb.co/h2m8fGf/blacket.png", "https://i.ibb.co/QKdZ1b4/logo-2.png", "https://i.ibb.co/pPVh8bt/Blooket-Emblem.png", "https://i.ibb.co/sWqBm0K/1024.png", "https://i.ibb.co/pdSYc4M/Site-logo.png", "https://raw.githubusercontent.com/The-Blooket-Hacks/Blooket-Hacks/main/images/animated_icon.gif", "https://raw.githubusercontent.com/The-Blooket-Hacks/Blooket-Hacks/main/images/icon.png", "https://i.ibb.co/bHks2LC/image-3.png", "https://i.ibb.co/0Z4Gn6n/logo.png", "https://i.ibb.co/LCZTRsY/e222502653c42a263899a4e6a9c58dca.webp", "https://i.ibb.co/1fH15Rs/yellow-submarine.png", "https://i.ibb.co/zRGywqm/watermelon20min.png", "https://i.ibb.co/6rs8hky/valentines-present.png", "https://i.ibb.co/g3hB9t3/turkey.png", "https://i.ibb.co/RzNPvNf/touch-grass-blook.png", "https://i.ibb.co/PDgmxqQ/taco.png", "https://i.ibb.co/vZ40Jf9/squash2.png", "https://i.ibb.co/CMVh9Yq/space-mug.png", "https://i.ibb.co/zVZb2Bq/rubber-duck.png", "https://i.ibb.co/8jchMBy/sombrero.png", "https://i.ibb.co/hKtyzDw/pumpkinking.png", "https://i.ibb.co/M9fq4zD/pumpkin-pie.png", "https://i.ibb.co/FV5Vj7r/prehistoric-globbe.png", "https://i.ibb.co/6Z8QWpp/pineapple.png", "https://i.ibb.co/1GtRrkj/pilgrim-hat.png", "https://i.ibb.co/R6zJhbc/static-assets-upload10217624323675156800.png", "https://i.ibb.co/NjyMT23/pig-snowman.png", "https://i.ibb.co/J70xZZZ/mrbaest.png", "https://i.ibb.co/QcSLKxC/moon.png", "https://i.ibb.co/vdhvvtz/meteor-impact.png", "https://i.ibb.co/1KBf6K5/mega-king.png", "https://i.ibb.co/0ZFjpF1/mayflower.png", "https://i.ibb.co/VCyKwMq/magic8ball.png", "https://i.ibb.co/vdH0sJ0/lunar-globe.png", "https://i.ibb.co/xFWDzNz/life-buoy.png", "https://i.ibb.co/nj8zHRd/lemonade.png", "https://i.ibb.co/hRLdSRn/ladybug.png", "https://i.ibb.co/51B9Yfw/blob-ghost.png", "https://i.ibb.co/87j9XBs/ghost-pumpkin.png", "https://i.ibb.co/vL53Qwt/jackinthebox.png", "https://i.ibb.co/LNzSYX8/freedom-frog.png", "https://i.ibb.co/NpV9VrQ/egg.png", "https://i.ibb.co/vzmCC55/dream.png", "https://i.ibb.co/b2w7f14/cyborg-santa.png", "https://i.ibb.co/2nXpv57/cooked-turkey.png", "https://i.ibb.co/NmPW8H6/comic-crew-inc-blook.png", "https://i.ibb.co/ynsBMVv/chili-pepper.png", "https://i.ibb.co/WyvtbNB/beehive.png", "https://i.ibb.co/34WM19w/candy-heart.png", "https://i.ibb.co/LYrF1xn/candy-basket.png", "https://i.ibb.co/RCLkQS8/box-of-white-chocolates.png", "https://i.ibb.co/N2nDcpB/box-of-chocolates.png", "https://i.ibb.co/N2nDcpB/box-of-chocolates.png", "https://i.ibb.co/6W6wvXJ/apple-barrel.png", "https://i.ibb.co/RNp7frY/acorn.png", "https://i.ibb.co/zsKsX4f/Button-Add-icon.png", "https://i.ibb.co/rfsnSyp/Button-Delete-icon.png", "https://blacket.org/content/blooks/Dinah.webp", "https://blacket.org/content/blooks/March%20Hare.webp", "https://blacket.org/content/blooks/Basketball.webp", "https://blacket.org/content/blooks/Baseball.webp", "https://blacket.org/content/blooks/Soccer%20Ball.webp", "https://blacket.org/content/blooks/Tennis%20Ball.webp", "https://blacket.org/content/blooks/Golf%20Ball.webp", "https://blacket.org/content/blooks/Football.webp", "https://blacket.org/content/blooks/Bowling%20Ball.webp", "https://blacket.org/content/blooks/Ping%20Pong%20Racket.webp", "https://blacket.org/content/blooks/Curling%20Stone.webp", "https://blacket.org/content/blooks/Football%20Helmet.webp", "https://blacket.org/content/blooks/Space%20Terminal.webp", "https://blacket.org/content/blooks/Space%20Debugger.webp", "https://blacket.org/content/blooks/Dark%20Dragon.webp", "https://blacket.org/content/blooks/Jasper.webp", "https://blacket.org/content/blooks/Jade.webp", "https://blacket.org/content/blooks/Onyx.webp", "https://blacket.org/content/blooks/Quartz.webp", "https://blacket.org/content/blooks/Lapis%20Lazuli.webp", "https://blacket.org/content/blooks/Topaz.webp", "https://blacket.org/content/blooks/Ruby.webp", "https://blacket.org/content/blooks/Sapphire.webp", "https://blacket.org/content/blooks/Amethyst.webp", "https://blacket.org/content/blooks/Opal.webp", "https://blacket.org/content/blooks/Moonstone.webp", "https://blacket.org/content/blooks/Rose%20Quartz.webp", "https://blacket.org/content/blooks/Black%20Opal.webp", "https://blacket.org/content/blooks/Apple.webp", "https://blacket.org/content/blooks/Orange.webp", "https://blacket.org/content/blooks/Lemon.webp", "https://blacket.org/content/blooks/Lime.webp", "https://blacket.org/content/blooks/Grape.webp", "https://blacket.org/content/blooks/Strawberry.webp", "https://blacket.org/content/blooks/Raspberry.webp", "https://i.imghippo.com/files/7cAht1725062940.png", "https://blacket.org/content/blooks/Watermelon.webp", "https://blacket.org/content/blooks/Dragon%20Fruit.webp", "https://blacket.org/content/blooks/Starfruit.webp", "https://blacket.org/content/blooks/Green%20Apple.webp", "https://blacket.org/content/blooks/Blue%20Raspberry.webp", "https://blacket.org/content/blooks/Golden%20Apple.webp", "https://blacket.org/content/blooks/Golden%20Amber.webp", "https://blacket.org/content/blooks/Rainbow%20Blook.webp", "https://blacket.org/content/blooks/Candy%20Corn.webp", "https://blacket.org/content/blooks/Jellybean.webp", "https://blacket.org/content/blooks/Lollipop.webp", "https://blacket.org/content/blooks/Black%20Licorice.webp", "https://blacket.org/content/blooks/Peppermint.webp", "https://blacket.org/content/blooks/Chocolate.webp", "https://blacket.org/content/blooks/Gummy%20Worm.webp", "https://blacket.org/content/blooks/Rock%20Candy.webp", "https://blacket.org/content/blooks/White%20Chocolate.webp", "https://blacket.org/content/blooks/Red%20Licorice.webp", "https://blacket.org/content/blooks/Blue%20Gummy%20Worm.webp", "https://blacket.org/content/blooks/Chocolate%20Milk.webp", "https://i.ibb.co/W0LDVvq/image-removebg-preview.png", "https://blacket.org/content/blooks/Forgotten%20Bot.webp", "https://blacket.org/content/blooks/Donut%20Blobfish.webp", "https://blacket.org/content/blooks/Magic%20Spellbook.webp", "https://blacket.org/content/blooks/Cursed%20Ring.webp", "https://blacket.org/content/blooks/Bubbling%20Cauldron.webp", "https://blacket.org/content/blooks/Fairy%20Dust.webp", "https://blacket.org/content/blooks/Enchantment%20Hall.webp", "https://blacket.org/content/blooks/Magician's%20Wand.webp", "https://blacket.org/content/blooks/Ancient%20Runes.webp", "https://blacket.org/content/blooks/Strength%20Potion.webp", "https://blacket.org/content/blooks/Magician's%20Hat.webp", "https://blacket.org/content/blooks/Sentient%20Spellbook.webp", "https://blacket.org/content/blooks/Golden%20Magician's%20Wand.webp", "https://blacket.org/content/blooks/Invisibility%20Cloak.webp", "https://blacket.org/content/blooks/Dial%20Telephone.webp", "https://blacket.org/content/blooks/EtchASketch.webp", "https://blacket.org/content/blooks/Cassette%20Tape.webp", "https://blacket.org/content/blooks/Polaroid%20Camera.webp", "https://blacket.org/content/blooks/Vending%20Machine.webp", "https://blacket.org/content/blooks/GameBlook.webp", "https://blacket.org/content/blooks/Donkey%20Kong%20Machine.webp", "https://blacket.org/content/blooks/BoomBox.webp", "https://blacket.org/content/blooks/CRT%20Television.webp", "https://blacket.org/content/blooks/GameBlook%20Color.webp", "https://blacket.org/content/blooks/PacMan%20Machine.webp", "https://blacket.org/content/blooks/Blackintosh.webp", "https://blacket.org/content/blooks/Gravity%20Switcher.webp", "https://blacket.org/content/blooks/Stealth%20Disguise%20Kit.webp", "https://blacket.org/content/blooks/Object%20Miniaturizer.webp", "https://blacket.org/content/blooks/Object%20Maximizer.webp", "https://blacket.org/content/blooks/Holographic%20Display.webp", "https://blacket.org/content/blooks/Flying%20Car.webp", "https://blacket.org/content/blooks/Void%20Pistol.webp", "https://blacket.org/content/blooks/Red%20Lightsaber.webp", "https://blacket.org/content/blooks/Neural%20Implant.webp", "https://blacket.org/content/blooks/Hijacked%20Radio.webp", "https://blacket.org/content/blooks/Eternal%20Prism%20Blade.webp", "https://blacket.org/content/blooks/Blue%20Lightsaber.webp", "https://blacket.org/content/blooks/Hijacked%20Neural%20Implant.webp", "https://blacket.org/content/blooks/Celestial%20Oracle%20Staff.webp", "https://blacket.org/content/blooks/Sea%20Monster.webp", "https://blacket.org/content/blooks/Pocket%20Watch.webp", "https://blacket.org/content/blooks/Hourglass.webp", "https://blacket.org/content/blooks/Cuckoo%20Clock.webp", "https://blacket.org/content/blooks/Calendar%20Scroll.webp", "https://blacket.org/content/blooks/Analog%20Clock.webp", "https://blacket.org/content/blooks/Astrolabe.webp", "https://blacket.org/content/blooks/Time%20Capsule.webp", "https://blacket.org/content/blooks/Orrey.webp", "https://blacket.org/content/blooks/Grandfather%20Clock.webp", "https://blacket.org/content/blooks/Clock%20Tower.webp", "https://blacket.org/content/blooks/Time%20Stone.webp", "https://blacket.org/content/blooks/Time%20Machine.webp", "https://blacket.org/content/blooks/Pac-Man.webp", "https://blacket.org/content/blooks/Space%20Invader.webp", "https://blacket.org/content/blooks/Among%20Us.webp", "https://blacket.org/content/blooks/Poke%20Ball.webp", "https://blacket.org/content/blooks/Flappy%20Bird.webp", "https://blacket.org/content/blooks/Goomba.webp", "https://blacket.org/content/blooks/Big%20Shield.webp", "https://blacket.org/content/blooks/Creeper.webp", "https://blacket.org/content/blooks/Red%20Bird.webp", "https://blacket.org/content/blooks/Companion%20Cube.webp", "https://blacket.org/content/blooks/Master%20Chief.webp", "https://blacket.org/content/blooks/Golden%20Among%20Us.webp", "https://blacket.org/content/blooks/Gaming%20Mouse.webp", "https://blacket.org/content/blooks/Sand%20Bucket.webp", "https://blacket.org/content/blooks/Beach%20Ball.webp", "https://blacket.org/content/blooks/Plastic%20Shovel.webp", "https://blacket.org/content/blooks/Popsicle.webp", "https://blacket.org/content/blooks/Life%20Float.webp", "https://blacket.org/content/blooks/Conch%20Shell.webp", "https://blacket.org/content/blooks/Surfboard.webp", "https://blacket.org/content/blooks/Sand%20Castle.webp", "https://blacket.org/content/blooks/Coconut%20Cocktail.webp", "https://blacket.org/content/blooks/Tropical%20Pig.webp", "https://blacket.org/content/blooks/Sheet%20Music.webp", "https://blacket.org/content/blooks/Music%20Disc.webp", "https://blacket.org/content/blooks/Xylophone.webp", "https://blacket.org/content/blooks/Drums.webp", "https://blacket.org/content/blooks/Metronome.webp", "https://blacket.org/content/blooks/Triangle.webp", "https://blacket.org/content/blooks/Speaker.webp", "https://blacket.org/content/blooks/Piano.webp", "https://blacket.org/content/blooks/White%20Piano.webp", "https://blacket.org/content/blooks/Golden%20Harp.webp", "https://blacket.org/content/blooks/Viking%20Helmet.webp", "https://blacket.org/content/blooks/Iron%20Chestplate.webp", "https://blacket.org/content/blooks/Spiked%20Boot.webp", "https://blacket.org/content/blooks/Silver%20Shuriken.webp", "https://blacket.org/content/blooks/Knight%20Shield.webp", "https://blacket.org/content/blooks/Knight%20Sword.webp", "https://blacket.org/content/blooks/Fragment%20Grenade.webp", "https://blacket.org/content/blooks/M12%20Shotgun.webp", "https://blacket.org/content/blooks/Diamond%20Sword.webp", "https://blacket.org/content/blooks/Golden%20Shuriken.webp", "https://blacket.org/content/blooks/Golden%20Gift.webp", "https://blacket.org/content/blooks/Diamond%20Gift.webp", "https://blacket.org/content/blooks/Ankha.webp", "https://blacket.org/content/blooks/Mummy%20Ankha.webp", "https://blacket.org/content/blooks/Realistic%20Ankha.webp", "https://blacket.org/content/blooks/Glowing%20Ankha.webp", "https://blacket.org/content/blooks/Mark%20Ankha.webp", "https://blacket.org/content/blooks/Ankha's%20House.webp", "https://blacket.org/content/blooks/High%20Ankha.webp", "https://blacket.org/content/blooks/Black%20Ankha.webp", "https://blacket.org/content/blooks/Golden%20Ankha.webp", "https://blacket.org/content/blooks/Zone%20Ankha.webp", "https://blacket.org/content/blooks/Rainbow%20Ankha.webp", "https://blacket.org/content/blooks/acai.webp", "https://blacket.org/content/blooks/alicialol.webp", "https://blacket.org/content/blooks/Pablo.webp", "https://blacket.org/content/blooks/fristic.webp", "https://blacket.org/content/blooks/Minesraft2.webp", "https://blacket.org/content/blooks/Piotr.webp", "https://blacket.org/content/blooks/GAMERYT.webp", "https://blacket.org/content/blooks/painbow.webp", "https://blacket.org/content/blooks/okr765.webp", "https://blacket.org/content/blooks/Cerulean.webp", "https://i.ibb.co/0DZt7cc/notAI.png", "https://blacket.org/content/blooks/iBlooket.webp", "https://blacket.org/content/blooks/root.webp", "https://blacket.org/content/blooks/envi.webp", "https://blacket.org/content/blooks/zastix.webp", "https://blacket.org/content/blooks/monkxy.webp", "https://blacket.org/content/blooks/Xotic.webp", "https://blacket.org/content/blooks/10k.webp", "https://blacket.org/content/blooks/Lunar%20Frog.webp", "https://blacket.org/content/blooks/Lucky%20Ankha.webp", "https://blacket.org/content/blooks/Spring%20Ankha.webp", "https://blacket.org/content/blooks/Turkey%20Ankha.webp", "https://blacket.org/content/blooks/Festive%20Xotic.webp", "https://blacket.org/content/blooks/Ukraine%20Ankha.webp", "https://blacket.org/content/blooks/American%20Ankha.webp", "https://blacket.org/content/blooks/Golden%20Shovel.webp", "https://blacket.org/content/blooks/Lunar%20Ankha.webp", "https://blacket.org/content/blooks/Lovely%20Ankha.webp", "https://blacket.org/content/blooks/Lucky%20Pablo.webp", "https://blacket.org/content/blooks/Festive%20Ankha.webp", "https://blacket.org/content/blooks/Naughty%20Ankha.webp", "https://blacket.org/content/blooks/Vampire%20Ankha.webp", "https://blacket.org/content/blooks/Bia.webp", "https://blacket.org/content/blooks/Gold%20Doubloon.webp", "https://blacket.org/content/blooks/Golden%20Crab.webp", "https://blacket.org/content/blooks/Golden%20Seashell.webp", "https://blacket.org/content/blooks/Treasure%20Chest.webp", "https://blacket.org/content/blooks/Tropical%20Island.webp", "https://blacket.org/content/blooks/Spring%20Globe.webp", "https://blacket.org/content/blooks/Patriotic%20Piotr.webp", "https://blacket.org/content/blooks/Nature%20Elemental1.webp", "https://blacket.org/content/blooks/Fire%20Elemental1.webp", "https://blacket.org/content/blooks/Air%20Elemental1.webp", "https://blacket.org/content/blooks/Frost%20Elemental1.webp", "https://blacket.org/content/blooks/Lava%20Elemental1.webp", "https://blacket.org/content/blooks/Electric%20Elemental1.webp", "https://blacket.org/content/blooks/Water%20Elemental1.webp", "https://blacket.org/content/blooks/Space%20Elemental1.webp", "https://blacket.org/content/blooks/Plasma%20Elemental1.webp", "https://blacket.org/content/blooks/Lovely%20zastix.webp", "https://blacket.org/content/blooks/Cookies%20Combo.webp", "https://blacket.org/content/logo.webp", "https://blacket.org/content/blooks/Giveaway.webp", "https://blacket.org/content/blooks/Error.webp", "https://blacket.org/content/blooks/Success.webp", "https://blacket.org/content/blooks/yesbutterjeff.webp", "https://blacket.org/content/blooks/Info.webp", "https://blacket.org/content/blooks/Magnet.webp", "https://blacket.org/content/blooks/DNA.webp", "https://blacket.org/content/blooks/Scale.webp", "https://blacket.org/content/blooks/Beaker.webp", "https://blacket.org/content/blooks/Blood%20Bag.webp", "https://blacket.org/content/blooks/Magnifying%20Glass.webp", "https://blacket.org/content/blooks/Battery.webp", "https://blacket.org/content/blooks/Atom.webp", "https://blacket.org/content/blooks/Test%20Tubes.webp", "https://blacket.org/content/blooks/Bunsen%20Burner.webp", "https://blacket.org/content/blooks/Bacteria.webp", "https://blacket.org/content/blooks/Microscope.webp", "https://blacket.org/content/blooks/Eyeball.webp", "https://blacket.org/content/blooks/Toxic%20Waste.webp", "https://blacket.org/content/blooks/Prism.webp", "https://blacket.org/content/blooks/Telescope.webp", "https://blacket.org/content/blooks/Skull.webp", "https://blacket.org/content/blooks/Lightbulb.webp", "https://blacket.org/content/blooks/Brain.webp", "https://blacket.org/content/blooks/Flask.webp", "https://blacket.org/content/blooks/Petri%20Dish.webp", "https://blacket.org/content/blooks/Albert%20Einstein.webp", "https://blacket.org/content/blooks/Neil%20deGrasse%20Tyson.webp", "https://blacket.org/content/blooks/Gregor%20Mendel.webp", "https://blacket.org/content/blooks/Nikola%20Tesla.webp", "https://blacket.org/content/blooks/Lava%20Lamp.webp", "https://blacket.org/content/blooks/Beating%20Heart.webp", "https://blacket.org/content/blooks/Blueberry%20Pie.webp", "https://blacket.org/content/blooks/Cherry%20Pie.webp", "https://blacket.org/content/blooks/Donut.webp", "https://blacket.org/content/blooks/Cake.webp", "https://blacket.org/content/blooks/Birthday%20Cake.webp", "https://blacket.org/content/blooks/Eclair.webp", "https://blacket.org/content/blooks/Chocolate%20Ice%20Cream.webp", "https://blacket.org/content/blooks/Strawberry%20Ice%20Cream.webp", "https://blacket.org/content/blooks/Macaroon.webp", "https://blacket.org/content/blooks/Golden%20Donut.webp", "https://blacket.org/content/blooks/Magic%20Chocolate.webp", "https://blacket.org/content/blooks/Pack%20of%20Peeps.webp", "https://i.ibb.co/kmZzpW7/xPCHhic.png", "https://i.imgur.com/oFAiMCP.png", "https://i.imgur.com/Cvy8nhz.png", "https://i.imgur.com/5bPl8d7.png", "https://i.imgur.com/PZ723dj.png", "https://i.imgur.com/gIWOeB8.png", "https://i.imgur.com/uqFXKVa.png", "https://i.imgur.com/njAnZv3.png", "https://i.imgur.com/roDRyAE.png", "https://i.imgur.com/Rfc6msP.png", "https://i.imgur.com/j6Xk43g.png", "https://i.ibb.co/WnYyWms/console.webp", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Black.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Blue.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Green.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/LightGreen.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Orange.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Purple.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Red.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Teal.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Yellow.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Berry.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/BlooketWarrior.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Buenar.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/CurryEater.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/FrostyIce109.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/GAMERYT.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Iamgamedude.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/ItsTornadoYT.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/IzumiiHD.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Manny.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/NoButterJeff.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Packman28.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/SOUNDGOD.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Solid_Snake.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/ThatPlanet.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Xotic.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Crayon.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Eraser.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Notebook.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Paper.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Pencil.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Ruler.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Scissors.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Camera.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Computer.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Microwave.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Remote.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Speaker.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Virus.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/rainbow.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/lock-icon.png"];
1339 imageUrls.forEach((url) => {
1340 const newBlookContainer = document.createElement('div');
1341 newBlookContainer.className = '_blookContainer_1bg6w_150';
1342 newBlookContainer.setAttribute('role', 'button');
1343 newBlookContainer.setAttribute('tabindex', '0');
1345 const innerDiv = document.createElement('div');
1346 innerDiv.className = '_blookContainer_12gbf_1 _blook_1bg6w_141';
1347 innerDiv.setAttribute('data-tooltip-id', 'blook-tooltip');
1349 const img = document.createElement('img');
1351 img.alt = 'Custom Blook';
1352 img.draggable = false;
1353 img.className = '_blook_12gbf_1';
1355 newBlookContainer.addEventListener('click', () => {
1356 setCustomBlookUrl(url);
1359 innerDiv.appendChild(img);
1360 newBlookContainer.appendChild(innerDiv);
1361 targetContainer.appendChild(newBlookContainer);
1364 console.error('Target container not found');
1367 function setCustomBlookUrl(url) {
1368 let t = Object.values(function e(t = document.querySelector("body>div")) {
1369 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1370 }())[1].children[0]._owner.stateNode;
1372 if (!t.state.unlocks) {
1373 t.props.client.blook = url;
1376 t.props.liveGameController.setVal({
1377 path: `c/${t.props.client.name}/b`,
1383 name: "Freeze Host",
1384 description: "Freezes the host's screen",
1386 const encodedChars = [
1387 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1390 const chars = encodedChars.map(char => eval(`"${char}"`));
1392 function makeLongText() {
1393 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1398 } = Object.values(function e(t = document.querySelector("body>div")) {
1399 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1400 }())[1].children[0]._owner.stateNode;
1402 let repeatedText = makeLongText();
1403 t.client.blook = repeatedText;
1404 t.liveGameController.setVal({
1405 path: `c/${t.client.name}/b`,
1410 name: "Remove all Taken Blooks",
1411 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
1413 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1414 stateNode.setState({
1419 stateNode.setState = function(a, b) {
1420 if (a?.takenBlooks) {
1423 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
1427 name: "Dynamic Player Count",
1428 description: "Updates the player count at the top of the screen in realtime as players join or leave.",
1431 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1432 const ref = await stateNode.props.liveGameController.getDatabaseRef("")
1433 ref.on("value", e => {
1434 document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
1439 name: "Blooket Bot",
1440 description: "Opens Blooket Bot",
1442 function getGameCode() {
1443 const appDiv = document.querySelector('#app>div>div');
1445 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1446 return reactComponent?.stateNode?.props?.client?.hostId || null;
1451 const gameCode = getGameCode();
1452 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
1453 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1456 name: "Blooket Bot Unblocked",
1457 description: "Opens Blooket Bot",
1459 function getGameCode() {
1460 const appDiv = document.querySelector('#app>div>div');
1462 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1463 return reactComponent?.stateNode?.props?.client?.hostId || null;
1468 const gameCode = getGameCode();
1469 const url = gameCode ? "https://blooketbot.vercel.app/?code=" + gameCode : "https://blooketbot.vercel.app/";
1470 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1473 name: "Blooket Homework Editor",
1474 description: "Opens Blooket Homework Editor",
1476 window.open("https://blookethwk.glitch.me/", "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes")
1480 description: "Chat with other people and execute commands",
1489 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1493 document.addEventListener("keydown", function(e) {
1494 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
1496 let o = document.createElement("div");
1497 o.className = "chat-box", document.body.appendChild(o);
1498 let r = document.createElement("div");
1499 r.className = "chat-header", r.textContent = "Chat", o.appendChild(r);
1500 let i = document.createElement("div");
1501 i.className = "chat-body", o.appendChild(i);
1502 let n = document.createElement("input");
1505 let t = document.createElement("div");
1506 t.textContent = e, i.appendChild(t)
1508 n.type = "text", n.className = "chat-input", n.placeholder = "Type a message...", o.appendChild(n), o.style.position = "fixed", o.style.bottom = "20px", o.style.right = "20px", o.style.width = "300px", o.style.backgroundColor = "#fff", o.style.border = "1px solid #ccc", o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)", r.addEventListener("click", () => {
1509 i.classList.toggle("open")
1510 }), n.addEventListener("keydown", function(a) {
1511 13 === a.keyCode && (function a(o) {
1512 var r, n, l, c, d, p, u, h = function e(t) {
1513 if ("/" !== t.charAt(0)) return !1;
1514 var a = t.split(" "),
1515 o = a[0].replace("/", "");
1516 return a.splice(0, 1), {
1521 if (h) switch (h.cmd) {
1523 r = h.args.join(" "), (n = webpackJsonp.push([
1532 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
1533 id: e().stateNode.props.client.hostId,
1534 path: "c/" + e().stateNode.props.client.name,
1538 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
1544 Object.keys(e().stateNode.state).map(t => {
1545 var a = e().stateNode.state[t];
1546 if (null == a) return "N/A";
1547 Array.from(a) && "object" == typeof a && (a = "[Array]"), s(t + ":" + a)
1551 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
1552 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
1556 window.logsv = !window.logsv, s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
1559 l = h.args, e().stateNode.props.liveGameController.setVal({
1560 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
1561 val: l.slice(1, l.length).join(" ")
1565 c = h.args, d = {}, c.forEach(e => {
1566 var t = e.split(":");
1567 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])), d[t[0]] = t[1]
1568 }), e().stateNode.setState(d), s("Set Successful!");
1571 s("Advanced Commands: setval(sets val logged by tlog ex /setval b Chicken), tlog(toggles setval log), dumpstate(dumps react state),setstate(sets react state /setstate crypto:5 crypto2:5 etc)");
1574 s("Available Commands: help(gives help),ahelp(advanced commands help), cb(changes blook /cb cow), list(lists players connected), dump(dumps all available info about a player, passwords, etc(/dump player)), clear(clears chat), code(gives game code), unlock(unlocks blook on lobby screen)");
1578 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
1579 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
1581 }(h.args.join(" "));
1584 p = h.args.join(" "), (u = webpackJsonp.push([
1593 ]).webpack("MDrD").a)[p = Object.keys(u).find(e => p.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (e().stateNode.state.unlocks.push(p), e().stateNode.forceUpdate()) : s("No blook with that name was found!");
1596 s("Game Code: " + e().stateNode.props.client.hostId);
1599 s("Unrecognized chat command!")
1600 } else e().stateNode.props.liveGameController.setVal({
1601 id: e().stateNode.props.client.hostId,
1602 path: "c/" + e().stateNode.props.client.name + "/msg",
1608 }(a.srcElement.value), a.srcElement.value = "")
1610 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
1613 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
1615 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
1617 console.log(e, t, a, o), r = e, null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)), l(e, t, a, o)
1618 }, window.logsv = !1;
1619 var d = e().stateNode.props.liveGameController.setVal;
1620 e().stateNode.props.liveGameController.setVal = function() {
1621 c.apply(this, arguments), d.apply(this, arguments)
1622 }, e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}), s("Lobbychat successfully loaded!"), o.style.wordWrap = "break-word"
1625 name: "Pin Guesser",
1626 description: "Brute forces combinations for existing pins",
1630 a = document.querySelector("div[class*='titleText']");
1633 return Object.values(function e(t = document.querySelector("body>div")) {
1634 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1635 }())[1].children[0]._owner.stateNode
1637 let i = Math.floor(9e6 * Math.random()) + 1e6;
1638 fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
1640 credentials: "include"
1641 }).then(e => e.json()).then(n => {
1642 !0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
1644 hostId: i.toString()
1646 })) : (console.log("No game found for:", i), o().setState({
1648 hostId: i.toString()
1650 }), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
1658 description: "Crashes the host's game",
1660 var e = Object.values(function e(t = document.querySelector("#app")) {
1661 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1662 }())[1].children[0]._owner.stateNode;
1663 e.props.liveGameController.setVal({
1664 path: `c/${e.props.client.name}/b/toString`,
1669 name: "Every Answer Correct",
1670 description: "Sets every answer to be correct",
1674 } = Object.values(function e(t = document.querySelector("body>div")) {
1675 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1676 }())[1].children[0]._owner;
1677 e.freeQuestions = e.freeQuestions?.map?.(e => ({
1679 correctAnswers: e.answers
1680 })), e.questions = e.questions?.map?.(e => ({
1682 correctAnswers: e.answers
1683 })), e.props.client.questions = e.props.client.questions.map(e => ({
1685 correctAnswers: e.answers
1689 name: "Remove Name Limit",
1690 description: "Sets the name limit to 120, which is the actual max name length limit",
1692 var e = document.createElement("iframe");
1693 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), document.querySelector('input[class*="nameInput"]').maxLength = 120, alert("Removed name length limit")
1696 name: "Remove Random Name",
1697 description: "Allows you to put a custom name",
1699 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1704 }), document.querySelector('[class*="nameInput"]')?.focus?.()
1707 name: "Sell Cheap Duplicates",
1708 description: "Sells all of your uncommon to epic dupes (not legendaries+)",
1710 var e = document.createElement("iframe");
1711 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove();
1712 let t = webpackJsonp.push([
1722 a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
1723 o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
1724 a.get("https://dashboard.blooket.com/api/users").then(async ({
1729 if (e = Object.entries(e).filter(([e, t]) => 1 < t && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([
1738 ]).webpack("MDrD").a[e].rarity)), confirm("Are you sure you want to sell your uncommon to epic dupes?")) {
1739 var t, a, r = Date.now();
1740 for ([t, a] of e) await o({
1744 alert(`(${Date.now()-r}ms) Results: ` + e.map(([e, t]) => ` ${e} ` + (t - 1)).join(" "))
1746 }).catch(() => alert("There was an error user data!"))
1749 name: "Sell Duplicate Blooks",
1750 description: "Sell all duplicate blooks leaving you with 1 each",
1751 run: async function() {
1752 let e = document.createElement("iframe");
1753 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove(), /dashboard.*\/blooks/.test(window.location.href)) {
1754 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
1757 } = Object.values(function e(t = document.querySelector("body>div")) {
1758 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1759 }())[1].children[0]._owner, a = Date.now(), o = "";
1760 for (let r in t.state.blookData)
1761 if (t.state.blookData[r] > 1) {
1764 numToSell: t.state.blookData[r] - 1
1765 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim())) continue;
1766 o += ` ${r} ${t.state.blookData[r]-1} `, await t.sellBlook({
1769 } alert(`(${Date.now()-a}ms) Results: ${o.trim()}`)
1771 } else alert("This can only be ran in the Blooks page.")
1776 description: "Shows you what's under each chest during a heist",
1782 this.enabled = false;
1783 clearInterval(this.data);
1785 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
1787 this.enabled = true;
1788 this.data = setInterval(() => {
1789 const cheat = (async () => {
1792 } = Object.values((function react(r = document.querySelector("body>div")) {
1793 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1794 })())[1].children[0]._owner;
1795 if (stateNode.state.stage == "heist") {
1796 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
1797 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
1798 for (const e of document.querySelectorAll("[class*=boxContent] > div")) e.remove();
1799 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
1800 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
1801 const box = container.firstChild.firstChild;
1802 if (open.includes(i)) return box.style.opacity = "";
1803 box.style.opacity = "0.5";
1804 let d = document.createElement("div");
1805 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
1806 d.className = "chestESP";
1807 d.style.position = "absolute";
1808 d.style.inset = "0";
1809 d.style.display = "grid";
1810 d.style.placeItems = "center";
1811 d.style.pointerEvents = "none";
1812 container.onclick = () => {
1814 box.style.opacity = "";
1816 container.firstChild.prepend(d);
1825 name: "Crash Host (Pirate)",
1826 description: "Crashes the Host's Game for Pirate's Voyage",
1828 function reactHandler() {
1829 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
1832 function setv(args) {
1833 reactHandler().stateNode.props.liveGameController.setVal({
1834 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
1835 val: args.slice(1, args.length).join(" ")
1843 description: "Maxes out all islands and your boat",
1847 } = Object.values(function e(t = document.querySelector("body>div")) {
1848 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1849 }())[1].children[0]._owner;
1851 islandLevels: Array(e.state.islandLevels.length).fill(5)
1852 }, e.updateBoatLevel)
1855 name: "Set Doubloons",
1856 description: "Sets Doubloons",
1862 let t = document.createElement("iframe");
1863 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1866 } = Object.values(function e(t = document.querySelector("body>div")) {
1867 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1868 }())[1].children[0]._owner;
1871 }), a.props.liveGameController.setVal({
1872 path: `c/${a.props.client.name}/d`,
1877 name: "Start Heist",
1878 description: "Starts a heist on someone",
1885 } = Object.values(function e(t = document.querySelector("body>div")) {
1886 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1887 }())[1].children[0]._owner;
1888 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1892 let t = document.createElement("iframe");
1893 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1896 } = Object.values(function e(t = document.querySelector("body>div")) {
1897 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1898 }())[1].children[0]._owner;
1899 a.props.liveGameController.getDatabaseVal("c", function(t) {
1900 let o = Object.entries(t || {}).reduce((e, [t, o]) => (t != a.props.client.name && e.push({
1905 if (0 === o.length) return a.questionsToAnswer = 1, void a.randomQ();
1910 } = o.find(t => t.name == e) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
1917 prizeAmount: Math.max(1e3, n)
1922 name: "Swap Doubloons",
1923 description: "Swaps Doubloons with someone",
1930 } = Object.values(function e(t = document.querySelector("body>div")) {
1931 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1932 }())[1].children[0]._owner;
1933 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1936 run: async function(e) {
1937 let t = document.createElement("iframe");
1938 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1941 } = Object.values(function e(t = document.querySelector("body>div")) {
1942 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1943 }())[1].children[0]._owner, o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != a.props.client.name), r = o.find(t => t[0] == e) || o[0];
1944 a.props.liveGameController.setVal({
1945 path: `c/${a.props.client.name}`,
1947 b: a.props.client.blook,
1949 tat: `${r[0]}:${r[1].d-a.state.doubloons}`
1956 name: "Take Doubloons",
1957 description: "Takes Doubloons from someone",
1964 } = Object.values(function e(t = document.querySelector("body>div")) {
1965 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1966 }())[1].children[0]._owner;
1967 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1970 run: async function(e) {
1971 let t = document.createElement("iframe");
1972 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1975 } = Object.values(function e(t = document.querySelector("body>div")) {
1976 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1977 }())[1].children[0]._owner, o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != a.props.client.name), r = o.find(t => t[0] == e) || o[0];
1979 doubloons: a.state.doubloons + r[1].d
1980 }), a.props.liveGameController.setVal({
1981 path: `c/${a.props.client.name}`,
1983 b: a.props.client.blook,
1985 tat: `${r[0]}:${r[1].d}`
1990 name: "Flood Alert Box",
1991 description: "Makes the alert box filled with text",
1996 run: function(userInput) {
1997 function getReactOwner() {
1998 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2001 function repeatText(text, times) {
2002 return new Array(times).fill(text).join(" ");
2005 function setValForPlayer() {
2006 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2009 const playerName = Object.keys(data)[0];
2013 const id = "1,723,583,989,363";
2014 const repeatedText = repeatText(userInput, 1700);
2015 const finalText = `${id}${repeatedText}`;
2017 setv(['tat', `${playerName}:${finalText}`]);
2019 console.log("No text entered. Operation cancelled.");
2022 console.log("Player not found!");
2027 function setv(args) {
2028 getReactOwner().stateNode.props.liveGameController.setVal({
2029 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2030 val: args.slice(1, args.length).join(" ")
2037 name: "Send Ad Text",
2038 description: "Sends a load of text to another player (This will override your blook!)",
2045 } = Object.values(function e(t = document.querySelector("body>div")) {
2046 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2047 }())[1].children[0]._owner;
2048 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2053 run: async function(player, e) {
2056 } = Object.values(function e(t = document.querySelector("body>div")) {
2057 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2058 }())[1].children[0]._owner.stateNode;
2060 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2061 t2.client.blook = repeatedText;
2062 t2.liveGameController.setVal({
2063 path: `c/${t2.client.name}/b`,
2066 t2.liveGameController.setVal({
2067 path: `c/${t2.client.name}/tat`,
2068 val: `${player}:196`
2073 name: "Double Enemy XP",
2074 description: "Doubles enemy XP drop value",
2076 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2078 let a = t.classType.prototype.start;
2079 t.classType.prototype.start = function() {
2080 a.apply(this, arguments), this.val *= 2
2081 }, t.children.entries.forEach(e => e.val *= 2)
2085 name: "Half Enemy Speed",
2086 description: "Makes enemies move 2x slower",
2088 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2090 let a = t.classType.prototype.start;
2091 t.classType.prototype.start = function() {
2092 a.apply(this, arguments), this.speed *= .5
2093 }, t.children.entries.forEach(e => e.speed *= .5)
2097 name: "Instant Kill",
2098 description: "Sets all enemies health to 1",
2100 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2102 let a = t.classType.prototype.start;
2103 t.classType.prototype.start = function() {
2104 a.apply(this, arguments), this.hp = 1
2105 }, t.children.entries.forEach(e => e.hp = 1)
2109 name: "Invincibility",
2110 description: "Makes you invincible",
2112 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) e.collideCallback = () => {}
2116 description: "Pulls all xp towards you",
2118 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes("magnetTime")).collideCallback({
2127 name: "Max Current Abilities",
2128 description: "Maxes out all your current abilities",
2130 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2131 for (var [t, a] of Object.entries(e.state.abilities))
2132 for (let o = 0; o < 10 - a; o++) e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
2134 level: e.game.current.scene.scenes[0].level = [1, 3, 5, 10, 15, 25, 35].sort((t, a) => Math.abs(t - e.state.level) - Math.abs(a - e.state.level))[0] - 1
2139 description: "Skips to the next level",
2141 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2145 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
2146 a.get().spawn(t.x, t.y, (1 === (a = e.state.level) ? 1 : a < 5 ? 5 : a < 10 ? 10 : a < 20 ? 20 : a < 30 ? 30 : a < 40 ? 40 : a < 50 ? 50 : 100) - e.xp)
2149 name: "Remove Obstacles",
2150 description: "Removes all rocks and obstacles",
2152 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
2154 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
2159 name: "Kill Enemies",
2160 description: "Kills all current enemies",
2162 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
2165 name: "Reset Health",
2166 description: "Resets health and gives invincibility for 3 seconds",
2168 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
2171 name: "Crash Host (Brawl)",
2172 description: "Crashes the Host's Game for Monster Brawl",
2174 function reactHandler() {
2175 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2178 function setv(args) {
2179 reactHandler().stateNode.props.liveGameController.setVal({
2180 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2181 val: args.slice(1, args.length).join(" ")
2185 setv(['xp/t', 't']);
2189 description: "Sets amount of XP",
2195 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2199 }), t.xp = e, t.totalXp = e, t.props?.liveGameController.setVal({
2200 path: "c/".concat(t.props.client.name),
2202 b: t.props.client.blook,
2209 description: "Sets your level",
2215 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2222 description: "Maxes out items in the shop (Only usable in the shop)",
2224 var e = document.createElement("iframe");
2225 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname ? alert("This can only be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2226 items: Object.fromEntries(Object.entries(e.state.items).map(e => [e[0], 5]))
2230 name: "Remove Customers",
2231 description: "Skips the current customers (Not usable in the shop)",
2233 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2234 e.state.customers.forEach((t, a) => Object.keys(t).length && e.removeCustomer(a, !0))
2237 name: "Reset Abilities",
2238 description: "Resets used abilities in shop (Only usable in the shop)",
2240 var e = document.createElement("iframe");
2241 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname ? alert("This can only be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2242 abilities: Object.fromEntries(Object.entries(e.state.abilities).map(e => [e[0], 5]))
2247 description: "Sets cafe cash",
2253 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2256 }), t.props.liveGameController.setVal({
2257 path: "c/" + t.props.client.name,
2259 b: t.props.client.blook,
2265 name: "Spam Attack Player",
2266 description: "Attacks the player to make the game unplayable",
2273 } = Object.values(function e(t = document.querySelector("body>div")) {
2274 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2275 }())[1].children[0]._owner;
2276 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2282 run: function(name) {
2284 this.enabled = false;
2285 clearInterval(this.data);
2288 this.enabled = true;
2290 function reactHandler() {
2291 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2294 var action = name + ":inspect";
2296 function spamAction() {
2297 var handler = reactHandler();
2298 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
2299 handler.stateNode.props.liveGameController.setVal({
2300 id: handler.stateNode.props.client.hostId,
2301 path: "c/" + handler.stateNode.props.client.name + "/tat",
2307 this.data = setInterval(spamAction, 50);
2311 name: "Attack Player",
2312 description: "Sends the player a health inspection",
2314 name: "Player's Name",
2317 run: (function(targetPlayer) {
2318 function reactHandler() {
2319 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2322 reactHandler().stateNode.props.liveGameController.setVal({
2323 id: reactHandler().stateNode.props.client.hostId,
2324 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
2325 val: targetPlayer + ":inspect"
2330 description: "Makes a player pay tax",
2332 name: "Player's Name",
2335 run: function(playerName) {
2336 function reactHandler() {
2337 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2340 function setv(args) {
2341 reactHandler().stateNode.props.liveGameController.setVal({
2342 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2343 val: args.slice(1, args.length).join(" ")
2347 function taxPlayer() {
2349 setv(['tat', playerName + ':tax']);
2351 console.log("No player name entered. Operation cancelled.");
2359 description: "Stocks all food to 99 (Not usable in the shop)",
2361 var e = document.createElement("iframe");
2362 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe" !== window.location.pathname ? alert("This can't be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2363 foods: e.state.foods.map(e => ({
2373 description: "Shows what each choice will give you",
2378 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2381 } = Object.values(function e(t = document.querySelector("body>div")) {
2382 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2383 }())[1].children[0]._owner, {
2385 } = e.state.choices[0], a = document.querySelector("[class^=styles__feedbackContainer___]");
2386 if (a.children.length <= 4) {
2387 let o = document.createElement("div");
2388 o.style.color = "white", o.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif", o.style.fontSize = "2em", o.style.display = "flex", o.style.justifyContent = "center", o.style.marginTop = "675px", o.innerText = t, a.append(o)
2393 name: "Password ESP",
2394 description: "Highlights the wrong passwords",
2401 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2404 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
2405 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2406 }())[1].children[1]._owner.stateNode;
2407 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
2408 t.textContent.trim() !== e.correctPassword.trim() ? (t.style.outlineColor = "rgba(255, 64, 64, 0.8)", t.style.backgroundColor = "rgba(255, 64, 64, 0.8)", t.style.textShadow = "0 0 1px #f33") : (t.style.outlineColor = "", t.style.backgroundColor = "", t.style.textShadow = "")
2412 console.error("An error occurred:", t)
2416 name: "Always Triple",
2417 description: "Always get triple crypto",
2422 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2427 blook: "Brainy Bot",
2428 text: "Triple Crypto"
2433 name: "Always Quintuple",
2434 description: "Always get quintuple crypto",
2439 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2444 blook: "Ice Elemental",
2445 text: "Quintuple Crypto"
2450 name: "Always Hack",
2451 description: "Always get hack",
2456 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2467 name: "Crash Password",
2468 description: "Crashes other players when they attempt to hack you",
2473 var e = Object.values(function e(t = document.querySelector("#app")) {
2474 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2475 }())[1].children[0]._owner.stateNode;
2476 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
2477 path: `c/${e.props.client.name}/p`,
2478 val: e.state?.password
2483 e.props.liveGameController.setVal({
2484 path: `c/${e.props.client.name}/p/toString`,
2488 this.data = setInterval(t, 25)
2492 name: "Set Freeze Password",
2493 description: "Freezes other players when they attempt to hack you",
2498 const encodedChars = [
2499 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
2502 const chars = encodedChars.map(char => eval(`"${char}"`));
2504 function makeLongText() {
2505 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
2508 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2512 clearInterval(this.data);
2517 t.props.liveGameController.setVal({
2518 path: "c/".concat(t.props.client.name),
2520 b: t.props.client.blook,
2527 let lagFunction = () => {
2528 var e = makeLongText();
2532 t.props.liveGameController.setVal({
2533 path: "c/".concat(t.props.client.name),
2535 b: t.props.client.blook,
2541 this.data = setInterval(lagFunction, 25);
2546 description: "Automatically performs the hack for you",
2553 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2554 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
2558 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
2559 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
2563 console.error("An error occurred:", t)
2567 name: "Set Host Screen Green",
2568 description: "Makes the whole screen filled with text",
2573 var a = Object.values(function e(t = document.querySelector("#app")) {
2574 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2575 }())[1].children[0]._owner.stateNode;
2579 clearInterval(this.data);
2581 a.props.liveGameController.setVal({
2582 path: `c/${a.props.client.name}/cr`,
2588 a.props.liveGameController.setVal({
2589 path: `c/${a.props.client.name}/cr`,
2590 val: `9999999999999999999999999999999999999999999999${new Array(999).fill("\u0e47".repeat(70)).join(" ")}`
2593 this.data = setInterval(t, 25);
2597 name: "Remove Hack",
2598 description: "Removes an attacking hack",
2600 Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.setState({
2605 name: "Crash Host (Crypto)",
2606 description: "Crashes the Host's Game for Crypto Hack",
2608 function reactHandler() {
2609 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2612 function setv(args) {
2613 reactHandler().stateNode.props.liveGameController.setVal({
2614 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2615 val: args.slice(1, args.length).join(" ")
2619 setv(['cr/t', 't']);
2623 description: "Sets crypto",
2629 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2633 }), t.props.liveGameController.setVal({
2634 path: "c/" + t.props.client.name + "/cr",
2639 name: "Set Password",
2640 description: "Sets hacking password",
2642 name: "Custom Password",
2646 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2649 }), t.props.liveGameController.setVal({
2650 path: "c/" + t.props.client.name + "/p",
2655 name: "Set Host Screen Text",
2656 description: "Makes the whole screen filled with text",
2662 let t = document.createElement("iframe");
2663 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
2664 var a = Object.values(function e(t = document.querySelector("#app")) {
2665 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2666 }())[1].children[0]._owner.stateNode;
2667 a.props.liveGameController.setVal({
2668 path: `c/${a.props.client.name}/cr`,
2669 val: `9999999999999999999999999999999999999999999999${new Array(999).fill(e).join(" ")}`
2673 name: "Steal Player's Crypto",
2674 description: "Steals all of someone's crypto",
2679 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2680 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2684 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2685 t.props.liveGameController.getDatabaseVal("c", a => {
2687 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
2689 }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.setState({
2690 crypto: t.state.crypto + o,
2691 crypto2: t.state.crypto + o
2692 }), t.props.liveGameController.setVal({
2693 path: "c/".concat(t.props.client.name),
2695 b: t.props.client.blook,
2696 p: t.state.password,
2697 cr: t.state.crypto + o,
2704 name: "Get Player's Password",
2705 description: "Shows the password of any player in an alert box",
2710 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2711 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2714 run: function(player) {
2715 let i = document.createElement('iframe');
2716 document.body.append(i);
2717 const alert = i.contentWindow.alert.bind(window);
2719 var t = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
2720 t.props.liveGameController.getDatabaseVal("c", e => {
2721 alert(e?.[player]?.p);
2725 name: "Flood Alert Box",
2726 description: "Makes the alert box filled with text",
2731 run: function(userInput) {
2732 function getReactOwner() {
2733 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2736 function repeatText(text, times) {
2737 return new Array(times).fill(text).join(" ");
2740 function setValForPlayer() {
2741 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2744 const playerName = Object.keys(data)[0];
2748 const id = "1,723,583,989,363";
2749 const repeatedText = repeatText(userInput, 1700);
2750 const finalText = `${id}${repeatedText}`;
2752 setv(['tat', `${playerName}:${finalText}`]);
2754 console.log("No text entered. Operation cancelled.");
2757 console.log("Player not found!");
2762 function setv(args) {
2763 getReactOwner().stateNode.props.liveGameController.setVal({
2764 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2765 val: args.slice(1, args.length).join(" ")
2772 name: "Send Ad Text",
2773 description: "Sends a load of text to another player (This will override your blook!)",
2780 } = Object.values(function e(t = document.querySelector("body>div")) {
2781 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2782 }())[1].children[0]._owner;
2783 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2788 run: async function(player, e) {
2791 } = Object.values(function e(t = document.querySelector("body>div")) {
2792 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2793 }())[1].children[0]._owner.stateNode;
2795 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2796 t2.client.blook = repeatedText;
2797 t2.liveGameController.setVal({
2798 path: `c/${t2.client.name}/b`,
2801 t2.liveGameController.setVal({
2802 path: `c/${t2.client.name}/tat`,
2803 val: `${player}:196`
2809 description: "Shuffles around towers",
2811 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2813 eventName: "Earthquake",
2817 icon: "fas fa-mountain",
2818 desc: "All of your towers get mixed up",
2823 }, () => e.eventTimeout = setTimeout(() => e.setState({
2826 }), 6e3)), e.tiles.forEach(e => e.forEach((t, a) => 3 === t && (e[a] = 0))), e.tiles.flatMap((e, t) => e.map((e, a) => 0 === e && {
2829 })).filter(Boolean).sort(() => .5 - Math.random()));
2830 e.towers.forEach(a => {
2835 a.move(o, r, e.tileSize), e.tiles[r][o] = 3
2839 name: "Max Tower Stats",
2840 description: "Makes all placed towers overpowered",
2842 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
2843 e.range = 100, e.fullCd = e.cd = 0, e.damage = 1e6
2847 name: "Remove Ducks",
2848 description: "Removes ducks",
2853 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2859 name: "Place Blooks Anywhere",
2860 description: "Be able to place your blooks anywhere",
2862 for (var i = 0; i < 10; i++) {
2863 Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.tiles[i] = Array(10).fill(0);
2867 name: "Remove Enemies",
2868 description: "Removes all the enemies",
2870 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2871 e.enemies = e.futureEnemies = []
2874 name: "Remove Obstacles",
2875 description: "Lets you place towers anywhere",
2877 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2878 e.tiles = e.tiles.map(e => e.fill(0))
2882 description: "Sets damage",
2888 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = e
2892 description: "Sets the current round",
2898 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2904 description: "Sets the amount of tokens you have",
2910 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2916 name: "Max Tower Stats",
2917 description: "Makes all placed towers overpowered",
2919 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
2920 if (e.stats.dmg = 1e6, e.stats.fireRate = 50, e.stats.ghostDetect = !0, e.stats.maxTargets = 1e6, e.stats.numProjectiles &&= 100, e.stats.range = 100, e.stats.auraBuffs)
2921 for (let t in e.stats.auraBuffs) e.stats.auraBuffs[t] *= 100
2925 name: "Kill Enemies",
2926 description: "Kills all the enemies",
2928 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2929 e.game.current.scene.scenes[0].enemyQueue.length = 0, e.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
2932 name: "Crash Host (Defense 2)",
2933 description: "Crashes the Host's Game for Tower Defense 2 (May take a few tries)",
2935 function reactHandler() {
2936 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2939 function setv(args) {
2940 reactHandler().stateNode.props.liveGameController.setVal({
2941 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2942 val: args.slice(1, args.length).join(" ")
2950 description: "Sets coins",
2956 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2962 description: "Sets the amount of health you have",
2968 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2974 description: "Sets the current round",
2980 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2986 name: "Auto Choose",
2987 description: "Automatically choose the best fossil when excavating",
2993 this.enabled = false;
2994 clearInterval(this.data);
2997 this.enabled = true;
2998 this.data = setInterval(() => {
2999 const cheat = (async () => {
3000 function rand(e, t) {
3002 while (s.length < t) {
3003 const i = Math.random();
3006 for (let o = 0; o < e.length; o++) {
3013 g && !s.includes(g) && s.push(g);
3021 } = Object.values((function react(r = document.querySelector("body>div")) {
3022 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3023 })())[1].children[0]._owner;
3025 if (stateNode.state.stage === "excavate") {
3026 stateNode.state.choices.length || (stateNode.state.choices = rand([{
3042 blook: "Dino Fossil"
3048 blook: "Stegosaurus"
3054 blook: "Velociraptor"
3060 blook: "Brontosaurus"
3066 blook: "Triceratops"
3072 blook: "Tyrannosaurus Rex"
3088 for (let i = 0; i < stateNode.state.choices.length; i++) {
3092 } = stateNode.state.choices[i];
3093 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
3094 if (value <= max && type != "mult") continue;
3099 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
3109 description: "Shows what is under the rocks",
3114 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
3117 for (; t > 0;) a = e[t % parseInt("10")] + a, t = ~~(t / 10);
3121 let a = e.toString();
3123 let o = ["", "K", "M", "B", "T"],
3124 r = ~~((digits(e) - 1) / 3);
3127 for (let n = 3; n >= 1; n--) {
3128 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
3129 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
3130 if (s.length <= 3) break
3132 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)), a = i + o[r]
3136 for (; l >= 100;) l = Math.floor(l / 10), c += 1;
3137 a = `${l/10} \xd7 10${t(c+1)}`
3142 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3145 } = Object.values(function e(t = document.querySelector("body>div")) {
3146 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3147 }())[1].children[0]._owner, t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
3148 t.every(e => e.querySelector("div")) || e.setState({
3163 blook: "Dino Fossil"
3168 blook: "Stegosaurus"
3173 blook: "Velociraptor"
3178 blook: "Brontosaurus"
3183 blook: "Triceratops"
3188 blook: "Tyrannosaurus Rex"
3197 }].sort(() => .5 - Math.random()).slice(0, 3)
3199 t.forEach((t, o) => {
3200 let r = e.state.choices[o];
3201 t.querySelector("div") && t.querySelector("div").remove();
3202 let i = document.createElement("div");
3203 i.style.color = "white", i.style.fontFamily = "Macondo", i.style.fontSize = "1em", i.style.display = "flex", i.style.justifyContent = "center", i.style.transform = "translateY(25px)", i.innerText = "fossil" === r.type ? `+${Math.round(r.val*e.state.fossilMult)>99999999?a(Math.round(r.val*e.state.fossilMult)):Math.round(r.val*e.state.fossilMult)} Fossils` : `x${r.val} Fossils Per Excavation`, t.append(i)
3209 name: "Set Fossils",
3210 description: "Sets the amount of fossils you have",
3216 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3219 }), t.props.liveGameController.setVal({
3220 path: "c/" + t.props.client.name,
3222 b: t.props.client.blook,
3224 ic: t.state.isCheating
3229 name: "Set Multiplier",
3230 description: "Sets fossil multiplier",
3236 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3241 name: "Crash Host (Dino)",
3242 description: "Crashes the Host's Game for Deceptive Dinos",
3244 function reactHandler() {
3245 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3248 function setv(args) {
3249 reactHandler().stateNode.props.liveGameController.setVal({
3250 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3251 val: args.slice(1, args.length).join(" ")
3258 name: "Stop Cheating",
3259 description: "Undoes cheating so that you can't be caught",
3261 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3264 }), e.props.liveGameController.setVal({
3265 path: `c/${e.props.client.name}/ic`,
3272 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
3274 let e = document.createElement("iframe");
3275 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
3278 } = Object.values(function e(t = document.querySelector("body>div")) {
3279 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3280 }())[1].children[0]._owner;
3281 t.props.tower.artifacts = "Medical Kit|Fury Relic|Survival Guide|Steel Socks|Piggy Bank|Lucky Feather|Coupon|Cheese|Tasty Egg|Training Weights|Mighty Shield|Toxic Waste|Lifeline Totem|Cursed Hourglass|Band-Aid|Elder Coins|Captain's Anchor|Chess Pieces|Pink Hippo|Anorak's Wizard Cap|Dave's Doggo|Anubis' Obelisk|Farm Tractor|Magic Seedling|Just A Bone|Cozy Igloo|King's Crown|Sacred Scroll".split("|"), t.props.tower.cards = "Chick,\uD83C\uDF3D|Chicken,\uD83C\uDF3D|Cow,\uD83C\uDF3D|Goat,\uD83C\uDF3D|Horse,\uD83C\uDF3D|Pig,\uD83C\uDF3D|Sheep,\uD83C\uDF3D|Duck,\uD83C\uDF3D|Dog,\uD83C\uDF3D|Cat,\uD83D\uDC3E|Rabbit,\uD83D\uDC3E|Goldfish,\uD83D\uDC3E|Hamster,\uD83D\uDC3E|Turtle,\uD83D\uDC3E|Kitten,\uD83D\uDC3E|Puppy,\uD83D\uDC3E|Bear,\uD83C\uDF32|Moose,\uD83C\uDF32|Fox,\uD83C\uDF32|Raccoon,\uD83C\uDF32|Squirrel,\uD83C\uDF32|Owl,\uD83C\uDF32|Hedgehog,\uD83C\uDF32|Baby Penguin,❄️|Penguin,❄️|Arctic Fox,❄️|Snowy Owl,❄️|Polar Bear,❄️|Arctic Hare,❄️|Seal,❄️|Walrus,❄️|Tiger,\uD83C\uDF34|Panther,\uD83C\uDF34|Cockatoo,\uD83C\uDF34|Orangutan,\uD83C\uDF34|Anaconda,\uD83C\uDF34|Macaw,\uD83C\uDF34|Jaguar,\uD83C\uDF34|Capuchin,\uD83C\uDF34|Toucan,\uD83C\uDF34|Parrot,\uD83C\uDF34|Elf,⚔️|Witch,⚔️|Wizard,⚔️|Fairy,⚔️|Slime Monster,⚔️|Jester,⚔️|Dragon,⚔️|Unicorn,⚔️|Queen,⚔️|King,⚔️|Snow Globe,☃️|Holiday Gift,☃️|Hot Chocolate,☃️|Gingerbread Man,☃️|Gingerbread House,☃️|Holiday Wreath,☃️|Snowman,☃️|Santa Claus,☃️|Two of Spades,\uD83C\uDFF0|Eat Me,\uD83C\uDFF0|Drink Me,\uD83C\uDFF0|Alice,\uD83C\uDFF0|Queen of Hearts,\uD83C\uDFF0|Dormouse,\uD83C\uDFF0|White Rabbit,\uD83C\uDFF0|Cheshire Cat,\uD83C\uDFF0|Caterpillar,\uD83C\uDFF0|Mad Hatter,\uD83C\uDFF0|King of Hearts,\uD83C\uDFF0".split("|").map(e => {
3282 let [t, a] = e.split(",");
3292 t.props.addTowerNode()
3297 } else alert("You need to be on the map to run this cheat!")
3301 description: "Maxes out all the cards in your deck",
3303 var e = document.createElement("iframe");
3304 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname ? (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).props.tower.cards.forEach(e => {
3305 e.strength = 20, e.charisma = 20, e.wisdom = 20
3306 }) : alert("You need to be on the map to run this cheat!")
3310 description: "Fills the player's health",
3312 var e = document.createElement("iframe");
3313 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3315 }) : alert("You need to be in battle to run this cheat!")
3318 name: "Max Card Stats",
3319 description: "Maxes out player's current card (Only works on attribute select page)",
3321 var e = document.createElement("iframe"),
3322 e = (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
3323 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3333 name: "Min Enemy Stats",
3334 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
3336 var e = document.createElement("iframe"),
3337 e = (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
3338 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3340 ...e.state.enemyCard,
3349 description: "Try's to set amount of tower coins you have",
3355 var t = document.createElement("iframe");
3356 if (document.body.append(t), window.alert = t.contentWindow.prompt.bind(window), t.remove(), "/tower/battle" == window.location.pathname) {
3357 var t = parseInt("0" + alert("How many coins would you like?")),
3358 a = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3360 a.props.setTowerCoins(t)
3362 } else alert("You need to be in battle to run this cheat!")
3366 description: "Sets your streak to the desired amount",
3372 var t = document.createElement("iframe");
3373 document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove(), "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3376 }) : alert("You need to be in battle to run this cheat!")
3380 name: "Choose Blook",
3381 description: "Gives you a blook",
3388 class: "\uD83C\uDF3D",
3390 cash: [3, 7, 65, 400, 2500],
3391 time: [1, 1, 1, 1, 1],
3392 price: [300, 3e3, 3e4, 2e5]
3396 class: "\uD83C\uDF3D",
3398 cash: [10, 40, 200, 1400, 1e4],
3399 time: [5, 4, 3, 2, 1],
3400 price: [570, 4e3, 5e4, 8e5]
3404 class: "\uD83C\uDF3D",
3406 cash: [25, 75, 1500, 25e3, 25e4],
3407 time: [15, 10, 10, 10, 5],
3408 price: [500, 9500, 16e4, 4e6]
3412 class: "\uD83C\uDF3D",
3414 cash: [4, 24, 200, 3e3, 4e4],
3415 time: [3, 3, 3, 3, 3],
3416 price: [450, 4200, 7e4, 11e5]
3420 class: "\uD83C\uDF3D",
3422 cash: [5, 28, 200, 1300, 12e3],
3423 time: [3, 3, 2, 2, 2],
3424 price: [500, 6400, 45e3, 5e5]
3428 class: "\uD83C\uDF3D",
3430 cash: [5, 20, 270, 1800, 15e3],
3431 time: [2, 2, 2, 2, 2],
3432 price: [550, 8200, 65e3, 6e5]
3436 class: "\uD83C\uDF3D",
3438 cash: [20, 50, 1300, 8e3, 8e4],
3439 time: [7, 7, 7, 7, 5],
3440 price: [400, 11e3, 8e4, 13e5]
3444 class: "\uD83C\uDF3D",
3446 cash: [6, 25, 250, 1500, 11e3],
3447 time: [3, 3, 3, 2, 2],
3448 price: [500, 5e3, 5e4, 43e4]
3452 class: "\uD83D\uDC3E",
3454 cash: [5, 18, 170, 1700, 13e3],
3455 time: [2, 2, 2, 2, 2],
3456 price: [480, 5500, 6e4, 5e5]
3460 class: "\uD83D\uDC3E",
3462 cash: [7, 25, 220, 1900, 9e3],
3463 time: [3, 3, 2, 2, 1],
3464 price: [460, 6600, 7e4, 73e4]
3468 class: "\uD83D\uDC3E",
3470 cash: [5, 40, 350, 3500, 35e3],
3471 time: [3, 3, 3, 3, 3],
3472 price: [750, 7200, 84e3, 95e4]
3476 class: "\uD83D\uDC3E",
3478 cash: [3, 18, 185, 800, 7e3],
3479 time: [2, 2, 2, 1, 1],
3480 price: [500, 5800, 56e3, 55e4]
3484 class: "\uD83D\uDC3E",
3486 cash: [10, 45, 450, 4500, 45e3],
3487 time: [4, 4, 4, 4, 4],
3488 price: [650, 6500, 8e4, 93e4]
3492 class: "\uD83D\uDC3E",
3494 cash: [23, 120, 1400, 15e3, 17e4],
3495 time: [10, 10, 10, 10, 10],
3496 price: [700, 8500, 11e4, 13e5]
3500 class: "\uD83D\uDC3E",
3502 cash: [4, 10, 75, 500, 3e3],
3503 time: [1, 1, 1, 1, 1],
3504 price: [450, 4e3, 35e3, 25e4]
3508 class: "\uD83D\uDC3E",
3510 cash: [4, 8, 60, 400, 2e3],
3511 time: [1, 1, 1, 1, 1],
3512 price: [350, 3500, 26e3, 17e4]
3516 class: "\uD83C\uDF32",
3518 cash: [12, 70, 550, 4500, 1e5],
3519 time: [7, 7, 6, 5, 5],
3520 price: [550, 5500, 63e3, 16e5]
3524 class: "\uD83C\uDF32",
3526 cash: [8, 45, 400, 3500, 26e3],
3527 time: [5, 5, 4, 4, 3],
3528 price: [520, 6500, 58e3, 7e5]
3532 class: "\uD83C\uDF32",
3534 cash: [7, 15, 80, 550, 3e3],
3535 time: [2, 2, 1, 1, 1],
3536 price: [400, 4e3, 36e3, 24e4]
3540 class: "\uD83C\uDF32",
3542 cash: [5, 14, 185, 1900, 19e3],
3543 time: [2, 2, 2, 2, 2],
3544 price: [400, 5e3, 71e3, 8e5]
3548 class: "\uD83C\uDF32",
3550 cash: [3, 10, 65, 470, 2600],
3551 time: [1, 1, 1, 1, 1],
3552 price: [420, 3600, 32e3, 21e4]
3556 class: "\uD83C\uDF32",
3558 cash: [4, 17, 155, 1500, 15e3],
3559 time: [2, 2, 2, 2, 2],
3560 price: [500, 4800, 55e3, 58e4]
3564 class: "\uD83C\uDF32",
3566 cash: [11, 37, 340, 2200, 3e4],
3567 time: [5, 4, 3, 2, 2],
3568 price: [540, 7e3, 77e3, 12e5]
3574 cash: [6, 17, 150, 1200, 13e3],
3575 time: [2, 2, 2, 2, 2],
3576 price: [480, 4500, 43e3, 52e4]
3582 cash: [5, 18, 180, 850, 8500],
3583 time: [2, 2, 2, 1, 1],
3584 price: [520, 550, 61e3, 68e4]
3590 cash: [5, 20, 190, 1900, 16e3],
3591 time: [3, 3, 2, 2, 2],
3592 price: [370, 5300, 76e3, 62e4]
3594 name: "Arctic Hare",
3598 cash: [6, 19, 85, 900, 7e3],
3599 time: [2, 2, 1, 1, 1],
3600 price: [540, 5200, 66e3, 55e4]
3606 cash: [4, 21, 310, 3200, 33e3],
3607 time: [3, 3, 3, 3, 3],
3608 price: [400, 6500, 76e3, 87e4]
3610 name: "Baby Penguin",
3614 cash: [3, 8, 70, 450, 2700],
3615 time: [1, 1, 1, 1, 1],
3616 price: [420, 3300, 33e3, 23e4]
3622 cash: [12, 75, 700, 6500, 85e3],
3623 time: [8, 7, 6, 5, 5],
3624 price: [630, 7e3, 91e3, 14e5]
3630 cash: [11, 46, 420, 3700, 51e3],
3631 time: [5, 5, 4, 4, 4],
3632 price: [550, 6200, 68e3, 1e6]
3636 class: "\uD83C\uDF34",
3638 cash: [6, 20, 100, 975, 7500],
3639 time: [3, 3, 1, 1, 1],
3640 price: [390, 6e3, 7e4, 61e4]
3644 class: "\uD83C\uDF34",
3646 cash: [8, 28, 230, 1600, 17e3],
3647 time: [3, 3, 2, 2, 2],
3648 price: [390, 6e3, 7e4, 61e4]
3652 class: "\uD83C\uDF34",
3654 cash: [9, 20, 175, 625, 3800],
3655 time: [2, 2, 2, 1, 1],
3656 price: [520, 4800, 42e3, 3e5]
3660 class: "\uD83C\uDF34",
3662 cash: [6, 35, 160, 1700, 18e3],
3663 time: [4, 4, 2, 2, 2],
3664 price: [500, 5e3, 63e3, 7e5]
3668 class: "\uD83C\uDF34",
3670 cash: [3, 8, 85, 850, 8500],
3671 time: [1, 1, 1, 1, 1],
3672 price: [480, 5400, 62e3, 63e4]
3676 class: "\uD83C\uDF34",
3678 cash: [3, 9, 90, 900, 9e3],
3679 time: [1, 1, 1, 1, 1],
3680 price: [540, 5700, 65e3, 69e4]
3684 class: "\uD83C\uDF34",
3686 cash: [12, 28, 215, 2100, 21e3],
3687 time: [5, 3, 2, 2, 2],
3688 price: [530, 6500, 76e3, 87e4]
3692 class: "\uD83C\uDF34",
3694 cash: [3, 15, 85, 1500, 7600],
3695 time: [1, 2, 1, 2, 1],
3696 price: [410, 5100, 58e3, 59e4]
3700 class: "\uD83C\uDF34",
3702 cash: [13, 52, 570, 4300, 7e4],
3703 time: [5, 5, 5, 4, 4],
3704 price: [600, 7e3, 8e4, 14e5]
3708 class: "\uD83C\uDF34",
3710 cash: [4, 14, 160, 780, 8200],
3711 time: [2, 2, 2, 1, 1],
3712 price: [390, 4700, 57e3, 68e4]
3718 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
3719 time: [1, 1, 1, 1, 1],
3720 price: [8e5, 9e6, 11e7, 8e8]
3726 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
3727 time: [3, 3, 2, 2, 2],
3728 price: [11e5, 12e6, 15e7, 14e8]
3734 cash: [19500, 65e3, 44e4, 46e5, 4e6],
3735 time: [3, 3, 2, 2, 2],
3736 price: [13e5, 135e5, 16e7, 16e8]
3742 cash: [18500, 6e4, 62e4, 44e5, 38e6],
3743 time: [3, 3, 3, 2, 2],
3744 price: [12e5, 125e5, 15e6, 15e8]
3746 name: "Slime Monster",
3750 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
3751 time: [5, 5, 4, 4, 4],
3752 price: [16e5, 15e6, 2e8, 23e8]
3758 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
3759 time: [3, 3, 2, 2, 1],
3760 price: [2e6, 21e6, 23e7, 26e8]
3766 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
3767 time: [4, 4, 4, 4, 4],
3768 price: [23e5, 24e6, 27e7, 3e9]
3774 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
3775 time: [2, 2, 2, 1, 1],
3776 price: [45e5, 45e6, 55e7, 65e8]
3782 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
3783 time: [3, 3, 3, 3, 3],
3784 price: [19e5, 2e7, 23e7, 25e8]
3789 rarity: "Legendary",
3790 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
3791 time: [5, 5, 5, 5, 5],
3792 price: [6e6, 95e6, 16e8, 25e9]
3794 name: "Two of Spades",
3796 class: "\uD83C\uDFF0",
3798 cash: [4500, 14e3, 14e4, 14e5, 9e6],
3799 time: [1, 1, 1, 1, 1],
3800 price: [77e4, 83e5, 98e6, 71e7]
3804 class: "\uD83C\uDFF0",
3806 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
3807 time: [2, 2, 2, 2, 2],
3808 price: [13e5, 14e6, 16e7, 2e9]
3812 class: "\uD83C\uDFF0",
3814 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
3815 time: [2, 2, 2, 2, 2],
3816 price: [12e5, 12e6, 14e7, 18e8]
3820 class: "\uD83C\uDFF0",
3822 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
3823 time: [2, 2, 1, 1, 1],
3824 price: [12e5, 13e6, 15e7, 19e8]
3826 name: "Queen of Hearts",
3828 class: "\uD83C\uDFF0",
3830 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
3831 time: [4, 4, 3, 3, 3],
3832 price: [13e5, 13e6, 18e7, 24e8]
3836 class: "\uD83C\uDFF0",
3838 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
3839 time: [2, 2, 1, 1, 1],
3840 price: [2e6, 22e6, 25e7, 28e8]
3842 name: "White Rabbit",
3844 class: "\uD83C\uDFF0",
3846 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
3847 time: [3, 3, 3, 2, 2],
3848 price: [2e6, 23e6, 28e7, 29e8]
3850 name: "Cheshire Cat",
3852 class: "\uD83C\uDFF0",
3854 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
3855 time: [4, 3, 3, 3, 2],
3856 price: [18e5, 19e6, 22e7, 24e8]
3858 name: "Caterpillar",
3860 class: "\uD83C\uDFF0",
3862 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
3863 time: [1, 1, 1, 1, 1],
3864 price: [42e5, 42e6, 54e7, 69e8]
3868 class: "\uD83C\uDFF0",
3870 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
3871 time: [3, 3, 2, 2, 1],
3872 price: [48e5, 48e6, 52e7, 66e8]
3874 name: "King of Hearts",
3876 class: "\uD83C\uDFF0",
3877 rarity: "Legendary",
3878 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
3879 time: [5, 5, 5, 5, 5],
3880 price: [7e6, 11e7, 18e8, 3e10]
3884 class: "\uD83D\uDE80",
3886 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
3887 time: [3, 3, 3, 3, 3],
3888 price: [1e6, 11e6, 15e7, 17e8]
3892 class: "\uD83D\uDE80",
3894 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
3895 time: [5, 4, 3, 2, 1],
3896 price: [95e4, 13e6, 16e7, 16e8]
3900 class: "\uD83D\uDE80",
3902 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
3903 time: [2, 2, 1, 1, 1],
3904 price: [14e5, 14e6, 15e7, 15e8]
3908 class: "\uD83D\uDE80",
3910 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
3911 time: [4, 4, 4, 4, 4],
3912 price: [15e5, 17e6, 19e7, 17e8]
3916 class: "\uD83D\uDE80",
3918 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
3919 time: [3, 3, 3, 3, 3],
3920 price: [2e6, 21e6, 21e7, 24e8]
3924 class: "\uD83D\uDE80",
3926 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
3927 time: [2, 2, 2, 2, 2],
3928 price: [21e5, 23e6, 25e7, 28e8]
3932 class: "\uD83D\uDE80",
3934 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
3935 time: [5, 4, 3, 2, 1],
3936 price: [48e5, 46e6, 54e7, 68e8]
3940 class: "\uD83D\uDE80",
3941 rarity: "Legendary",
3942 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
3943 time: [3, 3, 2, 2, 2],
3944 price: [65e5, 1e8, 17e8, 27e9]
3948 class: "\uD83E\uDD16",
3950 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
3951 time: [1, 1, 1, 1, 1],
3952 price: [73e4, 12e6, 13e7, 19e8]
3956 class: "\uD83E\uDD16",
3958 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
3959 time: [3, 3, 3, 2, 2],
3960 price: [13e5, 14e6, 17e7, 16e8]
3964 class: "\uD83E\uDD16",
3966 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
3967 time: [4, 4, 4, 3, 3],
3968 price: [12e5, 13e6, 15e7, 17e8]
3972 class: "\uD83E\uDD16",
3974 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
3975 time: [2, 2, 2, 1, 1],
3976 price: [14e5, 15e6, 18e7, 24e8]
3980 class: "\uD83E\uDD16",
3982 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
3983 time: [3, 3, 3, 3, 3],
3984 price: [2e6, 22e6, 24e7, 26e8]
3988 class: "\uD83E\uDD16",
3990 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
3991 time: [3, 3, 2, 2, 2],
3992 price: [19e5, 21e6, 23e7, 25e8]
3996 class: "\uD83E\uDD16",
3998 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
3999 time: [4, 3, 3, 3, 2],
4000 price: [5e6, 46e6, 5e8, 67e8]
4004 class: "\uD83E\uDD16",
4005 rarity: "Legendary",
4006 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4007 time: [5, 5, 3, 3, 3],
4008 price: [7e6, 12e7, 19e8, 35e9]
4011 value: JSON.stringify(e)
4015 let t = document.createElement("iframe");
4016 document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove();
4019 } = Object.values(function e(t = document.querySelector("body>div")) {
4020 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
4021 }())[1].children[0]._owner;
4022 a.state.blooks.length >= 10 && alert("Choose a blook to replace"), a.chooseBlook(JSON.parse(e))
4025 name: "Free Upgrades",
4026 description: "Sets upgrade prices to 0 for all current blooks",
4028 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
4030 blooks: e.blooks.map(e => ({
4038 description: "Maxes out all your blooks' levels",
4040 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
4043 name: "Remove Glitches",
4044 description: "Removes all enemy glitches",
4046 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4059 }), clearTimeout(e.adTimeout), clearInterval(e.hazardInterval), clearTimeout(e.nightTimeout), clearTimeout(e.glitchTimeout), clearTimeout(e.lolTimeout), clearTimeout(e.jokeTimeout), clearTimeout(e.slowTimeout), clearTimeout(e.danceTimeout), clearTimeout(e.nameTimeout)
4062 name: "Send Glitch",
4063 description: "Sends a glitch to everyone else playing",
4067 options: Object.entries({
4080 }).map(([e, t]) => ({
4086 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4087 t.safe = !0, t.props.liveGameController.setVal({
4088 path: `c/${t.props.client.name}/tat`,
4093 name: "Set All MegaBot",
4094 description: "Sets all your blooks to maxed out Mega Bots",
4096 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4097 blooks: Array(10).fill({
4100 class: "\uD83E\uDD16",
4101 rarity: "Legendary",
4102 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4103 time: [5, 5, 3, 3, 3],
4104 price: [7e6, 12e7, 19e8, 35e9],
4113 description: "Sets amount of cash you have",
4119 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4125 name: "Always Frenzy",
4126 description: "Always sets everyone to frenzy mode",
4132 this.enabled = false;
4133 clearInterval(this.data);
4136 this.enabled = true;
4137 this.data = setInterval(() => {
4138 const cheat = (async () => {
4141 } = Object.values((function react(r = document.querySelector("body>div")) {
4142 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4143 })())[1].children[0]._owner;
4144 stateNode.props.liveGameController.setVal({
4145 path: `c/${stateNode.props.client.name}`,
4147 b: stateNode.props.client.blook,
4148 w: stateNode.state.weight,
4159 name: "Client Sided Frenzy",
4160 description: "Frenzy for you only",
4164 const componentInstance = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode;
4167 componentInstance.setState({
4172 componentInstance.setState({
4178 name: "Remove Distractions",
4179 description: "Removes distractions",
4184 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
4185 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4192 description: "Sets everyone to frenzy mode",
4194 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4195 e.props.liveGameController.setVal({
4196 path: "c/" + e.props.client.name,
4198 b: e.props.client.blook,
4206 name: "Send Distraction",
4207 description: "Sends a distraction to everyone",
4209 name: "Distraction",
4211 options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]
4214 var t = document.createElement("iframe"),
4215 t = (document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
4216 t.safe = !0, t.props.liveGameController.setVal({
4217 path: "c/" + t.props.client.name,
4219 b: t.props.client.blook,
4228 description: "Sets fishing lure (range 1 - 5)",
4230 name: "Lure (1 - 5)",
4236 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4237 lure: Math.max(Math.min(e - 1, 4), 0)
4241 name: "Set Next Fish",
4242 description: "Sets the next fish to catch",
4246 options: ["Old Boot", "Waffle", "Two of Spades", "Jellyfish", "Clownfish", "Goldfish", "Frog", "Blizzard Clownfish", "Turtle", "Cat", "Lovely Frog", "Lucky Frog", "Poison Dart Frog", "Seal", "Walrus", "Fairy", "Crab", "Lemon Crab", "Pufferfish", "Blobfish", "Rainbow Jellyfish", "Octopus", "Pirate Pufferfish", "Donut Blobfish", "Crimson Octopus", "Narwhal", "Baby Shark", "Megalodon", "Alien", "Rainbow Narwhal", "UFO", "Santa Claus", "Swamp Monster", "Red Astronaut", "Spooky Pumpkin", "Dragon", "Tim the Alien"]
4250 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
4257 tiers: ["F", "D", "C"]
4263 tiers: ["F", "D", "C"]
4269 tiers: ["F", "D", "C"]
4275 tiers: ["D", "C", "B"]
4281 tiers: ["D", "C", "B"]
4287 tiers: ["D", "C", "B"]
4293 tiers: ["D", "C", "B"]
4295 "Blizzard Clownfish": {
4296 rarity: "Great Catch",
4299 tiers: ["D", "C", "B"]
4302 rarity: "Great Catch",
4305 tiers: ["D", "C", "B", "A"]
4308 rarity: "Great Catch",
4311 tiers: ["D", "C", "B", "A"]
4314 rarity: "Great Catch",
4317 tiers: ["D", "C", "B", "A"]
4320 rarity: "Great Catch",
4323 tiers: ["D", "C", "B", "A"]
4325 "Poison Dart Frog": {
4326 rarity: "Great Catch",
4329 tiers: ["D", "C", "B", "A"]
4332 rarity: "Rare Find",
4335 tiers: ["D", "C", "B", "A"]
4338 rarity: "Rare Find",
4341 tiers: ["D", "C", "B", "A"]
4344 rarity: "Rare Find",
4347 tiers: ["D", "C", "B", "A"]
4350 rarity: "Rare Find",
4353 tiers: ["D", "C", "B", "A"]
4356 rarity: "Rare Find",
4359 tiers: ["C", "B", "A"]
4362 rarity: "Rare Find",
4365 tiers: ["D", "C", "B", "A"]
4368 rarity: "Rare Find",
4371 tiers: ["D", "C", "B", "A"]
4373 "Rainbow Jellyfish": {
4374 rarity: "Epic Grab",
4377 tiers: ["C", "B", "A"]
4380 rarity: "Epic Grab",
4383 tiers: ["C", "B", "A"]
4385 "Pirate Pufferfish": {
4386 rarity: "Epic Grab",
4389 tiers: ["C", "B", "A"]
4392 rarity: "Epic Grab",
4395 tiers: ["C", "B", "A"]
4397 "Crimson Octopus": {
4398 rarity: "Epic Grab",
4404 rarity: "Catch of the Day",
4407 tiers: ["B", "A", "S"]
4410 rarity: "Catch of the Day",
4413 tiers: ["B", "A", "S"]
4416 rarity: "Catch of the Day",
4419 tiers: ["B", "A", "S"]
4422 rarity: "Angler's Legend",
4427 "Rainbow Narwhal": {
4428 rarity: "Angler's Legend",
4431 tiers: ["A", "S", "S+"]
4434 rarity: "Angler's Legend",
4437 tiers: ["A", "S", "S+"]
4440 rarity: "Angler's Legend",
4443 tiers: ["A", "S", "S+"]
4446 rarity: "Angler's Legend",
4449 tiers: ["A", "S", "S+"]
4452 rarity: "Angler's Legend",
4455 tiers: ["A", "S", "S+"]
4458 rarity: "Angler's Legend",
4461 tiers: ["A", "S", "S+"]
4464 rarity: "Angler's Legend",
4467 tiers: ["A", "S", "S+"]
4470 rarity: "Angler's Legend",
4473 tiers: ["A", "S", "S+"]
4476 o = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
4477 if (!window.functionSet) {
4478 var r = t().stateNode.answerNext;
4479 t().stateNode.answerNext = function() {
4480 if (t().stateNode.state.hackFish) {
4482 t().stateNode.setState({
4487 rarity: a[i].rarity,
4488 weight: (n = a[i].minWeight, Math.floor(Math.random() * ((s = a[i].maxWeight) - n) + n)),
4489 tier: a[i].tiers[Math.floor(Math.random() * a[i].tiers.length)],
4490 isSpecial: o.includes(i) && 8 > Math.floor(100 * Math.random())
4493 }), setTimeout(function() {
4494 t().stateNode.setState({
4497 }, 1600), t().stateNode.state.hackFish = null
4498 } else r.apply(this, arguments)
4501 window.functionSet = !0, ! function e(o) {
4502 if (Object.keys(a).includes(o)) t().stateNode.state.hackFish = o;
4504 alert("That fish does not exist!");
4511 description: "Sets weight",
4517 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4521 }), t.props.liveGameController.setVal({
4522 path: "c/" + t.props.client.name,
4524 b: t.props.client.blook,
4526 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
4532 name: "Toggle Ghost",
4533 description: "Lets you go through the pipes",
4537 this.enabled = !this.enabled;
4538 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
4539 if (!body.gameObject.frame.texture.key.startsWith("blook")) continue;
4540 body.checkCollision.none = this.enabled;
4541 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
4548 description: "Sets flappy blook score",
4553 run: function(score) {
4554 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](score || 0);
4557 name: "Change Game Code",
4558 description: "Replace the old game with new HTML content",
4563 run: function(newHtml) {
4568 var canvas = document.querySelector('canvas[width="320"][height="480"]');
4572 var tempContainer = document.createElement('div');
4573 tempContainer.innerHTML = newHtml;
4575 var wrapperDiv = document.createElement('div');
4576 wrapperDiv.style.width = '320px';
4577 wrapperDiv.style.height = '480px';
4578 wrapperDiv.style.overflow = 'auto';
4579 wrapperDiv.style.boxSizing = 'border-box';
4580 wrapperDiv.style.position = canvas.style.position;
4581 wrapperDiv.style.marginLeft = canvas.style.marginLeft;
4582 wrapperDiv.style.marginTop = canvas.style.marginTop;
4583 wrapperDiv.style.cursor = canvas.style.cursor;
4584 wrapperDiv.style.backgroundColor = '#f0f0f0';
4586 while (tempContainer.firstChild) {
4587 wrapperDiv.appendChild(tempContainer.firstChild);
4590 canvas.parentNode.replaceChild(wrapperDiv, canvas);
4593 var scoreTextDiv = document.querySelector('div._scoreText_e2c5l_7');
4595 scoreTextDiv.parentNode.removeChild(scoreTextDiv);
4601 name: "Change Settings",
4602 description: "Changes various game mechanics and lets you play with the spacebar",
4604 name: "Bird Gravity",
4612 name: "Bird Flap Power",
4616 run: function(a, b, c) {
4617 const scene = Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig;
4618 scene.birdGravity = a;
4619 scene.birdSpeed = b;
4620 scene.birdFlapPower = c;
4621 scene.flap = function() {
4622 this.isStarted || (this.bird.body.gravity.y = this.birdGravity,
4623 this.pipeGroup.setVelocityX(-this.birdSpeed),
4624 this.groundGroup.setVelocityX(-this.birdSpeed),
4625 this.isStarted = !0),
4626 this.bird.body.velocity.y = -this.birdFlapPower
4628 scene.input._events.pointerdown = [];
4630 scene.input.keyboard.addKey('SPACE').on("down", e => {
4631 scene.flap.call(scene);
4637 name: "Always Triple",
4638 description: "Always get triple gold",
4643 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4644 e._choosePrize ||= e.choosePrize, this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
4645 e.choosePrize = function(t) {
4646 e.state.choices[t] = {
4649 text: "Triple Gold!",
4651 }, e._choosePrize(t)
4656 name: "Always Quintuple",
4657 description: "Always get quintuple gold",
4662 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4663 e._choosePrize ||= e.choosePrize, this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
4664 e.choosePrize = function(t) {
4665 e.state.choices[t] = {
4668 text: "Quintuple Gold!",
4669 blook: "Ice Elemental"
4670 }, e._choosePrize(t)
4675 name: "Auto Choose",
4676 description: "Automatically picks the option that would give you the most gold",
4682 this.enabled = false;
4683 clearInterval(this.data);
4686 this.enabled = true;
4687 this.data = setInterval(() => {
4690 } = Object.values((function react(r = document.querySelector("body>div")) {
4691 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4692 })())[1].children[0]._owner;
4694 if (stateNode.state.stage == "prize") {
4695 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
4696 if (players == null) return;
4697 players = Object.entries(players);
4701 for (let i = 0; i < players.length; i++) {
4702 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
4703 most = players[i][1];
4706 for (let i = 0; i < stateNode.state.choices.length; i++) {
4707 const choice = stateNode.state.choices[i];
4708 let value = stateNode.state.gold;
4709 if (choice.type == "gold") {
4710 value = stateNode.state.gold + (choice.val || 0);
4711 } else if (choice.type == "multiply" || choice.type == "divide") {
4712 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
4713 } else if (choice.type == "swap") {
4714 value = most || stateNode.state.gold;
4715 } else if (choice.type == "take") {
4716 value = stateNode.state.gold + (most * choice.val || 0);
4718 if ((value || 0) <= max) continue;
4722 document.querySelector("div[class*='choice" + index + "']")?.click();
4730 description: "Shows what each chest will give you",
4736 this.enabled = false;
4737 clearInterval(this.data);
4740 this.enabled = true;
4741 this.data = setInterval(() => {
4742 const cheat = (async () => {
4743 Object.values((function react(r = document.querySelector("body>div")) {
4744 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4745 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
4748 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
4749 if (!chest || chest.querySelector('div')) return;
4750 let choice = document.createElement('div')
4751 choice.style.color = "white";
4752 choice.style.fontFamily = "Eczar";
4753 choice.style.fontSize = "2em";
4754 choice.style.display = "flex";
4755 choice.style.justifyContent = "center";
4756 choice.style.transform = "translateY(200px)";
4757 choice.innerText = text;
4758 chest.append(choice)
4766 name: "Remove Lose 25%-50%",
4767 description: "Removes Lose 25%-50% chests",
4776 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
4778 e.enabled || t.enabled ? (clearInterval(e.data), clearInterval(t.data), e.data = null, t.data = null, e.enabled = !1, t.enabled = !1) : (e.enabled = !0, t.enabled = !0, e.data = setInterval(() => {
4779 document.querySelectorAll('div[role="button"]').forEach(e => {
4780 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
4782 }, 50), t.data = setInterval(() => {
4784 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled) try {
4785 if ("prize" === a().stateNode.state.stage) {
4788 } = a().stateNode.state, r = document.querySelector("div[class*='regularBody']").children[1];
4789 r && (document.querySelectorAll(".chest-esp").length ? o.forEach((e, t) => {
4790 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
4791 }) : o.forEach((e, t) => {
4792 (textElement = document.createElement("p")).className = "chest-esp", textElement.innerText = e.text, textElement.style = "text-align: center; font-size: 30px; color: white; font-family:Titan One, sans-serif; border-color: black; margin-top: 200px; opacity: 0;";
4794 r.children[t].appendChild(textElement)
4806 name: "Flood Alert Box",
4807 description: "Makes the alert box filled with text",
4812 run: function(userInput) {
4813 function getReactOwner() {
4814 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
4817 function repeatText(text, times) {
4818 return new Array(times).fill(text).join(" ");
4821 function setValForPlayer() {
4822 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
4825 const playerName = Object.keys(data)[0];
4829 const id = "1,723,583,989,363";
4830 const repeatedText = repeatText(userInput, 1700);
4831 const finalText = `${id}${repeatedText}`;
4833 setv(['tat', `${playerName}:${finalText}`]);
4835 console.log("No text entered. Operation cancelled.");
4838 console.log("Player not found!");
4843 function setv(args) {
4844 getReactOwner().stateNode.props.liveGameController.setVal({
4845 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
4846 val: args.slice(1, args.length).join(" ")
4853 name: "Reset Players Gold",
4854 description: "Sets a player's gold to 0",
4859 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4860 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4867 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4868 t.liveGameController.setVal({
4869 path: "c/".concat(t.client.name),
4879 description: "Sets amount of gold",
4885 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4889 }), t.props.liveGameController.setVal({
4890 path: "c/".concat(t.props.client.name),
4892 b: t.props.client.blook,
4899 description: "Swaps gold with someone",
4904 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4905 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4909 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4910 t.props.liveGameController.getDatabaseVal("c", a => {
4911 a?.[e] && (a = a[e].g, t.props.liveGameController.setVal({
4912 path: "c/".concat(t.props.client.name),
4914 b: t.props.client.blook,
4916 tat: e + ":swap:" + t.state.gold
4925 name: "Set Player's Gold",
4926 description: "Sets a players gold to any amount.",
4931 let e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
4932 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4938 run: (player, amount) => {
4939 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
4940 sn.props.liveGameController.setVal({
4941 path: `c/${sn.props.client.name}/tat`,
4942 val: `${player}:swap:${amount}`
4946 name: "Send Ad Text",
4947 description: "Sends a load of text to another player (This will override your blook!)",
4954 } = Object.values(function e(t = document.querySelector("body>div")) {
4955 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4956 }())[1].children[0]._owner;
4957 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
4962 run: async function(player, e) {
4965 } = Object.values(function e(t = document.querySelector("body>div")) {
4966 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4967 }())[1].children[0]._owner.stateNode;
4969 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
4970 t2.client.blook = repeatedText;
4971 t2.liveGameController.setVal({
4972 path: `c/${t2.client.name}/b`,
4975 t2.liveGameController.setVal({
4976 path: `c/${t2.client.name}/tat`,
4977 val: `${player}:196`
4981 name: "Reset All Players' Gold",
4982 description: "Set's everyone else's gold to 0",
4984 var e = document.createElement("iframe");
4985 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove();
4989 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, o = 0;
4990 t.liveGameController.getDatabaseVal("c", async e => {
4992 for (let r of Object.keys(e)) t.liveGameController.setVal({
4993 path: "c/".concat(t.client.name),
4999 }), o++, await new Promise(e => setTimeout(e, 4e3));
5000 alert(`Reset ${o} players' gold!`)
5004 name: "Crash Host (Gold)",
5005 description: "Crashes the Host's Game for Gold Quest",
5007 function reactHandler() {
5008 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5011 function setv(args) {
5012 reactHandler().stateNode.props.liveGameController.setVal({
5013 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
5014 val: args.slice(1, args.length).join(" ")
5023 description: "Shows you what will happen if you say Yes or No",
5029 this.enabled = false;
5030 clearInterval(this.data);
5033 this.enabled = true;
5034 this.data = setInterval((stats => {
5037 } = Object.values((function react(r = document.querySelector("body>div")) {
5038 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5039 })())[1].children[0]._owner;
5041 let elements = Array.prototype.reduce.call(
5042 document.querySelectorAll('[class*=statContainer]'),
5043 (obj, container, i) => (obj[stats[i]] = container, obj), {}
5046 if (stateNode.state.phase == "choice") {
5047 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
5049 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
5050 if (elements[x] == null) return;
5051 let element = document.createElement('div');
5052 element.className = 'choiceESP';
5053 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
5054 element.innerText = String(stateNode.state.guest.yes[x]);
5055 elements[x].appendChild(element);
5058 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
5059 if (elements[x] == null) return;
5060 let element = document.createElement('div');
5061 element.className = 'choiceESP';
5062 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
5063 element.innerText = String(stateNode.state.guest.no[x]);
5064 elements[x].appendChild(element);
5067 Array.prototype.forEach.call(
5068 document.querySelectorAll("[class*=guestButton][role=button]"),
5069 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove()))
5072 }), 50, ['materials', 'people', 'happiness', 'gold']);
5076 name: "Disable Tax Toucan",
5077 description: "Tax evasion",
5079 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
5083 description: "Sets all resources to the max",
5085 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5094 description: "Sets the amount of guests you've seen",
5100 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5106 description: "Skips the current guest",
5108 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
5112 name: "Instant Win",
5113 description: "Instantly Wins the race",
5115 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5117 progress: e.state.goalAmount
5123 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, a) => t.correctAnswers.includes(e) ? a : null).filter(e => null != e)[0]]?.click?.()
5128 name: "Set Questions",
5129 description: "Sets the number of questions left",
5134 run: function(progress) {
5137 } = Object.values((function react(r = document.querySelector("body>div")) {
5138 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5139 })())[1].children[0]._owner;
5140 progress = stateNode.props.client.amount - progress;
5141 stateNode.setState({
5144 stateNode.props.liveGameController.setVal({
5145 path: "c/".concat(stateNode.props.client.name),
5147 b: stateNode.props.client.blook,
5153 name: "Attack Player",
5154 description: "Sends the specified attack to a player",
5161 } = Object.values(function e(t = document.querySelector("body>div")) {
5162 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5163 }())[1].children[0]._owner;
5164 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5169 options: Object.entries({
5170 "Woosh(-1)": "wind",
5171 "Rocket(-1)": "rocket",
5174 }).map(([e, t]) => ({
5179 run: function(player, attack) {
5182 } = Object.values((function react(r = document.querySelector("body>div")) {
5183 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5184 })())[1].children[0]._owner;
5185 stateNode.props.liveGameController.setVal({
5186 path: `c/${stateNode.props.client.name}/tat`,
5187 val: player + ":" + attack
5192 name: "Toggle Invert Colors",
5193 description: "Toggle between inverting and restoring colors on the page",
5195 "invert()" == document.getElementsByTagName("html")[0].style.filter ? document.getElementsByTagName("html")[0].style.filter = "" : document.getElementsByTagName("html")[0].style.filter = "invert()", elems = document.querySelectorAll(" a, img, video");
5196 for (let e = 0; e < elems.length; e++)("A" == elems[e].nodeName && ("" != elems[e].style.background || "" != elems[e].style.backgroundImage) || "A" != elems[e].nodeName) && ("invert()" == elems[e].style.filter ? elems[e].style.filter = "" : elems[e].style.filter = "invert()")
5199 name: "Toggle Dark Mode",
5200 description: "Toggles Dark Mode",
5202 var e = document.createElement("iframe");
5203 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), ! function e() {
5204 let t = document.querySelectorAll("#nightify");
5205 if (t.length) t[0].parentNode.removeChild(t[0]);
5207 var a = document.getElementsByTagName("head")[0],
5208 o = document.createElement("style");
5209 o.setAttribute("type", "text/css"), o.setAttribute("id", "nightify"), o.appendChild(document.createTextNode(`html{-webkit-filter:invert(100%) hue-rotate(180deg) contrast(70%) !important; background: #222;} .line-content {background-color: #333;} html img{-webkit-filter:invert(100%) hue-rotate(0deg) contrast(100%) !important;}`)), a.appendChild(o)
5215 description: "Makes the page 3D",
5218 menu: document.createElement("div"),
5219 limit: document.createElement("input"),
5220 gap: document.createElement("input"),
5221 sag: document.createElement("input"),
5222 fov: document.createElement("input"),
5223 flo: document.createElement("input"),
5224 off: document.createElement("input"),
5225 non: document.createElement("input"),
5226 end: document.createElement("input"),
5227 tgl: document.createElement("input"),
5228 cssStatic: document.createElement("style"),
5229 cssDynamic: document.createElement("style"),
5235 mouseMove: function(t) {
5236 e.orientation.yaw = -(180 * Math.cos(Math.PI * t.clientX / innerWidth)) * e.limit.value, e.orientation.pitch = 180 * Math.cos(Math.PI * t.clientY / innerHeight) * e.limit.value, e.updateBody()
5238 gyroMove: function(t) {
5239 innerWidth > innerHeight ? (e.orientation.yaw = -(t.alpha + t.beta), e.orientation.pitch = t.gamma - 90 * Math.sign(90 - Math.abs(t.beta))) : (e.orientation.yaw = -(t.alpha + t.gamma), e.orientation.pitch = t.beta - 90), e.updateBody()
5241 updateOrigin: function(e) {
5242 document.body.style.transformOrigin = innerWidth / 2 + pageXOffset + "px " + (innerHeight / 2 + pageYOffset) + "px"
5244 updateBody: function() {
5245 document.body.style.transform = "perspective(" + Math.pow(2, e.fov.value) + "px) translateZ(-" + e.gap.value + "px) rotateX(" + e.orientation.pitch + "deg) rotateY(" + e.orientation.yaw + "deg)"
5247 updateCSS: function() {
5248 if (e.non.checked) e.cssDynamic.innerHTML = "";
5249 else if (e.off.checked) e.cssDynamic.innerHTML = "* { transform-style: preserve-3d; }";
5251 for (var t = 0; document.querySelector("body" + " > *".repeat(t)); t++);
5252 var a = e.gap.value / t,
5253 o = -Math.PI * e.sag.value / t;
5254 e.cssDynamic.innerHTML = ` * { transform: translateZ(${a}px) rotateX(${o}rad); transform-style: preserve-3d; transition: transform 1s; outline: 1px solid rgba(0, 0, 0, 0.0625); ${e.flo.checked?"overflow: visible !important;":""} } *:hover { transform: translateZ(${2*a}px) rotateX(${2*o}rad); ${e.flo.checked?"":"overflow: visible;"} } `
5257 toggle: function() {
5258 "active" == e.menu.className ? e.menu.removeAttribute("class") : e.menu.className = "active"
5261 window.removeEventListener("deviceorientation", e.gyroMove), window.removeEventListener("mousemove", e.mouseMove), window.removeEventListener("scroll", e.updateOrigin), window.addEventListener("resize", e.updateOrigin), e.menu.remove(), e.cssStatic.remove(), e.cssDynamic.remove(), document.body.removeAttribute("style")
5263 newRange: function(t, a, o, r, i, n, s) {
5264 e.menu.appendChild(t), t.type = "range", t.min = o, t.max = i, t.step = r, t.value = n, t.addEventListener("input", s), e.menu.appendChild(document.createElement("span")).innerHTML = a, e.menu.appendChild(document.createElement("br"))
5266 newCheckbox: function(t, a, o) {
5267 e.menu.appendChild(t), t.type = "checkbox", t.addEventListener("click", o), e.menu.appendChild(document.createElement("span")).innerHTML = a, e.menu.appendChild(document.createElement("br"))
5269 newButton: function(t, a, o) {
5270 e.menu.appendChild(t), t.type = "button", t.value = a, t.addEventListener("click", o)
5273 document.body.parentNode.appendChild(e.menu).id = "tri-menu", e.newRange(e.limit, "limit", 0, .03125, 1, .125, e.updateBody), e.newRange(e.gap, "gap / distance", 0, 32, 512, 128, function() {
5274 e.updateCSS(), e.updateBody()
5275 }), e.newRange(e.sag, "sag", -.25, .03125, .25, 0, e.updateCSS), e.newRange(e.fov, "field of view", 7, 1, 13, 10, e.updateBody), e.newCheckbox(e.flo, "force overflow", e.updateCSS), e.flo.setAttribute("checked", ""), e.newCheckbox(e.off, "flatten layers", e.updateCSS), e.newCheckbox(e.non, "flatten everything", e.updateCSS), e.newButton(e.end, "Quit", e.quit), e.newButton(e.tgl, "≡", e.toggle), e.tgl.id = "tri-toggle", e.menu.appendChild(e.cssStatic).innerHTML = " html, body { transition-property: none; height: 100%25; width: 100%25; } html, html:hover, #tri-menu, #tri-menu > *, #tri-menu > *:hover { transform: none; outline: none; overflow: auto !important; float: none; } #tri-menu { position: fixed; top: 0; left: 0; background: rgba(0, 0, 0, 0.5); color: white; border: 1px solid rgba(255, 255, 255, 0.5);; border-radius: 0 0 16px 0; padding: 8px; transform: translate(-100%25, -100%25) translate(32px, 32px); } #tri-menu.active { transform: none; } #tri-toggle { position: absolute; bottom: 0; right: 0; height: 32px; width: 32px; background: transparent; color: white; border: none; cursor: pointer; } #tri-menu.active > #tri-toggle { background: white; color: black; border-radius: 8px 0 0 0; }", e.menu.appendChild(e.cssDynamic), e.updateCSS(), window.addEventListener("deviceorientation", e.gyroMove), window.addEventListener("mousemove", e.mouseMove), window.addEventListener("scroll", e.updateOrigin), window.addEventListener("resize", e.updateOrigin), window.scrollBy(0, 1)
5281 name: "History Flooder",
5282 description: "Floods browser history with specified amount of entries",
5289 done = !1, C = window.location.href;
5290 for (var a = 1; a <= t; a++) history.pushState(0, 0, a == t ? C : a.toString()), a == t && (done = !0);
5291 !0 === done && alert("History flood successful! " + window.location.href + " now appears in your history " + t + (1 == t ? " time." : " times. "))
5294 name: "Auto Clicker",
5295 description: "Automatically clicks for you. Press S to toggle.",
5297 name: "Click Delay",
5300 run: function(inputs) {
5304 let clickInterval = null;
5305 let clickingEnabled = true;
5311 const milliseconds = Number.parseInt(inputs, 10);
5313 if (false === Number.isSafeInteger(milliseconds)) {
5314 self.alert("Input was not an integer");
5324 function startClicking() {
5325 clickInterval = self.setInterval(() => {
5326 document.elementFromPoint(clientX, clientY)?.click?.();
5330 function stopClicking() {
5331 self.clearInterval(clickInterval);
5332 clickInterval = null;
5337 document.addEventListener("mousemove", event => {
5346 self.addEventListener("keydown", event => {
5347 if (event.key === "s") {
5348 if (clickingEnabled) {
5353 clickingEnabled = !clickingEnabled;
5359 name: "Tab Cloaker",
5360 description: "Changes the tab image and name",
5368 run: function(e, t) {
5369 var a = document.querySelector("link[rel*='icon']") || document.createElement("link");
5370 a.type = "image/x-icon", a.rel = "shortcut icon", a.href = e || "https://www.blooket.com/favicon.ico", document.getElementsByTagName("head")[0].appendChild(a), document.title = t || "Blooket"
5374 name: "Host Any Gamemode",
5375 description: "Change the selected gamemode on the host settings page",
5379 options: ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"]
5382 let t = document.createElement("iframe");
5383 if (document.body.append(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), "/host/settings" != location.pathname) return alert("Run this script on the host settings page");
5386 } = Object.values(function e(t = document.querySelector("body>div")) {
5387 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5388 }())[1].children[0]._owner;
5396 name: "Toggle Spooky Theme",
5397 description: "Toggles the spooky theme for Gold Quest",
5400 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5401 sn.season = sn.season ? 0 : 1;
5406 name: "Freeze Timer",
5407 description: "Makes the host timer stop ingame",
5412 } = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner;
5413 clearInterval(stateNode.timerInterval);
5414 stateNode.timerInterval = setInterval(function() {
5415 stateNode?.getClients?.(!1);
5420 name: "Render Hours on Host Timer",
5421 description: "Renders hours on host timer(use with remove host time limit). Can only render up to 24 hours.",
5424 const format = "HH:mm:ss";
5425 const reg = '/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g';
5426 if (!RegExp.prototype.tes) {
5427 RegExp.prototype.tes = RegExp.prototype.test;
5429 RegExp.prototype.test = function(a) {
5430 if (a == "mm:ss" && this.toString() == reg) {
5433 return RegExp.prototype.tes.apply(this, arguments);
5435 if (!String.prototype.rep) {
5436 String.prototype.rep = String.prototype.replace;
5438 String.prototype.replace = function(a, b) {
5439 if (this == "mm:ss" && a.toString() == reg) {
5442 return String.prototype.rep.apply(this, arguments);
5447 name: "View Lobbychat Logs",
5448 description: "View messages players type in chat",
5450 function reactHandler() {
5451 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5454 document.addEventListener("keydown", function(e) {
5455 if (e.key === "Shift" && e.code === "ShiftRight") {
5456 c.style.display = c.style.display === "none" ? "block" : "none";
5460 const c = document.createElement("div");
5461 c.className = "chat-box";
5462 document.body.appendChild(c);
5463 const h = document.createElement("div");
5464 h.className = "chat-header";
5465 h.textContent = "Chat Logs (RSHIFT to hide)";
5467 const b = document.createElement("div");
5468 b.className = "chat-body";
5472 const t = document.createElement("div");
5475 b.scrollTop = b.scrollHeight;
5478 c.style.position = "fixed";
5479 c.style.bottom = "20px";
5480 c.style.right = "20px";
5481 c.style.width = "300px";
5482 c.style.height = "400px";
5483 c.style.backgroundColor = "#fff";
5484 c.style.border = "1px solid #ccc";
5485 c.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)";
5486 c.style.display = "block";
5488 b.style.height = "360px";
5489 b.style.overflowY = "scroll";
5490 b.style.padding = "10px";
5492 h.addEventListener("click", () => {
5493 b.classList.toggle("open");
5496 var da = reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
5498 function handleChat(e, t) {
5500 if (e.includes("/msg")) {
5501 t?.msg && (console.log(t.msg), a(e.split("/")[2] + ": " + t.msg));
5506 reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, n) {
5507 console.log(e, t, a, n);
5512 window.logsv = false;
5516 a("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ((typeof e.val === 'object') ? JSON.stringify(e.val) : e.val));
5520 var orgsv = reactHandler().stateNode.props.liveGameController.setVal;
5521 reactHandler().stateNode.props.liveGameController.setVal = function() {
5522 onsv.apply(this, arguments);
5523 orgsv.apply(this, arguments);
5526 reactHandler().stateNode.props.liveGameController._liveApp.database().ref(`${reactHandler().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {});
5527 a("Lobbychat successfully loaded!");
5530 c.style.wordWrap = "break-word";
5536 name: "Remove Host Time Limit",
5537 description: "Removes the host time limit",
5540 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5541 sn.onAmountUpdate = function(t) {
5542 let settings = sn.state.settings;
5543 settings.amount = parseInt(t.target.value);
5551 name: "Free Player Slots",
5552 description: "Allows more players to join if the game is full",
5554 let i = document.createElement('iframe');
5555 document.body.append(i);
5556 const alert = i.contentWindow.alert.bind(window);
5558 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5559 const players = await stateNode.props.liveGameController.getDatabaseVal("c");
5561 if (!stateNode.state.blockedUsers) {
5562 stateNode.state.blockedUsers = [];
5564 async function wait(time) {
5565 return new Promise(e => {
5566 setTimeout(e, time);
5569 async function blockUser(name) {
5570 if (stateNode.state.blockedUsers.includes(name)) {
5573 const res = await fetch("https://fb.blooket.com/c/firebase/block", {
5575 "Content-Type": "application/json"
5578 body: JSON.stringify({
5579 g: stateNode.props.host.id,
5582 credentials: "include"
5584 if (res.status !== 200) {
5587 stateNode.state.blockedUsers.push(name);
5589 if (freed % parseInt("15") == 0) {
5592 C.alerts?.[0].addLog("Freed user: " + name);
5594 for (let i in players) {
5597 alert(`Freed slots: ${freed}`);
5600 name: "Realtime Updates",
5601 description: "Makes leaderboard updates happen in real-time.",
5603 const stateNode = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
5604 (await stateNode().props.liveGameController.getDatabaseRef("")).on("value", e => stateNode()?.getClients?.(!1));
5608 description: "Prevents bots from flooding the game",
5616 this.enabled = true;
5617 this.data = setInterval(async () => {
5618 var iframe = document.createElement("iframe");
5619 document.body.append(iframe);
5620 window.confirm = iframe.contentWindow.confirm.bind(window);
5621 iframe.style.display = "none";
5624 let stateNode = Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode;
5625 var dbRef = await stateNode.props.liveGameController.getDatabaseRef("c");
5626 let currentClients = {},
5629 dbRef.on("value", snapshot => {
5630 var clients = snapshot.val() || {};
5631 var newClients = [];
5633 for (const key in clients) {
5634 if (!currentClients[key]) {
5635 newClients.push(key);
5636 clientCounts[key.replace(/[0-9]/g, "")] = (clientCounts[key.replace(/[0-9]/g, "")] || 0) + 1;
5640 currentClients = clients;
5642 for (const client of newClients) {
5643 if (currentClients[client].g || clientCounts[client.replace(/[0-9]/g, "")] > 1) {
5644 stateNode.props.liveGameController.blockUser(client);
5645 clientCounts[client.replace(/[0-9]/g, "")]--;
5650 console.error("An error occurred", error);
5655 name: "Enable Mobile Hosting",
5656 description: "Makes it so that you can host on mobile",
5659 var metaViewport = document.querySelector('meta[name="viewport"]');
5661 metaViewport.parentNode.removeChild(metaViewport);
5663 var newMetaViewport = document.createElement('meta');
5664 newMetaViewport.name = 'viewport';
5665 newMetaViewport.content = 'width=1280, initial-scale=1';
5666 document.head.appendChild(newMetaViewport);
5670 name: "Kick All Players",
5671 description: "Kicks all players from your game.",
5673 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5674 const db = await sn.props.liveGameController.getDatabaseVal("");
5675 sn.props.liveGameController.setVal({
5677 val: Object.keys(db.c).reduce((a, b) => (a[b] = 1, a), db.bu ? db.bu : {})
5679 sn.props.liveGameController.setVal({
5686 name: "Auto Answer (Toggle)",
5687 description: "Toggles auto answer on",
5692 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
5693 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5694 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
5698 name: "Auto Answer",
5699 description: "Chooses the correct answer for you. Will answer with the time provided.",
5701 name: "Time (milliseconds)",
5707 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5708 stateNode.startTime = performance.now() - a;
5709 stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
5714 description: "Sets amount of blooks you or your team has",
5720 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5723 }), t.isTeam ? t.props.liveGameController.setVal({
5724 path: `a/${t.props.client.name}/bs`,
5726 }) : t.props.liveGameController.setVal({
5727 path: `c/${t.props.client.name}/bs`,
5732 name: "Set Defense",
5733 description: "Sets amount of defense you or your team has (Max 4)",
5735 name: "Defense (max 4)",
5740 var e = Math.min(e, 4),
5741 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5744 }), t.isTeam ? t.props.liveGameController.setVal({
5745 path: `a/${t.props.client.name}/d`,
5747 }) : t.props.liveGameController.setVal({
5748 path: `c/${t.props.client.name}/d`,
5753 name: "Freeze Host :)",
5754 description: "They aint coming back with this one",
5756 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
5757 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5759 numBlooks: largeNumber
5762 t.props.liveGameController.setVal({
5763 path: `a/${t.props.client.name}/bs`,
5767 t.props.liveGameController.setVal({
5768 path: `c/${t.props.client.name}/bs`,
5775 name: "Remove Distractions",
5776 description: "Removes all enemy distractions",
5778 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5786 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
5790 name: "Send Distraction",
5791 description: "Sends a distraction to everyone else playing",
5793 name: "Distraction",
5795 options: Object.entries({
5805 }).map(([e, t]) => ({
5811 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5812 t.safe = !0, t.props.liveGameController.setVal({
5813 path: `c/${t.props.client.name}/tat`,
5819 description: "Sets amount of toys",
5825 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5828 }), t.props.liveGameController.setVal({
5829 path: "c/".concat(t.props.client.name),
5831 b: t.props.client.blook,
5837 name: "Set Toys Per Question",
5838 description: "Sets amount of toys per question",
5840 name: "Toys Per Question",
5844 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5850 description: "Swaps toys with someone",
5855 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5856 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5860 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5861 t.props.liveGameController.getDatabaseVal("c", a => {
5863 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
5865 }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.props.liveGameController.setVal({
5866 path: "c/".concat(t.props.client.name),
5868 b: t.props.client.blook,
5870 tat: a + ":swap:" + t.state.toys
5879 name: "Import Settings",
5880 description: "Import a custom theme",
5889 return alert("Invalid JSON provided")
5892 backgroundColor: "rgb(11, 194, 207)",
5893 infoColor: "#9a49aa",
5894 cheatList: "#9a49aa",
5895 defaultButton: "#9a49aa",
5896 disabledButton: "#A02626",
5897 enabledButton: "#47A547",
5899 inputColor: "#7a039d",
5900 contentBackground: "rgb(64, 17, 95)",
5902 }, c.setItem("theme", e), e) p.sheet.cssRules[0].style.setProperty("--" + a, e[a])
5905 name: "Export Settings",
5906 description: "Export the current theme to JSON",
5907 run: async function() {
5908 await navigator.clipboard.writeText(JSON.stringify(c.data.theme, null, 4)), prompt("Text copied to clipboard. (Paste below to test)")
5912 description: "Changes all the settings to a preset",
5919 backgroundColor: "rgb(11, 194, 207)",
5920 infoColor: "#9a49aa",
5921 cheatList: "#9a49aa",
5922 defaultButton: "#9a49aa",
5923 disabledButton: "#A02626",
5924 enabledButton: "#47A547",
5926 inputColor: "#7a039d",
5927 contentBackground: "rgb(64, 17, 95)"
5930 name: "Landscapes (Random)",
5932 backgroundColor: "url(https://source.unsplash.com/1600x900/?landscape)",
5933 infoColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5934 cheatList: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5935 defaultButton: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5936 disabledButton: "linear-gradient(rgba(225, 0, 0, 0.3), rgba(225, 0, 0, 0.3))",
5937 enabledButton: "linear-gradient(rgba(0, 128, 0, 0.3), rgba(0, 128, 0, 0.3))",
5939 inputColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5940 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
5945 backgroundColor: "#4f4f4f",
5946 infoColor: "#2f2f2f",
5947 cheatList: "#2f2f2f",
5948 defaultButton: "#4f4f4f",
5949 disabledButton: "#eb6234",
5950 enabledButton: "#00c20c",
5952 inputColor: "#3f3f3f",
5953 contentBackground: "#2f2f2f"
5958 backgroundColor: "url(https://i.ibb.co/6vvdq3f/ploopit.png)",
5959 infoColor: "#3C75F5",
5960 cheatList: "#204DD0",
5961 defaultButton: "#204DD0",
5962 disabledButton: "#A02626",
5963 enabledButton: "#47A547",
5965 inputColor: "#3f3f3f",
5966 contentBackground: "#3C75F5"
5971 backgroundColor: "url(https://i.ibb.co/8bkDpCn/GIFMaker-me.gif)",
5972 infoColor: "#282828",
5973 cheatList: "#282828",
5974 defaultButton: "white",
5975 disabledButton: "#9D0000",
5976 enabledButton: "#013220",
5979 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
5984 backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",
5985 cheatList: "#1e2124",
5986 infoColor: "#1e2124",
5987 defaultButton: "#36393e",
5988 inputColor: "#1e2124",
5989 enabledButton: "#9c9a9a",
5991 disabledButton: "#171717",
5992 contentBackground: "#292929"
5995 name: "Blue - Purple Background",
5997 backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"
6000 name: "Saint Patricks Background",
6002 backgroundColor: "rgb(9, 148, 65)"
6005 name: "Halloween Background",
6007 backgroundColor: "rgb(41, 41, 41)"
6010 name: "Fall Background",
6012 backgroundColor: "rgb(224, 159, 62)"
6015 name: "Winter Background",
6017 backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"
6020 name: "Crypto Hack",
6022 backgroundColor: "radial-gradient(#11581e,#041607)",
6023 infoColor: "#1a1a1a",
6024 cheatList: "#1a1a1a",
6025 defaultButton: "rgb(88 175 88)",
6026 disabledButton: "#A02626",
6027 enabledButton: "#0b601b",
6029 inputColor: "rgb(0 0 0 / 25%)",
6030 contentBackground: "#11581e"
6033 name: "Fishing Frenzy",
6035 backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",
6036 infoColor: "#c8591e",
6037 cheatList: "#c8591e",
6038 defaultButton: "#ff751a",
6039 disabledButton: "#bf0e0e",
6040 enabledButton: "#2fb62f",
6042 inputColor: "rgb(0 0 0 / 25%)",
6043 contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"
6046 name: "Deceptive Dinos",
6048 backgroundColor: 'radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url("https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png"), #ead49a',
6049 infoColor: "#af8942",
6050 cheatList: "#af8942",
6051 defaultButton: "#af8942",
6052 disabledButton: "#A02626",
6053 enabledButton: "#47A547",
6055 inputColor: "rgb(0 0 0 / 10%)",
6056 contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"
6061 backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",
6062 defaultButton: "#36c",
6063 inputColor: "rgb(0 0 0 / 25%)",
6066 contentBackground: "#888",
6068 disabledButton: "#A02626",
6069 enabledButton: "#47A547"
6074 defaultButton: "#1563bf",
6075 infoColor: "#a5aabe",
6076 cheatList: "#a5aabe",
6077 contentBackground: "#2d313d",
6078 backgroundColor: "#3a3a3a",
6079 enabledButton: "rgb(75, 194, 46)",
6080 disabledButton: "#9a49aa",
6081 inputColor: "rgb(0 0 0 / 25%)",
6087 backgroundColor: "linear-gradient(90deg,rgba(200,0,0,.5) 50%,transparent 0) center / 50px 50px,linear-gradient(rgba(200,0,0,0.5) 50%,transparent 0) white center / 50px 50px",
6088 defaultButton: "#0bc2cf",
6089 inputColor: "rgb(0 0 0 / 25%)",
6090 infoColor: "#ac7339",
6091 cheatList: "#ac7339",
6092 contentBackground: "rgb(64, 64, 64)",
6094 disabledButton: "#A02626",
6095 enabledButton: "#47A547"
6098 name: "Tower of Doom",
6100 backgroundColor: "rgb(41 41 41)",
6101 disabledButton: "rgb(151, 15, 5)",
6102 defaultButton: "#333",
6103 inputColor: "rgb(0 0 0 / 25%)",
6104 contentBackground: "#404040",
6105 enabledButton: "#4bc22e",
6107 infoColor: "#9a49aa",
6108 cheatList: "#9a49aa"
6111 name: "Monster Brawl",
6113 defaultButton: "rgb(45, 51, 67)",
6114 backgroundColor: "rgb(78, 95, 124)",
6115 inputColor: "rgb(0 0 0 / 25%)",
6116 contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",
6117 infoColor: "#374154",
6118 cheatList: "#374154",
6120 enabledButton: "#47A547",
6121 disabledButton: "#A02626"
6124 name: "Tower Defense 2",
6126 backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",
6127 cheatList: "#a33c22",
6128 infoColor: "#a33c22",
6129 defaultButton: "#40b1d8",
6130 inputColor: "#3e8cbe",
6131 contentBackground: "#293c82",
6132 enabledButton: "#47A547",
6133 disabledButton: "#A02626",
6139 for (let t in c.setItem("theme", {
6142 }), e) p.sheet.cssRules[0].style.setProperty("--" + t, e[t])
6146 description: "Forces the GUI to scale from 25%-100%",
6149 name: "Percent scale",
6152 value: 100 * (c.data.scale || 1)
6155 e = Math.min(Math.max(e, 25), 100), c.setItem("scale", e / 100), _.style.transform = `scale(${e/100})`
6158 name: "Hide Keybind",
6159 description: "Change the hide keybind (Click button after input to change)",
6168 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6171 c.setItem("hide", e), m.update(c.data.hide || {
6174 }, c.data.close || {
6180 name: "Close Keybind",
6181 description: "Change the quick close keybind (Click button after input to change)",
6190 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6193 c.setItem("close", e), m.update(c.data.hide || {
6196 }, c.data.close || {
6202 name: "Background Color",
6203 description: "Changes the background color of the GUI",
6209 p.sheet.cssRules[0].style.setProperty("--backgroundColor", e), c.setItem("theme.backgroundColor", e)
6212 name: "Category List Color",
6213 description: "Changes the categories list background color",
6219 p.sheet.cssRules[0].style.setProperty("--cheatList", e), c.setItem("theme.cheatList", e)
6223 description: "Changes the color of the information at the top of the GUI",
6229 p.sheet.cssRules[0].style.setProperty("--infoColor", e), c.setItem("theme.infoColor", e)
6232 name: "Button Color",
6233 description: "Changes the color of the cheats",
6239 p.sheet.cssRules[0].style.setProperty("--defaultButton", e), c.setItem("theme.defaultButton", e)
6242 name: "Enabled Toggle Color",
6243 description: "Changes the color of enabled toggle cheats",
6249 c.setItem("theme.enabledButton", e)
6252 name: "Disabled Toggle Color",
6253 description: "Changes the color of disabled toggle cheats",
6259 p.sheet.cssRules[0].style.setProperty("--disabledButton", e), c.setItem("theme.disabledButton", e)
6263 description: "Changes the text color",
6269 p.sheet.cssRules[0].style.setProperty("--textColor", e), c.setItem("theme.textColor", e)
6272 name: "Input Color",
6273 description: "Changes the color of inputs, like the set gold number input",
6279 p.sheet.cssRules[0].style.setProperty("--inputColor", e), c.setItem("theme.inputColor", e)
6282 name: "Content Color",
6283 description: "Changes the background color of the cheats",
6289 p.sheet.cssRules[0].style.setProperty("--contentBackground", e), c.setItem("theme.contentBackground", e)
6294 className: "alertContainer",
6296 margin: "15px 15px 5px 15px",
6297 backgroundColor: "rgb(0 0 0 / 50%)",
6300 borderRadius: "7px",
6302 alignItems: "center",
6303 justifyContent: "center"
6306 className: "alertList",
6308 margin: "10px 10px 0 10px",
6310 listStyleType: "none",
6312 flexDirection: "column-reverse",
6314 overflowY: "scroll",
6315 wordWrap: "break-word"
6323 color: "var(--textColor)"
6325 innerText: "[LOG] GUI opened"
6328 return this.element.firstChild.prepend(l("li", {
6334 color: t || "var(--textColor)"
6336 innerHTML: "[LOG] " + e
6340 return this.element.firstChild.prepend(l("li", {
6344 }, l("strong", {}, e), " ", a))
6348 updateLeaderboard(e) {
6354 of(this.leaderboardEl || this.addLeaderboard(), this.leaderboard.innerHTML = "", e)) {
6355 this.leaderboard.append(l("li", {
6358 paddingInline: "15px 15px",
6359 paddingBlock: "1.25px",
6360 position: "relative",
6361 borderBottom: "2px solid orange",
6362 color: (a === Object.values(document.querySelector("#app>div>div"))?.[1]?.children?.[0]?._owner?.stateNode?.props?.client?.name) ? "#00FF00" : "#FFFFFF"
6365 innerText: this.parseNumber(parseInt(o)),
6372 parseNumber(e = 0) {
6374 if (e < 1e3) return t.toString();
6375 var a = ["", "K", "M", "B", "T"],
6376 o = Math.floor((e.toString().length - 1) / 3);
6379 for (let i = 3; 1 <= i && !((r = parseFloat((0 !== o ? e / Math.pow(1e3, o) : e).toPrecision(i))).toString().replace(/[^a-zA-Z 0-9]+/g, "").length <= 3); i--);
6380 t = (r = r % 1 != 0 ? r.toFixed(1) : r) + a[o]
6384 for (; 100 <= n; s++) n = Math.floor(n / 10);
6386 var c = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"];
6387 for (let d of (s + 1).toString().split("")) l += c[Number(d)];
6388 t = n / 10 + " \xd7 10" + l
6393 this.leaderboardEl = l("div", {
6394 className: "alertContainer",
6396 margin: "15px 15px 5px 15px",
6397 backgroundColor: "rgb(0 0 0 / 50%)",
6400 borderRadius: "7px",
6402 alignItems: "center",
6403 justifyContent: "center"
6405 }, this.leaderboard = l("nl", {
6406 className: "alertList",
6410 listStyleType: "decimal",
6413 overflowY: "scroll",
6414 wordWrap: "break-word"
6417 insertElemBefore("Leaderboard", "https://i.ibb.co/hZQjjVP/trophy-icon.webp", [{
6418 element: this.leaderboardEl
6419 }], !0, h.children[3]);
6420 this.addLog("Leaderboard Loaded!");
6424 var e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6425 if (!e?.props?.liveGameController?._liveGameCode) return !1;
6426 this.connection = await e.props.liveGameController.getDatabaseRef("");
6428 a = this.getGamemode(),
6443 this.connection.on("value", e => {
6444 var r = e.val()?.c || {};
6445 if (r && this.diffObjects(this.data, r)) {
6446 var i, n, s, l, c, d, p, u, h = this.diffObjects(this.data, r);
6449 switch (this.getGamemode()) {
6451 m = Object.entries(r).map(([e, {
6461 m = Object.entries(r).map(([e, {
6471 m = Object.entries(r).map(([e, {
6481 m = Object.entries(r).map(([e, {
6491 m = Object.entries(r).map(([e, {
6501 m = Object.entries(r).map(([e, {
6512 m = Object.entries(r).map(([e, {
6522 for (let $ in h) h[$].tat?.split && ([i, n] = h[$].tat.split(":"), "swap" == n ? this.addAlert($, t[r[$].b]?.url, "just swapped with " + i) : this.addAlert($, t[r[$].b]?.url, `just took ${this.parseNumber(parseInt(n))} gold from ` + i));
6523 m = Object.entries(r).map(([e, {
6533 for (let g in h) h[g].tat?.split && ([s, l] = h[g].tat.split(":"), this.addAlert(g, t[r[g].b]?.url, `just took ${this.parseNumber(parseInt(l))} crypto from ` + s));
6534 m = Object.entries(r).map(([e, {
6544 for (let y in h) "Frenzy" == h[y].f ? this.addAlert(y, t[r[y].b]?.url, "just started a frenzy") : h[y].s && this.addAlert(y, t[r[y].b]?.url, `just sent a ${h[y].f} distraction`);
6545 m = Object.entries(r).map(([e, {
6555 for (let b in h) h[b].tat && ([c, d] = h[b].tat.split(":"), "true" == d ? this.addAlert(b, t[r[b].b]?.url, `just caught ${c} CHEATING!`) : this.addAlert(b, t[r[b].b]?.url, "investigated " + c));
6556 m = Object.entries(r).map(([e, {
6566 for (let v in h) h[v].up && ([p, u] = h[v].up.split(":"), u) && this.addAlert(v, t[r[v].b]?.url, `upgraded ${p} to level ` + u);
6567 m = Object.entries(r).map(([e, {
6579 k.g ? this.addAlert(_, t[r[_].b]?.url, `activated the ${o[k.g]} glitch!`) : k.s ? ([f, w] = k.s.split("-"), this.addAlert(_, t[r[_].b]?.url, `has a ${f} ${w} synergy!`)) : k.t && this.addAlert(_, t[r[_].b]?.url, "now has 10 Blooks!")
6581 m = Object.entries(r).map(([e, {
6590 this.updateLeaderboard(m.sort((e, t) => t.value - e.value));
6599 for (let r in e) r in t && ("object" == typeof e[r] && "object" == typeof t[r] ? (a = this.diffObjects(e[r], t[r])) && 0 !== Object.keys(a).length && (o[r] = a) : JSON.stringify(e[r]) !== JSON.stringify(t[r]) && (o[r] = t[r]));
6600 for (let i in t) i in e || (o[i] = t[i]);
6601 return 0 == Object.keys(o).length ? null : o
6604 if (Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props?.client?.type) {
6605 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props.client.type.toLowerCase();
6607 switch (window.location.pathname) {
6608 case "/play/racing":
6610 case "/play/extras":
6614 case "/play/pirate":
6616 case "/play/factory":
6618 case "/play/classic/get-ready":
6619 case "/play/classic/question":
6620 case "/play/classic/answer/sent":
6621 case "/play/classic/answer/result":
6622 case "/play/classic/standings":
6624 case "/play/battle-royale/match/preview":
6625 case "/play/battle-royale/question":
6626 case "/play/battle-royale/answer/sent":
6627 case "/play/battle-royale/answer/result":
6628 case "/play/battle-royale/match/result":
6638 case "/play/fishing":
6645 case "/tower/battle":
6649 case "/tower/victory":
6656 case "/play/defense2":
6670 e.onpointerdown = function(e = window.event) {
6671 r = e.clientX, i = e.clientY, document.onpointerup = function() {
6672 document.onpointerup = null, document.onpointermove = null
6673 }, document.onpointermove = function(e = window.event) {
6674 a = r - e.clientX, o = i - e.clientY, r = e.clientX, i = e.clientY, t.style.top = t.offsetTop - o + "px", t.style.left = t.offsetLeft - a + "px"
6678 w("Alerts", "https://i.ibb.co/hBNyCXG/559343-1.png", C.alerts, !0), w("Global", "https://i.ibb.co/gd4Qs8L/11507ef5615c554fe88fc22c86768501-simple-earth-icon-1.webp", C.global)(), w("Host", "https://i.ibb.co/QpDgysb/computer-1865273-1.png", C.host, !0), w('<span style="font-size: 18px">Pirate\'s Voyage</span>', "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxnIGlkPSJCb2F0Ij48cGF0aCBkPSJNMTcwLjQsNTYuMDU0Yy02OC43ODgsMTAuMTc0IC0xMTUuOTcxLDU2LjkzOCAtMTQ1LjQxMSwxMzMuNzVsMTUuNDY5LDcuNzM0YzMwLjk2MiwtMjguMTc1IDc0LjcwNSwtMzcuNzg3IDEzMi4zMjIsLTI3LjI1bDAsLTE3LjYxMWMtMjUuNjI5LC0yNy45NTIgLTI2Ljk2NiwtNTYuNzcyIDAuNzE0LC04Ni42MjhsLTMuMDk0LC05Ljk5NVoiIHN0eWxlPSJmaWxsOiNmNmUwYmQ7Ii8+PHBhdGggZD0iTTE5OS42NzMsNjAuODEzYzMyLjc4NCw0Mi45ODIgNjUuODIyLDkwLjg4NyA5Ny4zMzcsMTM5LjU4MWwtNi42NjMsMGMtMTIuMDg1LC0zMS4xMTEgLTU3Ljg4MiwtMzkuNjk0IC05MS42MjYsLTI3LjI1YzIyLjUxNCwtMzQuNTc5IDE3Ljc5NiwtNzIuNjczIDAuOTUyLC0xMTIuMzMxWiIgc3R5bGU9ImZpbGw6I2Y2ZTBiZDsiLz48cGF0aCBkPSJNNjkuNDQ4LDE5Ny41MzhjMCwwIC01OS43MDcsLTE1LjI0MyAtNjguMzk4LC0xNy40NjJjLTAuMDc2LC0wLjAxOSAtMC4xNTQsMC4wMiAtMC4xODQsMC4wOTJjLTAuMDMsMC4wNzIgLTAuMDAyLDAuMTU1IDAuMDY1LDAuMTk1YzkuNjgyLDUuNzc1IDkxLjY0Nyw1NC42NTggOTEuNjQ3LDU0LjY1OGwtMjMuMTMsLTM3LjQ4M1oiIHN0eWxlPSJmaWxsOiM4ZDZlNDE7Ii8+PHBhdGggZD0iTTE2NC40NSw0Ny45MDNjMCwtNS4zNTMgNC4zNDYsLTkuNjk4IDkuNjk4LC05LjY5OGwxOS4zOTcsLTBjNS4zNTIsLTAgOS42OTgsNC4zNDUgOS42OTgsOS42OThsLTAsMTU2Ljk1M2MtMCw1LjM1MyAtNC4zNDYsOS42OTggLTkuNjk4LDkuNjk4bC0xOS4zOTcsMGMtNS4zNTIsMCAtOS42OTgsLTQuMzQ1IC05LjY5OCwtOS42OThsMCwtMTU2Ljk1M1oiIHN0eWxlPSJmaWxsOiM3ZjY4NDU7Ii8+PHBhdGggZD0iTTI2My45OTMsMjU2LjEwM2MyMi4xNzEsLTE0LjcxIDM2LjAwNywtMzUuNTE1IDM2LjAwNywtNTguNTY1bC0yMzAuNTUyLDBjMCwyMy43MTMgMTQuNjQzLDQ1LjA1IDM3Ljk0LDU5LjgxOWM5Ljg3NSwtMy43MjkgMjAuMDQxLC0xMS4zMzQgMzAuNDYzLC0yMi4zMzZjMzIuODExLDM1LjQ1NSA2NC4wNjksMzUuOTQzIDkzLjcwOCwwYzYuODM4LDkuNjc3IDE3LjczNiwxNi42NDYgMzIuNDM0LDIxLjA4MloiIHN0eWxlPSJmaWxsOiNiNjkyNWY7Ii8+PC9nPjwvc3ZnPg==", C.voyage), w("Gold quest", "https://media.blooket.com/image/upload/v1661496292/Media/uiTest/Gold.svg", C.gold), w("Cafe", "https://i.ibb.co/t8pqdYL/hot-beverage-1.png", C.cafe), w("Crypto Hack", "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/CryptoIcon.svg", C.crypto), w('<span style="font-size: 17px">Deceptive Dinos</span>', "https://i.ibb.co/JFq5j88/Screenshot-2024-03-26-7-30-21-PM-removebg-preview-1.png", C.dinos), w('<span style="font-size: 18px">Tower Defense</span>', ['<img style="width: 30px; margin-right: 5px" src="https://media.blooket.com/image/upload/v1657235025/Media/survivor/Laser_Lvl1.svg">'], C.defense), w('<span style="font-size: 16px">Tower Defense 2</span>', ['<img style="width: 30px; margin-right: 5px; rotate: 45deg" src="https://media.blooket.com/image/upload/v1593095354/Media/defense/missile.svg">'], C.defense2), w("Factory", "https://i.ibb.co/VMrTd39/images-removebg-preview-1.png", C.factory), w('<span style="font-size: 19px">Fishing Frenzy</span>', "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Fish_Weight.svg", C.fishing), w("Flappy Blook", "https://media.blooket.com/image/upload/v1645222006/Blooks/yellowBird.svg", C.flappy), w('<span style="font-size: 17px">Tower of Doom</span>', ['<img style="height: 30px; margin-left: 5px; margin-right: 10px" src="https://media.blooket.com/image/upload/v1657235023/Media/survivor/cards-05.svg">'], C.doom), w('<span style="font-size: 18px">Crazy Kingdom</span>', "https://i.ibb.co/10mZ6dx/3763864-1.png", C.kingdom), w("Racing", "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Racing_Progress.svg", C.racing), w("Battle Royale", "https://media.blooket.com/image/upload/v1655936179/Media/br/VS_Lightning_Bolt_Bottom.svg", C.royale), w("Blook Rush", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAADdgAAA3YBfdWCzAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA7YSURBVHic7Z17tFxVfcc/e59zZib3kcfN456YQObOTB43PBIKoeIqSlwIBXwiCCytXe2qxabSWrAqLKmwXKthVRe2BFxitYpasSIPV0sI8mhV5GHVdpWaoCRIvAnZSW/uzeuG3Nec/jFzk8mYOXNm73PmeT7/zt6/s+/d399vv/cWnufRSSilZgEXAZcBl42MHF5m23KrlPJBKcU9mUx6pLElrC+iEwSglFpOscIpVH5q5rfh4YPH0wkBlmUNW5b8oZTyi9ls+ol6l7XetKUAyrz8ciBbKW2pAMqRUk62e3RoGwH4ebkffgIopV2jQ8sKoOjl6zlR6RW93I+gAiinGB22SSkfklJsatXo0FICUEqt4ESFv4WAXu6HrgBKKYkOPypGh+8bG60TTS0ApVQXJ3t5JuxvhCGAcorR4aVidLg7k0kPh/6RkGg6AUTh5X5EIYBSmj06NFwA9fByP6IWQDnNFh0aIgCl1EpO9vJk3QtRpN4CKKUYHfYXo8O92Wx6S93LUA8BFL38rZyo9IHIPxqQRgqgHCnlVEl02FSP6BCZAIpefjmFCn8zDfRyP5pJAKWURIdnin2HSKJDaAJQSnVzclveNF7uR7MKoJyy6HBPJpPeF4ZdIwEopVZxosKb1sv9aBUBlFIWHb6UzaY3a9uqRQBFLy9ty9O6H24WWlEA5RSjwy+llA8X+w6Bo0NVASilBjlR4RfSgl5+KiY9eP6g4IWhad7Xf4Qu2VzzIboUo8NISXR41De9nwCUUpcAj4ddyEaxaxyeHhU8PQLPHBSMTQP7FoHwWDBrnPPnjXFd/yHW9kw0uqihkUolbsnlBjZW+t2ukl+GXJ66MunBcwcFT48WKv7loxUSeoLhoyk2H02xefd8HHuK5b2v8/sLj3DNosOtHh0svx+rCaDlKPXyHx0UHJ2u3cbklM3W0V62jvZy58tu20YHaAMBTOTh+UMBvFwXn+hw9cLD9FgtHR1aUwBDx4pePlpoy3W8XJfy6DD/eHQ4zDk94/UrSEi0hAAm8vDcjJePCLa/3ugSFfEE+4+meOxoisd2z8dxCtHhkvmFvkMrRIemFcBvSrz8x3X2cl0mJ222jvSydaSXv9/uMr9rnHVzxri2/zDn9jZndGgaATStl+viCfaPpdgylmLLa80bHRoqgFIvf+aA4PV8I0sTLc0aHeoqgBkvf2qkUPE7Wt3LdSmPDvYUudmF6HBtnaND5ALYWdqWt7mX6zI5ZbNtpJdtI738w3aXvlnjrJtXiA7nRTyyiEwAvxiDP31J8kqnerkunmDkaIrHj6Z4vDjvsHHVHi7tC3uCo0BkU737JkRc+SEwOWXz6rgTmf2WnuuPMScWQIcTC6DDiQXQ4cQC6HBiAXQ4sQA6nFgAHU4sgA4nFkCHEwugw4kF0OHEAuhwYgF0OLEAOpxqAtDei2sL3Zwx5SQx2kY16fdjNQFob+mYazfHrtd2YFFCf0+8EOKw3+/VBKC9D2lu02w4b30WJ40ORRzw+zG6CBDdLqaO4w3JKZPsvjdgRBYBeq24HxAKAvodowhgJACjbZ1z4mbAGCHM9tELge8l1pEKIO4HmGNL44MUo34/VhPAEUD7RoR5sQCMSVjGAtjr96OvAFzX9YBdul+e68RDQVOSBgKQUk5mMmlfA0FmAod0CxA3AeZ02SYCEGNV0wSwoy2ABfFQ0Jg5tv4QUAjh2/5DxAI4o1s3Z8wMqw0OhwohVLU0kQpgTU/cBzDlonn6AzEhxM5qaYIIoKqRSmS7oMf3lroYP4TweNNsEwHwUrU0QQTwM90CSOCsHt3cMT3JSaPZVCnFg1XTVEvguu5e4BXdQsTNgD6ndx3TzlscAv5v1XQB7T2rW5A1cQTQZk2vvgAsSwaav4leAL1xBNBl/Tz9W0GklC8EShfQ3nO6BUmnYHY8IVQzQnqcP1t/CCileCRQuoD2XqSwLlAzgrgfoENvckJ7w6YQwhOCh4OkDfQN13WngUAh5VSc26ubs3PJdRu1/6OZTDrQIl4tItPuB7xzQRwBauUPFus/ZWNZ8hdB09ZFAIPdsKpLN3fnkXCmuNhsBjDw87S1COB5QNuVr1wUR4GgrOvT6m4dR0rxjcBpgyZ0XfcAsE2rRMB7FnrEWwSD8eElVRfxKmJZcjyTSQeevq+1o6ndDCxNwrrZurk7h57khNGzNJYlX60lfa0C+GGN6U/iyoVxM1CNCxf4nuOoipTyP2pKX6P9h4Gqu0wq8Y4FXrxV3A8BG5b6nuPwzy4EUopP15KnJgG4rnsEeKCmUpXQ58BF8+IoUIm+WcdIGxwCsW1reyaT9t0EWo7OZNNXNfIc5z0LTXK3N5cuNAv/ti3vqjWP1uPRSqmXgVzNGSk8GvHGn0n2NMsTOvsWNboEAFjWNM+8cYf2YxFSysnVq5cnas6n9TX4mmY+EhI+elrcDJRzqXvA6KUQx7F+oJNPVwD3gf6h9ev6PZa2xRPU4WBZ09w+sN/IhpTyFq18Oplc190FPKGTF8ARcRQo5YrFB0gZvE9s29ZwNpv+T528JlfE/JNBXq7p91iWMrHQHtjWNJ9Om3m/bVvf1M1rIoDvgf/JUz9sATeeHkeBdy0ZIWHg/UIIr9axfynaAnBddxz4lm5+gPcu9MjMMrHQ2jj2FJ9Ka/tQwYZjvZjJpA/p5je9JcyoGbAE3NTBUeDKJaPGz7ZZlnWHSX6teYBSlFI/B87RzZ8H1v9c8qtoXkWrToPmARL2FC9csMNoatyy5OuDg8uNdlqEcU/graYF+Gwu33EXFv51bq/xuojj2H9nWg7j/7vruo8CT5rYOH82/NnSzmkKzpp/iGsXmW36sG1rJJcbuM20LGE53k0YTAwBfGKZx+oOOE2cdCb58mDVQ7tVcRz7+hCKE44AXNf9Hww7hI6ATSvyOG29XOyxcdUeugyGfQCJhP3LbDb93TBKFGbT+ynAaDlrdTd8fFn7NgW/13+Atxls9oTCuN+2ratCKlJ4AigeIjUakgBsWOq15dax7tQEm1bsM7aTSNhPBjn0GZSwO993Ar8xMSApNAXd7XSvgPC4e/Vrxr1+KeWUZcn3hVOoos0wjbmuewz4pKmdZSm4baB9moK3LxnhPIOrXmZIJOwvZjJp/T1jpyCK4fe3MThGNsMHXI9r+ltfBKfPHmNjZtjYjm1bR6QUfxlCkU4idAEU7xa8MQxbn8t5XNzXuiLo6zrGw2fvDsWW49gfq3bnnw6RTMC5rvss8B1TO7aAL63yOK8FD5d2Jyf43toho5W+GRzHHspm0/eGUKzfIsoZ2I9S5ZrSIMyS8I0z8qxoobOFCXuKB9YOMdfgkscZpBR527beGUKxTm0/KsOu6+4BrsPg2ZkZ5trw7TPyvKEFtpFZ1jT3rRniNLM7/o+TTDofy2bT/x2KsVMQ6RqM67r/juFi0QyLkwURNPP1s0LkuevM3ZzZrX+0q5Rk0vl+Njvw+VCMVaAei3B3AP8WhqHlXYXmYFYzLh0Kj79ZtYc3zzGb6ZvBcay9liUvC8WYD5H/K4ujgg8Cr4Zh77xe+PKgR6qZRCA8PpLby1ULzVb4ZpBSTjmOfUEUvf7f+lbUHwBwXXcUuBoI5TjIW+d5PHJ2nv6aj0GEj5R5/nb1Lq43uNGjFCEgmXT+OJNJ/zoUg1Womx+5rvtTCiODUFjTA4+tyTf0QupUYpJ/Pmcn75gf3namRCJxfzabDnzBgynGW8JqRSn1TeD9Ydk7Og1//ivBlv2aE+2aW8IWdB/jwbN30Wf2oNNJOI796sqV2YHQDAagES3p9UDgS4yq0WXBVwY9NtRxR9FZ8w/xxO/sDLXyLUuOO471u6EZDEjdBeC67hhwFZr3Dp4KCdya9rhzuRf5hpJ3nzbMt87YE+o9B0IIL5Fwrsxk0ubrxTXSkL6067ovAR+gyru2tXJdv8e/nJmP5LEqIfN8cuVrfMbwDN+pSCadO7LZ9ObQDQeg7n2AUpRS76KwZhBqf373OHxiu+Cp0QBuGqAP0Nd1jLsG97AmpAmeUlKpxMZcbkDrYGcYNFQAAEqpy4GHgNAneh/5P8GtrwiG/eKMjwCkzHPtacPcvEz/1q5KFIZ7idtyuYHbQzdeSzkaLQAApdQlwCNA6AfFDk7B7b8W3L+3QjSoIIBls8e4d1CxJKQ5/VKEECSTzi253MDG0I3XWpZmEACAUmo98K9AJCP7Hx8UfHy74JXymdoyAdj2NH+V3csH+82ua6mEEIJUyrkx6jn+oDSNAACUUhcCm4FInpkYz8PnhwRf2CWYnPmzSwSwdsEhvrByL73mr3WeEiGEl0o5N2SzA/dE8gENmkoAAEqpC4AtQGR7g7eNwc07JC8cAvYtoic5wWdWKKP7eatRqPzE9dls+h8j+4gGTScAAKXUOuBxYF6U33lyRPDskMeGJeHM41eiWPl/lM2m74v0Qxo0pQAAlFLnULiGZn6U3xkerkvlvz+bTd8f6Yc0aaZF1ZNwXfe/gPVAXVbFokBKOZVKJa5q1sqHJhYAgOu6LwJrgab9B1bCceydqZSTzmbTDzW6LH40bRNQjlLqD4G7CXmEEHYTIITwkknnK7ncwIdCNRwRTR0BSnFd9z4KN5H8tNFlqYRlWWOpVOJtrVL50EICAHBddzvwJuCzGLxeEgWJhPOTZNJelM2mn2p0WWqhZZqAcpRSFwNfBxab2DFtAqQU+UTCuTmXGzC+rqURtKwAAJRSCyncXn6Frg0TATiOtc9x7LdkMumqr3Q3Ky0tgBmUUjdQaBZqXlHUEYAQkEg4312+PHN1zZmbjJbqA1TCdd1NwLkY3F8cFNu29qdSyXe3Q+VDm0SAUpRSVwCfA1YFSR80AliWnHAce2MYN3M1E20RAUopXlt3FnADYLx/qziufyCZdOa0W+VDG0aAUpRSc4GbgQ1UmECqFAGEEJ7j2D+xbXlNLe/wtRptLYAZlFJ9FCLCXwB9pb+VC6CwQ9f+gWXJP8lk0jvqV8rG0BECmEEp1UPhXMJNFOcPZgQgpcg7jv2oZckP1fryVivTUQKYQSmVpHBg9cOjo4dXOY79oJTiIybXrrcq/w99zo6mO4xCQAAAAABJRU5ErkJggg==", C.rush), w('<span style="font-size: 18px">Monster Brawl</span>', ['<img style="height: 28px; margin-left: 5px; margin-right: 8px" src="https://media.blooket.com/image/upload/v1655233787/Media/survivor/xp/Blue_xp_2.svg">'], C.brawl), w('<span style="font-size: 15px">Santa\'s Workshop</span>', "https://i.ibb.co/Y2SFc9Y/Santa-Workshop-Finished-icon-1.webp", C.workshop), w("Extras", "https://i.ibb.co/mb0R9HX/Star-icon-stylized-svg-1-removebg-preview.png", C.extras, !0), w("Settings", "https://i.ibb.co/jrWKgyn/Windows-Settings-icon-1.png", C.settings, !0), S(m, _), S(g, _), window.addEventListener("keydown", A);
6679 let x = setInterval(() => {
6680 C.alerts[0].connection ? clearInterval(x) : C.alerts[0].connect()
6684 for (let e in _.remove(), clearInterval(x), C)
6685 for (let t of C[e]) t.enabled && t.run();
6686 Object.keys(C).forEach(e => C[e].forEach(e => e.enabled && (e.run(), k(...currentMode)))), window.removeEventListener("keydown", A)
6690 var t = c.data.hide || {
6694 a = c.data.close || {
6698 (t.ctrl && e.ctrlKey || !t.ctrl && !e.ctrlKey) && (t.shift && e.shiftKey || !t.shift && !e.shiftKey) && (t.alt && e.altKey || !t.alt && !e.altKey) && e.key.toLowerCase() == t.key ? (e.preventDefault(), _.style.display = "block" === _.style.display ? "none" : "block") : (a.ctrl && e.ctrlKey || !a.ctrl && !e.ctrlKey) && (a.shift && e.shiftKey || !a.shift && !e.shiftKey) && (a.alt && e.altKey || !a.alt && !e.altKey) && e.key.toLowerCase() == a.key && (e.preventDefault(), D())
6701 function B(e, t = window) {
6702 return new Promise(a => {
6704 r, i, n, s, l = t => {
6705 t.preventDefault(), o[t.code] = !0, r ||= t.shiftKey, i ||= t.ctrlKey, n ||= t.altKey, ["shift", "control", "alt", "meta"].includes(t.key.toLowerCase()) || (s = t.key.toLowerCase()), e?.({
6713 delete o[e.code], 0 < Object.keys(o).length || (t.removeEventListener("keydown", l), t.removeEventListener("keyup", c), a({
6720 t.addEventListener("keydown", l), t.addEventListener("keyup", c)
6723 _.addEventListener("mousemove", e => {
6725 "cheatName" != e.target.className && "scriptButton" != e.target.className ? "0" != y.style.opacity && (y.animate([{
6731 }), y.style.opacity = "0") : (e = "scriptButton" == e.target.className ? e.target : e.target.parentElement, y.innerText == e.dataset.description && "0.9" == y.style.opacity || (t = e.getBoundingClientRect(), a = e.offsetParent.getBoundingClientRect(), y.innerText = e.dataset.description, "0" == y.style.opacity && (y.animate([{
6737 }), y.style.opacity = "0.9"), y.style.left = t.x - a.x + (t.width - y.clientWidth) / 2 + "px", y.style.top = t.y - a.y + t.height + "px"))
6738 }), window.fetch.call = function() {
6739 if (!arguments[1].includes("s.blooket.com/rc")) return wfcall.apply(this, arguments);
6740 C.alerts?.[0].addLog("Blooket Cheat Report Blocked!")