Update Gui.min.js
[bcp.git] / GUI / Gui.user.js
blob7ff6f1e66430259683ce4aad7d6488ff6a083e44
1 // ==UserScript==
2 // @name Blooket Cheats Plus
3 // @namespace https://github.com/randomstuff69/blooketcheatsplus
4 // @version 15.4
5 // @description Blooket Cheats Plus
6 // @updateURL https://raw.githubusercontent.com/randomstuff69/blooketcheatsplus/main/Update/Gui.meta.js
7 // @downloadURL https://raw.githubusercontent.com/randomstuff69/blooketcheatsplus/main/GUI/Gui.user.js
8 // @author DannyDan0167 and Cool Duck
9 // @match *://*.blooket.com/*
10 // @icon https://i.ibb.co/sWqBm0K/1024.png
11 // @grant none
12 // @require https://unpkg.com/idb-keyval@6.0.3/dist/umd.js
13 // ==/UserScript==
15 (async () => {
16 _blsbu = "https://www.googleapis.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/Cool Duck 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/randomstuff69/blooketcheatsplus", "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);
23 e.remove()
26 function l(e, t = {}, ...a) {
27 var o = document.createElement(e);
28 if ("object" == typeof t.style) {
29 let r = "";
30 for (let i in t.style) r += `${i.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}: ${t.style[i]}; `;
31 t.style = r
33 for (let n in t) o[n] = t[n];
34 for (let s of a) o.append(s);
35 return o
37 let c = {
38 data: null,
39 setItem(e, t) {
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
42 deleteItem(e) {
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
45 setData(e) {
46 this.data = e, localStorage.setItem("JODGUISettings", JSON.stringify(this.data))
49 try {
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))
51 } catch {
52 c.setData({})
54 let p, u, h, m, $, g, y, b, v, _ = l("div", {
55 id: "JODGUI",
56 style: {
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})`,
60 position: "fixed",
61 height: "80%",
62 width: "80%",
63 maxHeight: "600px",
64 maxWidth: "1000px",
65 zIndex: "999",
66 display: "block"
68 }, p = l("style", {
69 id: "variables",
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)"};}`
71 }), l("style", {
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)}'
73 }), u = l("div", {
74 style: {
75 width: "100%",
76 height: "100%",
77 position: "relative",
78 outline: "3px solid #3a3a3a",
79 borderRadius: "15px",
80 overflow: "hidden"
82 }, l("div", {
83 id: "background",
84 style: {
85 display: "block",
86 top: "0",
87 left: "0",
88 height: "100%",
89 overflowY: "hidden",
90 overflowX: "hidden",
91 position: "absolute",
92 width: "100%",
93 background: "var(--backgroundColor)",
94 visibility: "visible"
96 }, l("div", {
97 id: "backgroundImage",
98 style: {
99 backgroundImage: "url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
100 display: "block",
101 height: "200%",
102 position: "absolute",
103 width: "200%",
104 top: "50%",
105 left: "50%",
106 backgroundPositionX: "-100px",
107 backgroundPositionY: "-100px",
108 backgroundSize: "550px",
109 visibility: "visible",
110 transform: "translate(-50%,-50%) rotate(15deg)",
111 appearance: "none",
112 opacity: "0.175"
114 })), m = l("div", {
115 id: "controls",
116 style: {
117 display: "flex",
118 alignItems: "center",
119 justifyContent: "center",
120 paddingBottom: "8px",
121 paddingInline: "15px",
122 position: "absolute",
123 left: "220px",
124 top: "0",
125 visibility: "visible",
126 zIndex: "5",
127 height: "52px",
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",
134 fontWeight: "700",
135 userSelect: "text"
137 innerText: ([{
138 ctrl: e,
139 shift: t,
140 alt: a,
141 key: o
142 }, {
143 ctrl: r,
144 shift: i,
145 alt: n,
146 key: s
147 }] = [c.data.hide || {
148 ctrl: !0,
149 key: "e"
150 }, c.data.close || {
151 ctrl: !0,
152 key: "x"
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`),
154 update: ({
155 ctrl: e,
156 shift: t,
157 alt: a,
158 key: o
159 } = {
160 ctrl: !0,
161 key: "e"
162 }, {
163 ctrl: r,
164 shift: i,
165 alt: n,
166 key: s
167 } = {
168 ctrl: !0,
169 key: "x"
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`
171 }), l("div", {
172 id: "credits",
173 style: {
174 display: "flex",
175 alignItems: "center",
176 justifyContent: "center",
177 paddingBottom: "8px",
178 position: "absolute",
179 right: "0",
180 top: "0",
181 visibility: "visible",
182 zIndex: "5",
183 height: "47px",
184 width: "280px",
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",
190 fontWeight: "700",
191 userSelect: "text"
193 innerHTML: "GitHub - randomstuff69",
194 onclick: () => window.open("https://github.com/randomstuff69/blooketcheatsplus", "_blank").focus()
195 }), $ = l("div", {
196 id: "controlButtons",
197 style: {
198 display: "flex",
199 alignItems: "center",
200 justifyContent: "center",
201 position: "absolute",
202 right: "0",
203 bottom: "0",
204 visibility: "visible",
205 zIndex: "5",
206 height: "55px",
207 width: "165px",
208 background: "#none",
209 borderLeft: "3px solid black",
210 borderTop: "3px solid black",
211 borderTopLeftRadius: "10px",
212 color: "white",
213 fontFamily: "Nunito, sans-serif",
214 fontWeight: "700",
215 userSelect: "text",
216 overflow: "hidden",
217 pointerEvents: "all"
219 }, g = l("button", {
220 style: {
221 height: "55px",
222 width: "55px",
223 fontFamily: "Nunito",
224 color: "white",
225 backgroundColor: "#00a0ff",
226 border: "none",
227 fontSize: "2rem",
228 cursor: "move"
230 innerHTML: "✥"
231 }), l("button", {
232 style: {
233 height: "55px",
234 width: "55px",
235 fontFamily: "Nunito",
236 color: "white",
237 backgroundColor: "grey",
238 border: "none",
239 fontSize: "2rem",
240 fontWeight: "bolder",
241 cursor: "pointer"
243 innerHTML: "-",
244 onclick: function() {
245 let e = !1;
246 return () => {
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
251 }), l("button", {
252 style: {
253 height: "55px",
254 width: "55px",
255 fontFamily: "Nunito",
256 color: "white",
257 backgroundColor: "red",
258 border: "none",
259 fontSize: "2rem",
260 fontWeight: "bolder",
261 cursor: "pointer"
263 innerHTML: "X",
264 onclick: D
265 })), h = l("div", {
266 className: "cheatList",
267 style: {
268 overflowY: "scroll",
269 background: "var(--cheatList)",
270 boxShadow: "inset -10px 0 rgb(0 0 0 / 20%)",
271 zIndex: "5",
272 width: "220px",
273 position: "absolute",
274 top: "0",
275 left: "0",
276 height: "100%",
277 fontFamily: "Titan One",
278 color: "var(--textColor)",
279 fontSize: "40px",
280 textAlign: "center",
281 paddingTop: "20px",
282 userSelect: "none",
283 padding: "20px 10px 20px 0",
284 boxSizing: "border-box",
285 display: "flex",
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>'
289 }, l("a", {
290 className: "bigButton",
291 style: {
292 cursor: "pointer",
293 display: "block",
294 fontFamily: "Titan One",
295 margin: "20px auto 10px",
296 position: "relative",
297 transition: ".25s",
298 textDecoration: "none",
299 userSelect: "none",
300 visibility: "visible"
302 target: "_blank",
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>'
305 })), l("div", {
306 className: "contentWrapper",
307 style: {
308 position: "absolute",
309 left: "220px",
310 top: "70px",
311 overflowY: "scroll",
312 width: "calc(100% - 220px)",
313 height: "calc(100% - 70px)",
314 borderRadius: "7px"
316 }, l("div", {
317 id: "content",
318 style: {
319 position: "absolute",
320 inset: "27px 50px 50px 50px"
322 }, y = l("div", {
323 className: "tooltip",
324 style: {
325 position: "absolute",
326 top: "0",
327 left: "0",
328 backgroundColor: "black",
329 height: "fit-content",
330 maxWidth: "300px",
331 zIndex: "5",
332 borderRadius: "7.5px",
333 color: "white",
334 display: "flex",
335 justifyContent: "center",
336 alignItems: "center",
337 padding: "5px",
338 paddingInline: "15px",
339 pointerEvents: "none",
340 opacity: "0",
341 textAlign: "center"
343 innerText: "description"
344 }), b = l("div", {
345 style: {
346 alignItems: "center",
347 boxSizing: "border-box",
348 display: "flex",
349 flexDirection: "row",
350 flexWrap: "wrap",
351 justifyContent: "space-evenly",
352 padding: "20px 5px 20px",
353 position: "relative",
354 width: "100%",
355 fontFamily: "Nunito, sans-serif",
356 fontWeight: "400",
357 color: "var(--textColor)",
358 background: "var(--contentBackground)",
359 boxShadow: "inset 0 -6px rgb(0 0 0 / 20%)",
360 borderRadius: "7px"
362 }, v = l("div", {
363 className: "headerText",
364 style: {
365 boxSizing: "border-box",
366 display: "block",
367 height: "45px",
368 left: "-10px",
369 padding: "4px 4px 8px",
370 position: "absolute",
371 top: "-28px",
372 backgroundColor: "#ef7426",
373 boxShadow: "0 4px rgb(0 0 0 / 20%), inset 0 -4px rgb(0 0 0 / 20%)",
374 borderRadius: "7px"
376 }, l("div", {
377 style: {
378 alignItems: "center",
379 boxSizing: "border-box",
380 display: "flex",
381 height: "100%",
382 justifyContent: "center",
383 padding: "0 15px",
384 width: "100%",
385 fontFamily: "Titan One, sans-serif",
386 fontSize: "26px",
387 fontWeight: "400",
388 textShadow: "-1px -1px 0 #646464, 1px -1px 0 #646464, -1px 1px 0 #646464, 2px 2px 0 #646464",
389 color: "white",
390 background: "linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a)",
391 borderRadius: "5px"
393 })))))));
394 for (let f of document.querySelectorAll("#JODGUI")) f.remove();
396 function w(e, t, a, o) {
397 let r = l("div", {
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) {
406 let r = l("div", {
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++) {
416 let {
417 name: r,
418 description: i,
419 type: n,
420 inputs: s,
421 enabled: c,
422 run: d,
423 element: p
424 } = t[o];
425 if (!p) {
426 let u = l("div", {
427 className: "scriptButton",
428 style: {
429 background: "toggle" == n ? c ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)"
431 }, l("div", {
432 className: "cheatName",
433 innerHTML: r
434 }));
435 if (u.dataset.description = i, u.onclick = (function({
436 target: e,
437 key: t
438 }) {
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++) {
442 var {
443 name: m,
444 type: $,
445 options: g,
446 min: y,
447 max: _,
448 value: f
449 } = s[h];
450 let w;
451 try {
452 w = await ("function" == typeof g ? g?.() : g)
453 } catch {
454 w = []
456 if ("options" == $ && w?.length) {
457 let k = document.createElement("select");
458 w.forEach(e => {
459 var t = document.createElement("option");
460 t.value = JSON.stringify(e?.value || e), t.innerHTML = e?.name || e, k.appendChild(t)
461 }), u.appendChild(k)
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))
468 }, u.appendChild(S)
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)
471 t[o].element = u
473 b.appendChild(t[o].element)
476 document.body.appendChild(_);
477 let C = {
478 global: [{
479 name: "Auto Answer",
480 description: "Toggles auto answer on",
481 type: "toggle",
482 enabled: !1,
483 data: null,
484 run: function() {
485 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
486 var {
487 state: {
488 question: e,
489 stage: t,
490 feedback: a
492 props: {
493 client: {
494 question: o
497 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
498 let r = e || o;
499 try {
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])
501 } catch {}
502 }, 50))
504 }, {
505 name: "Highlight Answers",
506 description: "Toggles highlight answers on",
507 type: "toggle",
508 enabled: !1,
509 data: null,
510 run: function() {
511 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
512 let {
513 stateNode: {
514 state: e,
515 props: t
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)"
523 }, 50))
525 }, {
526 name: "Subtle Highlight Answers",
527 description: "Toggles subtle highlight answers on",
528 type: "toggle",
529 enabled: !1,
530 data: null,
531 run: function() {
532 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
533 let {
534 stateNode: {
535 state: e,
536 props: t
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")
544 }, 50))
546 }, {
547 name: "Freeze Leaderboard",
548 description: "Freezes the leaderboard on the host's screen",
549 type: "toggle",
550 enabled: !1,
551 data: null,
552 run: function() {
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`);
557 else {
558 this.enabled = !0;
559 let t = () => {
560 e.props.liveGameController.setVal({
561 path: `c/${e.props.client.name}/tat/Freeze`,
562 val: "freeze"
565 this.data = setInterval(t, 25)
568 }, {
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)",
571 inputs: [{
572 name: "Target Grade",
573 type: "number"
575 type: "toggle",
576 enabled: !1,
577 data: null,
578 run: function(e) {
579 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
580 else {
581 this.enabled = !0;
582 let {
583 stateNode: t
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 => {
588 try {
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']")) {
592 let o = 0,
593 r = 0;
594 for (let i in t.corrects) o += t.corrects[i];
595 for (let n in t.incorrects) r += t.incorrects[n];
596 r += o;
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?.()
604 l[0].click()
605 } else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? a.answers[0] : Math.random().toString(36).substring(2))
607 } catch {}
608 }, 100, (e ?? 100) / 100)
611 }, {
612 name: "Use any Banner",
613 description: "Unlocked all banners",
614 inputs: [{
615 name: "Banner",
616 type: "options",
617 options: Object.entries({
618 Starter: "starter",
619 Fire: "fire",
620 "Tech Chip": "techChip",
621 Shamrocks: "shamrocks",
622 "Orange Ice Pop": "orangeIcePop",
623 Slime: "slime",
624 Sushi: "sushi",
625 "Falling Blocks": "fallingBlocks",
626 Racetrack: "racetrack",
627 "Football Field": "footballField",
628 "Ice Cream Sandwich": "iceCreamSandwich",
629 "Winter Landscape": "winterLandscape",
630 Leaves: "leaves",
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",
638 Ice: "ice",
639 "Toaster Pastry": "toasterPastry",
640 "Fish Tank": "fishTank",
641 Theater: "theater",
642 Farm: "farm",
643 Spooky: "spooky",
644 "Spooky Cat": "spookyCat",
645 "Spooky Window": "spookyWindow",
646 Frankenstein: "frankenstein",
647 Ghosts: "ghosts",
648 Mummy: "mummy",
649 Spiders: "spiders",
650 Coffin: "coffin",
651 Pumpkins: "pumpkins",
652 "Christmas Tree": "christmasTree",
653 Chalkboard: "chalkboard",
654 Balloons: "balloons",
655 Skateboard: "skateboard",
656 Sunset: "sunset",
657 Tiger: "tiger",
658 "Pirate Map": "pirateMap",
659 Pencil: "pencil",
660 "Road Sign": "roadSign",
661 "Corn Dog": "cornDog",
662 Leaf: "leaf",
663 "Chili Pepper": "chiliPepper",
664 "Love Letter": "loveLetter",
665 Gifts: "gifts",
666 "Winter Train": "winterTrain",
667 "Winter Drive": "winterDrive",
668 Workbench: "workbench",
669 Harvest: "harvest",
670 Chocolate: "chocolate",
671 "Fall Picnic": "fallPicnic",
672 Bookshelf: "bookshelf",
673 "Easter Pattern": "easterPattern",
674 Carrot: "carrot",
675 "Easter Field": "easterField",
676 Garden: "garden",
677 Bakery: "bakery",
678 "Gummy Worm": "gummyWorm",
679 "Basketball Court": "basketballCourt",
680 "Flying Kite": "flyingKite",
681 "Hot Dog": "hotDog",
682 "Japanese Garden": "japaneseGarden",
683 Sandwich: "sandwich",
684 Ruler: "ruler",
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",
696 Cookout: "cookout",
697 Comic: "comic",
698 Crayon: "crayon",
699 Lightning: "lightning",
700 Baseball: "baseball",
701 "Shamrock Coins": "shamrockCoins",
702 "End Of The Rainbow": "endRainbow",
703 "Easter Field": "easterField",
704 Marker: "marker",
705 Pizza: "pizza",
706 Leaf: "leaf",
707 "Alphabet Soup": "alphabetSoup"
708 }).map(([e, t]) => ({
709 name: e,
710 value: t
713 run: function(e) {
714 var t = document.createElement("iframe");
716 function a() {
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",
721 val: e
724 }, {
725 name: "Spam Buy Blooks",
726 description: "Opens a box an amount of times",
727 inputs: [{
728 name: "Box",
729 type: "options",
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), [])
731 }, {
732 name: "Amount",
733 type: "number"
734 }, {
735 name: "Show Unlocks",
736 type: "options",
737 options: [{
738 name: "Show Unlocks",
739 value: !0
740 }, {
741 name: "Don't Show Unlocks",
742 value: !1
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();
748 let {
749 stateNode: r
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!");
756 let c = {},
757 d = Date.now();
758 for (let p = 0; p < l; p++) {
759 await r.buyPack(!0, n), c[r.state.unlockedBlook] ||= 0, c[r.state.unlockedBlook]++;
760 let u = Date.now();
761 d += Date.now() - u, r.setState({
762 canOpen: !0,
763 currentPack: "",
764 opening: a,
765 doneOpening: a,
766 openPack: a
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(` `)}`)
771 }, {
772 name: "Flood Game",
773 description: "Floods a game with a number of fake accounts",
774 inputs: [{
775 name: "Name",
776 type: "string"
777 }, {
778 name: "Amount",
779 type: "number"
780 }, {
781 name: "Blook",
782 type: "options",
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 => ({
784 name: e,
785 value: e
787 }, {
788 name: "Banner",
789 type: "options",
790 options: Object.entries({
791 Starter: "starter",
792 Fire: "fire",
793 "Tech Chip": "techChip",
794 Shamrocks: "shamrocks",
795 "Orange Ice Pop": "orangeIcePop",
796 Slime: "slime",
797 Sushi: "sushi",
798 "Falling Blocks": "fallingBlocks",
799 Racetrack: "racetrack",
800 "Football Field": "footballField",
801 "Ice Cream Sandwich": "iceCreamSandwich",
802 "Winter Landscape": "winterLandscape",
803 Leaves: "leaves",
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",
811 Ice: "ice",
812 "Toaster Pastry": "toasterPastry",
813 "Fish Tank": "fishTank",
814 Theater: "theater",
815 Farm: "farm",
816 Spooky: "spooky",
817 "Spooky Cat": "spookyCat",
818 "Spooky Window": "spookyWindow",
819 Frankenstein: "frankenstein",
820 Ghosts: "ghosts",
821 Mummy: "mummy",
822 Spiders: "spiders",
823 Coffin: "coffin",
824 Pumpkins: "pumpkins",
825 "Christmas Tree": "christmasTree",
826 Chalkboard: "chalkboard",
827 Balloons: "balloons",
828 Skateboard: "skateboard",
829 Sunset: "sunset",
830 Tiger: "tiger",
831 "Pirate Map": "pirateMap",
832 Pencil: "pencil",
833 "Road Sign": "roadSign",
834 "Corn Dog": "cornDog",
835 Leaf: "leaf",
836 "Chili Pepper": "chiliPepper",
837 "Love Letter": "loveLetter",
838 Gifts: "gifts",
839 "Winter Train": "winterTrain",
840 "Winter Drive": "winterDrive",
841 Workbench: "workbench",
842 Harvest: "harvest",
843 Chocolate: "chocolate",
844 "Fall Picnic": "fallPicnic",
845 Bookshelf: "bookshelf",
846 "Easter Pattern": "easterPattern",
847 Carrot: "carrot",
848 "Easter Field": "easterField",
849 Garden: "garden",
850 Bakery: "bakery",
851 "Gummy Worm": "gummyWorm",
852 "Basketball Court": "basketballCourt",
853 "Flying Kite": "flyingKite",
854 "Hot Dog": "hotDog",
855 "Japanese Garden": "japaneseGarden",
856 Sandwich: "sandwich",
857 Ruler: "ruler",
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",
869 Cookout: "cookout",
870 Comic: "comic",
871 Crayon: "crayon",
872 Lightning: "lightning",
873 Baseball: "baseball",
874 "Shamrock Coins": "shamrockCoins",
875 "End Of The Rainbow": "endRainbow",
876 "Easter Field": "easterField",
877 Marker: "marker",
878 Pizza: "pizza",
879 Leaf: "leaf",
880 "Alphabet Soup": "alphabetSoup"
881 }).map(([e, t]) => ({
882 name: e,
883 value: t
886 run: async function(e, t, a, o) {
887 let r = document.createElement("iframe");
889 function i() {
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();
893 var n = {
894 randomNames: !1
896 if (!i().props.liveGameController._liveApp) {
897 alert("You must be in a game to use the flooder!");
898 return
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({
904 id: e,
905 name: t
907 credentials: "include",
908 method: "PUT"
909 }).then(e => e.json());
910 if (r.success) {
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
920 }, t);
921 await i.auth().signInWithCustomToken(r.fbToken);
922 let n = i.database();
923 await n.ref(`${e}/c/${t}`).set({
924 b: a,
925 bg: o
926 }), C.alerts[0].addLog(`Bot ${t} joined!`)
927 } else alert("Connect error: " + r.msg)
929 async function c() {
930 if (!i().props.liveGameController._liveApp) {
931 alert("You must be in a game for the flooder to work!");
932 return
934 var a, o = i().props.liveGameController._liveGameCode,
935 r = parseInt(t);
936 if (!r) {
937 alert("You must use a valid number!");
938 return
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()))
944 function d(e) {
945 for (var t = "", a = 0; a < e; a++) t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
946 return t
950 }, {
951 name: "Simulate Unlock",
952 description: "Simulates unlocking a certian blook",
953 inputs: [{
954 name: "Blook (Case Sensitive)"
956 run: (unlockedBlook) => {
957 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
958 stateNode.setState({
959 loadingPack: !1,
960 openPack: !0,
961 unlockedBlook,
962 newUnlock: !0,
963 canOpen: !1
965 setTimeout(() => stateNode.setState({
966 canOpen: !0
967 }), 200);
970 name: "Simulate Pack",
971 description: "Simulates unlocking a pack",
972 inputs: [{
973 name: "Pack",
974 type: "options",
975 options: () => [...document.querySelector("[class*=packsWrapper]")?.children]?.map(e => e.children[0].children[0].alt)
977 run: async (packName) => {
978 let i = document.createElement('iframe');
979 document.body.append(i);
980 const alert = i.contentWindow.alert.bind(window);
981 i.remove();
982 if(window.location.pathname!=="/market"){alert("You must be on the market page to run this cheat!");return;}
983 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
984 const getProbs = (pack) => (new Promise(res => {
985 if (!Array.prototype.map2) {
986 Array.prototype.map2 = Array.prototype.map;
988 Array.prototype.map = function () {
989 if (typeof this[0]?.[1] == "number") {
990 res(this);
991 Array.prototype.map = Array.prototype.map2;
993 return Array.prototype.map2.apply(this, arguments);
995 var a = new(stateNode.constructor)();
996 a.state.currentPack = pack;
997 a.render();
998 res(null);
999 }));
1000 async function pickRandom(pack) {
1001 let probs = (await getProbs(pack));
1002 const choice = pickW(probs.map(e => e[1]));
1003 return probs[choice];
1005 function pickW(a) {
1006 let v = 0;
1007 let sum = [];
1008 const rand = Math.floor(Math.random() * a.reduce((a, b) => a + b, 0));
1009 a.forEach(e => (sum.push(v), v += e));
1010 return sum.map(e => rand < e).findLastIndex(e => e ? 0 : 1);
1012 stateNode.setState({
1013 loadingPack: !1,
1014 openPack: !0,
1015 unlockedBlook: (await pickRandom(packName))[0],
1016 newUnlock: !0,
1017 canOpen: !1
1019 setTimeout(() => stateNode.setState({
1020 canOpen: !0
1021 }), 200);
1023 }, {
1024 name: "Bypass Filter",
1025 description: "Bypasses the name filter",
1026 inputs: [{
1027 name: "Text",
1028 type: "text",
1030 run: function(e) {
1031 var t, a, o;
1032 let r;
1033 a = function e(t) {
1034 for (var a = t.split(""), o = "", r = 0; r < a.length; r++) o += "\xad" + a[r];
1035 return o
1036 }(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)
1038 }, {
1039 name: "Change Name Ingame",
1040 description: "Changes your name ingame",
1041 inputs: [{
1042 name: "New Name",
1043 type: "text"
1045 run: (function(newname) {
1046 (async () => {
1047 const reactHandler = (e => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode);
1048 let i = document.createElement('iframe');
1049 document.body.append(i);
1050 let alert = i.contentWindow.alert.bind(window);
1051 i.remove();
1053 async function genToken(name) {
1054 const res = await fetch("https://fb.blooket.com/c/firebase/join", {
1055 body: JSON.stringify({
1056 id: reactHandler().props.client.hostId,
1057 name
1059 headers: {
1060 "Content-Type": "application/json"
1062 method: "PUT",
1063 credentials: "include"
1064 }).then(e => e.json());
1065 if (!res.success) {
1066 alert("Error: " + res.msg);
1067 return;
1069 return res.fbToken;
1072 const oldname = reactHandler().props.client.name;
1073 reactHandler().props.client.name = newname;
1074 const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
1075 await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
1076 const token = await genToken(newname);
1077 if (!token) {
1078 return;
1080 await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
1081 reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
1082 if (e.uid.split(":")[1] === newname) {
1083 reactHandler().props.liveGameController.setVal({
1084 path: `c/${newname}`,
1085 val: olddata
1089 reactHandler().setState({});
1090 })();
1092 }, {
1093 name: "Use Banner IDs",
1094 description: "Enter Banner ID to use Banner",
1095 inputs: [{
1096 name: "Banner ID",
1097 type: "text",
1099 run: function(e) {
1100 var t = document.createElement("iframe");
1102 function a() {
1103 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1105 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({
1106 path: "c/" + a().stateNode.props.client.name + "/bg",
1107 val: e
1110 }, {
1111 name: "Change Blook Ingame",
1112 description: "Changes your blook",
1113 inputs: [{
1114 name: "Blook",
1115 type: "options",
1116 async options() {
1117 let {
1118 webpack: e
1119 } = webpackJsonp.push([
1120 [], {
1121 1234(e, t, a) {
1122 t.webpack = a
1126 ["1234"]
1129 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a)
1132 run: function(e) {
1133 let {
1134 props: t
1135 } = Object.values(function e(t = document.querySelector("body>div")) {
1136 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1137 }())[1].children[0]._owner.stateNode;
1138 t.client.blook = e, t.liveGameController.setVal({
1139 path: `c/${t.client.name}/b`,
1140 val: e
1143 }, {
1144 name: "Set Blook Ad Text",
1145 description: "Sets a load of text as your blook and floods teachers screen on lobby",
1146 inputs: [{
1147 name: "Text",
1148 type: "input",
1150 run: function(e) {
1151 let t = Object.values(function e(t = document.querySelector("body>div")) {
1152 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1153 }())[1].children[0]._owner.stateNode;
1154 if (!String.prototype.inc) {
1155 String.prototype.inc = String.prototype.includes;
1157 String.prototype.includes = function(a) {
1158 if (a == "#" && this.length > 30) {
1159 return !0;
1161 return String.prototype.inc.apply(this, arguments);
1163 let repeatedText = Array(500).fill(e).join(' ');
1164 if (!t.state.unlocks) {
1165 t.client.blook = repeatedText;
1167 t.props.liveGameController.setVal({
1168 path: `c/${t.props.client.name}/b`,
1169 val: repeatedText
1172 }, {
1173 name: "Set Blook Ad Text Ingame",
1174 description: "Sets a load of text as your blook",
1175 inputs: [{
1176 name: "Text",
1177 type: "options",
1178 async options() {
1179 let {
1180 webpack: e
1181 } = webpackJsonp.push([
1182 [], {
1183 1234(e, t, a) {
1184 t.webpack = a
1188 ["1234"]
1191 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a);
1194 run: function(e) {
1195 let {
1196 props: t
1197 } = Object.values(function e(t = document.querySelector("body>div")) {
1198 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1199 }())[1].children[0]._owner.stateNode;
1201 let repeatedText = Array(500).fill(e).join(' ');
1202 t.client.blook = repeatedText;
1203 t.liveGameController.setVal({
1204 path: `c/${t.client.name}/b`,
1205 val: repeatedText
1208 }, {
1209 name: "Auto Answer",
1210 description: "Click the correct answer for you",
1211 run: function() {
1212 let {
1213 state: {
1214 question: e,
1215 stage: t,
1216 feedback: a
1218 props: {
1219 client: {
1220 question: o
1223 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1224 try {
1225 "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])
1226 } catch {}
1228 }, {
1229 name: "Highlight Answers",
1230 description: "Colors answers to be red or green highlighting the correct ones",
1231 run: function() {
1232 let {
1233 stateNode: {
1234 state: e,
1235 props: t
1237 } = Object.values(function e(t = document.querySelector("body>div")) {
1238 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1239 }())[1].children[0]._owner;
1240 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1241 (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)"
1244 }, {
1245 name: "Subtle Highlight Answers",
1246 description: "Removes the shadow from correct answers",
1247 run: function() {
1248 let {
1249 stateNode: {
1250 state: e,
1251 props: t
1253 } = Object.values(function e(t = document.querySelector("body>div")) {
1254 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1255 }())[1].children[0]._owner;
1256 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1257 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
1260 }, {
1261 name: "Get Daily Rewards",
1262 description: "Gets max daily tokens and xp",
1263 run: async function() {
1264 let e = document.createElement("iframe");
1265 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
1266 let {
1268 } = await fetch("https://play.blooket.com/api/playersessions/solo", {
1269 body: JSON.stringify({
1270 gameMode: "Factory",
1271 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(107 * Math.random())]
1273 credentials: "include",
1274 method: "POST"
1275 }).then(e => e.json());
1276 await fetch("https://play.blooket.com/api/playersessions/landings", {
1277 body: JSON.stringify({
1280 credentials: "include",
1281 method: "POST"
1282 }); await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
1283 credentials: "include"
1285 await fetch("https://play.blooket.com/api/users/factorystats", {
1286 body: JSON.stringify({
1287 blookUsed: "Chick",
1289 cash: Math.floor(9e7 * Math.random()) + 1e7,
1290 correctAnswers: Math.floor(500 * Math.random()) + 500,
1291 upgrades: Math.floor(300 * Math.random()) + 300,
1292 mode: "Time-Solo",
1293 nameUsed: "You",
1294 place: 1,
1295 playersDefeated: 0
1297 credentials: "include",
1298 method: "PUT"
1299 }), fetch("https://play.blooket.com/api/users/add-rewards", {
1300 body: JSON.stringify({
1302 name: a,
1303 addedTokens: 500,
1304 addedXp: 300
1306 credentials: "include",
1307 method: "PUT"
1308 }).then(e => e.json()).then(({
1309 dailyReward: e
1310 }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
1311 } else alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
1313 }, {
1314 name: "Use any Blook",
1315 description: "Allows you to play as any blook.",
1316 run: function() {
1317 (() => {
1318 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1319 let i = document.createElement('iframe');
1320 document.body.append(i);
1321 const alert = i.contentWindow.alert.bind(window);
1322 i.remove();
1323 if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
1324 alert("This must be run on the lobby or dashboard!");
1325 return;
1327 if (stateNode.state.blookData) {
1328 let oe = Object.entries;
1329 Object.entries = function(a) {
1330 if (a?.Chick) {
1331 allBlooks(a);
1332 Object.entries = oe;
1334 return oe.apply(this, arguments);
1336 stateNode.render();
1338 function allBlooks(blooks) {
1339 let blookData = {};
1340 stateNode.setState({
1341 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
1342 allSets: Object.values(blooks).reduce((a, b) => {
1343 return !a.includes(b.set) && a.push(b.set), a
1344 }, [])
1347 } else {
1348 stateNode.setState({
1349 unlocks: {
1350 includes: e => 1
1354 })();
1356 }, {
1357 name: "Get More Blooks (Lobby)",
1358 description: "Gives you an abundance of custom blooks to try (Some images might be blocked)",
1359 run: function() {
1360 const containerClass = '_blooksHolder_1bg6w_141';
1361 const targetContainer = document.querySelector(`.${containerClass}`);
1363 if (targetContainer) {
1364 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"];
1365 imageUrls.forEach((url) => {
1366 const newBlookContainer = document.createElement('div');
1367 newBlookContainer.className = '_blookContainer_1bg6w_150';
1368 newBlookContainer.setAttribute('role', 'button');
1369 newBlookContainer.setAttribute('tabindex', '0');
1371 const innerDiv = document.createElement('div');
1372 innerDiv.className = '_blookContainer_12gbf_1 _blook_1bg6w_141';
1373 innerDiv.setAttribute('data-tooltip-id', 'blook-tooltip');
1375 const img = document.createElement('img');
1376 img.src = url;
1377 img.alt = 'Custom Blook';
1378 img.draggable = false;
1379 img.className = '_blook_12gbf_1';
1381 newBlookContainer.addEventListener('click', () => {
1382 setCustomBlookUrl(url);
1385 innerDiv.appendChild(img);
1386 newBlookContainer.appendChild(innerDiv);
1387 targetContainer.appendChild(newBlookContainer);
1389 } else {
1390 console.error('Target container not found');
1393 function setCustomBlookUrl(url) {
1394 let t = Object.values(function e(t = document.querySelector("body>div")) {
1395 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1396 }())[1].children[0]._owner.stateNode;
1398 if (!t.state.unlocks) {
1399 t.props.client.blook = url;
1402 t.props.liveGameController.setVal({
1403 path: `c/${t.props.client.name}/b`,
1404 val: url
1408 }, {
1409 name: "Freeze Host",
1410 description: "Freezes the host's screen",
1411 run: function() {
1412 const encodedChars = [
1413 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1416 const chars = encodedChars.map(char => eval(`"${char}"`));
1418 function makeLongText() {
1419 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1422 let {
1423 props: t
1424 } = Object.values(function e(t = document.querySelector("body>div")) {
1425 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1426 }())[1].children[0]._owner.stateNode;
1428 let repeatedText = makeLongText();
1429 t.client.blook = repeatedText;
1430 t.liveGameController.setVal({
1431 path: `c/${t.client.name}/b`,
1432 val: repeatedText
1435 }, {
1436 name: "Remove all Taken Blooks",
1437 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
1438 run: function() {
1439 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1440 stateNode.setState({
1441 takenBlooks: {
1442 includes: e => !1
1445 stateNode.setState = function(a, b) {
1446 if (a?.takenBlooks) {
1447 return;
1449 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
1452 }, {
1453 name: "Dynamic Player Count",
1454 description: "Updates the player count at the top of the screen in realtime as players join or leave.",
1455 run: function() {
1456 (async () => {
1457 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1458 const ref = await stateNode.props.liveGameController.getDatabaseRef("")
1459 ref.on("value", e => {
1460 document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
1462 })()
1464 }, {
1465 name: "Blooket Bot",
1466 description: "Opens Blooket Bot",
1467 run: function() {
1468 function getGameCode() {
1469 const appDiv = document.querySelector('#app>div>div');
1470 if (appDiv) {
1471 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1472 return reactComponent?.stateNode?.props?.client?.hostId || null;
1474 return null;
1477 const gameCode = getGameCode();
1478 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
1479 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1481 }, {
1482 name: "Blooket Bot Unblocked",
1483 description: "Opens Blooket Bot",
1484 run: function() {
1485 function getGameCode() {
1486 const appDiv = document.querySelector('#app>div>div');
1487 if (appDiv) {
1488 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1489 return reactComponent?.stateNode?.props?.client?.hostId || null;
1491 return null;
1494 const gameCode = getGameCode();
1495 const url = gameCode ? "https://blooketbot.vercel.app/?code=" + gameCode : "https://blooketbot.vercel.app/";
1496 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1498 }, {
1499 name: "Blooket Homework Editor",
1500 description: "Opens Blooket Homework Editor",
1501 run: function() {
1502 window.open("https://blookethwk.glitch.me/", "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes")
1504 }, {
1505 name: "Lobbychat",
1506 description: "Chat with other people and execute commands",
1507 run: function() {
1508 if (window.run) {
1509 return;
1510 } else {
1511 window.run = true;
1514 function e() {
1515 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1517 var t = 0,
1518 a = !1;
1519 document.addEventListener("keydown", function(e) {
1520 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
1522 let o = document.createElement("div");
1523 o.className = "chat-box", document.body.appendChild(o);
1524 let r = document.createElement("div");
1525 r.className = "chat-header", r.textContent = "Chat", o.appendChild(r);
1526 let i = document.createElement("div");
1527 i.className = "chat-body", o.appendChild(i);
1528 let n = document.createElement("input");
1530 function s(e) {
1531 let t = document.createElement("div");
1532 t.textContent = e, i.appendChild(t)
1534 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", () => {
1535 i.classList.toggle("open")
1536 }), n.addEventListener("keydown", function(a) {
1537 13 === a.keyCode && (function a(o) {
1538 var r, n, l, c, d, p, u, h = function e(t) {
1539 if ("/" !== t.charAt(0)) return !1;
1540 var a = t.split(" "),
1541 o = a[0].replace("/", "");
1542 return a.splice(0, 1), {
1543 cmd: o,
1544 args: a
1546 }(o);
1547 if (h) switch (h.cmd) {
1548 case "cb":
1549 r = h.args.join(" "), (n = webpackJsonp.push([
1550 [], {
1551 1234(e, t, a) {
1552 t.webpack = a
1556 ["1234"]
1558 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
1559 id: e().stateNode.props.client.hostId,
1560 path: "c/" + e().stateNode.props.client.name,
1561 val: {
1562 b: r
1564 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
1565 break;
1566 case "clear":
1567 i.innerHTML = "";
1568 break;
1569 case "dumpstate":
1570 Object.keys(e().stateNode.state).map(t => {
1571 var a = e().stateNode.state[t];
1572 if (null == a) return "N/A";
1573 Array.from(a) && "object" == typeof a && (a = "[Array]"), s(t + ":" + a)
1574 }).join(";");
1575 break;
1576 case "list":
1577 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
1578 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
1580 break;
1581 case "tlog":
1582 window.logsv = !window.logsv, s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
1583 break;
1584 case "setval":
1585 l = h.args, e().stateNode.props.liveGameController.setVal({
1586 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
1587 val: l.slice(1, l.length).join(" ")
1589 break;
1590 case "setstate":
1591 c = h.args, d = {}, c.forEach(e => {
1592 var t = e.split(":");
1593 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])), d[t[0]] = t[1]
1594 }), e().stateNode.setState(d), s("Set Successful!");
1595 break;
1596 case "ahelp":
1597 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)");
1598 break;
1599 case "help":
1600 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)");
1601 break;
1602 case "dump":
1603 ! function t(a) {
1604 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
1605 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
1607 }(h.args.join(" "));
1608 break;
1609 case "unlock":
1610 p = h.args.join(" "), (u = webpackJsonp.push([
1611 [], {
1612 1234(e, t, a) {
1613 t.webpack = a
1617 ["1234"]
1619 ]).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!");
1620 break;
1621 case "code":
1622 s("Game Code: " + e().stateNode.props.client.hostId);
1623 break;
1624 default:
1625 s("Unrecognized chat command!")
1626 } else e().stateNode.props.liveGameController.setVal({
1627 id: e().stateNode.props.client.hostId,
1628 path: "c/" + e().stateNode.props.client.name + "/msg",
1629 val: {
1630 i: t,
1631 msg: o
1633 }), t++
1634 }(a.srcElement.value), a.srcElement.value = "")
1636 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
1638 function c(e) {
1639 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
1641 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
1642 var r, i;
1643 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)
1644 }, window.logsv = !1;
1645 var d = e().stateNode.props.liveGameController.setVal;
1646 e().stateNode.props.liveGameController.setVal = function() {
1647 c.apply(this, arguments), d.apply(this, arguments)
1648 }, e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}), s("Lobbychat successfully loaded!"), o.style.wordWrap = "break-word"
1650 }, {
1651 name: "Pin Guesser",
1652 description: "Brute forces combinations for existing pins",
1653 run: function() {
1654 var e = 0,
1655 t = 0,
1656 a = document.querySelector("div[class*='titleText']");
1658 function o() {
1659 return Object.values(function e(t = document.querySelector("body>div")) {
1660 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1661 }())[1].children[0]._owner.stateNode
1662 }! function r() {
1663 let i = Math.floor(9e6 * Math.random()) + 1e6;
1664 fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
1665 method: "GET",
1666 credentials: "include"
1667 }).then(e => e.json()).then(n => {
1668 !0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
1669 client: {
1670 hostId: i.toString()
1672 })) : (console.log("No game found for:", i), o().setState({
1673 client: {
1674 hostId: i.toString()
1676 }), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
1677 }).catch(e => {
1678 alert("Error:" + e)
1682 }, {
1683 name: "Crash Game",
1684 description: "Crashes the host's game",
1685 run: function() {
1686 var e = Object.values(function e(t = document.querySelector("#app")) {
1687 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1688 }())[1].children[0]._owner.stateNode;
1689 e.props.liveGameController.setVal({
1690 path: `c/${e.props.client.name}/b/toString`,
1691 val: "Crashed"
1694 }, {
1695 name: "Every Answer Correct",
1696 description: "Sets every answer to be correct",
1697 run: function() {
1698 let {
1699 stateNode: e
1700 } = Object.values(function e(t = document.querySelector("body>div")) {
1701 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1702 }())[1].children[0]._owner;
1703 e.freeQuestions = e.freeQuestions?.map?.(e => ({
1704 ...e,
1705 correctAnswers: e.answers
1706 })), e.questions = e.questions?.map?.(e => ({
1707 ...e,
1708 correctAnswers: e.answers
1709 })), e.props.client.questions = e.props.client.questions.map(e => ({
1710 ...e,
1711 correctAnswers: e.answers
1714 }, {
1715 name: "Remove Name Limit",
1716 description: "Sets the name limit to 120, which is the actual max name length limit",
1717 run: function() {
1718 var e = document.createElement("iframe");
1719 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")
1721 }, {
1722 name: "Remove Random Name",
1723 description: "Allows you to put a custom name",
1724 run: function() {
1725 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1726 isRandom: !1,
1727 client: {
1728 name: ""
1730 }), document.querySelector('[class*="nameInput"]')?.focus?.()
1732 }, {
1733 name: "Sell Cheap Duplicates",
1734 description: "Sells all of your uncommon to epic dupes (not legendaries+)",
1735 run: function() {
1736 var e = document.createElement("iframe");
1737 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove();
1738 let t = webpackJsonp.push([
1739 [], {
1740 1234(e, t, a) {
1741 t.webpack = a
1745 ["1234"]
1747 ]).webpack,
1748 a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
1749 o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
1750 a.get("https://dashboard.blooket.com/api/users").then(async ({
1751 data: {
1752 unlocks: e
1754 }) => {
1755 if (e = Object.entries(e).filter(([e, t]) => 1 < t && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([
1756 [], {
1757 1234(e, t, a) {
1758 t.webpack = a
1762 ["1234"]
1764 ]).webpack("MDrD").a[e].rarity)), confirm("Are you sure you want to sell your uncommon to epic dupes?")) {
1765 var t, a, r = Date.now();
1766 for ([t, a] of e) await o({
1767 blook: t,
1768 numToSell: a - 1
1770 alert(`(${Date.now()-r}ms) Results: ` + e.map(([e, t]) => ` ${e} ` + (t - 1)).join(" "))
1772 }).catch(() => alert("There was an error user data!"))
1774 }, {
1775 name: "Sell Duplicate Blooks",
1776 description: "Sell all duplicate blooks leaving you with 1 each",
1777 run: async function() {
1778 let e = document.createElement("iframe");
1779 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)) {
1780 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
1781 let {
1782 stateNode: t
1783 } = Object.values(function e(t = document.querySelector("body>div")) {
1784 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1785 }())[1].children[0]._owner, a = Date.now(), o = "";
1786 for (let r in t.state.blookData)
1787 if (t.state.blookData[r] > 1) {
1788 if (t.setState({
1789 blook: r,
1790 numToSell: t.state.blookData[r] - 1
1791 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim())) continue;
1792 o += ` ${r} ${t.state.blookData[r]-1} `, await t.sellBlook({
1793 preventDefault() {}
1794 }, !0)
1795 } alert(`(${Date.now()-a}ms) Results: ${o.trim()}`)
1797 } else alert("This can only be ran in the Blooks page.")
1800 voyage: [{
1801 name: "Heist ESP",
1802 description: "Shows you what's under each chest during a heist",
1803 type: "toggle",
1804 enabled: false,
1805 data: null,
1806 run: function() {
1807 if (this.enabled) {
1808 this.enabled = false;
1809 clearInterval(this.data);
1810 this.data = null;
1811 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
1812 } else {
1813 this.enabled = true;
1814 this.data = setInterval(() => {
1815 const cheat = (async () => {
1816 let {
1817 stateNode
1818 } = Object.values((function react(r = document.querySelector("body>div")) {
1819 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1820 })())[1].children[0]._owner;
1821 if (stateNode.state.stage == "heist") {
1822 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
1823 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
1824 for (const e of document.querySelectorAll("[class*=boxContent] > div")) e.remove();
1825 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
1826 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
1827 const box = container.firstChild.firstChild;
1828 if (open.includes(i)) return box.style.opacity = "";
1829 box.style.opacity = "0.5";
1830 let d = document.createElement("div");
1831 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
1832 d.className = "chestESP";
1833 d.style.position = "absolute";
1834 d.style.inset = "0";
1835 d.style.display = "grid";
1836 d.style.placeItems = "center";
1837 d.style.pointerEvents = "none";
1838 container.onclick = () => {
1839 d.remove();
1840 box.style.opacity = "";
1842 container.firstChild.prepend(d);
1846 cheat();
1847 }, 50);
1850 }, {
1851 name: "Crash Host (Pirate)",
1852 description: "Crashes the Host's Game for Pirate's Voyage",
1853 run: function() {
1854 function reactHandler() {
1855 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
1858 function setv(args) {
1859 reactHandler().stateNode.props.liveGameController.setVal({
1860 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
1861 val: args.slice(1, args.length).join(" ")
1865 setv(['d/t', 't']);
1867 }, {
1868 name: "Max Levels",
1869 description: "Maxes out all islands and your boat",
1870 run: function() {
1871 let {
1872 stateNode: e
1873 } = Object.values(function e(t = document.querySelector("body>div")) {
1874 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1875 }())[1].children[0]._owner;
1876 e.setState({
1877 islandLevels: Array(e.state.islandLevels.length).fill(5)
1878 }, e.updateBoatLevel)
1880 }, {
1881 name: "Set Doubloons",
1882 description: "Sets Doubloons",
1883 inputs: [{
1884 name: "Amount",
1885 type: "number"
1887 run: function(e) {
1888 let t = document.createElement("iframe");
1889 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1890 let {
1891 stateNode: a
1892 } = Object.values(function e(t = document.querySelector("body>div")) {
1893 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1894 }())[1].children[0]._owner;
1895 a.setState({
1896 doubloons: e
1897 }), a.props.liveGameController.setVal({
1898 path: `c/${a.props.client.name}/d`,
1899 val: e
1902 }, {
1903 name: "Start Heist",
1904 description: "Starts a heist on someone",
1905 inputs: [{
1906 name: "Player",
1907 type: "options",
1908 options() {
1909 let {
1910 stateNode: e
1911 } = Object.values(function e(t = document.querySelector("body>div")) {
1912 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1913 }())[1].children[0]._owner;
1914 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1917 run: function(e) {
1918 let t = document.createElement("iframe");
1919 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1920 let {
1921 stateNode: a
1922 } = Object.values(function e(t = document.querySelector("body>div")) {
1923 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1924 }())[1].children[0]._owner;
1925 a.props.liveGameController.getDatabaseVal("c", function(t) {
1926 let o = Object.entries(t || {}).reduce((e, [t, o]) => (t != a.props.client.name && e.push({
1927 name: t,
1928 blook: o.b,
1929 doubloons: o.d || 0
1930 }), e), []);
1931 if (0 === o.length) return a.questionsToAnswer = 1, void a.randomQ();
1932 let {
1933 name: r,
1934 blook: i,
1935 doubloons: n
1936 } = o.find(t => t.name == e) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
1937 a.setState({
1938 stage: "heist",
1939 heistInfo: {
1940 name: r,
1941 blook: i
1943 prizeAmount: Math.max(1e3, n)
1947 }, {
1948 name: "Swap Doubloons",
1949 description: "Swaps Doubloons with someone",
1950 inputs: [{
1951 name: "Player",
1952 type: "options",
1953 options() {
1954 let {
1955 stateNode: e
1956 } = Object.values(function e(t = document.querySelector("body>div")) {
1957 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1958 }())[1].children[0]._owner;
1959 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1962 run: async function(e) {
1963 let t = document.createElement("iframe");
1964 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1965 let {
1966 stateNode: a
1967 } = Object.values(function e(t = document.querySelector("body>div")) {
1968 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1969 }())[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];
1970 a.props.liveGameController.setVal({
1971 path: `c/${a.props.client.name}`,
1972 val: {
1973 b: a.props.client.blook,
1974 d: r[1].d,
1975 tat: `${r[0]}:${r[1].d-a.state.doubloons}`
1977 }), a.setState({
1978 doubloons: r[1].d
1981 }, {
1982 name: "Take Doubloons",
1983 description: "Takes Doubloons from someone",
1984 inputs: [{
1985 name: "Player",
1986 type: "options",
1987 options() {
1988 let {
1989 stateNode: e
1990 } = Object.values(function e(t = document.querySelector("body>div")) {
1991 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1992 }())[1].children[0]._owner;
1993 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1996 run: async function(e) {
1997 let t = document.createElement("iframe");
1998 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1999 let {
2000 stateNode: a
2001 } = Object.values(function e(t = document.querySelector("body>div")) {
2002 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2003 }())[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];
2004 a.setState({
2005 doubloons: a.state.doubloons + r[1].d
2006 }), a.props.liveGameController.setVal({
2007 path: `c/${a.props.client.name}`,
2008 val: {
2009 b: a.props.client.blook,
2010 d: r[1].d,
2011 tat: `${r[0]}:${r[1].d}`
2015 }, {
2016 name: "Flood Alert Box",
2017 description: "Makes the alert box filled with text",
2018 inputs: [{
2019 name: "Text",
2020 type: "text"
2022 run: function(userInput) {
2023 function getReactOwner() {
2024 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2027 function repeatText(text, times) {
2028 return new Array(times).fill(text).join(" ");
2031 function setValForPlayer() {
2032 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2033 if (data != null) {
2035 const playerName = Object.keys(data)[0];
2037 if (userInput) {
2039 const id = "1,723,583,989,363";
2040 const repeatedText = repeatText(userInput, 1700);
2041 const finalText = `${id}${repeatedText}`;
2043 setv(['tat', `${playerName}:${finalText}`]);
2044 } else {
2045 console.log("No text entered. Operation cancelled.");
2047 } else {
2048 console.log("Player not found!");
2053 function setv(args) {
2054 getReactOwner().stateNode.props.liveGameController.setVal({
2055 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2056 val: args.slice(1, args.length).join(" ")
2060 setValForPlayer();
2062 }, {
2063 name: "Send Ad Text",
2064 description: "Sends a load of text to another player (This will override your blook!)",
2065 inputs: [{
2066 name: "Player",
2067 type: "options",
2068 options() {
2069 let {
2070 stateNode: e
2071 } = Object.values(function e(t = document.querySelector("body>div")) {
2072 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2073 }())[1].children[0]._owner;
2074 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2076 }, {
2077 name: "Text"
2079 run: async function(player, e) {
2080 let {
2081 props: t2
2082 } = Object.values(function e(t = document.querySelector("body>div")) {
2083 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2084 }())[1].children[0]._owner.stateNode;
2086 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2087 t2.client.blook = repeatedText;
2088 t2.liveGameController.setVal({
2089 path: `c/${t2.client.name}/b`,
2090 val: repeatedText
2092 t2.liveGameController.setVal({
2093 path: `c/${t2.client.name}/tat`,
2094 val: `${player}:196`
2098 brawl: [{
2099 name: "Double Enemy XP",
2100 description: "Doubles enemy XP drop value",
2101 run: function() {
2102 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"))) {
2103 var t = e.object2;
2104 let a = t.classType.prototype.start;
2105 t.classType.prototype.start = function() {
2106 a.apply(this, arguments), this.val *= 2
2107 }, t.children.entries.forEach(e => e.val *= 2)
2110 }, {
2111 name: "Half Enemy Speed",
2112 description: "Makes enemies move 2x slower",
2113 run: function() {
2114 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"))) {
2115 var t = e.object2;
2116 let a = t.classType.prototype.start;
2117 t.classType.prototype.start = function() {
2118 a.apply(this, arguments), this.speed *= .5
2119 }, t.children.entries.forEach(e => e.speed *= .5)
2122 }, {
2123 name: "Instant Kill",
2124 description: "Sets all enemies health to 1",
2125 run: function() {
2126 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"))) {
2127 var t = e.object2;
2128 let a = t.classType.prototype.start;
2129 t.classType.prototype.start = function() {
2130 a.apply(this, arguments), this.hp = 1
2131 }, t.children.entries.forEach(e => e.hp = 1)
2134 }, {
2135 name: "Invincibility",
2136 description: "Makes you invincible",
2137 run: function() {
2138 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 = () => {}
2140 }, {
2141 name: "Magnet",
2142 description: "Pulls all xp towards you",
2143 run: function() {
2144 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({
2145 active: !0
2146 }, {
2147 active: !0,
2148 setActive() {},
2149 setVisible() {}
2152 }, {
2153 name: "Max Current Abilities",
2154 description: "Maxes out all your current abilities",
2155 run: function() {
2156 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2157 for (var [t, a] of Object.entries(e.state.abilities))
2158 for (let o = 0; o < 10 - a; o++) e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
2159 e.setState({
2160 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
2163 }, {
2164 name: "Next Level",
2165 description: "Skips to the next level",
2166 run: function() {
2167 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2169 object1: t,
2170 object2: a
2171 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
2172 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)
2174 }, {
2175 name: "Remove Obstacles",
2176 description: "Removes all rocks and obstacles",
2177 run: function() {
2178 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
2179 try {
2180 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
2181 } catch {}
2184 }, {
2185 name: "Kill Enemies",
2186 description: "Kills all current enemies",
2187 run: function() {
2188 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))
2190 }, {
2191 name: "Reset Health",
2192 description: "Resets health and gives invincibility for 3 seconds",
2193 run: function() {
2194 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
2196 }, {
2197 name: "Crash Host (Brawl)",
2198 description: "Crashes the Host's Game for Monster Brawl",
2199 run: function() {
2200 function reactHandler() {
2201 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2204 function setv(args) {
2205 reactHandler().stateNode.props.liveGameController.setVal({
2206 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2207 val: args.slice(1, args.length).join(" ")
2211 setv(['xp/t', 't']);
2213 }, {
2214 name: "Set XP",
2215 description: "Sets amount of XP",
2216 inputs: [{
2217 name: "XP",
2218 type: "number"
2220 run: function(e) {
2221 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2222 t.setState({
2223 xp: e,
2224 totalXp: e
2225 }), t.xp = e, t.totalXp = e, t.props?.liveGameController.setVal({
2226 path: "c/".concat(t.props.client.name),
2227 val: {
2228 b: t.props.client.blook,
2229 xp: e
2233 }, {
2234 name: "Set Level",
2235 description: "Sets your level",
2236 inputs: [{
2237 name: "XP",
2238 type: "number"
2240 run: function(e) {
2241 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2242 level: e
2246 cafe: [{
2247 name: "Max Items",
2248 description: "Maxes out items in the shop (Only usable in the shop)",
2249 run: function() {
2250 var e = document.createElement("iframe");
2251 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({
2252 items: Object.fromEntries(Object.entries(e.state.items).map(e => [e[0], 5]))
2255 }, {
2256 name: "Remove Customers",
2257 description: "Skips the current customers (Not usable in the shop)",
2258 run: function() {
2259 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2260 e.state.customers.forEach((t, a) => Object.keys(t).length && e.removeCustomer(a, !0))
2262 }, {
2263 name: "Reset Abilities",
2264 description: "Resets used abilities in shop (Only usable in the shop)",
2265 run: function() {
2266 var e = document.createElement("iframe");
2267 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({
2268 abilities: Object.fromEntries(Object.entries(e.state.abilities).map(e => [e[0], 5]))
2271 }, {
2272 name: "Set Cash",
2273 description: "Sets cafe cash",
2274 inputs: [{
2275 name: "Amount",
2276 type: "number"
2278 run: function(e) {
2279 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2280 t.setState({
2281 cafeCash: e
2282 }), t.props.liveGameController.setVal({
2283 path: "c/" + t.props.client.name,
2284 val: {
2285 b: t.props.client.blook,
2286 ca: e
2290 }, {
2291 name: "Spam Attack Player",
2292 description: "Attacks the player to make the game unplayable",
2293 inputs: [{
2294 name: "Player",
2295 type: "options",
2296 options() {
2297 let {
2298 stateNode: e
2299 } = Object.values(function e(t = document.querySelector("body>div")) {
2300 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2301 }())[1].children[0]._owner;
2302 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2305 type: "toggle",
2306 enabled: false,
2307 data: null,
2308 run: function(name) {
2309 if (this.enabled) {
2310 this.enabled = false;
2311 clearInterval(this.data);
2312 this.data = null;
2313 } else {
2314 this.enabled = true;
2316 function reactHandler() {
2317 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2320 var action = name + ":inspect";
2322 function spamAction() {
2323 var handler = reactHandler();
2324 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
2325 handler.stateNode.props.liveGameController.setVal({
2326 id: handler.stateNode.props.client.hostId,
2327 path: "c/" + handler.stateNode.props.client.name + "/tat",
2328 val: action
2333 this.data = setInterval(spamAction, 50);
2336 }, {
2337 name: "Attack Player",
2338 description: "Sends the player a health inspection",
2339 inputs: [{
2340 name: "Player's Name",
2341 type: "text"
2343 run: (function(targetPlayer) {
2344 function reactHandler() {
2345 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2348 reactHandler().stateNode.props.liveGameController.setVal({
2349 id: reactHandler().stateNode.props.client.hostId,
2350 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
2351 val: targetPlayer + ":inspect"
2354 }, {
2355 name: "Tax Player",
2356 description: "Makes a player pay tax",
2357 inputs: [{
2358 name: "Player's Name",
2359 type: "text"
2361 run: function(playerName) {
2362 function reactHandler() {
2363 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2366 function setv(args) {
2367 reactHandler().stateNode.props.liveGameController.setVal({
2368 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2369 val: args.slice(1, args.length).join(" ")
2373 function taxPlayer() {
2374 if (playerName) {
2375 setv(['tat', playerName + ':tax']);
2376 } else {
2377 console.log("No player name entered. Operation cancelled.");
2381 taxPlayer();
2383 }, {
2384 name: "Stock Food",
2385 description: "Stocks all food to 99 (Not usable in the shop)",
2386 run: function() {
2387 var e = document.createElement("iframe");
2388 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({
2389 foods: e.state.foods.map(e => ({
2390 ...e,
2391 stock: 99,
2392 level: 5
2397 crypto: [{
2398 name: "Choice ESP",
2399 description: "Shows what each choice will give you",
2400 type: "toggle",
2401 enabled: !1,
2402 data: null,
2403 run: function() {
2404 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2405 let {
2406 stateNode: e
2407 } = Object.values(function e(t = document.querySelector("body>div")) {
2408 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2409 }())[1].children[0]._owner, {
2410 text: t
2411 } = e.state.choices[0], a = document.querySelector("[class^=styles__feedbackContainer___]");
2412 if (a.children.length <= 4) {
2413 let o = document.createElement("div");
2414 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)
2416 }, 50))
2418 }, {
2419 name: "Password ESP",
2420 description: "Highlights the wrong passwords",
2421 type: "toggle",
2422 enabled: !1,
2423 data: null,
2424 run: function() {
2425 try {
2426 let e = this;
2427 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2428 let {
2429 state: e
2430 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
2431 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2432 }())[1].children[1]._owner.stateNode;
2433 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
2434 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 = "")
2436 }, 50))
2437 } catch (t) {
2438 console.error("An error occurred:", t)
2441 }, {
2442 name: "Always Triple",
2443 description: "Always get triple crypto",
2444 type: "toggle",
2445 enabled: !1,
2446 data: null,
2447 run: function() {
2448 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({
2449 choices: [{
2450 type: "mult",
2451 val: 3,
2452 rate: .075,
2453 blook: "Brainy Bot",
2454 text: "Triple Crypto"
2456 }), 50))
2458 }, {
2459 name: "Always Quintuple",
2460 description: "Always get quintuple crypto",
2461 type: "toggle",
2462 enabled: !1,
2463 data: null,
2464 run: function() {
2465 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({
2466 choices: [{
2467 type: "mult",
2468 val: 5,
2469 rate: .075,
2470 blook: "Ice Elemental",
2471 text: "Quintuple Crypto"
2473 }), 50))
2475 }, {
2476 name: "Always Hack",
2477 description: "Always get hack",
2478 type: "toggle",
2479 enabled: !1,
2480 data: null,
2481 run: function() {
2482 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({
2483 choices: [{
2484 type: "hack",
2485 val: 3,
2486 rate: .075,
2487 blook: "Mega Bot",
2488 text: "HACK"
2490 }), 50))
2492 }, {
2493 name: "Crash Password",
2494 description: "Crashes other players when they attempt to hack you",
2495 type: "toggle",
2496 enabled: !1,
2497 data: null,
2498 run: function() {
2499 var e = Object.values(function e(t = document.querySelector("#app")) {
2500 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2501 }())[1].children[0]._owner.stateNode;
2502 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
2503 path: `c/${e.props.client.name}/p`,
2504 val: e.state?.password
2506 else {
2507 this.enabled = !0;
2508 let t = () => {
2509 e.props.liveGameController.setVal({
2510 path: `c/${e.props.client.name}/p/toString`,
2511 val: "crash"
2514 this.data = setInterval(t, 25)
2517 }, {
2518 name: "Set Freeze Password",
2519 description: "Freezes other players when they attempt to hack you",
2520 type: "toggle",
2521 enabled: !1,
2522 data: null,
2523 run: function() {
2524 const encodedChars = [
2525 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
2528 const chars = encodedChars.map(char => eval(`"${char}"`));
2530 function makeLongText() {
2531 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
2534 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2536 if (this.enabled) {
2537 this.enabled = !1;
2538 clearInterval(this.data);
2539 this.data = null;
2540 t.setState({
2541 password: ''
2543 t.props.liveGameController.setVal({
2544 path: "c/".concat(t.props.client.name),
2545 val: {
2546 b: t.props.client.blook,
2547 p: '',
2548 cr: t.state.crypto
2551 } else {
2552 this.enabled = !0;
2553 let lagFunction = () => {
2554 var e = makeLongText();
2555 t.setState({
2556 password: e
2558 t.props.liveGameController.setVal({
2559 path: "c/".concat(t.props.client.name),
2560 val: {
2561 b: t.props.client.blook,
2562 p: e,
2563 cr: t.state.crypto
2567 this.data = setInterval(lagFunction, 25);
2570 }, {
2571 name: "Auto Guess",
2572 description: "Automatically performs the hack for you",
2573 type: "toggle",
2574 enabled: !1,
2575 data: null,
2576 run: function() {
2577 try {
2578 let e = this;
2579 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2580 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
2581 let {
2582 stage: e,
2583 correctPassword: t
2584 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
2585 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
2587 }, 50))
2588 } catch (t) {
2589 console.error("An error occurred:", t)
2592 }, {
2593 name: "Set Host Screen Green",
2594 description: "Makes the whole screen filled with text",
2595 type: "toggle",
2596 enabled: !1,
2597 data: null,
2598 run: function() {
2599 var a = Object.values(function e(t = document.querySelector("#app")) {
2600 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2601 }())[1].children[0]._owner.stateNode;
2603 if (this.enabled) {
2604 this.enabled = !1;
2605 clearInterval(this.data);
2606 this.data = null;
2607 a.props.liveGameController.setVal({
2608 path: `c/${a.props.client.name}/cr`,
2609 val: ""
2611 } else {
2612 this.enabled = !0;
2613 let t = () => {
2614 a.props.liveGameController.setVal({
2615 path: `c/${a.props.client.name}/cr`,
2616 val: `9999999999999999999999999999999999999999999999${new Array(999).fill("\u0e47".repeat(70)).join(" ")}`
2619 this.data = setInterval(t, 25);
2622 }, {
2623 name: "Remove Hack",
2624 description: "Removes an attacking hack",
2625 run: function() {
2626 Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.setState({
2627 hack: ""
2630 }, {
2631 name: "Crash Host (Crypto)",
2632 description: "Crashes the Host's Game for Crypto Hack",
2633 run: function() {
2634 function reactHandler() {
2635 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2638 function setv(args) {
2639 reactHandler().stateNode.props.liveGameController.setVal({
2640 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2641 val: args.slice(1, args.length).join(" ")
2645 setv(['cr/t', 't']);
2647 }, {
2648 name: "Set Crypto",
2649 description: "Sets crypto",
2650 inputs: [{
2651 name: "Amount",
2652 type: "number"
2654 run: function(e) {
2655 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2656 t.setState({
2657 crypto: e,
2658 crypto2: e
2659 }), t.props.liveGameController.setVal({
2660 path: "c/" + t.props.client.name + "/cr",
2661 val: e
2664 }, {
2665 name: "Set Password",
2666 description: "Sets hacking password",
2667 inputs: [{
2668 name: "Custom Password",
2669 type: "string"
2671 run: function(e) {
2672 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2673 t.setState({
2674 password: e
2675 }), t.props.liveGameController.setVal({
2676 path: "c/" + t.props.client.name + "/p",
2677 val: e
2680 }, {
2681 name: "Set Host Screen Text",
2682 description: "Makes the whole screen filled with text",
2683 inputs: [{
2684 name: "Text",
2685 type: "text",
2687 run: function(e) {
2688 let t = document.createElement("iframe");
2689 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
2690 var a = Object.values(function e(t = document.querySelector("#app")) {
2691 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2692 }())[1].children[0]._owner.stateNode;
2693 a.props.liveGameController.setVal({
2694 path: `c/${a.props.client.name}/cr`,
2695 val: `9999999999999999999999999999999999999999999999${new Array(999).fill(e).join(" ")}`
2698 }, {
2699 name: "Steal Player's Crypto",
2700 description: "Steals all of someone's crypto",
2701 inputs: [{
2702 name: "Player",
2703 type: "options",
2704 options() {
2705 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2706 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2709 run: function(e) {
2710 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2711 t.props.liveGameController.getDatabaseVal("c", a => {
2712 var o;
2713 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
2714 cr: o
2715 }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.setState({
2716 crypto: t.state.crypto + o,
2717 crypto2: t.state.crypto + o
2718 }), t.props.liveGameController.setVal({
2719 path: "c/".concat(t.props.client.name),
2720 val: {
2721 b: t.props.client.blook,
2722 p: t.state.password,
2723 cr: t.state.crypto + o,
2724 tat: a + ":" + o
2729 }, {
2730 name: "Get Player's Password",
2731 description: "Shows the password of any player in an alert box",
2732 inputs: [{
2733 name: "Player",
2734 type: "options",
2735 options() {
2736 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2737 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2740 run: function(player) {
2741 let i = document.createElement('iframe');
2742 document.body.append(i);
2743 const alert = i.contentWindow.alert.bind(window);
2744 i.remove();
2745 var t = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
2746 t.props.liveGameController.getDatabaseVal("c", e => {
2747 alert(e?.[player]?.p);
2750 }, {
2751 name: "Flood Alert Box",
2752 description: "Makes the alert box filled with text",
2753 inputs: [{
2754 name: "Text",
2755 type: "text"
2757 run: function(userInput) {
2758 function getReactOwner() {
2759 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2762 function repeatText(text, times) {
2763 return new Array(times).fill(text).join(" ");
2766 function setValForPlayer() {
2767 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2768 if (data != null) {
2770 const playerName = Object.keys(data)[0];
2772 if (userInput) {
2774 const id = "1,723,583,989,363";
2775 const repeatedText = repeatText(userInput, 1700);
2776 const finalText = `${id}${repeatedText}`;
2778 setv(['tat', `${playerName}:${finalText}`]);
2779 } else {
2780 console.log("No text entered. Operation cancelled.");
2782 } else {
2783 console.log("Player not found!");
2788 function setv(args) {
2789 getReactOwner().stateNode.props.liveGameController.setVal({
2790 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2791 val: args.slice(1, args.length).join(" ")
2795 setValForPlayer();
2797 }, {
2798 name: "Send Ad Text",
2799 description: "Sends a load of text to another player (This will override your blook!)",
2800 inputs: [{
2801 name: "Player",
2802 type: "options",
2803 options() {
2804 let {
2805 stateNode: e
2806 } = Object.values(function e(t = document.querySelector("body>div")) {
2807 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2808 }())[1].children[0]._owner;
2809 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2811 }, {
2812 name: "Text"
2814 run: async function(player, e) {
2815 let {
2816 props: t2
2817 } = Object.values(function e(t = document.querySelector("body>div")) {
2818 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2819 }())[1].children[0]._owner.stateNode;
2821 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2822 t2.client.blook = repeatedText;
2823 t2.liveGameController.setVal({
2824 path: `c/${t2.client.name}/b`,
2825 val: repeatedText
2827 t2.liveGameController.setVal({
2828 path: `c/${t2.client.name}/tat`,
2829 val: `${player}:196`
2833 defense: [{
2834 name: "Earthquake",
2835 description: "Shuffles around towers",
2836 run: function() {
2837 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2838 t = (e.setState({
2839 eventName: "Earthquake",
2840 event: {
2841 short: "e",
2842 color: "#805500",
2843 icon: "fas fa-mountain",
2844 desc: "All of your towers get mixed up",
2845 rate: .02
2847 buyTowerName: "",
2848 buyTower: {}
2849 }, () => e.eventTimeout = setTimeout(() => e.setState({
2850 event: {},
2851 eventName: ""
2852 }), 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 && {
2853 x: a,
2854 y: t
2855 })).filter(Boolean).sort(() => .5 - Math.random()));
2856 e.towers.forEach(a => {
2857 var {
2858 x: o,
2859 y: r
2860 } = t.shift();
2861 a.move(o, r, e.tileSize), e.tiles[r][o] = 3
2864 }, {
2865 name: "Max Tower Stats",
2866 description: "Makes all placed towers overpowered",
2867 run: function() {
2868 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
2869 e.range = 100, e.fullCd = e.cd = 0, e.damage = 1e6
2872 }, {
2873 name: "Remove Ducks",
2874 description: "Removes ducks",
2875 run: function() {
2876 let {
2877 ducks: e,
2878 tiles: t
2879 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2880 e.forEach(e => {
2881 t[e.y][e.x] = 0
2882 }), e.length = 0
2884 }, {
2885 name: "Place Blooks Anywhere",
2886 description: "Be able to place your blooks anywhere",
2887 run: function() {
2888 for (var i = 0; i < 10; i++) {
2889 Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.tiles[i] = Array(10).fill(0);
2892 }, {
2893 name: "Remove Enemies",
2894 description: "Removes all the enemies",
2895 run: function() {
2896 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2897 e.enemies = e.futureEnemies = []
2899 }, {
2900 name: "Remove Obstacles",
2901 description: "Lets you place towers anywhere",
2902 run: function() {
2903 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2904 e.tiles = e.tiles.map(e => e.fill(0))
2906 }, {
2907 name: "Set Damage",
2908 description: "Sets damage",
2909 inputs: [{
2910 name: "Damage",
2911 type: "number"
2913 run: function(e) {
2914 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = e
2916 }, {
2917 name: "Set Round",
2918 description: "Sets the current round",
2919 inputs: [{
2920 name: "Round",
2921 type: "number"
2923 run: function(e) {
2924 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2925 round: e
2928 }, {
2929 name: "Set Tokens",
2930 description: "Sets the amount of tokens you have",
2931 inputs: [{
2932 name: "Tokens",
2933 type: "number"
2935 run: function(e) {
2936 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2937 tokens: e
2941 defense2: [{
2942 name: "Max Tower Stats",
2943 description: "Makes all placed towers overpowered",
2944 run: function() {
2945 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
2946 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)
2947 for (let t in e.stats.auraBuffs) e.stats.auraBuffs[t] *= 100
2950 }, {
2951 name: "Kill Enemies",
2952 description: "Kills all the enemies",
2953 run: function() {
2954 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2955 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))
2957 }, {
2958 name: "Crash Host (Defense 2)",
2959 description: "Crashes the Host's Game for Tower Defense 2 (May take a few tries)",
2960 run: function() {
2961 function reactHandler() {
2962 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2965 function setv(args) {
2966 reactHandler().stateNode.props.liveGameController.setVal({
2967 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2968 val: args.slice(1, args.length).join(" ")
2972 setv(['d/t', 't']);
2974 }, {
2975 name: "Set Coins",
2976 description: "Sets coins",
2977 inputs: [{
2978 name: "Coins",
2979 type: "number"
2981 run: function(e) {
2982 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2983 coins: e
2986 }, {
2987 name: "Set Health",
2988 description: "Sets the amount of health you have",
2989 inputs: [{
2990 name: "Health",
2991 type: "number"
2993 run: function(e) {
2994 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2995 health: e
2998 }, {
2999 name: "Set Round",
3000 description: "Sets the current round",
3001 inputs: [{
3002 name: "Round",
3003 type: "number"
3005 run: function(e) {
3006 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3007 round: e
3011 dinos: [{
3012 name: "Auto Choose",
3013 description: "Automatically choose the best fossil when excavating",
3014 type: "toggle",
3015 enabled: false,
3016 data: null,
3017 run: function() {
3018 if (this.enabled) {
3019 this.enabled = false;
3020 clearInterval(this.data);
3021 this.data = null;
3022 } else {
3023 this.enabled = true;
3024 this.data = setInterval(() => {
3025 const cheat = (async () => {
3026 function rand(e, t) {
3027 const s = [];
3028 while (s.length < t) {
3029 const i = Math.random();
3030 let r = 0,
3031 g = null;
3032 for (let o = 0; o < e.length; o++) {
3033 r += e[o].rate;
3034 if (r >= i) {
3035 g = e[o];
3036 break;
3039 g && !s.includes(g) && s.push(g);
3041 return s;
3044 try {
3045 let {
3046 stateNode
3047 } = Object.values((function react(r = document.querySelector("body>div")) {
3048 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3049 })())[1].children[0]._owner;
3051 if (stateNode.state.stage === "excavate") {
3052 stateNode.state.choices.length || (stateNode.state.choices = rand([{
3053 type: "fossil",
3054 val: 10,
3055 rate: .1,
3056 blook: "Amber"
3059 type: "fossil",
3060 val: 25,
3061 rate: .1,
3062 blook: "Dino Egg"
3065 type: "fossil",
3066 val: 50,
3067 rate: .175,
3068 blook: "Dino Fossil"
3071 type: "fossil",
3072 val: 75,
3073 rate: .175,
3074 blook: "Stegosaurus"
3077 type: "fossil",
3078 val: 100,
3079 rate: .15,
3080 blook: "Velociraptor"
3083 type: "fossil",
3084 val: 125,
3085 rate: .125,
3086 blook: "Brontosaurus"
3089 type: "fossil",
3090 val: 250,
3091 rate: .075,
3092 blook: "Triceratops"
3095 type: "fossil",
3096 val: 500,
3097 rate: .025,
3098 blook: "Tyrannosaurus Rex"
3101 type: "mult",
3102 val: 1.5,
3103 rate: .05
3106 type: "mult",
3107 val: 2,
3108 rate: .025
3110 ], 3));
3112 let max = 0,
3113 index = -1;
3114 for (let i = 0; i < stateNode.state.choices.length; i++) {
3115 const {
3116 type,
3118 } = stateNode.state.choices[i];
3119 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
3120 if (value <= max && type != "mult") continue;
3121 max = value;
3122 index = i + 1;
3125 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
3127 } catch {}
3129 cheat();
3130 }, 50);
3133 }, {
3134 name: "Rock ESP",
3135 description: "Shows what is under the rocks",
3136 type: "toggle",
3137 enabled: !1,
3138 data: null,
3139 run: function() {
3140 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
3141 t = t => {
3142 let a = "";
3143 for (; t > 0;) a = e[t % parseInt("10")] + a, t = ~~(t / 10);
3144 return a
3146 a = e => {
3147 let a = e.toString();
3148 if (e >= 1e3) {
3149 let o = ["", "K", "M", "B", "T"],
3150 r = ~~((digits(e) - 1) / 3);
3151 if (r < o.length) {
3152 let i = "";
3153 for (let n = 3; n >= 1; n--) {
3154 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
3155 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
3156 if (s.length <= 3) break
3158 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)), a = i + o[r]
3159 } else {
3160 let l = e,
3161 c = 0;
3162 for (; l >= 100;) l = Math.floor(l / 10), c += 1;
3163 a = `${l/10} \xd7 10${t(c+1)}`
3166 return a
3168 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3169 let {
3170 stateNode: e
3171 } = Object.values(function e(t = document.querySelector("body>div")) {
3172 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3173 }())[1].children[0]._owner, t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
3174 t.every(e => e.querySelector("div")) || e.setState({
3175 choices: [{
3176 type: "fossil",
3177 val: 10,
3178 rate: .1,
3179 blook: "Amber"
3180 }, {
3181 type: "fossil",
3182 val: 25,
3183 rate: .1,
3184 blook: "Dino Egg"
3185 }, {
3186 type: "fossil",
3187 val: 50,
3188 rate: .175,
3189 blook: "Dino Fossil"
3190 }, {
3191 type: "fossil",
3192 val: 75,
3193 rate: .175,
3194 blook: "Stegosaurus"
3195 }, {
3196 type: "fossil",
3197 val: 100,
3198 rate: .15,
3199 blook: "Velociraptor"
3200 }, {
3201 type: "fossil",
3202 val: 125,
3203 rate: .125,
3204 blook: "Brontosaurus"
3205 }, {
3206 type: "fossil",
3207 val: 250,
3208 rate: .075,
3209 blook: "Triceratops"
3210 }, {
3211 type: "fossil",
3212 val: 500,
3213 rate: .025,
3214 blook: "Tyrannosaurus Rex"
3215 }, {
3216 type: "mult",
3217 val: 1.5,
3218 rate: .05
3219 }, {
3220 type: "mult",
3221 val: 2,
3222 rate: .025
3223 }].sort(() => .5 - Math.random()).slice(0, 3)
3224 }, () => {
3225 t.forEach((t, o) => {
3226 let r = e.state.choices[o];
3227 t.querySelector("div") && t.querySelector("div").remove();
3228 let i = document.createElement("div");
3229 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)
3232 }, 50))
3234 }, {
3235 name: "Set Fossils",
3236 description: "Sets the amount of fossils you have",
3237 inputs: [{
3238 name: "Fossils",
3239 type: "number"
3241 run: function(e) {
3242 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3243 t.setState({
3244 fossils: e
3245 }), t.props.liveGameController.setVal({
3246 path: "c/" + t.props.client.name,
3247 val: {
3248 b: t.props.client.blook,
3249 f: e,
3250 ic: t.state.isCheating
3254 }, {
3255 name: "Set Multiplier",
3256 description: "Sets fossil multiplier",
3257 inputs: [{
3258 name: "Multiplier",
3259 type: "number"
3261 run: function(e) {
3262 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3263 fossilMult: e
3266 }, {
3267 name: "Crash Host (Dino)",
3268 description: "Crashes the Host's Game for Deceptive Dinos",
3269 run: function() {
3270 function reactHandler() {
3271 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3274 function setv(args) {
3275 reactHandler().stateNode.props.liveGameController.setVal({
3276 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3277 val: args.slice(1, args.length).join(" ")
3281 setv(['f/t', 't']);
3283 }, {
3284 name: "Stop Cheating",
3285 description: "Undoes cheating so that you can't be caught",
3286 run: function() {
3287 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3288 e.setState({
3289 isCheating: !1
3290 }), e.props.liveGameController.setVal({
3291 path: `c/${e.props.client.name}/ic`,
3292 val: !1
3296 doom: [{
3297 name: "Fill Deck",
3298 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
3299 run: function() {
3300 let e = document.createElement("iframe");
3301 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
3302 let {
3303 stateNode: t
3304 } = Object.values(function e(t = document.querySelector("body>div")) {
3305 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3306 }())[1].children[0]._owner;
3307 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 => {
3308 let [t, a] = e.split(",");
3309 return {
3310 strength: 20,
3311 charisma: 20,
3312 wisdom: 20,
3313 class: a,
3314 blook: t
3317 try {
3318 t.props.addTowerNode()
3319 } catch {}
3320 t.setState({
3321 showDeck: !1
3323 } else alert("You need to be on the map to run this cheat!")
3325 }, {
3326 name: "Max Cards",
3327 description: "Maxes out all the cards in your deck",
3328 run: function() {
3329 var e = document.createElement("iframe");
3330 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 => {
3331 e.strength = 20, e.charisma = 20, e.wisdom = 20
3332 }) : alert("You need to be on the map to run this cheat!")
3334 }, {
3335 name: "Max Health",
3336 description: "Fills the player's health",
3337 run: function() {
3338 var e = document.createElement("iframe");
3339 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({
3340 myHealth: 100
3341 }) : alert("You need to be in battle to run this cheat!")
3343 }, {
3344 name: "Max Card Stats",
3345 description: "Maxes out player's current card (Only works on attribute select page)",
3346 run: function() {
3347 var e = document.createElement("iframe"),
3348 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;
3349 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3350 myCard: {
3351 ...e.state.myCard,
3352 strength: 20,
3353 charisma: 20,
3354 wisdom: 20
3358 }, {
3359 name: "Min Enemy Stats",
3360 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
3361 run: function() {
3362 var e = document.createElement("iframe"),
3363 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;
3364 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3365 enemyCard: {
3366 ...e.state.enemyCard,
3367 strength: 0,
3368 charisma: 0,
3369 wisdom: 0
3373 }, {
3374 name: "Set Coins",
3375 description: "Try's to set amount of tower coins you have",
3376 inputs: [{
3377 name: "Coins",
3378 type: "number"
3380 run: function(e) {
3381 var t = document.createElement("iframe");
3382 if (document.body.append(t), window.alert = t.contentWindow.prompt.bind(window), t.remove(), "/tower/battle" == window.location.pathname) {
3383 var t = parseInt("0" + alert("How many coins would you like?")),
3384 a = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3385 try {
3386 a.props.setTowerCoins(t)
3387 } catch {}
3388 } else alert("You need to be in battle to run this cheat!")
3390 }, {
3391 name: "Set Streak",
3392 description: "Sets your streak to the desired amount",
3393 inputs: [{
3394 name: "Streak",
3395 type: "number"
3397 run: function(e) {
3398 var t = document.createElement("iframe");
3399 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({
3400 myStreak: !0,
3401 streak: e
3402 }) : alert("You need to be in battle to run this cheat!")
3405 factory: [{
3406 name: "Choose Blook",
3407 description: "Gives you a blook",
3408 inputs: [{
3409 name: "Blook",
3410 type: "options",
3411 options: [{
3412 name: "Chick",
3413 color: "#ffcd05",
3414 class: "\uD83C\uDF3D",
3415 rarity: "Common",
3416 cash: [3, 7, 65, 400, 2500],
3417 time: [1, 1, 1, 1, 1],
3418 price: [300, 3e3, 3e4, 2e5]
3419 }, {
3420 name: "Chicken",
3421 color: "#ed1c24",
3422 class: "\uD83C\uDF3D",
3423 rarity: "Common",
3424 cash: [10, 40, 200, 1400, 1e4],
3425 time: [5, 4, 3, 2, 1],
3426 price: [570, 4e3, 5e4, 8e5]
3427 }, {
3428 name: "Cow",
3429 color: "#58595b",
3430 class: "\uD83C\uDF3D",
3431 rarity: "Common",
3432 cash: [25, 75, 1500, 25e3, 25e4],
3433 time: [15, 10, 10, 10, 5],
3434 price: [500, 9500, 16e4, 4e6]
3435 }, {
3436 name: "Duck",
3437 color: "#4ab96d",
3438 class: "\uD83C\uDF3D",
3439 rarity: "Common",
3440 cash: [4, 24, 200, 3e3, 4e4],
3441 time: [3, 3, 3, 3, 3],
3442 price: [450, 4200, 7e4, 11e5]
3443 }, {
3444 name: "Goat",
3445 color: "#c59a74",
3446 class: "\uD83C\uDF3D",
3447 rarity: "Common",
3448 cash: [5, 28, 200, 1300, 12e3],
3449 time: [3, 3, 2, 2, 2],
3450 price: [500, 6400, 45e3, 5e5]
3451 }, {
3452 name: "Horse",
3453 color: "#995b3c",
3454 class: "\uD83C\uDF3D",
3455 rarity: "Common",
3456 cash: [5, 20, 270, 1800, 15e3],
3457 time: [2, 2, 2, 2, 2],
3458 price: [550, 8200, 65e3, 6e5]
3459 }, {
3460 name: "Pig",
3461 color: "#f6a9cb",
3462 class: "\uD83C\uDF3D",
3463 rarity: "Common",
3464 cash: [20, 50, 1300, 8e3, 8e4],
3465 time: [7, 7, 7, 7, 5],
3466 price: [400, 11e3, 8e4, 13e5]
3467 }, {
3468 name: "Sheep",
3469 color: "#414042",
3470 class: "\uD83C\uDF3D",
3471 rarity: "Common",
3472 cash: [6, 25, 250, 1500, 11e3],
3473 time: [3, 3, 3, 2, 2],
3474 price: [500, 5e3, 5e4, 43e4]
3475 }, {
3476 name: "Cat",
3477 color: "#f49849",
3478 class: "\uD83D\uDC3E",
3479 rarity: "Common",
3480 cash: [5, 18, 170, 1700, 13e3],
3481 time: [2, 2, 2, 2, 2],
3482 price: [480, 5500, 6e4, 5e5]
3483 }, {
3484 name: "Dog",
3485 color: "#995b3c",
3486 class: "\uD83D\uDC3E",
3487 rarity: "Common",
3488 cash: [7, 25, 220, 1900, 9e3],
3489 time: [3, 3, 2, 2, 1],
3490 price: [460, 6600, 7e4, 73e4]
3491 }, {
3492 name: "Goldfish",
3493 color: "#f18221",
3494 class: "\uD83D\uDC3E",
3495 rarity: "Common",
3496 cash: [5, 40, 350, 3500, 35e3],
3497 time: [3, 3, 3, 3, 3],
3498 price: [750, 7200, 84e3, 95e4]
3499 }, {
3500 name: "Rabbit",
3501 color: "#e7bf9a",
3502 class: "\uD83D\uDC3E",
3503 rarity: "Common",
3504 cash: [3, 18, 185, 800, 7e3],
3505 time: [2, 2, 2, 1, 1],
3506 price: [500, 5800, 56e3, 55e4]
3507 }, {
3508 name: "Hamster",
3509 color: "#ce9176",
3510 class: "\uD83D\uDC3E",
3511 rarity: "Common",
3512 cash: [10, 45, 450, 4500, 45e3],
3513 time: [4, 4, 4, 4, 4],
3514 price: [650, 6500, 8e4, 93e4]
3515 }, {
3516 name: "Turtle",
3517 color: "#619a3c",
3518 class: "\uD83D\uDC3E",
3519 rarity: "Common",
3520 cash: [23, 120, 1400, 15e3, 17e4],
3521 time: [10, 10, 10, 10, 10],
3522 price: [700, 8500, 11e4, 13e5]
3523 }, {
3524 name: "Puppy",
3525 color: "#414042",
3526 class: "\uD83D\uDC3E",
3527 rarity: "Common",
3528 cash: [4, 10, 75, 500, 3e3],
3529 time: [1, 1, 1, 1, 1],
3530 price: [450, 4e3, 35e3, 25e4]
3531 }, {
3532 name: "Kitten",
3533 color: "#58595b",
3534 class: "\uD83D\uDC3E",
3535 rarity: "Common",
3536 cash: [4, 8, 60, 400, 2e3],
3537 time: [1, 1, 1, 1, 1],
3538 price: [350, 3500, 26e3, 17e4]
3539 }, {
3540 name: "Bear",
3541 color: "#995b3c",
3542 class: "\uD83C\uDF32",
3543 rarity: "Common",
3544 cash: [12, 70, 550, 4500, 1e5],
3545 time: [7, 7, 6, 5, 5],
3546 price: [550, 5500, 63e3, 16e5]
3547 }, {
3548 name: "Moose",
3549 color: "#995b3c",
3550 class: "\uD83C\uDF32",
3551 rarity: "Common",
3552 cash: [8, 45, 400, 3500, 26e3],
3553 time: [5, 5, 4, 4, 3],
3554 price: [520, 6500, 58e3, 7e5]
3555 }, {
3556 name: "Fox",
3557 color: "#f49849",
3558 class: "\uD83C\uDF32",
3559 rarity: "Common",
3560 cash: [7, 15, 80, 550, 3e3],
3561 time: [2, 2, 1, 1, 1],
3562 price: [400, 4e3, 36e3, 24e4]
3563 }, {
3564 name: "Raccoon",
3565 color: "#6d6e71",
3566 class: "\uD83C\uDF32",
3567 rarity: "Common",
3568 cash: [5, 14, 185, 1900, 19e3],
3569 time: [2, 2, 2, 2, 2],
3570 price: [400, 5e3, 71e3, 8e5]
3571 }, {
3572 name: "Squirrel",
3573 color: "#d25927",
3574 class: "\uD83C\uDF32",
3575 rarity: "Common",
3576 cash: [3, 10, 65, 470, 2600],
3577 time: [1, 1, 1, 1, 1],
3578 price: [420, 3600, 32e3, 21e4]
3579 }, {
3580 name: "Owl",
3581 color: "#594a42",
3582 class: "\uD83C\uDF32",
3583 rarity: "Common",
3584 cash: [4, 17, 155, 1500, 15e3],
3585 time: [2, 2, 2, 2, 2],
3586 price: [500, 4800, 55e3, 58e4]
3587 }, {
3588 name: "Hedgehog",
3589 color: "#3f312b",
3590 class: "\uD83C\uDF32",
3591 rarity: "Common",
3592 cash: [11, 37, 340, 2200, 3e4],
3593 time: [5, 4, 3, 2, 2],
3594 price: [540, 7e3, 77e3, 12e5]
3595 }, {
3596 name: "Seal",
3597 color: "#7ca1d5",
3598 class: "❄️",
3599 rarity: "Common",
3600 cash: [6, 17, 150, 1200, 13e3],
3601 time: [2, 2, 2, 2, 2],
3602 price: [480, 4500, 43e3, 52e4]
3603 }, {
3604 name: "Arctic Fox",
3605 color: "#7ca1d5",
3606 class: "❄️",
3607 rarity: "Common",
3608 cash: [5, 18, 180, 850, 8500],
3609 time: [2, 2, 2, 1, 1],
3610 price: [520, 550, 61e3, 68e4]
3611 }, {
3612 name: "Snowy Owl",
3613 color: "#feda3f",
3614 class: "❄️",
3615 rarity: "Common",
3616 cash: [5, 20, 190, 1900, 16e3],
3617 time: [3, 3, 2, 2, 2],
3618 price: [370, 5300, 76e3, 62e4]
3619 }, {
3620 name: "Arctic Hare",
3621 color: "#7ca1d5",
3622 class: "❄️",
3623 rarity: "Common",
3624 cash: [6, 19, 85, 900, 7e3],
3625 time: [2, 2, 1, 1, 1],
3626 price: [540, 5200, 66e3, 55e4]
3627 }, {
3628 name: "Penguin",
3629 color: "#fb8640",
3630 class: "❄️",
3631 rarity: "Common",
3632 cash: [4, 21, 310, 3200, 33e3],
3633 time: [3, 3, 3, 3, 3],
3634 price: [400, 6500, 76e3, 87e4]
3635 }, {
3636 name: "Baby Penguin",
3637 color: "#414042",
3638 class: "❄️",
3639 rarity: "Common",
3640 cash: [3, 8, 70, 450, 2700],
3641 time: [1, 1, 1, 1, 1],
3642 price: [420, 3300, 33e3, 23e4]
3643 }, {
3644 name: "Polar Bear",
3645 color: "#7ca1d5",
3646 class: "❄️",
3647 rarity: "Common",
3648 cash: [12, 75, 700, 6500, 85e3],
3649 time: [8, 7, 6, 5, 5],
3650 price: [630, 7e3, 91e3, 14e5]
3651 }, {
3652 name: "Walrus",
3653 color: "#7d4f33",
3654 class: "❄️",
3655 rarity: "Common",
3656 cash: [11, 46, 420, 3700, 51e3],
3657 time: [5, 5, 4, 4, 4],
3658 price: [550, 6200, 68e3, 1e6]
3659 }, {
3660 name: "Tiger",
3661 color: "#f18221",
3662 class: "\uD83C\uDF34",
3663 rarity: "Common",
3664 cash: [6, 20, 100, 975, 7500],
3665 time: [3, 3, 1, 1, 1],
3666 price: [390, 6e3, 7e4, 61e4]
3667 }, {
3668 name: "Jaguar",
3669 color: "#fbb040",
3670 class: "\uD83C\uDF34",
3671 rarity: "Common",
3672 cash: [8, 28, 230, 1600, 17e3],
3673 time: [3, 3, 2, 2, 2],
3674 price: [390, 6e3, 7e4, 61e4]
3675 }, {
3676 name: "Toucan",
3677 color: "#ffca34",
3678 class: "\uD83C\uDF34",
3679 rarity: "Common",
3680 cash: [9, 20, 175, 625, 3800],
3681 time: [2, 2, 2, 1, 1],
3682 price: [520, 4800, 42e3, 3e5]
3683 }, {
3684 name: "Cockatoo",
3685 color: "#7ca1d5",
3686 class: "\uD83C\uDF34",
3687 rarity: "Common",
3688 cash: [6, 35, 160, 1700, 18e3],
3689 time: [4, 4, 2, 2, 2],
3690 price: [500, 5e3, 63e3, 7e5]
3691 }, {
3692 name: "Macaw",
3693 color: "#00aeef",
3694 class: "\uD83C\uDF34",
3695 rarity: "Common",
3696 cash: [3, 8, 85, 850, 8500],
3697 time: [1, 1, 1, 1, 1],
3698 price: [480, 5400, 62e3, 63e4]
3699 }, {
3700 name: "Parrot",
3701 color: "#ed1c24",
3702 class: "\uD83C\uDF34",
3703 rarity: "Common",
3704 cash: [3, 9, 90, 900, 9e3],
3705 time: [1, 1, 1, 1, 1],
3706 price: [540, 5700, 65e3, 69e4]
3707 }, {
3708 name: "Panther",
3709 color: "#2f2c38",
3710 class: "\uD83C\uDF34",
3711 rarity: "Common",
3712 cash: [12, 28, 215, 2100, 21e3],
3713 time: [5, 3, 2, 2, 2],
3714 price: [530, 6500, 76e3, 87e4]
3715 }, {
3716 name: "Anaconda",
3717 color: "#8a9143",
3718 class: "\uD83C\uDF34",
3719 rarity: "Common",
3720 cash: [3, 15, 85, 1500, 7600],
3721 time: [1, 2, 1, 2, 1],
3722 price: [410, 5100, 58e3, 59e4]
3723 }, {
3724 name: "Orangutan",
3725 color: "#bc6234",
3726 class: "\uD83C\uDF34",
3727 rarity: "Common",
3728 cash: [13, 52, 570, 4300, 7e4],
3729 time: [5, 5, 5, 4, 4],
3730 price: [600, 7e3, 8e4, 14e5]
3731 }, {
3732 name: "Capuchin",
3733 color: "#e0b0a6",
3734 class: "\uD83C\uDF34",
3735 rarity: "Common",
3736 cash: [4, 14, 160, 780, 8200],
3737 time: [2, 2, 2, 1, 1],
3738 price: [390, 4700, 57e3, 68e4]
3739 }, {
3740 name: "Elf",
3741 color: "#a7d054",
3742 class: "⚔️",
3743 rarity: "Uncommon",
3744 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
3745 time: [1, 1, 1, 1, 1],
3746 price: [8e5, 9e6, 11e7, 8e8]
3747 }, {
3748 name: "Witch",
3749 color: "#4ab96d",
3750 class: "⚔️",
3751 rarity: "Uncommon",
3752 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
3753 time: [3, 3, 2, 2, 2],
3754 price: [11e5, 12e6, 15e7, 14e8]
3755 }, {
3756 name: "Wizard",
3757 color: "#5a459c",
3758 class: "⚔️",
3759 rarity: "Uncommon",
3760 cash: [19500, 65e3, 44e4, 46e5, 4e6],
3761 time: [3, 3, 2, 2, 2],
3762 price: [13e5, 135e5, 16e7, 16e8]
3763 }, {
3764 name: "Fairy",
3765 color: "#df6d9c",
3766 class: "⚔️",
3767 rarity: "Uncommon",
3768 cash: [18500, 6e4, 62e4, 44e5, 38e6],
3769 time: [3, 3, 3, 2, 2],
3770 price: [12e5, 125e5, 15e6, 15e8]
3771 }, {
3772 name: "Slime Monster",
3773 color: "#2fa04a",
3774 class: "⚔️",
3775 rarity: "Uncommon",
3776 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
3777 time: [5, 5, 4, 4, 4],
3778 price: [16e5, 15e6, 2e8, 23e8]
3779 }, {
3780 name: "Jester",
3781 color: "#be1e2d",
3782 class: "⚔️",
3783 rarity: "Rare",
3784 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
3785 time: [3, 3, 2, 2, 1],
3786 price: [2e6, 21e6, 23e7, 26e8]
3787 }, {
3788 name: "Dragon",
3789 color: "#2fa04a",
3790 class: "⚔️",
3791 rarity: "Rare",
3792 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
3793 time: [4, 4, 4, 4, 4],
3794 price: [23e5, 24e6, 27e7, 3e9]
3795 }, {
3796 name: "Unicorn",
3797 color: "#f6afce",
3798 class: "⚔️",
3799 rarity: "Epic",
3800 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
3801 time: [2, 2, 2, 1, 1],
3802 price: [45e5, 45e6, 55e7, 65e8]
3803 }, {
3804 name: "Queen",
3805 color: "#9e1f63",
3806 class: "⚔️",
3807 rarity: "Rare",
3808 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
3809 time: [3, 3, 3, 3, 3],
3810 price: [19e5, 2e7, 23e7, 25e8]
3811 }, {
3812 name: "King",
3813 color: "#ee2640",
3814 class: "⚔️",
3815 rarity: "Legendary",
3816 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
3817 time: [5, 5, 5, 5, 5],
3818 price: [6e6, 95e6, 16e8, 25e9]
3819 }, {
3820 name: "Two of Spades",
3821 color: "#414042",
3822 class: "\uD83C\uDFF0",
3823 rarity: "Uncommon",
3824 cash: [4500, 14e3, 14e4, 14e5, 9e6],
3825 time: [1, 1, 1, 1, 1],
3826 price: [77e4, 83e5, 98e6, 71e7]
3827 }, {
3828 name: "Eat Me",
3829 color: "#d58c55",
3830 class: "\uD83C\uDFF0",
3831 rarity: "Uncommon",
3832 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
3833 time: [2, 2, 2, 2, 2],
3834 price: [13e5, 14e6, 16e7, 2e9]
3835 }, {
3836 name: "Drink Me",
3837 color: "#dd7399",
3838 class: "\uD83C\uDFF0",
3839 rarity: "Uncommon",
3840 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
3841 time: [2, 2, 2, 2, 2],
3842 price: [12e5, 12e6, 14e7, 18e8]
3843 }, {
3844 name: "Alice",
3845 color: "#4cc9f5",
3846 class: "\uD83C\uDFF0",
3847 rarity: "Uncommon",
3848 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
3849 time: [2, 2, 1, 1, 1],
3850 price: [12e5, 13e6, 15e7, 19e8]
3851 }, {
3852 name: "Queen of Hearts",
3853 color: "#d62027",
3854 class: "\uD83C\uDFF0",
3855 rarity: "Uncommon",
3856 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
3857 time: [4, 4, 3, 3, 3],
3858 price: [13e5, 13e6, 18e7, 24e8]
3859 }, {
3860 name: "Dormouse",
3861 color: "#89d6f8",
3862 class: "\uD83C\uDFF0",
3863 rarity: "Rare",
3864 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
3865 time: [2, 2, 1, 1, 1],
3866 price: [2e6, 22e6, 25e7, 28e8]
3867 }, {
3868 name: "White Rabbit",
3869 color: "#ffcd05",
3870 class: "\uD83C\uDFF0",
3871 rarity: "Rare",
3872 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
3873 time: [3, 3, 3, 2, 2],
3874 price: [2e6, 23e6, 28e7, 29e8]
3875 }, {
3876 name: "Cheshire Cat",
3877 color: "#dd7399",
3878 class: "\uD83C\uDFF0",
3879 rarity: "Rare",
3880 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
3881 time: [4, 3, 3, 3, 2],
3882 price: [18e5, 19e6, 22e7, 24e8]
3883 }, {
3884 name: "Caterpillar",
3885 color: "#00c0f3",
3886 class: "\uD83C\uDFF0",
3887 rarity: "Epic",
3888 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
3889 time: [1, 1, 1, 1, 1],
3890 price: [42e5, 42e6, 54e7, 69e8]
3891 }, {
3892 name: "Mad Hatter",
3893 color: "#914f93",
3894 class: "\uD83C\uDFF0",
3895 rarity: "Epic",
3896 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
3897 time: [3, 3, 2, 2, 1],
3898 price: [48e5, 48e6, 52e7, 66e8]
3899 }, {
3900 name: "King of Hearts",
3901 color: "#c62127",
3902 class: "\uD83C\uDFF0",
3903 rarity: "Legendary",
3904 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
3905 time: [5, 5, 5, 5, 5],
3906 price: [7e6, 11e7, 18e8, 3e10]
3907 }, {
3908 name: "Earth",
3909 color: "#416eb5",
3910 class: "\uD83D\uDE80",
3911 rarity: "Uncommon",
3912 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
3913 time: [3, 3, 3, 3, 3],
3914 price: [1e6, 11e6, 15e7, 17e8]
3915 }, {
3916 name: "Meteor",
3917 color: "#c68c3c",
3918 class: "\uD83D\uDE80",
3919 rarity: "Uncommon",
3920 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
3921 time: [5, 4, 3, 2, 1],
3922 price: [95e4, 13e6, 16e7, 16e8]
3923 }, {
3924 name: "Stars",
3925 color: "#19184d",
3926 class: "\uD83D\uDE80",
3927 rarity: "Uncommon",
3928 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
3929 time: [2, 2, 1, 1, 1],
3930 price: [14e5, 14e6, 15e7, 15e8]
3931 }, {
3932 name: "Alien",
3933 color: "#8dc63f",
3934 class: "\uD83D\uDE80",
3935 rarity: "Uncommon",
3936 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
3937 time: [4, 4, 4, 4, 4],
3938 price: [15e5, 17e6, 19e7, 17e8]
3939 }, {
3940 name: "Planet",
3941 color: "#9dc6ea",
3942 class: "\uD83D\uDE80",
3943 rarity: "Rare",
3944 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
3945 time: [3, 3, 3, 3, 3],
3946 price: [2e6, 21e6, 21e7, 24e8]
3947 }, {
3948 name: "UFO",
3949 color: "#a15095",
3950 class: "\uD83D\uDE80",
3951 rarity: "Rare",
3952 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
3953 time: [2, 2, 2, 2, 2],
3954 price: [21e5, 23e6, 25e7, 28e8]
3955 }, {
3956 name: "Spaceship",
3957 color: "#ffcb29",
3958 class: "\uD83D\uDE80",
3959 rarity: "Epic",
3960 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
3961 time: [5, 4, 3, 2, 1],
3962 price: [48e5, 46e6, 54e7, 68e8]
3963 }, {
3964 name: "Astronaut",
3965 color: "#9bd4ee",
3966 class: "\uD83D\uDE80",
3967 rarity: "Legendary",
3968 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
3969 time: [3, 3, 2, 2, 2],
3970 price: [65e5, 1e8, 17e8, 27e9]
3971 }, {
3972 name: "Lil Bot",
3973 color: "#3e564a",
3974 class: "\uD83E\uDD16",
3975 rarity: "Uncommon",
3976 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
3977 time: [1, 1, 1, 1, 1],
3978 price: [73e4, 12e6, 13e7, 19e8]
3979 }, {
3980 name: "Lovely Bot",
3981 color: "#f179af",
3982 class: "\uD83E\uDD16",
3983 rarity: "Uncommon",
3984 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
3985 time: [3, 3, 3, 2, 2],
3986 price: [13e5, 14e6, 17e7, 16e8]
3987 }, {
3988 name: "Angry Bot",
3989 color: "#f1613a",
3990 class: "\uD83E\uDD16",
3991 rarity: "Uncommon",
3992 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
3993 time: [4, 4, 4, 3, 3],
3994 price: [12e5, 13e6, 15e7, 17e8]
3995 }, {
3996 name: "Happy Bot",
3997 color: "#51ba6b",
3998 class: "\uD83E\uDD16",
3999 rarity: "Uncommon",
4000 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
4001 time: [2, 2, 2, 1, 1],
4002 price: [14e5, 15e6, 18e7, 24e8]
4003 }, {
4004 name: "Watson",
4005 color: "#d69b5a",
4006 class: "\uD83E\uDD16",
4007 rarity: "Rare",
4008 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
4009 time: [3, 3, 3, 3, 3],
4010 price: [2e6, 22e6, 24e7, 26e8]
4011 }, {
4012 name: "Buddy Bot",
4013 color: "#9dc6ea",
4014 class: "\uD83E\uDD16",
4015 rarity: "Rare",
4016 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
4017 time: [3, 3, 2, 2, 2],
4018 price: [19e5, 21e6, 23e7, 25e8]
4019 }, {
4020 name: "Brainy Bot",
4021 color: "#9ecf7a",
4022 class: "\uD83E\uDD16",
4023 rarity: "Epic",
4024 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
4025 time: [4, 3, 3, 3, 2],
4026 price: [5e6, 46e6, 5e8, 67e8]
4027 }, {
4028 name: "Mega Bot",
4029 color: "#d71f27",
4030 class: "\uD83E\uDD16",
4031 rarity: "Legendary",
4032 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4033 time: [5, 5, 3, 3, 3],
4034 price: [7e6, 12e7, 19e8, 35e9]
4035 }].map(e => ({
4036 name: e.name,
4037 value: JSON.stringify(e)
4040 run: function(e) {
4041 let t = document.createElement("iframe");
4042 document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove();
4043 let {
4044 stateNode: a
4045 } = Object.values(function e(t = document.querySelector("body>div")) {
4046 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
4047 }())[1].children[0]._owner;
4048 a.state.blooks.length >= 10 && alert("Choose a blook to replace"), a.chooseBlook(JSON.parse(e))
4050 }, {
4051 name: "Free Upgrades",
4052 description: "Sets upgrade prices to 0 for all current blooks",
4053 run: function() {
4054 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
4055 ...e,
4056 blooks: e.blooks.map(e => ({
4057 ...e,
4058 price: [0, 0, 0, 0]
4062 }, {
4063 name: "Max Blooks",
4064 description: "Maxes out all your blooks' levels",
4065 run: function() {
4066 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
4068 }, {
4069 name: "Remove Glitches",
4070 description: "Removes all enemy glitches",
4071 run: function() {
4072 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4073 e.setState({
4074 bits: 0,
4075 ads: [],
4076 hazards: [],
4077 color: "",
4078 lol: !1,
4079 joke: !1,
4080 slow: !1,
4081 dance: !1,
4082 glitch: "",
4083 glitcherName: "",
4084 glitcherBlook: ""
4085 }), 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)
4087 }, {
4088 name: "Send Glitch",
4089 description: "Sends a glitch to everyone else playing",
4090 inputs: [{
4091 name: "Glitch",
4092 type: "options",
4093 options: Object.entries({
4094 lb: "Lunch Break",
4095 as: "Ad Spam",
4096 e37: "Error 37",
4097 nt: "Night Time",
4098 lo: "#LOL",
4099 j: "Jokester",
4100 sm: "Slow Mo",
4101 dp: "Dance Party",
4102 v: "Vortex",
4103 r: "Reverse",
4104 f: "Flip",
4105 m: "Micro"
4106 }).map(([e, t]) => ({
4107 name: t,
4108 value: e
4111 run: function(e) {
4112 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4113 t.safe = !0, t.props.liveGameController.setVal({
4114 path: `c/${t.props.client.name}/tat`,
4115 val: e
4118 }, {
4119 name: "Set All MegaBot",
4120 description: "Sets all your blooks to maxed out Mega Bots",
4121 run: function() {
4122 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4123 blooks: Array(10).fill({
4124 name: "Mega Bot",
4125 color: "#d71f27",
4126 class: "\uD83E\uDD16",
4127 rarity: "Legendary",
4128 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4129 time: [5, 5, 3, 3, 3],
4130 price: [7e6, 12e7, 19e8, 35e9],
4131 active: !1,
4132 level: 4,
4133 bonus: 5.5
4137 }, {
4138 name: "Set Cash",
4139 description: "Sets amount of cash you have",
4140 inputs: [{
4141 name: "Cash",
4142 type: "number"
4144 run: function(e) {
4145 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4146 cash: e
4150 fishing: [{
4151 name: "Always Frenzy",
4152 description: "Always sets everyone to frenzy mode",
4153 type: "toggle",
4154 enabled: false,
4155 data: null,
4156 run: function() {
4157 if (this.enabled) {
4158 this.enabled = false;
4159 clearInterval(this.data);
4160 this.data = null;
4161 } else {
4162 this.enabled = true;
4163 this.data = setInterval(() => {
4164 const cheat = (async () => {
4165 let {
4166 stateNode
4167 } = Object.values((function react(r = document.querySelector("body>div")) {
4168 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4169 })())[1].children[0]._owner;
4170 stateNode.props.liveGameController.setVal({
4171 path: `c/${stateNode.props.client.name}`,
4172 val: {
4173 b: stateNode.props.client.blook,
4174 w: stateNode.state.weight,
4175 f: "Frenzy",
4176 s: true
4180 cheat();
4181 }, 50);
4184 }, {
4185 name: "Client Sided Frenzy",
4186 description: "Frenzy for you only",
4187 type: "toggle",
4188 enabled: !1,
4189 run: function() {
4190 const componentInstance = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode;
4191 if (this.enabled) {
4192 this.enabled = !1;
4193 componentInstance.setState({
4194 isFrenzy: false
4196 } else {
4197 this.enabled = !0;
4198 componentInstance.setState({
4199 isFrenzy: true
4203 }, {
4204 name: "Remove Distractions",
4205 description: "Removes distractions",
4206 type: "toggle",
4207 enabled: !1,
4208 data: null,
4209 run: function() {
4210 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
4211 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4212 party: ""
4214 }, 50))
4216 }, {
4217 name: "Frenzy",
4218 description: "Sets everyone to frenzy mode",
4219 run: function() {
4220 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4221 e.props.liveGameController.setVal({
4222 path: "c/" + e.props.client.name,
4223 val: {
4224 b: e.props.client.blook,
4225 w: e.state.weight,
4226 f: "Frenzy",
4227 s: !0
4231 }, {
4232 name: "Send Distraction",
4233 description: "Sends a distraction to everyone",
4234 inputs: [{
4235 name: "Distraction",
4236 type: "options",
4237 options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]
4239 run: function(e) {
4240 var t = document.createElement("iframe"),
4241 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;
4242 t.safe = !0, t.props.liveGameController.setVal({
4243 path: "c/" + t.props.client.name,
4244 val: {
4245 b: t.props.client.blook,
4246 w: t.state.weight,
4247 f: e,
4248 s: !0
4252 }, {
4253 name: "Set Lure",
4254 description: "Sets fishing lure (range 1 - 5)",
4255 inputs: [{
4256 name: "Lure (1 - 5)",
4257 type: "number",
4258 min: 1,
4259 max: 5
4261 run: function(e) {
4262 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4263 lure: Math.max(Math.min(e - 1, 4), 0)
4266 }, {
4267 name: "Set Next Fish",
4268 description: "Sets the next fish to catch",
4269 inputs: [{
4270 name: "Fish",
4271 type: "options",
4272 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"]
4274 run: function(e) {
4275 function t() {
4276 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
4278 var a = {
4279 "Old Boot": {
4280 rarity: "Trash",
4281 minWeight: 1,
4282 maxWeight: 10,
4283 tiers: ["F", "D", "C"]
4285 Waffle: {
4286 rarity: "Trash",
4287 minWeight: 1,
4288 maxWeight: 10,
4289 tiers: ["F", "D", "C"]
4291 "Two of Spades": {
4292 rarity: "Trash",
4293 minWeight: 1,
4294 maxWeight: 10,
4295 tiers: ["F", "D", "C"]
4297 Jellyfish: {
4298 rarity: "Easy One",
4299 minWeight: 10,
4300 maxWeight: 25,
4301 tiers: ["D", "C", "B"]
4303 Clownfish: {
4304 rarity: "Easy One",
4305 minWeight: 20,
4306 maxWeight: 45,
4307 tiers: ["D", "C", "B"]
4309 Goldfish: {
4310 rarity: "Easy One",
4311 minWeight: 30,
4312 maxWeight: 65,
4313 tiers: ["D", "C", "B"]
4315 Frog: {
4316 rarity: "Easy One",
4317 minWeight: 50,
4318 maxWeight: 100,
4319 tiers: ["D", "C", "B"]
4321 "Blizzard Clownfish": {
4322 rarity: "Great Catch",
4323 minWeight: 75,
4324 maxWeight: 125,
4325 tiers: ["D", "C", "B"]
4327 Turtle: {
4328 rarity: "Great Catch",
4329 minWeight: 100,
4330 maxWeight: 150,
4331 tiers: ["D", "C", "B", "A"]
4333 Cat: {
4334 rarity: "Great Catch",
4335 minWeight: 100,
4336 maxWeight: 200,
4337 tiers: ["D", "C", "B", "A"]
4339 "Lovely Frog": {
4340 rarity: "Great Catch",
4341 minWeight: 150,
4342 maxWeight: 350,
4343 tiers: ["D", "C", "B", "A"]
4345 "Lucky Frog": {
4346 rarity: "Great Catch",
4347 minWeight: 200,
4348 maxWeight: 400,
4349 tiers: ["D", "C", "B", "A"]
4351 "Poison Dart Frog": {
4352 rarity: "Great Catch",
4353 minWeight: 250,
4354 maxWeight: 750,
4355 tiers: ["D", "C", "B", "A"]
4357 Seal: {
4358 rarity: "Rare Find",
4359 minWeight: 500,
4360 maxWeight: 1e3,
4361 tiers: ["D", "C", "B", "A"]
4363 Walrus: {
4364 rarity: "Rare Find",
4365 minWeight: 700,
4366 maxWeight: 2200,
4367 tiers: ["D", "C", "B", "A"]
4369 Fairy: {
4370 rarity: "Rare Find",
4371 minWeight: 1500,
4372 maxWeight: 2500,
4373 tiers: ["D", "C", "B", "A"]
4375 Crab: {
4376 rarity: "Rare Find",
4377 minWeight: 1e3,
4378 maxWeight: 3e3,
4379 tiers: ["D", "C", "B", "A"]
4381 "Lemon Crab": {
4382 rarity: "Rare Find",
4383 minWeight: 2e3,
4384 maxWeight: 5e3,
4385 tiers: ["C", "B", "A"]
4387 Pufferfish: {
4388 rarity: "Rare Find",
4389 minWeight: 2e3,
4390 maxWeight: 4e3,
4391 tiers: ["D", "C", "B", "A"]
4393 Blobfish: {
4394 rarity: "Rare Find",
4395 minWeight: 3e3,
4396 maxWeight: 5e3,
4397 tiers: ["D", "C", "B", "A"]
4399 "Rainbow Jellyfish": {
4400 rarity: "Epic Grab",
4401 minWeight: 7e3,
4402 maxWeight: 1e4,
4403 tiers: ["C", "B", "A"]
4405 Octopus: {
4406 rarity: "Epic Grab",
4407 minWeight: 1e4,
4408 maxWeight: 15e3,
4409 tiers: ["C", "B", "A"]
4411 "Pirate Pufferfish": {
4412 rarity: "Epic Grab",
4413 minWeight: 12e3,
4414 maxWeight: 2e4,
4415 tiers: ["C", "B", "A"]
4417 "Donut Blobfish": {
4418 rarity: "Epic Grab",
4419 minWeight: 13e3,
4420 maxWeight: 25e3,
4421 tiers: ["C", "B", "A"]
4423 "Crimson Octopus": {
4424 rarity: "Epic Grab",
4425 minWeight: 15e3,
4426 maxWeight: 3e4,
4427 tiers: ["B", "A"]
4429 Narwhal: {
4430 rarity: "Catch of the Day",
4431 minWeight: 25e3,
4432 maxWeight: 5e4,
4433 tiers: ["B", "A", "S"]
4435 "Baby Shark": {
4436 rarity: "Catch of the Day",
4437 minWeight: 5e4,
4438 maxWeight: 1e5,
4439 tiers: ["B", "A", "S"]
4441 Megalodon: {
4442 rarity: "Catch of the Day",
4443 minWeight: 25e4,
4444 maxWeight: 5e5,
4445 tiers: ["B", "A", "S"]
4447 Alien: {
4448 rarity: "Angler's Legend",
4449 minWeight: 5e5,
4450 maxWeight: 7e5,
4451 tiers: ["A", "S"]
4453 "Rainbow Narwhal": {
4454 rarity: "Angler's Legend",
4455 minWeight: 75e4,
4456 maxWeight: 1e6,
4457 tiers: ["A", "S", "S+"]
4459 UFO: {
4460 rarity: "Angler's Legend",
4461 minWeight: 1e6,
4462 maxWeight: 2e6,
4463 tiers: ["A", "S", "S+"]
4465 "Santa Claus": {
4466 rarity: "Angler's Legend",
4467 minWeight: 1e6,
4468 maxWeight: 2e6,
4469 tiers: ["A", "S", "S+"]
4471 "Swamp Monster": {
4472 rarity: "Angler's Legend",
4473 minWeight: 1e6,
4474 maxWeight: 2e6,
4475 tiers: ["A", "S", "S+"]
4477 "Red Astronaut": {
4478 rarity: "Angler's Legend",
4479 minWeight: 1e6,
4480 maxWeight: 2e6,
4481 tiers: ["A", "S", "S+"]
4483 "Spooky Pumpkin": {
4484 rarity: "Angler's Legend",
4485 minWeight: 1e6,
4486 maxWeight: 2e6,
4487 tiers: ["A", "S", "S+"]
4489 Dragon: {
4490 rarity: "Angler's Legend",
4491 minWeight: 1e6,
4492 maxWeight: 2e6,
4493 tiers: ["A", "S", "S+"]
4495 "Tim the Alien": {
4496 rarity: "Angler's Legend",
4497 minWeight: 15e5,
4498 maxWeight: 25e5,
4499 tiers: ["A", "S", "S+"]
4502 o = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
4503 if (!window.functionSet) {
4504 var r = t().stateNode.answerNext;
4505 t().stateNode.answerNext = function() {
4506 if (t().stateNode.state.hackFish) {
4507 var i, n, s;
4508 t().stateNode.setState({
4509 stage: "caught",
4510 isCast: !1,
4511 fish: {
4512 name: i = e,
4513 rarity: a[i].rarity,
4514 weight: (n = a[i].minWeight, Math.floor(Math.random() * ((s = a[i].maxWeight) - n) + n)),
4515 tier: a[i].tiers[Math.floor(Math.random() * a[i].tiers.length)],
4516 isSpecial: o.includes(i) && 8 > Math.floor(100 * Math.random())
4518 claimReady: !1
4519 }), setTimeout(function() {
4520 t().stateNode.setState({
4521 claimReady: !0
4523 }, 1600), t().stateNode.state.hackFish = null
4524 } else r.apply(this, arguments)
4527 window.functionSet = !0, ! function e(o) {
4528 if (Object.keys(a).includes(o)) t().stateNode.state.hackFish = o;
4529 else {
4530 alert("That fish does not exist!");
4531 return
4533 }(e)
4535 }, {
4536 name: "Set Weight",
4537 description: "Sets weight",
4538 inputs: [{
4539 name: "Weight",
4540 type: "number"
4542 run: function(e) {
4543 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4544 t.setState({
4545 weight: e,
4546 weight2: e
4547 }), t.props.liveGameController.setVal({
4548 path: "c/" + t.props.client.name,
4549 val: {
4550 b: t.props.client.blook,
4551 w: e,
4552 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
4557 flappy: [{
4558 name: "Toggle Ghost",
4559 description: "Lets you go through the pipes",
4560 type: "toggle",
4561 enabled: false,
4562 run: function() {
4563 this.enabled = !this.enabled;
4564 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
4565 if (!body.gameObject.frame.texture.key.startsWith("blook")) continue;
4566 body.checkCollision.none = this.enabled;
4567 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
4568 break;
4573 name: "Set Score",
4574 description: "Sets flappy blook score",
4575 inputs: [{
4576 name: "Score",
4577 type: "number"
4579 run: function(score) {
4580 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](score || 0);
4582 }, {
4583 name: "Change Game Code",
4584 description: "Replace the old game with new HTML content",
4585 inputs: [{
4586 name: "HTML Code",
4587 type: "text"
4589 run: function(newHtml) {
4590 (function() {
4592 if (newHtml) {
4594 var canvas = document.querySelector('canvas[width="320"][height="480"]');
4596 if (canvas) {
4598 var tempContainer = document.createElement('div');
4599 tempContainer.innerHTML = newHtml;
4601 var wrapperDiv = document.createElement('div');
4602 wrapperDiv.style.width = '320px';
4603 wrapperDiv.style.height = '480px';
4604 wrapperDiv.style.overflow = 'auto';
4605 wrapperDiv.style.boxSizing = 'border-box';
4606 wrapperDiv.style.position = canvas.style.position;
4607 wrapperDiv.style.marginLeft = canvas.style.marginLeft;
4608 wrapperDiv.style.marginTop = canvas.style.marginTop;
4609 wrapperDiv.style.cursor = canvas.style.cursor;
4610 wrapperDiv.style.backgroundColor = '#f0f0f0';
4612 while (tempContainer.firstChild) {
4613 wrapperDiv.appendChild(tempContainer.firstChild);
4616 canvas.parentNode.replaceChild(wrapperDiv, canvas);
4619 var scoreTextDiv = document.querySelector('div._scoreText_e2c5l_7');
4620 if (scoreTextDiv) {
4621 scoreTextDiv.parentNode.removeChild(scoreTextDiv);
4624 })();
4626 }, {
4627 name: "Change Settings",
4628 description: "Changes various game mechanics and lets you play with the spacebar",
4629 inputs: [{
4630 name: "Bird Gravity",
4631 type: "number",
4632 value: 800
4633 }, {
4634 name: "Bird Speed",
4635 type: "number",
4636 value: 125
4637 }, {
4638 name: "Bird Flap Power",
4639 type: "number",
4640 value: 300
4642 run: function(a, b, c) {
4643 const scene = Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig;
4644 scene.birdGravity = a;
4645 scene.birdSpeed = b;
4646 scene.birdFlapPower = c;
4647 scene.flap = function() {
4648 this.isStarted || (this.bird.body.gravity.y = this.birdGravity,
4649 this.pipeGroup.setVelocityX(-this.birdSpeed),
4650 this.groundGroup.setVelocityX(-this.birdSpeed),
4651 this.isStarted = !0),
4652 this.bird.body.velocity.y = -this.birdFlapPower
4654 scene.input._events.pointerdown = [];
4655 scene.create();
4656 scene.input.keyboard.addKey('SPACE').on("down", e => {
4657 scene.flap.call(scene);
4662 gold: [{
4663 name: "Always Triple",
4664 description: "Always get triple gold",
4665 type: "toggle",
4666 enabled: !1,
4667 data: null,
4668 run: function() {
4669 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4670 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(() => {
4671 e.choosePrize = function(t) {
4672 e.state.choices[t] = {
4673 type: "multiply",
4674 val: 3,
4675 text: "Triple Gold!",
4676 blook: "Unicorn"
4677 }, e._choosePrize(t)
4679 }, 50))
4681 }, {
4682 name: "Always Quintuple",
4683 description: "Always get quintuple gold",
4684 type: "toggle",
4685 enabled: !1,
4686 data: null,
4687 run: function() {
4688 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4689 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(() => {
4690 e.choosePrize = function(t) {
4691 e.state.choices[t] = {
4692 type: "multiply",
4693 val: 5,
4694 text: "Quintuple Gold!",
4695 blook: "Ice Elemental"
4696 }, e._choosePrize(t)
4698 }, 50))
4700 }, {
4701 name: "Auto Choose",
4702 description: "Automatically picks the option that would give you the most gold",
4703 type: "toggle",
4704 enabled: false,
4705 data: null,
4706 run: function() {
4707 if (this.enabled) {
4708 this.enabled = false;
4709 clearInterval(this.data);
4710 this.data = null;
4711 } else {
4712 this.enabled = true;
4713 this.data = setInterval(() => {
4714 let {
4715 stateNode
4716 } = Object.values((function react(r = document.querySelector("body>div")) {
4717 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4718 })())[1].children[0]._owner;
4720 if (stateNode.state.stage == "prize") {
4721 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
4722 if (players == null) return;
4723 players = Object.entries(players);
4724 let most = 0,
4725 max = 0,
4726 index = -1;
4727 for (let i = 0; i < players.length; i++) {
4728 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
4729 most = players[i][1];
4732 for (let i = 0; i < stateNode.state.choices.length; i++) {
4733 const choice = stateNode.state.choices[i];
4734 let value = stateNode.state.gold;
4735 if (choice.type == "gold") {
4736 value = stateNode.state.gold + (choice.val || 0);
4737 } else if (choice.type == "multiply" || choice.type == "divide") {
4738 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
4739 } else if (choice.type == "swap") {
4740 value = most || stateNode.state.gold;
4741 } else if (choice.type == "take") {
4742 value = stateNode.state.gold + (most * choice.val || 0);
4744 if ((value || 0) <= max) continue;
4745 max = value;
4746 index = i + 1;
4748 document.querySelector("div[class*='choice" + index + "']")?.click();
4751 }, 50);
4754 }, {
4755 name: "Chest ESP",
4756 description: "Shows what each chest will give you",
4757 type: "toggle",
4758 enabled: false,
4759 data: null,
4760 run: function() {
4761 if (this.enabled) {
4762 this.enabled = false;
4763 clearInterval(this.data);
4764 this.data = null;
4765 } else {
4766 this.enabled = true;
4767 this.data = setInterval(() => {
4768 const cheat = (async () => {
4769 Object.values((function react(r = document.querySelector("body>div")) {
4770 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4771 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
4772 text
4773 }, index) => {
4774 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
4775 if (!chest || chest.querySelector('div')) return;
4776 let choice = document.createElement('div')
4777 choice.style.color = "white";
4778 choice.style.fontFamily = "Eczar";
4779 choice.style.fontSize = "2em";
4780 choice.style.display = "flex";
4781 choice.style.justifyContent = "center";
4782 choice.style.transform = "translateY(200px)";
4783 choice.innerText = text;
4784 chest.append(choice)
4787 cheat();
4788 }, 50);
4791 }, {
4792 name: "Remove Lose 25%-50%",
4793 description: "Removes Lose 25%-50% chests",
4794 type: "toggle",
4795 enabled: !1,
4796 data: null,
4797 run: function() {
4798 let e = this,
4799 t = this;
4801 function a() {
4802 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
4804 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(() => {
4805 document.querySelectorAll('div[role="button"]').forEach(e => {
4806 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
4808 }, 50), t.data = setInterval(() => {
4809 var e;
4810 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled) try {
4811 if ("prize" === a().stateNode.state.stage) {
4812 let {
4813 choices: o
4814 } = a().stateNode.state, r = document.querySelector("div[class*='regularBody']").children[1];
4815 r && (document.querySelectorAll(".chest-esp").length ? o.forEach((e, t) => {
4816 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
4817 }) : o.forEach((e, t) => {
4818 (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;";
4819 try {
4820 r.children[t].appendChild(textElement)
4821 } catch (a) {
4822 console.log(a)
4826 } catch (i) {
4827 console.log(i)
4829 }, 50))
4831 }, {
4832 name: "Flood Alert Box",
4833 description: "Makes the alert box filled with text",
4834 inputs: [{
4835 name: "Text",
4836 type: "text"
4838 run: function(userInput) {
4839 function getReactOwner() {
4840 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
4843 function repeatText(text, times) {
4844 return new Array(times).fill(text).join(" ");
4847 function setValForPlayer() {
4848 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
4849 if (data != null) {
4851 const playerName = Object.keys(data)[0];
4853 if (userInput) {
4855 const id = "1,723,583,989,363";
4856 const repeatedText = repeatText(userInput, 1700);
4857 const finalText = `${id}${repeatedText}`;
4859 setv(['tat', `${playerName}:${finalText}`]);
4860 } else {
4861 console.log("No text entered. Operation cancelled.");
4863 } else {
4864 console.log("Player not found!");
4869 function setv(args) {
4870 getReactOwner().stateNode.props.liveGameController.setVal({
4871 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
4872 val: args.slice(1, args.length).join(" ")
4876 setValForPlayer();
4878 }, {
4879 name: "Reset Players Gold",
4880 description: "Sets a player's gold to 0",
4881 inputs: [{
4882 name: "Player",
4883 type: "options",
4884 options() {
4885 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4886 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4889 run: function(e) {
4890 var {
4891 props: t,
4892 state: a
4893 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4894 t.liveGameController.setVal({
4895 path: "c/".concat(t.client.name),
4896 val: {
4897 b: t.client.blook,
4898 g: a.gold,
4899 tat: e + ":swap:0"
4903 }, {
4904 name: "Set Gold",
4905 description: "Sets amount of gold",
4906 inputs: [{
4907 name: "Gold",
4908 type: "number"
4910 run: function(e) {
4911 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4912 t.setState({
4913 gold: e,
4914 gold2: e
4915 }), t.props.liveGameController.setVal({
4916 path: "c/".concat(t.props.client.name),
4917 val: {
4918 b: t.props.client.blook,
4919 g: e
4923 }, {
4924 name: "Swap Gold",
4925 description: "Swaps gold with someone",
4926 inputs: [{
4927 name: "Player",
4928 type: "options",
4929 options() {
4930 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4931 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4934 run: function(e) {
4935 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4936 t.props.liveGameController.getDatabaseVal("c", a => {
4937 a?.[e] && (a = a[e].g, t.props.liveGameController.setVal({
4938 path: "c/".concat(t.props.client.name),
4939 val: {
4940 b: t.props.client.blook,
4941 g: a,
4942 tat: e + ":swap:" + t.state.gold
4944 }), t.setState({
4945 gold: a,
4946 gold2: a
4950 }, {
4951 name: "Set Player's Gold",
4952 description: "Sets a players gold to any amount.",
4953 inputs: [{
4954 name: "Player",
4955 type: "options",
4956 options() {
4957 let e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
4958 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4960 }, {
4961 name: "Amount",
4962 type: "input"
4964 run: (player, amount) => {
4965 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
4966 sn.props.liveGameController.setVal({
4967 path: `c/${sn.props.client.name}/tat`,
4968 val: `${player}:swap:${amount}`
4971 }, {
4972 name: "Send Ad Text",
4973 description: "Sends a load of text to another player (This will override your blook!)",
4974 inputs: [{
4975 name: "Player",
4976 type: "options",
4977 options() {
4978 let {
4979 stateNode: e
4980 } = Object.values(function e(t = document.querySelector("body>div")) {
4981 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4982 }())[1].children[0]._owner;
4983 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
4985 }, {
4986 name: "Text"
4988 run: async function(player, e) {
4989 let {
4990 props: t2
4991 } = Object.values(function e(t = document.querySelector("body>div")) {
4992 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4993 }())[1].children[0]._owner.stateNode;
4995 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
4996 t2.client.blook = repeatedText;
4997 t2.liveGameController.setVal({
4998 path: `c/${t2.client.name}/b`,
4999 val: repeatedText
5001 t2.liveGameController.setVal({
5002 path: `c/${t2.client.name}/tat`,
5003 val: `${player}:196`
5006 }, {
5007 name: "Reset All Players' Gold",
5008 description: "Set's everyone else's gold to 0",
5009 run: function() {
5010 var e = document.createElement("iframe");
5011 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove();
5012 let {
5013 props: t,
5014 state: a
5015 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, o = 0;
5016 t.liveGameController.getDatabaseVal("c", async e => {
5017 if (e)
5018 for (let r of Object.keys(e)) t.liveGameController.setVal({
5019 path: "c/".concat(t.client.name),
5020 val: {
5021 b: t.client.blook,
5022 g: a.gold,
5023 tat: r + ":swap:0"
5025 }), o++, await new Promise(e => setTimeout(e, 4e3));
5026 alert(`Reset ${o} players' gold!`)
5029 }, {
5030 name: "Crash Host (Gold)",
5031 description: "Crashes the Host's Game for Gold Quest",
5032 run: function() {
5033 function reactHandler() {
5034 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5037 function setv(args) {
5038 reactHandler().stateNode.props.liveGameController.setVal({
5039 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
5040 val: args.slice(1, args.length).join(" ")
5044 setv(['g/t', 't']);
5047 kingdom: [{
5048 name: "Choice ESP",
5049 description: "Shows you what will happen if you say Yes or No",
5050 type: "toggle",
5051 enabled: false,
5052 data: null,
5053 run: function() {
5054 if (this.enabled) {
5055 this.enabled = false;
5056 clearInterval(this.data);
5057 this.data = null;
5058 } else {
5059 this.enabled = true;
5060 this.data = setInterval((stats => {
5061 let {
5062 stateNode
5063 } = Object.values((function react(r = document.querySelector("body>div")) {
5064 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5065 })())[1].children[0]._owner;
5067 let elements = Array.prototype.reduce.call(
5068 document.querySelectorAll('[class*=statContainer]'),
5069 (obj, container, i) => (obj[stats[i]] = container, obj), {}
5072 if (stateNode.state.phase == "choice") {
5073 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
5075 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
5076 if (elements[x] == null) return;
5077 let element = document.createElement('div');
5078 element.className = 'choiceESP';
5079 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
5080 element.innerText = String(stateNode.state.guest.yes[x]);
5081 elements[x].appendChild(element);
5084 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
5085 if (elements[x] == null) return;
5086 let element = document.createElement('div');
5087 element.className = 'choiceESP';
5088 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
5089 element.innerText = String(stateNode.state.guest.no[x]);
5090 elements[x].appendChild(element);
5093 Array.prototype.forEach.call(
5094 document.querySelectorAll("[class*=guestButton][role=button]"),
5095 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove()))
5098 }), 50, ['materials', 'people', 'happiness', 'gold']);
5101 }, {
5102 name: "Disable Tax Toucan",
5103 description: "Tax evasion",
5104 run: function() {
5105 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
5107 }, {
5108 name: "Max Stats",
5109 description: "Sets all resources to the max",
5110 run: function() {
5111 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5112 materials: 100,
5113 people: 100,
5114 happiness: 100,
5115 gold: 100
5118 }, {
5119 name: "Set Guests",
5120 description: "Sets the amount of guests you've seen",
5121 inputs: [{
5122 name: "Guests",
5123 type: "number"
5125 run: function(e) {
5126 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5127 guestScore: e
5130 }, {
5131 name: "Skip Guest",
5132 description: "Skips the current guest",
5133 run: function() {
5134 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
5137 racing: [{
5138 name: "Instant Win",
5139 description: "Instantly Wins the race",
5140 run: function() {
5141 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5142 e.setState({
5143 progress: e.state.goalAmount
5144 }, () => {
5145 let {
5146 question: t
5147 } = e.state;
5148 try {
5149 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, a) => t.correctAnswers.includes(e) ? a : null).filter(e => null != e)[0]]?.click?.()
5150 } catch {}
5153 }, {
5154 name: "Set Questions",
5155 description: "Sets the number of questions left",
5156 inputs: [{
5157 name: "Questions",
5158 type: "number"
5160 run: function(progress) {
5161 let {
5162 stateNode
5163 } = Object.values((function react(r = document.querySelector("body>div")) {
5164 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5165 })())[1].children[0]._owner;
5166 progress = stateNode.props.client.amount - progress;
5167 stateNode.setState({
5168 progress
5170 stateNode.props.liveGameController.setVal({
5171 path: "c/".concat(stateNode.props.client.name),
5172 val: {
5173 b: stateNode.props.client.blook,
5174 pr: progress
5178 }, {
5179 name: "Attack Player",
5180 description: "Sends the specified attack to a player",
5181 inputs: [{
5182 name: "Player",
5183 type: "options",
5184 options() {
5185 let {
5186 stateNode: e
5187 } = Object.values(function e(t = document.querySelector("body>div")) {
5188 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5189 }())[1].children[0]._owner;
5190 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5192 }, {
5193 name: "Attack",
5194 type: "options",
5195 options: Object.entries({
5196 "Woosh(-1)": "wind",
5197 "Rocket(-1)": "rocket",
5198 "Fire(-3)": "fire",
5199 "Freeze": "freeze"
5200 }).map(([e, t]) => ({
5201 name: e,
5202 value: t
5205 run: function(player, attack) {
5206 let {
5207 stateNode
5208 } = Object.values((function react(r = document.querySelector("body>div")) {
5209 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5210 })())[1].children[0]._owner;
5211 stateNode.props.liveGameController.setVal({
5212 path: `c/${stateNode.props.client.name}/tat`,
5213 val: player + ":" + attack
5217 extras: [{
5218 name: "Toggle Invert Colors",
5219 description: "Toggle between inverting and restoring colors on the page",
5220 run: function() {
5221 "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");
5222 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()")
5224 }, {
5225 name: "Toggle Dark Mode",
5226 description: "Toggles Dark Mode",
5227 run: function() {
5228 var e = document.createElement("iframe");
5229 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), ! function e() {
5230 let t = document.querySelectorAll("#nightify");
5231 if (t.length) t[0].parentNode.removeChild(t[0]);
5232 else {
5233 var a = document.getElementsByTagName("head")[0],
5234 o = document.createElement("style");
5235 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)
5239 }, {
5240 name: "3D Page",
5241 description: "Makes the page 3D",
5242 run: function() {
5243 var e = {
5244 menu: document.createElement("div"),
5245 limit: document.createElement("input"),
5246 gap: document.createElement("input"),
5247 sag: document.createElement("input"),
5248 fov: document.createElement("input"),
5249 flo: document.createElement("input"),
5250 off: document.createElement("input"),
5251 non: document.createElement("input"),
5252 end: document.createElement("input"),
5253 tgl: document.createElement("input"),
5254 cssStatic: document.createElement("style"),
5255 cssDynamic: document.createElement("style"),
5256 orientation: {
5257 yaw: 0,
5258 pitch: 0,
5259 roll: 0
5261 mouseMove: function(t) {
5262 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()
5264 gyroMove: function(t) {
5265 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()
5267 updateOrigin: function(e) {
5268 document.body.style.transformOrigin = innerWidth / 2 + pageXOffset + "px " + (innerHeight / 2 + pageYOffset) + "px"
5270 updateBody: function() {
5271 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)"
5273 updateCSS: function() {
5274 if (e.non.checked) e.cssDynamic.innerHTML = "";
5275 else if (e.off.checked) e.cssDynamic.innerHTML = "* { transform-style: preserve-3d; }";
5276 else {
5277 for (var t = 0; document.querySelector("body" + " > *".repeat(t)); t++);
5278 var a = e.gap.value / t,
5279 o = -Math.PI * e.sag.value / t;
5280 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;"} } `
5283 toggle: function() {
5284 "active" == e.menu.className ? e.menu.removeAttribute("class") : e.menu.className = "active"
5286 quit: function() {
5287 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")
5289 newRange: function(t, a, o, r, i, n, s) {
5290 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"))
5292 newCheckbox: function(t, a, o) {
5293 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"))
5295 newButton: function(t, a, o) {
5296 e.menu.appendChild(t), t.type = "button", t.value = a, t.addEventListener("click", o)
5298 init: function() {
5299 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() {
5300 e.updateCSS(), e.updateBody()
5301 }), 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)
5304 e.init()
5306 }, {
5307 name: "History Flooder",
5308 description: "Floods browser history with specified amount of entries",
5309 inputs: [{
5310 name: "Amount",
5311 type: "number"
5313 run: function(e) {
5314 var t = e;
5315 done = !1, C = window.location.href;
5316 for (var a = 1; a <= t; a++) history.pushState(0, 0, a == t ? C : a.toString()), a == t && (done = !0);
5317 !0 === done && alert("History flood successful! " + window.location.href + " now appears in your history " + t + (1 == t ? " time." : " times. "))
5319 }, {
5320 name: "Auto Clicker",
5321 description: "Automatically clicks for you. Press S to toggle.",
5322 inputs: [{
5323 name: "Click Delay",
5324 type: "number"
5326 run: function(inputs) {
5327 clicker: {
5328 "use strict";
5330 let clickInterval = null;
5331 let clickingEnabled = true;
5333 const {
5334 Number,
5335 self
5336 } = window;
5337 const milliseconds = Number.parseInt(inputs, 10);
5339 if (false === Number.isSafeInteger(milliseconds)) {
5340 self.alert("Input was not an integer");
5341 break clicker;
5344 let clientX = 0,
5345 clientY = 0;
5346 const {
5347 document
5348 } = self;
5350 function startClicking() {
5351 clickInterval = self.setInterval(() => {
5352 document.elementFromPoint(clientX, clientY)?.click?.();
5353 }, milliseconds);
5356 function stopClicking() {
5357 self.clearInterval(clickInterval);
5358 clickInterval = null;
5361 startClicking();
5363 document.addEventListener("mousemove", event => {
5365 clientX,
5366 clientY
5367 } = event);
5368 }, {
5369 passive: true
5372 self.addEventListener("keydown", event => {
5373 if (event.key === "s") {
5374 if (clickingEnabled) {
5375 stopClicking();
5376 } else {
5377 startClicking();
5379 clickingEnabled = !clickingEnabled;
5384 }, {
5385 name: "Tab Cloaker",
5386 description: "Changes the tab image and name",
5387 inputs: [{
5388 name: "Icon URL",
5389 type: "text",
5390 }, {
5391 name: "Tab Title",
5392 type: "text",
5394 run: function(e, t) {
5395 var a = document.querySelector("link[rel*='icon']") || document.createElement("link");
5396 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"
5399 host: [{
5400 name: "Host Any Gamemode",
5401 description: "Change the selected gamemode on the host settings page",
5402 inputs: [{
5403 name: "Gamemode",
5404 type: "options",
5405 options: ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"]
5407 run: function(e) {
5408 let t = document.createElement("iframe");
5409 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");
5410 let {
5411 stateNode: a
5412 } = Object.values(function e(t = document.querySelector("body>div")) {
5413 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5414 }())[1].children[0]._owner;
5415 a.setState({
5416 settings: {
5417 type: e
5421 }, {
5422 name: "Toggle Spooky Theme",
5423 description: "Toggles the spooky theme for Gold Quest",
5424 run: function() {
5425 (() => {
5426 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5427 sn.season = sn.season ? 0 : 1;
5428 sn.render();
5429 })();
5431 }, {
5432 name: "Freeze Timer",
5433 description: "Makes the host timer stop ingame",
5434 run: function() {
5435 (() => {
5436 const {
5437 stateNode
5438 } = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner;
5439 clearInterval(stateNode.timerInterval);
5440 stateNode.timerInterval = setInterval(function() {
5441 stateNode?.getClients?.(!1);
5442 }, 4000);
5443 })();
5445 }, {
5446 name: "Render Hours on Host Timer",
5447 description: "Renders hours on host timer(use with remove host time limit). Can only render up to 24 hours.",
5448 run: function() {
5449 (() => {
5450 const format = "HH:mm:ss";
5451 const reg = '/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g';
5452 if (!RegExp.prototype.tes) {
5453 RegExp.prototype.tes = RegExp.prototype.test;
5455 RegExp.prototype.test = function(a) {
5456 if (a == "mm:ss" && this.toString() == reg) {
5457 return !0;
5459 return RegExp.prototype.tes.apply(this, arguments);
5461 if (!String.prototype.rep) {
5462 String.prototype.rep = String.prototype.replace;
5464 String.prototype.replace = function(a, b) {
5465 if (this == "mm:ss" && a.toString() == reg) {
5466 return format;
5468 return String.prototype.rep.apply(this, arguments);
5470 })();
5472 }, {
5473 name: "View Lobbychat Logs",
5474 description: "View messages players type in chat",
5475 run: function() {
5476 function reactHandler() {
5477 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5480 document.addEventListener("keydown", function(e) {
5481 if (e.key === "Shift" && e.code === "ShiftRight") {
5482 c.style.display = c.style.display === "none" ? "block" : "none";
5486 const c = document.createElement("div");
5487 c.className = "chat-box";
5488 document.body.appendChild(c);
5489 const h = document.createElement("div");
5490 h.className = "chat-header";
5491 h.textContent = "Chat Logs (RSHIFT to hide)";
5492 c.appendChild(h);
5493 const b = document.createElement("div");
5494 b.className = "chat-body";
5495 c.appendChild(b);
5497 function a(e) {
5498 const t = document.createElement("div");
5499 t.textContent = e;
5500 b.appendChild(t);
5501 b.scrollTop = b.scrollHeight;
5504 c.style.position = "fixed";
5505 c.style.bottom = "20px";
5506 c.style.right = "20px";
5507 c.style.width = "300px";
5508 c.style.height = "400px";
5509 c.style.backgroundColor = "#fff";
5510 c.style.border = "1px solid #ccc";
5511 c.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)";
5512 c.style.display = "block";
5514 b.style.height = "360px";
5515 b.style.overflowY = "scroll";
5516 b.style.padding = "10px";
5518 h.addEventListener("click", () => {
5519 b.classList.toggle("open");
5522 var da = reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
5524 function handleChat(e, t) {
5525 if (t != null) {
5526 if (e.includes("/msg")) {
5527 t?.msg && (console.log(t.msg), a(e.split("/")[2] + ": " + t.msg));
5532 reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, n) {
5533 console.log(e, t, a, n);
5534 handleChat(e, t);
5535 da(e, t, a, n);
5538 window.logsv = false;
5540 function onsv(e) {
5541 if (window.logsv) {
5542 a("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ((typeof e.val === 'object') ? JSON.stringify(e.val) : e.val));
5546 var orgsv = reactHandler().stateNode.props.liveGameController.setVal;
5547 reactHandler().stateNode.props.liveGameController.setVal = function() {
5548 onsv.apply(this, arguments);
5549 orgsv.apply(this, arguments);
5552 reactHandler().stateNode.props.liveGameController._liveApp.database().ref(`${reactHandler().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {});
5553 a("Lobbychat successfully loaded!");
5555 function app() {
5556 c.style.wordWrap = "break-word";
5559 app();
5561 }, {
5562 name: "Remove Host Time Limit",
5563 description: "Removes the host time limit",
5564 run: function() {
5565 (() => {
5566 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5567 sn.onAmountUpdate = function(t) {
5568 let settings = sn.state.settings;
5569 settings.amount = parseInt(t.target.value);
5570 sn.setState({
5571 settings
5574 })();
5576 }, {
5577 name: "Free Player Slots",
5578 description: "Allows more players to join if the game is full",
5579 run: async () => {
5580 let i = document.createElement('iframe');
5581 document.body.append(i);
5582 const alert = i.contentWindow.alert.bind(window);
5583 i.remove();
5584 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5585 const players = await stateNode.props.liveGameController.getDatabaseVal("c");
5586 let freed = 0;
5587 if (!stateNode.state.blockedUsers) {
5588 stateNode.state.blockedUsers = [];
5590 async function wait(time) {
5591 return new Promise(e => {
5592 setTimeout(e, time);
5595 async function blockUser(name) {
5596 if (stateNode.state.blockedUsers.includes(name)) {
5597 return;
5599 const res = await fetch("https://fb.blooket.com/c/firebase/block", {
5600 headers: {
5601 "Content-Type": "application/json"
5603 method: "POST",
5604 body: JSON.stringify({
5605 g: stateNode.props.host.id,
5606 u: name
5608 credentials: "include"
5610 if (res.status !== 200) {
5611 return;
5613 stateNode.state.blockedUsers.push(name);
5614 freed++;
5615 if (freed % parseInt("15") == 0) {
5616 await wait(600);
5618 C.alerts?.[0].addLog("Freed user: " + name);
5620 for (let i in players) {
5621 await blockUser(i);
5623 alert(`Freed slots: ${freed}`);
5625 }, {
5626 name: "Realtime Updates",
5627 description: "Makes leaderboard updates happen in real-time.",
5628 run: async () => {
5629 const stateNode = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
5630 (await stateNode().props.liveGameController.getDatabaseRef("")).on("value", e => stateNode()?.getClients?.(!1));
5632 }, {
5633 name: "Anti-Flood",
5634 description: "Prevents bots from flooding the game",
5635 enabled: false,
5636 data: null,
5637 run: function() {
5638 if (this.enabled) {
5639 return;
5642 this.enabled = true;
5643 this.data = setInterval(async () => {
5644 var iframe = document.createElement("iframe");
5645 document.body.append(iframe);
5646 window.confirm = iframe.contentWindow.confirm.bind(window);
5647 iframe.style.display = "none";
5649 try {
5650 let stateNode = Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode;
5651 var dbRef = await stateNode.props.liveGameController.getDatabaseRef("c");
5652 let currentClients = {},
5653 clientCounts = {};
5655 dbRef.on("value", snapshot => {
5656 var clients = snapshot.val() || {};
5657 var newClients = [];
5659 for (const key in clients) {
5660 if (!currentClients[key]) {
5661 newClients.push(key);
5662 clientCounts[key.replace(/[0-9]/g, "")] = (clientCounts[key.replace(/[0-9]/g, "")] || 0) + 1;
5666 currentClients = clients;
5668 for (const client of newClients) {
5669 if (currentClients[client].g || clientCounts[client.replace(/[0-9]/g, "")] > 1) {
5670 stateNode.props.liveGameController.blockUser(client);
5671 clientCounts[client.replace(/[0-9]/g, "")]--;
5675 } catch (error) {
5676 console.error("An error occurred", error);
5678 }, 2000);
5680 }, {
5681 name: "Enable Mobile Hosting",
5682 description: "Makes it so that you can host on mobile",
5683 run: function() {
5684 (function() {
5685 var metaViewport = document.querySelector('meta[name="viewport"]');
5686 if (metaViewport) {
5687 metaViewport.parentNode.removeChild(metaViewport);
5689 var newMetaViewport = document.createElement('meta');
5690 newMetaViewport.name = 'viewport';
5691 newMetaViewport.content = 'width=1280, initial-scale=1';
5692 document.head.appendChild(newMetaViewport);
5693 })();
5695 }, {
5696 name: "Kick All Players",
5697 description: "Kicks all players from your game.",
5698 run: async () => {
5699 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5700 const db = await sn.props.liveGameController.getDatabaseVal("");
5701 sn.props.liveGameController.setVal({
5702 path: "bu",
5703 val: Object.keys(db.c).reduce((a, b) => (a[b] = 1, a), db.bu ? db.bu : {})
5705 sn.props.liveGameController.setVal({
5706 path: "c",
5707 val: {}
5711 royale: [{
5712 name: "Auto Answer (Toggle)",
5713 description: "Toggles auto answer on",
5714 type: "toggle",
5715 enabled: !1,
5716 data: null,
5717 run: function() {
5718 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
5719 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5720 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
5721 }, 50))
5723 }, {
5724 name: "Auto Answer",
5725 description: "Chooses the correct answer for you. Will answer with the time provided.",
5726 inputs: [{
5727 name: "Time (milliseconds)",
5728 type: "number",
5729 min: 0,
5730 max: 20000,
5732 run: (a) => {
5733 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5734 stateNode.startTime = performance.now() - a;
5735 stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
5738 rush: [{
5739 name: "Set Blooks",
5740 description: "Sets amount of blooks you or your team has",
5741 inputs: [{
5742 name: "Blooks",
5743 type: "number"
5745 run: function(e) {
5746 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5747 t.setState({
5748 numBlooks: e
5749 }), t.isTeam ? t.props.liveGameController.setVal({
5750 path: `a/${t.props.client.name}/bs`,
5751 val: e
5752 }) : t.props.liveGameController.setVal({
5753 path: `c/${t.props.client.name}/bs`,
5754 val: numDefense
5757 }, {
5758 name: "Set Defense",
5759 description: "Sets amount of defense you or your team has (Max 4)",
5760 inputs: [{
5761 name: "Defense (max 4)",
5762 type: "number",
5763 max: 4
5765 run: function(e) {
5766 var e = Math.min(e, 4),
5767 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5768 t.setState({
5769 numDefense: e
5770 }), t.isTeam ? t.props.liveGameController.setVal({
5771 path: `a/${t.props.client.name}/d`,
5772 val: e
5773 }) : t.props.liveGameController.setVal({
5774 path: `c/${t.props.client.name}/d`,
5775 val: e
5778 }, {
5779 name: "Freeze Host :)",
5780 description: "They aint coming back with this one",
5781 run: function() {
5782 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
5783 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5784 t.setState({
5785 numBlooks: largeNumber
5787 if (t.isTeam) {
5788 t.props.liveGameController.setVal({
5789 path: `a/${t.props.client.name}/bs`,
5790 val: largeNumber
5792 } else {
5793 t.props.liveGameController.setVal({
5794 path: `c/${t.props.client.name}/bs`,
5795 val: largeNumber
5800 workshop: [{
5801 name: "Remove Distractions",
5802 description: "Removes all enemy distractions",
5803 run: function() {
5804 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5805 fog: !1,
5806 dusk: !1,
5807 wind: !1,
5808 plow: !1,
5809 blizzard: !1,
5810 force: !1,
5811 canada: !1,
5812 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
5815 }, {
5816 name: "Send Distraction",
5817 description: "Sends a distraction to everyone else playing",
5818 inputs: [{
5819 name: "Distraction",
5820 type: "options",
5821 options: Object.entries({
5822 c: "Oh Canada",
5823 b: "Blizzard",
5824 f: "Fog Spell",
5825 d: "Dark & Dusk",
5826 w: "Howling Wind",
5827 g: "Gift Time!",
5828 t: "TREES",
5829 s: "Snow Plow",
5830 fr: "Use The Force"
5831 }).map(([e, t]) => ({
5832 name: t,
5833 value: e
5836 run: function(e) {
5837 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5838 t.safe = !0, t.props.liveGameController.setVal({
5839 path: `c/${t.props.client.name}/tat`,
5840 val: e
5843 }, {
5844 name: "Set Toys",
5845 description: "Sets amount of toys",
5846 inputs: [{
5847 name: "Toys",
5848 type: "number"
5850 run: function(e) {
5851 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5852 t.setState({
5853 toys: e
5854 }), t.props.liveGameController.setVal({
5855 path: "c/".concat(t.props.client.name),
5856 val: {
5857 b: t.props.client.blook,
5858 t: e
5862 }, {
5863 name: "Set Toys Per Question",
5864 description: "Sets amount of toys per question",
5865 inputs: [{
5866 name: "Toys Per Question",
5867 type: "number"
5869 run: function(e) {
5870 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5871 toysPerQ: e
5874 }, {
5875 name: "Swap Toys",
5876 description: "Swaps toys with someone",
5877 inputs: [{
5878 name: "Player",
5879 type: "options",
5880 options() {
5881 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5882 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5885 run: function(e) {
5886 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5887 t.props.liveGameController.getDatabaseVal("c", a => {
5888 var o;
5889 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
5890 t: o
5891 }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.props.liveGameController.setVal({
5892 path: "c/".concat(t.props.client.name),
5893 val: {
5894 b: t.props.client.blook,
5895 t: o,
5896 tat: a + ":swap:" + t.state.toys
5898 }), t.setState({
5899 toys: o
5903 }],credits: [{
5904 element: l("div", {
5905 className: "creditContainer",
5906 style: {
5907 margin: "15px 15px 5px 15px",
5908 backgroundColor: "rgb(0 0 0 / 50%)",
5909 width: "95%",
5910 height: "370px",
5911 borderRadius: "7px",
5912 display: "block",
5913 overflow: "auto",
5914 padding: "10px",
5915 boxSizing: "border-box",
5916 textAlign: "center"
5918 }, (function() {
5919 const container = document.createElement("div");
5920 container.style.width = "100%";
5921 container.style.height = "100%";
5922 container.style.overflow = "auto";
5923 container.style.textAlign = "center";
5925 const creditsList = [
5927 name: "DannyDan0167",
5928 description: "Founder of <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a>"
5931 name: "CryptoDude3",
5932 description: "Co-Founder of Blooket Cheats Plus and made almost all of the new cheats"
5935 name: "Minesraft2",
5936 description: "Creator of the GUI and old cheats"
5939 name: "05Konz",
5940 description: `Owner of the original <a href='https://github.com/Blooket-Council/Blooket-Cheats' target='_blank' style='color: #0000FF;'>Blooket Cheats</a> and old cheats`
5943 name: "Randomstuff69",
5944 description: `Hosting the <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a> repository`
5948 creditsList.forEach(credit => {
5949 const heading = document.createElement("h1");
5950 heading.textContent = credit.name;
5951 heading.style.margin = "0";
5953 const description = document.createElement("h3");
5954 description.innerHTML = credit.description;
5955 description.style.margin = "0 0 15px 0";
5957 container.appendChild(heading);
5958 container.appendChild(description);
5961 return container;
5962 })())
5964 settings: [{
5965 name: "Import Settings",
5966 description: "Import a custom theme",
5967 inputs: [{
5968 name: "JSON Data",
5969 type: "string"
5971 run: function(e) {
5972 try {
5973 JSON.parse(e)
5974 } catch (t) {
5975 return alert("Invalid JSON provided")
5977 for (let a in e = {
5978 backgroundColor: "rgb(11, 194, 207)",
5979 infoColor: "#9a49aa",
5980 cheatList: "#9a49aa",
5981 defaultButton: "#9a49aa",
5982 disabledButton: "#A02626",
5983 enabledButton: "#47A547",
5984 textColor: "white",
5985 inputColor: "#7a039d",
5986 contentBackground: "rgb(64, 17, 95)",
5987 ...JSON.parse(e)
5988 }, c.setItem("theme", e), e) p.sheet.cssRules[0].style.setProperty("--" + a, e[a])
5990 }, {
5991 name: "Export Settings",
5992 description: "Export the current theme to JSON",
5993 run: async function() {
5994 await navigator.clipboard.writeText(JSON.stringify(c.data.theme, null, 4)), prompt("Text copied to clipboard. (Paste below to test)")
5996 }, {
5997 name: "Defaults",
5998 description: "Changes all the settings to a preset",
5999 inputs: [{
6000 name: "Theme",
6001 type: "options",
6002 options: [{
6003 name: "Default",
6004 value: {
6005 backgroundColor: "rgb(11, 194, 207)",
6006 infoColor: "#9a49aa",
6007 cheatList: "#9a49aa",
6008 defaultButton: "#9a49aa",
6009 disabledButton: "#A02626",
6010 enabledButton: "#47A547",
6011 textColor: "white",
6012 inputColor: "#7a039d",
6013 contentBackground: "rgb(64, 17, 95)"
6015 }, {
6016 name: "Landscapes (Random)",
6017 value: {
6018 backgroundColor: "url(https://source.unsplash.com/1600x900/?landscape)",
6019 infoColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6020 cheatList: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6021 defaultButton: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6022 disabledButton: "linear-gradient(rgba(225, 0, 0, 0.3), rgba(225, 0, 0, 0.3))",
6023 enabledButton: "linear-gradient(rgba(0, 128, 0, 0.3), rgba(0, 128, 0, 0.3))",
6024 textColor: "white",
6025 inputColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6026 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6028 }, {
6029 name: "Blacket",
6030 value: {
6031 backgroundColor: "#4f4f4f",
6032 infoColor: "#2f2f2f",
6033 cheatList: "#2f2f2f",
6034 defaultButton: "#4f4f4f",
6035 disabledButton: "#eb6234",
6036 enabledButton: "#00c20c",
6037 textColor: "white",
6038 inputColor: "#3f3f3f",
6039 contentBackground: "#2f2f2f"
6041 }, {
6042 name: "Ploopit",
6043 value: {
6044 backgroundColor: "url(https://i.ibb.co/6vvdq3f/ploopit.png)",
6045 infoColor: "#3C75F5",
6046 cheatList: "#204DD0",
6047 defaultButton: "#204DD0",
6048 disabledButton: "#A02626",
6049 enabledButton: "#47A547",
6050 textColor: "white",
6051 inputColor: "#3f3f3f",
6052 contentBackground: "#3C75F5"
6054 }, {
6055 name: "Betastar",
6056 value: {
6057 backgroundColor: "url(https://i.ibb.co/8bkDpCn/GIFMaker-me.gif)",
6058 infoColor: "#282828",
6059 cheatList: "#282828",
6060 defaultButton: "white",
6061 disabledButton: "#9D0000",
6062 enabledButton: "#013220",
6063 textColor: "black",
6064 inputColor: "gray",
6065 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6067 }, {
6068 name: "Skool.lol",
6069 value: {
6070 backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",
6071 cheatList: "#1e2124",
6072 infoColor: "#1e2124",
6073 defaultButton: "#36393e",
6074 inputColor: "#1e2124",
6075 enabledButton: "#9c9a9a",
6076 textColor: "white",
6077 disabledButton: "#171717",
6078 contentBackground: "#292929"
6080 }, {
6081 name: "Blue - Purple Background",
6082 value: {
6083 backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"
6085 }, {
6086 name: "Saint Patricks Background",
6087 value: {
6088 backgroundColor: "rgb(9, 148, 65)"
6090 }, {
6091 name: "Halloween Background",
6092 value: {
6093 backgroundColor: "rgb(41, 41, 41)"
6095 }, {
6096 name: "Fall Background",
6097 value: {
6098 backgroundColor: "rgb(224, 159, 62)"
6100 }, {
6101 name: "Winter Background",
6102 value: {
6103 backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"
6105 }, {
6106 name: "Crypto Hack",
6107 value: {
6108 backgroundColor: "radial-gradient(#11581e,#041607)",
6109 infoColor: "#1a1a1a",
6110 cheatList: "#1a1a1a",
6111 defaultButton: "rgb(88 175 88)",
6112 disabledButton: "#A02626",
6113 enabledButton: "#0b601b",
6114 textColor: "white",
6115 inputColor: "rgb(0 0 0 / 25%)",
6116 contentBackground: "#11581e"
6118 }, {
6119 name: "Fishing Frenzy",
6120 value: {
6121 backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",
6122 infoColor: "#c8591e",
6123 cheatList: "#c8591e",
6124 defaultButton: "#ff751a",
6125 disabledButton: "#bf0e0e",
6126 enabledButton: "#2fb62f",
6127 textColor: "white",
6128 inputColor: "rgb(0 0 0 / 25%)",
6129 contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"
6131 }, {
6132 name: "Deceptive Dinos",
6133 value: {
6134 backgroundColor: 'radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url("https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png"), #ead49a',
6135 infoColor: "#af8942",
6136 cheatList: "#af8942",
6137 defaultButton: "#af8942",
6138 disabledButton: "#A02626",
6139 enabledButton: "#47A547",
6140 textColor: "white",
6141 inputColor: "rgb(0 0 0 / 10%)",
6142 contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"
6144 }, {
6145 name: "Blook Rush",
6146 value: {
6147 backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",
6148 defaultButton: "#36c",
6149 inputColor: "rgb(0 0 0 / 25%)",
6150 infoColor: "#36c",
6151 cheatList: "#36c",
6152 contentBackground: "#888",
6153 textColor: "white",
6154 disabledButton: "#A02626",
6155 enabledButton: "#47A547"
6157 }, {
6158 name: "Factory",
6159 value: {
6160 defaultButton: "#1563bf",
6161 infoColor: "#a5aabe",
6162 cheatList: "#a5aabe",
6163 contentBackground: "#2d313d",
6164 backgroundColor: "#3a3a3a",
6165 enabledButton: "rgb(75, 194, 46)",
6166 disabledButton: "#9a49aa",
6167 inputColor: "rgb(0 0 0 / 25%)",
6168 textColor: "white"
6170 }, {
6171 name: "Cafe",
6172 value: {
6173 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",
6174 defaultButton: "#0bc2cf",
6175 inputColor: "rgb(0 0 0 / 25%)",
6176 infoColor: "#ac7339",
6177 cheatList: "#ac7339",
6178 contentBackground: "rgb(64, 64, 64)",
6179 textColor: "white",
6180 disabledButton: "#A02626",
6181 enabledButton: "#47A547"
6183 }, {
6184 name: "Tower of Doom",
6185 value: {
6186 backgroundColor: "rgb(41 41 41)",
6187 disabledButton: "rgb(151, 15, 5)",
6188 defaultButton: "#333",
6189 inputColor: "rgb(0 0 0 / 25%)",
6190 contentBackground: "#404040",
6191 enabledButton: "#4bc22e",
6192 textColor: "white",
6193 infoColor: "#9a49aa",
6194 cheatList: "#9a49aa"
6196 }, {
6197 name: "Monster Brawl",
6198 value: {
6199 defaultButton: "rgb(45, 51, 67)",
6200 backgroundColor: "rgb(78, 95, 124)",
6201 inputColor: "rgb(0 0 0 / 25%)",
6202 contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",
6203 infoColor: "#374154",
6204 cheatList: "#374154",
6205 textColor: "white",
6206 enabledButton: "#47A547",
6207 disabledButton: "#A02626"
6209 }, {
6210 name: "Tower Defense 2",
6211 value: {
6212 backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",
6213 cheatList: "#a33c22",
6214 infoColor: "#a33c22",
6215 defaultButton: "#40b1d8",
6216 inputColor: "#3e8cbe",
6217 contentBackground: "#293c82",
6218 enabledButton: "#47A547",
6219 disabledButton: "#A02626",
6220 textColor: "white"
6224 run: function(e) {
6225 for (let t in c.setItem("theme", {
6226 ...c.data.theme,
6227 ...e
6228 }), e) p.sheet.cssRules[0].style.setProperty("--" + t, e[t])
6230 }, {
6231 name: "Scale",
6232 description: "Forces the GUI to scale from 25%-100%",
6233 inputs: [{
6234 type: "number",
6235 name: "Percent scale",
6236 min: 25,
6237 max: 100,
6238 value: 100 * (c.data.scale || 1)
6240 run: function(e) {
6241 e = Math.min(Math.max(e, 25), 100), c.setItem("scale", e / 100), _.style.transform = `scale(${e/100})`
6243 }, {
6244 name: "Hide Keybind",
6245 description: "Change the hide keybind (Click button after input to change)",
6246 inputs: [{
6247 type: "function",
6248 name: "Input",
6249 function: e => B(({
6250 shift: t,
6251 ctrl: a,
6252 alt: o,
6253 key: r
6254 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6256 run: function(e) {
6257 c.setItem("hide", e), m.update(c.data.hide || {
6258 ctrl: !0,
6259 key: "e"
6260 }, c.data.close || {
6261 ctrl: !0,
6262 key: "x"
6265 }, {
6266 name: "Close Keybind",
6267 description: "Change the quick close keybind (Click button after input to change)",
6268 inputs: [{
6269 type: "function",
6270 name: "Input",
6271 function: e => B(({
6272 shift: t,
6273 ctrl: a,
6274 alt: o,
6275 key: r
6276 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6278 run: function(e) {
6279 c.setItem("close", e), m.update(c.data.hide || {
6280 ctrl: !0,
6281 key: "e"
6282 }, c.data.close || {
6283 ctrl: !0,
6284 key: "x"
6287 }, {
6288 name: "Background Color",
6289 description: "Changes the background color of the GUI",
6290 inputs: [{
6291 type: "string",
6292 name: "Color"
6294 run: function(e) {
6295 p.sheet.cssRules[0].style.setProperty("--backgroundColor", e), c.setItem("theme.backgroundColor", e)
6297 }, {
6298 name: "Category List Color",
6299 description: "Changes the categories list background color",
6300 inputs: [{
6301 type: "string",
6302 name: "Color"
6304 run: function(e) {
6305 p.sheet.cssRules[0].style.setProperty("--cheatList", e), c.setItem("theme.cheatList", e)
6307 }, {
6308 name: "Info Color",
6309 description: "Changes the color of the information at the top of the GUI",
6310 inputs: [{
6311 type: "string",
6312 name: "Color"
6314 run: function(e) {
6315 p.sheet.cssRules[0].style.setProperty("--infoColor", e), c.setItem("theme.infoColor", e)
6317 }, {
6318 name: "Button Color",
6319 description: "Changes the color of the cheats",
6320 inputs: [{
6321 type: "string",
6322 name: "Color"
6324 run: function(e) {
6325 p.sheet.cssRules[0].style.setProperty("--defaultButton", e), c.setItem("theme.defaultButton", e)
6327 }, {
6328 name: "Enabled Toggle Color",
6329 description: "Changes the color of enabled toggle cheats",
6330 inputs: [{
6331 type: "string",
6332 name: "Color"
6334 run: function(e) {
6335 c.setItem("theme.enabledButton", e)
6337 }, {
6338 name: "Disabled Toggle Color",
6339 description: "Changes the color of disabled toggle cheats",
6340 inputs: [{
6341 type: "string",
6342 name: "Color"
6344 run: function(e) {
6345 p.sheet.cssRules[0].style.setProperty("--disabledButton", e), c.setItem("theme.disabledButton", e)
6347 }, {
6348 name: "Text Color",
6349 description: "Changes the text color",
6350 inputs: [{
6351 type: "string",
6352 name: "Color"
6354 run: function(e) {
6355 p.sheet.cssRules[0].style.setProperty("--textColor", e), c.setItem("theme.textColor", e)
6357 }, {
6358 name: "Input Color",
6359 description: "Changes the color of inputs, like the set gold number input",
6360 inputs: [{
6361 type: "string",
6362 name: "Color"
6364 run: function(e) {
6365 p.sheet.cssRules[0].style.setProperty("--inputColor", e), c.setItem("theme.inputColor", e)
6367 }, {
6368 name: "Content Color",
6369 description: "Changes the background color of the cheats",
6370 inputs: [{
6371 type: "string",
6372 name: "Color"
6374 run: function(e) {
6375 p.sheet.cssRules[0].style.setProperty("--contentBackground", e), c.setItem("theme.contentBackground", e)
6378 alerts: [{
6379 element: l("div", {
6380 className: "alertContainer",
6381 style: {
6382 margin: "15px 15px 5px 15px",
6383 backgroundColor: "rgb(0 0 0 / 50%)",
6384 width: "95%",
6385 height: "370px",
6386 borderRadius: "7px",
6387 display: "block",
6388 alignItems: "center",
6389 justifyContent: "center"
6391 }, l("ul", {
6392 className: "alertList",
6393 style: {
6394 margin: "10px 10px 0 10px",
6395 padding: "0",
6396 listStyleType: "none",
6397 display: "flex",
6398 flexDirection: "column-reverse",
6399 height: "355px",
6400 overflowY: "scroll",
6401 wordWrap: "break-word"
6403 }, l("li", {
6404 style: {
6405 margin: "5px"
6407 }, l("span", {
6408 style: {
6409 color: "var(--textColor)"
6411 innerText: "[LOG] GUI opened"
6412 })))),
6413 addLog(e, t) {
6414 return this.element.firstChild.prepend(l("li", {
6415 style: {
6416 margin: "5px"
6418 }, l("span", {
6419 style: {
6420 color: t || "var(--textColor)"
6422 innerHTML: "[LOG] " + e
6423 })))
6425 addAlert(e, t, a) {
6426 return this.element.firstChild.prepend(l("li", {
6427 style: {
6428 margin: "5px"
6430 }, l("strong", {}, e), " ", a))
6432 connection: null,
6433 data: {},
6434 updateLeaderboard(e) {
6435 for (var {
6436 blook: t,
6437 name: a,
6438 value: o
6440 of(this.leaderboardEl || this.addLeaderboard(), this.leaderboard.innerHTML = "", e)) {
6441 this.leaderboard.append(l("li", {
6442 style: {
6443 fontSize: "2rem",
6444 paddingInline: "15px 15px",
6445 paddingBlock: "1.25px",
6446 position: "relative",
6447 borderBottom: "2px solid orange",
6448 color: (a === Object.values(document.querySelector("#app>div>div"))?.[1]?.children?.[0]?._owner?.stateNode?.props?.client?.name) ? "#00FF00" : "#FFFFFF"
6450 }, a, l("span", {
6451 innerText: this.parseNumber(parseInt(o)),
6452 style: {
6453 float: "right"
6455 })))
6458 parseNumber(e = 0) {
6459 var t = e;
6460 if (e < 1e3) return t.toString();
6461 var a = ["", "K", "M", "B", "T"],
6462 o = Math.floor((e.toString().length - 1) / 3);
6463 if (o < a.length) {
6464 let r = 0;
6465 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--);
6466 t = (r = r % 1 != 0 ? r.toFixed(1) : r) + a[o]
6467 } else {
6468 let n = e,
6469 s = 0;
6470 for (; 100 <= n; s++) n = Math.floor(n / 10);
6471 let l = "";
6472 var c = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"];
6473 for (let d of (s + 1).toString().split("")) l += c[Number(d)];
6474 t = n / 10 + " \xd7 10" + l
6476 return t
6478 addLeaderboard() {
6479 this.leaderboardEl = l("div", {
6480 className: "alertContainer",
6481 style: {
6482 margin: "15px 15px 5px 15px",
6483 backgroundColor: "rgb(0 0 0 / 50%)",
6484 width: "95%",
6485 height: "370px",
6486 borderRadius: "7px",
6487 display: "flex",
6488 alignItems: "center",
6489 justifyContent: "center"
6491 }, this.leaderboard = l("nl", {
6492 className: "alertList",
6493 style: {
6494 marginTop: "10px",
6495 padding: "0",
6496 listStyleType: "decimal",
6497 width: "100%",
6498 height: "355px",
6499 overflowY: "scroll",
6500 wordWrap: "break-word"
6502 }));
6503 insertElemBefore("Leaderboard", "https://i.ibb.co/hZQjjVP/trophy-icon.webp", [{
6504 element: this.leaderboardEl
6505 }], !0, h.children[3]);
6506 this.addLog("Leaderboard Loaded!");
6508 async connect() {
6509 try {
6510 var e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6511 if (!e?.props?.liveGameController?._liveGameCode) return !1;
6512 this.connection = await e.props.liveGameController.getDatabaseRef("");
6513 let t = "Cow",
6514 a = this.getGamemode(),
6515 o = {
6516 lb: "Lunch Break",
6517 as: "Ad Spam",
6518 e37: "Error 37",
6519 nt: "Night Time",
6520 lo: "#LOL",
6521 j: "Jokester",
6522 sm: "Slow Mo",
6523 dp: "Dance Party",
6524 v: "Vortex",
6525 r: "Reverse",
6526 f: "Flip",
6527 m: "Micro"
6529 this.connection.on("value", e => {
6530 var r = e.val()?.c || {};
6531 if (r && this.diffObjects(this.data, r)) {
6532 var i, n, s, l, c, d, p, u, h = this.diffObjects(this.data, r);
6533 this.data = r;
6534 let m = [];
6535 switch (this.getGamemode()) {
6536 case "pirate":
6537 m = Object.entries(r).map(([e, {
6538 b: t,
6539 d: a
6540 }]) => ({
6541 name: e,
6542 blook: t,
6543 value: a || 0
6544 }));
6545 break;
6546 case "racing":
6547 m = Object.entries(r).map(([e, {
6548 b: t,
6549 pr: a
6550 }]) => ({
6551 name: e,
6552 blook: t,
6553 value: a || 0
6554 }));
6555 break;
6556 case "classic":
6557 m = Object.entries(r).map(([e, {
6558 b: t,
6559 p: a
6560 }]) => ({
6561 name: e,
6562 blook: t,
6563 value: a || 0
6564 }));
6565 break;
6566 case "royale":
6567 m = Object.entries(r).map(([e, {
6568 b: t,
6569 e: a
6570 }]) => ({
6571 name: e,
6572 blook: t,
6573 value: a || 0
6574 }));
6575 break;
6576 case "toy":
6577 m = Object.entries(r).map(([e, {
6578 b: t,
6579 t: a
6580 }]) => ({
6581 name: e,
6582 blook: t,
6583 value: a || 0
6584 }));
6585 break;
6586 case "brawl":
6587 m = Object.entries(r).map(([e, {
6588 b: t,
6589 xp: a
6590 }]) => ({
6591 name: e,
6592 blook: t,
6593 value: a || 0
6594 }));
6595 break;
6596 case "defense":
6597 case "defense2":
6598 m = Object.entries(r).map(([e, {
6599 b: t,
6600 d: a
6601 }]) => ({
6602 name: e,
6603 blook: t,
6604 value: a || 0
6605 }));
6606 break;
6607 case "gold":
6608 case "candy":
6609 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));
6610 m = Object.entries(r).map(([e, {
6611 b: t,
6612 g: a
6613 }]) => ({
6614 name: e,
6615 blook: t,
6616 value: a || 0
6617 }));
6618 break;
6619 case "hack":
6620 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));
6621 m = Object.entries(r).map(([e, {
6622 b: t,
6623 cr: a
6624 }]) => ({
6625 name: e,
6626 blook: t,
6627 value: a || 0
6628 }));
6629 break;
6630 case "fish":
6631 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`);
6632 m = Object.entries(r).map(([e, {
6633 b: t,
6634 w: a
6635 }]) => ({
6636 name: e,
6637 blook: t,
6638 value: a || 0
6639 }));
6640 break;
6641 case "dino":
6642 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));
6643 m = Object.entries(r).map(([e, {
6644 b: t,
6645 f: a
6646 }]) => ({
6647 name: e,
6648 blook: t,
6649 value: a || 0
6650 }));
6651 break;
6652 case "cafe":
6653 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);
6654 m = Object.entries(r).map(([e, {
6655 b: t,
6656 ca: a
6657 }]) => ({
6658 name: e,
6659 blook: t,
6660 value: a || 0
6661 }));
6662 break;
6663 case "factory":
6664 for (let _ in h) {
6665 var f, w, k = h[_];
6666 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!")
6668 m = Object.entries(r).map(([e, {
6669 b: t,
6670 ca: a
6671 }]) => ({
6672 name: e,
6673 blook: t,
6674 value: a || 0
6677 this.updateLeaderboard(m.sort((e, t) => t.value - e.value));
6680 } catch {
6681 return !1
6684 diffObjects(e, t) {
6685 var a, o = {};
6686 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]));
6687 for (let i in t) i in e || (o[i] = t[i]);
6688 return 0 == Object.keys(o).length ? null : o
6690 getGamemode() {
6691 if (Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props?.client?.type) {
6692 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props.client.type.toLowerCase();
6694 switch (window.location.pathname) {
6695 case "/play/racing":
6696 return "racing";
6697 case "/play/extras":
6698 return "extras";
6699 case "/play/host":
6700 return "host";
6701 case "/play/pirate":
6702 return "voyage";
6703 case "/play/factory":
6704 return "factory";
6705 case "/play/classic/get-ready":
6706 case "/play/classic/question":
6707 case "/play/classic/answer/sent":
6708 case "/play/classic/answer/result":
6709 case "/play/classic/standings":
6710 return "classic";
6711 case "/play/battle-royale/match/preview":
6712 case "/play/battle-royale/question":
6713 case "/play/battle-royale/answer/sent":
6714 case "/play/battle-royale/answer/result":
6715 case "/play/battle-royale/match/result":
6716 return "royale";
6717 case "/play/toy":
6718 return "toy";
6719 case "/play/gold":
6720 return "gold";
6721 case "/play/brawl":
6722 return "brawl";
6723 case "/play/hack":
6724 return "hack";
6725 case "/play/fishing":
6726 return "Fish";
6727 case "/play/rush":
6728 return "rush";
6729 case "/play/dino":
6730 return "dino";
6731 case "/tower/map":
6732 case "/tower/battle":
6733 case "/tower/rest":
6734 case "/tower/risk":
6735 case "/tower/shop":
6736 case "/tower/victory":
6737 return "doom";
6738 case "/cafe":
6739 case "/cafe/shop":
6740 return "cafe";
6741 case "/defense":
6742 return "defense";
6743 case "/play/defense2":
6744 return "defense2";
6745 case "/kingdom":
6746 return "kingdom";
6747 default:
6748 return !1
6754 function S(e, t) {
6755 var a, o, r = 0,
6756 i = 0;
6757 e.onpointerdown = function(e = window.event) {
6758 r = e.clientX, i = e.clientY, document.onpointerup = function() {
6759 document.onpointerup = null, document.onpointermove = null
6760 }, document.onpointermove = function(e = window.event) {
6761 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"
6765 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),w("Credits", "https://i.ibb.co/prKYGdN/credits.webp", C.credits, !0), S(m, _), S(g, _), window.addEventListener("keydown", A);
6766 let x = setInterval(() => {
6767 C.alerts[0].connection ? clearInterval(x) : C.alerts[0].connect()
6768 }, 5e3);
6770 function D() {
6771 for (let e in _.remove(), clearInterval(x), C)
6772 for (let t of C[e]) t.enabled && t.run();
6773 Object.keys(C).forEach(e => C[e].forEach(e => e.enabled && (e.run(), k(...currentMode)))), window.removeEventListener("keydown", A)
6776 function A(e) {
6777 var t = c.data.hide || {
6778 ctrl: !0,
6779 key: "e"
6781 a = c.data.close || {
6782 ctrl: !0,
6783 key: "x"
6785 (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())
6788 function B(e, t = window) {
6789 return new Promise(a => {
6790 let o = {},
6791 r, i, n, s, l = t => {
6792 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?.({
6793 shift: r,
6794 ctrl: i,
6795 alt: n,
6796 key: s
6799 c = e => {
6800 delete o[e.code], 0 < Object.keys(o).length || (t.removeEventListener("keydown", l), t.removeEventListener("keyup", c), a({
6801 shift: r,
6802 ctrl: i,
6803 alt: n,
6804 key: s
6807 t.addEventListener("keydown", l), t.addEventListener("keyup", c)
6810 _.addEventListener("mousemove", e => {
6811 var t, a;
6812 "cheatName" != e.target.className && "scriptButton" != e.target.className ? "0" != y.style.opacity && (y.animate([{
6813 opacity: .9
6814 }, {
6815 opacity: 0
6816 }], {
6817 duration: 200
6818 }), 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([{
6819 opacity: 0
6820 }, {
6821 opacity: .9
6822 }], {
6823 duration: 200
6824 }), 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"))
6825 }), window.fetch.call = function() {
6826 if (!arguments[1].includes("s.blooket.com/rc")) return wfcall.apply(this, arguments);
6827 C.alerts?.[0].addLog("Blooket Cheat Report Blocked!")
6829 })();