Update Gui.js
[bcp.git] / GUI / Gui.js
blobe0a2b9b1365d5cee66bccc7f1f018f171cd0e960
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: "Freeze Host",
1479 description: "Freezes the host's screen",
1480 run: function () {
1481 const encodedChars = [
1482 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1485 const chars = encodedChars.map(char => eval(`"${char}"`));
1487 function makeLongText() {
1488 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1491 let {
1492 props: t
1493 } = Object.values(function e(t = document.querySelector("body>div")) {
1494 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1496 ())[1].children[0]._owner.stateNode;
1498 let repeatedText = makeLongText();
1499 t.client.blook = repeatedText;
1500 t.liveGameController.setVal({
1501 path: `c/${t.client.name}/b`,
1502 val: repeatedText
1505 }, {
1506 name: "Remove all Taken Blooks",
1507 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
1508 run: function () {
1509 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1510 stateNode.setState({
1511 takenBlooks: {
1512 includes: e => !1
1515 stateNode.setState = function (a, b) {
1516 if (a?.takenBlooks) {
1517 return;
1519 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
1522 }, {
1523 name: "Dynamic Player Count",
1524 description: "Updates the player count at the top of the screen in realtime as players join or leave.",
1525 run: function () {
1526 (async() => {
1527 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1528 const ref = await stateNode.props.liveGameController.getDatabaseRef("")
1529 ref.on("value", e => {
1530 document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
1532 })()
1534 }, {
1535 name: "Blooket Bot",
1536 description: "Opens Blooket Bot",
1537 run: function () {
1538 function getGameCode() {
1539 const appDiv = document.querySelector('#app>div>div');
1540 if (appDiv) {
1541 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1542 return reactComponent?.stateNode?.props?.client?.hostId || null;
1544 return null;
1547 const gameCode = getGameCode();
1548 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
1549 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1551 }, {
1552 name: "Blooket Bot Unblocked",
1553 description: "Opens Blooket Bot",
1554 run: function () {
1555 function getGameCode() {
1556 const appDiv = document.querySelector('#app>div>div');
1557 if (appDiv) {
1558 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1559 return reactComponent?.stateNode?.props?.client?.hostId || null;
1561 return null;
1564 const gameCode = getGameCode();
1565 const url = gameCode ? "https://blooketbot.vercel.app/?code=" + gameCode : "https://blooketbot.vercel.app/";
1566 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1568 }, {
1569 name: "Blooket Homework Editor",
1570 description: "Opens Blooket Homework Editor",
1571 run: function () {
1572 window.open("https://blookethwk.glitch.me/", "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes")
1574 }, {
1575 name: "Lobbychat",
1576 description: "Chat with other people and execute commands",
1577 run: function () {
1578 if (window.run) {
1579 return;
1580 } else {
1581 window.run = true;
1584 function e() {
1585 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1587 var t = 0,
1588 a = !1;
1589 document.addEventListener("keydown", function (e) {
1590 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
1592 let o = document.createElement("div");
1593 o.className = "chat-box",
1594 document.body.appendChild(o);
1595 let r = document.createElement("div");
1596 r.className = "chat-header",
1597 r.textContent = "Chat",
1598 o.appendChild(r);
1599 let i = document.createElement("div");
1600 i.className = "chat-body",
1601 o.appendChild(i);
1602 let n = document.createElement("input");
1604 function s(e) {
1605 let t = document.createElement("div");
1606 t.textContent = e,
1607 i.appendChild(t)
1609 n.type = "text",
1610 n.className = "chat-input",
1611 n.placeholder = "Type a message...",
1612 o.appendChild(n),
1613 o.style.position = "fixed",
1614 o.style.bottom = "20px",
1615 o.style.right = "20px",
1616 o.style.width = "300px",
1617 o.style.backgroundColor = "#fff",
1618 o.style.border = "1px solid #ccc",
1619 o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)",
1620 r.addEventListener("click", () => {
1621 i.classList.toggle("open")
1623 n.addEventListener("keydown", function (a) {
1624 13 === a.keyCode && (function a(o) {
1625 var r,
1632 h = function e(t) {
1633 if ("/" !== t.charAt(0))
1634 return !1;
1635 var a = t.split(" "),
1636 o = a[0].replace("/", "");
1637 return a.splice(0, 1), {
1638 cmd: o,
1639 args: a
1642 (o);
1643 if (h)
1644 switch (h.cmd) {
1645 case "cb":
1646 r = h.args.join(" "),
1647 (n = webpackJsonp.push([
1648 [], {
1649 1234(e, t, a) {
1650 t.webpack = a
1654 ["1234"]
1656 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
1657 id: e().stateNode.props.client.hostId,
1658 path: "c/" + e().stateNode.props.client.name,
1659 val: {
1660 b: r
1662 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
1663 break;
1664 case "clear":
1665 i.innerHTML = "";
1666 break;
1667 case "dumpstate":
1668 Object.keys(e().stateNode.state).map(t => {
1669 var a = e().stateNode.state[t];
1670 if (null == a)
1671 return "N/A";
1672 Array.from(a) && "object" == typeof a && (a = "[Array]"),
1673 s(t + ":" + a)
1674 }).join(";");
1675 break;
1676 case "list":
1677 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
1678 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
1680 break;
1681 case "tlog":
1682 window.logsv = !window.logsv,
1683 s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
1684 break;
1685 case "setval":
1686 l = h.args,
1687 e().stateNode.props.liveGameController.setVal({
1688 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
1689 val: l.slice(1, l.length).join(" ")
1691 break;
1692 case "setstate":
1693 c = h.args,
1694 d = {},
1695 c.forEach(e => {
1696 var t = e.split(":");
1697 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])),
1698 d[t[0]] = t[1]
1700 e().stateNode.setState(d),
1701 s("Set Successful!");
1702 break;
1703 case "ahelp":
1704 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)");
1705 break;
1706 case "help":
1707 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)");
1708 break;
1709 case "dump":
1710 !function t(a) {
1711 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
1712 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
1715 (h.args.join(" "));
1716 break;
1717 case "unlock":
1718 p = h.args.join(" "),
1719 (u = webpackJsonp.push([
1720 [], {
1721 1234(e, t, a) {
1722 t.webpack = a
1726 ["1234"]
1728 ]).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!");
1729 break;
1730 case "code":
1731 s("Game Code: " + e().stateNode.props.client.hostId);
1732 break;
1733 default:
1734 s("Unrecognized chat command!")
1736 else
1737 e().stateNode.props.liveGameController.setVal({
1738 id: e().stateNode.props.client.hostId,
1739 path: "c/" + e().stateNode.props.client.name + "/msg",
1740 val: {
1741 i: t,
1742 msg: o
1744 }), t++
1746 (a.srcElement.value), a.srcElement.value = "")
1748 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
1750 function c(e) {
1751 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
1753 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function (e, t, a, o) {
1754 var r,
1756 console.log(e, t, a, o),
1757 r = e,
1758 null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)),
1759 l(e, t, a, o)
1761 window.logsv = !1;
1762 var d = e().stateNode.props.liveGameController.setVal;
1763 e().stateNode.props.liveGameController.setVal = function () {
1764 c.apply(this, arguments),
1765 d.apply(this, arguments)
1767 e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}),
1768 s("Lobbychat successfully loaded!"),
1769 o.style.wordWrap = "break-word"
1771 }, {
1772 name: "Pin Guesser",
1773 description: "Brute forces combinations for existing pins",
1774 run: function () {
1775 var e = 0,
1776 t = 0,
1777 a = document.querySelector("div[class*='titleText']");
1779 function o() {
1780 return Object.values(function e(t = document.querySelector("body>div")) {
1781 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1783 ())[1].children[0]._owner.stateNode
1785 !function r() {
1786 let i = Math.floor(9e6 * Math.random()) + 1e6;
1787 fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
1788 method: "GET",
1789 credentials: "include"
1790 }).then(e => e.json()).then(n => {
1791 !0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
1792 client: {
1793 hostId: i.toString()
1795 })) : (console.log("No game found for:", i), o().setState({
1796 client: {
1797 hostId: i.toString()
1799 }), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
1800 }).catch(e => {
1801 alert("Error:" + e)
1806 }, {
1807 name: "Crash Game",
1808 description: "Crashes the host's game",
1809 run: function () {
1810 var e = Object.values(function e(t = document.querySelector("#app")) {
1811 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1813 ())[1].children[0]._owner.stateNode;
1814 e.props.liveGameController.setVal({
1815 path: `c/${e.props.client.name}/b/toString`,
1816 val: "Crashed"
1819 }, {
1820 name: "Every Answer Correct",
1821 description: "Sets every answer to be correct",
1822 run: function () {
1823 let {
1824 stateNode: e
1825 } = Object.values(function e(t = document.querySelector("body>div")) {
1826 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1828 ())[1].children[0]._owner;
1829 e.freeQuestions = e.freeQuestions?.map?.(e => ({
1830 ...e,
1831 correctAnswers: e.answers
1832 })),
1833 e.questions = e.questions?.map?.(e => ({
1834 ...e,
1835 correctAnswers: e.answers
1836 })),
1837 e.props.client.questions = e.props.client.questions.map(e => ({
1838 ...e,
1839 correctAnswers: e.answers
1842 }, {
1843 name: "Remove Name Limit",
1844 description: "Sets the name limit to 120, which is the actual max name length limit",
1845 run: function () {
1846 var e = document.createElement("iframe");
1847 document.body.append(e),
1848 window.alert = e.contentWindow.alert.bind(window),
1849 e.remove(),
1850 document.querySelector('input[class*="nameInput"]').maxLength = 120,
1851 alert("Removed name length limit")
1853 }, {
1854 name: "Remove Random Name",
1855 description: "Allows you to put a custom name",
1856 run: function () {
1857 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1858 isRandom: !1,
1859 client: {
1860 name: ""
1863 document.querySelector('[class*="nameInput"]')?.focus?.()
1865 }, {
1866 name: "Sell Cheap Duplicates",
1867 description: "Sells all of your uncommon to epic dupes (not legendaries+)",
1868 run: function () {
1869 var e = document.createElement("iframe");
1870 document.body.append(e),
1871 window.alert = e.contentWindow.alert.bind(window),
1872 window.confirm = e.contentWindow.confirm.bind(window),
1873 e.remove();
1874 let t = webpackJsonp.push([
1875 [], {
1876 1234(e, t, a) {
1877 t.webpack = a
1881 ["1234"]
1883 ]).webpack,
1884 a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
1885 o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
1886 a.get("https://dashboard.blooket.com/api/users").then(async({
1887 data: {
1888 unlocks: e
1890 }) => {
1891 if (e = Object.entries(e).filter(([e, t]) => 1 < t && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([
1892 [], {
1893 1234(e, t, a) {
1894 t.webpack = a
1898 ["1234"]
1900 ]).webpack("MDrD").a[e].rarity)), confirm("Are you sure you want to sell your uncommon to epic dupes?")) {
1901 var t,
1903 r = Date.now();
1904 for ([t, a] of e)
1905 await o({
1906 blook: t,
1907 numToSell: a - 1
1909 alert(`(${Date.now() - r}ms) Results: ` + e.map(([e, t]) => ` ${e} ` + (t - 1)).join(" "))
1911 }).catch(() => alert("There was an error user data!"))
1913 }, {
1914 name: "Sell Duplicate Blooks",
1915 description: "Sell all duplicate blooks leaving you with 1 each",
1916 run: async function () {
1917 let e = document.createElement("iframe");
1918 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)) {
1919 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
1920 let {
1921 stateNode: t
1922 } = Object.values(function e(t = document.querySelector("body>div")) {
1923 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1925 ())[1].children[0]._owner,
1926 a = Date.now(),
1927 o = "";
1928 for (let r in t.state.blookData)
1929 if (t.state.blookData[r] > 1) {
1930 if (t.setState({
1931 blook: r,
1932 numToSell: t.state.blookData[r] - 1
1933 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim()))
1934 continue;
1935 o += ` ${r} ${t.state.blookData[r] - 1} `,
1936 await t.sellBlook({
1937 preventDefault() {}
1938 }, !0)
1940 alert(`(${Date.now() - a}ms) Results: ${o.trim()}`)
1942 } else
1943 alert("This can only be ran in the Blooks page.")
1947 voyage: [{
1948 name: "Heist ESP",
1949 description: "Shows you what's under each chest during a heist",
1950 type: "toggle",
1951 enabled: false,
1952 data: null,
1953 run: function () {
1954 if (this.enabled) {
1955 this.enabled = false;
1956 clearInterval(this.data);
1957 this.data = null;
1958 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
1959 } else {
1960 this.enabled = true;
1961 this.data = setInterval(() => {
1962 const cheat = (async() => {
1963 let {
1964 stateNode
1965 } = Object.values((function react(r = document.querySelector("body>div")) {
1966 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1967 })())[1].children[0]._owner;
1968 if (stateNode.state.stage == "heist") {
1969 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
1970 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
1971 for (const e of document.querySelectorAll("[class*=boxContent] > div"))
1972 e.remove();
1973 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
1974 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
1975 const box = container.firstChild.firstChild;
1976 if (open.includes(i))
1977 return box.style.opacity = "";
1978 box.style.opacity = "0.5";
1979 let d = document.createElement("div");
1980 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
1981 d.className = "chestESP";
1982 d.style.position = "absolute";
1983 d.style.inset = "0";
1984 d.style.display = "grid";
1985 d.style.placeItems = "center";
1986 d.style.pointerEvents = "none";
1987 container.onclick = () => {
1988 d.remove();
1989 box.style.opacity = "";
1991 container.firstChild.prepend(d);
1995 cheat();
1996 }, 50);
1999 }, {
2000 name: "Crash Host (Pirate)",
2001 description: "Crashes the Host's Game for Pirate's Voyage",
2002 run: function () {
2003 function reactHandler() {
2004 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2007 function setv(args) {
2008 reactHandler().stateNode.props.liveGameController.setVal({
2009 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2010 val: args.slice(1, args.length).join(" ")
2014 setv(['d/t', 't']);
2016 }, {
2017 name: "Max Levels",
2018 description: "Maxes out all islands and your boat",
2019 run: function () {
2020 let {
2021 stateNode: e
2022 } = Object.values(function e(t = document.querySelector("body>div")) {
2023 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2025 ())[1].children[0]._owner;
2026 e.setState({
2027 islandLevels: Array(e.state.islandLevels.length).fill(5)
2028 }, e.updateBoatLevel)
2030 }, {
2031 name: "Set Doubloons",
2032 description: "Sets Doubloons",
2033 inputs: [{
2034 name: "Amount",
2035 type: "number"
2038 run: function (e) {
2039 let t = document.createElement("iframe");
2040 document.body.append(t),
2041 window.prompt = t.contentWindow.prompt.bind(window),
2042 t.remove();
2043 let {
2044 stateNode: a
2045 } = Object.values(function e(t = document.querySelector("body>div")) {
2046 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2048 ())[1].children[0]._owner;
2049 a.setState({
2050 doubloons: e
2052 a.props.liveGameController.setVal({
2053 path: `c/${a.props.client.name}/d`,
2054 val: e
2057 }, {
2058 name: "Start Heist",
2059 description: "Starts a heist on someone",
2060 inputs: [{
2061 name: "Player",
2062 type: "options",
2063 options() {
2064 let {
2065 stateNode: e
2066 } = Object.values(function e(t = document.querySelector("body>div")) {
2067 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2069 ())[1].children[0]._owner;
2070 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2074 run: function (e) {
2075 let t = document.createElement("iframe");
2076 document.body.append(t),
2077 window.prompt = t.contentWindow.prompt.bind(window),
2078 t.remove();
2079 let {
2080 stateNode: a
2081 } = Object.values(function e(t = document.querySelector("body>div")) {
2082 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2084 ())[1].children[0]._owner;
2085 a.props.liveGameController.getDatabaseVal("c", function (t) {
2086 let o = Object.entries(t || {}).reduce((e, [t, o]) => (t != a.props.client.name && e.push({
2087 name: t,
2088 blook: o.b,
2089 doubloons: o.d || 0
2090 }), e), []);
2091 if (0 === o.length)
2092 return a.questionsToAnswer = 1, void a.randomQ();
2093 let {
2094 name: r,
2095 blook: i,
2096 doubloons: n
2097 } = o.find(t => t.name == e) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
2098 a.setState({
2099 stage: "heist",
2100 heistInfo: {
2101 name: r,
2102 blook: i
2104 prizeAmount: Math.max(1e3, n)
2108 }, {
2109 name: "Swap Doubloons",
2110 description: "Swaps Doubloons with someone",
2111 inputs: [{
2112 name: "Player",
2113 type: "options",
2114 options() {
2115 let {
2116 stateNode: e
2117 } = Object.values(function e(t = document.querySelector("body>div")) {
2118 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2120 ())[1].children[0]._owner;
2121 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2125 run: async function (e) {
2126 let t = document.createElement("iframe");
2127 document.body.append(t),
2128 window.prompt = t.contentWindow.prompt.bind(window),
2129 t.remove();
2130 let {
2131 stateNode: a
2132 } = Object.values(function e(t = document.querySelector("body>div")) {
2133 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2135 ())[1].children[0]._owner,
2136 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),
2137 r = o.find(t => t[0] == e) || o[0];
2138 a.props.liveGameController.setVal({
2139 path: `c/${a.props.client.name}`,
2140 val: {
2141 b: a.props.client.blook,
2142 d: r[1].d,
2143 tat: `${r[0]}:${r[1].d - a.state.doubloons}`
2146 a.setState({
2147 doubloons: r[1].d
2150 }, {
2151 name: "Take Doubloons",
2152 description: "Takes Doubloons from someone",
2153 inputs: [{
2154 name: "Player",
2155 type: "options",
2156 options() {
2157 let {
2158 stateNode: e
2159 } = Object.values(function e(t = document.querySelector("body>div")) {
2160 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2162 ())[1].children[0]._owner;
2163 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2167 run: async function (e) {
2168 let t = document.createElement("iframe");
2169 document.body.append(t),
2170 window.prompt = t.contentWindow.prompt.bind(window),
2171 t.remove();
2172 let {
2173 stateNode: a
2174 } = Object.values(function e(t = document.querySelector("body>div")) {
2175 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2177 ())[1].children[0]._owner,
2178 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),
2179 r = o.find(t => t[0] == e) || o[0];
2180 a.setState({
2181 doubloons: a.state.doubloons + r[1].d
2183 a.props.liveGameController.setVal({
2184 path: `c/${a.props.client.name}`,
2185 val: {
2186 b: a.props.client.blook,
2187 d: r[1].d,
2188 tat: `${r[0]}:${r[1].d}`
2192 }, {
2193 name: "Flood Alert Box",
2194 description: "Makes the alert box filled with text",
2195 inputs: [{
2196 name: "Text",
2197 type: "text"
2200 run: function (userInput) {
2201 function getReactOwner() {
2202 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2205 function repeatText(text, times) {
2206 return new Array(times).fill(text).join(" ");
2209 function setValForPlayer() {
2210 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2211 if (data != null) {
2213 const playerName = Object.keys(data)[0];
2215 if (userInput) {
2217 const id = "1,723,583,989,363";
2218 const repeatedText = repeatText(userInput, 1700);
2219 const finalText = `${id}${repeatedText}`;
2221 setv(['tat', `${playerName}:${finalText}`]);
2222 } else {
2223 console.log("No text entered. Operation cancelled.");
2225 } else {
2226 console.log("Player not found!");
2231 function setv(args) {
2232 getReactOwner().stateNode.props.liveGameController.setVal({
2233 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2234 val: args.slice(1, args.length).join(" ")
2238 setValForPlayer();
2240 }, {
2241 name: "Send Ad Text",
2242 description: "Sends a load of text to another player (This will override your blook!)",
2243 inputs: [{
2244 name: "Player",
2245 type: "options",
2246 options() {
2247 let {
2248 stateNode: e
2249 } = Object.values(function e(t = document.querySelector("body>div")) {
2250 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2252 ())[1].children[0]._owner;
2253 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2255 }, {
2256 name: "Text"
2259 run: async function (player, e) {
2260 let {
2261 props: t2
2262 } = Object.values(function e(t = document.querySelector("body>div")) {
2263 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2265 ())[1].children[0]._owner.stateNode;
2267 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2268 t2.client.blook = repeatedText;
2269 t2.liveGameController.setVal({
2270 path: `c/${t2.client.name}/b`,
2271 val: repeatedText
2273 t2.liveGameController.setVal({
2274 path: `c/${t2.client.name}/tat`,
2275 val: `${player}:196`
2280 brawl: [{
2281 name: "Double Enemy XP",
2282 description: "Doubles enemy XP drop value",
2283 run: function () {
2284 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"))) {
2285 var t = e.object2;
2286 let a = t.classType.prototype.start;
2287 t.classType.prototype.start = function () {
2288 a.apply(this, arguments),
2289 this.val *= 2
2291 t.children.entries.forEach(e => e.val *= 2)
2294 }, {
2295 name: "Half Enemy Speed",
2296 description: "Makes enemies move 2x slower",
2297 run: function () {
2298 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"))) {
2299 var t = e.object2;
2300 let a = t.classType.prototype.start;
2301 t.classType.prototype.start = function () {
2302 a.apply(this, arguments),
2303 this.speed *= .5
2305 t.children.entries.forEach(e => e.speed *= .5)
2308 }, {
2309 name: "Instant Kill",
2310 description: "Sets all enemies health to 1",
2311 run: function () {
2312 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"))) {
2313 var t = e.object2;
2314 let a = t.classType.prototype.start;
2315 t.classType.prototype.start = function () {
2316 a.apply(this, arguments),
2317 this.hp = 1
2319 t.children.entries.forEach(e => e.hp = 1)
2322 }, {
2323 name: "Invincibility",
2324 description: "Makes you invincible",
2325 run: function () {
2326 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")))
2327 e.collideCallback = () => {}
2329 }, {
2330 name: "Magnet",
2331 description: "Pulls all xp towards you",
2332 run: function () {
2333 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({
2334 active: !0
2335 }, {
2336 active: !0,
2337 setActive() {},
2338 setVisible() {}
2341 }, {
2342 name: "Max Current Abilities",
2343 description: "Maxes out all your current abilities",
2344 run: function () {
2345 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2346 for (var [t, a] of Object.entries(e.state.abilities))
2347 for (let o = 0; o < 10 - a; o++)
2348 e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
2349 e.setState({
2350 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
2353 }, {
2354 name: "Next Level",
2355 description: "Skips to the next level",
2356 run: function () {
2357 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, {
2358 object1: t,
2359 object2: a
2360 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
2361 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)
2363 }, {
2364 name: "Remove Obstacles",
2365 description: "Removes all rocks and obstacles",
2366 run: function () {
2367 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
2368 try {
2369 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
2370 } catch {}
2373 }, {
2374 name: "Kill Enemies",
2375 description: "Kills all current enemies",
2376 run: function () {
2377 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))
2379 }, {
2380 name: "Reset Health",
2381 description: "Resets health and gives invincibility for 3 seconds",
2382 run: function () {
2383 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
2385 }, {
2386 name: "Crash Host (Brawl)",
2387 description: "Crashes the Host's Game for Monster Brawl",
2388 run: function () {
2389 function reactHandler() {
2390 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2393 function setv(args) {
2394 reactHandler().stateNode.props.liveGameController.setVal({
2395 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2396 val: args.slice(1, args.length).join(" ")
2400 setv(['xp/t', 't']);
2402 }, {
2403 name: "Set XP",
2404 description: "Sets amount of XP",
2405 inputs: [{
2406 name: "XP",
2407 type: "number"
2410 run: function (e) {
2411 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2412 t.setState({
2413 xp: e,
2414 totalXp: e
2416 t.xp = e,
2417 t.totalXp = e,
2418 t.props?.liveGameController.setVal({
2419 path: "c/".concat(t.props.client.name),
2420 val: {
2421 b: t.props.client.blook,
2422 xp: e
2426 }, {
2427 name: "Set Level",
2428 description: "Sets your level",
2429 inputs: [{
2430 name: "XP",
2431 type: "number"
2434 run: function (e) {
2435 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2436 level: e
2441 cafe: [{
2442 name: "Max Items",
2443 description: "Maxes out items in the shop (Only usable in the shop)",
2444 run: function () {
2445 var e = document.createElement("iframe");
2446 document.body.append(e),
2447 window.alert = e.contentWindow.alert.bind(window),
2448 e.remove(),
2449 "/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({
2450 items: Object.fromEntries(Object.entries(e.state.items).map(e => [e[0], 5]))
2453 }, {
2454 name: "Remove Customers",
2455 description: "Skips the current customers (Not usable in the shop)",
2456 run: function () {
2457 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2458 e.state.customers.forEach((t, a) => Object.keys(t).length && e.removeCustomer(a, !0))
2460 }, {
2461 name: "Reset Abilities",
2462 description: "Resets used abilities in shop (Only usable in the shop)",
2463 run: function () {
2464 var e = document.createElement("iframe");
2465 document.body.append(e),
2466 window.alert = e.contentWindow.alert.bind(window),
2467 e.remove(),
2468 "/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({
2469 abilities: Object.fromEntries(Object.entries(e.state.abilities).map(e => [e[0], 5]))
2472 }, {
2473 name: "Set Cash",
2474 description: "Sets cafe cash",
2475 inputs: [{
2476 name: "Amount",
2477 type: "number"
2480 run: function (e) {
2481 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2482 t.setState({
2483 cafeCash: e
2485 t.props.liveGameController.setVal({
2486 path: "c/" + t.props.client.name,
2487 val: {
2488 b: t.props.client.blook,
2489 ca: e
2493 }, {
2494 name: "Spam Attack Player",
2495 description: "Attacks the player to make the game unplayable",
2496 inputs: [{
2497 name: "Player",
2498 type: "options",
2499 options() {
2500 let {
2501 stateNode: e
2502 } = Object.values(function e(t = document.querySelector("body>div")) {
2503 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2505 ())[1].children[0]._owner;
2506 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2510 type: "toggle",
2511 enabled: false,
2512 data: null,
2513 run: function (name) {
2514 if (this.enabled) {
2515 this.enabled = false;
2516 clearInterval(this.data);
2517 this.data = null;
2518 } else {
2519 this.enabled = true;
2521 function reactHandler() {
2522 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2525 var action = name + ":inspect";
2527 function spamAction() {
2528 var handler = reactHandler();
2529 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
2530 handler.stateNode.props.liveGameController.setVal({
2531 id: handler.stateNode.props.client.hostId,
2532 path: "c/" + handler.stateNode.props.client.name + "/tat",
2533 val: action
2538 this.data = setInterval(spamAction, 50);
2541 }, {
2542 name: "Attack Player",
2543 description: "Sends the player a health inspection",
2544 inputs: [{
2545 name: "Player's Name",
2546 type: "text"
2549 run: (function (targetPlayer) {
2550 function reactHandler() {
2551 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2554 reactHandler().stateNode.props.liveGameController.setVal({
2555 id: reactHandler().stateNode.props.client.hostId,
2556 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
2557 val: targetPlayer + ":inspect"
2560 }, {
2561 name: "Tax Player",
2562 description: "Makes a player pay tax",
2563 inputs: [{
2564 name: "Player's Name",
2565 type: "text"
2568 run: function (playerName) {
2569 function reactHandler() {
2570 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2573 function setv(args) {
2574 reactHandler().stateNode.props.liveGameController.setVal({
2575 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2576 val: args.slice(1, args.length).join(" ")
2580 function taxPlayer() {
2581 if (playerName) {
2582 setv(['tat', playerName + ':tax']);
2583 } else {
2584 console.log("No player name entered. Operation cancelled.");
2588 taxPlayer();
2590 }, {
2591 name: "Stock Food",
2592 description: "Stocks all food to 99 (Not usable in the shop)",
2593 run: function () {
2594 var e = document.createElement("iframe");
2595 document.body.append(e),
2596 window.alert = e.contentWindow.alert.bind(window),
2597 e.remove(),
2598 "/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({
2599 foods: e.state.foods.map(e => ({
2600 ...e,
2601 stock: 99,
2602 level: 5
2608 crypto: [{
2609 name: "Choice ESP",
2610 description: "Shows what each choice will give you",
2611 type: "toggle",
2612 enabled: !1,
2613 data: null,
2614 run: function () {
2615 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2616 let {
2617 stateNode: e
2618 } = Object.values(function e(t = document.querySelector("body>div")) {
2619 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2621 ())[1].children[0]._owner, {
2622 text: t
2623 } = e.state.choices[0],
2624 a = document.querySelector("[class^=styles__feedbackContainer___]");
2625 if (a.children.length <= 4) {
2626 let o = document.createElement("div");
2627 o.style.color = "white",
2628 o.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif",
2629 o.style.fontSize = "2em",
2630 o.style.display = "flex",
2631 o.style.justifyContent = "center",
2632 o.style.marginTop = "675px",
2633 o.innerText = t,
2634 a.append(o)
2636 }, 50))
2638 }, {
2639 name: "Password ESP",
2640 description: "Highlights the wrong passwords",
2641 type: "toggle",
2642 enabled: !1,
2643 data: null,
2644 run: function () {
2645 try {
2646 let e = this;
2647 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2648 let {
2649 state: e
2650 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
2651 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2653 ())[1].children[1]._owner.stateNode;
2654 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
2655 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 = "")
2657 }, 50))
2658 } catch (t) {
2659 console.error("An error occurred:", t)
2662 }, {
2663 name: "Always Triple",
2664 description: "Always get triple crypto",
2665 type: "toggle",
2666 enabled: !1,
2667 data: null,
2668 run: function () {
2669 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({
2670 choices: [{
2671 type: "mult",
2672 val: 3,
2673 rate: .075,
2674 blook: "Brainy Bot",
2675 text: "Triple Crypto"
2678 }), 50))
2680 }, {
2681 name: "Always Quintuple",
2682 description: "Always get quintuple crypto",
2683 type: "toggle",
2684 enabled: !1,
2685 data: null,
2686 run: function () {
2687 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({
2688 choices: [{
2689 type: "mult",
2690 val: 5,
2691 rate: .075,
2692 blook: "Ice Elemental",
2693 text: "Quintuple Crypto"
2696 }), 50))
2698 }, {
2699 name: "Always Hack",
2700 description: "Always get hack",
2701 type: "toggle",
2702 enabled: !1,
2703 data: null,
2704 run: function () {
2705 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({
2706 choices: [{
2707 type: "hack",
2708 val: 3,
2709 rate: .075,
2710 blook: "Mega Bot",
2711 text: "HACK"
2714 }), 50))
2716 }, {
2717 name: "Crash Password",
2718 description: "Crashes other players when they attempt to hack you",
2719 type: "toggle",
2720 enabled: !1,
2721 data: null,
2722 run: function () {
2723 var e = Object.values(function e(t = document.querySelector("#app")) {
2724 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2726 ())[1].children[0]._owner.stateNode;
2727 if (this.enabled)
2728 this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
2729 path: `c/${e.props.client.name}/p`,
2730 val: e.state?.password
2732 else {
2733 this.enabled = !0;
2734 let t = () => {
2735 e.props.liveGameController.setVal({
2736 path: `c/${e.props.client.name}/p/toString`,
2737 val: "crash"
2740 this.data = setInterval(t, 25)
2743 }, {
2744 name: "Set Freeze Password",
2745 description: "Freezes other players when they attempt to hack you",
2746 type: "toggle",
2747 enabled: !1,
2748 data: null,
2749 run: function () {
2750 const encodedChars = [
2751 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
2754 const chars = encodedChars.map(char => eval(`"${char}"`));
2756 function makeLongText() {
2757 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
2760 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2762 if (this.enabled) {
2763 this.enabled = !1;
2764 clearInterval(this.data);
2765 this.data = null;
2766 t.setState({
2767 password: ''
2769 t.props.liveGameController.setVal({
2770 path: "c/".concat(t.props.client.name),
2771 val: {
2772 b: t.props.client.blook,
2773 p: '',
2774 cr: t.state.crypto
2777 } else {
2778 this.enabled = !0;
2779 let lagFunction = () => {
2780 var e = makeLongText();
2781 t.setState({
2782 password: e
2784 t.props.liveGameController.setVal({
2785 path: "c/".concat(t.props.client.name),
2786 val: {
2787 b: t.props.client.blook,
2788 p: e,
2789 cr: t.state.crypto
2793 this.data = setInterval(lagFunction, 25);
2796 }, {
2797 name: "Auto Guess",
2798 description: "Automatically performs the hack for you",
2799 type: "toggle",
2800 enabled: !1,
2801 data: null,
2802 run: function () {
2803 try {
2804 let e = this;
2805 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2806 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
2807 let {
2808 stage: e,
2809 correctPassword: t
2810 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
2811 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
2813 }, 50))
2814 } catch (t) {
2815 console.error("An error occurred:", t)
2818 }, {
2819 name: "Set Host Screen Green",
2820 description: "Makes the whole screen filled with text",
2821 type: "toggle",
2822 enabled: !1,
2823 data: null,
2824 run: function () {
2825 var a = Object.values(function e(t = document.querySelector("#app")) {
2826 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2828 ())[1].children[0]._owner.stateNode;
2830 if (this.enabled) {
2831 this.enabled = !1;
2832 clearInterval(this.data);
2833 this.data = null;
2834 a.props.liveGameController.setVal({
2835 path: `c/${a.props.client.name}/cr`,
2836 val: ""
2838 } else {
2839 this.enabled = !0;
2840 let t = () => {
2841 a.props.liveGameController.setVal({
2842 path: `c/${a.props.client.name}/cr`,
2843 val: `9999999999999999999999999999999999999999999999${new Array(999).fill("\u0e47".repeat(70)).join(" ")}`
2846 this.data = setInterval(t, 25);
2849 }, {
2850 name: "Remove Hack",
2851 description: "Removes an attacking hack",
2852 run: function () {
2853 Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.setState({
2854 hack: ""
2857 }, {
2858 name: "Crash Host (Crypto)",
2859 description: "Crashes the Host's Game for Crypto Hack",
2860 run: function () {
2861 function reactHandler() {
2862 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2865 function setv(args) {
2866 reactHandler().stateNode.props.liveGameController.setVal({
2867 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2868 val: args.slice(1, args.length).join(" ")
2872 setv(['cr/t', 't']);
2874 }, {
2875 name: "Set Crypto",
2876 description: "Sets crypto",
2877 inputs: [{
2878 name: "Amount",
2879 type: "number"
2882 run: function (e) {
2883 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2884 t.setState({
2885 crypto: e,
2886 crypto2: e
2888 t.props.liveGameController.setVal({
2889 path: "c/" + t.props.client.name + "/cr",
2890 val: e
2893 }, {
2894 name: "Set Password",
2895 description: "Sets hacking password",
2896 inputs: [{
2897 name: "Custom Password",
2898 type: "string"
2901 run: function (e) {
2902 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2903 t.setState({
2904 password: e
2906 t.props.liveGameController.setVal({
2907 path: "c/" + t.props.client.name + "/p",
2908 val: e
2911 }, {
2912 name: "Set Host Screen Text",
2913 description: "Makes the whole screen filled with text",
2914 inputs: [{
2915 name: "Text",
2916 type: "text",
2919 run: function (e) {
2920 let t = document.createElement("iframe");
2921 document.body.append(t),
2922 window.prompt = t.contentWindow.prompt.bind(window),
2923 t.remove();
2924 var a = Object.values(function e(t = document.querySelector("#app")) {
2925 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2927 ())[1].children[0]._owner.stateNode;
2928 a.props.liveGameController.setVal({
2929 path: `c/${a.props.client.name}/cr`,
2930 val: `9999999999999999999999999999999999999999999999${new Array(999).fill(e).join(" ")}`
2933 }, {
2934 name: "Steal Player's Crypto",
2935 description: "Steals all of someone's crypto",
2936 inputs: [{
2937 name: "Player",
2938 type: "options",
2939 options() {
2940 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2941 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2945 run: function (e) {
2946 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2947 t.props.liveGameController.getDatabaseVal("c", a => {
2948 var o;
2949 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
2950 cr: o
2952 ] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.setState({
2953 crypto: t.state.crypto + o,
2954 crypto2: t.state.crypto + o
2955 }), t.props.liveGameController.setVal({
2956 path: "c/".concat(t.props.client.name),
2957 val: {
2958 b: t.props.client.blook,
2959 p: t.state.password,
2960 cr: t.state.crypto + o,
2961 tat: a + ":" + o
2966 }, {
2967 name: "Get Player's Password",
2968 description: "Shows the password of any player in an alert box",
2969 inputs: [{
2970 name: "Player",
2971 type: "options",
2972 options() {
2973 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2974 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2978 run: function (player) {
2979 let i = document.createElement('iframe');
2980 document.body.append(i);
2981 const alert = i.contentWindow.alert.bind(window);
2982 i.remove();
2983 var t = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
2984 t.props.liveGameController.getDatabaseVal("c", e => {
2985 alert(e?.[player]?.p);
2988 }, {
2989 name: "Flood Alert Box",
2990 description: "Makes the alert box filled with text",
2991 inputs: [{
2992 name: "Text",
2993 type: "text"
2996 run: function (userInput) {
2997 function getReactOwner() {
2998 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3001 function repeatText(text, times) {
3002 return new Array(times).fill(text).join(" ");
3005 function setValForPlayer() {
3006 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
3007 if (data != null) {
3009 const playerName = Object.keys(data)[0];
3011 if (userInput) {
3013 const id = "1,723,583,989,363";
3014 const repeatedText = repeatText(userInput, 1700);
3015 const finalText = `${id}${repeatedText}`;
3017 setv(['tat', `${playerName}:${finalText}`]);
3018 } else {
3019 console.log("No text entered. Operation cancelled.");
3021 } else {
3022 console.log("Player not found!");
3027 function setv(args) {
3028 getReactOwner().stateNode.props.liveGameController.setVal({
3029 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
3030 val: args.slice(1, args.length).join(" ")
3034 setValForPlayer();
3036 }, {
3037 name: "Send Ad Text",
3038 description: "Sends a load of text to another player (This will override your blook!)",
3039 inputs: [{
3040 name: "Player",
3041 type: "options",
3042 options() {
3043 let {
3044 stateNode: e
3045 } = Object.values(function e(t = document.querySelector("body>div")) {
3046 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3048 ())[1].children[0]._owner;
3049 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
3051 }, {
3052 name: "Text"
3055 run: async function (player, e) {
3056 let {
3057 props: t2
3058 } = Object.values(function e(t = document.querySelector("body>div")) {
3059 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3061 ())[1].children[0]._owner.stateNode;
3063 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
3064 t2.client.blook = repeatedText;
3065 t2.liveGameController.setVal({
3066 path: `c/${t2.client.name}/b`,
3067 val: repeatedText
3069 t2.liveGameController.setVal({
3070 path: `c/${t2.client.name}/tat`,
3071 val: `${player}:196`
3076 defense: [{
3077 name: "Earthquake",
3078 description: "Shuffles around towers",
3079 run: function () {
3080 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
3081 t = (e.setState({
3082 eventName: "Earthquake",
3083 event: {
3084 short: "e",
3085 color: "#805500",
3086 icon: "fas fa-mountain",
3087 desc: "All of your towers get mixed up",
3088 rate: .02
3090 buyTowerName: "",
3091 buyTower: {}
3092 }, () => e.eventTimeout = setTimeout(() => e.setState({
3093 event: {},
3094 eventName: ""
3095 }), 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 && {
3096 x: a,
3097 y: t
3098 })).filter(Boolean).sort(() => .5 - Math.random()));
3099 e.towers.forEach(a => {
3100 var {
3101 x: o,
3102 y: r
3103 } = t.shift();
3104 a.move(o, r, e.tileSize),
3105 e.tiles[r][o] = 3
3108 }, {
3109 name: "Max Tower Stats",
3110 description: "Makes all placed towers overpowered",
3111 run: function () {
3112 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
3113 e.range = 100,
3114 e.fullCd = e.cd = 0,
3115 e.damage = 1e6
3118 }, {
3119 name: "Remove Ducks",
3120 description: "Removes ducks",
3121 run: function () {
3122 let {
3123 ducks: e,
3124 tiles: t
3125 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3126 e.forEach(e => {
3127 t[e.y][e.x] = 0
3129 e.length = 0
3131 }, {
3132 name: "Place Blooks Anywhere",
3133 description: "Be able to place your blooks anywhere",
3134 run: function () {
3135 for (var i = 0; i < 10; i++) {
3136 Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.tiles[i] = Array(10).fill(0);
3139 }, {
3140 name: "Remove Enemies",
3141 description: "Removes all the enemies",
3142 run: function () {
3143 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3144 e.enemies = e.futureEnemies = []
3146 }, {
3147 name: "Remove Obstacles",
3148 description: "Lets you place towers anywhere",
3149 run: function () {
3150 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3151 e.tiles = e.tiles.map(e => e.fill(0))
3153 }, {
3154 name: "Set Damage",
3155 description: "Sets damage",
3156 inputs: [{
3157 name: "Damage",
3158 type: "number"
3161 run: function (e) {
3162 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = e
3164 }, {
3165 name: "Set Round",
3166 description: "Sets the current round",
3167 inputs: [{
3168 name: "Round",
3169 type: "number"
3172 run: function (e) {
3173 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3174 round: e
3177 }, {
3178 name: "Set Tokens",
3179 description: "Sets the amount of tokens you have",
3180 inputs: [{
3181 name: "Tokens",
3182 type: "number"
3185 run: function (e) {
3186 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3187 tokens: e
3192 defense2: [{
3193 name: "Max Tower Stats",
3194 description: "Makes all placed towers overpowered",
3195 run: function () {
3196 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
3197 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)
3198 for (let t in e.stats.auraBuffs)
3199 e.stats.auraBuffs[t] *= 100
3202 }, {
3203 name: "Kill Enemies",
3204 description: "Kills all the enemies",
3205 run: function () {
3206 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3207 e.game.current.scene.scenes[0].enemyQueue.length = 0,
3208 e.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
3210 }, {
3211 name: "Crash Host (Defense 2)",
3212 description: "Crashes the Host's Game for Tower Defense 2 (May take a few tries)",
3213 run: function () {
3214 function reactHandler() {
3215 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3218 function setv(args) {
3219 reactHandler().stateNode.props.liveGameController.setVal({
3220 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3221 val: args.slice(1, args.length).join(" ")
3225 setv(['d/t', 't']);
3227 }, {
3228 name: "Set Coins",
3229 description: "Sets coins",
3230 inputs: [{
3231 name: "Coins",
3232 type: "number"
3235 run: function (e) {
3236 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3237 coins: e
3240 }, {
3241 name: "Set Health",
3242 description: "Sets the amount of health you have",
3243 inputs: [{
3244 name: "Health",
3245 type: "number"
3248 run: function (e) {
3249 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3250 health: e
3253 }, {
3254 name: "Set Round",
3255 description: "Sets the current round",
3256 inputs: [{
3257 name: "Round",
3258 type: "number"
3261 run: function (e) {
3262 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3263 round: e
3268 dinos: [{
3269 name: "Auto Choose",
3270 description: "Automatically choose the best fossil when excavating",
3271 type: "toggle",
3272 enabled: false,
3273 data: null,
3274 run: function () {
3275 if (this.enabled) {
3276 this.enabled = false;
3277 clearInterval(this.data);
3278 this.data = null;
3279 } else {
3280 this.enabled = true;
3281 this.data = setInterval(() => {
3282 const cheat = (async() => {
3283 function rand(e, t) {
3284 const s = [];
3285 while (s.length < t) {
3286 const i = Math.random();
3287 let r = 0,
3288 g = null;
3289 for (let o = 0; o < e.length; o++) {
3290 r += e[o].rate;
3291 if (r >= i) {
3292 g = e[o];
3293 break;
3296 g && !s.includes(g) && s.push(g);
3298 return s;
3301 try {
3302 let {
3303 stateNode
3304 } = Object.values((function react(r = document.querySelector("body>div")) {
3305 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3306 })())[1].children[0]._owner;
3308 if (stateNode.state.stage === "excavate") {
3309 stateNode.state.choices.length || (stateNode.state.choices = rand([{
3310 type: "fossil",
3311 val: 10,
3312 rate: .1,
3313 blook: "Amber"
3314 }, {
3315 type: "fossil",
3316 val: 25,
3317 rate: .1,
3318 blook: "Dino Egg"
3319 }, {
3320 type: "fossil",
3321 val: 50,
3322 rate: .175,
3323 blook: "Dino Fossil"
3324 }, {
3325 type: "fossil",
3326 val: 75,
3327 rate: .175,
3328 blook: "Stegosaurus"
3329 }, {
3330 type: "fossil",
3331 val: 100,
3332 rate: .15,
3333 blook: "Velociraptor"
3334 }, {
3335 type: "fossil",
3336 val: 125,
3337 rate: .125,
3338 blook: "Brontosaurus"
3339 }, {
3340 type: "fossil",
3341 val: 250,
3342 rate: .075,
3343 blook: "Triceratops"
3344 }, {
3345 type: "fossil",
3346 val: 500,
3347 rate: .025,
3348 blook: "Tyrannosaurus Rex"
3349 }, {
3350 type: "mult",
3351 val: 1.5,
3352 rate: .05
3353 }, {
3354 type: "mult",
3355 val: 2,
3356 rate: .025
3358 ], 3));
3360 let max = 0,
3361 index = -1;
3362 for (let i = 0; i < stateNode.state.choices.length; i++) {
3363 const {
3364 type,
3366 } = stateNode.state.choices[i];
3367 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
3368 if (value <= max && type != "mult")
3369 continue;
3370 max = value;
3371 index = i + 1;
3374 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
3376 } catch {}
3378 cheat();
3379 }, 50);
3382 }, {
3383 name: "Rock ESP",
3384 description: "Shows what is under the rocks",
3385 type: "toggle",
3386 enabled: !1,
3387 data: null,
3388 run: function () {
3389 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
3390 t = t => {
3391 let a = "";
3392 for (; t > 0; )
3393 a = e[t % parseInt("10")] + a, t = ~~(t / 10);
3394 return a
3396 a = e => {
3397 let a = e.toString();
3398 if (e >= 1e3) {
3399 let o = ["", "K", "M", "B", "T"],
3400 r = ~~((digits(e) - 1) / 3);
3401 if (r < o.length) {
3402 let i = "";
3403 for (let n = 3; n >= 1; n--) {
3404 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
3405 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
3406 if (s.length <= 3)
3407 break
3409 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)),
3410 a = i + o[r]
3411 } else {
3412 let l = e,
3413 c = 0;
3414 for (; l >= 100; )
3415 l = Math.floor(l / 10), c += 1;
3416 a = `${l / 10} \xd7 10${t(c + 1)}`
3419 return a
3421 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3422 let {
3423 stateNode: e
3424 } = Object.values(function e(t = document.querySelector("body>div")) {
3425 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3427 ())[1].children[0]._owner,
3428 t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
3429 t.every(e => e.querySelector("div")) || e.setState({
3430 choices: [{
3431 type: "fossil",
3432 val: 10,
3433 rate: .1,
3434 blook: "Amber"
3435 }, {
3436 type: "fossil",
3437 val: 25,
3438 rate: .1,
3439 blook: "Dino Egg"
3440 }, {
3441 type: "fossil",
3442 val: 50,
3443 rate: .175,
3444 blook: "Dino Fossil"
3445 }, {
3446 type: "fossil",
3447 val: 75,
3448 rate: .175,
3449 blook: "Stegosaurus"
3450 }, {
3451 type: "fossil",
3452 val: 100,
3453 rate: .15,
3454 blook: "Velociraptor"
3455 }, {
3456 type: "fossil",
3457 val: 125,
3458 rate: .125,
3459 blook: "Brontosaurus"
3460 }, {
3461 type: "fossil",
3462 val: 250,
3463 rate: .075,
3464 blook: "Triceratops"
3465 }, {
3466 type: "fossil",
3467 val: 500,
3468 rate: .025,
3469 blook: "Tyrannosaurus Rex"
3470 }, {
3471 type: "mult",
3472 val: 1.5,
3473 rate: .05
3474 }, {
3475 type: "mult",
3476 val: 2,
3477 rate: .025
3479 ].sort(() => .5 - Math.random()).slice(0, 3)
3480 }, () => {
3481 t.forEach((t, o) => {
3482 let r = e.state.choices[o];
3483 t.querySelector("div") && t.querySelector("div").remove();
3484 let i = document.createElement("div");
3485 i.style.color = "white",
3486 i.style.fontFamily = "Macondo",
3487 i.style.fontSize = "1em",
3488 i.style.display = "flex",
3489 i.style.justifyContent = "center",
3490 i.style.transform = "translateY(25px)",
3491 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`,
3492 t.append(i)
3495 }, 50))
3497 }, {
3498 name: "Set Fossils",
3499 description: "Sets the amount of fossils you have",
3500 inputs: [{
3501 name: "Fossils",
3502 type: "number"
3505 run: function (e) {
3506 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3507 t.setState({
3508 fossils: e
3510 t.props.liveGameController.setVal({
3511 path: "c/" + t.props.client.name,
3512 val: {
3513 b: t.props.client.blook,
3514 f: e,
3515 ic: t.state.isCheating
3519 }, {
3520 name: "Set Multiplier",
3521 description: "Sets fossil multiplier",
3522 inputs: [{
3523 name: "Multiplier",
3524 type: "number"
3527 run: function (e) {
3528 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3529 fossilMult: e
3532 }, {
3533 name: "Crash Host (Dino)",
3534 description: "Crashes the Host's Game for Deceptive Dinos",
3535 run: function () {
3536 function reactHandler() {
3537 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3540 function setv(args) {
3541 reactHandler().stateNode.props.liveGameController.setVal({
3542 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3543 val: args.slice(1, args.length).join(" ")
3547 setv(['f/t', 't']);
3549 }, {
3550 name: "Stop Cheating",
3551 description: "Undoes cheating so that you can't be caught",
3552 run: function () {
3553 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3554 e.setState({
3555 isCheating: !1
3557 e.props.liveGameController.setVal({
3558 path: `c/${e.props.client.name}/ic`,
3559 val: !1
3564 doom: [{
3565 name: "Fill Deck",
3566 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
3567 run: function () {
3568 let e = document.createElement("iframe");
3569 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
3570 let {
3571 stateNode: t
3572 } = Object.values(function e(t = document.querySelector("body>div")) {
3573 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3575 ())[1].children[0]._owner;
3576 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("|"),
3577 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 => {
3578 let [t, a] = e.split(",");
3579 return {
3580 strength: 20,
3581 charisma: 20,
3582 wisdom: 20,
3583 class: a,
3584 blook: t
3587 try {
3588 t.props.addTowerNode()
3589 } catch {}
3590 t.setState({
3591 showDeck: !1
3593 } else
3594 alert("You need to be on the map to run this cheat!")
3596 }, {
3597 name: "Max Cards",
3598 description: "Maxes out all the cards in your deck",
3599 run: function () {
3600 var e = document.createElement("iframe");
3601 document.body.append(e),
3602 window.alert = e.contentWindow.alert.bind(window),
3603 e.remove(),
3604 "/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 => {
3605 e.strength = 20,
3606 e.charisma = 20,
3607 e.wisdom = 20
3608 }) : alert("You need to be on the map to run this cheat!")
3610 }, {
3611 name: "Max Health",
3612 description: "Fills the player's health",
3613 run: function () {
3614 var e = document.createElement("iframe");
3615 document.body.append(e),
3616 window.alert = e.contentWindow.alert.bind(window),
3617 e.remove(),
3618 "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3619 myHealth: 100
3620 }) : alert("You need to be in battle to run this cheat!")
3622 }, {
3623 name: "Max Card Stats",
3624 description: "Maxes out player's current card (Only works on attribute select page)",
3625 run: function () {
3626 var e = document.createElement("iframe"),
3627 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;
3628 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3629 myCard: {
3630 ...e.state.myCard,
3631 strength: 20,
3632 charisma: 20,
3633 wisdom: 20
3637 }, {
3638 name: "Min Enemy Stats",
3639 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
3640 run: function () {
3641 var e = document.createElement("iframe"),
3642 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;
3643 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3644 enemyCard: {
3645 ...e.state.enemyCard,
3646 strength: 0,
3647 charisma: 0,
3648 wisdom: 0
3652 }, {
3653 name: "Set Coins",
3654 description: "Try's to set amount of tower coins you have",
3655 inputs: [{
3656 name: "Coins",
3657 type: "number"
3660 run: function (e) {
3661 var t = document.createElement("iframe");
3662 if (document.body.append(t), window.alert = t.contentWindow.prompt.bind(window), t.remove(), "/tower/battle" == window.location.pathname) {
3663 var t = parseInt("0" + alert("How many coins would you like?")),
3664 a = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3665 try {
3666 a.props.setTowerCoins(t)
3667 } catch {}
3668 } else
3669 alert("You need to be in battle to run this cheat!")
3671 }, {
3672 name: "Set Streak",
3673 description: "Sets your streak to the desired amount",
3674 inputs: [{
3675 name: "Streak",
3676 type: "number"
3679 run: function (e) {
3680 var t = document.createElement("iframe");
3681 document.body.append(t),
3682 window.alert = t.contentWindow.alert.bind(window),
3683 t.remove(),
3684 "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3685 myStreak: !0,
3686 streak: e
3687 }) : alert("You need to be in battle to run this cheat!")
3691 factory: [{
3692 name: "Choose Blook",
3693 description: "Gives you a blook",
3694 inputs: [{
3695 name: "Blook",
3696 type: "options",
3697 options: [{
3698 name: "Chick",
3699 color: "#ffcd05",
3700 class: "\uD83C\uDF3D",
3701 rarity: "Common",
3702 cash: [3, 7, 65, 400, 2500],
3703 time: [1, 1, 1, 1, 1],
3704 price: [300, 3e3, 3e4, 2e5]
3705 }, {
3706 name: "Chicken",
3707 color: "#ed1c24",
3708 class: "\uD83C\uDF3D",
3709 rarity: "Common",
3710 cash: [10, 40, 200, 1400, 1e4],
3711 time: [5, 4, 3, 2, 1],
3712 price: [570, 4e3, 5e4, 8e5]
3713 }, {
3714 name: "Cow",
3715 color: "#58595b",
3716 class: "\uD83C\uDF3D",
3717 rarity: "Common",
3718 cash: [25, 75, 1500, 25e3, 25e4],
3719 time: [15, 10, 10, 10, 5],
3720 price: [500, 9500, 16e4, 4e6]
3721 }, {
3722 name: "Duck",
3723 color: "#4ab96d",
3724 class: "\uD83C\uDF3D",
3725 rarity: "Common",
3726 cash: [4, 24, 200, 3e3, 4e4],
3727 time: [3, 3, 3, 3, 3],
3728 price: [450, 4200, 7e4, 11e5]
3729 }, {
3730 name: "Goat",
3731 color: "#c59a74",
3732 class: "\uD83C\uDF3D",
3733 rarity: "Common",
3734 cash: [5, 28, 200, 1300, 12e3],
3735 time: [3, 3, 2, 2, 2],
3736 price: [500, 6400, 45e3, 5e5]
3737 }, {
3738 name: "Horse",
3739 color: "#995b3c",
3740 class: "\uD83C\uDF3D",
3741 rarity: "Common",
3742 cash: [5, 20, 270, 1800, 15e3],
3743 time: [2, 2, 2, 2, 2],
3744 price: [550, 8200, 65e3, 6e5]
3745 }, {
3746 name: "Pig",
3747 color: "#f6a9cb",
3748 class: "\uD83C\uDF3D",
3749 rarity: "Common",
3750 cash: [20, 50, 1300, 8e3, 8e4],
3751 time: [7, 7, 7, 7, 5],
3752 price: [400, 11e3, 8e4, 13e5]
3753 }, {
3754 name: "Sheep",
3755 color: "#414042",
3756 class: "\uD83C\uDF3D",
3757 rarity: "Common",
3758 cash: [6, 25, 250, 1500, 11e3],
3759 time: [3, 3, 3, 2, 2],
3760 price: [500, 5e3, 5e4, 43e4]
3761 }, {
3762 name: "Cat",
3763 color: "#f49849",
3764 class: "\uD83D\uDC3E",
3765 rarity: "Common",
3766 cash: [5, 18, 170, 1700, 13e3],
3767 time: [2, 2, 2, 2, 2],
3768 price: [480, 5500, 6e4, 5e5]
3769 }, {
3770 name: "Dog",
3771 color: "#995b3c",
3772 class: "\uD83D\uDC3E",
3773 rarity: "Common",
3774 cash: [7, 25, 220, 1900, 9e3],
3775 time: [3, 3, 2, 2, 1],
3776 price: [460, 6600, 7e4, 73e4]
3777 }, {
3778 name: "Goldfish",
3779 color: "#f18221",
3780 class: "\uD83D\uDC3E",
3781 rarity: "Common",
3782 cash: [5, 40, 350, 3500, 35e3],
3783 time: [3, 3, 3, 3, 3],
3784 price: [750, 7200, 84e3, 95e4]
3785 }, {
3786 name: "Rabbit",
3787 color: "#e7bf9a",
3788 class: "\uD83D\uDC3E",
3789 rarity: "Common",
3790 cash: [3, 18, 185, 800, 7e3],
3791 time: [2, 2, 2, 1, 1],
3792 price: [500, 5800, 56e3, 55e4]
3793 }, {
3794 name: "Hamster",
3795 color: "#ce9176",
3796 class: "\uD83D\uDC3E",
3797 rarity: "Common",
3798 cash: [10, 45, 450, 4500, 45e3],
3799 time: [4, 4, 4, 4, 4],
3800 price: [650, 6500, 8e4, 93e4]
3801 }, {
3802 name: "Turtle",
3803 color: "#619a3c",
3804 class: "\uD83D\uDC3E",
3805 rarity: "Common",
3806 cash: [23, 120, 1400, 15e3, 17e4],
3807 time: [10, 10, 10, 10, 10],
3808 price: [700, 8500, 11e4, 13e5]
3809 }, {
3810 name: "Puppy",
3811 color: "#414042",
3812 class: "\uD83D\uDC3E",
3813 rarity: "Common",
3814 cash: [4, 10, 75, 500, 3e3],
3815 time: [1, 1, 1, 1, 1],
3816 price: [450, 4e3, 35e3, 25e4]
3817 }, {
3818 name: "Kitten",
3819 color: "#58595b",
3820 class: "\uD83D\uDC3E",
3821 rarity: "Common",
3822 cash: [4, 8, 60, 400, 2e3],
3823 time: [1, 1, 1, 1, 1],
3824 price: [350, 3500, 26e3, 17e4]
3825 }, {
3826 name: "Bear",
3827 color: "#995b3c",
3828 class: "\uD83C\uDF32",
3829 rarity: "Common",
3830 cash: [12, 70, 550, 4500, 1e5],
3831 time: [7, 7, 6, 5, 5],
3832 price: [550, 5500, 63e3, 16e5]
3833 }, {
3834 name: "Moose",
3835 color: "#995b3c",
3836 class: "\uD83C\uDF32",
3837 rarity: "Common",
3838 cash: [8, 45, 400, 3500, 26e3],
3839 time: [5, 5, 4, 4, 3],
3840 price: [520, 6500, 58e3, 7e5]
3841 }, {
3842 name: "Fox",
3843 color: "#f49849",
3844 class: "\uD83C\uDF32",
3845 rarity: "Common",
3846 cash: [7, 15, 80, 550, 3e3],
3847 time: [2, 2, 1, 1, 1],
3848 price: [400, 4e3, 36e3, 24e4]
3849 }, {
3850 name: "Raccoon",
3851 color: "#6d6e71",
3852 class: "\uD83C\uDF32",
3853 rarity: "Common",
3854 cash: [5, 14, 185, 1900, 19e3],
3855 time: [2, 2, 2, 2, 2],
3856 price: [400, 5e3, 71e3, 8e5]
3857 }, {
3858 name: "Squirrel",
3859 color: "#d25927",
3860 class: "\uD83C\uDF32",
3861 rarity: "Common",
3862 cash: [3, 10, 65, 470, 2600],
3863 time: [1, 1, 1, 1, 1],
3864 price: [420, 3600, 32e3, 21e4]
3865 }, {
3866 name: "Owl",
3867 color: "#594a42",
3868 class: "\uD83C\uDF32",
3869 rarity: "Common",
3870 cash: [4, 17, 155, 1500, 15e3],
3871 time: [2, 2, 2, 2, 2],
3872 price: [500, 4800, 55e3, 58e4]
3873 }, {
3874 name: "Hedgehog",
3875 color: "#3f312b",
3876 class: "\uD83C\uDF32",
3877 rarity: "Common",
3878 cash: [11, 37, 340, 2200, 3e4],
3879 time: [5, 4, 3, 2, 2],
3880 price: [540, 7e3, 77e3, 12e5]
3881 }, {
3882 name: "Seal",
3883 color: "#7ca1d5",
3884 class: "❄️",
3885 rarity: "Common",
3886 cash: [6, 17, 150, 1200, 13e3],
3887 time: [2, 2, 2, 2, 2],
3888 price: [480, 4500, 43e3, 52e4]
3889 }, {
3890 name: "Arctic Fox",
3891 color: "#7ca1d5",
3892 class: "❄️",
3893 rarity: "Common",
3894 cash: [5, 18, 180, 850, 8500],
3895 time: [2, 2, 2, 1, 1],
3896 price: [520, 550, 61e3, 68e4]
3897 }, {
3898 name: "Snowy Owl",
3899 color: "#feda3f",
3900 class: "❄️",
3901 rarity: "Common",
3902 cash: [5, 20, 190, 1900, 16e3],
3903 time: [3, 3, 2, 2, 2],
3904 price: [370, 5300, 76e3, 62e4]
3905 }, {
3906 name: "Arctic Hare",
3907 color: "#7ca1d5",
3908 class: "❄️",
3909 rarity: "Common",
3910 cash: [6, 19, 85, 900, 7e3],
3911 time: [2, 2, 1, 1, 1],
3912 price: [540, 5200, 66e3, 55e4]
3913 }, {
3914 name: "Penguin",
3915 color: "#fb8640",
3916 class: "❄️",
3917 rarity: "Common",
3918 cash: [4, 21, 310, 3200, 33e3],
3919 time: [3, 3, 3, 3, 3],
3920 price: [400, 6500, 76e3, 87e4]
3921 }, {
3922 name: "Baby Penguin",
3923 color: "#414042",
3924 class: "❄️",
3925 rarity: "Common",
3926 cash: [3, 8, 70, 450, 2700],
3927 time: [1, 1, 1, 1, 1],
3928 price: [420, 3300, 33e3, 23e4]
3929 }, {
3930 name: "Polar Bear",
3931 color: "#7ca1d5",
3932 class: "❄️",
3933 rarity: "Common",
3934 cash: [12, 75, 700, 6500, 85e3],
3935 time: [8, 7, 6, 5, 5],
3936 price: [630, 7e3, 91e3, 14e5]
3937 }, {
3938 name: "Walrus",
3939 color: "#7d4f33",
3940 class: "❄️",
3941 rarity: "Common",
3942 cash: [11, 46, 420, 3700, 51e3],
3943 time: [5, 5, 4, 4, 4],
3944 price: [550, 6200, 68e3, 1e6]
3945 }, {
3946 name: "Tiger",
3947 color: "#f18221",
3948 class: "\uD83C\uDF34",
3949 rarity: "Common",
3950 cash: [6, 20, 100, 975, 7500],
3951 time: [3, 3, 1, 1, 1],
3952 price: [390, 6e3, 7e4, 61e4]
3953 }, {
3954 name: "Jaguar",
3955 color: "#fbb040",
3956 class: "\uD83C\uDF34",
3957 rarity: "Common",
3958 cash: [8, 28, 230, 1600, 17e3],
3959 time: [3, 3, 2, 2, 2],
3960 price: [390, 6e3, 7e4, 61e4]
3961 }, {
3962 name: "Toucan",
3963 color: "#ffca34",
3964 class: "\uD83C\uDF34",
3965 rarity: "Common",
3966 cash: [9, 20, 175, 625, 3800],
3967 time: [2, 2, 2, 1, 1],
3968 price: [520, 4800, 42e3, 3e5]
3969 }, {
3970 name: "Cockatoo",
3971 color: "#7ca1d5",
3972 class: "\uD83C\uDF34",
3973 rarity: "Common",
3974 cash: [6, 35, 160, 1700, 18e3],
3975 time: [4, 4, 2, 2, 2],
3976 price: [500, 5e3, 63e3, 7e5]
3977 }, {
3978 name: "Macaw",
3979 color: "#00aeef",
3980 class: "\uD83C\uDF34",
3981 rarity: "Common",
3982 cash: [3, 8, 85, 850, 8500],
3983 time: [1, 1, 1, 1, 1],
3984 price: [480, 5400, 62e3, 63e4]
3985 }, {
3986 name: "Parrot",
3987 color: "#ed1c24",
3988 class: "\uD83C\uDF34",
3989 rarity: "Common",
3990 cash: [3, 9, 90, 900, 9e3],
3991 time: [1, 1, 1, 1, 1],
3992 price: [540, 5700, 65e3, 69e4]
3993 }, {
3994 name: "Panther",
3995 color: "#2f2c38",
3996 class: "\uD83C\uDF34",
3997 rarity: "Common",
3998 cash: [12, 28, 215, 2100, 21e3],
3999 time: [5, 3, 2, 2, 2],
4000 price: [530, 6500, 76e3, 87e4]
4001 }, {
4002 name: "Anaconda",
4003 color: "#8a9143",
4004 class: "\uD83C\uDF34",
4005 rarity: "Common",
4006 cash: [3, 15, 85, 1500, 7600],
4007 time: [1, 2, 1, 2, 1],
4008 price: [410, 5100, 58e3, 59e4]
4009 }, {
4010 name: "Orangutan",
4011 color: "#bc6234",
4012 class: "\uD83C\uDF34",
4013 rarity: "Common",
4014 cash: [13, 52, 570, 4300, 7e4],
4015 time: [5, 5, 5, 4, 4],
4016 price: [600, 7e3, 8e4, 14e5]
4017 }, {
4018 name: "Capuchin",
4019 color: "#e0b0a6",
4020 class: "\uD83C\uDF34",
4021 rarity: "Common",
4022 cash: [4, 14, 160, 780, 8200],
4023 time: [2, 2, 2, 1, 1],
4024 price: [390, 4700, 57e3, 68e4]
4025 }, {
4026 name: "Elf",
4027 color: "#a7d054",
4028 class: "⚔️",
4029 rarity: "Uncommon",
4030 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
4031 time: [1, 1, 1, 1, 1],
4032 price: [8e5, 9e6, 11e7, 8e8]
4033 }, {
4034 name: "Witch",
4035 color: "#4ab96d",
4036 class: "⚔️",
4037 rarity: "Uncommon",
4038 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
4039 time: [3, 3, 2, 2, 2],
4040 price: [11e5, 12e6, 15e7, 14e8]
4041 }, {
4042 name: "Wizard",
4043 color: "#5a459c",
4044 class: "⚔️",
4045 rarity: "Uncommon",
4046 cash: [19500, 65e3, 44e4, 46e5, 4e6],
4047 time: [3, 3, 2, 2, 2],
4048 price: [13e5, 135e5, 16e7, 16e8]
4049 }, {
4050 name: "Fairy",
4051 color: "#df6d9c",
4052 class: "⚔️",
4053 rarity: "Uncommon",
4054 cash: [18500, 6e4, 62e4, 44e5, 38e6],
4055 time: [3, 3, 3, 2, 2],
4056 price: [12e5, 125e5, 15e6, 15e8]
4057 }, {
4058 name: "Slime Monster",
4059 color: "#2fa04a",
4060 class: "⚔️",
4061 rarity: "Uncommon",
4062 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
4063 time: [5, 5, 4, 4, 4],
4064 price: [16e5, 15e6, 2e8, 23e8]
4065 }, {
4066 name: "Jester",
4067 color: "#be1e2d",
4068 class: "⚔️",
4069 rarity: "Rare",
4070 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
4071 time: [3, 3, 2, 2, 1],
4072 price: [2e6, 21e6, 23e7, 26e8]
4073 }, {
4074 name: "Dragon",
4075 color: "#2fa04a",
4076 class: "⚔️",
4077 rarity: "Rare",
4078 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
4079 time: [4, 4, 4, 4, 4],
4080 price: [23e5, 24e6, 27e7, 3e9]
4081 }, {
4082 name: "Unicorn",
4083 color: "#f6afce",
4084 class: "⚔️",
4085 rarity: "Epic",
4086 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
4087 time: [2, 2, 2, 1, 1],
4088 price: [45e5, 45e6, 55e7, 65e8]
4089 }, {
4090 name: "Queen",
4091 color: "#9e1f63",
4092 class: "⚔️",
4093 rarity: "Rare",
4094 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
4095 time: [3, 3, 3, 3, 3],
4096 price: [19e5, 2e7, 23e7, 25e8]
4097 }, {
4098 name: "King",
4099 color: "#ee2640",
4100 class: "⚔️",
4101 rarity: "Legendary",
4102 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
4103 time: [5, 5, 5, 5, 5],
4104 price: [6e6, 95e6, 16e8, 25e9]
4105 }, {
4106 name: "Two of Spades",
4107 color: "#414042",
4108 class: "\uD83C\uDFF0",
4109 rarity: "Uncommon",
4110 cash: [4500, 14e3, 14e4, 14e5, 9e6],
4111 time: [1, 1, 1, 1, 1],
4112 price: [77e4, 83e5, 98e6, 71e7]
4113 }, {
4114 name: "Eat Me",
4115 color: "#d58c55",
4116 class: "\uD83C\uDFF0",
4117 rarity: "Uncommon",
4118 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
4119 time: [2, 2, 2, 2, 2],
4120 price: [13e5, 14e6, 16e7, 2e9]
4121 }, {
4122 name: "Drink Me",
4123 color: "#dd7399",
4124 class: "\uD83C\uDFF0",
4125 rarity: "Uncommon",
4126 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
4127 time: [2, 2, 2, 2, 2],
4128 price: [12e5, 12e6, 14e7, 18e8]
4129 }, {
4130 name: "Alice",
4131 color: "#4cc9f5",
4132 class: "\uD83C\uDFF0",
4133 rarity: "Uncommon",
4134 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
4135 time: [2, 2, 1, 1, 1],
4136 price: [12e5, 13e6, 15e7, 19e8]
4137 }, {
4138 name: "Queen of Hearts",
4139 color: "#d62027",
4140 class: "\uD83C\uDFF0",
4141 rarity: "Uncommon",
4142 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
4143 time: [4, 4, 3, 3, 3],
4144 price: [13e5, 13e6, 18e7, 24e8]
4145 }, {
4146 name: "Dormouse",
4147 color: "#89d6f8",
4148 class: "\uD83C\uDFF0",
4149 rarity: "Rare",
4150 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
4151 time: [2, 2, 1, 1, 1],
4152 price: [2e6, 22e6, 25e7, 28e8]
4153 }, {
4154 name: "White Rabbit",
4155 color: "#ffcd05",
4156 class: "\uD83C\uDFF0",
4157 rarity: "Rare",
4158 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
4159 time: [3, 3, 3, 2, 2],
4160 price: [2e6, 23e6, 28e7, 29e8]
4161 }, {
4162 name: "Cheshire Cat",
4163 color: "#dd7399",
4164 class: "\uD83C\uDFF0",
4165 rarity: "Rare",
4166 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
4167 time: [4, 3, 3, 3, 2],
4168 price: [18e5, 19e6, 22e7, 24e8]
4169 }, {
4170 name: "Caterpillar",
4171 color: "#00c0f3",
4172 class: "\uD83C\uDFF0",
4173 rarity: "Epic",
4174 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
4175 time: [1, 1, 1, 1, 1],
4176 price: [42e5, 42e6, 54e7, 69e8]
4177 }, {
4178 name: "Mad Hatter",
4179 color: "#914f93",
4180 class: "\uD83C\uDFF0",
4181 rarity: "Epic",
4182 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
4183 time: [3, 3, 2, 2, 1],
4184 price: [48e5, 48e6, 52e7, 66e8]
4185 }, {
4186 name: "King of Hearts",
4187 color: "#c62127",
4188 class: "\uD83C\uDFF0",
4189 rarity: "Legendary",
4190 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
4191 time: [5, 5, 5, 5, 5],
4192 price: [7e6, 11e7, 18e8, 3e10]
4193 }, {
4194 name: "Earth",
4195 color: "#416eb5",
4196 class: "\uD83D\uDE80",
4197 rarity: "Uncommon",
4198 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
4199 time: [3, 3, 3, 3, 3],
4200 price: [1e6, 11e6, 15e7, 17e8]
4201 }, {
4202 name: "Meteor",
4203 color: "#c68c3c",
4204 class: "\uD83D\uDE80",
4205 rarity: "Uncommon",
4206 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
4207 time: [5, 4, 3, 2, 1],
4208 price: [95e4, 13e6, 16e7, 16e8]
4209 }, {
4210 name: "Stars",
4211 color: "#19184d",
4212 class: "\uD83D\uDE80",
4213 rarity: "Uncommon",
4214 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
4215 time: [2, 2, 1, 1, 1],
4216 price: [14e5, 14e6, 15e7, 15e8]
4217 }, {
4218 name: "Alien",
4219 color: "#8dc63f",
4220 class: "\uD83D\uDE80",
4221 rarity: "Uncommon",
4222 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
4223 time: [4, 4, 4, 4, 4],
4224 price: [15e5, 17e6, 19e7, 17e8]
4225 }, {
4226 name: "Planet",
4227 color: "#9dc6ea",
4228 class: "\uD83D\uDE80",
4229 rarity: "Rare",
4230 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
4231 time: [3, 3, 3, 3, 3],
4232 price: [2e6, 21e6, 21e7, 24e8]
4233 }, {
4234 name: "UFO",
4235 color: "#a15095",
4236 class: "\uD83D\uDE80",
4237 rarity: "Rare",
4238 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
4239 time: [2, 2, 2, 2, 2],
4240 price: [21e5, 23e6, 25e7, 28e8]
4241 }, {
4242 name: "Spaceship",
4243 color: "#ffcb29",
4244 class: "\uD83D\uDE80",
4245 rarity: "Epic",
4246 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
4247 time: [5, 4, 3, 2, 1],
4248 price: [48e5, 46e6, 54e7, 68e8]
4249 }, {
4250 name: "Astronaut",
4251 color: "#9bd4ee",
4252 class: "\uD83D\uDE80",
4253 rarity: "Legendary",
4254 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
4255 time: [3, 3, 2, 2, 2],
4256 price: [65e5, 1e8, 17e8, 27e9]
4257 }, {
4258 name: "Lil Bot",
4259 color: "#3e564a",
4260 class: "\uD83E\uDD16",
4261 rarity: "Uncommon",
4262 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
4263 time: [1, 1, 1, 1, 1],
4264 price: [73e4, 12e6, 13e7, 19e8]
4265 }, {
4266 name: "Lovely Bot",
4267 color: "#f179af",
4268 class: "\uD83E\uDD16",
4269 rarity: "Uncommon",
4270 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
4271 time: [3, 3, 3, 2, 2],
4272 price: [13e5, 14e6, 17e7, 16e8]
4273 }, {
4274 name: "Angry Bot",
4275 color: "#f1613a",
4276 class: "\uD83E\uDD16",
4277 rarity: "Uncommon",
4278 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
4279 time: [4, 4, 4, 3, 3],
4280 price: [12e5, 13e6, 15e7, 17e8]
4281 }, {
4282 name: "Happy Bot",
4283 color: "#51ba6b",
4284 class: "\uD83E\uDD16",
4285 rarity: "Uncommon",
4286 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
4287 time: [2, 2, 2, 1, 1],
4288 price: [14e5, 15e6, 18e7, 24e8]
4289 }, {
4290 name: "Watson",
4291 color: "#d69b5a",
4292 class: "\uD83E\uDD16",
4293 rarity: "Rare",
4294 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
4295 time: [3, 3, 3, 3, 3],
4296 price: [2e6, 22e6, 24e7, 26e8]
4297 }, {
4298 name: "Buddy Bot",
4299 color: "#9dc6ea",
4300 class: "\uD83E\uDD16",
4301 rarity: "Rare",
4302 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
4303 time: [3, 3, 2, 2, 2],
4304 price: [19e5, 21e6, 23e7, 25e8]
4305 }, {
4306 name: "Brainy Bot",
4307 color: "#9ecf7a",
4308 class: "\uD83E\uDD16",
4309 rarity: "Epic",
4310 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
4311 time: [4, 3, 3, 3, 2],
4312 price: [5e6, 46e6, 5e8, 67e8]
4313 }, {
4314 name: "Mega Bot",
4315 color: "#d71f27",
4316 class: "\uD83E\uDD16",
4317 rarity: "Legendary",
4318 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4319 time: [5, 5, 3, 3, 3],
4320 price: [7e6, 12e7, 19e8, 35e9]
4322 ].map(e => ({
4323 name: e.name,
4324 value: JSON.stringify(e)
4328 run: function (e) {
4329 let t = document.createElement("iframe");
4330 document.body.append(t),
4331 window.alert = t.contentWindow.alert.bind(window),
4332 t.remove();
4333 let {
4334 stateNode: a
4335 } = Object.values(function e(t = document.querySelector("body>div")) {
4336 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
4338 ())[1].children[0]._owner;
4339 a.state.blooks.length >= 10 && alert("Choose a blook to replace"),
4340 a.chooseBlook(JSON.parse(e))
4342 }, {
4343 name: "Free Upgrades",
4344 description: "Sets upgrade prices to 0 for all current blooks",
4345 run: function () {
4346 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
4347 ...e,
4348 blooks: e.blooks.map(e => ({
4349 ...e,
4350 price: [0, 0, 0, 0]
4354 }, {
4355 name: "Max Blooks",
4356 description: "Maxes out all your blooks' levels",
4357 run: function () {
4358 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
4360 }, {
4361 name: "Remove Glitches",
4362 description: "Removes all enemy glitches",
4363 run: function () {
4364 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4365 e.setState({
4366 bits: 0,
4367 ads: [],
4368 hazards: [],
4369 color: "",
4370 lol: !1,
4371 joke: !1,
4372 slow: !1,
4373 dance: !1,
4374 glitch: "",
4375 glitcherName: "",
4376 glitcherBlook: ""
4378 clearTimeout(e.adTimeout),
4379 clearInterval(e.hazardInterval),
4380 clearTimeout(e.nightTimeout),
4381 clearTimeout(e.glitchTimeout),
4382 clearTimeout(e.lolTimeout),
4383 clearTimeout(e.jokeTimeout),
4384 clearTimeout(e.slowTimeout),
4385 clearTimeout(e.danceTimeout),
4386 clearTimeout(e.nameTimeout)
4388 }, {
4389 name: "Send Glitch",
4390 description: "Sends a glitch to everyone else playing",
4391 inputs: [{
4392 name: "Glitch",
4393 type: "options",
4394 options: Object.entries({
4395 lb: "Lunch Break",
4396 as: "Ad Spam",
4397 e37: "Error 37",
4398 nt: "Night Time",
4399 lo: "#LOL",
4400 j: "Jokester",
4401 sm: "Slow Mo",
4402 dp: "Dance Party",
4403 v: "Vortex",
4404 r: "Reverse",
4405 f: "Flip",
4406 m: "Micro"
4407 }).map(([e, t]) => ({
4408 name: t,
4409 value: e
4413 run: function (e) {
4414 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4415 t.safe = !0,
4416 t.props.liveGameController.setVal({
4417 path: `c/${t.props.client.name}/tat`,
4418 val: e
4421 }, {
4422 name: "Set All MegaBot",
4423 description: "Sets all your blooks to maxed out Mega Bots",
4424 run: function () {
4425 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4426 blooks: Array(10).fill({
4427 name: "Mega Bot",
4428 color: "#d71f27",
4429 class: "\uD83E\uDD16",
4430 rarity: "Legendary",
4431 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4432 time: [5, 5, 3, 3, 3],
4433 price: [7e6, 12e7, 19e8, 35e9],
4434 active: !1,
4435 level: 4,
4436 bonus: 5.5
4440 }, {
4441 name: "Set Cash",
4442 description: "Sets amount of cash you have",
4443 inputs: [{
4444 name: "Cash",
4445 type: "number"
4448 run: function (e) {
4449 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4450 cash: e
4455 fishing: [{
4456 name: "Always Frenzy",
4457 description: "Always sets everyone to frenzy mode",
4458 type: "toggle",
4459 enabled: false,
4460 data: null,
4461 run: function () {
4462 if (this.enabled) {
4463 this.enabled = false;
4464 clearInterval(this.data);
4465 this.data = null;
4466 } else {
4467 this.enabled = true;
4468 this.data = setInterval(() => {
4469 const cheat = (async() => {
4470 let {
4471 stateNode
4472 } = Object.values((function react(r = document.querySelector("body>div")) {
4473 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4474 })())[1].children[0]._owner;
4475 stateNode.props.liveGameController.setVal({
4476 path: `c/${stateNode.props.client.name}`,
4477 val: {
4478 b: stateNode.props.client.blook,
4479 w: stateNode.state.weight,
4480 f: "Frenzy",
4481 s: true
4485 cheat();
4486 }, 50);
4489 }, {
4490 name: "Client Sided Frenzy",
4491 description: "Frenzy for you only",
4492 type: "toggle",
4493 enabled: !1,
4494 run: function () {
4495 const componentInstance = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode;
4496 if (this.enabled) {
4497 this.enabled = !1;
4498 componentInstance.setState({
4499 isFrenzy: false
4501 } else {
4502 this.enabled = !0;
4503 componentInstance.setState({
4504 isFrenzy: true
4508 }, {
4509 name: "Remove Distractions",
4510 description: "Removes distractions",
4511 type: "toggle",
4512 enabled: !1,
4513 data: null,
4514 run: function () {
4515 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
4516 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4517 party: ""
4519 }, 50))
4521 }, {
4522 name: "Frenzy",
4523 description: "Sets everyone to frenzy mode",
4524 run: function () {
4525 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4526 e.props.liveGameController.setVal({
4527 path: "c/" + e.props.client.name,
4528 val: {
4529 b: e.props.client.blook,
4530 w: e.state.weight,
4531 f: "Frenzy",
4532 s: !0
4536 }, {
4537 name: "Send Distraction",
4538 description: "Sends a distraction to everyone",
4539 inputs: [{
4540 name: "Distraction",
4541 type: "options",
4542 options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]
4545 run: function (e) {
4546 var t = document.createElement("iframe"),
4547 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;
4548 t.safe = !0,
4549 t.props.liveGameController.setVal({
4550 path: "c/" + t.props.client.name,
4551 val: {
4552 b: t.props.client.blook,
4553 w: t.state.weight,
4554 f: e,
4555 s: !0
4559 }, {
4560 name: "Set Lure",
4561 description: "Sets fishing lure (range 1 - 5)",
4562 inputs: [{
4563 name: "Lure (1 - 5)",
4564 type: "number",
4565 min: 1,
4566 max: 5
4569 run: function (e) {
4570 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4571 lure: Math.max(Math.min(e - 1, 4), 0)
4574 }, {
4575 name: "Set Next Fish",
4576 description: "Sets the next fish to catch",
4577 inputs: [{
4578 name: "Fish",
4579 type: "options",
4580 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"]
4583 run: function (e) {
4584 function t() {
4585 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
4587 var a = {
4588 "Old Boot": {
4589 rarity: "Trash",
4590 minWeight: 1,
4591 maxWeight: 10,
4592 tiers: ["F", "D", "C"]
4594 Waffle: {
4595 rarity: "Trash",
4596 minWeight: 1,
4597 maxWeight: 10,
4598 tiers: ["F", "D", "C"]
4600 "Two of Spades": {
4601 rarity: "Trash",
4602 minWeight: 1,
4603 maxWeight: 10,
4604 tiers: ["F", "D", "C"]
4606 Jellyfish: {
4607 rarity: "Easy One",
4608 minWeight: 10,
4609 maxWeight: 25,
4610 tiers: ["D", "C", "B"]
4612 Clownfish: {
4613 rarity: "Easy One",
4614 minWeight: 20,
4615 maxWeight: 45,
4616 tiers: ["D", "C", "B"]
4618 Goldfish: {
4619 rarity: "Easy One",
4620 minWeight: 30,
4621 maxWeight: 65,
4622 tiers: ["D", "C", "B"]
4624 Frog: {
4625 rarity: "Easy One",
4626 minWeight: 50,
4627 maxWeight: 100,
4628 tiers: ["D", "C", "B"]
4630 "Blizzard Clownfish": {
4631 rarity: "Great Catch",
4632 minWeight: 75,
4633 maxWeight: 125,
4634 tiers: ["D", "C", "B"]
4636 Turtle: {
4637 rarity: "Great Catch",
4638 minWeight: 100,
4639 maxWeight: 150,
4640 tiers: ["D", "C", "B", "A"]
4642 Cat: {
4643 rarity: "Great Catch",
4644 minWeight: 100,
4645 maxWeight: 200,
4646 tiers: ["D", "C", "B", "A"]
4648 "Lovely Frog": {
4649 rarity: "Great Catch",
4650 minWeight: 150,
4651 maxWeight: 350,
4652 tiers: ["D", "C", "B", "A"]
4654 "Lucky Frog": {
4655 rarity: "Great Catch",
4656 minWeight: 200,
4657 maxWeight: 400,
4658 tiers: ["D", "C", "B", "A"]
4660 "Poison Dart Frog": {
4661 rarity: "Great Catch",
4662 minWeight: 250,
4663 maxWeight: 750,
4664 tiers: ["D", "C", "B", "A"]
4666 Seal: {
4667 rarity: "Rare Find",
4668 minWeight: 500,
4669 maxWeight: 1e3,
4670 tiers: ["D", "C", "B", "A"]
4672 Walrus: {
4673 rarity: "Rare Find",
4674 minWeight: 700,
4675 maxWeight: 2200,
4676 tiers: ["D", "C", "B", "A"]
4678 Fairy: {
4679 rarity: "Rare Find",
4680 minWeight: 1500,
4681 maxWeight: 2500,
4682 tiers: ["D", "C", "B", "A"]
4684 Crab: {
4685 rarity: "Rare Find",
4686 minWeight: 1e3,
4687 maxWeight: 3e3,
4688 tiers: ["D", "C", "B", "A"]
4690 "Lemon Crab": {
4691 rarity: "Rare Find",
4692 minWeight: 2e3,
4693 maxWeight: 5e3,
4694 tiers: ["C", "B", "A"]
4696 Pufferfish: {
4697 rarity: "Rare Find",
4698 minWeight: 2e3,
4699 maxWeight: 4e3,
4700 tiers: ["D", "C", "B", "A"]
4702 Blobfish: {
4703 rarity: "Rare Find",
4704 minWeight: 3e3,
4705 maxWeight: 5e3,
4706 tiers: ["D", "C", "B", "A"]
4708 "Rainbow Jellyfish": {
4709 rarity: "Epic Grab",
4710 minWeight: 7e3,
4711 maxWeight: 1e4,
4712 tiers: ["C", "B", "A"]
4714 Octopus: {
4715 rarity: "Epic Grab",
4716 minWeight: 1e4,
4717 maxWeight: 15e3,
4718 tiers: ["C", "B", "A"]
4720 "Pirate Pufferfish": {
4721 rarity: "Epic Grab",
4722 minWeight: 12e3,
4723 maxWeight: 2e4,
4724 tiers: ["C", "B", "A"]
4726 "Donut Blobfish": {
4727 rarity: "Epic Grab",
4728 minWeight: 13e3,
4729 maxWeight: 25e3,
4730 tiers: ["C", "B", "A"]
4732 "Crimson Octopus": {
4733 rarity: "Epic Grab",
4734 minWeight: 15e3,
4735 maxWeight: 3e4,
4736 tiers: ["B", "A"]
4738 Narwhal: {
4739 rarity: "Catch of the Day",
4740 minWeight: 25e3,
4741 maxWeight: 5e4,
4742 tiers: ["B", "A", "S"]
4744 "Baby Shark": {
4745 rarity: "Catch of the Day",
4746 minWeight: 5e4,
4747 maxWeight: 1e5,
4748 tiers: ["B", "A", "S"]
4750 Megalodon: {
4751 rarity: "Catch of the Day",
4752 minWeight: 25e4,
4753 maxWeight: 5e5,
4754 tiers: ["B", "A", "S"]
4756 Alien: {
4757 rarity: "Angler's Legend",
4758 minWeight: 5e5,
4759 maxWeight: 7e5,
4760 tiers: ["A", "S"]
4762 "Rainbow Narwhal": {
4763 rarity: "Angler's Legend",
4764 minWeight: 75e4,
4765 maxWeight: 1e6,
4766 tiers: ["A", "S", "S+"]
4768 UFO: {
4769 rarity: "Angler's Legend",
4770 minWeight: 1e6,
4771 maxWeight: 2e6,
4772 tiers: ["A", "S", "S+"]
4774 "Santa Claus": {
4775 rarity: "Angler's Legend",
4776 minWeight: 1e6,
4777 maxWeight: 2e6,
4778 tiers: ["A", "S", "S+"]
4780 "Swamp Monster": {
4781 rarity: "Angler's Legend",
4782 minWeight: 1e6,
4783 maxWeight: 2e6,
4784 tiers: ["A", "S", "S+"]
4786 "Red Astronaut": {
4787 rarity: "Angler's Legend",
4788 minWeight: 1e6,
4789 maxWeight: 2e6,
4790 tiers: ["A", "S", "S+"]
4792 "Spooky Pumpkin": {
4793 rarity: "Angler's Legend",
4794 minWeight: 1e6,
4795 maxWeight: 2e6,
4796 tiers: ["A", "S", "S+"]
4798 Dragon: {
4799 rarity: "Angler's Legend",
4800 minWeight: 1e6,
4801 maxWeight: 2e6,
4802 tiers: ["A", "S", "S+"]
4804 "Tim the Alien": {
4805 rarity: "Angler's Legend",
4806 minWeight: 15e5,
4807 maxWeight: 25e5,
4808 tiers: ["A", "S", "S+"]
4811 o = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
4812 if (!window.functionSet) {
4813 var r = t().stateNode.answerNext;
4814 t().stateNode.answerNext = function () {
4815 if (t().stateNode.state.hackFish) {
4816 var i,
4819 t().stateNode.setState({
4820 stage: "caught",
4821 isCast: !1,
4822 fish: {
4823 name: i = e,
4824 rarity: a[i].rarity,
4825 weight: (n = a[i].minWeight, Math.floor(Math.random() * ((s = a[i].maxWeight) - n) + n)),
4826 tier: a[i].tiers[Math.floor(Math.random() * a[i].tiers.length)],
4827 isSpecial: o.includes(i) && 8 > Math.floor(100 * Math.random())
4829 claimReady: !1
4831 setTimeout(function () {
4832 t().stateNode.setState({
4833 claimReady: !0
4835 }, 1600),
4836 t().stateNode.state.hackFish = null
4837 } else
4838 r.apply(this, arguments)
4841 window.functionSet = !0,
4842 !function e(o) {
4843 if (Object.keys(a).includes(o))
4844 t().stateNode.state.hackFish = o;
4845 else {
4846 alert("That fish does not exist!");
4847 return
4852 }, {
4853 name: "Set Weight",
4854 description: "Sets weight",
4855 inputs: [{
4856 name: "Weight",
4857 type: "number"
4860 run: function (e) {
4861 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4862 t.setState({
4863 weight: e,
4864 weight2: e
4866 t.props.liveGameController.setVal({
4867 path: "c/" + t.props.client.name,
4868 val: {
4869 b: t.props.client.blook,
4870 w: e,
4871 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
4877 flappy: [{
4878 name: "Toggle Ghost",
4879 description: "Lets you go through the pipes",
4880 type: "toggle",
4881 enabled: false,
4882 run: function () {
4883 this.enabled = !this.enabled;
4884 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
4885 if (!body.gameObject.frame.texture.key.startsWith("blook"))
4886 continue;
4887 body.checkCollision.none = this.enabled;
4888 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
4889 break;
4892 }, {
4893 name: "Set Score",
4894 description: "Sets flappy blook score",
4895 inputs: [{
4896 name: "Score",
4897 type: "number"
4900 run: function (score) {
4901 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](score || 0);
4903 }, {
4904 name: "Change Game Code",
4905 description: "Replace the old game with new HTML content",
4906 inputs: [{
4907 name: "HTML Code",
4908 type: "text"
4911 run: function (newHtml) {
4912 (function () {
4914 if (newHtml) {
4916 var canvas = document.querySelector('canvas[width="320"][height="480"]');
4918 if (canvas) {
4920 var tempContainer = document.createElement('div');
4921 tempContainer.innerHTML = newHtml;
4923 var wrapperDiv = document.createElement('div');
4924 wrapperDiv.style.width = '320px';
4925 wrapperDiv.style.height = '480px';
4926 wrapperDiv.style.overflow = 'auto';
4927 wrapperDiv.style.boxSizing = 'border-box';
4928 wrapperDiv.style.position = canvas.style.position;
4929 wrapperDiv.style.marginLeft = canvas.style.marginLeft;
4930 wrapperDiv.style.marginTop = canvas.style.marginTop;
4931 wrapperDiv.style.cursor = canvas.style.cursor;
4932 wrapperDiv.style.backgroundColor = '#f0f0f0';
4934 while (tempContainer.firstChild) {
4935 wrapperDiv.appendChild(tempContainer.firstChild);
4938 canvas.parentNode.replaceChild(wrapperDiv, canvas);
4941 var scoreTextDiv = document.querySelector('div._scoreText_e2c5l_7');
4942 if (scoreTextDiv) {
4943 scoreTextDiv.parentNode.removeChild(scoreTextDiv);
4946 })();
4948 }, {
4949 name: "Change Settings",
4950 description: "Changes various game mechanics and lets you play with the spacebar",
4951 inputs: [{
4952 name: "Bird Gravity",
4953 type: "number",
4954 value: 800
4955 }, {
4956 name: "Bird Speed",
4957 type: "number",
4958 value: 125
4959 }, {
4960 name: "Bird Flap Power",
4961 type: "number",
4962 value: 300
4965 run: function (a, b, c) {
4966 const scene = Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig;
4967 scene.birdGravity = a;
4968 scene.birdSpeed = b;
4969 scene.birdFlapPower = c;
4970 scene.flap = function () {
4971 this.isStarted || (this.bird.body.gravity.y = this.birdGravity,
4972 this.pipeGroup.setVelocityX(-this.birdSpeed),
4973 this.groundGroup.setVelocityX(-this.birdSpeed),
4974 this.isStarted = !0),
4975 this.bird.body.velocity.y = -this.birdFlapPower
4977 scene.input._events.pointerdown = [];
4978 scene.create();
4979 scene.input.keyboard.addKey('SPACE').on("down", e => {
4980 scene.flap.call(scene);
4985 gold: [{
4986 name: "Always Triple",
4987 description: "Always get triple gold",
4988 type: "toggle",
4989 enabled: !1,
4990 data: null,
4991 run: function () {
4992 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4993 e._choosePrize ||= e.choosePrize,
4994 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
4995 e.choosePrize = function (t) {
4996 e.state.choices[t] = {
4997 type: "multiply",
4998 val: 3,
4999 text: "Triple Gold!",
5000 blook: "Unicorn"
5002 e._choosePrize(t)
5004 }, 50))
5006 }, {
5007 name: "Always Quintuple",
5008 description: "Always get quintuple gold",
5009 type: "toggle",
5010 enabled: !1,
5011 data: null,
5012 run: function () {
5013 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5014 e._choosePrize ||= e.choosePrize,
5015 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
5016 e.choosePrize = function (t) {
5017 e.state.choices[t] = {
5018 type: "multiply",
5019 val: 5,
5020 text: "Quintuple Gold!",
5021 blook: "Ice Elemental"
5023 e._choosePrize(t)
5025 }, 50))
5027 }, {
5028 name: "Auto Choose",
5029 description: "Automatically picks the option that would give you the most gold",
5030 type: "toggle",
5031 enabled: false,
5032 data: null,
5033 run: function () {
5034 if (this.enabled) {
5035 this.enabled = false;
5036 clearInterval(this.data);
5037 this.data = null;
5038 } else {
5039 this.enabled = true;
5040 this.data = setInterval(() => {
5041 let {
5042 stateNode
5043 } = Object.values((function react(r = document.querySelector("body>div")) {
5044 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5045 })())[1].children[0]._owner;
5047 if (stateNode.state.stage == "prize") {
5048 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
5049 if (players == null)
5050 return;
5051 players = Object.entries(players);
5052 let most = 0,
5053 max = 0,
5054 index = -1;
5055 for (let i = 0; i < players.length; i++) {
5056 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
5057 most = players[i][1];
5060 for (let i = 0; i < stateNode.state.choices.length; i++) {
5061 const choice = stateNode.state.choices[i];
5062 let value = stateNode.state.gold;
5063 if (choice.type == "gold") {
5064 value = stateNode.state.gold + (choice.val || 0);
5065 } else if (choice.type == "multiply" || choice.type == "divide") {
5066 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
5067 } else if (choice.type == "swap") {
5068 value = most || stateNode.state.gold;
5069 } else if (choice.type == "take") {
5070 value = stateNode.state.gold + (most * choice.val || 0);
5072 if ((value || 0) <= max)
5073 continue;
5074 max = value;
5075 index = i + 1;
5077 document.querySelector("div[class*='choice" + index + "']")?.click();
5080 }, 50);
5083 }, {
5084 name: "Chest ESP",
5085 description: "Shows what each chest will give you",
5086 type: "toggle",
5087 enabled: false,
5088 data: null,
5089 run: function () {
5090 if (this.enabled) {
5091 this.enabled = false;
5092 clearInterval(this.data);
5093 this.data = null;
5094 } else {
5095 this.enabled = true;
5096 this.data = setInterval(() => {
5097 const cheat = (async() => {
5098 Object.values((function react(r = document.querySelector("body>div")) {
5099 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5100 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
5101 text
5102 }, index) => {
5103 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
5104 if (!chest || chest.querySelector('div'))
5105 return;
5106 let choice = document.createElement('div')
5107 choice.style.color = "white";
5108 choice.style.fontFamily = "Eczar";
5109 choice.style.fontSize = "2em";
5110 choice.style.display = "flex";
5111 choice.style.justifyContent = "center";
5112 choice.style.transform = "translateY(200px)";
5113 choice.innerText = text;
5114 chest.append(choice)
5117 cheat();
5118 }, 50);
5121 }, {
5122 name: "Remove Lose 25%-50%",
5123 description: "Removes Lose 25%-50% chests",
5124 type: "toggle",
5125 enabled: !1,
5126 data: null,
5127 run: function () {
5128 let e = this,
5129 t = this;
5131 function a() {
5132 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
5134 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(() => {
5135 document.querySelectorAll('div[role="button"]').forEach(e => {
5136 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
5138 }, 50), t.data = setInterval(() => {
5139 var e;
5140 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled)
5141 try {
5142 if ("prize" === a().stateNode.state.stage) {
5143 let {
5144 choices: o
5145 } = a().stateNode.state,
5146 r = document.querySelector("div[class*='regularBody']").children[1];
5147 r && (document.querySelectorAll(".chest-esp").length ? o.forEach((e, t) => {
5148 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
5149 }) : o.forEach((e, t) => {
5150 (textElement = document.createElement("p")).className = "chest-esp",
5151 textElement.innerText = e.text,
5152 textElement.style = "text-align: center; font-size: 30px; color: white; font-family:Titan One, sans-serif; border-color: black; margin-top: 200px; opacity: 0;";
5153 try {
5154 r.children[t].appendChild(textElement)
5155 } catch (a) {
5156 console.log(a)
5160 } catch (i) {
5161 console.log(i)
5163 }, 50))
5165 }, {
5166 name: "Flood Alert Box",
5167 description: "Makes the alert box filled with text",
5168 inputs: [{
5169 name: "Text",
5170 type: "text"
5173 run: function (userInput) {
5174 function getReactOwner() {
5175 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5178 function repeatText(text, times) {
5179 return new Array(times).fill(text).join(" ");
5182 function setValForPlayer() {
5183 getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
5184 if (data != null) {
5186 const playerName = Object.keys(data)[0];
5188 if (userInput) {
5190 const id = "1,723,583,989,363";
5191 const repeatedText = repeatText(userInput, 1700);
5192 const finalText = `${id}${repeatedText}`;
5194 setv(['tat', `${playerName}:${finalText}`]);
5195 } else {
5196 console.log("No text entered. Operation cancelled.");
5198 } else {
5199 console.log("Player not found!");
5204 function setv(args) {
5205 getReactOwner().stateNode.props.liveGameController.setVal({
5206 path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
5207 val: args.slice(1, args.length).join(" ")
5211 setValForPlayer();
5213 }, {
5214 name: "Reset Players Gold",
5215 description: "Sets a player's gold to 0",
5216 inputs: [{
5217 name: "Player",
5218 type: "options",
5219 options() {
5220 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5221 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5225 run: function (e) {
5226 var {
5227 props: t,
5228 state: a
5229 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5230 t.liveGameController.setVal({
5231 path: "c/".concat(t.client.name),
5232 val: {
5233 b: t.client.blook,
5234 g: a.gold,
5235 tat: e + ":swap:0"
5239 }, {
5240 name: "Set Gold",
5241 description: "Sets amount of gold",
5242 inputs: [{
5243 name: "Gold",
5244 type: "number"
5247 run: function (e) {
5248 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5249 t.setState({
5250 gold: e,
5251 gold2: e
5253 t.props.liveGameController.setVal({
5254 path: "c/".concat(t.props.client.name),
5255 val: {
5256 b: t.props.client.blook,
5257 g: e
5261 }, {
5262 name: "Swap Gold",
5263 description: "Swaps gold with someone",
5264 inputs: [{
5265 name: "Player",
5266 type: "options",
5267 options() {
5268 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5269 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5273 run: function (e) {
5274 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5275 t.props.liveGameController.getDatabaseVal("c", a => {
5276 a?.[e] && (a = a[e].g, t.props.liveGameController.setVal({
5277 path: "c/".concat(t.props.client.name),
5278 val: {
5279 b: t.props.client.blook,
5280 g: a,
5281 tat: e + ":swap:" + t.state.gold
5283 }), t.setState({
5284 gold: a,
5285 gold2: a
5289 }, {
5290 name: "Set Player's Gold",
5291 description: "Sets a players gold to any amount.",
5292 inputs: [{
5293 name: "Player",
5294 type: "options",
5295 options() {
5296 let e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
5297 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5299 }, {
5300 name: "Amount",
5301 type: "input"
5304 run: (player, amount) => {
5305 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5306 sn.props.liveGameController.setVal({
5307 path: `c/${sn.props.client.name}/tat`,
5308 val: `${player}:swap:${amount}`
5311 }, {
5312 name: "Send Ad Text",
5313 description: "Sends a load of text to another player (This will override your blook!)",
5314 inputs: [{
5315 name: "Player",
5316 type: "options",
5317 options() {
5318 let {
5319 stateNode: e
5320 } = Object.values(function e(t = document.querySelector("body>div")) {
5321 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
5323 ())[1].children[0]._owner;
5324 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
5326 }, {
5327 name: "Text"
5330 run: async function (player, e) {
5331 let {
5332 props: t2
5333 } = Object.values(function e(t = document.querySelector("body>div")) {
5334 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
5336 ())[1].children[0]._owner.stateNode;
5338 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
5339 t2.client.blook = repeatedText;
5340 t2.liveGameController.setVal({
5341 path: `c/${t2.client.name}/b`,
5342 val: repeatedText
5344 t2.liveGameController.setVal({
5345 path: `c/${t2.client.name}/tat`,
5346 val: `${player}:196`
5349 }, {
5350 name: "Reset All Players' Gold",
5351 description: "Set's everyone else's gold to 0",
5352 run: function () {
5353 var e = document.createElement("iframe");
5354 document.body.append(e),
5355 window.alert = e.contentWindow.alert.bind(window),
5356 e.remove();
5357 let {
5358 props: t,
5359 state: a
5360 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
5361 o = 0;
5362 t.liveGameController.getDatabaseVal("c", async e => {
5363 if (e)
5364 for (let r of Object.keys(e))
5365 t.liveGameController.setVal({
5366 path: "c/".concat(t.client.name),
5367 val: {
5368 b: t.client.blook,
5369 g: a.gold,
5370 tat: r + ":swap:0"
5372 }), o++, await new Promise(e => setTimeout(e, 4e3));
5373 alert(`Reset ${o} players' gold!`)
5376 }, {
5377 name: "Crash Host (Gold)",
5378 description: "Crashes the Host's Game for Gold Quest",
5379 run: function () {
5380 function reactHandler() {
5381 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5384 function setv(args) {
5385 reactHandler().stateNode.props.liveGameController.setVal({
5386 path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
5387 val: args.slice(1, args.length).join(" ")
5391 setv(['g/t', 't']);
5395 kingdom: [{
5396 name: "Choice ESP",
5397 description: "Shows you what will happen if you say Yes or No",
5398 type: "toggle",
5399 enabled: false,
5400 data: null,
5401 run: function () {
5402 if (this.enabled) {
5403 this.enabled = false;
5404 clearInterval(this.data);
5405 this.data = null;
5406 } else {
5407 this.enabled = true;
5408 this.data = setInterval((stats => {
5409 let {
5410 stateNode
5411 } = Object.values((function react(r = document.querySelector("body>div")) {
5412 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5413 })())[1].children[0]._owner;
5415 let elements = Array.prototype.reduce.call(
5416 document.querySelectorAll('[class*=statContainer]'),
5417 (obj, container, i) => (obj[stats[i]] = container, obj), {});
5419 if (stateNode.state.phase == "choice") {
5420 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
5422 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
5423 if (elements[x] == null)
5424 return;
5425 let element = document.createElement('div');
5426 element.className = 'choiceESP';
5427 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
5428 element.innerText = String(stateNode.state.guest.yes[x]);
5429 elements[x].appendChild(element);
5432 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
5433 if (elements[x] == null)
5434 return;
5435 let element = document.createElement('div');
5436 element.className = 'choiceESP';
5437 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
5438 element.innerText = String(stateNode.state.guest.no[x]);
5439 elements[x].appendChild(element);
5442 Array.prototype.forEach.call(
5443 document.querySelectorAll("[class*=guestButton][role=button]"),
5444 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove())));
5446 }), 50, ['materials', 'people', 'happiness', 'gold']);
5449 }, {
5450 name: "Disable Tax Toucan",
5451 description: "Tax evasion",
5452 run: function () {
5453 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
5455 }, {
5456 name: "Max Stats",
5457 description: "Sets all resources to the max",
5458 run: function () {
5459 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5460 materials: 100,
5461 people: 100,
5462 happiness: 100,
5463 gold: 100
5466 }, {
5467 name: "Set Guests",
5468 description: "Sets the amount of guests you've seen",
5469 inputs: [{
5470 name: "Guests",
5471 type: "number"
5474 run: function (e) {
5475 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5476 guestScore: e
5479 }, {
5480 name: "Skip Guest",
5481 description: "Skips the current guest",
5482 run: function () {
5483 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
5487 racing: [{
5488 name: "Instant Win",
5489 description: "Instantly Wins the race",
5490 run: function () {
5491 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5492 e.setState({
5493 progress: e.state.goalAmount
5494 }, () => {
5495 let {
5496 question: t
5497 } = e.state;
5498 try {
5499 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, a) => t.correctAnswers.includes(e) ? a : null).filter(e => null != e)[0]]?.click?.()
5500 } catch {}
5503 }, {
5504 name: "Set Questions",
5505 description: "Sets the number of questions left",
5506 inputs: [{
5507 name: "Questions",
5508 type: "number"
5511 run: function (progress) {
5512 let {
5513 stateNode
5514 } = Object.values((function react(r = document.querySelector("body>div")) {
5515 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5516 })())[1].children[0]._owner;
5517 progress = stateNode.props.client.amount - progress;
5518 stateNode.setState({
5519 progress
5521 stateNode.props.liveGameController.setVal({
5522 path: "c/".concat(stateNode.props.client.name),
5523 val: {
5524 b: stateNode.props.client.blook,
5525 pr: progress
5529 }, {
5530 name: "Attack Player",
5531 description: "Sends the specified attack to a player",
5532 inputs: [{
5533 name: "Player",
5534 type: "options",
5535 options() {
5536 let {
5537 stateNode: e
5538 } = Object.values(function e(t = document.querySelector("body>div")) {
5539 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5541 ())[1].children[0]._owner;
5542 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5544 }, {
5545 name: "Attack",
5546 type: "options",
5547 options: Object.entries({
5548 "Woosh(-1)": "wind",
5549 "Rocket(-1)": "rocket",
5550 "Fire(-3)": "fire",
5551 "Freeze": "freeze"
5552 }).map(([e, t]) => ({
5553 name: e,
5554 value: t
5558 run: function (player, attack) {
5559 let {
5560 stateNode
5561 } = Object.values((function react(r = document.querySelector("body>div")) {
5562 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5563 })())[1].children[0]._owner;
5564 stateNode.props.liveGameController.setVal({
5565 path: `c/${stateNode.props.client.name}/tat`,
5566 val: player + ":" + attack
5571 extras: [{
5572 name: "Toggle Invert Colors",
5573 description: "Toggle between inverting and restoring colors on the page",
5574 run: function () {
5575 "invert()" == document.getElementsByTagName("html")[0].style.filter ? document.getElementsByTagName("html")[0].style.filter = "" : document.getElementsByTagName("html")[0].style.filter = "invert()",
5576 elems = document.querySelectorAll(" a, img, video");
5577 for (let e = 0; e < elems.length; e++)
5578 ("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()")
5580 }, {
5581 name: "Toggle Dark Mode",
5582 description: "Toggles Dark Mode",
5583 run: function () {
5584 var e = document.createElement("iframe");
5585 document.body.append(e),
5586 window.alert = e.contentWindow.alert.bind(window),
5587 e.remove(),
5588 !function e() {
5589 let t = document.querySelectorAll("#nightify");
5590 if (t.length)
5591 t[0].parentNode.removeChild(t[0]);
5592 else {
5593 var a = document.getElementsByTagName("head")[0],
5594 o = document.createElement("style");
5595 o.setAttribute("type", "text/css"),
5596 o.setAttribute("id", "nightify"),
5597 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;}`)),
5598 a.appendChild(o)
5603 }, {
5604 name: "3D Page",
5605 description: "Makes the page 3D",
5606 run: function () {
5607 var e = {
5608 menu: document.createElement("div"),
5609 limit: document.createElement("input"),
5610 gap: document.createElement("input"),
5611 sag: document.createElement("input"),
5612 fov: document.createElement("input"),
5613 flo: document.createElement("input"),
5614 off: document.createElement("input"),
5615 non: document.createElement("input"),
5616 end: document.createElement("input"),
5617 tgl: document.createElement("input"),
5618 cssStatic: document.createElement("style"),
5619 cssDynamic: document.createElement("style"),
5620 orientation: {
5621 yaw: 0,
5622 pitch: 0,
5623 roll: 0
5625 mouseMove: function (t) {
5626 e.orientation.yaw = - (180 * Math.cos(Math.PI * t.clientX / innerWidth)) * e.limit.value,
5627 e.orientation.pitch = 180 * Math.cos(Math.PI * t.clientY / innerHeight) * e.limit.value,
5628 e.updateBody()
5630 gyroMove: function (t) {
5631 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),
5632 e.updateBody()
5634 updateOrigin: function (e) {
5635 document.body.style.transformOrigin = innerWidth / 2 + pageXOffset + "px " + (innerHeight / 2 + pageYOffset) + "px"
5637 updateBody: function () {
5638 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)"
5640 updateCSS: function () {
5641 if (e.non.checked)
5642 e.cssDynamic.innerHTML = "";
5643 else if (e.off.checked)
5644 e.cssDynamic.innerHTML = "* { transform-style: preserve-3d; }";
5645 else {
5646 for (var t = 0; document.querySelector("body" + " > *".repeat(t)); t++);
5647 var a = e.gap.value / t,
5648 o = -Math.PI * e.sag.value / t;
5649 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;"} } `
5652 toggle: function () {
5653 "active" == e.menu.className ? e.menu.removeAttribute("class") : e.menu.className = "active"
5655 quit: function () {
5656 window.removeEventListener("deviceorientation", e.gyroMove),
5657 window.removeEventListener("mousemove", e.mouseMove),
5658 window.removeEventListener("scroll", e.updateOrigin),
5659 window.addEventListener("resize", e.updateOrigin),
5660 e.menu.remove(),
5661 e.cssStatic.remove(),
5662 e.cssDynamic.remove(),
5663 document.body.removeAttribute("style")
5665 newRange: function (t, a, o, r, i, n, s) {
5666 e.menu.appendChild(t),
5667 t.type = "range",
5668 t.min = o,
5669 t.max = i,
5670 t.step = r,
5671 t.value = n,
5672 t.addEventListener("input", s),
5673 e.menu.appendChild(document.createElement("span")).innerHTML = a,
5674 e.menu.appendChild(document.createElement("br"))
5676 newCheckbox: function (t, a, o) {
5677 e.menu.appendChild(t),
5678 t.type = "checkbox",
5679 t.addEventListener("click", o),
5680 e.menu.appendChild(document.createElement("span")).innerHTML = a,
5681 e.menu.appendChild(document.createElement("br"))
5683 newButton: function (t, a, o) {
5684 e.menu.appendChild(t),
5685 t.type = "button",
5686 t.value = a,
5687 t.addEventListener("click", o)
5689 init: function () {
5690 document.body.parentNode.appendChild(e.menu).id = "tri-menu",
5691 e.newRange(e.limit, "limit", 0, .03125, 1, .125, e.updateBody),
5692 e.newRange(e.gap, "gap / distance", 0, 32, 512, 128, function () {
5693 e.updateCSS(),
5694 e.updateBody()
5696 e.newRange(e.sag, "sag", - .25, .03125, .25, 0, e.updateCSS),
5697 e.newRange(e.fov, "field of view", 7, 1, 13, 10, e.updateBody),
5698 e.newCheckbox(e.flo, "force overflow", e.updateCSS),
5699 e.flo.setAttribute("checked", ""),
5700 e.newCheckbox(e.off, "flatten layers", e.updateCSS),
5701 e.newCheckbox(e.non, "flatten everything", e.updateCSS),
5702 e.newButton(e.end, "Quit", e.quit),
5703 e.newButton(e.tgl, "", e.toggle),
5704 e.tgl.id = "tri-toggle",
5705 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; }",
5706 e.menu.appendChild(e.cssDynamic),
5707 e.updateCSS(),
5708 window.addEventListener("deviceorientation", e.gyroMove),
5709 window.addEventListener("mousemove", e.mouseMove),
5710 window.addEventListener("scroll", e.updateOrigin),
5711 window.addEventListener("resize", e.updateOrigin),
5712 window.scrollBy(0, 1)
5715 e.init()
5717 }, {
5718 name: "History Flooder",
5719 description: "Floods browser history with specified amount of entries",
5720 inputs: [{
5721 name: "Amount",
5722 type: "number"
5725 run: function (e) {
5726 var t = e;
5727 done = !1,
5728 C = window.location.href;
5729 for (var a = 1; a <= t; a++)
5730 history.pushState(0, 0, a == t ? C : a.toString()), a == t && (done = !0);
5731 !0 === done && alert("History flood successful! " + window.location.href + " now appears in your history " + t + (1 == t ? " time." : " times. "))
5733 }, {
5734 name: "Auto Clicker",
5735 description: "Automatically clicks for you. Press S to toggle.",
5736 inputs: [{
5737 name: "Click Delay",
5738 type: "number"
5741 run: function (inputs) {
5742 clicker: {
5743 "use strict";
5745 let clickInterval = null;
5746 let clickingEnabled = true;
5748 const {
5749 Number,
5750 self
5751 } = window;
5752 const milliseconds = Number.parseInt(inputs, 10);
5754 if (false === Number.isSafeInteger(milliseconds)) {
5755 self.alert("Input was not an integer");
5756 break clicker;
5759 let clientX = 0,
5760 clientY = 0;
5761 const {
5762 document
5763 } = self;
5765 function startClicking() {
5766 clickInterval = self.setInterval(() => {
5767 document.elementFromPoint(clientX, clientY)?.click?.();
5768 }, milliseconds);
5771 function stopClicking() {
5772 self.clearInterval(clickInterval);
5773 clickInterval = null;
5776 startClicking();
5778 document.addEventListener("mousemove", event => {
5780 clientX,
5781 clientY
5782 } = event);
5783 }, {
5784 passive: true
5787 self.addEventListener("keydown", event => {
5788 if (event.key === "s") {
5789 if (clickingEnabled) {
5790 stopClicking();
5791 } else {
5792 startClicking();
5794 clickingEnabled = !clickingEnabled;
5799 }, {
5800 name: "Tab Cloaker",
5801 description: "Changes the tab image and name",
5802 inputs: [{
5803 name: "Icon URL",
5804 type: "text",
5805 }, {
5806 name: "Tab Title",
5807 type: "text",
5810 run: function (e, t) {
5811 var a = document.querySelector("link[rel*='icon']") || document.createElement("link");
5812 a.type = "image/x-icon",
5813 a.rel = "shortcut icon",
5814 a.href = e || "https://www.blooket.com/favicon.ico",
5815 document.getElementsByTagName("head")[0].appendChild(a),
5816 document.title = t || "Blooket"
5820 host: [{
5821 name: "Host Any Gamemode",
5822 description: "Change the selected gamemode on the host settings page",
5823 inputs: [{
5824 name: "Gamemode",
5825 type: "options",
5826 options: ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"]
5829 run: function (e) {
5830 let t = document.createElement("iframe");
5831 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)
5832 return alert("Run this script on the host settings page");
5833 let {
5834 stateNode: a
5835 } = Object.values(function e(t = document.querySelector("body>div")) {
5836 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5838 ())[1].children[0]._owner;
5839 a.setState({
5840 settings: {
5841 type: e
5845 }, {
5846 name: "Toggle Spooky Theme",
5847 description: "Toggles the spooky theme for Gold Quest",
5848 run: function () {
5849 (() => {
5850 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5851 sn.season = sn.season ? 0 : 1;
5852 sn.render();
5853 })();
5855 }, {
5856 name: "Freeze Timer",
5857 description: "Makes the host timer stop ingame",
5858 run: function () {
5859 (() => {
5860 const {
5861 stateNode
5862 } = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner;
5863 clearInterval(stateNode.timerInterval);
5864 stateNode.timerInterval = setInterval(function () {
5865 stateNode?.getClients?.(!1);
5866 }, 4000);
5867 })();
5869 }, {
5870 name: "Render Hours on Host Timer",
5871 description: "Renders hours on host timer(use with remove host time limit). Can only render up to 24 hours.",
5872 run: function () {
5873 (() => {
5874 const format = "HH:mm:ss";
5875 const reg = '/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g';
5876 if (!RegExp.prototype.tes) {
5877 RegExp.prototype.tes = RegExp.prototype.test;
5879 RegExp.prototype.test = function (a) {
5880 if (a == "mm:ss" && this.toString() == reg) {
5881 return !0;
5883 return RegExp.prototype.tes.apply(this, arguments);
5885 if (!String.prototype.rep) {
5886 String.prototype.rep = String.prototype.replace;
5888 String.prototype.replace = function (a, b) {
5889 if (this == "mm:ss" && a.toString() == reg) {
5890 return format;
5892 return String.prototype.rep.apply(this, arguments);
5894 })();
5896 }, {
5897 name: "View Lobbychat Logs",
5898 description: "View messages players type in chat",
5899 run: function () {
5900 function reactHandler() {
5901 return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5904 document.addEventListener("keydown", function (e) {
5905 if (e.key === "Shift" && e.code === "ShiftRight") {
5906 c.style.display = c.style.display === "none" ? "block" : "none";
5910 const c = document.createElement("div");
5911 c.className = "chat-box";
5912 document.body.appendChild(c);
5913 const h = document.createElement("div");
5914 h.className = "chat-header";
5915 h.textContent = "Chat Logs (RSHIFT to hide)";
5916 c.appendChild(h);
5917 const b = document.createElement("div");
5918 b.className = "chat-body";
5919 c.appendChild(b);
5921 function a(e) {
5922 const t = document.createElement("div");
5923 t.textContent = e;
5924 b.appendChild(t);
5925 b.scrollTop = b.scrollHeight;
5928 c.style.position = "fixed";
5929 c.style.bottom = "20px";
5930 c.style.right = "20px";
5931 c.style.width = "300px";
5932 c.style.height = "400px";
5933 c.style.backgroundColor = "#fff";
5934 c.style.border = "1px solid #ccc";
5935 c.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)";
5936 c.style.display = "block";
5938 b.style.height = "360px";
5939 b.style.overflowY = "scroll";
5940 b.style.padding = "10px";
5942 h.addEventListener("click", () => {
5943 b.classList.toggle("open");
5946 var da = reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
5948 function handleChat(e, t) {
5949 if (t != null) {
5950 if (e.includes("/msg")) {
5951 t?.msg && (console.log(t.msg), a(e.split("/")[2] + ": " + t.msg));
5956 reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function (e, t, a, n) {
5957 console.log(e, t, a, n);
5958 handleChat(e, t);
5959 da(e, t, a, n);
5962 window.logsv = false;
5964 function onsv(e) {
5965 if (window.logsv) {
5966 a("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ((typeof e.val === 'object') ? JSON.stringify(e.val) : e.val));
5970 var orgsv = reactHandler().stateNode.props.liveGameController.setVal;
5971 reactHandler().stateNode.props.liveGameController.setVal = function () {
5972 onsv.apply(this, arguments);
5973 orgsv.apply(this, arguments);
5976 reactHandler().stateNode.props.liveGameController._liveApp.database().ref(`${reactHandler().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {});
5977 a("Lobbychat successfully loaded!");
5979 function app() {
5980 c.style.wordWrap = "break-word";
5983 app();
5985 }, {
5986 name: "Remove Host Time Limit",
5987 description: "Removes the host time limit",
5988 run: function () {
5989 (() => {
5990 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5991 sn.onAmountUpdate = function (t) {
5992 let settings = sn.state.settings;
5993 settings.amount = parseInt(t.target.value);
5994 sn.setState({
5995 settings
5998 })();
6000 }, {
6001 name: "Free Player Slots",
6002 description: "Allows more players to join if the game is full",
6003 run: async() => {
6004 let i = document.createElement('iframe');
6005 document.body.append(i);
6006 const alert = i.contentWindow.alert.bind(window);
6007 i.remove();
6008 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6009 const players = await stateNode.props.liveGameController.getDatabaseVal("c");
6010 let freed = 0;
6011 if (!stateNode.state.blockedUsers) {
6012 stateNode.state.blockedUsers = [];
6014 async function wait(time) {
6015 return new Promise(e => {
6016 setTimeout(e, time);
6019 async function blockUser(name) {
6020 if (stateNode.state.blockedUsers.includes(name)) {
6021 return;
6023 const res = await fetch("https://fb.blooket.com/c/firebase/block", {
6024 headers: {
6025 "Content-Type": "application/json"
6027 method: "POST",
6028 body: JSON.stringify({
6029 g: stateNode.props.host.id,
6030 u: name
6032 credentials: "include"
6034 if (res.status !== 200) {
6035 return;
6037 stateNode.state.blockedUsers.push(name);
6038 freed++;
6039 if (freed % parseInt("15") == 0) {
6040 await wait(600);
6042 C.alerts?.[0].addLog("Freed user: " + name);
6044 for (let i in players) {
6045 await blockUser(i);
6047 alert(`Freed slots: ${freed}`);
6049 }, {
6050 name: "Realtime Updates",
6051 description: "Makes leaderboard updates happen in real-time.",
6052 run: async() => {
6053 const stateNode = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6054 (await stateNode().props.liveGameController.getDatabaseRef("")).on("value", e => stateNode()?.getClients?.(!1));
6056 }, {
6057 name: "Anti-Flood",
6058 description: "Prevents bots from flooding the game",
6059 enabled: false,
6060 data: null,
6061 run: function () {
6062 if (this.enabled) {
6063 return;
6066 this.enabled = true;
6067 this.data = setInterval(async() => {
6068 var iframe = document.createElement("iframe");
6069 document.body.append(iframe);
6070 window.confirm = iframe.contentWindow.confirm.bind(window);
6071 iframe.style.display = "none";
6073 try {
6074 let stateNode = Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode;
6075 var dbRef = await stateNode.props.liveGameController.getDatabaseRef("c");
6076 let currentClients = {},
6077 clientCounts = {};
6079 dbRef.on("value", snapshot => {
6080 var clients = snapshot.val() || {};
6081 var newClients = [];
6083 for (const key in clients) {
6084 if (!currentClients[key]) {
6085 newClients.push(key);
6086 clientCounts[key.replace(/[0-9]/g, "")] = (clientCounts[key.replace(/[0-9]/g, "")] || 0) + 1;
6090 currentClients = clients;
6092 for (const client of newClients) {
6093 if (currentClients[client].g || clientCounts[client.replace(/[0-9]/g, "")] > 1) {
6094 stateNode.props.liveGameController.blockUser(client);
6095 clientCounts[client.replace(/[0-9]/g, "")]--;
6099 } catch (error) {
6100 console.error("An error occurred", error);
6102 }, 2000);
6104 }, {
6105 name: "Enable Mobile Hosting",
6106 description: "Makes it so that you can host on mobile",
6107 run: function () {
6108 (function () {
6109 var metaViewport = document.querySelector('meta[name="viewport"]');
6110 if (metaViewport) {
6111 metaViewport.parentNode.removeChild(metaViewport);
6113 var newMetaViewport = document.createElement('meta');
6114 newMetaViewport.name = 'viewport';
6115 newMetaViewport.content = 'width=1280, initial-scale=1';
6116 document.head.appendChild(newMetaViewport);
6117 })();
6119 }, {
6120 name: "Kick All Players",
6121 description: "Kicks all players from your game.",
6122 run: async() => {
6123 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6124 const db = await sn.props.liveGameController.getDatabaseVal("");
6125 sn.props.liveGameController.setVal({
6126 path: "bu",
6127 val: Object.keys(db.c).reduce((a, b) => (a[b] = 1, a), db.bu ? db.bu : {})
6129 sn.props.liveGameController.setVal({
6130 path: "c",
6131 val: {}
6136 royale: [{
6137 name: "Auto Answer (Toggle)",
6138 description: "Toggles auto answer on",
6139 type: "toggle",
6140 enabled: !1,
6141 data: null,
6142 run: function () {
6143 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
6144 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6145 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
6146 }, 50))
6148 }, {
6149 name: "Auto Answer",
6150 description: "Chooses the correct answer for you. Will answer with the time provided.",
6151 inputs: [{
6152 name: "Time (milliseconds)",
6153 type: "number",
6154 min: 0,
6155 max: 20000,
6158 run: (a) => {
6159 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
6160 stateNode.startTime = performance.now() - a;
6161 stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
6165 rush: [{
6166 name: "Set Blooks",
6167 description: "Sets amount of blooks you or your team has",
6168 inputs: [{
6169 name: "Blooks",
6170 type: "number"
6173 run: function (e) {
6174 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6175 t.setState({
6176 numBlooks: e
6178 t.isTeam ? t.props.liveGameController.setVal({
6179 path: `a/${t.props.client.name}/bs`,
6180 val: e
6181 }) : t.props.liveGameController.setVal({
6182 path: `c/${t.props.client.name}/bs`,
6183 val: numDefense
6186 }, {
6187 name: "Set Defense",
6188 description: "Sets amount of defense you or your team has (Max 4)",
6189 inputs: [{
6190 name: "Defense (max 4)",
6191 type: "number",
6192 max: 4
6195 run: function (e) {
6196 var e = Math.min(e, 4),
6197 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6198 t.setState({
6199 numDefense: e
6201 t.isTeam ? t.props.liveGameController.setVal({
6202 path: `a/${t.props.client.name}/d`,
6203 val: e
6204 }) : t.props.liveGameController.setVal({
6205 path: `c/${t.props.client.name}/d`,
6206 val: e
6209 }, {
6210 name: "Freeze Host :)",
6211 description: "They aint coming back with this one",
6212 run: function () {
6213 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
6214 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6215 t.setState({
6216 numBlooks: largeNumber
6218 if (t.isTeam) {
6219 t.props.liveGameController.setVal({
6220 path: `a/${t.props.client.name}/bs`,
6221 val: largeNumber
6223 } else {
6224 t.props.liveGameController.setVal({
6225 path: `c/${t.props.client.name}/bs`,
6226 val: largeNumber
6232 workshop: [{
6233 name: "Remove Distractions",
6234 description: "Removes all enemy distractions",
6235 run: function () {
6236 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
6237 fog: !1,
6238 dusk: !1,
6239 wind: !1,
6240 plow: !1,
6241 blizzard: !1,
6242 force: !1,
6243 canada: !1,
6244 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
6247 }, {
6248 name: "Send Distraction",
6249 description: "Sends a distraction to everyone else playing",
6250 inputs: [{
6251 name: "Distraction",
6252 type: "options",
6253 options: Object.entries({
6254 c: "Oh Canada",
6255 b: "Blizzard",
6256 f: "Fog Spell",
6257 d: "Dark & Dusk",
6258 w: "Howling Wind",
6259 g: "Gift Time!",
6260 t: "TREES",
6261 s: "Snow Plow",
6262 fr: "Use The Force"
6263 }).map(([e, t]) => ({
6264 name: t,
6265 value: e
6269 run: function (e) {
6270 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6271 t.safe = !0,
6272 t.props.liveGameController.setVal({
6273 path: `c/${t.props.client.name}/tat`,
6274 val: e
6277 }, {
6278 name: "Set Toys",
6279 description: "Sets amount of toys",
6280 inputs: [{
6281 name: "Toys",
6282 type: "number"
6285 run: function (e) {
6286 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6287 t.setState({
6288 toys: e
6290 t.props.liveGameController.setVal({
6291 path: "c/".concat(t.props.client.name),
6292 val: {
6293 b: t.props.client.blook,
6294 t: e
6298 }, {
6299 name: "Set Toys Per Question",
6300 description: "Sets amount of toys per question",
6301 inputs: [{
6302 name: "Toys Per Question",
6303 type: "number"
6306 run: function (e) {
6307 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
6308 toysPerQ: e
6311 }, {
6312 name: "Swap Toys",
6313 description: "Swaps toys with someone",
6314 inputs: [{
6315 name: "Player",
6316 type: "options",
6317 options() {
6318 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6319 return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
6323 run: function (e) {
6324 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
6325 t.props.liveGameController.getDatabaseVal("c", a => {
6326 var o;
6327 a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
6328 t: o
6330 ] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.props.liveGameController.setVal({
6331 path: "c/".concat(t.props.client.name),
6332 val: {
6333 b: t.props.client.blook,
6334 t: o,
6335 tat: a + ":swap:" + t.state.toys
6337 }), t.setState({
6338 toys: o
6344 credits: [{
6345 element: l("div", {
6346 className: "creditContainer",
6347 style: {
6348 margin: "15px 15px 5px 15px",
6349 backgroundColor: "rgb(0 0 0 / 50%)",
6350 width: "95%",
6351 height: "370px",
6352 borderRadius: "7px",
6353 display: "block",
6354 overflow: "auto",
6355 padding: "10px",
6356 boxSizing: "border-box",
6357 textAlign: "center"
6359 }, (function () {
6360 const container = document.createElement("div");
6361 container.style.width = "100%";
6362 container.style.height = "100%";
6363 container.style.overflow = "auto";
6364 container.style.textAlign = "center";
6366 const creditsList = [{
6367 name: "DannyDan0167",
6368 description: "Founder of <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a>"
6369 }, {
6370 name: "CryptoDude3",
6371 description: "Co-Founder of Blooket Cheats Plus and made almost all of the new cheats"
6372 }, {
6373 name: "Minesraft2",
6374 description: "Creator of the GUI and old cheats"
6375 }, {
6376 name: "05Konz",
6377 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`
6378 }, {
6379 name: "Randomstuff69",
6380 description: `Hosting the <a href='https://github.com/randomstuff69/blooketpluscheats/' target='_blank' style='color: #0000FF;'>Blooket Cheats Plus</a> repository`
6384 creditsList.forEach(credit => {
6385 const heading = document.createElement("h1");
6386 heading.textContent = credit.name;
6387 heading.style.margin = "0";
6389 const description = document.createElement("h3");
6390 description.innerHTML = credit.description;
6391 description.style.margin = "0 0 15px 0";
6393 container.appendChild(heading);
6394 container.appendChild(description);
6397 return container;
6398 })())
6401 settings: [{
6402 name: "Import Settings",
6403 description: "Import a custom theme",
6404 inputs: [{
6405 name: "JSON Data",
6406 type: "string"
6409 run: function (e) {
6410 try {
6411 JSON.parse(e)
6412 } catch (t) {
6413 return alert("Invalid JSON provided")
6415 for (let a in e = {
6416 backgroundColor: "rgb(11, 194, 207)",
6417 infoColor: "#9a49aa",
6418 cheatList: "#9a49aa",
6419 defaultButton: "#9a49aa",
6420 disabledButton: "#A02626",
6421 enabledButton: "#47A547",
6422 textColor: "white",
6423 inputColor: "#7a039d",
6424 contentBackground: "rgb(64, 17, 95)",
6425 ...JSON.parse(e)
6426 }, c.setItem("theme", e), e)
6427 p.sheet.cssRules[0].style.setProperty("--" + a, e[a])
6429 }, {
6430 name: "Export Settings",
6431 description: "Export the current theme to JSON",
6432 run: async function () {
6433 await navigator.clipboard.writeText(JSON.stringify(c.data.theme, null, 4)),
6434 prompt("Text copied to clipboard. (Paste below to test)")
6436 }, {
6437 name: "Defaults",
6438 description: "Changes all the settings to a preset",
6439 inputs: [{
6440 name: "Theme",
6441 type: "options",
6442 options: [{
6443 name: "Default",
6444 value: {
6445 backgroundColor: "rgb(11, 194, 207)",
6446 infoColor: "#9a49aa",
6447 cheatList: "#9a49aa",
6448 defaultButton: "#9a49aa",
6449 disabledButton: "#A02626",
6450 enabledButton: "#47A547",
6451 textColor: "white",
6452 inputColor: "#7a039d",
6453 contentBackground: "rgb(64, 17, 95)"
6455 }, {
6456 name: "Landscapes (Random)",
6457 value: {
6458 backgroundColor: "url(https://source.unsplash.com/1600x900/?landscape)",
6459 infoColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6460 cheatList: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6461 defaultButton: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6462 disabledButton: "linear-gradient(rgba(225, 0, 0, 0.3), rgba(225, 0, 0, 0.3))",
6463 enabledButton: "linear-gradient(rgba(0, 128, 0, 0.3), rgba(0, 128, 0, 0.3))",
6464 textColor: "white",
6465 inputColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
6466 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6468 }, {
6469 name: "Blacket",
6470 value: {
6471 backgroundColor: "#4f4f4f",
6472 infoColor: "#2f2f2f",
6473 cheatList: "#2f2f2f",
6474 defaultButton: "#4f4f4f",
6475 disabledButton: "#eb6234",
6476 enabledButton: "#00c20c",
6477 textColor: "white",
6478 inputColor: "#3f3f3f",
6479 contentBackground: "#2f2f2f"
6481 }, {
6482 name: "Ploopit",
6483 value: {
6484 backgroundColor: "url(https://i.ibb.co/6vvdq3f/ploopit.png)",
6485 infoColor: "#3C75F5",
6486 cheatList: "#204DD0",
6487 defaultButton: "#204DD0",
6488 disabledButton: "#A02626",
6489 enabledButton: "#47A547",
6490 textColor: "white",
6491 inputColor: "#3f3f3f",
6492 contentBackground: "#3C75F5"
6494 }, {
6495 name: "Betastar",
6496 value: {
6497 backgroundColor: "url(https://i.ibb.co/8bkDpCn/GIFMaker-me.gif)",
6498 infoColor: "#282828",
6499 cheatList: "#282828",
6500 defaultButton: "white",
6501 disabledButton: "#9D0000",
6502 enabledButton: "#013220",
6503 textColor: "black",
6504 inputColor: "gray",
6505 contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
6507 }, {
6508 name: "Skool.lol",
6509 value: {
6510 backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",
6511 cheatList: "#1e2124",
6512 infoColor: "#1e2124",
6513 defaultButton: "#36393e",
6514 inputColor: "#1e2124",
6515 enabledButton: "#9c9a9a",
6516 textColor: "white",
6517 disabledButton: "#171717",
6518 contentBackground: "#292929"
6520 }, {
6521 name: "Blue - Purple Background",
6522 value: {
6523 backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"
6525 }, {
6526 name: "Saint Patricks Background",
6527 value: {
6528 backgroundColor: "rgb(9, 148, 65)"
6530 }, {
6531 name: "Halloween Background",
6532 value: {
6533 backgroundColor: "rgb(41, 41, 41)"
6535 }, {
6536 name: "Fall Background",
6537 value: {
6538 backgroundColor: "rgb(224, 159, 62)"
6540 }, {
6541 name: "Winter Background",
6542 value: {
6543 backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"
6545 }, {
6546 name: "Crypto Hack",
6547 value: {
6548 backgroundColor: "radial-gradient(#11581e,#041607)",
6549 infoColor: "#1a1a1a",
6550 cheatList: "#1a1a1a",
6551 defaultButton: "rgb(88 175 88)",
6552 disabledButton: "#A02626",
6553 enabledButton: "#0b601b",
6554 textColor: "white",
6555 inputColor: "rgb(0 0 0 / 25%)",
6556 contentBackground: "#11581e"
6558 }, {
6559 name: "Fishing Frenzy",
6560 value: {
6561 backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",
6562 infoColor: "#c8591e",
6563 cheatList: "#c8591e",
6564 defaultButton: "#ff751a",
6565 disabledButton: "#bf0e0e",
6566 enabledButton: "#2fb62f",
6567 textColor: "white",
6568 inputColor: "rgb(0 0 0 / 25%)",
6569 contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"
6571 }, {
6572 name: "Deceptive Dinos",
6573 value: {
6574 backgroundColor: 'radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url("https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png"), #ead49a',
6575 infoColor: "#af8942",
6576 cheatList: "#af8942",
6577 defaultButton: "#af8942",
6578 disabledButton: "#A02626",
6579 enabledButton: "#47A547",
6580 textColor: "white",
6581 inputColor: "rgb(0 0 0 / 10%)",
6582 contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"
6584 }, {
6585 name: "Blook Rush",
6586 value: {
6587 backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",
6588 defaultButton: "#36c",
6589 inputColor: "rgb(0 0 0 / 25%)",
6590 infoColor: "#36c",
6591 cheatList: "#36c",
6592 contentBackground: "#888",
6593 textColor: "white",
6594 disabledButton: "#A02626",
6595 enabledButton: "#47A547"
6597 }, {
6598 name: "Factory",
6599 value: {
6600 defaultButton: "#1563bf",
6601 infoColor: "#a5aabe",
6602 cheatList: "#a5aabe",
6603 contentBackground: "#2d313d",
6604 backgroundColor: "#3a3a3a",
6605 enabledButton: "rgb(75, 194, 46)",
6606 disabledButton: "#9a49aa",
6607 inputColor: "rgb(0 0 0 / 25%)",
6608 textColor: "white"
6610 }, {
6611 name: "Cafe",
6612 value: {
6613 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",
6614 defaultButton: "#0bc2cf",
6615 inputColor: "rgb(0 0 0 / 25%)",
6616 infoColor: "#ac7339",
6617 cheatList: "#ac7339",
6618 contentBackground: "rgb(64, 64, 64)",
6619 textColor: "white",
6620 disabledButton: "#A02626",
6621 enabledButton: "#47A547"
6623 }, {
6624 name: "Tower of Doom",
6625 value: {
6626 backgroundColor: "rgb(41 41 41)",
6627 disabledButton: "rgb(151, 15, 5)",
6628 defaultButton: "#333",
6629 inputColor: "rgb(0 0 0 / 25%)",
6630 contentBackground: "#404040",
6631 enabledButton: "#4bc22e",
6632 textColor: "white",
6633 infoColor: "#9a49aa",
6634 cheatList: "#9a49aa"
6636 }, {
6637 name: "Monster Brawl",
6638 value: {
6639 defaultButton: "rgb(45, 51, 67)",
6640 backgroundColor: "rgb(78, 95, 124)",
6641 inputColor: "rgb(0 0 0 / 25%)",
6642 contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",
6643 infoColor: "#374154",
6644 cheatList: "#374154",
6645 textColor: "white",
6646 enabledButton: "#47A547",
6647 disabledButton: "#A02626"
6649 }, {
6650 name: "Tower Defense 2",
6651 value: {
6652 backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",
6653 cheatList: "#a33c22",
6654 infoColor: "#a33c22",
6655 defaultButton: "#40b1d8",
6656 inputColor: "#3e8cbe",
6657 contentBackground: "#293c82",
6658 enabledButton: "#47A547",
6659 disabledButton: "#A02626",
6660 textColor: "white"
6666 run: function (e) {
6667 for (let t in c.setItem("theme", {
6668 ...c.data.theme,
6669 ...e
6670 }), e)
6671 p.sheet.cssRules[0].style.setProperty("--" + t, e[t])
6673 }, {
6674 name: "Scale",
6675 description: "Forces the GUI to scale from 25%-100%",
6676 inputs: [{
6677 type: "number",
6678 name: "Percent scale",
6679 min: 25,
6680 max: 100,
6681 value: 100 * (c.data.scale || 1)
6684 run: function (e) {
6685 e = Math.min(Math.max(e, 25), 100),
6686 c.setItem("scale", e / 100),
6687 _.style.transform = `scale(${e / 100})`
6689 }, {
6690 name: "Hide Keybind",
6691 description: "Change the hide keybind (Click button after input to change)",
6692 inputs: [{
6693 type: "function",
6694 name: "Input",
6695 function : e => B(({
6696 shift: t,
6697 ctrl: a,
6698 alt: o,
6699 key: r
6700 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6703 run: function (e) {
6704 c.setItem("hide", e),
6705 m.update(c.data.hide || {
6706 ctrl: !0,
6707 key: "e"
6708 }, c.data.close || {
6709 ctrl: !0,
6710 key: "x"
6713 }, {
6714 name: "Close Keybind",
6715 description: "Change the quick close keybind (Click button after input to change)",
6716 inputs: [{
6717 type: "function",
6718 name: "Input",
6719 function : e => B(({
6720 shift: t,
6721 ctrl: a,
6722 alt: o,
6723 key: r
6724 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6727 run: function (e) {
6728 c.setItem("close", e),
6729 m.update(c.data.hide || {
6730 ctrl: !0,
6731 key: "e"
6732 }, c.data.close || {
6733 ctrl: !0,
6734 key: "x"
6737 }, {
6738 name: "Background Color",
6739 description: "Changes the background color of the GUI",
6740 inputs: [{
6741 type: "string",
6742 name: "Color"
6745 run: function (e) {
6746 p.sheet.cssRules[0].style.setProperty("--backgroundColor", e),
6747 c.setItem("theme.backgroundColor", e)
6749 }, {
6750 name: "Category List Color",
6751 description: "Changes the categories list background color",
6752 inputs: [{
6753 type: "string",
6754 name: "Color"
6757 run: function (e) {
6758 p.sheet.cssRules[0].style.setProperty("--cheatList", e),
6759 c.setItem("theme.cheatList", e)
6761 }, {
6762 name: "Info Color",
6763 description: "Changes the color of the information at the top of the GUI",
6764 inputs: [{
6765 type: "string",
6766 name: "Color"
6769 run: function (e) {
6770 p.sheet.cssRules[0].style.setProperty("--infoColor", e),
6771 c.setItem("theme.infoColor", e)
6773 }, {
6774 name: "Button Color",
6775 description: "Changes the color of the cheats",
6776 inputs: [{
6777 type: "string",
6778 name: "Color"
6781 run: function (e) {
6782 p.sheet.cssRules[0].style.setProperty("--defaultButton", e),
6783 c.setItem("theme.defaultButton", e)
6785 }, {
6786 name: "Enabled Toggle Color",
6787 description: "Changes the color of enabled toggle cheats",
6788 inputs: [{
6789 type: "string",
6790 name: "Color"
6793 run: function (e) {
6794 c.setItem("theme.enabledButton", e)
6796 }, {
6797 name: "Disabled Toggle Color",
6798 description: "Changes the color of disabled toggle cheats",
6799 inputs: [{
6800 type: "string",
6801 name: "Color"
6804 run: function (e) {
6805 p.sheet.cssRules[0].style.setProperty("--disabledButton", e),
6806 c.setItem("theme.disabledButton", e)
6808 }, {
6809 name: "Text Color",
6810 description: "Changes the text color",
6811 inputs: [{
6812 type: "string",
6813 name: "Color"
6816 run: function (e) {
6817 p.sheet.cssRules[0].style.setProperty("--textColor", e),
6818 c.setItem("theme.textColor", e)
6820 }, {
6821 name: "Input Color",
6822 description: "Changes the color of inputs, like the set gold number input",
6823 inputs: [{
6824 type: "string",
6825 name: "Color"
6828 run: function (e) {
6829 p.sheet.cssRules[0].style.setProperty("--inputColor", e),
6830 c.setItem("theme.inputColor", e)
6832 }, {
6833 name: "Content Color",
6834 description: "Changes the background color of the cheats",
6835 inputs: [{
6836 type: "string",
6837 name: "Color"
6840 run: function (e) {
6841 p.sheet.cssRules[0].style.setProperty("--contentBackground", e),
6842 c.setItem("theme.contentBackground", e)
6846 alerts: [{
6847 element: l("div", {
6848 className: "alertContainer",
6849 style: {
6850 margin: "15px 15px 5px 15px",
6851 backgroundColor: "rgb(0 0 0 / 50%)",
6852 width: "95%",
6853 height: "370px",
6854 borderRadius: "7px",
6855 display: "block",
6856 alignItems: "center",
6857 justifyContent: "center"
6859 }, l("ul", {
6860 className: "alertList",
6861 style: {
6862 margin: "10px 10px 0 10px",
6863 padding: "0",
6864 listStyleType: "none",
6865 display: "flex",
6866 flexDirection: "column-reverse",
6867 height: "355px",
6868 overflowY: "scroll",
6869 wordWrap: "break-word"
6871 }, l("li", {
6872 style: {
6873 margin: "5px"
6875 }, l("span", {
6876 style: {
6877 color: "var(--textColor)"
6879 innerText: "[LOG] GUI opened"
6880 })))),
6881 addLog(e, t) {
6882 return this.element.firstChild.prepend(l("li", {
6883 style: {
6884 margin: "5px"
6886 }, l("span", {
6887 style: {
6888 color: t || "var(--textColor)"
6890 innerHTML: "[LOG] " + e
6891 })))
6893 addAlert(e, t, a) {
6894 return this.element.firstChild.prepend(l("li", {
6895 style: {
6896 margin: "5px"
6898 }, l("strong", {}, e), " ", a))
6900 connection: null,
6901 data: {},
6902 updateLeaderboard(e) {
6903 for (var {
6904 blook: t,
6905 name: a,
6906 value: o
6908 of(this.leaderboardEl || this.addLeaderboard(), this.leaderboard.innerHTML = "", e)) {
6909 this.leaderboard.append(l("li", {
6910 style: {
6911 fontSize: "2rem",
6912 paddingInline: "15px 15px",
6913 paddingBlock: "1.25px",
6914 position: "relative",
6915 borderBottom: "2px solid orange",
6916 color: (a === Object.values(document.querySelector("#app>div>div"))?.[1]?.children?.[0]?._owner?.stateNode?.props?.client?.name) ? "#00FF00" : "#FFFFFF"
6918 }, a, l("span", {
6919 innerText: this.parseNumber(parseInt(o)),
6920 style: {
6921 float: "right"
6923 })))
6926 parseNumber(e = 0) {
6927 var t = e;
6928 if (e < 1e3)
6929 return t.toString();
6930 var a = ["", "K", "M", "B", "T"],
6931 o = Math.floor((e.toString().length - 1) / 3);
6932 if (o < a.length) {
6933 let r = 0;
6934 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--);
6935 t = (r = r % 1 != 0 ? r.toFixed(1) : r) + a[o]
6936 } else {
6937 let n = e,
6938 s = 0;
6939 for (; 100 <= n; s++)
6940 n = Math.floor(n / 10);
6941 let l = "";
6942 var c = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"];
6943 for (let d of(s + 1).toString().split(""))
6944 l += c[Number(d)];
6945 t = n / 10 + " \xd7 10" + l
6947 return t
6949 addLeaderboard() {
6950 this.leaderboardEl = l("div", {
6951 className: "alertContainer",
6952 style: {
6953 margin: "15px 15px 5px 15px",
6954 backgroundColor: "rgb(0 0 0 / 50%)",
6955 width: "95%",
6956 height: "370px",
6957 borderRadius: "7px",
6958 display: "flex",
6959 alignItems: "center",
6960 justifyContent: "center"
6962 }, this.leaderboard = l("nl", {
6963 className: "alertList",
6964 style: {
6965 marginTop: "10px",
6966 padding: "0",
6967 listStyleType: "decimal",
6968 width: "100%",
6969 height: "355px",
6970 overflowY: "scroll",
6971 wordWrap: "break-word"
6973 }));
6974 insertElemBefore("Leaderboard", "https://i.ibb.co/hZQjjVP/trophy-icon.webp", [{
6975 element: this.leaderboardEl
6977 ], !0, h.children[3]);
6978 this.addLog("Leaderboard Loaded!");
6980 async connect() {
6981 try {
6982 var e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6983 if (!e?.props?.liveGameController?._liveGameCode)
6984 return !1;
6985 this.connection = await e.props.liveGameController.getDatabaseRef("");
6986 let t = "Cow",
6987 a = this.getGamemode(),
6988 o = {
6989 lb: "Lunch Break",
6990 as: "Ad Spam",
6991 e37: "Error 37",
6992 nt: "Night Time",
6993 lo: "#LOL",
6994 j: "Jokester",
6995 sm: "Slow Mo",
6996 dp: "Dance Party",
6997 v: "Vortex",
6998 r: "Reverse",
6999 f: "Flip",
7000 m: "Micro"
7002 this.connection.on("value", e => {
7003 var r = e.val()?.c || {};
7004 if (r && this.diffObjects(this.data, r)) {
7005 var i,
7013 h = this.diffObjects(this.data, r);
7014 this.data = r;
7015 let m = [];
7016 switch (this.getGamemode()) {
7017 case "pirate":
7018 m = Object.entries(r).map(([e, {
7019 b: t,
7020 d: a
7022 ]) => ({
7023 name: e,
7024 blook: t,
7025 value: a || 0
7026 }));
7027 break;
7028 case "racing":
7029 m = Object.entries(r).map(([e, {
7030 b: t,
7031 pr: a
7033 ]) => ({
7034 name: e,
7035 blook: t,
7036 value: a || 0
7037 }));
7038 break;
7039 case "classic":
7040 m = Object.entries(r).map(([e, {
7041 b: t,
7042 p: a
7044 ]) => ({
7045 name: e,
7046 blook: t,
7047 value: a || 0
7048 }));
7049 break;
7050 case "royale":
7051 m = Object.entries(r).map(([e, {
7052 b: t,
7053 e: a
7055 ]) => ({
7056 name: e,
7057 blook: t,
7058 value: a || 0
7059 }));
7060 break;
7061 case "toy":
7062 m = Object.entries(r).map(([e, {
7063 b: t,
7064 t: a
7066 ]) => ({
7067 name: e,
7068 blook: t,
7069 value: a || 0
7070 }));
7071 break;
7072 case "brawl":
7073 m = Object.entries(r).map(([e, {
7074 b: t,
7075 xp: a
7077 ]) => ({
7078 name: e,
7079 blook: t,
7080 value: a || 0
7081 }));
7082 break;
7083 case "defense":
7084 case "defense2":
7085 m = Object.entries(r).map(([e, {
7086 b: t,
7087 d: a
7089 ]) => ({
7090 name: e,
7091 blook: t,
7092 value: a || 0
7093 }));
7094 break;
7095 case "gold":
7096 case "candy":
7097 for (let $ in h)
7098 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));
7099 m = Object.entries(r).map(([e, {
7100 b: t,
7101 g: a
7103 ]) => ({
7104 name: e,
7105 blook: t,
7106 value: a || 0
7107 }));
7108 break;
7109 case "hack":
7110 for (let g in h)
7111 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));
7112 m = Object.entries(r).map(([e, {
7113 b: t,
7114 cr: a
7116 ]) => ({
7117 name: e,
7118 blook: t,
7119 value: a || 0
7120 }));
7121 break;
7122 case "fish":
7123 for (let y in h)
7124 "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`);
7125 m = Object.entries(r).map(([e, {
7126 b: t,
7127 w: a
7129 ]) => ({
7130 name: e,
7131 blook: t,
7132 value: a || 0
7133 }));
7134 break;
7135 case "dino":
7136 for (let b in h)
7137 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));
7138 m = Object.entries(r).map(([e, {
7139 b: t,
7140 f: a
7142 ]) => ({
7143 name: e,
7144 blook: t,
7145 value: a || 0
7146 }));
7147 break;
7148 case "cafe":
7149 for (let v in h)
7150 h[v].up && ([p, u] = h[v].up.split(":"), u) && this.addAlert(v, t[r[v].b]?.url, `upgraded ${p} to level ` + u);
7151 m = Object.entries(r).map(([e, {
7152 b: t,
7153 ca: a
7155 ]) => ({
7156 name: e,
7157 blook: t,
7158 value: a || 0
7159 }));
7160 break;
7161 case "factory":
7162 for (let _ in h) {
7163 var f,
7165 k = h[_];
7166 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!")
7168 m = Object.entries(r).map(([e, {
7169 b: t,
7170 ca: a
7172 ]) => ({
7173 name: e,
7174 blook: t,
7175 value: a || 0
7178 this.updateLeaderboard(m.sort((e, t) => t.value - e.value));
7181 } catch {
7182 return !1
7185 diffObjects(e, t) {
7186 var a,
7187 o = {};
7188 for (let r in e)
7189 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]));
7190 for (let i in t)
7191 i in e || (o[i] = t[i]);
7192 return 0 == Object.keys(o).length ? null : o
7194 getGamemode() {
7195 if (Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props?.client?.type) {
7196 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props.client.type.toLowerCase();
7198 switch (window.location.pathname) {
7199 case "/play/racing":
7200 return "racing";
7201 case "/play/extras":
7202 return "extras";
7203 case "/play/host":
7204 return "host";
7205 case "/play/pirate":
7206 return "voyage";
7207 case "/play/factory":
7208 return "factory";
7209 case "/play/classic/get-ready":
7210 case "/play/classic/question":
7211 case "/play/classic/answer/sent":
7212 case "/play/classic/answer/result":
7213 case "/play/classic/standings":
7214 return "classic";
7215 case "/play/battle-royale/match/preview":
7216 case "/play/battle-royale/question":
7217 case "/play/battle-royale/answer/sent":
7218 case "/play/battle-royale/answer/result":
7219 case "/play/battle-royale/match/result":
7220 return "royale";
7221 case "/play/toy":
7222 return "toy";
7223 case "/play/gold":
7224 return "gold";
7225 case "/play/brawl":
7226 return "brawl";
7227 case "/play/hack":
7228 return "hack";
7229 case "/play/fishing":
7230 return "Fish";
7231 case "/play/rush":
7232 return "rush";
7233 case "/play/dino":
7234 return "dino";
7235 case "/tower/map":
7236 case "/tower/battle":
7237 case "/tower/rest":
7238 case "/tower/risk":
7239 case "/tower/shop":
7240 case "/tower/victory":
7241 return "doom";
7242 case "/cafe":
7243 case "/cafe/shop":
7244 return "cafe";
7245 case "/defense":
7246 return "defense";
7247 case "/play/defense2":
7248 return "defense2";
7249 case "/kingdom":
7250 return "kingdom";
7251 default:
7252 return !1
7259 function S(e, t) {
7260 var a,
7262 r = 0,
7263 i = 0;
7264 e.onpointerdown = function (e = window.event) {
7265 r = e.clientX,
7266 i = e.clientY,
7267 document.onpointerup = function () {
7268 document.onpointerup = null,
7269 document.onpointermove = null
7271 document.onpointermove = function (e = window.event) {
7272 a = r - e.clientX,
7273 o = i - e.clientY,
7274 r = e.clientX,
7275 i = e.clientY,
7276 t.style.top = t.offsetTop - o + "px",
7277 t.style.left = t.offsetLeft - a + "px"
7281 w("Alerts", "https://i.ibb.co/hBNyCXG/559343-1.png", C.alerts, !0),
7282 w("Global", "https://i.ibb.co/gd4Qs8L/11507ef5615c554fe88fc22c86768501-simple-earth-icon-1.webp", C.global)(),
7283 w("Host", "https://i.ibb.co/QpDgysb/computer-1865273-1.png", C.host, !0),
7284 w('<span style="font-size: 18px">Pirate\'s Voyage</span>', "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxnIGlkPSJCb2F0Ij48cGF0aCBkPSJNMTcwLjQsNTYuMDU0Yy02OC43ODgsMTAuMTc0IC0xMTUuOTcxLDU2LjkzOCAtMTQ1LjQxMSwxMzMuNzVsMTUuNDY5LDcuNzM0YzMwLjk2MiwtMjguMTc1IDc0LjcwNSwtMzcuNzg3IDEzMi4zMjIsLTI3LjI1bDAsLTE3LjYxMWMtMjUuNjI5LC0yNy45NTIgLTI2Ljk2NiwtNTYuNzcyIDAuNzE0LC04Ni42MjhsLTMuMDk0LC05Ljk5NVoiIHN0eWxlPSJmaWxsOiNmNmUwYmQ7Ii8+PHBhdGggZD0iTTE5OS42NzMsNjAuODEzYzMyLjc4NCw0Mi45ODIgNjUuODIyLDkwLjg4NyA5Ny4zMzcsMTM5LjU4MWwtNi42NjMsMGMtMTIuMDg1LC0zMS4xMTEgLTU3Ljg4MiwtMzkuNjk0IC05MS42MjYsLTI3LjI1YzIyLjUxNCwtMzQuNTc5IDE3Ljc5NiwtNzIuNjczIDAuOTUyLC0xMTIuMzMxWiIgc3R5bGU9ImZpbGw6I2Y2ZTBiZDsiLz48cGF0aCBkPSJNNjkuNDQ4LDE5Ny41MzhjMCwwIC01OS43MDcsLTE1LjI0MyAtNjguMzk4LC0xNy40NjJjLTAuMDc2LC0wLjAxOSAtMC4xNTQsMC4wMiAtMC4xODQsMC4wOTJjLTAuMDMsMC4wNzIgLTAuMDAyLDAuMTU1IDAuMDY1LDAuMTk1YzkuNjgyLDUuNzc1IDkxLjY0Nyw1NC42NTggOTEuNjQ3LDU0LjY1OGwtMjMuMTMsLTM3LjQ4M1oiIHN0eWxlPSJmaWxsOiM4ZDZlNDE7Ii8+PHBhdGggZD0iTTE2NC40NSw0Ny45MDNjMCwtNS4zNTMgNC4zNDYsLTkuNjk4IDkuNjk4LC05LjY5OGwxOS4zOTcsLTBjNS4zNTIsLTAgOS42OTgsNC4zNDUgOS42OTgsOS42OThsLTAsMTU2Ljk1M2MtMCw1LjM1MyAtNC4zNDYsOS42OTggLTkuNjk4LDkuNjk4bC0xOS4zOTcsMGMtNS4zNTIsMCAtOS42OTgsLTQuMzQ1IC05LjY5OCwtOS42OThsMCwtMTU2Ljk1M1oiIHN0eWxlPSJmaWxsOiM3ZjY4NDU7Ii8+PHBhdGggZD0iTTI2My45OTMsMjU2LjEwM2MyMi4xNzEsLTE0LjcxIDM2LjAwNywtMzUuNTE1IDM2LjAwNywtNTguNTY1bC0yMzAuNTUyLDBjMCwyMy43MTMgMTQuNjQzLDQ1LjA1IDM3Ljk0LDU5LjgxOWM5Ljg3NSwtMy43MjkgMjAuMDQxLC0xMS4zMzQgMzAuNDYzLC0yMi4zMzZjMzIuODExLDM1LjQ1NSA2NC4wNjksMzUuOTQzIDkzLjcwOCwwYzYuODM4LDkuNjc3IDE3LjczNiwxNi42NDYgMzIuNDM0LDIxLjA4MloiIHN0eWxlPSJmaWxsOiNiNjkyNWY7Ii8+PC9nPjwvc3ZnPg==", C.voyage),
7285 w("Gold quest", "https://media.blooket.com/image/upload/v1661496292/Media/uiTest/Gold.svg", C.gold),
7286 w("Cafe", "https://i.ibb.co/t8pqdYL/hot-beverage-1.png", C.cafe),
7287 w("Crypto Hack", "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/CryptoIcon.svg", C.crypto),
7288 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),
7289 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),
7290 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),
7291 w("Factory", "https://i.ibb.co/VMrTd39/images-removebg-preview-1.png", C.factory),
7292 w('<span style="font-size: 19px">Fishing Frenzy</span>', "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Fish_Weight.svg", C.fishing),
7293 w("Flappy Blook", "https://media.blooket.com/image/upload/v1645222006/Blooks/yellowBird.svg", C.flappy),
7294 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),
7295 w('<span style="font-size: 18px">Crazy Kingdom</span>', "https://i.ibb.co/10mZ6dx/3763864-1.png", C.kingdom),
7296 w("Racing", "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Racing_Progress.svg", C.racing),
7297 w("Battle Royale", "https://media.blooket.com/image/upload/v1655936179/Media/br/VS_Lightning_Bolt_Bottom.svg", C.royale),
7298 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),
7299 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),
7300 w('<span style="font-size: 15px">Santa\'s Workshop</span>', "https://i.ibb.co/Y2SFc9Y/Santa-Workshop-Finished-icon-1.webp", C.workshop),
7301 w("Extras", "https://i.ibb.co/mb0R9HX/Star-icon-stylized-svg-1-removebg-preview.png", C.extras, !0),
7302 w("Settings", "https://i.ibb.co/jrWKgyn/Windows-Settings-icon-1.png", C.settings, !0),
7303 w("Credits", "https://i.ibb.co/prKYGdN/credits.webp", C.credits, !0),
7304 S(m, _),
7305 S(g, _),
7306 window.addEventListener("keydown", A);
7307 let x = setInterval(() => {
7308 C.alerts[0].connection ? clearInterval(x) : C.alerts[0].connect()
7309 }, 5e3);
7311 function D() {
7312 for (let e in _.remove(), clearInterval(x), C)
7313 for (let t of C[e])
7314 t.enabled && t.run();
7315 Object.keys(C).forEach(e => C[e].forEach(e => e.enabled && (e.run(), k(...currentMode)))),
7316 window.removeEventListener("keydown", A)
7319 function A(e) {
7320 var t = c.data.hide || {
7321 ctrl: !0,
7322 key: "e"
7324 a = c.data.close || {
7325 ctrl: !0,
7326 key: "x"
7328 (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())
7331 function B(e, t = window) {
7332 return new Promise(a => {
7333 let o = {},
7338 l = t => {
7339 t.preventDefault(),
7340 o[t.code] = !0,
7341 r ||= t.shiftKey,
7342 i ||= t.ctrlKey,
7343 n ||= t.altKey,
7344 ["shift", "control", "alt", "meta"].includes(t.key.toLowerCase()) || (s = t.key.toLowerCase()),
7345 e?.({
7346 shift: r,
7347 ctrl: i,
7348 alt: n,
7349 key: s
7352 c = e => {
7353 delete o[e.code],
7354 0 < Object.keys(o).length || (t.removeEventListener("keydown", l), t.removeEventListener("keyup", c), a({
7355 shift: r,
7356 ctrl: i,
7357 alt: n,
7358 key: s
7361 t.addEventListener("keydown", l),
7362 t.addEventListener("keyup", c)
7365 _.addEventListener("mousemove", e => {
7366 var t,
7368 "cheatName" != e.target.className && "scriptButton" != e.target.className ? "0" != y.style.opacity && (y.animate([{
7369 opacity: .9
7370 }, {
7371 opacity: 0
7373 ], {
7374 duration: 200
7375 }), 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([{
7376 opacity: 0
7377 }, {
7378 opacity: .9
7380 ], {
7381 duration: 200
7382 }), 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"))
7384 window.fetch.call = function () {
7385 if (!arguments[1].includes("s.blooket.com/rc"))
7386 return wfcall.apply(this, arguments);
7387 C.alerts?.[0].addLog("Blooket Cheat Report Blocked!")
7389 })();