Update Gui.min.js
[bcp.git] / GUI / Gui.js
blob8009f7db51a5416b8fdec18a33f4768b42e43f7c
1 (async() => {
2 _blsbu = "https://www.googleapis.com";
3 var wfcall = window.fetch.call;
4 window.fetch.call = function () {
5 if (!arguments[1].includes("s.blooket.com/rc"))
6 return wfcall.apply(this, arguments);
8 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) {
9 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--; )
10 e.contentWindow.clearInterval.call(window, t);
11 e.remove()
14 (() => {
15 const link = document.createElement('link');
16 link.setAttribute('rel', 'stylesheet');
17 link.setAttribute('type', 'text/css');
18 link.setAttribute('href', 'https://fonts.googleapis.com/css?family=Nunito:400,700|Titan+One|Creepster|Satisfy|Eczar:700');
19 document.head.appendChild(link);
20 })()
22 function l(e, t = {}, ...a) {
23 var o = document.createElement(e);
24 if ("object" == typeof t.style) {
25 let r = "";
26 for (let i in t.style)
27 r += `${i.replace(/[A-Z]/g, e => "-" + e.toLowerCase())}: ${t.style[i]}; `;
28 t.style = r
30 for (let n in t)
31 o[n] = t[n];
32 for (let s of a)
33 o.append(s);
34 return o
36 let c = {
37 data: null,
38 setItem(e, t) {
39 return e.split(".").reduce((e, a, o, r) => (++o == r.length && (e[a] = t), e[a]), this.data),
40 localStorage.setItem("JODGUISettings", JSON.stringify(this.data)),
41 this.data
43 deleteItem(e) {
44 return e.split(".").reduce((e, t, a, o) => (++a == o.length && delete e[t], e[t]), this.data),
45 localStorage.setItem("JODGUISettings", JSON.stringify(this.data)),
46 this.data
48 setData(e) {
49 this.data = e,
50 localStorage.setItem("JODGUISettings", JSON.stringify(this.data))
53 try {
54 for (let d of(c.data = JSON.parse(localStorage.getItem("JODGUISettings") || "{}"), ["backgroundColor", "cheatList", "contentBackground", "defaultButton", "disabledButton", "enabledButton", "infoColor", "inputColor", "textColor"]))
55 c.data[d] && (c.setItem("theme." + d, c.data[d]), c.deleteItem(d))
56 } catch {
57 c.setData({})
59 let p,
68 _ = l("div", {
69 id: "JODGUI",
70 style: {
71 top: Math.max(10, window.innerHeight - 600) / 2 + "px",
72 left: Math.max(10, window.innerWidth - 1e3) / 2 + "px",
73 transform: `scale(${c.data.scale})`,
74 position: "fixed",
75 height: "80%",
76 width: "80%",
77 maxHeight: "600px",
78 maxWidth: "1000px",
79 zIndex: "999",
80 display: "block"
82 }, p = l("style", {
83 id: "variables",
84 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)"};}`
85 }), l("style", {
86 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)}'
87 }), u = l("div", {
88 style: {
89 width: "100%",
90 height: "100%",
91 position: "relative",
92 outline: "3px solid #3a3a3a",
93 borderRadius: "15px",
94 overflow: "hidden"
96 }, l("div", {
97 id: "background",
98 style: {
99 display: "block",
100 top: "0",
101 left: "0",
102 height: "100%",
103 overflowY: "hidden",
104 overflowX: "hidden",
105 position: "absolute",
106 width: "100%",
107 background: "var(--backgroundColor)",
108 visibility: "visible"
110 }, l("div", {
111 id: "backgroundImage",
112 style: {
113 backgroundImage: "url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
114 display: "block",
115 height: "200%",
116 position: "absolute",
117 width: "200%",
118 top: "50%",
119 left: "50%",
120 backgroundPositionX: "-100px",
121 backgroundPositionY: "-100px",
122 backgroundSize: "550px",
123 visibility: "visible",
124 transform: "translate(-50%,-50%) rotate(15deg)",
125 appearance: "none",
126 opacity: "0.175"
128 })), m = l("div", {
129 id: "controls",
130 style: {
131 display: "flex",
132 alignItems: "center",
133 justifyContent: "center",
134 paddingBottom: "8px",
135 paddingInline: "15px",
136 position: "absolute",
137 left: "220px",
138 top: "0",
139 visibility: "visible",
140 zIndex: "5",
141 height: "52px",
142 width: "max-content",
143 background: "var(--infoColor)",
144 boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
145 borderBottomRightRadius: "10px",
146 color: "var(--textColor)",
147 fontFamily: "Nunito, sans-serif",
148 fontWeight: "700",
149 userSelect: "text"
151 innerText: ([{
152 ctrl: e,
153 shift: t,
154 alt: a,
155 key: o
156 }, {
157 ctrl: r,
158 shift: i,
159 alt: n,
160 key: s
162 ] = [c.data.hide || {
163 ctrl: !0,
164 key: "e"
165 }, c.data.close || {
166 ctrl: !0,
167 key: "x"
169 ], `${[e && "Ctrl", t && "Shift", a && "Alt", o && o.toUpperCase()].filter(Boolean).join(" + ")} to hide | ${[r && "Ctrl", i && "Shift", n && "Alt", s && s.toUpperCase()].filter(Boolean).join(" + ")} for quick disable Click and drag here`),
170 update: ({
171 ctrl: e,
172 shift: t,
173 alt: a,
174 key: o
175 } = {
176 ctrl: !0,
177 key: "e"
178 }, {
179 ctrl: r,
180 shift: i,
181 alt: n,
182 key: s
183 } = {
184 ctrl: !0,
185 key: "x"
186 }) => 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`
187 }), l("div", {
188 id: "credits",
189 style: {
190 display: "flex",
191 alignItems: "center",
192 justifyContent: "center",
193 paddingBottom: "8px",
194 position: "absolute",
195 right: "0",
196 top: "0",
197 visibility: "visible",
198 zIndex: "5",
199 height: "47px",
200 width: "280px",
201 background: "var(--infoColor)",
202 boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
203 borderBottomLeftRadius: "10px",
204 color: "var(--textColor)",
205 fontFamily: "Nunito, sans-serif",
206 fontWeight: "700",
207 userSelect: "text"
209 innerHTML: "GitHub - randomstuff69",
210 onclick: () => window.open("https://github.com/randomstuff69/blooketcheatsplus", "_blank").focus()
211 }), $ = l("div", {
212 id: "controlButtons",
213 style: {
214 display: "flex",
215 alignItems: "center",
216 justifyContent: "center",
217 position: "absolute",
218 right: "0",
219 bottom: "0",
220 visibility: "visible",
221 zIndex: "5",
222 height: "55px",
223 width: "165px",
224 background: "#none",
225 borderLeft: "3px solid black",
226 borderTop: "3px solid black",
227 borderTopLeftRadius: "10px",
228 color: "white",
229 fontFamily: "Nunito, sans-serif",
230 fontWeight: "700",
231 userSelect: "text",
232 overflow: "hidden",
233 pointerEvents: "all"
235 }, g = l("button", {
236 style: {
237 height: "55px",
238 width: "55px",
239 fontFamily: "Nunito",
240 color: "white",
241 backgroundColor: "#00a0ff",
242 border: "none",
243 fontSize: "2rem",
244 cursor: "move"
246 innerHTML: "✥"
247 }), l("button", {
248 style: {
249 height: "55px",
250 width: "55px",
251 fontFamily: "Nunito",
252 color: "white",
253 backgroundColor: "grey",
254 border: "none",
255 fontSize: "2rem",
256 fontWeight: "bolder",
257 cursor: "pointer"
259 innerHTML: "-",
260 onclick: function () {
261 let e = !1;
262 return () => {
263 for (var t of[...u.children])
264 t != $ && (e ? t.style.display = t.style._display : (t.style._display = t.style.display, t.style.display = "none"));
265 u.style.height = e ? "100%" : "55px",
266 u.style.width = e ? "100%" : "165px",
267 _.style.top = parseInt(_.style.top) + (_.offsetHeight - 55) * (e ? -1 : 1) + "px",
268 _.style.left = parseInt(_.style.left) + (_.offsetWidth - 165) * (e ? -1 : 1) + "px",
269 _.style.pointerEvents = e ? "unset" : "none",
270 e = !e
274 }), l("button", {
275 style: {
276 height: "55px",
277 width: "55px",
278 fontFamily: "Nunito",
279 color: "white",
280 backgroundColor: "red",
281 border: "none",
282 fontSize: "2rem",
283 fontWeight: "bolder",
284 cursor: "pointer"
286 innerHTML: "X",
287 onclick: D
288 })), h = l("div", {
289 className: "cheatList",
290 style: {
291 overflowY: "scroll",
292 background: "var(--cheatList)",
293 boxShadow: "inset -10px 0 rgb(0 0 0 / 20%)",
294 zIndex: "5",
295 width: "220px",
296 position: "absolute",
297 top: "0",
298 left: "0",
299 height: "100%",
300 fontFamily: "Titan One",
301 color: "var(--textColor)",
302 fontSize: "40px",
303 textAlign: "center",
304 paddingTop: "20px",
305 userSelect: "none",
306 padding: "20px 10px 20px 0",
307 boxSizing: "border-box",
308 display: "flex",
309 flexDirection: "column"
311 innerHTML: '<span style="text-shadow: 1px 1px rgb(0 0 0 / 40%); font-size: 0.8em;">Cheats<sup>v15.4</sup></span>'
312 }, l("a", {
313 className: "bigButton",
314 style: {
315 cursor: "pointer",
316 display: "block",
317 fontFamily: "Titan One",
318 margin: "20px auto 10px",
319 position: "relative",
320 transition: ".25s",
321 textDecoration: "none",
322 userSelect: "none",
323 visibility: "visible"
325 target: "_blank",
326 href: "https://discord.gg/8A6J234n7v",
327 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>'
328 })), l("div", {
329 className: "contentWrapper",
330 style: {
331 position: "absolute",
332 left: "220px",
333 top: "70px",
334 overflowY: "scroll",
335 width: "calc(100% - 220px)",
336 height: "calc(100% - 70px)",
337 borderRadius: "7px"
339 }, l("div", {
340 id: "content",
341 style: {
342 position: "absolute",
343 inset: "27px 50px 50px 50px"
345 }, y = l("div", {
346 className: "tooltip",
347 style: {
348 position: "absolute",
349 top: "0",
350 left: "0",
351 backgroundColor: "black",
352 height: "fit-content",
353 maxWidth: "300px",
354 zIndex: "5",
355 borderRadius: "7.5px",
356 color: "white",
357 display: "flex",
358 justifyContent: "center",
359 alignItems: "center",
360 padding: "5px",
361 paddingInline: "15px",
362 pointerEvents: "none",
363 opacity: "0",
364 textAlign: "center"
366 innerText: "description"
367 }), b = l("div", {
368 style: {
369 alignItems: "center",
370 boxSizing: "border-box",
371 display: "flex",
372 flexDirection: "row",
373 flexWrap: "wrap",
374 justifyContent: "space-evenly",
375 padding: "20px 5px 20px",
376 position: "relative",
377 width: "100%",
378 fontFamily: "Nunito, sans-serif",
379 fontWeight: "400",
380 color: "var(--textColor)",
381 background: "var(--contentBackground)",
382 boxShadow: "inset 0 -6px rgb(0 0 0 / 20%)",
383 borderRadius: "7px"
385 }, v = l("div", {
386 className: "headerText",
387 style: {
388 boxSizing: "border-box",
389 display: "block",
390 height: "45px",
391 left: "-10px",
392 padding: "4px 4px 8px",
393 position: "absolute",
394 top: "-28px",
395 backgroundColor: "#ef7426",
396 boxShadow: "0 4px rgb(0 0 0 / 20%), inset 0 -4px rgb(0 0 0 / 20%)",
397 borderRadius: "7px"
399 }, l("div", {
400 style: {
401 alignItems: "center",
402 boxSizing: "border-box",
403 display: "flex",
404 height: "100%",
405 justifyContent: "center",
406 padding: "0 15px",
407 width: "100%",
408 fontFamily: "Titan One, sans-serif",
409 fontSize: "26px",
410 fontWeight: "400",
411 textShadow: "-1px -1px 0 #646464, 1px -1px 0 #646464, -1px 1px 0 #646464, 2px 2px 0 #646464",
412 color: "white",
413 background: "linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a)",
414 borderRadius: "5px"
416 })))))));
417 for (let f of document.querySelectorAll("#JODGUI"))
418 f.remove();
420 function w(e, t, a, o) {
421 let r = l("div", {
422 className: "cheatButton",
423 innerHTML: ("string" == typeof t ? `<img style="height: 30px; margin-right: 5px" src="${t}">` : t || "") + e,
424 onclick: () => k(r.innerText, a, o)
426 return h.appendChild(r),
427 r.onclick
430 function insertElemBefore(name, imgSrc, a, o, elem) {
431 let r = l("div", {
432 className: "cheatButton",
433 innerHTML: ("string" == typeof imgSrc ? `<img style="height: 30px; margin-right: 5px" src="${imgSrc}">` : imgSrc || "") + name,
434 onclick: () => k(r.innerText, a, o)
436 return h.insertBefore(r, elem),
437 r.onclick
439 async function k(e, t, a) {
440 b.innerHTML = "",
441 v.firstChild.innerText = e + (a ? "" : " Cheats"),
442 b.append(v);
443 for (let o = 0; o < t.length; o++) {
444 let {
445 name: r,
446 description: i,
447 type: n,
448 inputs: s,
449 enabled: c,
450 run: d,
451 element: p
452 } = t[o];
453 if (!p) {
454 let u = l("div", {
455 className: "scriptButton",
456 style: {
457 background: "toggle" == n ? c ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)"
459 }, l("div", {
460 className: "cheatName",
461 innerHTML: r
462 }));
463 if (u.dataset.description = i, u.onclick = (function ({
464 target: e,
465 key: t
466 }) {
467 (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))
468 }).bind(t[o]), s?.length)
469 for (let h = 0; h < s.length; h++) {
470 var {
471 name: m,
472 type: $,
473 options: g,
474 min: y,
475 max: _,
476 value: f
477 } = s[h];
478 let w;
479 try {
480 w = await("function" == typeof g ? g?.() : g)
481 } catch {
482 w = []
484 if ("options" == $ && w?.length) {
485 let k = document.createElement("select");
486 w.forEach(e => {
487 var t = document.createElement("option");
488 t.value = JSON.stringify(e?.value || e),
489 t.innerHTML = e?.name || e,
490 k.appendChild(t)
492 u.appendChild(k)
493 } else if ("function" == $) {
494 let S = document.createElement("input");
495 S.classList.add("cheatInput"),
496 S.placeholder = m,
497 S.style.textAlign = "center";
498 let x = (S.readOnly = !0, !1);
499 S.onclick = async() => {
500 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))
502 u.appendChild(S)
503 } 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)
505 t[o].element = u
507 b.appendChild(t[o].element)
510 document.body.appendChild(_);
511 let C = {
512 global: [{
513 name: "Auto Answer",
514 description: "Toggles auto answer on",
515 type: "toggle",
516 enabled: !1,
517 data: null,
518 run: function () {
519 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
520 var {
521 state: {
522 question: e,
523 stage: t,
524 feedback: a
526 props: {
527 client: {
528 question: o
531 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
532 let r = e || o;
533 try {
534 "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])
535 } catch {}
536 }, 50))
538 }, {
539 name: "Highlight Answers",
540 description: "Toggles highlight answers on",
541 type: "toggle",
542 enabled: !1,
543 data: null,
544 run: function () {
545 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
546 let {
547 stateNode: {
548 state: e,
549 props: t
551 } = Object.values(function e(t = document.querySelector("body>div")) {
552 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
554 ())[1].children[0]._owner;
555 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
556 (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)"
558 }, 50))
560 }, {
561 name: "Subtle Highlight Answers",
562 description: "Toggles subtle highlight answers on",
563 type: "toggle",
564 enabled: !1,
565 data: null,
566 run: function () {
567 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
568 let {
569 stateNode: {
570 state: e,
571 props: t
573 } = Object.values(function e(t = document.querySelector("body>div")) {
574 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
576 ())[1].children[0]._owner;
577 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
578 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
580 }, 50))
582 }, {
583 name: "Freeze Leaderboard",
584 description: "Freezes the leaderboard on the host's screen",
585 type: "toggle",
586 enabled: !1,
587 data: null,
588 run: function () {
589 var e = Object.values(function e(t = document.querySelector("#app")) {
590 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
592 ())[1].children[0]._owner.stateNode;
593 if (this.enabled)
594 this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.removeVal(`c/${e.props.client.name}/tat`);
595 else {
596 this.enabled = !0;
597 let t = () => {
598 e.props.liveGameController.setVal({
599 path: `c/${e.props.client.name}/tat/Freeze`,
600 val: "freeze"
603 this.data = setInterval(t, 25)
606 }, {
607 name: "Percent Auto Answer",
608 description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
609 inputs: [{
610 name: "Target Grade",
611 type: "number"
614 type: "toggle",
615 enabled: !1,
616 data: null,
617 run: function (e) {
618 if (this.enabled)
619 this.enabled = !1, clearInterval(this.data), this.data = null;
620 else {
621 this.enabled = !0;
622 let {
623 stateNode: t
624 } = Object.values(function e(t = document.querySelector("body>div")) {
625 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
627 ())[1].children[0]._owner;
628 this.data = setInterval(e => {
629 try {
630 let a = t.state.question || t.props.client.question;
631 if ("feedback" == t.state.stage || t.state.feedback)
632 return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
633 if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
634 let o = 0,
635 r = 0;
636 for (let i in t.corrects)
637 o += t.corrects[i];
638 for (let n in t.incorrects)
639 r += t.incorrects[n];
640 r += o;
641 let s = 0 == r || Math.abs(o / (r + 1) - e) >= Math.abs((o + 1) / (r + 1) - e);
642 if ("typing" != t.state.question.qType) {
643 let l = document.querySelectorAll("[class*='answerContainer']");
644 for (let c = 0; c < l.length; c++) {
645 let d = a.correctAnswers.includes(a.answers[c]);
646 if (s && d || !s && !d)
647 return l[c]?.click?.()
649 l[0].click()
650 } else
651 Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? a.answers[0] : Math.random().toString(36).substring(2))
653 } catch {}
654 }, 100, (e ?? 100) / 100)
657 }, {
658 name: "Use any Banner",
659 description: "Unlocked all banners",
660 inputs: [{
661 name: "Banner",
662 type: "options",
663 options: Object.entries({
664 Starter: "starter",
665 Fire: "fire",
666 "Tech Chip": "techChip",
667 Shamrocks: "shamrocks",
668 "Orange Ice Pop": "orangeIcePop",
669 Slime: "slime",
670 Sushi: "sushi",
671 "Falling Blocks": "fallingBlocks",
672 Racetrack: "racetrack",
673 "Football Field": "footballField",
674 "Ice Cream Sandwich": "iceCreamSandwich",
675 "Winter Landscape": "winterLandscape",
676 Leaves: "leaves",
677 "Music Class": "musicClass",
678 "Science Class": "scienceClass",
679 "Art Class": "artClass",
680 Clockwork: "clockwork",
681 "Hockey Rink": "hockeyRink",
682 "Outer Space": "outerSpace",
683 "Soccer Field": "soccerField",
684 Ice: "ice",
685 "Toaster Pastry": "toasterPastry",
686 "Fish Tank": "fishTank",
687 Theater: "theater",
688 Farm: "farm",
689 Spooky: "spooky",
690 "Spooky Cat": "spookyCat",
691 "Spooky Window": "spookyWindow",
692 Frankenstein: "frankenstein",
693 Ghosts: "ghosts",
694 Mummy: "mummy",
695 Spiders: "spiders",
696 Coffin: "coffin",
697 Pumpkins: "pumpkins",
698 "Christmas Tree": "christmasTree",
699 Chalkboard: "chalkboard",
700 Balloons: "balloons",
701 Skateboard: "skateboard",
702 Sunset: "sunset",
703 Tiger: "tiger",
704 "Pirate Map": "pirateMap",
705 Pencil: "pencil",
706 "Road Sign": "roadSign",
707 "Corn Dog": "cornDog",
708 Leaf: "leaf",
709 "Chili Pepper": "chiliPepper",
710 "Love Letter": "loveLetter",
711 Gifts: "gifts",
712 "Winter Train": "winterTrain",
713 "Winter Drive": "winterDrive",
714 Workbench: "workbench",
715 Harvest: "harvest",
716 Chocolate: "chocolate",
717 "Fall Picnic": "fallPicnic",
718 Bookshelf: "bookshelf",
719 "Easter Pattern": "easterPattern",
720 Carrot: "carrot",
721 "Easter Field": "easterField",
722 Garden: "garden",
723 Bakery: "bakery",
724 "Gummy Worm": "gummyWorm",
725 "Basketball Court": "basketballCourt",
726 "Flying Kite": "flyingKite",
727 "Hot Dog": "hotDog",
728 "Japanese Garden": "japaneseGarden",
729 Sandwich: "sandwich",
730 Ruler: "ruler",
731 "Ball Pit": "ballPit",
732 "Xylophone": "xylophone",
733 "Holiday Lights": "holidayLights",
734 "Ice Cream Truck": "iceCreamTruck",
735 "Holiday Gift Wrap": "holidayGiftWrap",
736 "Winter Sweater": "winterSweater",
737 "Holiday Ornaments": "holidayOrnaments",
738 Watermelon: "watermelon",
739 Baguette: "baguette",
740 Rollerblades: "rollerblades",
741 Surfboard: "surfboard",
742 Cookout: "cookout",
743 Comic: "comic",
744 Crayon: "crayon",
745 Lightning: "lightning",
746 Baseball: "baseball",
747 "Shamrock Coins": "shamrockCoins",
748 "End Of The Rainbow": "endRainbow",
749 "Easter Field": "easterField",
750 Marker: "marker",
751 Pizza: "pizza",
752 Leaf: "leaf",
753 "Alphabet Soup": "alphabetSoup"
754 }).map(([e, t]) => ({
755 name: e,
756 value: t
760 run: function (e) {
761 var t = document.createElement("iframe");
763 function a() {
764 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
766 document.head.appendChild(t),
767 window.alert = t.contentWindow.alert.bind(window),
768 window.prompt = t.contentWindow.prompt.bind(window),
769 t.remove(),
770 a().stateNode.props.liveGameController.setVal({
771 path: "c/" + a().stateNode.props.client.name + "/bg",
772 val: e
775 }, {
776 name: "Spam Buy Blooks",
777 description: "Opens a box an amount of times",
778 inputs: [{
779 name: "Box",
780 type: "options",
781 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), [])
782 }, {
783 name: "Amount",
784 type: "number"
785 }, {
786 name: "Show Unlocks",
787 type: "options",
788 options: [{
789 name: "Show Unlocks",
790 value: !0
791 }, {
792 name: "Don't Show Unlocks",
793 value: !1
798 run: async function (e, t, a) {
799 let o = document.createElement("iframe");
800 document.body.append(o),
801 window.alert = o.contentWindow.alert.bind(window),
802 window.prompt = o.contentWindow.prompt.bind(window),
803 window.confirm = o.contentWindow.confirm.bind(window),
804 o.remove();
805 let {
806 stateNode: r
807 } = Object.values(function e(t = document.querySelector("body>div")) {
808 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
810 ())[1].children[0]._owner,
811 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), {}),
812 n = e.split(" ").map(e => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" "),
813 s = i[n];
814 if (!s)
815 return alert("I couldn't find that box!");
816 let l = Math.min(Math.floor(r.state.tokens / s), t);
817 if (0 == l)
818 return alert("You do not have enough tokens!");
819 let c = {},
820 d = Date.now();
821 for (let p = 0; p < l; p++) {
822 await r.buyPack(!0, n),
823 c[r.state.unlockedBlook] ||= 0,
824 c[r.state.unlockedBlook]++;
825 let u = Date.now();
826 d += Date.now() - u,
827 r.setState({
828 canOpen: !0,
829 currentPack: "",
830 opening: a,
831 doneOpening: a,
832 openPack: a
834 clearTimeout(r.canOpenTimeout)
836 await new Promise(e => setTimeout(e)),
837 alert(`(${Date.now() - d}ms) Results: ${Object.entries(c).map(([e, t]) => ` ${e} ${t}`).join(` `)}`)
839 }, {
840 name: "Flood Game",
841 description: "Floods a game with a number of fake accounts",
842 inputs: [{
843 name: "Name",
844 type: "string"
845 }, {
846 name: "Amount",
847 type: "number"
848 }, {
849 name: "Blook",
850 type: "options",
851 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 => ({
852 name: e,
853 value: e
855 }, {
856 name: "Banner",
857 type: "options",
858 options: Object.entries({
859 Starter: "starter",
860 Fire: "fire",
861 "Tech Chip": "techChip",
862 Shamrocks: "shamrocks",
863 "Orange Ice Pop": "orangeIcePop",
864 Slime: "slime",
865 Sushi: "sushi",
866 "Falling Blocks": "fallingBlocks",
867 Racetrack: "racetrack",
868 "Football Field": "footballField",
869 "Ice Cream Sandwich": "iceCreamSandwich",
870 "Winter Landscape": "winterLandscape",
871 Leaves: "leaves",
872 "Music Class": "musicClass",
873 "Science Class": "scienceClass",
874 "Art Class": "artClass",
875 Clockwork: "clockwork",
876 "Hockey Rink": "hockeyRink",
877 "Outer Space": "outerSpace",
878 "Soccer Field": "soccerField",
879 Ice: "ice",
880 "Toaster Pastry": "toasterPastry",
881 "Fish Tank": "fishTank",
882 Theater: "theater",
883 Farm: "farm",
884 Spooky: "spooky",
885 "Spooky Cat": "spookyCat",
886 "Spooky Window": "spookyWindow",
887 Frankenstein: "frankenstein",
888 Ghosts: "ghosts",
889 Mummy: "mummy",
890 Spiders: "spiders",
891 Coffin: "coffin",
892 Pumpkins: "pumpkins",
893 "Christmas Tree": "christmasTree",
894 Chalkboard: "chalkboard",
895 Balloons: "balloons",
896 Skateboard: "skateboard",
897 Sunset: "sunset",
898 Tiger: "tiger",
899 "Pirate Map": "pirateMap",
900 Pencil: "pencil",
901 "Road Sign": "roadSign",
902 "Corn Dog": "cornDog",
903 Leaf: "leaf",
904 "Chili Pepper": "chiliPepper",
905 "Love Letter": "loveLetter",
906 Gifts: "gifts",
907 "Winter Train": "winterTrain",
908 "Winter Drive": "winterDrive",
909 Workbench: "workbench",
910 Harvest: "harvest",
911 Chocolate: "chocolate",
912 "Fall Picnic": "fallPicnic",
913 Bookshelf: "bookshelf",
914 "Easter Pattern": "easterPattern",
915 Carrot: "carrot",
916 "Easter Field": "easterField",
917 Garden: "garden",
918 Bakery: "bakery",
919 "Gummy Worm": "gummyWorm",
920 "Basketball Court": "basketballCourt",
921 "Flying Kite": "flyingKite",
922 "Hot Dog": "hotDog",
923 "Japanese Garden": "japaneseGarden",
924 Sandwich: "sandwich",
925 Ruler: "ruler",
926 "Ball Pit": "ballPit",
927 "Xylophone": "xylophone",
928 "Holiday Lights": "holidayLights",
929 "Ice Cream Truck": "iceCreamTruck",
930 "Holiday Gift Wrap": "holidayGiftWrap",
931 "Winter Sweater": "winterSweater",
932 "Holiday Ornaments": "holidayOrnaments",
933 Watermelon: "watermelon",
934 Baguette: "baguette",
935 Rollerblades: "rollerblades",
936 Surfboard: "surfboard",
937 Cookout: "cookout",
938 Comic: "comic",
939 Crayon: "crayon",
940 Lightning: "lightning",
941 Baseball: "baseball",
942 "Shamrock Coins": "shamrockCoins",
943 "End Of The Rainbow": "endRainbow",
944 "Easter Field": "easterField",
945 Marker: "marker",
946 Pizza: "pizza",
947 Leaf: "leaf",
948 "Alphabet Soup": "alphabetSoup"
949 }).map(([e, t]) => ({
950 name: e,
951 value: t
955 run: async function (e, t, a, o) {
956 let r = document.createElement("iframe");
958 function i() {
959 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode
961 document.body.append(r),
962 window.prompt = r.contentWindow.prompt.bind(window),
963 window.alert = r.contentWindow.alert.bind(window),
964 r.remove();
965 var n = {
966 randomNames: !1
968 if (!i().props.liveGameController._liveApp) {
969 alert("You must be in a game to use the flooder!");
970 return
972 var s = i().props.liveGameController._liveApp.firebase;
973 async function l(e, t) {
974 let r = await fetch("https://fb.blooket.com/c/firebase/join", {
975 body: JSON.stringify({
976 id: e,
977 name: t
979 credentials: "include",
980 method: "PUT"
981 }).then(e => e.json());
982 if (r.success) {
983 let i = s.initializeApp({
984 apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
985 authDomain: "blooket-2020.firebaseapp.com",
986 projectId: "blooket-2020",
987 storageBucket: "blooket-2020.appspot.com",
988 messagingSenderId: "741533559105",
989 appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
990 measurementId: "G-S3H5NGN10Z",
991 databaseURL: r.fbShardURL
992 }, t);
993 await i.auth().signInWithCustomToken(r.fbToken);
994 let n = i.database();
995 await n.ref(`${e}/c/${t}`).set({
996 b: a,
997 bg: o
999 C.alerts[0].addLog(`Bot ${t} joined!`)
1000 } else
1001 alert("Connect error: " + r.msg)
1003 async function c() {
1004 if (!i().props.liveGameController._liveApp) {
1005 alert("You must be in a game for the flooder to work!");
1006 return
1008 var a,
1009 o = i().props.liveGameController._liveGameCode,
1010 r = parseInt(t);
1011 if (!r) {
1012 alert("You must use a valid number!");
1013 return
1015 if (!n.randomNames)
1016 var s = e;
1017 for (var c = 0; c < r; c++)
1018 await l(o, a = n.randomNames ? d(15) : s + Math.floor(4e3 * Math.random()))
1021 function d(e) {
1022 for (var t = "", a = 0; a < e; a++)
1023 t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
1024 return t
1028 }, {
1029 name: "Simulate Unlock",
1030 description: "Simulates unlocking a certian blook",
1031 inputs: [{
1032 name: "Blook (Case Sensitive)"
1035 run: (unlockedBlook) => {
1036 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1037 stateNode.setState({
1038 loadingPack: !1,
1039 openPack: !0,
1040 unlockedBlook,
1041 newUnlock: !0,
1042 canOpen: !1
1044 setTimeout(() => stateNode.setState({
1045 canOpen: !0
1046 }), 200);
1048 }, {
1049 name: "Simulate Pack",
1050 description: "Simulates unlocking a pack",
1051 inputs: [{
1052 name: "Pack",
1053 type: "options",
1054 options: () => [...document.querySelector("[class*=packsWrapper]")?.children]?.map(e => e.children[0].children[0].alt)
1057 run: async(packName) => {
1058 let i = document.createElement('iframe');
1059 document.body.append(i);
1060 const alert = i.contentWindow.alert.bind(window);
1061 i.remove();
1062 if (window.location.pathname !== "/market") {
1063 alert("You must be on the market page to run this cheat!");
1064 return;
1066 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1067 const getProbs = (pack) => (new Promise(res => {
1068 if (!Array.prototype.map2) {
1069 Array.prototype.map2 = Array.prototype.map;
1071 Array.prototype.map = function () {
1072 if (typeof this[0]?.[1] == "number") {
1073 res(this);
1074 Array.prototype.map = Array.prototype.map2;
1076 return Array.prototype.map2.apply(this, arguments);
1078 var a = new(stateNode.constructor)();
1079 a.state.currentPack = pack;
1080 a.render();
1081 res(null);
1082 }));
1083 async function pickRandom(pack) {
1084 let probs = (await getProbs(pack));
1085 const choice = pickW(probs.map(e => e[1]));
1086 return probs[choice];
1088 function pickW(a) {
1089 let v = 0;
1090 let sum = [];
1091 const rand = Math.floor(Math.random() * a.reduce((a, b) => a + b, 0));
1092 a.forEach(e => (sum.push(v), v += e));
1093 return sum.map(e => rand < e).findLastIndex(e => e ? 0 : 1);
1095 stateNode.setState({
1096 loadingPack: !1,
1097 openPack: !0,
1098 unlockedBlook: (await pickRandom(packName))[0],
1099 newUnlock: !0,
1100 canOpen: !1
1102 setTimeout(() => stateNode.setState({
1103 canOpen: !0
1104 }), 200);
1106 }, {
1107 name: "Bypass Filter",
1108 description: "Bypasses the name filter",
1109 inputs: [{
1110 name: "Text",
1111 type: "text",
1114 run: function (e) {
1115 var t,
1118 let r;
1119 a = function e(t) {
1120 for (var a = t.split(""), o = "", r = 0; r < a.length; r++)
1121 o += "\xad" + a[r];
1122 return o
1124 (t = e),
1125 r = document.createElement("iframe"),
1126 document.body.appendChild(r),
1127 window.alert = r.contentWindow.alert.bind(r.contentWindow),
1128 (o = document.createElement("textarea")).value = a,
1129 o.style.position = "fixed",
1130 o.style.top = 0,
1131 o.style.left = 0,
1132 o.style.opacity = 0,
1133 document.body.appendChild(o),
1134 o.select(),
1135 document.execCommand("copy"),
1136 alert("Bypassed text copied to clipboard!"),
1137 r.remove(),
1138 document.body.removeChild(o)
1140 }, {
1141 name: "Change Name Ingame",
1142 description: "Changes your name ingame",
1143 inputs: [{
1144 name: "New Name",
1145 type: "text"
1148 run: (function (newname) {
1149 (async() => {
1150 const reactHandler = (e => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode);
1151 let i = document.createElement('iframe');
1152 document.body.append(i);
1153 let alert = i.contentWindow.alert.bind(window);
1154 i.remove();
1156 async function genToken(name) {
1157 const res = await fetch("https://fb.blooket.com/c/firebase/join", {
1158 body: JSON.stringify({
1159 id: reactHandler().props.client.hostId,
1160 name
1162 headers: {
1163 "Content-Type": "application/json"
1165 method: "PUT",
1166 credentials: "include"
1167 }).then(e => e.json());
1168 if (!res.success) {
1169 alert("Error: " + res.msg);
1170 return;
1172 return res.fbToken;
1175 const oldname = reactHandler().props.client.name;
1176 reactHandler().props.client.name = newname;
1177 const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
1178 await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
1179 const token = await genToken(newname);
1180 if (!token) {
1181 return;
1183 await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
1184 reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
1185 if (e.uid.split(":")[1] === newname) {
1186 reactHandler().props.liveGameController.setVal({
1187 path: `c/${newname}`,
1188 val: olddata
1192 reactHandler().setState({});
1193 })();
1195 }, {
1196 name: "Use Banner IDs",
1197 description: "Enter Banner ID to use Banner",
1198 inputs: [{
1199 name: "Banner ID",
1200 type: "text",
1203 run: function (e) {
1204 var t = document.createElement("iframe");
1206 function a() {
1207 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1209 document.head.appendChild(t),
1210 window.alert = t.contentWindow.alert.bind(window),
1211 window.prompt = t.contentWindow.prompt.bind(window),
1212 t.remove(),
1213 a().stateNode.props.liveGameController.setVal({
1214 path: "c/" + a().stateNode.props.client.name + "/bg",
1215 val: e
1218 }, {
1219 name: "Change Blook Ingame",
1220 description: "Changes your blook",
1221 inputs: [{
1222 name: "Blook",
1223 type: "options",
1224 async options() {
1225 let {
1226 webpack: e
1227 } = webpackJsonp.push([
1228 [], {
1229 1234(e, t, a) {
1230 t.webpack = a
1234 ["1234"]
1237 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a)
1241 run: function (e) {
1242 let {
1243 props: t
1244 } = Object.values(function e(t = document.querySelector("body>div")) {
1245 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1247 ())[1].children[0]._owner.stateNode;
1248 t.client.blook = e,
1249 t.liveGameController.setVal({
1250 path: `c/${t.client.name}/b`,
1251 val: e
1254 }, {
1255 name: "Set Blook Ad Text",
1256 description: "Sets a load of text as your blook and floods teachers screen on lobby",
1257 inputs: [{
1258 name: "Text",
1259 type: "input",
1262 run: function (e) {
1263 let t = Object.values(function e(t = document.querySelector("body>div")) {
1264 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1266 ())[1].children[0]._owner.stateNode;
1267 if (!String.prototype.inc) {
1268 String.prototype.inc = String.prototype.includes;
1270 String.prototype.includes = function (a) {
1271 if (a == "#" && this.length > 30) {
1272 return !0;
1274 return String.prototype.inc.apply(this, arguments);
1276 let repeatedText = Array(500).fill(e).join(' ');
1277 if (!t.state.unlocks) {
1278 t.client.blook = repeatedText;
1280 t.props.liveGameController.setVal({
1281 path: `c/${t.props.client.name}/b`,
1282 val: repeatedText
1285 }, {
1286 name: "Set Blook Ad Text Ingame",
1287 description: "Sets a load of text as your blook",
1288 inputs: [{
1289 name: "Text",
1290 type: "options",
1291 async options() {
1292 let {
1293 webpack: e
1294 } = webpackJsonp.push([
1295 [], {
1296 1234(e, t, a) {
1297 t.webpack = a
1301 ["1234"]
1304 return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a);
1308 run: function (e) {
1309 let {
1310 props: t
1311 } = Object.values(function e(t = document.querySelector("body>div")) {
1312 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1314 ())[1].children[0]._owner.stateNode;
1316 let repeatedText = Array(500).fill(e).join(' ');
1317 t.client.blook = repeatedText;
1318 t.liveGameController.setVal({
1319 path: `c/${t.client.name}/b`,
1320 val: repeatedText
1323 }, {
1324 name: "Auto Answer",
1325 description: "Click the correct answer for you",
1326 run: function () {
1327 let {
1328 state: {
1329 question: e,
1330 stage: t,
1331 feedback: a
1333 props: {
1334 client: {
1335 question: o
1338 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1339 try {
1340 "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])
1341 } catch {}
1343 }, {
1344 name: "Highlight Answers",
1345 description: "Colors answers to be red or green highlighting the correct ones",
1346 run: function () {
1347 let {
1348 stateNode: {
1349 state: e,
1350 props: t
1352 } = Object.values(function e(t = document.querySelector("body>div")) {
1353 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1355 ())[1].children[0]._owner;
1356 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1357 (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)"
1360 }, {
1361 name: "Subtle Highlight Answers",
1362 description: "Removes the shadow from correct answers",
1363 run: function () {
1364 let {
1365 stateNode: {
1366 state: e,
1367 props: t
1369 } = Object.values(function e(t = document.querySelector("body>div")) {
1370 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1372 ())[1].children[0]._owner;
1373 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1374 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
1377 }, {
1378 name: "Get Daily Rewards",
1379 description: "Gets max daily tokens and xp",
1380 run: async function () {
1381 let e = document.createElement("iframe");
1382 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
1383 let {
1385 } = await fetch("https://play.blooket.com/api/playersessions/solo", {
1386 body: JSON.stringify({
1387 gameMode: "Factory",
1388 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())]
1390 credentials: "include",
1391 method: "POST"
1392 }).then(e => e.json());
1393 await fetch("https://play.blooket.com/api/playersessions/landings", {
1394 body: JSON.stringify({
1397 credentials: "include",
1398 method: "POST"
1400 await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
1401 credentials: "include"
1403 await fetch("https://play.blooket.com/api/users/factorystats", {
1404 body: JSON.stringify({
1405 blookUsed: "Chick",
1407 cash: Math.floor(9e7 * Math.random()) + 1e7,
1408 correctAnswers: Math.floor(500 * Math.random()) + 500,
1409 upgrades: Math.floor(300 * Math.random()) + 300,
1410 mode: "Time-Solo",
1411 nameUsed: "You",
1412 place: 1,
1413 playersDefeated: 0
1415 credentials: "include",
1416 method: "PUT"
1418 fetch("https://play.blooket.com/api/users/add-rewards", {
1419 body: JSON.stringify({
1421 name: a,
1422 addedTokens: 500,
1423 addedXp: 300
1425 credentials: "include",
1426 method: "PUT"
1427 }).then(e => e.json()).then(({
1428 dailyReward: e
1429 }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
1430 } else
1431 alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
1433 }, {
1434 name: "Use any Blook",
1435 description: "Allows you to play as any blook.",
1436 run: function () {
1437 (() => {
1438 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1439 let i = document.createElement('iframe');
1440 document.body.append(i);
1441 const alert = i.contentWindow.alert.bind(window);
1442 i.remove();
1443 if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
1444 alert("This must be run on the lobby or dashboard!");
1445 return;
1447 if (stateNode.state.blookData) {
1448 let oe = Object.entries;
1449 Object.entries = function (a) {
1450 if (a?.Chick) {
1451 allBlooks(a);
1452 Object.entries = oe;
1454 return oe.apply(this, arguments);
1456 stateNode.render();
1458 function allBlooks(blooks) {
1459 let blookData = {};
1460 stateNode.setState({
1461 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
1462 allSets: Object.values(blooks).reduce((a, b) => {
1463 return !a.includes(b.set) && a.push(b.set),
1465 }, [])
1468 } else {
1469 stateNode.setState({
1470 unlocks: {
1471 includes: e => 1
1475 })();
1477 }, {
1478 name: "Get More Blooks (Lobby)",
1479 description: "Gives you an abundance of custom blooks to try (Some images might be blocked)",
1480 run: function () {
1481 const containerClass = '_blooksHolder_1bg6w_141';
1482 const targetContainer = document.querySelector(`.${containerClass}`);
1484 if (targetContainer) {
1485 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"];
1486 imageUrls.forEach((url) => {
1487 const newBlookContainer = document.createElement('div');
1488 newBlookContainer.className = '_blookContainer_1bg6w_150';
1489 newBlookContainer.setAttribute('role', 'button');
1490 newBlookContainer.setAttribute('tabindex', '0');
1492 const innerDiv = document.createElement('div');
1493 innerDiv.className = '_blookContainer_12gbf_1 _blook_1bg6w_141';
1494 innerDiv.setAttribute('data-tooltip-id', 'blook-tooltip');
1496 const img = document.createElement('img');
1497 img.src = url;
1498 img.alt = 'Custom Blook';
1499 img.draggable = false;
1500 img.className = '_blook_12gbf_1';
1502 newBlookContainer.addEventListener('click', () => {
1503 setCustomBlookUrl(url);
1506 innerDiv.appendChild(img);
1507 newBlookContainer.appendChild(innerDiv);
1508 targetContainer.appendChild(newBlookContainer);
1510 } else {
1511 console.error('Target container not found');
1514 function setCustomBlookUrl(url) {
1515 let t = Object.values(function e(t = document.querySelector("body>div")) {
1516 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1518 ())[1].children[0]._owner.stateNode;
1520 if (!t.state.unlocks) {
1521 t.props.client.blook = url;
1524 t.props.liveGameController.setVal({
1525 path: `c/${t.props.client.name}/b`,
1526 val: url
1530 }, {
1531 name: "Freeze Host",
1532 description: "Freezes the host's screen",
1533 run: function () {
1534 const encodedChars = [
1535 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1538 const chars = encodedChars.map(char => eval(`"${char}"`));
1540 function makeLongText() {
1541 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1544 let {
1545 props: t
1546 } = Object.values(function e(t = document.querySelector("body>div")) {
1547 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1549 ())[1].children[0]._owner.stateNode;
1551 let repeatedText = makeLongText();
1552 t.client.blook = repeatedText;
1553 t.liveGameController.setVal({
1554 path: `c/${t.client.name}/b`,
1555 val: repeatedText
1558 }, {
1559 name: "Remove all Taken Blooks",
1560 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
1561 run: function () {
1562 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1563 stateNode.setState({
1564 takenBlooks: {
1565 includes: e => !1
1568 stateNode.setState = function (a, b) {
1569 if (a?.takenBlooks) {
1570 return;
1572 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
1575 }, {
1576 name: "Dynamic Player Count",
1577 description: "Updates the player count at the top of the screen in realtime as players join or leave.",
1578 run: function () {
1579 (async() => {
1580 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1581 const ref = await stateNode.props.liveGameController.getDatabaseRef("")
1582 ref.on("value", e => {
1583 document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
1585 })()
1587 }, {
1588 name: "Blooket Bot",
1589 description: "Opens Blooket Bot",
1590 run: function () {
1591 function getGameCode() {
1592 const appDiv = document.querySelector('#app>div>div');
1593 if (appDiv) {
1594 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1595 return reactComponent?.stateNode?.props?.client?.hostId || null;
1597 return null;
1600 const gameCode = getGameCode();
1601 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
1602 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1604 }, {
1605 name: "Blooket Bot Unblocked",
1606 description: "Opens Blooket Bot",
1607 run: function () {
1608 function getGameCode() {
1609 const appDiv = document.querySelector('#app>div>div');
1610 if (appDiv) {
1611 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1612 return reactComponent?.stateNode?.props?.client?.hostId || null;
1614 return null;
1617 const gameCode = getGameCode();
1618 const url = gameCode ? "https://blooketbot.vercel.app/?code=" + gameCode : "https://blooketbot.vercel.app/";
1619 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1621 }, {
1622 name: "Blooket Homework Editor",
1623 description: "Opens Blooket Homework Editor",
1624 run: function () {
1625 window.open("https://blookethwk.glitch.me/", "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes")
1627 }, {
1628 name: "Lobbychat",
1629 description: "Chat with other people and execute commands",
1630 run: function () {
1631 if (window.run) {
1632 return;
1633 } else {
1634 window.run = true;
1637 function e() {
1638 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1640 var t = 0,
1641 a = !1;
1642 document.addEventListener("keydown", function (e) {
1643 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
1645 let o = document.createElement("div");
1646 o.className = "chat-box",
1647 document.body.appendChild(o);
1648 let r = document.createElement("div");
1649 r.className = "chat-header",
1650 r.textContent = "Chat",
1651 o.appendChild(r);
1652 let i = document.createElement("div");
1653 i.className = "chat-body",
1654 o.appendChild(i);
1655 let n = document.createElement("input");
1657 function s(e) {
1658 let t = document.createElement("div");
1659 t.textContent = e,
1660 i.appendChild(t)
1662 n.type = "text",
1663 n.className = "chat-input",
1664 n.placeholder = "Type a message...",
1665 o.appendChild(n),
1666 o.style.position = "fixed",
1667 o.style.bottom = "20px",
1668 o.style.right = "20px",
1669 o.style.width = "300px",
1670 o.style.backgroundColor = "#fff",
1671 o.style.border = "1px solid #ccc",
1672 o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)",
1673 r.addEventListener("click", () => {
1674 i.classList.toggle("open")
1676 n.addEventListener("keydown", function (a) {
1677 13 === a.keyCode && (function a(o) {
1678 var r,
1685 h = function e(t) {
1686 if ("/" !== t.charAt(0))
1687 return !1;
1688 var a = t.split(" "),
1689 o = a[0].replace("/", "");
1690 return a.splice(0, 1), {
1691 cmd: o,
1692 args: a
1695 (o);
1696 if (h)
1697 switch (h.cmd) {
1698 case "cb":
1699 r = h.args.join(" "),
1700 (n = webpackJsonp.push([
1701 [], {
1702 1234(e, t, a) {
1703 t.webpack = a
1707 ["1234"]
1709 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
1710 id: e().stateNode.props.client.hostId,
1711 path: "c/" + e().stateNode.props.client.name,
1712 val: {
1713 b: r
1715 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
1716 break;
1717 case "clear":
1718 i.innerHTML = "";
1719 break;
1720 case "dumpstate":
1721 Object.keys(e().stateNode.state).map(t => {
1722 var a = e().stateNode.state[t];
1723 if (null == a)
1724 return "N/A";
1725 Array.from(a) && "object" == typeof a && (a = "[Array]"),
1726 s(t + ":" + a)
1727 }).join(";");
1728 break;
1729 case "list":
1730 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
1731 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
1733 break;
1734 case "tlog":
1735 window.logsv = !window.logsv,
1736 s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
1737 break;
1738 case "setval":
1739 l = h.args,
1740 e().stateNode.props.liveGameController.setVal({
1741 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
1742 val: l.slice(1, l.length).join(" ")
1744 break;
1745 case "setstate":
1746 c = h.args,
1747 d = {},
1748 c.forEach(e => {
1749 var t = e.split(":");
1750 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])),
1751 d[t[0]] = t[1]
1753 e().stateNode.setState(d),
1754 s("Set Successful!");
1755 break;
1756 case "ahelp":
1757 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)");
1758 break;
1759 case "help":
1760 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)");
1761 break;
1762 case "dump":
1763 !function t(a) {
1764 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
1765 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
1768 (h.args.join(" "));
1769 break;
1770 case "unlock":
1771 p = h.args.join(" "),
1772 (u = webpackJsonp.push([
1773 [], {
1774 1234(e, t, a) {
1775 t.webpack = a
1779 ["1234"]
1781 ]).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!");
1782 break;
1783 case "code":
1784 s("Game Code: " + e().stateNode.props.client.hostId);
1785 break;
1786 default:
1787 s("Unrecognized chat command!")
1789 else
1790 e().stateNode.props.liveGameController.setVal({
1791 id: e().stateNode.props.client.hostId,
1792 path: "c/" + e().stateNode.props.client.name + "/msg",
1793 val: {
1794 i: t,
1795 msg: o
1797 }), t++
1799 (a.srcElement.value), a.srcElement.value = "")
1801 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
1803 function c(e) {
1804 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
1806 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function (e, t, a, o) {
1807 var r,
1809 console.log(e, t, a, o),
1810 r = e,
1811 null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)),
1812 l(e, t, a, o)
1814 window.logsv = !1;
1815 var d = e().stateNode.props.liveGameController.setVal;
1816 e().stateNode.props.liveGameController.setVal = function () {
1817 c.apply(this, arguments),
1818 d.apply(this, arguments)
1820 e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}),
1821 s("Lobbychat successfully loaded!"),
1822 o.style.wordWrap = "break-word"
1824 }, {
1825 name: "Pin Guesser",
1826 description: "Brute forces combinations for existing pins",
1827 run: function () {
1828 var e = 0,
1829 t = 0,
1830 a = document.querySelector("div[class*='titleText']");
1832 function o() {
1833 return Object.values(function e(t = document.querySelector("body>div")) {
1834 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1836 ())[1].children[0]._owner.stateNode
1838 !function r() {
1839 let i = Math.floor(9e6 * Math.random()) + 1e6;
1840 fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
1841 method: "GET",
1842 credentials: "include"
1843 }).then(e => e.json()).then(n => {
1844 !0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
1845 client: {
1846 hostId: i.toString()
1848 })) : (console.log("No game found for:", i), o().setState({
1849 client: {
1850 hostId: i.toString()
1852 }), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
1853 }).catch(e => {
1854 alert("Error:" + e)
1859 }, {
1860 name: "Crash Game",
1861 description: "Crashes the host's game",
1862 run: function () {
1863 var e = Object.values(function e(t = document.querySelector("#app")) {
1864 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1866 ())[1].children[0]._owner.stateNode;
1867 e.props.liveGameController.setVal({
1868 path: `c/${e.props.client.name}/b/toString`,
1869 val: "Crashed"
1872 }, {
1873 name: "Every Answer Correct",
1874 description: "Sets every answer to be correct",
1875 run: function () {
1876 let {
1877 stateNode: e
1878 } = Object.values(function e(t = document.querySelector("body>div")) {
1879 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1881 ())[1].children[0]._owner;
1882 e.freeQuestions = e.freeQuestions?.map?.(e => ({
1883 ...e,
1884 correctAnswers: e.answers
1885 })),
1886 e.questions = e.questions?.map?.(e => ({
1887 ...e,
1888 correctAnswers: e.answers
1889 })),
1890 e.props.client.questions = e.props.client.questions.map(e => ({
1891 ...e,
1892 correctAnswers: e.answers
1895 }, {
1896 name: "Remove Name Limit",
1897 description: "Sets the name limit to 120, which is the actual max name length limit",
1898 run: function () {
1899 var e = document.createElement("iframe");
1900 document.body.append(e),
1901 window.alert = e.contentWindow.alert.bind(window),
1902 e.remove(),
1903 document.querySelector('input[class*="nameInput"]').maxLength = 120,
1904 alert("Removed name length limit")
1906 }, {
1907 name: "Remove Random Name",
1908 description: "Allows you to put a custom name",
1909 run: function () {
1910 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1911 isRandom: !1,
1912 client: {
1913 name: ""
1916 document.querySelector('[class*="nameInput"]')?.focus?.()
1918 }, {
1919 name: "Sell Cheap Duplicates",
1920 description: "Sells all of your uncommon to epic dupes (not legendaries+)",
1921 run: function () {
1922 var e = document.createElement("iframe");
1923 document.body.append(e),
1924 window.alert = e.contentWindow.alert.bind(window),
1925 window.confirm = e.contentWindow.confirm.bind(window),
1926 e.remove();
1927 let t = webpackJsonp.push([
1928 [], {
1929 1234(e, t, a) {
1930 t.webpack = a
1934 ["1234"]
1936 ]).webpack,
1937 a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
1938 o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
1939 a.get("https://dashboard.blooket.com/api/users").then(async({
1940 data: {
1941 unlocks: e
1943 }) => {
1944 if (e = Object.entries(e).filter(([e, t]) => 1 < t && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([
1945 [], {
1946 1234(e, t, a) {
1947 t.webpack = a
1951 ["1234"]
1953 ]).webpack("MDrD").a[e].rarity)), confirm("Are you sure you want to sell your uncommon to epic dupes?")) {
1954 var t,
1956 r = Date.now();
1957 for ([t, a] of e)
1958 await o({
1959 blook: t,
1960 numToSell: a - 1
1962 alert(`(${Date.now() - r}ms) Results: ` + e.map(([e, t]) => ` ${e} ` + (t - 1)).join(" "))
1964 }).catch(() => alert("There was an error user data!"))
1966 }, {
1967 name: "Sell Duplicate Blooks",
1968 description: "Sell all duplicate blooks leaving you with 1 each",
1969 run: async function () {
1970 let e = document.createElement("iframe");
1971 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)) {
1972 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
1973 let {
1974 stateNode: t
1975 } = Object.values(function e(t = document.querySelector("body>div")) {
1976 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1978 ())[1].children[0]._owner,
1979 a = Date.now(),
1980 o = "";
1981 for (let r in t.state.blookData)
1982 if (t.state.blookData[r] > 1) {
1983 if (t.setState({
1984 blook: r,
1985 numToSell: t.state.blookData[r] - 1
1986 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim()))
1987 continue;
1988 o += ` ${r} ${t.state.blookData[r] - 1} `,
1989 await t.sellBlook({
1990 preventDefault() {}
1991 }, !0)
1993 alert(`(${Date.now() - a}ms) Results: ${o.trim()}`)
1995 } else
1996 alert("This can only be ran in the Blooks page.")
2000 voyage: [{
2001 name: "Heist ESP",
2002 description: "Shows you what's under each chest during a heist",
2003 type: "toggle",
2004 enabled: false,
2005 data: null,
2006 run: function () {
2007 if (this.enabled) {
2008 this.enabled = false;
2009 clearInterval(this.data);
2010 this.data = null;
2011 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
2012 } else {
2013 this.enabled = true;
2014 this.data = setInterval(() => {
2015 const cheat = (async() => {
2016 let {
2017 stateNode
2018 } = Object.values((function react(r = document.querySelector("body>div")) {
2019 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
2020 })())[1].children[0]._owner;
2021 if (stateNode.state.stage == "heist") {
2022 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
2023 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
2024 for (const e of document.querySelectorAll("[class*=boxContent] > div"))
2025 e.remove();
2026 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
2027 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
2028 const box = container.firstChild.firstChild;
2029 if (open.includes(i))
2030 return box.style.opacity = "";
2031 box.style.opacity = "0.5";
2032 let d = document.createElement("div");
2033 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
2034 d.className = "chestESP";
2035 d.style.position = "absolute";
2036 d.style.inset = "0";
2037 d.style.display = "grid";
2038 d.style.placeItems = "center";
2039 d.style.pointerEvents = "none";
2040 container.onclick = () => {
2041 d.remove();
2042 box.style.opacity = "";
2044 container.firstChild.prepend(d);
2048 cheat();
2049 }, 50);
2052 }, {
2053 name: "Crash Host (Pirate)",
2054 description: "Crashes the Host's Game for Pirate's Voyage",
2055 run: function () {
2056 function reactHandler() {
2057 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2060 function setv(args) {
2061 reactHandler().stateNode.props.liveGameController.setVal({
2062 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2063 val: args.slice(1, args.length).join(" ")
2067 setv(['d/t', 't']);
2069 }, {
2070 name: "Max Levels",
2071 description: "Maxes out all islands and your boat",
2072 run: function () {
2073 let {
2074 stateNode: e
2075 } = Object.values(function e(t = document.querySelector("body>div")) {
2076 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2078 ())[1].children[0]._owner;
2079 e.setState({
2080 islandLevels: Array(e.state.islandLevels.length).fill(5)
2081 }, e.updateBoatLevel)
2083 }, {
2084 name: "Set Doubloons",
2085 description: "Sets Doubloons",
2086 inputs: [{
2087 name: "Amount",
2088 type: "number"
2091 run: function (e) {
2092 let t = document.createElement("iframe");
2093 document.body.append(t),
2094 window.prompt = t.contentWindow.prompt.bind(window),
2095 t.remove();
2096 let {
2097 stateNode: a
2098 } = Object.values(function e(t = document.querySelector("body>div")) {
2099 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2101 ())[1].children[0]._owner;
2102 a.setState({
2103 doubloons: e
2105 a.props.liveGameController.setVal({
2106 path: `c/${a.props.client.name}/d`,
2107 val: e
2110 }, {
2111 name: "Start Heist",
2112 description: "Starts a heist on someone",
2113 inputs: [{
2114 name: "Player",
2115 type: "options",
2116 options() {
2117 let {
2118 stateNode: e
2119 } = Object.values(function e(t = document.querySelector("body>div")) {
2120 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2122 ())[1].children[0]._owner;
2123 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2127 run: function (e) {
2128 let t = document.createElement("iframe");
2129 document.body.append(t),
2130 window.prompt = t.contentWindow.prompt.bind(window),
2131 t.remove();
2132 let {
2133 stateNode: a
2134 } = Object.values(function e(t = document.querySelector("body>div")) {
2135 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2137 ())[1].children[0]._owner;
2138 a.props.liveGameController.getDatabaseVal("c", function (t) {
2139 let o = Object.entries(t || {}).reduce((e, [t, o]) => (t != a.props.client.name && e.push({
2140 name: t,
2141 blook: o.b,
2142 doubloons: o.d || 0
2143 }), e), []);
2144 if (0 === o.length)
2145 return a.questionsToAnswer = 1, void a.randomQ();
2146 let {
2147 name: r,
2148 blook: i,
2149 doubloons: n
2150 } = o.find(t => t.name == e) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
2151 a.setState({
2152 stage: "heist",
2153 heistInfo: {
2154 name: r,
2155 blook: i
2157 prizeAmount: Math.max(1e3, n)
2161 }, {
2162 name: "Swap Doubloons",
2163 description: "Swaps Doubloons with someone",
2164 inputs: [{
2165 name: "Player",
2166 type: "options",
2167 options() {
2168 let {
2169 stateNode: e
2170 } = Object.values(function e(t = document.querySelector("body>div")) {
2171 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2173 ())[1].children[0]._owner;
2174 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2178 run: async function (e) {
2179 let t = document.createElement("iframe");
2180 document.body.append(t),
2181 window.prompt = t.contentWindow.prompt.bind(window),
2182 t.remove();
2183 let {
2184 stateNode: a
2185 } = Object.values(function e(t = document.querySelector("body>div")) {
2186 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2188 ())[1].children[0]._owner,
2189 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),
2190 r = o.find(t => t[0] == e) || o[0];
2191 a.props.liveGameController.setVal({
2192 path: `c/${a.props.client.name}`,
2193 val: {
2194 b: a.props.client.blook,
2195 d: r[1].d,
2196 tat: `${r[0]}:${r[1].d - a.state.doubloons}`
2199 a.setState({
2200 doubloons: r[1].d
2203 }, {
2204 name: "Take Doubloons",
2205 description: "Takes Doubloons from someone",
2206 inputs: [{
2207 name: "Player",
2208 type: "options",
2209 options() {
2210 let {
2211 stateNode: e
2212 } = Object.values(function e(t = document.querySelector("body>div")) {
2213 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2215 ())[1].children[0]._owner;
2216 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2220 run: async function (e) {
2221 let t = document.createElement("iframe");
2222 document.body.append(t),
2223 window.prompt = t.contentWindow.prompt.bind(window),
2224 t.remove();
2225 let {
2226 stateNode: a
2227 } = Object.values(function e(t = document.querySelector("body>div")) {
2228 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2230 ())[1].children[0]._owner,
2231 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),
2232 r = o.find(t => t[0] == e) || o[0];
2233 a.setState({
2234 doubloons: a.state.doubloons + r[1].d
2236 a.props.liveGameController.setVal({
2237 path: `c/${a.props.client.name}`,
2238 val: {
2239 b: a.props.client.blook,
2240 d: r[1].d,
2241 tat: `${r[0]}:${r[1].d}`
2245 }, {
2246 name: "Flood Alert Box",
2247 description: "Makes the alert box filled with text",
2248 inputs: [{
2249 name: "Text",
2250 type: "text"
2253 run: function (userInput) {
2254 function getReactOwner() {
2255 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2258 function repeatText(text, times) {
2259 return new Array(times).fill(text).join(" ");
2262 function setValForPlayer() {
2263 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2264 if (data != null) {
2266 const playerName = Object.keys(data)[0];
2268 if (userInput) {
2270 const id = "1,723,583,989,363";
2271 const repeatedText = repeatText(userInput, 1700);
2272 const finalText = `${id}${repeatedText}`;
2274 setv(['tat', `${playerName}:${finalText}`]);
2275 } else {
2276 console.log("No text entered. Operation cancelled.");
2278 } else {
2279 console.log("Player not found!");
2284 function setv(args) {
2285 getReactOwner().stateNode.props.liveGameController.setVal({
2286 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2287 val: args.slice(1, args.length).join(" ")
2291 setValForPlayer();
2293 }, {
2294 name: "Send Ad Text",
2295 description: "Sends a load of text to another player (This will override your blook!)",
2296 inputs: [{
2297 name: "Player",
2298 type: "options",
2299 options() {
2300 let {
2301 stateNode: e
2302 } = Object.values(function e(t = document.querySelector("body>div")) {
2303 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2305 ())[1].children[0]._owner;
2306 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2308 }, {
2309 name: "Text"
2312 run: async function (player, e) {
2313 let {
2314 props: t2
2315 } = Object.values(function e(t = document.querySelector("body>div")) {
2316 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2318 ())[1].children[0]._owner.stateNode;
2320 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2321 t2.client.blook = repeatedText;
2322 t2.liveGameController.setVal({
2323 path: `c/${t2.client.name}/b`,
2324 val: repeatedText
2326 t2.liveGameController.setVal({
2327 path: `c/${t2.client.name}/tat`,
2328 val: `${player}:196`
2333 brawl: [{
2334 name: "Double Enemy XP",
2335 description: "Doubles enemy XP drop value",
2336 run: function () {
2337 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"))) {
2338 var t = e.object2;
2339 let a = t.classType.prototype.start;
2340 t.classType.prototype.start = function () {
2341 a.apply(this, arguments),
2342 this.val *= 2
2344 t.children.entries.forEach(e => e.val *= 2)
2347 }, {
2348 name: "Half Enemy Speed",
2349 description: "Makes enemies move 2x slower",
2350 run: function () {
2351 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"))) {
2352 var t = e.object2;
2353 let a = t.classType.prototype.start;
2354 t.classType.prototype.start = function () {
2355 a.apply(this, arguments),
2356 this.speed *= .5
2358 t.children.entries.forEach(e => e.speed *= .5)
2361 }, {
2362 name: "Instant Kill",
2363 description: "Sets all enemies health to 1",
2364 run: function () {
2365 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"))) {
2366 var t = e.object2;
2367 let a = t.classType.prototype.start;
2368 t.classType.prototype.start = function () {
2369 a.apply(this, arguments),
2370 this.hp = 1
2372 t.children.entries.forEach(e => e.hp = 1)
2375 }, {
2376 name: "Invincibility",
2377 description: "Makes you invincible",
2378 run: function () {
2379 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")))
2380 e.collideCallback = () => {}
2382 }, {
2383 name: "Magnet",
2384 description: "Pulls all xp towards you",
2385 run: function () {
2386 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({
2387 active: !0
2388 }, {
2389 active: !0,
2390 setActive() {},
2391 setVisible() {}
2394 }, {
2395 name: "Max Current Abilities",
2396 description: "Maxes out all your current abilities",
2397 run: function () {
2398 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2399 for (var [t, a] of Object.entries(e.state.abilities))
2400 for (let o = 0; o < 10 - a; o++)
2401 e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
2402 e.setState({
2403 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
2406 }, {
2407 name: "Next Level",
2408 description: "Skips to the next level",
2409 run: function () {
2410 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, {
2411 object1: t,
2412 object2: a
2413 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
2414 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)
2416 }, {
2417 name: "Remove Obstacles",
2418 description: "Removes all rocks and obstacles",
2419 run: function () {
2420 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
2421 try {
2422 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
2423 } catch {}
2426 }, {
2427 name: "Kill Enemies",
2428 description: "Kills all current enemies",
2429 run: function () {
2430 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))
2432 }, {
2433 name: "Reset Health",
2434 description: "Resets health and gives invincibility for 3 seconds",
2435 run: function () {
2436 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
2438 }, {
2439 name: "Crash Host (Brawl)",
2440 description: "Crashes the Host's Game for Monster Brawl",
2441 run: function () {
2442 function reactHandler() {
2443 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2446 function setv(args) {
2447 reactHandler().stateNode.props.liveGameController.setVal({
2448 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2449 val: args.slice(1, args.length).join(" ")
2453 setv(['xp/t', 't']);
2455 }, {
2456 name: "Set XP",
2457 description: "Sets amount of XP",
2458 inputs: [{
2459 name: "XP",
2460 type: "number"
2463 run: function (e) {
2464 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2465 t.setState({
2466 xp: e,
2467 totalXp: e
2469 t.xp = e,
2470 t.totalXp = e,
2471 t.props?.liveGameController.setVal({
2472 path: "c/".concat(t.props.client.name),
2473 val: {
2474 b: t.props.client.blook,
2475 xp: e
2479 }, {
2480 name: "Set Level",
2481 description: "Sets your level",
2482 inputs: [{
2483 name: "XP",
2484 type: "number"
2487 run: function (e) {
2488 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2489 level: e
2494 cafe: [{
2495 name: "Max Items",
2496 description: "Maxes out items in the shop (Only usable in the shop)",
2497 run: function () {
2498 var e = document.createElement("iframe");
2499 document.body.append(e),
2500 window.alert = e.contentWindow.alert.bind(window),
2501 e.remove(),
2502 "/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({
2503 items: Object.fromEntries(Object.entries(e.state.items).map(e => [e[0], 5]))
2506 }, {
2507 name: "Remove Customers",
2508 description: "Skips the current customers (Not usable in the shop)",
2509 run: function () {
2510 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2511 e.state.customers.forEach((t, a) => Object.keys(t).length && e.removeCustomer(a, !0))
2513 }, {
2514 name: "Reset Abilities",
2515 description: "Resets used abilities in shop (Only usable in the shop)",
2516 run: function () {
2517 var e = document.createElement("iframe");
2518 document.body.append(e),
2519 window.alert = e.contentWindow.alert.bind(window),
2520 e.remove(),
2521 "/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({
2522 abilities: Object.fromEntries(Object.entries(e.state.abilities).map(e => [e[0], 5]))
2525 }, {
2526 name: "Set Cash",
2527 description: "Sets cafe cash",
2528 inputs: [{
2529 name: "Amount",
2530 type: "number"
2533 run: function (e) {
2534 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2535 t.setState({
2536 cafeCash: e
2538 t.props.liveGameController.setVal({
2539 path: "c/" + t.props.client.name,
2540 val: {
2541 b: t.props.client.blook,
2542 ca: e
2546 }, {
2547 name: "Spam Attack Player",
2548 description: "Attacks the player to make the game unplayable",
2549 inputs: [{
2550 name: "Player",
2551 type: "options",
2552 options() {
2553 let {
2554 stateNode: e
2555 } = Object.values(function e(t = document.querySelector("body>div")) {
2556 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2558 ())[1].children[0]._owner;
2559 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2563 type: "toggle",
2564 enabled: false,
2565 data: null,
2566 run: function (name) {
2567 if (this.enabled) {
2568 this.enabled = false;
2569 clearInterval(this.data);
2570 this.data = null;
2571 } else {
2572 this.enabled = true;
2574 function reactHandler() {
2575 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2578 var action = name + ":inspect";
2580 function spamAction() {
2581 var handler = reactHandler();
2582 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
2583 handler.stateNode.props.liveGameController.setVal({
2584 id: handler.stateNode.props.client.hostId,
2585 path: "c/" + handler.stateNode.props.client.name + "/tat",
2586 val: action
2591 this.data = setInterval(spamAction, 50);
2594 }, {
2595 name: "Attack Player",
2596 description: "Sends the player a health inspection",
2597 inputs: [{
2598 name: "Player's Name",
2599 type: "text"
2602 run: (function (targetPlayer) {
2603 function reactHandler() {
2604 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2607 reactHandler().stateNode.props.liveGameController.setVal({
2608 id: reactHandler().stateNode.props.client.hostId,
2609 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
2610 val: targetPlayer + ":inspect"
2613 }, {
2614 name: "Tax Player",
2615 description: "Makes a player pay tax",
2616 inputs: [{
2617 name: "Player's Name",
2618 type: "text"
2621 run: function (playerName) {
2622 function reactHandler() {
2623 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2626 function setv(args) {
2627 reactHandler().stateNode.props.liveGameController.setVal({
2628 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2629 val: args.slice(1, args.length).join(" ")
2633 function taxPlayer() {
2634 if (playerName) {
2635 setv(['tat', playerName + ':tax']);
2636 } else {
2637 console.log("No player name entered. Operation cancelled.");
2641 taxPlayer();
2643 }, {
2644 name: "Stock Food",
2645 description: "Stocks all food to 99 (Not usable in the shop)",
2646 run: function () {
2647 var e = document.createElement("iframe");
2648 document.body.append(e),
2649 window.alert = e.contentWindow.alert.bind(window),
2650 e.remove(),
2651 "/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({
2652 foods: e.state.foods.map(e => ({
2653 ...e,
2654 stock: 99,
2655 level: 5
2661 crypto: [{
2662 name: "Choice ESP",
2663 description: "Shows what each choice will give you",
2664 type: "toggle",
2665 enabled: !1,
2666 data: null,
2667 run: function () {
2668 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2669 let {
2670 stateNode: e
2671 } = Object.values(function e(t = document.querySelector("body>div")) {
2672 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2674 ())[1].children[0]._owner, {
2675 text: t
2676 } = e.state.choices[0],
2677 a = document.querySelector("[class^=styles__feedbackContainer___]");
2678 if (a.children.length <= 4) {
2679 let o = document.createElement("div");
2680 o.style.color = "white",
2681 o.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif",
2682 o.style.fontSize = "2em",
2683 o.style.display = "flex",
2684 o.style.justifyContent = "center",
2685 o.style.marginTop = "675px",
2686 o.innerText = t,
2687 a.append(o)
2689 }, 50))
2691 }, {
2692 name: "Password ESP",
2693 description: "Highlights the wrong passwords",
2694 type: "toggle",
2695 enabled: !1,
2696 data: null,
2697 run: function () {
2698 try {
2699 let e = this;
2700 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2701 let {
2702 state: e
2703 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
2704 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2706 ())[1].children[1]._owner.stateNode;
2707 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
2708 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 = "")
2710 }, 50))
2711 } catch (t) {
2712 console.error("An error occurred:", t)
2715 }, {
2716 name: "Always Triple",
2717 description: "Always get triple crypto",
2718 type: "toggle",
2719 enabled: !1,
2720 data: null,
2721 run: function () {
2722 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({
2723 choices: [{
2724 type: "mult",
2725 val: 3,
2726 rate: .075,
2727 blook: "Brainy Bot",
2728 text: "Triple Crypto"
2731 }), 50))
2733 }, {
2734 name: "Always Quintuple",
2735 description: "Always get quintuple crypto",
2736 type: "toggle",
2737 enabled: !1,
2738 data: null,
2739 run: function () {
2740 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({
2741 choices: [{
2742 type: "mult",
2743 val: 5,
2744 rate: .075,
2745 blook: "Ice Elemental",
2746 text: "Quintuple Crypto"
2749 }), 50))
2751 }, {
2752 name: "Always Hack",
2753 description: "Always get hack",
2754 type: "toggle",
2755 enabled: !1,
2756 data: null,
2757 run: function () {
2758 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({
2759 choices: [{
2760 type: "hack",
2761 val: 3,
2762 rate: .075,
2763 blook: "Mega Bot",
2764 text: "HACK"
2767 }), 50))
2769 }, {
2770 name: "Crash Password",
2771 description: "Crashes other players when they attempt to hack you",
2772 type: "toggle",
2773 enabled: !1,
2774 data: null,
2775 run: function () {
2776 var e = Object.values(function e(t = document.querySelector("#app")) {
2777 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2779 ())[1].children[0]._owner.stateNode;
2780 if (this.enabled)
2781 this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
2782 path: `c/${e.props.client.name}/p`,
2783 val: e.state?.password
2785 else {
2786 this.enabled = !0;
2787 let t = () => {
2788 e.props.liveGameController.setVal({
2789 path: `c/${e.props.client.name}/p/toString`,
2790 val: "crash"
2793 this.data = setInterval(t, 25)
2796 }, {
2797 name: "Set Freeze Password",
2798 description: "Freezes other players when they attempt to hack you",
2799 type: "toggle",
2800 enabled: !1,
2801 data: null,
2802 run: function () {
2803 const encodedChars = [
2804 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
2807 const chars = encodedChars.map(char => eval(`"${char}"`));
2809 function makeLongText() {
2810 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
2813 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2815 if (this.enabled) {
2816 this.enabled = !1;
2817 clearInterval(this.data);
2818 this.data = null;
2819 t.setState({
2820 password: ''
2822 t.props.liveGameController.setVal({
2823 path: "c/".concat(t.props.client.name),
2824 val: {
2825 b: t.props.client.blook,
2826 p: '',
2827 cr: t.state.crypto
2830 } else {
2831 this.enabled = !0;
2832 let lagFunction = () => {
2833 var e = makeLongText();
2834 t.setState({
2835 password: e
2837 t.props.liveGameController.setVal({
2838 path: "c/".concat(t.props.client.name),
2839 val: {
2840 b: t.props.client.blook,
2841 p: e,
2842 cr: t.state.crypto
2846 this.data = setInterval(lagFunction, 25);
2849 }, {
2850 name: "Auto Guess",
2851 description: "Automatically performs the hack for you",
2852 type: "toggle",
2853 enabled: !1,
2854 data: null,
2855 run: function () {
2856 try {
2857 let e = this;
2858 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2859 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
2860 let {
2861 stage: e,
2862 correctPassword: t
2863 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
2864 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
2866 }, 50))
2867 } catch (t) {
2868 console.error("An error occurred:", t)
2871 }, {
2872 name: "Set Host Screen Green",
2873 description: "Makes the whole screen filled with text",
2874 type: "toggle",
2875 enabled: !1,
2876 data: null,
2877 run: function () {
2878 var a = Object.values(function e(t = document.querySelector("#app")) {
2879 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2881 ())[1].children[0]._owner.stateNode;
2883 if (this.enabled) {
2884 this.enabled = !1;
2885 clearInterval(this.data);
2886 this.data = null;
2887 a.props.liveGameController.setVal({
2888 path: `c/${a.props.client.name}/cr`,
2889 val: ""
2891 } else {
2892 this.enabled = !0;
2893 let t = () => {
2894 a.props.liveGameController.setVal({
2895 path: `c/${a.props.client.name}/cr`,
2896 val: `9999999999999999999999999999999999999999999999${new Array(999).fill("\u0e47".repeat(70)).join(" ")}`
2899 this.data = setInterval(t, 25);
2902 }, {
2903 name: "Remove Hack",
2904 description: "Removes an attacking hack",
2905 run: function () {
2906 Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.setState({
2907 hack: ""
2910 }, {
2911 name: "Crash Host (Crypto)",
2912 description: "Crashes the Host's Game for Crypto Hack",
2913 run: function () {
2914 function reactHandler() {
2915 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2918 function setv(args) {
2919 reactHandler().stateNode.props.liveGameController.setVal({
2920 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2921 val: args.slice(1, args.length).join(" ")
2925 setv(['cr/t', 't']);
2927 }, {
2928 name: "Set Crypto",
2929 description: "Sets crypto",
2930 inputs: [{
2931 name: "Amount",
2932 type: "number"
2935 run: function (e) {
2936 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2937 t.setState({
2938 crypto: e,
2939 crypto2: e
2941 t.props.liveGameController.setVal({
2942 path: "c/" + t.props.client.name + "/cr",
2943 val: e
2946 }, {
2947 name: "Set Password",
2948 description: "Sets hacking password",
2949 inputs: [{
2950 name: "Custom Password",
2951 type: "string"
2954 run: function (e) {
2955 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2956 t.setState({
2957 password: e
2959 t.props.liveGameController.setVal({
2960 path: "c/" + t.props.client.name + "/p",
2961 val: e
2964 }, {
2965 name: "Set Host Screen Text",
2966 description: "Makes the whole screen filled with text",
2967 inputs: [{
2968 name: "Text",
2969 type: "text",
2972 run: function (e) {
2973 let t = document.createElement("iframe");
2974 document.body.append(t),
2975 window.prompt = t.contentWindow.prompt.bind(window),
2976 t.remove();
2977 var a = Object.values(function e(t = document.querySelector("#app")) {
2978 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2980 ())[1].children[0]._owner.stateNode;
2981 a.props.liveGameController.setVal({
2982 path: `c/${a.props.client.name}/cr`,
2983 val: `9999999999999999999999999999999999999999999999${new Array(999).fill(e).join(" ")}`
2986 }, {
2987 name: "Steal Player's Crypto",
2988 description: "Steals all of someone's crypto",
2989 inputs: [{
2990 name: "Player",
2991 type: "options",
2992 options() {
2993 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2994 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2998 run: function (e) {
2999 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3000 t.props.liveGameController.getDatabaseVal("c", a => {
3001 var o;
3002 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
3003 cr: o
3005 ] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.setState({
3006 crypto: t.state.crypto + o,
3007 crypto2: t.state.crypto + o
3008 }), t.props.liveGameController.setVal({
3009 path: "c/".concat(t.props.client.name),
3010 val: {
3011 b: t.props.client.blook,
3012 p: t.state.password,
3013 cr: t.state.crypto + o,
3014 tat: a + ":" + o
3019 }, {
3020 name: "Get Player's Password",
3021 description: "Shows the password of any player in an alert box",
3022 inputs: [{
3023 name: "Player",
3024 type: "options",
3025 options() {
3026 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3027 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
3031 run: function (player) {
3032 let i = document.createElement('iframe');
3033 document.body.append(i);
3034 const alert = i.contentWindow.alert.bind(window);
3035 i.remove();
3036 var t = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
3037 t.props.liveGameController.getDatabaseVal("c", e => {
3038 alert(e?.[player]?.p);
3041 }, {
3042 name: "Flood Alert Box",
3043 description: "Makes the alert box filled with text",
3044 inputs: [{
3045 name: "Text",
3046 type: "text"
3049 run: function (userInput) {
3050 function getReactOwner() {
3051 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3054 function repeatText(text, times) {
3055 return new Array(times).fill(text).join(" ");
3058 function setValForPlayer() {
3059 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
3060 if (data != null) {
3062 const playerName = Object.keys(data)[0];
3064 if (userInput) {
3066 const id = "1,723,583,989,363";
3067 const repeatedText = repeatText(userInput, 1700);
3068 const finalText = `${id}${repeatedText}`;
3070 setv(['tat', `${playerName}:${finalText}`]);
3071 } else {
3072 console.log("No text entered. Operation cancelled.");
3074 } else {
3075 console.log("Player not found!");
3080 function setv(args) {
3081 getReactOwner().stateNode.props.liveGameController.setVal({
3082 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
3083 val: args.slice(1, args.length).join(" ")
3087 setValForPlayer();
3089 }, {
3090 name: "Send Ad Text",
3091 description: "Sends a load of text to another player (This will override your blook!)",
3092 inputs: [{
3093 name: "Player",
3094 type: "options",
3095 options() {
3096 let {
3097 stateNode: e
3098 } = Object.values(function e(t = document.querySelector("body>div")) {
3099 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3101 ())[1].children[0]._owner;
3102 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
3104 }, {
3105 name: "Text"
3108 run: async function (player, e) {
3109 let {
3110 props: t2
3111 } = Object.values(function e(t = document.querySelector("body>div")) {
3112 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3114 ())[1].children[0]._owner.stateNode;
3116 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
3117 t2.client.blook = repeatedText;
3118 t2.liveGameController.setVal({
3119 path: `c/${t2.client.name}/b`,
3120 val: repeatedText
3122 t2.liveGameController.setVal({
3123 path: `c/${t2.client.name}/tat`,
3124 val: `${player}:196`
3129 defense: [{
3130 name: "Earthquake",
3131 description: "Shuffles around towers",
3132 run: function () {
3133 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
3134 t = (e.setState({
3135 eventName: "Earthquake",
3136 event: {
3137 short: "e",
3138 color: "#805500",
3139 icon: "fas fa-mountain",
3140 desc: "All of your towers get mixed up",
3141 rate: .02
3143 buyTowerName: "",
3144 buyTower: {}
3145 }, () => e.eventTimeout = setTimeout(() => e.setState({
3146 event: {},
3147 eventName: ""
3148 }), 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 && {
3149 x: a,
3150 y: t
3151 })).filter(Boolean).sort(() => .5 - Math.random()));
3152 e.towers.forEach(a => {
3153 var {
3154 x: o,
3155 y: r
3156 } = t.shift();
3157 a.move(o, r, e.tileSize),
3158 e.tiles[r][o] = 3
3161 }, {
3162 name: "Max Tower Stats",
3163 description: "Makes all placed towers overpowered",
3164 run: function () {
3165 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
3166 e.range = 100,
3167 e.fullCd = e.cd = 0,
3168 e.damage = 1e6
3171 }, {
3172 name: "Remove Ducks",
3173 description: "Removes ducks",
3174 run: function () {
3175 let {
3176 ducks: e,
3177 tiles: t
3178 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3179 e.forEach(e => {
3180 t[e.y][e.x] = 0
3182 e.length = 0
3184 }, {
3185 name: "Place Blooks Anywhere",
3186 description: "Be able to place your blooks anywhere",
3187 run: function () {
3188 for (var i = 0; i < 10; i++) {
3189 Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.tiles[i] = Array(10).fill(0);
3192 }, {
3193 name: "Remove Enemies",
3194 description: "Removes all the enemies",
3195 run: function () {
3196 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3197 e.enemies = e.futureEnemies = []
3199 }, {
3200 name: "Remove Obstacles",
3201 description: "Lets you place towers anywhere",
3202 run: function () {
3203 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3204 e.tiles = e.tiles.map(e => e.fill(0))
3206 }, {
3207 name: "Set Damage",
3208 description: "Sets damage",
3209 inputs: [{
3210 name: "Damage",
3211 type: "number"
3214 run: function (e) {
3215 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = e
3217 }, {
3218 name: "Set Round",
3219 description: "Sets the current round",
3220 inputs: [{
3221 name: "Round",
3222 type: "number"
3225 run: function (e) {
3226 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3227 round: e
3230 }, {
3231 name: "Set Tokens",
3232 description: "Sets the amount of tokens you have",
3233 inputs: [{
3234 name: "Tokens",
3235 type: "number"
3238 run: function (e) {
3239 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3240 tokens: e
3245 defense2: [{
3246 name: "Max Tower Stats",
3247 description: "Makes all placed towers overpowered",
3248 run: function () {
3249 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
3250 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)
3251 for (let t in e.stats.auraBuffs)
3252 e.stats.auraBuffs[t] *= 100
3255 }, {
3256 name: "Kill Enemies",
3257 description: "Kills all the enemies",
3258 run: function () {
3259 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3260 e.game.current.scene.scenes[0].enemyQueue.length = 0,
3261 e.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
3263 }, {
3264 name: "Crash Host (Defense 2)",
3265 description: "Crashes the Host's Game for Tower Defense 2 (May take a few tries)",
3266 run: function () {
3267 function reactHandler() {
3268 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3271 function setv(args) {
3272 reactHandler().stateNode.props.liveGameController.setVal({
3273 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3274 val: args.slice(1, args.length).join(" ")
3278 setv(['d/t', 't']);
3280 }, {
3281 name: "Set Coins",
3282 description: "Sets coins",
3283 inputs: [{
3284 name: "Coins",
3285 type: "number"
3288 run: function (e) {
3289 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3290 coins: e
3293 }, {
3294 name: "Set Health",
3295 description: "Sets the amount of health you have",
3296 inputs: [{
3297 name: "Health",
3298 type: "number"
3301 run: function (e) {
3302 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3303 health: e
3306 }, {
3307 name: "Set Round",
3308 description: "Sets the current round",
3309 inputs: [{
3310 name: "Round",
3311 type: "number"
3314 run: function (e) {
3315 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3316 round: e
3321 dinos: [{
3322 name: "Auto Choose",
3323 description: "Automatically choose the best fossil when excavating",
3324 type: "toggle",
3325 enabled: false,
3326 data: null,
3327 run: function () {
3328 if (this.enabled) {
3329 this.enabled = false;
3330 clearInterval(this.data);
3331 this.data = null;
3332 } else {
3333 this.enabled = true;
3334 this.data = setInterval(() => {
3335 const cheat = (async() => {
3336 function rand(e, t) {
3337 const s = [];
3338 while (s.length < t) {
3339 const i = Math.random();
3340 let r = 0,
3341 g = null;
3342 for (let o = 0; o < e.length; o++) {
3343 r += e[o].rate;
3344 if (r >= i) {
3345 g = e[o];
3346 break;
3349 g && !s.includes(g) && s.push(g);
3351 return s;
3354 try {
3355 let {
3356 stateNode
3357 } = Object.values((function react(r = document.querySelector("body>div")) {
3358 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3359 })())[1].children[0]._owner;
3361 if (stateNode.state.stage === "excavate") {
3362 stateNode.state.choices.length || (stateNode.state.choices = rand([{
3363 type: "fossil",
3364 val: 10,
3365 rate: .1,
3366 blook: "Amber"
3367 }, {
3368 type: "fossil",
3369 val: 25,
3370 rate: .1,
3371 blook: "Dino Egg"
3372 }, {
3373 type: "fossil",
3374 val: 50,
3375 rate: .175,
3376 blook: "Dino Fossil"
3377 }, {
3378 type: "fossil",
3379 val: 75,
3380 rate: .175,
3381 blook: "Stegosaurus"
3382 }, {
3383 type: "fossil",
3384 val: 100,
3385 rate: .15,
3386 blook: "Velociraptor"
3387 }, {
3388 type: "fossil",
3389 val: 125,
3390 rate: .125,
3391 blook: "Brontosaurus"
3392 }, {
3393 type: "fossil",
3394 val: 250,
3395 rate: .075,
3396 blook: "Triceratops"
3397 }, {
3398 type: "fossil",
3399 val: 500,
3400 rate: .025,
3401 blook: "Tyrannosaurus Rex"
3402 }, {
3403 type: "mult",
3404 val: 1.5,
3405 rate: .05
3406 }, {
3407 type: "mult",
3408 val: 2,
3409 rate: .025
3411 ], 3));
3413 let max = 0,
3414 index = -1;
3415 for (let i = 0; i < stateNode.state.choices.length; i++) {
3416 const {
3417 type,
3419 } = stateNode.state.choices[i];
3420 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
3421 if (value <= max && type != "mult")
3422 continue;
3423 max = value;
3424 index = i + 1;
3427 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
3429 } catch {}
3431 cheat();
3432 }, 50);
3435 }, {
3436 name: "Rock ESP",
3437 description: "Shows what is under the rocks",
3438 type: "toggle",
3439 enabled: !1,
3440 data: null,
3441 run: function () {
3442 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
3443 t = t => {
3444 let a = "";
3445 for (; t > 0; )
3446 a = e[t % parseInt("10")] + a, t = ~~(t / 10);
3447 return a
3449 a = e => {
3450 let a = e.toString();
3451 if (e >= 1e3) {
3452 let o = ["", "K", "M", "B", "T"],
3453 r = ~~((digits(e) - 1) / 3);
3454 if (r < o.length) {
3455 let i = "";
3456 for (let n = 3; n >= 1; n--) {
3457 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
3458 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
3459 if (s.length <= 3)
3460 break
3462 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)),
3463 a = i + o[r]
3464 } else {
3465 let l = e,
3466 c = 0;
3467 for (; l >= 100; )
3468 l = Math.floor(l / 10), c += 1;
3469 a = `${l / 10} \xd7 10${t(c + 1)}`
3472 return a
3474 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3475 let {
3476 stateNode: e
3477 } = Object.values(function e(t = document.querySelector("body>div")) {
3478 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3480 ())[1].children[0]._owner,
3481 t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
3482 t.every(e => e.querySelector("div")) || e.setState({
3483 choices: [{
3484 type: "fossil",
3485 val: 10,
3486 rate: .1,
3487 blook: "Amber"
3488 }, {
3489 type: "fossil",
3490 val: 25,
3491 rate: .1,
3492 blook: "Dino Egg"
3493 }, {
3494 type: "fossil",
3495 val: 50,
3496 rate: .175,
3497 blook: "Dino Fossil"
3498 }, {
3499 type: "fossil",
3500 val: 75,
3501 rate: .175,
3502 blook: "Stegosaurus"
3503 }, {
3504 type: "fossil",
3505 val: 100,
3506 rate: .15,
3507 blook: "Velociraptor"
3508 }, {
3509 type: "fossil",
3510 val: 125,
3511 rate: .125,
3512 blook: "Brontosaurus"
3513 }, {
3514 type: "fossil",
3515 val: 250,
3516 rate: .075,
3517 blook: "Triceratops"
3518 }, {
3519 type: "fossil",
3520 val: 500,
3521 rate: .025,
3522 blook: "Tyrannosaurus Rex"
3523 }, {
3524 type: "mult",
3525 val: 1.5,
3526 rate: .05
3527 }, {
3528 type: "mult",
3529 val: 2,
3530 rate: .025
3532 ].sort(() => .5 - Math.random()).slice(0, 3)
3533 }, () => {
3534 t.forEach((t, o) => {
3535 let r = e.state.choices[o];
3536 t.querySelector("div") && t.querySelector("div").remove();
3537 let i = document.createElement("div");
3538 i.style.color = "white",
3539 i.style.fontFamily = "Macondo",
3540 i.style.fontSize = "1em",
3541 i.style.display = "flex",
3542 i.style.justifyContent = "center",
3543 i.style.transform = "translateY(25px)",
3544 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`,
3545 t.append(i)
3548 }, 50))
3550 }, {
3551 name: "Set Fossils",
3552 description: "Sets the amount of fossils you have",
3553 inputs: [{
3554 name: "Fossils",
3555 type: "number"
3558 run: function (e) {
3559 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3560 t.setState({
3561 fossils: e
3563 t.props.liveGameController.setVal({
3564 path: "c/" + t.props.client.name,
3565 val: {
3566 b: t.props.client.blook,
3567 f: e,
3568 ic: t.state.isCheating
3572 }, {
3573 name: "Set Multiplier",
3574 description: "Sets fossil multiplier",
3575 inputs: [{
3576 name: "Multiplier",
3577 type: "number"
3580 run: function (e) {
3581 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3582 fossilMult: e
3585 }, {
3586 name: "Crash Host (Dino)",
3587 description: "Crashes the Host's Game for Deceptive Dinos",
3588 run: function () {
3589 function reactHandler() {
3590 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3593 function setv(args) {
3594 reactHandler().stateNode.props.liveGameController.setVal({
3595 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3596 val: args.slice(1, args.length).join(" ")
3600 setv(['f/t', 't']);
3602 }, {
3603 name: "Stop Cheating",
3604 description: "Undoes cheating so that you can't be caught",
3605 run: function () {
3606 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3607 e.setState({
3608 isCheating: !1
3610 e.props.liveGameController.setVal({
3611 path: `c/${e.props.client.name}/ic`,
3612 val: !1
3617 doom: [{
3618 name: "Fill Deck",
3619 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
3620 run: function () {
3621 let e = document.createElement("iframe");
3622 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
3623 let {
3624 stateNode: t
3625 } = Object.values(function e(t = document.querySelector("body>div")) {
3626 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3628 ())[1].children[0]._owner;
3629 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("|"),
3630 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 => {
3631 let [t, a] = e.split(",");
3632 return {
3633 strength: 20,
3634 charisma: 20,
3635 wisdom: 20,
3636 class: a,
3637 blook: t
3640 try {
3641 t.props.addTowerNode()
3642 } catch {}
3643 t.setState({
3644 showDeck: !1
3646 } else
3647 alert("You need to be on the map to run this cheat!")
3649 }, {
3650 name: "Max Cards",
3651 description: "Maxes out all the cards in your deck",
3652 run: function () {
3653 var e = document.createElement("iframe");
3654 document.body.append(e),
3655 window.alert = e.contentWindow.alert.bind(window),
3656 e.remove(),
3657 "/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 => {
3658 e.strength = 20,
3659 e.charisma = 20,
3660 e.wisdom = 20
3661 }) : alert("You need to be on the map to run this cheat!")
3663 }, {
3664 name: "Max Health",
3665 description: "Fills the player's health",
3666 run: function () {
3667 var e = document.createElement("iframe");
3668 document.body.append(e),
3669 window.alert = e.contentWindow.alert.bind(window),
3670 e.remove(),
3671 "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3672 myHealth: 100
3673 }) : alert("You need to be in battle to run this cheat!")
3675 }, {
3676 name: "Max Card Stats",
3677 description: "Maxes out player's current card (Only works on attribute select page)",
3678 run: function () {
3679 var e = document.createElement("iframe"),
3680 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;
3681 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3682 myCard: {
3683 ...e.state.myCard,
3684 strength: 20,
3685 charisma: 20,
3686 wisdom: 20
3690 }, {
3691 name: "Min Enemy Stats",
3692 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
3693 run: function () {
3694 var e = document.createElement("iframe"),
3695 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;
3696 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3697 enemyCard: {
3698 ...e.state.enemyCard,
3699 strength: 0,
3700 charisma: 0,
3701 wisdom: 0
3705 }, {
3706 name: "Set Coins",
3707 description: "Try's to set amount of tower coins you have",
3708 inputs: [{
3709 name: "Coins",
3710 type: "number"
3713 run: function (e) {
3714 var t = document.createElement("iframe");
3715 if (document.body.append(t), window.alert = t.contentWindow.prompt.bind(window), t.remove(), "/tower/battle" == window.location.pathname) {
3716 var t = parseInt("0" + alert("How many coins would you like?")),
3717 a = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3718 try {
3719 a.props.setTowerCoins(t)
3720 } catch {}
3721 } else
3722 alert("You need to be in battle to run this cheat!")
3724 }, {
3725 name: "Set Streak",
3726 description: "Sets your streak to the desired amount",
3727 inputs: [{
3728 name: "Streak",
3729 type: "number"
3732 run: function (e) {
3733 var t = document.createElement("iframe");
3734 document.body.append(t),
3735 window.alert = t.contentWindow.alert.bind(window),
3736 t.remove(),
3737 "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3738 myStreak: !0,
3739 streak: e
3740 }) : alert("You need to be in battle to run this cheat!")
3744 factory: [{
3745 name: "Choose Blook",
3746 description: "Gives you a blook",
3747 inputs: [{
3748 name: "Blook",
3749 type: "options",
3750 options: [{
3751 name: "Chick",
3752 color: "#ffcd05",
3753 class: "\uD83C\uDF3D",
3754 rarity: "Common",
3755 cash: [3, 7, 65, 400, 2500],
3756 time: [1, 1, 1, 1, 1],
3757 price: [300, 3e3, 3e4, 2e5]
3758 }, {
3759 name: "Chicken",
3760 color: "#ed1c24",
3761 class: "\uD83C\uDF3D",
3762 rarity: "Common",
3763 cash: [10, 40, 200, 1400, 1e4],
3764 time: [5, 4, 3, 2, 1],
3765 price: [570, 4e3, 5e4, 8e5]
3766 }, {
3767 name: "Cow",
3768 color: "#58595b",
3769 class: "\uD83C\uDF3D",
3770 rarity: "Common",
3771 cash: [25, 75, 1500, 25e3, 25e4],
3772 time: [15, 10, 10, 10, 5],
3773 price: [500, 9500, 16e4, 4e6]
3774 }, {
3775 name: "Duck",
3776 color: "#4ab96d",
3777 class: "\uD83C\uDF3D",
3778 rarity: "Common",
3779 cash: [4, 24, 200, 3e3, 4e4],
3780 time: [3, 3, 3, 3, 3],
3781 price: [450, 4200, 7e4, 11e5]
3782 }, {
3783 name: "Goat",
3784 color: "#c59a74",
3785 class: "\uD83C\uDF3D",
3786 rarity: "Common",
3787 cash: [5, 28, 200, 1300, 12e3],
3788 time: [3, 3, 2, 2, 2],
3789 price: [500, 6400, 45e3, 5e5]
3790 }, {
3791 name: "Horse",
3792 color: "#995b3c",
3793 class: "\uD83C\uDF3D",
3794 rarity: "Common",
3795 cash: [5, 20, 270, 1800, 15e3],
3796 time: [2, 2, 2, 2, 2],
3797 price: [550, 8200, 65e3, 6e5]
3798 }, {
3799 name: "Pig",
3800 color: "#f6a9cb",
3801 class: "\uD83C\uDF3D",
3802 rarity: "Common",
3803 cash: [20, 50, 1300, 8e3, 8e4],
3804 time: [7, 7, 7, 7, 5],
3805 price: [400, 11e3, 8e4, 13e5]
3806 }, {
3807 name: "Sheep",
3808 color: "#414042",
3809 class: "\uD83C\uDF3D",
3810 rarity: "Common",
3811 cash: [6, 25, 250, 1500, 11e3],
3812 time: [3, 3, 3, 2, 2],
3813 price: [500, 5e3, 5e4, 43e4]
3814 }, {
3815 name: "Cat",
3816 color: "#f49849",
3817 class: "\uD83D\uDC3E",
3818 rarity: "Common",
3819 cash: [5, 18, 170, 1700, 13e3],
3820 time: [2, 2, 2, 2, 2],
3821 price: [480, 5500, 6e4, 5e5]
3822 }, {
3823 name: "Dog",
3824 color: "#995b3c",
3825 class: "\uD83D\uDC3E",
3826 rarity: "Common",
3827 cash: [7, 25, 220, 1900, 9e3],
3828 time: [3, 3, 2, 2, 1],
3829 price: [460, 6600, 7e4, 73e4]
3830 }, {
3831 name: "Goldfish",
3832 color: "#f18221",
3833 class: "\uD83D\uDC3E",
3834 rarity: "Common",
3835 cash: [5, 40, 350, 3500, 35e3],
3836 time: [3, 3, 3, 3, 3],
3837 price: [750, 7200, 84e3, 95e4]
3838 }, {
3839 name: "Rabbit",
3840 color: "#e7bf9a",
3841 class: "\uD83D\uDC3E",
3842 rarity: "Common",
3843 cash: [3, 18, 185, 800, 7e3],
3844 time: [2, 2, 2, 1, 1],
3845 price: [500, 5800, 56e3, 55e4]
3846 }, {
3847 name: "Hamster",
3848 color: "#ce9176",
3849 class: "\uD83D\uDC3E",
3850 rarity: "Common",
3851 cash: [10, 45, 450, 4500, 45e3],
3852 time: [4, 4, 4, 4, 4],
3853 price: [650, 6500, 8e4, 93e4]
3854 }, {
3855 name: "Turtle",
3856 color: "#619a3c",
3857 class: "\uD83D\uDC3E",
3858 rarity: "Common",
3859 cash: [23, 120, 1400, 15e3, 17e4],
3860 time: [10, 10, 10, 10, 10],
3861 price: [700, 8500, 11e4, 13e5]
3862 }, {
3863 name: "Puppy",
3864 color: "#414042",
3865 class: "\uD83D\uDC3E",
3866 rarity: "Common",
3867 cash: [4, 10, 75, 500, 3e3],
3868 time: [1, 1, 1, 1, 1],
3869 price: [450, 4e3, 35e3, 25e4]
3870 }, {
3871 name: "Kitten",
3872 color: "#58595b",
3873 class: "\uD83D\uDC3E",
3874 rarity: "Common",
3875 cash: [4, 8, 60, 400, 2e3],
3876 time: [1, 1, 1, 1, 1],
3877 price: [350, 3500, 26e3, 17e4]
3878 }, {
3879 name: "Bear",
3880 color: "#995b3c",
3881 class: "\uD83C\uDF32",
3882 rarity: "Common",
3883 cash: [12, 70, 550, 4500, 1e5],
3884 time: [7, 7, 6, 5, 5],
3885 price: [550, 5500, 63e3, 16e5]
3886 }, {
3887 name: "Moose",
3888 color: "#995b3c",
3889 class: "\uD83C\uDF32",
3890 rarity: "Common",
3891 cash: [8, 45, 400, 3500, 26e3],
3892 time: [5, 5, 4, 4, 3],
3893 price: [520, 6500, 58e3, 7e5]
3894 }, {
3895 name: "Fox",
3896 color: "#f49849",
3897 class: "\uD83C\uDF32",
3898 rarity: "Common",
3899 cash: [7, 15, 80, 550, 3e3],
3900 time: [2, 2, 1, 1, 1],
3901 price: [400, 4e3, 36e3, 24e4]
3902 }, {
3903 name: "Raccoon",
3904 color: "#6d6e71",
3905 class: "\uD83C\uDF32",
3906 rarity: "Common",
3907 cash: [5, 14, 185, 1900, 19e3],
3908 time: [2, 2, 2, 2, 2],
3909 price: [400, 5e3, 71e3, 8e5]
3910 }, {
3911 name: "Squirrel",
3912 color: "#d25927",
3913 class: "\uD83C\uDF32",
3914 rarity: "Common",
3915 cash: [3, 10, 65, 470, 2600],
3916 time: [1, 1, 1, 1, 1],
3917 price: [420, 3600, 32e3, 21e4]
3918 }, {
3919 name: "Owl",
3920 color: "#594a42",
3921 class: "\uD83C\uDF32",
3922 rarity: "Common",
3923 cash: [4, 17, 155, 1500, 15e3],
3924 time: [2, 2, 2, 2, 2],
3925 price: [500, 4800, 55e3, 58e4]
3926 }, {
3927 name: "Hedgehog",
3928 color: "#3f312b",
3929 class: "\uD83C\uDF32",
3930 rarity: "Common",
3931 cash: [11, 37, 340, 2200, 3e4],
3932 time: [5, 4, 3, 2, 2],
3933 price: [540, 7e3, 77e3, 12e5]
3934 }, {
3935 name: "Seal",
3936 color: "#7ca1d5",
3937 class: "❄️",
3938 rarity: "Common",
3939 cash: [6, 17, 150, 1200, 13e3],
3940 time: [2, 2, 2, 2, 2],
3941 price: [480, 4500, 43e3, 52e4]
3942 }, {
3943 name: "Arctic Fox",
3944 color: "#7ca1d5",
3945 class: "❄️",
3946 rarity: "Common",
3947 cash: [5, 18, 180, 850, 8500],
3948 time: [2, 2, 2, 1, 1],
3949 price: [520, 550, 61e3, 68e4]
3950 }, {
3951 name: "Snowy Owl",
3952 color: "#feda3f",
3953 class: "❄️",
3954 rarity: "Common",
3955 cash: [5, 20, 190, 1900, 16e3],
3956 time: [3, 3, 2, 2, 2],
3957 price: [370, 5300, 76e3, 62e4]
3958 }, {
3959 name: "Arctic Hare",
3960 color: "#7ca1d5",
3961 class: "❄️",
3962 rarity: "Common",
3963 cash: [6, 19, 85, 900, 7e3],
3964 time: [2, 2, 1, 1, 1],
3965 price: [540, 5200, 66e3, 55e4]
3966 }, {
3967 name: "Penguin",
3968 color: "#fb8640",
3969 class: "❄️",
3970 rarity: "Common",
3971 cash: [4, 21, 310, 3200, 33e3],
3972 time: [3, 3, 3, 3, 3],
3973 price: [400, 6500, 76e3, 87e4]
3974 }, {
3975 name: "Baby Penguin",
3976 color: "#414042",
3977 class: "❄️",
3978 rarity: "Common",
3979 cash: [3, 8, 70, 450, 2700],
3980 time: [1, 1, 1, 1, 1],
3981 price: [420, 3300, 33e3, 23e4]
3982 }, {
3983 name: "Polar Bear",
3984 color: "#7ca1d5",
3985 class: "❄️",
3986 rarity: "Common",
3987 cash: [12, 75, 700, 6500, 85e3],
3988 time: [8, 7, 6, 5, 5],
3989 price: [630, 7e3, 91e3, 14e5]
3990 }, {
3991 name: "Walrus",
3992 color: "#7d4f33",
3993 class: "❄️",
3994 rarity: "Common",
3995 cash: [11, 46, 420, 3700, 51e3],
3996 time: [5, 5, 4, 4, 4],
3997 price: [550, 6200, 68e3, 1e6]
3998 }, {
3999 name: "Tiger",
4000 color: "#f18221",
4001 class: "\uD83C\uDF34",
4002 rarity: "Common",
4003 cash: [6, 20, 100, 975, 7500],
4004 time: [3, 3, 1, 1, 1],
4005 price: [390, 6e3, 7e4, 61e4]
4006 }, {
4007 name: "Jaguar",
4008 color: "#fbb040",
4009 class: "\uD83C\uDF34",
4010 rarity: "Common",
4011 cash: [8, 28, 230, 1600, 17e3],
4012 time: [3, 3, 2, 2, 2],
4013 price: [390, 6e3, 7e4, 61e4]
4014 }, {
4015 name: "Toucan",
4016 color: "#ffca34",
4017 class: "\uD83C\uDF34",
4018 rarity: "Common",
4019 cash: [9, 20, 175, 625, 3800],
4020 time: [2, 2, 2, 1, 1],
4021 price: [520, 4800, 42e3, 3e5]
4022 }, {
4023 name: "Cockatoo",
4024 color: "#7ca1d5",
4025 class: "\uD83C\uDF34",
4026 rarity: "Common",
4027 cash: [6, 35, 160, 1700, 18e3],
4028 time: [4, 4, 2, 2, 2],
4029 price: [500, 5e3, 63e3, 7e5]
4030 }, {
4031 name: "Macaw",
4032 color: "#00aeef",
4033 class: "\uD83C\uDF34",
4034 rarity: "Common",
4035 cash: [3, 8, 85, 850, 8500],
4036 time: [1, 1, 1, 1, 1],
4037 price: [480, 5400, 62e3, 63e4]
4038 }, {
4039 name: "Parrot",
4040 color: "#ed1c24",
4041 class: "\uD83C\uDF34",
4042 rarity: "Common",
4043 cash: [3, 9, 90, 900, 9e3],
4044 time: [1, 1, 1, 1, 1],
4045 price: [540, 5700, 65e3, 69e4]
4046 }, {
4047 name: "Panther",
4048 color: "#2f2c38",
4049 class: "\uD83C\uDF34",
4050 rarity: "Common",
4051 cash: [12, 28, 215, 2100, 21e3],
4052 time: [5, 3, 2, 2, 2],
4053 price: [530, 6500, 76e3, 87e4]
4054 }, {
4055 name: "Anaconda",
4056 color: "#8a9143",
4057 class: "\uD83C\uDF34",
4058 rarity: "Common",
4059 cash: [3, 15, 85, 1500, 7600],
4060 time: [1, 2, 1, 2, 1],
4061 price: [410, 5100, 58e3, 59e4]
4062 }, {
4063 name: "Orangutan",
4064 color: "#bc6234",
4065 class: "\uD83C\uDF34",
4066 rarity: "Common",
4067 cash: [13, 52, 570, 4300, 7e4],
4068 time: [5, 5, 5, 4, 4],
4069 price: [600, 7e3, 8e4, 14e5]
4070 }, {
4071 name: "Capuchin",
4072 color: "#e0b0a6",
4073 class: "\uD83C\uDF34",
4074 rarity: "Common",
4075 cash: [4, 14, 160, 780, 8200],
4076 time: [2, 2, 2, 1, 1],
4077 price: [390, 4700, 57e3, 68e4]
4078 }, {
4079 name: "Elf",
4080 color: "#a7d054",
4081 class: "⚔️",
4082 rarity: "Uncommon",
4083 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
4084 time: [1, 1, 1, 1, 1],
4085 price: [8e5, 9e6, 11e7, 8e8]
4086 }, {
4087 name: "Witch",
4088 color: "#4ab96d",
4089 class: "⚔️",
4090 rarity: "Uncommon",
4091 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
4092 time: [3, 3, 2, 2, 2],
4093 price: [11e5, 12e6, 15e7, 14e8]
4094 }, {
4095 name: "Wizard",
4096 color: "#5a459c",
4097 class: "⚔️",
4098 rarity: "Uncommon",
4099 cash: [19500, 65e3, 44e4, 46e5, 4e6],
4100 time: [3, 3, 2, 2, 2],
4101 price: [13e5, 135e5, 16e7, 16e8]
4102 }, {
4103 name: "Fairy",
4104 color: "#df6d9c",
4105 class: "⚔️",
4106 rarity: "Uncommon",
4107 cash: [18500, 6e4, 62e4, 44e5, 38e6],
4108 time: [3, 3, 3, 2, 2],
4109 price: [12e5, 125e5, 15e6, 15e8]
4110 }, {
4111 name: "Slime Monster",
4112 color: "#2fa04a",
4113 class: "⚔️",
4114 rarity: "Uncommon",
4115 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
4116 time: [5, 5, 4, 4, 4],
4117 price: [16e5, 15e6, 2e8, 23e8]
4118 }, {
4119 name: "Jester",
4120 color: "#be1e2d",
4121 class: "⚔️",
4122 rarity: "Rare",
4123 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
4124 time: [3, 3, 2, 2, 1],
4125 price: [2e6, 21e6, 23e7, 26e8]
4126 }, {
4127 name: "Dragon",
4128 color: "#2fa04a",
4129 class: "⚔️",
4130 rarity: "Rare",
4131 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
4132 time: [4, 4, 4, 4, 4],
4133 price: [23e5, 24e6, 27e7, 3e9]
4134 }, {
4135 name: "Unicorn",
4136 color: "#f6afce",
4137 class: "⚔️",
4138 rarity: "Epic",
4139 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
4140 time: [2, 2, 2, 1, 1],
4141 price: [45e5, 45e6, 55e7, 65e8]
4142 }, {
4143 name: "Queen",
4144 color: "#9e1f63",
4145 class: "⚔️",
4146 rarity: "Rare",
4147 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
4148 time: [3, 3, 3, 3, 3],
4149 price: [19e5, 2e7, 23e7, 25e8]
4150 }, {
4151 name: "King",
4152 color: "#ee2640",
4153 class: "⚔️",
4154 rarity: "Legendary",
4155 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
4156 time: [5, 5, 5, 5, 5],
4157 price: [6e6, 95e6, 16e8, 25e9]
4158 }, {
4159 name: "Two of Spades",
4160 color: "#414042",
4161 class: "\uD83C\uDFF0",
4162 rarity: "Uncommon",
4163 cash: [4500, 14e3, 14e4, 14e5, 9e6],
4164 time: [1, 1, 1, 1, 1],
4165 price: [77e4, 83e5, 98e6, 71e7]
4166 }, {
4167 name: "Eat Me",
4168 color: "#d58c55",
4169 class: "\uD83C\uDFF0",
4170 rarity: "Uncommon",
4171 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
4172 time: [2, 2, 2, 2, 2],
4173 price: [13e5, 14e6, 16e7, 2e9]
4174 }, {
4175 name: "Drink Me",
4176 color: "#dd7399",
4177 class: "\uD83C\uDFF0",
4178 rarity: "Uncommon",
4179 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
4180 time: [2, 2, 2, 2, 2],
4181 price: [12e5, 12e6, 14e7, 18e8]
4182 }, {
4183 name: "Alice",
4184 color: "#4cc9f5",
4185 class: "\uD83C\uDFF0",
4186 rarity: "Uncommon",
4187 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
4188 time: [2, 2, 1, 1, 1],
4189 price: [12e5, 13e6, 15e7, 19e8]
4190 }, {
4191 name: "Queen of Hearts",
4192 color: "#d62027",
4193 class: "\uD83C\uDFF0",
4194 rarity: "Uncommon",
4195 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
4196 time: [4, 4, 3, 3, 3],
4197 price: [13e5, 13e6, 18e7, 24e8]
4198 }, {
4199 name: "Dormouse",
4200 color: "#89d6f8",
4201 class: "\uD83C\uDFF0",
4202 rarity: "Rare",
4203 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
4204 time: [2, 2, 1, 1, 1],
4205 price: [2e6, 22e6, 25e7, 28e8]
4206 }, {
4207 name: "White Rabbit",
4208 color: "#ffcd05",
4209 class: "\uD83C\uDFF0",
4210 rarity: "Rare",
4211 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
4212 time: [3, 3, 3, 2, 2],
4213 price: [2e6, 23e6, 28e7, 29e8]
4214 }, {
4215 name: "Cheshire Cat",
4216 color: "#dd7399",
4217 class: "\uD83C\uDFF0",
4218 rarity: "Rare",
4219 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
4220 time: [4, 3, 3, 3, 2],
4221 price: [18e5, 19e6, 22e7, 24e8]
4222 }, {
4223 name: "Caterpillar",
4224 color: "#00c0f3",
4225 class: "\uD83C\uDFF0",
4226 rarity: "Epic",
4227 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
4228 time: [1, 1, 1, 1, 1],
4229 price: [42e5, 42e6, 54e7, 69e8]
4230 }, {
4231 name: "Mad Hatter",
4232 color: "#914f93",
4233 class: "\uD83C\uDFF0",
4234 rarity: "Epic",
4235 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
4236 time: [3, 3, 2, 2, 1],
4237 price: [48e5, 48e6, 52e7, 66e8]
4238 }, {
4239 name: "King of Hearts",
4240 color: "#c62127",
4241 class: "\uD83C\uDFF0",
4242 rarity: "Legendary",
4243 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
4244 time: [5, 5, 5, 5, 5],
4245 price: [7e6, 11e7, 18e8, 3e10]
4246 }, {
4247 name: "Earth",
4248 color: "#416eb5",
4249 class: "\uD83D\uDE80",
4250 rarity: "Uncommon",
4251 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
4252 time: [3, 3, 3, 3, 3],
4253 price: [1e6, 11e6, 15e7, 17e8]
4254 }, {
4255 name: "Meteor",
4256 color: "#c68c3c",
4257 class: "\uD83D\uDE80",
4258 rarity: "Uncommon",
4259 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
4260 time: [5, 4, 3, 2, 1],
4261 price: [95e4, 13e6, 16e7, 16e8]
4262 }, {
4263 name: "Stars",
4264 color: "#19184d",
4265 class: "\uD83D\uDE80",
4266 rarity: "Uncommon",
4267 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
4268 time: [2, 2, 1, 1, 1],
4269 price: [14e5, 14e6, 15e7, 15e8]
4270 }, {
4271 name: "Alien",
4272 color: "#8dc63f",
4273 class: "\uD83D\uDE80",
4274 rarity: "Uncommon",
4275 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
4276 time: [4, 4, 4, 4, 4],
4277 price: [15e5, 17e6, 19e7, 17e8]
4278 }, {
4279 name: "Planet",
4280 color: "#9dc6ea",
4281 class: "\uD83D\uDE80",
4282 rarity: "Rare",
4283 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
4284 time: [3, 3, 3, 3, 3],
4285 price: [2e6, 21e6, 21e7, 24e8]
4286 }, {
4287 name: "UFO",
4288 color: "#a15095",
4289 class: "\uD83D\uDE80",
4290 rarity: "Rare",
4291 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
4292 time: [2, 2, 2, 2, 2],
4293 price: [21e5, 23e6, 25e7, 28e8]
4294 }, {
4295 name: "Spaceship",
4296 color: "#ffcb29",
4297 class: "\uD83D\uDE80",
4298 rarity: "Epic",
4299 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
4300 time: [5, 4, 3, 2, 1],
4301 price: [48e5, 46e6, 54e7, 68e8]
4302 }, {
4303 name: "Astronaut",
4304 color: "#9bd4ee",
4305 class: "\uD83D\uDE80",
4306 rarity: "Legendary",
4307 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
4308 time: [3, 3, 2, 2, 2],
4309 price: [65e5, 1e8, 17e8, 27e9]
4310 }, {
4311 name: "Lil Bot",
4312 color: "#3e564a",
4313 class: "\uD83E\uDD16",
4314 rarity: "Uncommon",
4315 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
4316 time: [1, 1, 1, 1, 1],
4317 price: [73e4, 12e6, 13e7, 19e8]
4318 }, {
4319 name: "Lovely Bot",
4320 color: "#f179af",
4321 class: "\uD83E\uDD16",
4322 rarity: "Uncommon",
4323 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
4324 time: [3, 3, 3, 2, 2],
4325 price: [13e5, 14e6, 17e7, 16e8]
4326 }, {
4327 name: "Angry Bot",
4328 color: "#f1613a",
4329 class: "\uD83E\uDD16",
4330 rarity: "Uncommon",
4331 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
4332 time: [4, 4, 4, 3, 3],
4333 price: [12e5, 13e6, 15e7, 17e8]
4334 }, {
4335 name: "Happy Bot",
4336 color: "#51ba6b",
4337 class: "\uD83E\uDD16",
4338 rarity: "Uncommon",
4339 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
4340 time: [2, 2, 2, 1, 1],
4341 price: [14e5, 15e6, 18e7, 24e8]
4342 }, {
4343 name: "Watson",
4344 color: "#d69b5a",
4345 class: "\uD83E\uDD16",
4346 rarity: "Rare",
4347 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
4348 time: [3, 3, 3, 3, 3],
4349 price: [2e6, 22e6, 24e7, 26e8]
4350 }, {
4351 name: "Buddy Bot",
4352 color: "#9dc6ea",
4353 class: "\uD83E\uDD16",
4354 rarity: "Rare",
4355 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
4356 time: [3, 3, 2, 2, 2],
4357 price: [19e5, 21e6, 23e7, 25e8]
4358 }, {
4359 name: "Brainy Bot",
4360 color: "#9ecf7a",
4361 class: "\uD83E\uDD16",
4362 rarity: "Epic",
4363 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
4364 time: [4, 3, 3, 3, 2],
4365 price: [5e6, 46e6, 5e8, 67e8]
4366 }, {
4367 name: "Mega Bot",
4368 color: "#d71f27",
4369 class: "\uD83E\uDD16",
4370 rarity: "Legendary",
4371 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4372 time: [5, 5, 3, 3, 3],
4373 price: [7e6, 12e7, 19e8, 35e9]
4375 ].map(e => ({
4376 name: e.name,
4377 value: JSON.stringify(e)
4381 run: function (e) {
4382 let t = document.createElement("iframe");
4383 document.body.append(t),
4384 window.alert = t.contentWindow.alert.bind(window),
4385 t.remove();
4386 let {
4387 stateNode: a
4388 } = Object.values(function e(t = document.querySelector("body>div")) {
4389 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
4391 ())[1].children[0]._owner;
4392 a.state.blooks.length >= 10 && alert("Choose a blook to replace"),
4393 a.chooseBlook(JSON.parse(e))
4395 }, {
4396 name: "Free Upgrades",
4397 description: "Sets upgrade prices to 0 for all current blooks",
4398 run: function () {
4399 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
4400 ...e,
4401 blooks: e.blooks.map(e => ({
4402 ...e,
4403 price: [0, 0, 0, 0]
4407 }, {
4408 name: "Max Blooks",
4409 description: "Maxes out all your blooks' levels",
4410 run: function () {
4411 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
4413 }, {
4414 name: "Remove Glitches",
4415 description: "Removes all enemy glitches",
4416 run: function () {
4417 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4418 e.setState({
4419 bits: 0,
4420 ads: [],
4421 hazards: [],
4422 color: "",
4423 lol: !1,
4424 joke: !1,
4425 slow: !1,
4426 dance: !1,
4427 glitch: "",
4428 glitcherName: "",
4429 glitcherBlook: ""
4431 clearTimeout(e.adTimeout),
4432 clearInterval(e.hazardInterval),
4433 clearTimeout(e.nightTimeout),
4434 clearTimeout(e.glitchTimeout),
4435 clearTimeout(e.lolTimeout),
4436 clearTimeout(e.jokeTimeout),
4437 clearTimeout(e.slowTimeout),
4438 clearTimeout(e.danceTimeout),
4439 clearTimeout(e.nameTimeout)
4441 }, {
4442 name: "Send Glitch",
4443 description: "Sends a glitch to everyone else playing",
4444 inputs: [{
4445 name: "Glitch",
4446 type: "options",
4447 options: Object.entries({
4448 lb: "Lunch Break",
4449 as: "Ad Spam",
4450 e37: "Error 37",
4451 nt: "Night Time",
4452 lo: "#LOL",
4453 j: "Jokester",
4454 sm: "Slow Mo",
4455 dp: "Dance Party",
4456 v: "Vortex",
4457 r: "Reverse",
4458 f: "Flip",
4459 m: "Micro"
4460 }).map(([e, t]) => ({
4461 name: t,
4462 value: e
4466 run: function (e) {
4467 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4468 t.safe = !0,
4469 t.props.liveGameController.setVal({
4470 path: `c/${t.props.client.name}/tat`,
4471 val: e
4474 }, {
4475 name: "Set All MegaBot",
4476 description: "Sets all your blooks to maxed out Mega Bots",
4477 run: function () {
4478 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4479 blooks: Array(10).fill({
4480 name: "Mega Bot",
4481 color: "#d71f27",
4482 class: "\uD83E\uDD16",
4483 rarity: "Legendary",
4484 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4485 time: [5, 5, 3, 3, 3],
4486 price: [7e6, 12e7, 19e8, 35e9],
4487 active: !1,
4488 level: 4,
4489 bonus: 5.5
4493 }, {
4494 name: "Set Cash",
4495 description: "Sets amount of cash you have",
4496 inputs: [{
4497 name: "Cash",
4498 type: "number"
4501 run: function (e) {
4502 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4503 cash: e
4508 fishing: [{
4509 name: "Always Frenzy",
4510 description: "Always sets everyone to frenzy mode",
4511 type: "toggle",
4512 enabled: false,
4513 data: null,
4514 run: function () {
4515 if (this.enabled) {
4516 this.enabled = false;
4517 clearInterval(this.data);
4518 this.data = null;
4519 } else {
4520 this.enabled = true;
4521 this.data = setInterval(() => {
4522 const cheat = (async() => {
4523 let {
4524 stateNode
4525 } = Object.values((function react(r = document.querySelector("body>div")) {
4526 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4527 })())[1].children[0]._owner;
4528 stateNode.props.liveGameController.setVal({
4529 path: `c/${stateNode.props.client.name}`,
4530 val: {
4531 b: stateNode.props.client.blook,
4532 w: stateNode.state.weight,
4533 f: "Frenzy",
4534 s: true
4538 cheat();
4539 }, 50);
4542 }, {
4543 name: "Client Sided Frenzy",
4544 description: "Frenzy for you only",
4545 type: "toggle",
4546 enabled: !1,
4547 run: function () {
4548 const componentInstance = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode;
4549 if (this.enabled) {
4550 this.enabled = !1;
4551 componentInstance.setState({
4552 isFrenzy: false
4554 } else {
4555 this.enabled = !0;
4556 componentInstance.setState({
4557 isFrenzy: true
4561 }, {
4562 name: "Remove Distractions",
4563 description: "Removes distractions",
4564 type: "toggle",
4565 enabled: !1,
4566 data: null,
4567 run: function () {
4568 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
4569 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4570 party: ""
4572 }, 50))
4574 }, {
4575 name: "Frenzy",
4576 description: "Sets everyone to frenzy mode",
4577 run: function () {
4578 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4579 e.props.liveGameController.setVal({
4580 path: "c/" + e.props.client.name,
4581 val: {
4582 b: e.props.client.blook,
4583 w: e.state.weight,
4584 f: "Frenzy",
4585 s: !0
4589 }, {
4590 name: "Send Distraction",
4591 description: "Sends a distraction to everyone",
4592 inputs: [{
4593 name: "Distraction",
4594 type: "options",
4595 options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]
4598 run: function (e) {
4599 var t = document.createElement("iframe"),
4600 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;
4601 t.safe = !0,
4602 t.props.liveGameController.setVal({
4603 path: "c/" + t.props.client.name,
4604 val: {
4605 b: t.props.client.blook,
4606 w: t.state.weight,
4607 f: e,
4608 s: !0
4612 }, {
4613 name: "Set Lure",
4614 description: "Sets fishing lure (range 1 - 5)",
4615 inputs: [{
4616 name: "Lure (1 - 5)",
4617 type: "number",
4618 min: 1,
4619 max: 5
4622 run: function (e) {
4623 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4624 lure: Math.max(Math.min(e - 1, 4), 0)
4627 }, {
4628 name: "Set Next Fish",
4629 description: "Sets the next fish to catch",
4630 inputs: [{
4631 name: "Fish",
4632 type: "options",
4633 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"]
4636 run: function (e) {
4637 function t() {
4638 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
4640 var a = {
4641 "Old Boot": {
4642 rarity: "Trash",
4643 minWeight: 1,
4644 maxWeight: 10,
4645 tiers: ["F", "D", "C"]
4647 Waffle: {
4648 rarity: "Trash",
4649 minWeight: 1,
4650 maxWeight: 10,
4651 tiers: ["F", "D", "C"]
4653 "Two of Spades": {
4654 rarity: "Trash",
4655 minWeight: 1,
4656 maxWeight: 10,
4657 tiers: ["F", "D", "C"]
4659 Jellyfish: {
4660 rarity: "Easy One",
4661 minWeight: 10,
4662 maxWeight: 25,
4663 tiers: ["D", "C", "B"]
4665 Clownfish: {
4666 rarity: "Easy One",
4667 minWeight: 20,
4668 maxWeight: 45,
4669 tiers: ["D", "C", "B"]
4671 Goldfish: {
4672 rarity: "Easy One",
4673 minWeight: 30,
4674 maxWeight: 65,
4675 tiers: ["D", "C", "B"]
4677 Frog: {
4678 rarity: "Easy One",
4679 minWeight: 50,
4680 maxWeight: 100,
4681 tiers: ["D", "C", "B"]
4683 "Blizzard Clownfish": {
4684 rarity: "Great Catch",
4685 minWeight: 75,
4686 maxWeight: 125,
4687 tiers: ["D", "C", "B"]
4689 Turtle: {
4690 rarity: "Great Catch",
4691 minWeight: 100,
4692 maxWeight: 150,
4693 tiers: ["D", "C", "B", "A"]
4695 Cat: {
4696 rarity: "Great Catch",
4697 minWeight: 100,
4698 maxWeight: 200,
4699 tiers: ["D", "C", "B", "A"]
4701 "Lovely Frog": {
4702 rarity: "Great Catch",
4703 minWeight: 150,
4704 maxWeight: 350,
4705 tiers: ["D", "C", "B", "A"]
4707 "Lucky Frog": {
4708 rarity: "Great Catch",
4709 minWeight: 200,
4710 maxWeight: 400,
4711 tiers: ["D", "C", "B", "A"]
4713 "Poison Dart Frog": {
4714 rarity: "Great Catch",
4715 minWeight: 250,
4716 maxWeight: 750,
4717 tiers: ["D", "C", "B", "A"]
4719 Seal: {
4720 rarity: "Rare Find",
4721 minWeight: 500,
4722 maxWeight: 1e3,
4723 tiers: ["D", "C", "B", "A"]
4725 Walrus: {
4726 rarity: "Rare Find",
4727 minWeight: 700,
4728 maxWeight: 2200,
4729 tiers: ["D", "C", "B", "A"]
4731 Fairy: {
4732 rarity: "Rare Find",
4733 minWeight: 1500,
4734 maxWeight: 2500,
4735 tiers: ["D", "C", "B", "A"]
4737 Crab: {
4738 rarity: "Rare Find",
4739 minWeight: 1e3,
4740 maxWeight: 3e3,
4741 tiers: ["D", "C", "B", "A"]
4743 "Lemon Crab": {
4744 rarity: "Rare Find",
4745 minWeight: 2e3,
4746 maxWeight: 5e3,
4747 tiers: ["C", "B", "A"]
4749 Pufferfish: {
4750 rarity: "Rare Find",
4751 minWeight: 2e3,
4752 maxWeight: 4e3,
4753 tiers: ["D", "C", "B", "A"]
4755 Blobfish: {
4756 rarity: "Rare Find",
4757 minWeight: 3e3,
4758 maxWeight: 5e3,
4759 tiers: ["D", "C", "B", "A"]
4761 "Rainbow Jellyfish": {
4762 rarity: "Epic Grab",
4763 minWeight: 7e3,
4764 maxWeight: 1e4,
4765 tiers: ["C", "B", "A"]
4767 Octopus: {
4768 rarity: "Epic Grab",
4769 minWeight: 1e4,
4770 maxWeight: 15e3,
4771 tiers: ["C", "B", "A"]
4773 "Pirate Pufferfish": {
4774 rarity: "Epic Grab",
4775 minWeight: 12e3,
4776 maxWeight: 2e4,
4777 tiers: ["C", "B", "A"]
4779 "Donut Blobfish": {
4780 rarity: "Epic Grab",
4781 minWeight: 13e3,
4782 maxWeight: 25e3,
4783 tiers: ["C", "B", "A"]
4785 "Crimson Octopus": {
4786 rarity: "Epic Grab",
4787 minWeight: 15e3,
4788 maxWeight: 3e4,
4789 tiers: ["B", "A"]
4791 Narwhal: {
4792 rarity: "Catch of the Day",
4793 minWeight: 25e3,
4794 maxWeight: 5e4,
4795 tiers: ["B", "A", "S"]
4797 "Baby Shark": {
4798 rarity: "Catch of the Day",
4799 minWeight: 5e4,
4800 maxWeight: 1e5,
4801 tiers: ["B", "A", "S"]
4803 Megalodon: {
4804 rarity: "Catch of the Day",
4805 minWeight: 25e4,
4806 maxWeight: 5e5,
4807 tiers: ["B", "A", "S"]
4809 Alien: {
4810 rarity: "Angler's Legend",
4811 minWeight: 5e5,
4812 maxWeight: 7e5,
4813 tiers: ["A", "S"]
4815 "Rainbow Narwhal": {
4816 rarity: "Angler's Legend",
4817 minWeight: 75e4,
4818 maxWeight: 1e6,
4819 tiers: ["A", "S", "S+"]
4821 UFO: {
4822 rarity: "Angler's Legend",
4823 minWeight: 1e6,
4824 maxWeight: 2e6,
4825 tiers: ["A", "S", "S+"]
4827 "Santa Claus": {
4828 rarity: "Angler's Legend",
4829 minWeight: 1e6,
4830 maxWeight: 2e6,
4831 tiers: ["A", "S", "S+"]
4833 "Swamp Monster": {
4834 rarity: "Angler's Legend",
4835 minWeight: 1e6,
4836 maxWeight: 2e6,
4837 tiers: ["A", "S", "S+"]
4839 "Red Astronaut": {
4840 rarity: "Angler's Legend",
4841 minWeight: 1e6,
4842 maxWeight: 2e6,
4843 tiers: ["A", "S", "S+"]
4845 "Spooky Pumpkin": {
4846 rarity: "Angler's Legend",
4847 minWeight: 1e6,
4848 maxWeight: 2e6,
4849 tiers: ["A", "S", "S+"]
4851 Dragon: {
4852 rarity: "Angler's Legend",
4853 minWeight: 1e6,
4854 maxWeight: 2e6,
4855 tiers: ["A", "S", "S+"]
4857 "Tim the Alien": {
4858 rarity: "Angler's Legend",
4859 minWeight: 15e5,
4860 maxWeight: 25e5,
4861 tiers: ["A", "S", "S+"]
4864 o = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
4865 if (!window.functionSet) {
4866 var r = t().stateNode.answerNext;
4867 t().stateNode.answerNext = function () {
4868 if (t().stateNode.state.hackFish) {
4869 var i,
4872 t().stateNode.setState({
4873 stage: "caught",
4874 isCast: !1,
4875 fish: {
4876 name: i = e,
4877 rarity: a[i].rarity,
4878 weight: (n = a[i].minWeight, Math.floor(Math.random() * ((s = a[i].maxWeight) - n) + n)),
4879 tier: a[i].tiers[Math.floor(Math.random() * a[i].tiers.length)],
4880 isSpecial: o.includes(i) && 8 > Math.floor(100 * Math.random())
4882 claimReady: !1
4884 setTimeout(function () {
4885 t().stateNode.setState({
4886 claimReady: !0
4888 }, 1600),
4889 t().stateNode.state.hackFish = null
4890 } else
4891 r.apply(this, arguments)
4894 window.functionSet = !0,
4895 !function e(o) {
4896 if (Object.keys(a).includes(o))
4897 t().stateNode.state.hackFish = o;
4898 else {
4899 alert("That fish does not exist!");
4900 return
4905 }, {
4906 name: "Set Weight",
4907 description: "Sets weight",
4908 inputs: [{
4909 name: "Weight",
4910 type: "number"
4913 run: function (e) {
4914 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4915 t.setState({
4916 weight: e,
4917 weight2: e
4919 t.props.liveGameController.setVal({
4920 path: "c/" + t.props.client.name,
4921 val: {
4922 b: t.props.client.blook,
4923 w: e,
4924 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
4930 flappy: [{
4931 name: "Toggle Ghost",
4932 description: "Lets you go through the pipes",
4933 type: "toggle",
4934 enabled: false,
4935 run: function () {
4936 this.enabled = !this.enabled;
4937 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
4938 if (!body.gameObject.frame.texture.key.startsWith("blook"))
4939 continue;
4940 body.checkCollision.none = this.enabled;
4941 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
4942 break;
4945 }, {
4946 name: "Set Score",
4947 description: "Sets flappy blook score",
4948 inputs: [{
4949 name: "Score",
4950 type: "number"
4953 run: function (score) {
4954 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](score || 0);
4956 }, {
4957 name: "Change Game Code",
4958 description: "Replace the old game with new HTML content",
4959 inputs: [{
4960 name: "HTML Code",
4961 type: "text"
4964 run: function (newHtml) {
4965 (function () {
4967 if (newHtml) {
4969 var canvas = document.querySelector('canvas[width="320"][height="480"]');
4971 if (canvas) {
4973 var tempContainer = document.createElement('div');
4974 tempContainer.innerHTML = newHtml;
4976 var wrapperDiv = document.createElement('div');
4977 wrapperDiv.style.width = '320px';
4978 wrapperDiv.style.height = '480px';
4979 wrapperDiv.style.overflow = 'auto';
4980 wrapperDiv.style.boxSizing = 'border-box';
4981 wrapperDiv.style.position = canvas.style.position;
4982 wrapperDiv.style.marginLeft = canvas.style.marginLeft;
4983 wrapperDiv.style.marginTop = canvas.style.marginTop;
4984 wrapperDiv.style.cursor = canvas.style.cursor;
4985 wrapperDiv.style.backgroundColor = '#f0f0f0';
4987 while (tempContainer.firstChild) {
4988 wrapperDiv.appendChild(tempContainer.firstChild);
4991 canvas.parentNode.replaceChild(wrapperDiv, canvas);
4994 var scoreTextDiv = document.querySelector('div._scoreText_e2c5l_7');
4995 if (scoreTextDiv) {
4996 scoreTextDiv.parentNode.removeChild(scoreTextDiv);
4999 })();
5001 }, {
5002 name: "Change Settings",
5003 description: "Changes various game mechanics and lets you play with the spacebar",
5004 inputs: [{
5005 name: "Bird Gravity",
5006 type: "number",
5007 value: 800
5008 }, {
5009 name: "Bird Speed",
5010 type: "number",
5011 value: 125
5012 }, {
5013 name: "Bird Flap Power",
5014 type: "number",
5015 value: 300
5018 run: function (a, b, c) {
5019 const scene = Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig;
5020 scene.birdGravity = a;
5021 scene.birdSpeed = b;
5022 scene.birdFlapPower = c;
5023 scene.flap = function () {
5024 this.isStarted || (this.bird.body.gravity.y = this.birdGravity,
5025 this.pipeGroup.setVelocityX(-this.birdSpeed),
5026 this.groundGroup.setVelocityX(-this.birdSpeed),
5027 this.isStarted = !0),
5028 this.bird.body.velocity.y = -this.birdFlapPower
5030 scene.input._events.pointerdown = [];
5031 scene.create();
5032 scene.input.keyboard.addKey('SPACE').on("down", e => {
5033 scene.flap.call(scene);
5038 gold: [{
5039 name: "Always Triple",
5040 description: "Always get triple gold",
5041 type: "toggle",
5042 enabled: !1,
5043 data: null,
5044 run: function () {
5045 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5046 e._choosePrize ||= e.choosePrize,
5047 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
5048 e.choosePrize = function (t) {
5049 e.state.choices[t] = {
5050 type: "multiply",
5051 val: 3,
5052 text: "Triple Gold!",
5053 blook: "Unicorn"
5055 e._choosePrize(t)
5057 }, 50))
5059 }, {
5060 name: "Always Quintuple",
5061 description: "Always get quintuple gold",
5062 type: "toggle",
5063 enabled: !1,
5064 data: null,
5065 run: function () {
5066 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5067 e._choosePrize ||= e.choosePrize,
5068 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
5069 e.choosePrize = function (t) {
5070 e.state.choices[t] = {
5071 type: "multiply",
5072 val: 5,
5073 text: "Quintuple Gold!",
5074 blook: "Ice Elemental"
5076 e._choosePrize(t)
5078 }, 50))
5080 }, {
5081 name: "Auto Choose",
5082 description: "Automatically picks the option that would give you the most gold",
5083 type: "toggle",
5084 enabled: false,
5085 data: null,
5086 run: function () {
5087 if (this.enabled) {
5088 this.enabled = false;
5089 clearInterval(this.data);
5090 this.data = null;
5091 } else {
5092 this.enabled = true;
5093 this.data = setInterval(() => {
5094 let {
5095 stateNode
5096 } = Object.values((function react(r = document.querySelector("body>div")) {
5097 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5098 })())[1].children[0]._owner;
5100 if (stateNode.state.stage == "prize") {
5101 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
5102 if (players == null)
5103 return;
5104 players = Object.entries(players);
5105 let most = 0,
5106 max = 0,
5107 index = -1;
5108 for (let i = 0; i < players.length; i++) {
5109 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
5110 most = players[i][1];
5113 for (let i = 0; i < stateNode.state.choices.length; i++) {
5114 const choice = stateNode.state.choices[i];
5115 let value = stateNode.state.gold;
5116 if (choice.type == "gold") {
5117 value = stateNode.state.gold + (choice.val || 0);
5118 } else if (choice.type == "multiply" || choice.type == "divide") {
5119 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
5120 } else if (choice.type == "swap") {
5121 value = most || stateNode.state.gold;
5122 } else if (choice.type == "take") {
5123 value = stateNode.state.gold + (most * choice.val || 0);
5125 if ((value || 0) <= max)
5126 continue;
5127 max = value;
5128 index = i + 1;
5130 document.querySelector("div[class*='choice" + index + "']")?.click();
5133 }, 50);
5136 }, {
5137 name: "Chest ESP",
5138 description: "Shows what each chest will give you",
5139 type: "toggle",
5140 enabled: false,
5141 data: null,
5142 run: function () {
5143 if (this.enabled) {
5144 this.enabled = false;
5145 clearInterval(this.data);
5146 this.data = null;
5147 } else {
5148 this.enabled = true;
5149 this.data = setInterval(() => {
5150 const cheat = (async() => {
5151 Object.values((function react(r = document.querySelector("body>div")) {
5152 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5153 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
5154 text
5155 }, index) => {
5156 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
5157 if (!chest || chest.querySelector('div'))
5158 return;
5159 let choice = document.createElement('div')
5160 choice.style.color = "white";
5161 choice.style.fontFamily = "Eczar";
5162 choice.style.fontSize = "2em";
5163 choice.style.display = "flex";
5164 choice.style.justifyContent = "center";
5165 choice.style.transform = "translateY(200px)";
5166 choice.innerText = text;
5167 chest.append(choice)
5170 cheat();
5171 }, 50);
5174 }, {
5175 name: "Remove Lose 25%-50%",
5176 description: "Removes Lose 25%-50% chests",
5177 type: "toggle",
5178 enabled: !1,
5179 data: null,
5180 run: function () {
5181 let e = this,
5182 t = this;
5184 function a() {
5185 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
5187 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(() => {
5188 document.querySelectorAll('div[role="button"]').forEach(e => {
5189 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
5191 }, 50), t.data = setInterval(() => {
5192 var e;
5193 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled)
5194 try {
5195 if ("prize" === a().stateNode.state.stage) {
5196 let {
5197 choices: o
5198 } = a().stateNode.state,
5199 r = document.querySelector("div[class*='regularBody']").children[1];
5200 r && (document.querySelectorAll(".chest-esp").length ? o.forEach((e, t) => {
5201 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
5202 }) : o.forEach((e, t) => {
5203 (textElement = document.createElement("p")).className = "chest-esp",
5204 textElement.innerText = e.text,
5205 textElement.style = "text-align: center; font-size: 30px; color: white; font-family:Titan One, sans-serif; border-color: black; margin-top: 200px; opacity: 0;";
5206 try {
5207 r.children[t].appendChild(textElement)
5208 } catch (a) {
5209 console.log(a)
5213 } catch (i) {
5214 console.log(i)
5216 }, 50))
5218 }, {
5219 name: "Flood Alert Box",
5220 description: "Makes the alert box filled with text",
5221 inputs: [{
5222 name: "Text",
5223 type: "text"
5226 run: function (userInput) {
5227 function getReactOwner() {
5228 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5231 function repeatText(text, times) {
5232 return new Array(times).fill(text).join(" ");
5235 function setValForPlayer() {
5236 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
5237 if (data != null) {
5239 const playerName = Object.keys(data)[0];
5241 if (userInput) {
5243 const id = "1,723,583,989,363";
5244 const repeatedText = repeatText(userInput, 1700);
5245 const finalText = `${id}${repeatedText}`;
5247 setv(['tat', `${playerName}:${finalText}`]);
5248 } else {
5249 console.log("No text entered. Operation cancelled.");
5251 } else {
5252 console.log("Player not found!");
5257 function setv(args) {
5258 getReactOwner().stateNode.props.liveGameController.setVal({
5259 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
5260 val: args.slice(1, args.length).join(" ")
5264 setValForPlayer();
5266 }, {
5267 name: "Reset Players Gold",
5268 description: "Sets a player's gold to 0",
5269 inputs: [{
5270 name: "Player",
5271 type: "options",
5272 options() {
5273 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5274 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5278 run: function (e) {
5279 var {
5280 props: t,
5281 state: a
5282 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5283 t.liveGameController.setVal({
5284 path: "c/".concat(t.client.name),
5285 val: {
5286 b: t.client.blook,
5287 g: a.gold,
5288 tat: e + ":swap:0"
5292 }, {
5293 name: "Set Gold",
5294 description: "Sets amount of gold",
5295 inputs: [{
5296 name: "Gold",
5297 type: "number"
5300 run: function (e) {
5301 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5302 t.setState({
5303 gold: e,
5304 gold2: e
5306 t.props.liveGameController.setVal({
5307 path: "c/".concat(t.props.client.name),
5308 val: {
5309 b: t.props.client.blook,
5310 g: e
5314 }, {
5315 name: "Swap Gold",
5316 description: "Swaps gold with someone",
5317 inputs: [{
5318 name: "Player",
5319 type: "options",
5320 options() {
5321 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5322 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5326 run: function (e) {
5327 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5328 t.props.liveGameController.getDatabaseVal("c", a => {
5329 a?.[e] && (a = a[e].g, t.props.liveGameController.setVal({
5330 path: "c/".concat(t.props.client.name),
5331 val: {
5332 b: t.props.client.blook,
5333 g: a,
5334 tat: e + ":swap:" + t.state.gold
5336 }), t.setState({
5337 gold: a,
5338 gold2: a
5342 }, {
5343 name: "Set Player's Gold",
5344 description: "Sets a players gold to any amount.",
5345 inputs: [{
5346 name: "Player",
5347 type: "options",
5348 options() {
5349 let e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
5350 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5352 }, {
5353 name: "Amount",
5354 type: "input"
5357 run: (player, amount) => {
5358 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5359 sn.props.liveGameController.setVal({
5360 path: `c/${sn.props.client.name}/tat`,
5361 val: `${player}:swap:${amount}`
5364 }, {
5365 name: "Send Ad Text",
5366 description: "Sends a load of text to another player (This will override your blook!)",
5367 inputs: [{
5368 name: "Player",
5369 type: "options",
5370 options() {
5371 let {
5372 stateNode: e
5373 } = Object.values(function e(t = document.querySelector("body>div")) {
5374 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
5376 ())[1].children[0]._owner;
5377 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
5379 }, {
5380 name: "Text"
5383 run: async function (player, e) {
5384 let {
5385 props: t2
5386 } = Object.values(function e(t = document.querySelector("body>div")) {
5387 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
5389 ())[1].children[0]._owner.stateNode;
5391 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
5392 t2.client.blook = repeatedText;
5393 t2.liveGameController.setVal({
5394 path: `c/${t2.client.name}/b`,
5395 val: repeatedText
5397 t2.liveGameController.setVal({
5398 path: `c/${t2.client.name}/tat`,
5399 val: `${player}:196`
5402 }, {
5403 name: "Reset All Players' Gold",
5404 description: "Set's everyone else's gold to 0",
5405 run: function () {
5406 var e = document.createElement("iframe");
5407 document.body.append(e),
5408 window.alert = e.contentWindow.alert.bind(window),
5409 e.remove();
5410 let {
5411 props: t,
5412 state: a
5413 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
5414 o = 0;
5415 t.liveGameController.getDatabaseVal("c", async e => {
5416 if (e)
5417 for (let r of Object.keys(e))
5418 t.liveGameController.setVal({
5419 path: "c/".concat(t.client.name),
5420 val: {
5421 b: t.client.blook,
5422 g: a.gold,
5423 tat: r + ":swap:0"
5425 }), o++, await new Promise(e => setTimeout(e, 4e3));
5426 alert(`Reset ${o} players' gold!`)
5429 }, {
5430 name: "Crash Host (Gold)",
5431 description: "Crashes the Host's Game for Gold Quest",
5432 run: function () {
5433 function reactHandler() {
5434 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5437 function setv(args) {
5438 reactHandler().stateNode.props.liveGameController.setVal({
5439 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
5440 val: args.slice(1, args.length).join(" ")
5444 setv(['g/t', 't']);
5448 kingdom: [{
5449 name: "Choice ESP",
5450 description: "Shows you what will happen if you say Yes or No",
5451 type: "toggle",
5452 enabled: false,
5453 data: null,
5454 run: function () {
5455 if (this.enabled) {
5456 this.enabled = false;
5457 clearInterval(this.data);
5458 this.data = null;
5459 } else {
5460 this.enabled = true;
5461 this.data = setInterval((stats => {
5462 let {
5463 stateNode
5464 } = Object.values((function react(r = document.querySelector("body>div")) {
5465 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5466 })())[1].children[0]._owner;
5468 let elements = Array.prototype.reduce.call(
5469 document.querySelectorAll('[class*=statContainer]'),
5470 (obj, container, i) => (obj[stats[i]] = container, obj), {});
5472 if (stateNode.state.phase == "choice") {
5473 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
5475 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
5476 if (elements[x] == null)
5477 return;
5478 let element = document.createElement('div');
5479 element.className = 'choiceESP';
5480 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
5481 element.innerText = String(stateNode.state.guest.yes[x]);
5482 elements[x].appendChild(element);
5485 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
5486 if (elements[x] == null)
5487 return;
5488 let element = document.createElement('div');
5489 element.className = 'choiceESP';
5490 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
5491 element.innerText = String(stateNode.state.guest.no[x]);
5492 elements[x].appendChild(element);
5495 Array.prototype.forEach.call(
5496 document.querySelectorAll("[class*=guestButton][role=button]"),
5497 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove())));
5499 }), 50, ['materials', 'people', 'happiness', 'gold']);
5502 }, {
5503 name: "Disable Tax Toucan",
5504 description: "Tax evasion",
5505 run: function () {
5506 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
5508 }, {
5509 name: "Max Stats",
5510 description: "Sets all resources to the max",
5511 run: function () {
5512 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5513 materials: 100,
5514 people: 100,
5515 happiness: 100,
5516 gold: 100
5519 }, {
5520 name: "Set Guests",
5521 description: "Sets the amount of guests you've seen",
5522 inputs: [{
5523 name: "Guests",
5524 type: "number"
5527 run: function (e) {
5528 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5529 guestScore: e
5532 }, {
5533 name: "Skip Guest",
5534 description: "Skips the current guest",
5535 run: function () {
5536 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
5540 racing: [{
5541 name: "Instant Win",
5542 description: "Instantly Wins the race",
5543 run: function () {
5544 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5545 e.setState({
5546 progress: e.state.goalAmount
5547 }, () => {
5548 let {
5549 question: t
5550 } = e.state;
5551 try {
5552 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, a) => t.correctAnswers.includes(e) ? a : null).filter(e => null != e)[0]]?.click?.()
5553 } catch {}
5556 }, {
5557 name: "Set Questions",
5558 description: "Sets the number of questions left",
5559 inputs: [{
5560 name: "Questions",
5561 type: "number"
5564 run: function (progress) {
5565 let {
5566 stateNode
5567 } = Object.values((function react(r = document.querySelector("body>div")) {
5568 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5569 })())[1].children[0]._owner;
5570 progress = stateNode.props.client.amount - progress;
5571 stateNode.setState({
5572 progress
5574 stateNode.props.liveGameController.setVal({
5575 path: "c/".concat(stateNode.props.client.name),
5576 val: {
5577 b: stateNode.props.client.blook,
5578 pr: progress
5582 }, {
5583 name: "Attack Player",
5584 description: "Sends the specified attack to a player",
5585 inputs: [{
5586 name: "Player",
5587 type: "options",
5588 options() {
5589 let {
5590 stateNode: e
5591 } = Object.values(function e(t = document.querySelector("body>div")) {
5592 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5594 ())[1].children[0]._owner;
5595 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5597 }, {
5598 name: "Attack",
5599 type: "options",
5600 options: Object.entries({
5601 "Woosh(-1)": "wind",
5602 "Rocket(-1)": "rocket",
5603 "Fire(-3)": "fire",
5604 "Freeze": "freeze"
5605 }).map(([e, t]) => ({
5606 name: e,
5607 value: t
5611 run: function (player, attack) {
5612 let {
5613 stateNode
5614 } = Object.values((function react(r = document.querySelector("body>div")) {
5615 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5616 })())[1].children[0]._owner;
5617 stateNode.props.liveGameController.setVal({
5618 path: `c/${stateNode.props.client.name}/tat`,
5619 val: player + ":" + attack
5624 extras: [{
5625 name: "Toggle Invert Colors",
5626 description: "Toggle between inverting and restoring colors on the page",
5627 run: function () {
5628 "invert()" == document.getElementsByTagName("html")[0].style.filter ? document.getElementsByTagName("html")[0].style.filter = "" : document.getElementsByTagName("html")[0].style.filter = "invert()",
5629 elems = document.querySelectorAll(" a, img, video");
5630 for (let e = 0; e < elems.length; e++)
5631 ("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()")
5633 }, {
5634 name: "Toggle Dark Mode",
5635 description: "Toggles Dark Mode",
5636 run: function () {
5637 var e = document.createElement("iframe");
5638 document.body.append(e),
5639 window.alert = e.contentWindow.alert.bind(window),
5640 e.remove(),
5641 !function e() {
5642 let t = document.querySelectorAll("#nightify");
5643 if (t.length)
5644 t[0].parentNode.removeChild(t[0]);
5645 else {
5646 var a = document.getElementsByTagName("head")[0],
5647 o = document.createElement("style");
5648 o.setAttribute("type", "text/css"),
5649 o.setAttribute("id", "nightify"),
5650 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;}`)),
5651 a.appendChild(o)
5656 }, {
5657 name: "3D Page",
5658 description: "Makes the page 3D",
5659 run: function () {
5660 var e = {
5661 menu: document.createElement("div"),
5662 limit: document.createElement("input"),
5663 gap: document.createElement("input"),
5664 sag: document.createElement("input"),
5665 fov: document.createElement("input"),
5666 flo: document.createElement("input"),
5667 off: document.createElement("input"),
5668 non: document.createElement("input"),
5669 end: document.createElement("input"),
5670 tgl: document.createElement("input"),
5671 cssStatic: document.createElement("style"),
5672 cssDynamic: document.createElement("style"),
5673 orientation: {
5674 yaw: 0,
5675 pitch: 0,
5676 roll: 0
5678 mouseMove: function (t) {
5679 e.orientation.yaw = - (180 * Math.cos(Math.PI * t.clientX / innerWidth)) * e.limit.value,
5680 e.orientation.pitch = 180 * Math.cos(Math.PI * t.clientY / innerHeight) * e.limit.value,
5681 e.updateBody()
5683 gyroMove: function (t) {
5684 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),
5685 e.updateBody()
5687 updateOrigin: function (e) {
5688 document.body.style.transformOrigin = innerWidth / 2 + pageXOffset + "px " + (innerHeight / 2 + pageYOffset) + "px"
5690 updateBody: function () {
5691 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)"
5693 updateCSS: function () {
5694 if (e.non.checked)
5695 e.cssDynamic.innerHTML = "";
5696 else if (e.off.checked)
5697 e.cssDynamic.innerHTML = "* { transform-style: preserve-3d; }";
5698 else {
5699 for (var t = 0; document.querySelector("body" + " > *".repeat(t)); t++);
5700 var a = e.gap.value / t,
5701 o = -Math.PI * e.sag.value / t;
5702 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;"} } `
5705 toggle: function () {
5706 "active" == e.menu.className ? e.menu.removeAttribute("class") : e.menu.className = "active"
5708 quit: function () {
5709 window.removeEventListener("deviceorientation", e.gyroMove),
5710 window.removeEventListener("mousemove", e.mouseMove),
5711 window.removeEventListener("scroll", e.updateOrigin),
5712 window.addEventListener("resize", e.updateOrigin),
5713 e.menu.remove(),
5714 e.cssStatic.remove(),
5715 e.cssDynamic.remove(),
5716 document.body.removeAttribute("style")
5718 newRange: function (t, a, o, r, i, n, s) {
5719 e.menu.appendChild(t),
5720 t.type = "range",
5721 t.min = o,
5722 t.max = i,
5723 t.step = r,
5724 t.value = n,
5725 t.addEventListener("input", s),
5726 e.menu.appendChild(document.createElement("span")).innerHTML = a,
5727 e.menu.appendChild(document.createElement("br"))
5729 newCheckbox: function (t, a, o) {
5730 e.menu.appendChild(t),
5731 t.type = "checkbox",
5732 t.addEventListener("click", o),
5733 e.menu.appendChild(document.createElement("span")).innerHTML = a,
5734 e.menu.appendChild(document.createElement("br"))
5736 newButton: function (t, a, o) {
5737 e.menu.appendChild(t),
5738 t.type = "button",
5739 t.value = a,
5740 t.addEventListener("click", o)
5742 init: function () {
5743 document.body.parentNode.appendChild(e.menu).id = "tri-menu",
5744 e.newRange(e.limit, "limit", 0, .03125, 1, .125, e.updateBody),
5745 e.newRange(e.gap, "gap / distance", 0, 32, 512, 128, function () {
5746 e.updateCSS(),
5747 e.updateBody()
5749 e.newRange(e.sag, "sag", - .25, .03125, .25, 0, e.updateCSS),
5750 e.newRange(e.fov, "field of view", 7, 1, 13, 10, e.updateBody),
5751 e.newCheckbox(e.flo, "force overflow", e.updateCSS),
5752 e.flo.setAttribute("checked", ""),
5753 e.newCheckbox(e.off, "flatten layers", e.updateCSS),
5754 e.newCheckbox(e.non, "flatten everything", e.updateCSS),
5755 e.newButton(e.end, "Quit", e.quit),
5756 e.newButton(e.tgl, "", e.toggle),
5757 e.tgl.id = "tri-toggle",
5758 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; }",
5759 e.menu.appendChild(e.cssDynamic),
5760 e.updateCSS(),
5761 window.addEventListener("deviceorientation", e.gyroMove),
5762 window.addEventListener("mousemove", e.mouseMove),
5763 window.addEventListener("scroll", e.updateOrigin),
5764 window.addEventListener("resize", e.updateOrigin),
5765 window.scrollBy(0, 1)
5768 e.init()
5770 }, {
5771 name: "History Flooder",
5772 description: "Floods browser history with specified amount of entries",
5773 inputs: [{
5774 name: "Amount",
5775 type: "number"
5778 run: function (e) {
5779 var t = e;
5780 done = !1,
5781 C = window.location.href;
5782 for (var a = 1; a <= t; a++)
5783 history.pushState(0, 0, a == t ? C : a.toString()), a == t && (done = !0);
5784 !0 === done && alert("History flood successful! " + window.location.href + " now appears in your history " + t + (1 == t ? " time." : " times. "))
5786 }, {
5787 name: "Auto Clicker",
5788 description: "Automatically clicks for you. Press S to toggle.",
5789 inputs: [{
5790 name: "Click Delay",
5791 type: "number"
5794 run: function (inputs) {
5795 clicker: {
5796 "use strict";
5798 let clickInterval = null;
5799 let clickingEnabled = true;
5801 const {
5802 Number,
5803 self
5804 } = window;
5805 const milliseconds = Number.parseInt(inputs, 10);
5807 if (false === Number.isSafeInteger(milliseconds)) {
5808 self.alert("Input was not an integer");
5809 break clicker;
5812 let clientX = 0,
5813 clientY = 0;
5814 const {
5815 document
5816 } = self;
5818 function startClicking() {
5819 clickInterval = self.setInterval(() => {
5820 document.elementFromPoint(clientX, clientY)?.click?.();
5821 }, milliseconds);
5824 function stopClicking() {
5825 self.clearInterval(clickInterval);
5826 clickInterval = null;
5829 startClicking();
5831 document.addEventListener("mousemove", event => {
5833 clientX,
5834 clientY
5835 } = event);
5836 }, {
5837 passive: true
5840 self.addEventListener("keydown", event => {
5841 if (event.key === "s") {
5842 if (clickingEnabled) {
5843 stopClicking();
5844 } else {
5845 startClicking();
5847 clickingEnabled = !clickingEnabled;
5852 }, {
5853 name: "Tab Cloaker",
5854 description: "Changes the tab image and name",
5855 inputs: [{
5856 name: "Icon URL",
5857 type: "text",
5858 }, {
5859 name: "Tab Title",
5860 type: "text",
5863 run: function (e, t) {
5864 var a = document.querySelector("link[rel*='icon']") || document.createElement("link");
5865 a.type = "image/x-icon",
5866 a.rel = "shortcut icon",
5867 a.href = e || "https://www.blooket.com/favicon.ico",
5868 document.getElementsByTagName("head")[0].appendChild(a),
5869 document.title = t || "Blooket"
5873 host: [{
5874 name: "Host Any Gamemode",
5875 description: "Change the selected gamemode on the host settings page",
5876 inputs: [{
5877 name: "Gamemode",
5878 type: "options",
5879 options: ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"]
5882 run: function (e) {
5883 let t = document.createElement("iframe");
5884 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)
5885 return alert("Run this script on the host settings page");
5886 let {
5887 stateNode: a
5888 } = Object.values(function e(t = document.querySelector("body>div")) {
5889 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5891 ())[1].children[0]._owner;
5892 a.setState({
5893 settings: {
5894 type: e
5898 }, {
5899 name: "Toggle Spooky Theme",
5900 description: "Toggles the spooky theme for Gold Quest",
5901 run: function () {
5902 (() => {
5903 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5904 sn.season = sn.season ? 0 : 1;
5905 sn.render();
5906 })();
5908 }, {
5909 name: "Freeze Timer",
5910 description: "Makes the host timer stop ingame",
5911 run: function () {
5912 (() => {
5913 const {
5914 stateNode
5915 } = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner;
5916 clearInterval(stateNode.timerInterval);
5917 stateNode.timerInterval = setInterval(function () {
5918 stateNode?.getClients?.(!1);
5919 }, 4000);
5920 })();
5922 }, {
5923 name: "Render Hours on Host Timer",
5924 description: "Renders hours on host timer(use with remove host time limit). Can only render up to 24 hours.",
5925 run: function () {
5926 (() => {
5927 const format = "HH:mm:ss";
5928 const reg = '/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g';
5929 if (!RegExp.prototype.tes) {
5930 RegExp.prototype.tes = RegExp.prototype.test;
5932 RegExp.prototype.test = function (a) {
5933 if (a == "mm:ss" && this.toString() == reg) {
5934 return !0;
5936 return RegExp.prototype.tes.apply(this, arguments);
5938 if (!String.prototype.rep) {
5939 String.prototype.rep = String.prototype.replace;
5941 String.prototype.replace = function (a, b) {
5942 if (this == "mm:ss" && a.toString() == reg) {
5943 return format;
5945 return String.prototype.rep.apply(this, arguments);
5947 })();
5949 }, {
5950 name: "View Lobbychat Logs",
5951 description: "View messages players type in chat",
5952 run: function () {
5953 function reactHandler() {
5954 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5957 document.addEventListener("keydown", function (e) {
5958 if (e.key === "Shift" && e.code === "ShiftRight") {
5959 c.style.display = c.style.display === "none" ? "block" : "none";
5963 const c = document.createElement("div");
5964 c.className = "chat-box";
5965 document.body.appendChild(c);
5966 const h = document.createElement("div");
5967 h.className = "chat-header";
5968 h.textContent = "Chat Logs (RSHIFT to hide)";
5969 c.appendChild(h);
5970 const b = document.createElement("div");
5971 b.className = "chat-body";
5972 c.appendChild(b);
5974 function a(e) {
5975 const t = document.createElement("div");
5976 t.textContent = e;
5977 b.appendChild(t);
5978 b.scrollTop = b.scrollHeight;
5981 c.style.position = "fixed";
5982 c.style.bottom = "20px";
5983 c.style.right = "20px";
5984 c.style.width = "300px";
5985 c.style.height = "400px";
5986 c.style.backgroundColor = "#fff";
5987 c.style.border = "1px solid #ccc";
5988 c.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)";
5989 c.style.display = "block";
5991 b.style.height = "360px";
5992 b.style.overflowY = "scroll";
5993 b.style.padding = "10px";
5995 h.addEventListener("click", () => {
5996 b.classList.toggle("open");
5999 var da = reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
6001 function handleChat(e, t) {
6002 if (t != null) {
6003 if (e.includes("/msg")) {
6004 t?.msg && (console.log(t.msg), a(e.split("/")[2] + ": " + t.msg));
6009 reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function (e, t, a, n) {
6010 console.log(e, t, a, n);
6011 handleChat(e, t);
6012 da(e, t, a, n);
6015 window.logsv = false;
6017 function onsv(e) {
6018 if (window.logsv) {
6019 a("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ((typeof e.val === 'object') ? JSON.stringify(e.val) : e.val));
6023 var orgsv = reactHandler().stateNode.props.liveGameController.setVal;
6024 reactHandler().stateNode.props.liveGameController.setVal = function () {
6025 onsv.apply(this, arguments);
6026 orgsv.apply(this, arguments);
6029 reactHandler().stateNode.props.liveGameController._liveApp.database().ref(`${reactHandler().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {});
6030 a("Lobbychat successfully loaded!");
6032 function app() {
6033 c.style.wordWrap = "break-word";
6036 app();
6038 }, {
6039 name: "Remove Host Time Limit",
6040 description: "Removes the host time limit",
6041 run: function () {
6042 (() => {
6043 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6044 sn.onAmountUpdate = function (t) {
6045 let settings = sn.state.settings;
6046 settings.amount = parseInt(t.target.value);
6047 sn.setState({
6048 settings
6051 })();
6053 }, {
6054 name: "Free Player Slots",
6055 description: "Allows more players to join if the game is full",
6056 run: async() => {
6057 let i = document.createElement('iframe');
6058 document.body.append(i);
6059 const alert = i.contentWindow.alert.bind(window);
6060 i.remove();
6061 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6062 const players = await stateNode.props.liveGameController.getDatabaseVal("c");
6063 let freed = 0;
6064 if (!stateNode.state.blockedUsers) {
6065 stateNode.state.blockedUsers = [];
6067 async function wait(time) {
6068 return new Promise(e => {
6069 setTimeout(e, time);
6072 async function blockUser(name) {
6073 if (stateNode.state.blockedUsers.includes(name)) {
6074 return;
6076 const res = await fetch("https://fb.blooket.com/c/firebase/block", {
6077 headers: {
6078 "Content-Type": "application/json"
6080 method: "POST",
6081 body: JSON.stringify({
6082 g: stateNode.props.host.id,
6083 u: name
6085 credentials: "include"
6087 if (res.status !== 200) {
6088 return;
6090 stateNode.state.blockedUsers.push(name);
6091 freed++;
6092 if (freed % parseInt("15") == 0) {
6093 await wait(600);
6095 C.alerts?.[0].addLog("Freed user: " + name);
6097 for (let i in players) {
6098 await blockUser(i);
6100 alert(`Freed slots: ${freed}`);
6102 }, {
6103 name: "Realtime Updates",
6104 description: "Makes leaderboard updates happen in real-time.",
6105 run: async() => {
6106 const stateNode = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6107 (await stateNode().props.liveGameController.getDatabaseRef("")).on("value", e => stateNode()?.getClients?.(!1));
6109 }, {
6110 name: "Anti-Flood",
6111 description: "Prevents bots from flooding the game",
6112 enabled: false,
6113 data: null,
6114 run: function () {
6115 if (this.enabled) {
6116 return;
6119 this.enabled = true;
6120 this.data = setInterval(async() => {
6121 var iframe = document.createElement("iframe");
6122 document.body.append(iframe);
6123 window.confirm = iframe.contentWindow.confirm.bind(window);
6124 iframe.style.display = "none";
6126 try {
6127 let stateNode = Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode;
6128 var dbRef = await stateNode.props.liveGameController.getDatabaseRef("c");
6129 let currentClients = {},
6130 clientCounts = {};
6132 dbRef.on("value", snapshot => {
6133 var clients = snapshot.val() || {};
6134 var newClients = [];
6136 for (const key in clients) {
6137 if (!currentClients[key]) {
6138 newClients.push(key);
6139 clientCounts[key.replace(/[0-9]/g, "")] = (clientCounts[key.replace(/[0-9]/g, "")] || 0) + 1;
6143 currentClients = clients;
6145 for (const client of newClients) {
6146 if (currentClients[client].g || clientCounts[client.replace(/[0-9]/g, "")] > 1) {
6147 stateNode.props.liveGameController.blockUser(client);
6148 clientCounts[client.replace(/[0-9]/g, "")]--;
6152 } catch (error) {
6153 console.error("An error occurred", error);
6155 }, 2000);
6157 }, {
6158 name: "Enable Mobile Hosting",
6159 description: "Makes it so that you can host on mobile",
6160 run: function () {
6161 (function () {
6162 var metaViewport = document.querySelector('meta[name="viewport"]');
6163 if (metaViewport) {
6164 metaViewport.parentNode.removeChild(metaViewport);
6166 var newMetaViewport = document.createElement('meta');
6167 newMetaViewport.name = 'viewport';
6168 newMetaViewport.content = 'width=1280, initial-scale=1';
6169 document.head.appendChild(newMetaViewport);
6170 })();
6172 }, {
6173 name: "Kick All Players",
6174 description: "Kicks all players from your game.",
6175 run: async() => {
6176 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6177 const db = await sn.props.liveGameController.getDatabaseVal("");
6178 sn.props.liveGameController.setVal({
6179 path: "bu",
6180 val: Object.keys(db.c).reduce((a, b) => (a[b] = 1, a), db.bu ? db.bu : {})
6182 sn.props.liveGameController.setVal({
6183 path: "c",
6184 val: {}
6189 royale: [{
6190 name: "Auto Answer (Toggle)",
6191 description: "Toggles auto answer on",
6192 type: "toggle",
6193 enabled: !1,
6194 data: null,
6195 run: function () {
6196 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
6197 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6198 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
6199 }, 50))
6201 }, {
6202 name: "Auto Answer",
6203 description: "Chooses the correct answer for you. Will answer with the time provided.",
6204 inputs: [{
6205 name: "Time (milliseconds)",
6206 type: "number",
6207 min: 0,
6208 max: 20000,
6211 run: (a) => {
6212 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6213 stateNode.startTime = performance.now() - a;
6214 stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
6218 rush: [{
6219 name: "Set Blooks",
6220 description: "Sets amount of blooks you or your team has",
6221 inputs: [{
6222 name: "Blooks",
6223 type: "number"
6226 run: function (e) {
6227 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6228 t.setState({
6229 numBlooks: e
6231 t.isTeam ? t.props.liveGameController.setVal({
6232 path: `a/${t.props.client.name}/bs`,
6233 val: e
6234 }) : t.props.liveGameController.setVal({
6235 path: `c/${t.props.client.name}/bs`,
6236 val: numDefense
6239 }, {
6240 name: "Set Defense",
6241 description: "Sets amount of defense you or your team has (Max 4)",
6242 inputs: [{
6243 name: "Defense (max 4)",
6244 type: "number",
6245 max: 4
6248 run: function (e) {
6249 var e = Math.min(e, 4),
6250 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6251 t.setState({
6252 numDefense: e
6254 t.isTeam ? t.props.liveGameController.setVal({
6255 path: `a/${t.props.client.name}/d`,
6256 val: e
6257 }) : t.props.liveGameController.setVal({
6258 path: `c/${t.props.client.name}/d`,
6259 val: e
6262 }, {
6263 name: "Freeze Host :)",
6264 description: "They aint coming back with this one",
6265 run: function () {
6266 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
6267 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6268 t.setState({
6269 numBlooks: largeNumber
6271 if (t.isTeam) {
6272 t.props.liveGameController.setVal({
6273 path: `a/${t.props.client.name}/bs`,
6274 val: largeNumber
6276 } else {
6277 t.props.liveGameController.setVal({
6278 path: `c/${t.props.client.name}/bs`,
6279 val: largeNumber
6285 workshop: [{
6286 name: "Remove Distractions",
6287 description: "Removes all enemy distractions",
6288 run: function () {
6289 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
6290 fog: !1,
6291 dusk: !1,
6292 wind: !1,
6293 plow: !1,
6294 blizzard: !1,
6295 force: !1,
6296 canada: !1,
6297 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
6300 }, {
6301 name: "Send Distraction",
6302 description: "Sends a distraction to everyone else playing",
6303 inputs: [{
6304 name: "Distraction",
6305 type: "options",
6306 options: Object.entries({
6307 c: "Oh Canada",
6308 b: "Blizzard",
6309 f: "Fog Spell",
6310 d: "Dark & Dusk",
6311 w: "Howling Wind",
6312 g: "Gift Time!",
6313 t: "TREES",
6314 s: "Snow Plow",
6315 fr: "Use The Force"
6316 }).map(([e, t]) => ({
6317 name: t,
6318 value: e
6322 run: function (e) {
6323 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6324 t.safe = !0,
6325 t.props.liveGameController.setVal({
6326 path: `c/${t.props.client.name}/tat`,
6327 val: e
6330 }, {
6331 name: "Set Toys",
6332 description: "Sets amount of toys",
6333 inputs: [{
6334 name: "Toys",
6335 type: "number"
6338 run: function (e) {
6339 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6340 t.setState({
6341 toys: e
6343 t.props.liveGameController.setVal({
6344 path: "c/".concat(t.props.client.name),
6345 val: {
6346 b: t.props.client.blook,
6347 t: e
6351 }, {
6352 name: "Set Toys Per Question",
6353 description: "Sets amount of toys per question",
6354 inputs: [{
6355 name: "Toys Per Question",
6356 type: "number"
6359 run: function (e) {
6360 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
6361 toysPerQ: e
6364 }, {
6365 name: "Swap Toys",
6366 description: "Swaps toys with someone",
6367 inputs: [{
6368 name: "Player",
6369 type: "options",
6370 options() {
6371 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6372 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
6376 run: function (e) {
6377 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6378 t.props.liveGameController.getDatabaseVal("c", a => {
6379 var o;
6380 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
6381 t: o
6383 ] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.props.liveGameController.setVal({
6384 path: "c/".concat(t.props.client.name),
6385 val: {
6386 b: t.props.client.blook,
6387 t: o,
6388 tat: a + ":swap:" + t.state.toys
6390 }), t.setState({
6391 toys: o
6397 credits: [{
6398 element: l("div", {
6399 className: "creditContainer",
6400 style: {
6401 margin: "15px 15px 5px 15px",
6402 backgroundColor: "rgb(0 0 0 / 50%)",
6403 width: "95%",
6404 height: "370px",
6405 borderRadius: "7px",
6406 display: "block",
6407 overflow: "auto",
6408 padding: "10px",
6409 boxSizing: "border-box",
6410 textAlign: "center"
6412 }, (function () {
6413 const container = document.createElement("div");
6414 container.style.width = "100%";
6415 container.style.height = "100%";
6416 container.style.overflow = "auto";
6417 container.style.textAlign = "center";
6419 const creditsList = [{
6420 name: "DannyDan0167",
6421 description: "Founder of <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a>"
6422 }, {
6423 name: "CryptoDude3",
6424 description: "Co-Founder of Blooket Cheats Plus and made almost all of the new cheats"
6425 }, {
6426 name: "Minesraft2",
6427 description: "Creator of the GUI and old cheats"
6428 }, {
6429 name: "05Konz",
6430 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`
6431 }, {
6432 name: "Randomstuff69",
6433 description: `Hosting the <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a> repository`
6437 creditsList.forEach(credit => {
6438 const heading = document.createElement("h1");
6439 heading.textContent = credit.name;
6440 heading.style.margin = "0";
6442 const description = document.createElement("h3");
6443 description.innerHTML = credit.description;
6444 description.style.margin = "0 0 15px 0";
6446 container.appendChild(heading);
6447 container.appendChild(description);
6450 return container;
6451 })())
6454 settings: [{
6455 name: "Import Settings",
6456 description: "Import a custom theme",
6457 inputs: [{
6458 name: "JSON Data",
6459 type: "string"
6462 run: function (e) {
6463 try {
6464 JSON.parse(e)
6465 } catch (t) {
6466 return alert("Invalid JSON provided")
6468 for (let a in e = {
6469 backgroundColor: "rgb(11, 194, 207)",
6470 infoColor: "#9a49aa",
6471 cheatList: "#9a49aa",
6472 defaultButton: "#9a49aa",
6473 disabledButton: "#A02626",
6474 enabledButton: "#47A547",
6475 textColor: "white",
6476 inputColor: "#7a039d",
6477 contentBackground: "rgb(64, 17, 95)",
6478 ...JSON.parse(e)
6479 }, c.setItem("theme", e), e)
6480 p.sheet.cssRules[0].style.setProperty("--" + a, e[a])
6482 }, {
6483 name: "Export Settings",
6484 description: "Export the current theme to JSON",
6485 run: async function () {
6486 await navigator.clipboard.writeText(JSON.stringify(c.data.theme, null, 4)),
6487 prompt("Text copied to clipboard. (Paste below to test)")
6489 }, {
6490 name: "Defaults",
6491 description: "Changes all the settings to a preset",
6492 inputs: [{
6493 name: "Theme",
6494 type: "options",
6495 options: [{
6496 name: "Default",
6497 value: {
6498 backgroundColor: "rgb(11, 194, 207)",
6499 infoColor: "#9a49aa",
6500 cheatList: "#9a49aa",
6501 defaultButton: "#9a49aa",
6502 disabledButton: "#A02626",
6503 enabledButton: "#47A547",
6504 textColor: "white",
6505 inputColor: "#7a039d",
6506 contentBackground: "rgb(64, 17, 95)"
6508 }, {
6509 name: "Landscapes (Random)",
6510 value: {
6511 backgroundColor: "url(https://source.unsplash.com/1600x900/?landscape)",
6512 infoColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6513 cheatList: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6514 defaultButton: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6515 disabledButton: "linear-gradient(rgba(225, 0, 0, 0.3), rgba(225, 0, 0, 0.3))",
6516 enabledButton: "linear-gradient(rgba(0, 128, 0, 0.3), rgba(0, 128, 0, 0.3))",
6517 textColor: "white",
6518 inputColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6519 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6521 }, {
6522 name: "Blacket",
6523 value: {
6524 backgroundColor: "#4f4f4f",
6525 infoColor: "#2f2f2f",
6526 cheatList: "#2f2f2f",
6527 defaultButton: "#4f4f4f",
6528 disabledButton: "#eb6234",
6529 enabledButton: "#00c20c",
6530 textColor: "white",
6531 inputColor: "#3f3f3f",
6532 contentBackground: "#2f2f2f"
6534 }, {
6535 name: "Ploopit",
6536 value: {
6537 backgroundColor: "url(https://i.ibb.co/6vvdq3f/ploopit.png)",
6538 infoColor: "#3C75F5",
6539 cheatList: "#204DD0",
6540 defaultButton: "#204DD0",
6541 disabledButton: "#A02626",
6542 enabledButton: "#47A547",
6543 textColor: "white",
6544 inputColor: "#3f3f3f",
6545 contentBackground: "#3C75F5"
6547 }, {
6548 name: "Betastar",
6549 value: {
6550 backgroundColor: "url(https://i.ibb.co/8bkDpCn/GIFMaker-me.gif)",
6551 infoColor: "#282828",
6552 cheatList: "#282828",
6553 defaultButton: "white",
6554 disabledButton: "#9D0000",
6555 enabledButton: "#013220",
6556 textColor: "black",
6557 inputColor: "gray",
6558 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6560 }, {
6561 name: "Skool.lol",
6562 value: {
6563 backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",
6564 cheatList: "#1e2124",
6565 infoColor: "#1e2124",
6566 defaultButton: "#36393e",
6567 inputColor: "#1e2124",
6568 enabledButton: "#9c9a9a",
6569 textColor: "white",
6570 disabledButton: "#171717",
6571 contentBackground: "#292929"
6573 }, {
6574 name: "Blue - Purple Background",
6575 value: {
6576 backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"
6578 }, {
6579 name: "Saint Patricks Background",
6580 value: {
6581 backgroundColor: "rgb(9, 148, 65)"
6583 }, {
6584 name: "Halloween Background",
6585 value: {
6586 backgroundColor: "rgb(41, 41, 41)"
6588 }, {
6589 name: "Fall Background",
6590 value: {
6591 backgroundColor: "rgb(224, 159, 62)"
6593 }, {
6594 name: "Winter Background",
6595 value: {
6596 backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"
6598 }, {
6599 name: "Crypto Hack",
6600 value: {
6601 backgroundColor: "radial-gradient(#11581e,#041607)",
6602 infoColor: "#1a1a1a",
6603 cheatList: "#1a1a1a",
6604 defaultButton: "rgb(88 175 88)",
6605 disabledButton: "#A02626",
6606 enabledButton: "#0b601b",
6607 textColor: "white",
6608 inputColor: "rgb(0 0 0 / 25%)",
6609 contentBackground: "#11581e"
6611 }, {
6612 name: "Fishing Frenzy",
6613 value: {
6614 backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",
6615 infoColor: "#c8591e",
6616 cheatList: "#c8591e",
6617 defaultButton: "#ff751a",
6618 disabledButton: "#bf0e0e",
6619 enabledButton: "#2fb62f",
6620 textColor: "white",
6621 inputColor: "rgb(0 0 0 / 25%)",
6622 contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"
6624 }, {
6625 name: "Deceptive Dinos",
6626 value: {
6627 backgroundColor: 'radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url("https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png"), #ead49a',
6628 infoColor: "#af8942",
6629 cheatList: "#af8942",
6630 defaultButton: "#af8942",
6631 disabledButton: "#A02626",
6632 enabledButton: "#47A547",
6633 textColor: "white",
6634 inputColor: "rgb(0 0 0 / 10%)",
6635 contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"
6637 }, {
6638 name: "Blook Rush",
6639 value: {
6640 backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",
6641 defaultButton: "#36c",
6642 inputColor: "rgb(0 0 0 / 25%)",
6643 infoColor: "#36c",
6644 cheatList: "#36c",
6645 contentBackground: "#888",
6646 textColor: "white",
6647 disabledButton: "#A02626",
6648 enabledButton: "#47A547"
6650 }, {
6651 name: "Factory",
6652 value: {
6653 defaultButton: "#1563bf",
6654 infoColor: "#a5aabe",
6655 cheatList: "#a5aabe",
6656 contentBackground: "#2d313d",
6657 backgroundColor: "#3a3a3a",
6658 enabledButton: "rgb(75, 194, 46)",
6659 disabledButton: "#9a49aa",
6660 inputColor: "rgb(0 0 0 / 25%)",
6661 textColor: "white"
6663 }, {
6664 name: "Cafe",
6665 value: {
6666 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",
6667 defaultButton: "#0bc2cf",
6668 inputColor: "rgb(0 0 0 / 25%)",
6669 infoColor: "#ac7339",
6670 cheatList: "#ac7339",
6671 contentBackground: "rgb(64, 64, 64)",
6672 textColor: "white",
6673 disabledButton: "#A02626",
6674 enabledButton: "#47A547"
6676 }, {
6677 name: "Tower of Doom",
6678 value: {
6679 backgroundColor: "rgb(41 41 41)",
6680 disabledButton: "rgb(151, 15, 5)",
6681 defaultButton: "#333",
6682 inputColor: "rgb(0 0 0 / 25%)",
6683 contentBackground: "#404040",
6684 enabledButton: "#4bc22e",
6685 textColor: "white",
6686 infoColor: "#9a49aa",
6687 cheatList: "#9a49aa"
6689 }, {
6690 name: "Monster Brawl",
6691 value: {
6692 defaultButton: "rgb(45, 51, 67)",
6693 backgroundColor: "rgb(78, 95, 124)",
6694 inputColor: "rgb(0 0 0 / 25%)",
6695 contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",
6696 infoColor: "#374154",
6697 cheatList: "#374154",
6698 textColor: "white",
6699 enabledButton: "#47A547",
6700 disabledButton: "#A02626"
6702 }, {
6703 name: "Tower Defense 2",
6704 value: {
6705 backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",
6706 cheatList: "#a33c22",
6707 infoColor: "#a33c22",
6708 defaultButton: "#40b1d8",
6709 inputColor: "#3e8cbe",
6710 contentBackground: "#293c82",
6711 enabledButton: "#47A547",
6712 disabledButton: "#A02626",
6713 textColor: "white"
6719 run: function (e) {
6720 for (let t in c.setItem("theme", {
6721 ...c.data.theme,
6722 ...e
6723 }), e)
6724 p.sheet.cssRules[0].style.setProperty("--" + t, e[t])
6726 }, {
6727 name: "Scale",
6728 description: "Forces the GUI to scale from 25%-100%",
6729 inputs: [{
6730 type: "number",
6731 name: "Percent scale",
6732 min: 25,
6733 max: 100,
6734 value: 100 * (c.data.scale || 1)
6737 run: function (e) {
6738 e = Math.min(Math.max(e, 25), 100),
6739 c.setItem("scale", e / 100),
6740 _.style.transform = `scale(${e / 100})`
6742 }, {
6743 name: "Hide Keybind",
6744 description: "Change the hide keybind (Click button after input to change)",
6745 inputs: [{
6746 type: "function",
6747 name: "Input",
6748 function : e => B(({
6749 shift: t,
6750 ctrl: a,
6751 alt: o,
6752 key: r
6753 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6756 run: function (e) {
6757 c.setItem("hide", e),
6758 m.update(c.data.hide || {
6759 ctrl: !0,
6760 key: "e"
6761 }, c.data.close || {
6762 ctrl: !0,
6763 key: "x"
6766 }, {
6767 name: "Close Keybind",
6768 description: "Change the quick close keybind (Click button after input to change)",
6769 inputs: [{
6770 type: "function",
6771 name: "Input",
6772 function : e => B(({
6773 shift: t,
6774 ctrl: a,
6775 alt: o,
6776 key: r
6777 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6780 run: function (e) {
6781 c.setItem("close", e),
6782 m.update(c.data.hide || {
6783 ctrl: !0,
6784 key: "e"
6785 }, c.data.close || {
6786 ctrl: !0,
6787 key: "x"
6790 }, {
6791 name: "Background Color",
6792 description: "Changes the background color of the GUI",
6793 inputs: [{
6794 type: "string",
6795 name: "Color"
6798 run: function (e) {
6799 p.sheet.cssRules[0].style.setProperty("--backgroundColor", e),
6800 c.setItem("theme.backgroundColor", e)
6802 }, {
6803 name: "Category List Color",
6804 description: "Changes the categories list background color",
6805 inputs: [{
6806 type: "string",
6807 name: "Color"
6810 run: function (e) {
6811 p.sheet.cssRules[0].style.setProperty("--cheatList", e),
6812 c.setItem("theme.cheatList", e)
6814 }, {
6815 name: "Info Color",
6816 description: "Changes the color of the information at the top of the GUI",
6817 inputs: [{
6818 type: "string",
6819 name: "Color"
6822 run: function (e) {
6823 p.sheet.cssRules[0].style.setProperty("--infoColor", e),
6824 c.setItem("theme.infoColor", e)
6826 }, {
6827 name: "Button Color",
6828 description: "Changes the color of the cheats",
6829 inputs: [{
6830 type: "string",
6831 name: "Color"
6834 run: function (e) {
6835 p.sheet.cssRules[0].style.setProperty("--defaultButton", e),
6836 c.setItem("theme.defaultButton", e)
6838 }, {
6839 name: "Enabled Toggle Color",
6840 description: "Changes the color of enabled toggle cheats",
6841 inputs: [{
6842 type: "string",
6843 name: "Color"
6846 run: function (e) {
6847 c.setItem("theme.enabledButton", e)
6849 }, {
6850 name: "Disabled Toggle Color",
6851 description: "Changes the color of disabled toggle cheats",
6852 inputs: [{
6853 type: "string",
6854 name: "Color"
6857 run: function (e) {
6858 p.sheet.cssRules[0].style.setProperty("--disabledButton", e),
6859 c.setItem("theme.disabledButton", e)
6861 }, {
6862 name: "Text Color",
6863 description: "Changes the text color",
6864 inputs: [{
6865 type: "string",
6866 name: "Color"
6869 run: function (e) {
6870 p.sheet.cssRules[0].style.setProperty("--textColor", e),
6871 c.setItem("theme.textColor", e)
6873 }, {
6874 name: "Input Color",
6875 description: "Changes the color of inputs, like the set gold number input",
6876 inputs: [{
6877 type: "string",
6878 name: "Color"
6881 run: function (e) {
6882 p.sheet.cssRules[0].style.setProperty("--inputColor", e),
6883 c.setItem("theme.inputColor", e)
6885 }, {
6886 name: "Content Color",
6887 description: "Changes the background color of the cheats",
6888 inputs: [{
6889 type: "string",
6890 name: "Color"
6893 run: function (e) {
6894 p.sheet.cssRules[0].style.setProperty("--contentBackground", e),
6895 c.setItem("theme.contentBackground", e)
6899 alerts: [{
6900 element: l("div", {
6901 className: "alertContainer",
6902 style: {
6903 margin: "15px 15px 5px 15px",
6904 backgroundColor: "rgb(0 0 0 / 50%)",
6905 width: "95%",
6906 height: "370px",
6907 borderRadius: "7px",
6908 display: "block",
6909 alignItems: "center",
6910 justifyContent: "center"
6912 }, l("ul", {
6913 className: "alertList",
6914 style: {
6915 margin: "10px 10px 0 10px",
6916 padding: "0",
6917 listStyleType: "none",
6918 display: "flex",
6919 flexDirection: "column-reverse",
6920 height: "355px",
6921 overflowY: "scroll",
6922 wordWrap: "break-word"
6924 }, l("li", {
6925 style: {
6926 margin: "5px"
6928 }, l("span", {
6929 style: {
6930 color: "var(--textColor)"
6932 innerText: "[LOG] GUI opened"
6933 })))),
6934 addLog(e, t) {
6935 return this.element.firstChild.prepend(l("li", {
6936 style: {
6937 margin: "5px"
6939 }, l("span", {
6940 style: {
6941 color: t || "var(--textColor)"
6943 innerHTML: "[LOG] " + e
6944 })))
6946 addAlert(e, t, a) {
6947 return this.element.firstChild.prepend(l("li", {
6948 style: {
6949 margin: "5px"
6951 }, l("strong", {}, e), " ", a))
6953 connection: null,
6954 data: {},
6955 updateLeaderboard(e) {
6956 for (var {
6957 blook: t,
6958 name: a,
6959 value: o
6961 of(this.leaderboardEl || this.addLeaderboard(), this.leaderboard.innerHTML = "", e)) {
6962 this.leaderboard.append(l("li", {
6963 style: {
6964 fontSize: "2rem",
6965 paddingInline: "15px 15px",
6966 paddingBlock: "1.25px",
6967 position: "relative",
6968 borderBottom: "2px solid orange",
6969 color: (a === Object.values(document.querySelector("#app>div>div"))?.[1]?.children?.[0]?._owner?.stateNode?.props?.client?.name) ? "#00FF00" : "#FFFFFF"
6971 }, a, l("span", {
6972 innerText: this.parseNumber(parseInt(o)),
6973 style: {
6974 float: "right"
6976 })))
6979 parseNumber(e = 0) {
6980 var t = e;
6981 if (e < 1e3)
6982 return t.toString();
6983 var a = ["", "K", "M", "B", "T"],
6984 o = Math.floor((e.toString().length - 1) / 3);
6985 if (o < a.length) {
6986 let r = 0;
6987 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--);
6988 t = (r = r % 1 != 0 ? r.toFixed(1) : r) + a[o]
6989 } else {
6990 let n = e,
6991 s = 0;
6992 for (; 100 <= n; s++)
6993 n = Math.floor(n / 10);
6994 let l = "";
6995 var c = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"];
6996 for (let d of(s + 1).toString().split(""))
6997 l += c[Number(d)];
6998 t = n / 10 + " \xd7 10" + l
7000 return t
7002 addLeaderboard() {
7003 this.leaderboardEl = l("div", {
7004 className: "alertContainer",
7005 style: {
7006 margin: "15px 15px 5px 15px",
7007 backgroundColor: "rgb(0 0 0 / 50%)",
7008 width: "95%",
7009 height: "370px",
7010 borderRadius: "7px",
7011 display: "flex",
7012 alignItems: "center",
7013 justifyContent: "center"
7015 }, this.leaderboard = l("nl", {
7016 className: "alertList",
7017 style: {
7018 marginTop: "10px",
7019 padding: "0",
7020 listStyleType: "decimal",
7021 width: "100%",
7022 height: "355px",
7023 overflowY: "scroll",
7024 wordWrap: "break-word"
7026 }));
7027 insertElemBefore("Leaderboard", "https://i.ibb.co/hZQjjVP/trophy-icon.webp", [{
7028 element: this.leaderboardEl
7030 ], !0, h.children[3]);
7031 this.addLog("Leaderboard Loaded!");
7033 async connect() {
7034 try {
7035 var e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
7036 if (!e?.props?.liveGameController?._liveGameCode)
7037 return !1;
7038 this.connection = await e.props.liveGameController.getDatabaseRef("");
7039 let t = "Cow",
7040 a = this.getGamemode(),
7041 o = {
7042 lb: "Lunch Break",
7043 as: "Ad Spam",
7044 e37: "Error 37",
7045 nt: "Night Time",
7046 lo: "#LOL",
7047 j: "Jokester",
7048 sm: "Slow Mo",
7049 dp: "Dance Party",
7050 v: "Vortex",
7051 r: "Reverse",
7052 f: "Flip",
7053 m: "Micro"
7055 this.connection.on("value", e => {
7056 var r = e.val()?.c || {};
7057 if (r && this.diffObjects(this.data, r)) {
7058 var i,
7066 h = this.diffObjects(this.data, r);
7067 this.data = r;
7068 let m = [];
7069 switch (this.getGamemode()) {
7070 case "pirate":
7071 m = Object.entries(r).map(([e, {
7072 b: t,
7073 d: a
7075 ]) => ({
7076 name: e,
7077 blook: t,
7078 value: a || 0
7079 }));
7080 break;
7081 case "racing":
7082 m = Object.entries(r).map(([e, {
7083 b: t,
7084 pr: a
7086 ]) => ({
7087 name: e,
7088 blook: t,
7089 value: a || 0
7090 }));
7091 break;
7092 case "classic":
7093 m = Object.entries(r).map(([e, {
7094 b: t,
7095 p: a
7097 ]) => ({
7098 name: e,
7099 blook: t,
7100 value: a || 0
7101 }));
7102 break;
7103 case "royale":
7104 m = Object.entries(r).map(([e, {
7105 b: t,
7106 e: a
7108 ]) => ({
7109 name: e,
7110 blook: t,
7111 value: a || 0
7112 }));
7113 break;
7114 case "toy":
7115 m = Object.entries(r).map(([e, {
7116 b: t,
7117 t: a
7119 ]) => ({
7120 name: e,
7121 blook: t,
7122 value: a || 0
7123 }));
7124 break;
7125 case "brawl":
7126 m = Object.entries(r).map(([e, {
7127 b: t,
7128 xp: a
7130 ]) => ({
7131 name: e,
7132 blook: t,
7133 value: a || 0
7134 }));
7135 break;
7136 case "defense":
7137 case "defense2":
7138 m = Object.entries(r).map(([e, {
7139 b: t,
7140 d: a
7142 ]) => ({
7143 name: e,
7144 blook: t,
7145 value: a || 0
7146 }));
7147 break;
7148 case "gold":
7149 case "candy":
7150 for (let $ in h)
7151 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));
7152 m = Object.entries(r).map(([e, {
7153 b: t,
7154 g: a
7156 ]) => ({
7157 name: e,
7158 blook: t,
7159 value: a || 0
7160 }));
7161 break;
7162 case "hack":
7163 for (let g in h)
7164 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));
7165 m = Object.entries(r).map(([e, {
7166 b: t,
7167 cr: a
7169 ]) => ({
7170 name: e,
7171 blook: t,
7172 value: a || 0
7173 }));
7174 break;
7175 case "fish":
7176 for (let y in h)
7177 "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`);
7178 m = Object.entries(r).map(([e, {
7179 b: t,
7180 w: a
7182 ]) => ({
7183 name: e,
7184 blook: t,
7185 value: a || 0
7186 }));
7187 break;
7188 case "dino":
7189 for (let b in h)
7190 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));
7191 m = Object.entries(r).map(([e, {
7192 b: t,
7193 f: a
7195 ]) => ({
7196 name: e,
7197 blook: t,
7198 value: a || 0
7199 }));
7200 break;
7201 case "cafe":
7202 for (let v in h)
7203 h[v].up && ([p, u] = h[v].up.split(":"), u) && this.addAlert(v, t[r[v].b]?.url, `upgraded ${p} to level ` + u);
7204 m = Object.entries(r).map(([e, {
7205 b: t,
7206 ca: a
7208 ]) => ({
7209 name: e,
7210 blook: t,
7211 value: a || 0
7212 }));
7213 break;
7214 case "factory":
7215 for (let _ in h) {
7216 var f,
7218 k = h[_];
7219 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!")
7221 m = Object.entries(r).map(([e, {
7222 b: t,
7223 ca: a
7225 ]) => ({
7226 name: e,
7227 blook: t,
7228 value: a || 0
7231 this.updateLeaderboard(m.sort((e, t) => t.value - e.value));
7234 } catch {
7235 return !1
7238 diffObjects(e, t) {
7239 var a,
7240 o = {};
7241 for (let r in e)
7242 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]));
7243 for (let i in t)
7244 i in e || (o[i] = t[i]);
7245 return 0 == Object.keys(o).length ? null : o
7247 getGamemode() {
7248 if (Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props?.client?.type) {
7249 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props.client.type.toLowerCase();
7251 switch (window.location.pathname) {
7252 case "/play/racing":
7253 return "racing";
7254 case "/play/extras":
7255 return "extras";
7256 case "/play/host":
7257 return "host";
7258 case "/play/pirate":
7259 return "voyage";
7260 case "/play/factory":
7261 return "factory";
7262 case "/play/classic/get-ready":
7263 case "/play/classic/question":
7264 case "/play/classic/answer/sent":
7265 case "/play/classic/answer/result":
7266 case "/play/classic/standings":
7267 return "classic";
7268 case "/play/battle-royale/match/preview":
7269 case "/play/battle-royale/question":
7270 case "/play/battle-royale/answer/sent":
7271 case "/play/battle-royale/answer/result":
7272 case "/play/battle-royale/match/result":
7273 return "royale";
7274 case "/play/toy":
7275 return "toy";
7276 case "/play/gold":
7277 return "gold";
7278 case "/play/brawl":
7279 return "brawl";
7280 case "/play/hack":
7281 return "hack";
7282 case "/play/fishing":
7283 return "Fish";
7284 case "/play/rush":
7285 return "rush";
7286 case "/play/dino":
7287 return "dino";
7288 case "/tower/map":
7289 case "/tower/battle":
7290 case "/tower/rest":
7291 case "/tower/risk":
7292 case "/tower/shop":
7293 case "/tower/victory":
7294 return "doom";
7295 case "/cafe":
7296 case "/cafe/shop":
7297 return "cafe";
7298 case "/defense":
7299 return "defense";
7300 case "/play/defense2":
7301 return "defense2";
7302 case "/kingdom":
7303 return "kingdom";
7304 default:
7305 return !1
7312 function S(e, t) {
7313 var a,
7315 r = 0,
7316 i = 0;
7317 e.onpointerdown = function (e = window.event) {
7318 r = e.clientX,
7319 i = e.clientY,
7320 document.onpointerup = function () {
7321 document.onpointerup = null,
7322 document.onpointermove = null
7324 document.onpointermove = function (e = window.event) {
7325 a = r - e.clientX,
7326 o = i - e.clientY,
7327 r = e.clientX,
7328 i = e.clientY,
7329 t.style.top = t.offsetTop - o + "px",
7330 t.style.left = t.offsetLeft - a + "px"
7334 w("Alerts", "https://i.ibb.co/hBNyCXG/559343-1.png", C.alerts, !0),
7335 w("Global", "https://i.ibb.co/gd4Qs8L/11507ef5615c554fe88fc22c86768501-simple-earth-icon-1.webp", C.global)(),
7336 w("Host", "https://i.ibb.co/QpDgysb/computer-1865273-1.png", C.host, !0),
7337 w('<span style="font-size: 18px">Pirate\'s Voyage</span>', "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxnIGlkPSJCb2F0Ij48cGF0aCBkPSJNMTcwLjQsNTYuMDU0Yy02OC43ODgsMTAuMTc0IC0xMTUuOTcxLDU2LjkzOCAtMTQ1LjQxMSwxMzMuNzVsMTUuNDY5LDcuNzM0YzMwLjk2MiwtMjguMTc1IDc0LjcwNSwtMzcuNzg3IDEzMi4zMjIsLTI3LjI1bDAsLTE3LjYxMWMtMjUuNjI5LC0yNy45NTIgLTI2Ljk2NiwtNTYuNzcyIDAuNzE0LC04Ni42MjhsLTMuMDk0LC05Ljk5NVoiIHN0eWxlPSJmaWxsOiNmNmUwYmQ7Ii8+PHBhdGggZD0iTTE5OS42NzMsNjAuODEzYzMyLjc4NCw0Mi45ODIgNjUuODIyLDkwLjg4NyA5Ny4zMzcsMTM5LjU4MWwtNi42NjMsMGMtMTIuMDg1LC0zMS4xMTEgLTU3Ljg4MiwtMzkuNjk0IC05MS42MjYsLTI3LjI1YzIyLjUxNCwtMzQuNTc5IDE3Ljc5NiwtNzIuNjczIDAuOTUyLC0xMTIuMzMxWiIgc3R5bGU9ImZpbGw6I2Y2ZTBiZDsiLz48cGF0aCBkPSJNNjkuNDQ4LDE5Ny41MzhjMCwwIC01OS43MDcsLTE1LjI0MyAtNjguMzk4LC0xNy40NjJjLTAuMDc2LC0wLjAxOSAtMC4xNTQsMC4wMiAtMC4xODQsMC4wOTJjLTAuMDMsMC4wNzIgLTAuMDAyLDAuMTU1IDAuMDY1LDAuMTk1YzkuNjgyLDUuNzc1IDkxLjY0Nyw1NC42NTggOTEuNjQ3LDU0LjY1OGwtMjMuMTMsLTM3LjQ4M1oiIHN0eWxlPSJmaWxsOiM4ZDZlNDE7Ii8+PHBhdGggZD0iTTE2NC40NSw0Ny45MDNjMCwtNS4zNTMgNC4zNDYsLTkuNjk4IDkuNjk4LC05LjY5OGwxOS4zOTcsLTBjNS4zNTIsLTAgOS42OTgsNC4zNDUgOS42OTgsOS42OThsLTAsMTU2Ljk1M2MtMCw1LjM1MyAtNC4zNDYsOS42OTggLTkuNjk4LDkuNjk4bC0xOS4zOTcsMGMtNS4zNTIsMCAtOS42OTgsLTQuMzQ1IC05LjY5OCwtOS42OThsMCwtMTU2Ljk1M1oiIHN0eWxlPSJmaWxsOiM3ZjY4NDU7Ii8+PHBhdGggZD0iTTI2My45OTMsMjU2LjEwM2MyMi4xNzEsLTE0LjcxIDM2LjAwNywtMzUuNTE1IDM2LjAwNywtNTguNTY1bC0yMzAuNTUyLDBjMCwyMy43MTMgMTQuNjQzLDQ1LjA1IDM3Ljk0LDU5LjgxOWM5Ljg3NSwtMy43MjkgMjAuMDQxLC0xMS4zMzQgMzAuNDYzLC0yMi4zMzZjMzIuODExLDM1LjQ1NSA2NC4wNjksMzUuOTQzIDkzLjcwOCwwYzYuODM4LDkuNjc3IDE3LjczNiwxNi42NDYgMzIuNDM0LDIxLjA4MloiIHN0eWxlPSJmaWxsOiNiNjkyNWY7Ii8+PC9nPjwvc3ZnPg==", C.voyage),
7338 w("Gold quest", "https://media.blooket.com/image/upload/v1661496292/Media/uiTest/Gold.svg", C.gold),
7339 w("Cafe", "https://i.ibb.co/t8pqdYL/hot-beverage-1.png", C.cafe),
7340 w("Crypto Hack", "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/CryptoIcon.svg", C.crypto),
7341 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),
7342 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),
7343 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),
7344 w("Factory", "https://i.ibb.co/VMrTd39/images-removebg-preview-1.png", C.factory),
7345 w('<span style="font-size: 19px">Fishing Frenzy</span>', "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Fish_Weight.svg", C.fishing),
7346 w("Flappy Blook", "https://media.blooket.com/image/upload/v1645222006/Blooks/yellowBird.svg", C.flappy),
7347 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),
7348 w('<span style="font-size: 18px">Crazy Kingdom</span>', "https://i.ibb.co/10mZ6dx/3763864-1.png", C.kingdom),
7349 w("Racing", "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Racing_Progress.svg", C.racing),
7350 w("Battle Royale", "https://media.blooket.com/image/upload/v1655936179/Media/br/VS_Lightning_Bolt_Bottom.svg", C.royale),
7351 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),
7352 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),
7353 w('<span style="font-size: 15px">Santa\'s Workshop</span>', "https://i.ibb.co/Y2SFc9Y/Santa-Workshop-Finished-icon-1.webp", C.workshop),
7354 w("Extras", "https://i.ibb.co/mb0R9HX/Star-icon-stylized-svg-1-removebg-preview.png", C.extras, !0),
7355 w("Settings", "https://i.ibb.co/jrWKgyn/Windows-Settings-icon-1.png", C.settings, !0),
7356 w("Credits", "https://i.ibb.co/prKYGdN/credits.webp", C.credits, !0),
7357 S(m, _),
7358 S(g, _),
7359 window.addEventListener("keydown", A);
7360 let x = setInterval(() => {
7361 C.alerts[0].connection ? clearInterval(x) : C.alerts[0].connect()
7362 }, 5e3);
7364 function D() {
7365 for (let e in _.remove(), clearInterval(x), C)
7366 for (let t of C[e])
7367 t.enabled && t.run();
7368 Object.keys(C).forEach(e => C[e].forEach(e => e.enabled && (e.run(), k(...currentMode)))),
7369 window.removeEventListener("keydown", A)
7372 function A(e) {
7373 var t = c.data.hide || {
7374 ctrl: !0,
7375 key: "e"
7377 a = c.data.close || {
7378 ctrl: !0,
7379 key: "x"
7381 (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())
7384 function B(e, t = window) {
7385 return new Promise(a => {
7386 let o = {},
7391 l = t => {
7392 t.preventDefault(),
7393 o[t.code] = !0,
7394 r ||= t.shiftKey,
7395 i ||= t.ctrlKey,
7396 n ||= t.altKey,
7397 ["shift", "control", "alt", "meta"].includes(t.key.toLowerCase()) || (s = t.key.toLowerCase()),
7398 e?.({
7399 shift: r,
7400 ctrl: i,
7401 alt: n,
7402 key: s
7405 c = e => {
7406 delete o[e.code],
7407 0 < Object.keys(o).length || (t.removeEventListener("keydown", l), t.removeEventListener("keyup", c), a({
7408 shift: r,
7409 ctrl: i,
7410 alt: n,
7411 key: s
7414 t.addEventListener("keydown", l),
7415 t.addEventListener("keyup", c)
7418 _.addEventListener("mousemove", e => {
7419 var t,
7421 "cheatName" != e.target.className && "scriptButton" != e.target.className ? "0" != y.style.opacity && (y.animate([{
7422 opacity: .9
7423 }, {
7424 opacity: 0
7426 ], {
7427 duration: 200
7428 }), 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([{
7429 opacity: 0
7430 }, {
7431 opacity: .9
7433 ], {
7434 duration: 200
7435 }), 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"))
7437 window.fetch.call = function () {
7438 if (!arguments[1].includes("s.blooket.com/rc"))
7439 return wfcall.apply(this, arguments);
7440 C.alerts?.[0].addLog("Blooket Cheat Report Blocked!")
7442 })();