Update Gui.min.js
[bcp.git] / MobileGUI / mobileGui.user.js
blob1ecc9c7192942349491ec0d095c8ddd95fcaaee6
1 // ==UserScript==
2 // @name Blooket Cheats Plus
3 // @namespace https://github.com/DannyDan0167/Blooket-Cheats
4 // @version 15.3
5 // @description Blooket Cheats Plus
6 // @updateURL https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/Update/mobileGUI.meta.js
7 // @downloadURL https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/MobileGUI/mobileGui.user.js
8 // @author DannyDan0167
9 // @match https://dashboard.blooket.com/*
10 // @match https://play.blooket.com/*
11 // @match https://towerdefense2.blooket.com/*
12 // @match https://monsterbrawl.blooket.com/*
13 // @match https://towerdefense.blooket.com/*
14 // @match https://cafe.blooket.com/*
15 // @match https://factory.blooket.com/*
16 // @match https://crazykingdom.blooket.com/*
17 // @match https://towerofdoom.blooket.com/*
18 // @match https://goldquest.blooket.com/*
19 // @match https://cryptohack.blooket.com/*
20 // @match https://fishingfrenzy.blooket.com/*
21 // @match https://deceptivedinos.blooket.com/*
22 // @match https://battleroyale.blooket.com/*
23 // @match https://racing.blooket.com/*
24 // @match https://blookrush.blooket.com/*
25 // @match https://classic.blooket.com/*
26 // @match https://pirate.blooket.com/*
27 // @icon https://i.ibb.co/sWqBm0K/1024.png
28 // @grant none
29 // @require https://unpkg.com/idb-keyval@6.0.3/dist/umd.js
30 // ==/UserScript==
32 (async () => {
33 if (String(window.fetch.call).includes("native")) {
34 var e = window.fetch.call;
35 window.fetch.call = function() {
36 if (!arguments[1].includes("s.blooket.com/rc")) return e.apply(this, arguments);
37 console.log("You tried to get caught cheating!")
39 } else console.log("already run");
40 if (console.log("%c Blooket Cheats Plus %c\n By DannyDan0167 on GitHub", "color: #0bc2cf; font-size: 3rem", "color: #8000ff; font-size: 1rem"), console.log("%c Mobilegui.js", "color: #0bc2cf; font-size: 1rem"), console.log("%c Star the github repo!%c https://github.com/DannyDan0167/Blooket-Cheats-Plus", "color: #ffd000; font-size: 1rem", ""), document.querySelector("script[src*='bfs/index.js']") && !window.clearId) {
41 for (var t = document.createElement("iframe"), o = (document.body.appendChild(t), window.clearId = window.setInterval(() => {}, 0)); o--;) t.contentWindow.clearInterval.call(window, o);
42 t.remove()
43 } {
44 var t, o = document.createElement("iframe"),
45 o = (document.body.append(o), window.alert = o.contentWindow.alert.bind(window), window.prompt = o.contentWindow.prompt.bind(window), window.confirm = o.contentWindow.confirm.bind(window), o.remove(), (e, t = {}) => Object.entries(t).forEach(([t, o]) => e.style[t] = o));
46 (t = document.createElement("style")).innerHTML = "details > summary { cursor: pointer; transition: 0.15s; list-style: none; } details > summary:hover { color: hsl(0, 0%, 50%) } details > summary::-webkit-details-marker { display: none; } details summary ~ * { animation: sweep .5s ease-in-out; } @keyframes sweep { 0% {opacity: 0; transform: translateY(-10px)} 100% {opacity: 1; transform: translateY(0)} } .cheat { border: none; background: hsl(0, 0%, 20%); padding: 5px; margin: 3px; width: 60%; color: hsl(0, 0%, 100%); transition: 0.2s; border-radius: 5px; cursor: pointer; } .cheat:hover { background: hsl(0, 0%, 30%); }";
47 let a = document.createElement("div");
48 [...document.querySelectorAll("#JODMOBILE")].forEach(e => e.remove()), a.id = "JODMOBILE", a.appendChild(t), o(a, {
49 width: "400px",
50 background: "hsl(0, 0%, 10%)",
51 backgroundImage: "linear-gradient(rgba(0, 0, 0, 0.95), rgba(0, 0, 0, 0.95)), url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
52 borderRadius: "10px",
53 position: "absolute",
54 textAlign: "center",
55 fontFamily: "Nunito",
56 color: "white",
57 overflow: "hidden",
58 top: "50px",
59 left: "50px"
60 });
61 var r, n, i = 0,
62 s = 0,
63 t = (a.onpointerdown = (e = window.event) => {
64 e.preventDefault(), i = e.clientX, s = e.clientY, document.onpointerup = () => {
65 document.onpointerup = null, document.onpointermove = null
66 }, document.onpointermove = e => {
67 (e = e || window.event).preventDefault(), r = i - e.clientX, n = s - e.clientY, i = e.clientX, s = e.clientY, a.style.top = a.offsetTop - n + "px", a.style.left = a.offsetLeft - r + "px"
69 }, document.createElement("div")),
70 l = (a.appendChild(t), o(t, {
71 width: "100%",
72 height: "35px",
73 paddingTop: "2px",
74 fontSize: "1.5rem",
75 textAlign: "center"
76 }), t.innerHTML = 'Blooket Cheats Plus <span style="font-size: 0.75rem">v15.30.00</span>', document.createElement("button")),
77 l = (t.appendChild(l), o(l, {
78 background: "red",
79 height: "45px",
80 width: "45px",
81 border: "none",
82 cursor: "pointer",
83 position: "absolute",
84 top: "-10px",
85 right: "-10px",
86 fontSize: "1.5rem",
87 borderRadius: "10px",
88 fontFamily: "Nunito",
89 fontWeight: "bolder",
90 paddingTop: "10px",
91 paddingRight: "15px"
92 }), l.innerText = "X", l.onclick = () => {
93 $(), a.remove(), removeEventListener("keypress", f)
94 }, document.createElement("button"));
95 t.appendChild(l), o(l, {
96 background: "#444444",
97 height: "45px",
98 width: "45px",
99 border: "none",
100 cursor: "pointer",
101 position: "absolute",
102 top: "-10px",
103 left: "-10px",
104 fontSize: "1.5rem",
105 borderRadius: "10px",
106 fontFamily: "Nunito",
107 fontWeight: "bolder",
108 paddingTop: "10px",
109 paddingLeft: "15px"
110 }), l.innerText = "-", l.onclick = () => c.hidden = !c.hidden;
111 let c = document.createElement("div"),
112 d = (t = document.createElement("div"), c.appendChild(t), a.appendChild(c), t.innerHTML = `<span id="curPageEl">${_(!0)?"Current gamemode: "+_(!0):"No game detected"}</span><br><span>(Press E to hide)</span><br>`, t.style.display = "block", t.style.margin = "10px", document.body.append(a), o = document.createElement("div"), c.appendChild(o), o.style.fontSize = "0.9rem", o.style.paddingBottom = "5px", {
113 global: [{
114 name: "Auto Answer (Toggle)",
115 description: "Toggles auto answer on",
116 type: "toggle",
117 enabled: (o.innerHTML = '<span><a target="blank" href="https://discord.gg/8A6J234n7v">Discord</a><br/><a target="blank" href="https://github.com/DannyDan0167/Blooket-Cheats-Plus/">GitHub - DannyDan0167</a></span>', !1),
118 data: null,
119 run: function() {
120 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
121 let {
122 state: {
123 question: e,
124 stage: t,
125 feedback: o
127 props: {
128 client: {
129 question: a
132 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
133 try {
134 "typing" != e.qType ? ("feedback" === t || o ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][(e || a).answers.map((t, o) => (e || a).correctAnswers.includes(t) ? o : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(e.answers[0])
135 } catch {}
136 }, 50))
138 }, {
139 name: "Highlight Answers (Toggle)",
140 description: "Toggles highlight answers on",
141 type: "toggle",
142 enabled: !1,
143 data: null,
144 run: function() {
145 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
146 let {
147 stateNode: {
148 state: e,
149 props: t
151 } = Object.values(function e(t = document.querySelector("body>div")) {
152 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
153 }())[1].children[0]._owner;
154 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
155 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) ? o.style.backgroundColor = "rgb(0, 207, 119)" : o.style.backgroundColor = "rgb(189, 15, 38)"
157 }, 50))
159 }, {
160 name: "Subtle Highlight Answers (Toggle)",
161 description: "Toggles subtle highlight answers on",
162 type: "toggle",
163 enabled: !1,
164 data: null,
165 run: function() {
166 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
167 let {
168 stateNode: {
169 state: e,
170 props: t
172 } = Object.values(function e(t = document.querySelector("body>div")) {
173 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
174 }())[1].children[0]._owner;
175 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
176 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) && (o.style.boxShadow = "unset")
178 }, 50))
180 }, {
181 name: "Freeze Leaderboard",
182 description: "Freezes the leaderboard on the host's screen",
183 type: "toggle",
184 enabled: !1,
185 data: null,
186 run: function() {
187 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
188 else {
189 this.enabled = !0;
190 let e = () => {
191 var e = Object.values(function e(t = document.querySelector("#app")) {
192 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
193 }())[1].children[0]._owner.stateNode;
194 e.props.liveGameController.setVal({
195 path: `c/${e.props.client.name}/tat/Freeze`,
196 val: "Frozen"
199 this.data = setInterval(e, 50)
202 }, {
203 name: "Percent Auto Answer",
204 description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
205 type: "toggle",
206 enabled: !1,
207 data: null,
208 run: function() {
209 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
210 else {
211 this.enabled = !0;
212 let e = parseFloat(prompt("What grade do you want to get from this set? (0-100)"));
213 for (;
214 "number" != typeof e || isNaN(e);) e = parseFloat(prompt("What grade do you want to get from this set? (0-100)\nInvalid Number"));
215 let {
216 stateNode: t
217 } = Object.values(function e(t = document.querySelector("body>div")) {
218 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
219 }())[1].children[0]._owner;
220 this.data = setInterval(e => {
221 try {
222 let o = t.state.question || t.props.client.question;
223 if ("feedback" == t.state.stage || t.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
224 if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
225 let a = 0,
226 r = 0;
227 for (let n in t.corrects) a += t.corrects[n];
228 for (let i in t.incorrects) r += t.incorrects[i];
229 r += a;
230 let s = 0 == r || Math.abs(a / (r + 1) - e) >= Math.abs((a + 1) / (r + 1) - e);
231 if ("typing" != t.state.question.qType) {
232 let l = document.querySelectorAll("[class*='answerContainer']");
233 for (let c = 0; c < l.length; c++) {
234 let d = o.correctAnswers.includes(o.answers[c]);
235 if (s && d || !s && !d) return l[c]?.click?.()
237 l[0].click()
238 } else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? o.answers[0] : Math.random().toString(36).substring(2))
240 } catch {}
241 }, 100, (e ?? 100) / 100)
244 }, {
245 name: "Auto Answer",
246 description: "Click the correct answer for you",
247 run: function() {
248 let {
249 state: {
250 question: e,
251 stage: t,
252 feedback: o
254 props: {
255 client: {
256 question: a
259 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
260 try {
261 "typing" != e.qType ? ("feedback" === t || o ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][(e || a).answers.map((t, o) => (e || a).correctAnswers.includes(t) ? o : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(e.answers[0])
262 } catch {}
264 }, {
265 name: "Highlight Answers",
266 description: "Colors answers to be red or green highlighting the correct ones",
267 run: function() {
268 let {
269 stateNode: {
270 state: e,
271 props: t
273 } = Object.values(function e(t = document.querySelector("body>div")) {
274 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
275 }())[1].children[0]._owner;
276 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
277 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) ? o.style.backgroundColor = "rgb(0, 207, 119)" : o.style.backgroundColor = "rgb(189, 15, 38)"
280 }, {
281 name: "Subtle Highlight Answers",
282 description: "Removes the shadow from correct answers",
283 run: function() {
284 let {
285 stateNode: {
286 state: e,
287 props: t
289 } = Object.values(function e(t = document.querySelector("body>div")) {
290 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
291 }())[1].children[0]._owner;
292 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
293 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) && (o.style.boxShadow = "unset")
296 }, {
297 name: "Spam Buy Blooks",
298 description: "Opens a box an amount of times",
299 run: async function() {
300 let e = document.createElement("iframe");
301 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.prompt = e.contentWindow.prompt.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove();
302 let {
303 stateNode: t
304 } = Object.values(function e(t = document.querySelector("body>div")) {
305 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
306 }())[1].children[0]._owner, o = 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), {}), a = prompt('Which box do you want to open? (ex: "Ice Monster")').split(" ").map(e => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" "), r = o[a];
307 if (!r) return alert("I couldn't find that box!");
308 let n = Math.min(Math.floor(t.state.tokens / r), parseInt(`0${prompt("How many boxes do you want to open?")}`));
309 if (0 == n) return alert("You do not have enough tokens!");
310 let i = confirm("Would you like to show blooks as unlocking?"),
311 s = {},
312 l = Date.now();
313 for (let c = 0; c < n; c++) {
314 await t.buyPack(!0, a), s[t.state.unlockedBlook] ||= 0, s[t.state.unlockedBlook]++;
315 let d = Date.now();
316 l += Date.now() - d, t.setState({
317 canOpen: !0,
318 currentPack: "",
319 opening: i,
320 doneOpening: i,
321 openPack: i
322 }), clearTimeout(t.canOpenTimeout)
324 await new Promise(e => setTimeout(e)), alert(`(${Date.now()-l}ms) Results: ${Object.entries(s).map(([e,t])=>` ${e} ${t}`).join(` `)}`)
326 }, {
327 name: "Remove Name Limit",
328 description: "Sets the name limit to 120, which is the actual max name length limit",
329 run: function() {
330 var e = document.createElement("iframe");
331 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), document.querySelector('input[class*="nameInput"]').maxLength = 120, alert("Removed name length limit")
333 }, {
334 name: "Remove Random Name",
335 description: "Allows you to put a custom name",
336 run: function() {
337 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
338 isRandom: !1,
339 client: {
340 name: ""
342 }), document.querySelector('[class*="nameInput"]')?.focus?.()
344 }, {
345 name: "Sell Duplicate Blooks",
346 description: "Sell all duplicate blooks leaving you with 1 each",
347 run: async function() {
348 let e = document.createElement("iframe");
349 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)) {
350 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
351 let {
352 stateNode: t
353 } = Object.values(function e(t = document.querySelector("body>div")) {
354 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
355 }())[1].children[0]._owner, o = Date.now(), a = "";
356 for (let r in t.state.blookData)
357 if (t.state.blookData[r] > 1) {
358 if (t.setState({
359 blook: r,
360 numToSell: t.state.blookData[r] - 1
361 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim())) continue;
362 a += ` ${r} ${t.state.blookData[r]-1} `, await t.sellBlook({
363 preventDefault() {}
364 }, !0)
365 } alert(`(${Date.now()-o}ms) Results: ${a.trim()}`)
367 } else alert("This can only be ran in the Blooks page.")
369 }, {
370 name: "Remove all Taken Blooks",
371 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
372 run: function() {
373 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
374 stateNode.setState({
375 takenBlooks: {
376 includes: e => !1
379 stateNode.setState = function(a, b) {
380 if (a?.takenBlooks) {
381 return;
383 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
386 }, {
387 name: "Simulate Unlock",
388 description: "Simulates unlocking a certain blook",
389 run: function() {
390 var unlockedBlook = window.prompt("Enter the blook (Case Sensitive):");
392 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
393 stateNode.setState({
394 loadingPack: false,
395 openPack: true,
396 unlockedBlook,
397 newUnlock: true,
398 canOpen: false
400 setTimeout(() => stateNode.setState({
401 canOpen: true
402 }), 200);
404 }, {
405 name: "Freeze Host",
406 description: "Freezes the host's screen",
407 run: function() {
408 const encodedChars = [
409 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
412 const chars = encodedChars.map(char => eval(`"${char}"`));
414 function makeLongText() {
415 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
418 let {
419 props: t
420 } = Object.values(function e(t = document.querySelector("body>div")) {
421 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
422 }())[1].children[0]._owner.stateNode;
424 let repeatedText = makeLongText();
425 t.client.blook = repeatedText;
426 t.liveGameController.setVal({
427 path: `c/${t.client.name}/b`,
428 val: repeatedText
431 }, {
432 name: "Blooket Bot",
433 description: "Opens Blooket Bot",
434 run: function() {
435 function getGameCode() {
436 const appDiv = document.querySelector('#app>div>div');
437 if (appDiv) {
438 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
439 return reactComponent?.stateNode?.props?.client?.hostId || null;
441 return null;
444 const gameCode = getGameCode();
445 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
446 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
448 }, {
449 name: "Lobbychat",
450 description: "Chat with other people and execute commands",
451 run: function() {
452 if (window.run) {
453 return;
454 } else {
455 window.run = true;
458 function e() {
459 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
461 var t = 0,
462 a = !1;
463 document.addEventListener("keydown", function(e) {
464 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
466 let o = document.createElement("div");
467 o.className = "chat-box", document.body.appendChild(o);
468 let r = document.createElement("div");
469 r.className = "chat-header", r.textContent = "Chat", o.appendChild(r);
470 let i = document.createElement("div");
471 i.className = "chat-body", o.appendChild(i);
472 let n = document.createElement("input");
474 function s(e) {
475 let t = document.createElement("div");
476 t.textContent = e, i.appendChild(t)
478 n.type = "text", n.className = "chat-input", n.placeholder = "Type a message...", o.appendChild(n), o.style.position = "fixed", o.style.bottom = "20px", o.style.right = "20px", o.style.width = "300px", o.style.backgroundColor = "#fff", o.style.border = "1px solid #ccc", o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)", r.addEventListener("click", () => {
479 i.classList.toggle("open")
480 }), n.addEventListener("keydown", function(a) {
481 13 === a.keyCode && (function a(o) {
482 var r, n, l, c, d, p, u, h = function e(t) {
483 if ("/" !== t.charAt(0)) return !1;
484 var a = t.split(" "),
485 o = a[0].replace("/", "");
486 return a.splice(0, 1), {
487 cmd: o,
488 args: a
490 }(o);
491 if (h) switch (h.cmd) {
492 case "cb":
493 r = h.args.join(" "), (n = webpackJsonp.push([
494 [], {
495 1234(e, t, a) {
496 t.webpack = a
500 ["1234"]
502 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
503 id: e().stateNode.props.client.hostId,
504 path: "c/" + e().stateNode.props.client.name,
505 val: {
506 b: r
508 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
509 break;
510 case "clear":
511 i.innerHTML = "";
512 break;
513 case "dumpstate":
514 Object.keys(e().stateNode.state).map(t => {
515 var a = e().stateNode.state[t];
516 if (null == a) return "N/A";
517 Array.from(a) && "object" == typeof a && (a = "[Array]"), s(t + ":" + a)
518 }).join(";");
519 break;
520 case "list":
521 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
522 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
524 break;
525 case "tlog":
526 window.logsv = !window.logsv, s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
527 break;
528 case "setval":
529 l = h.args, e().stateNode.props.liveGameController.setVal({
530 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
531 val: l.slice(1, l.length).join(" ")
533 break;
534 case "setstate":
535 c = h.args, d = {}, c.forEach(e => {
536 var t = e.split(":");
537 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])), d[t[0]] = t[1]
538 }), e().stateNode.setState(d), s("Set Successful!");
539 break;
540 case "ahelp":
541 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)");
542 break;
543 case "help":
544 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)");
545 break;
546 case "dump":
547 ! function t(a) {
548 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
549 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
551 }(h.args.join(" "));
552 break;
553 case "unlock":
554 p = h.args.join(" "), (u = webpackJsonp.push([
555 [], {
556 1234(e, t, a) {
557 t.webpack = a
561 ["1234"]
563 ]).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!");
564 break;
565 case "code":
566 s("Game Code: " + e().stateNode.props.client.hostId);
567 break;
568 default:
569 s("Unrecognized chat command!")
570 } else e().stateNode.props.liveGameController.setVal({
571 id: e().stateNode.props.client.hostId,
572 path: "c/" + e().stateNode.props.client.name + "/msg",
573 val: {
574 i: t,
575 msg: o
577 }), t++
578 }(a.srcElement.value), a.srcElement.value = "")
580 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
582 function c(e) {
583 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
585 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
586 var r, i;
587 console.log(e, t, a, o), r = e, null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)), l(e, t, a, o)
588 }, window.logsv = !1;
589 var d = e().stateNode.props.liveGameController.setVal;
590 e().stateNode.props.liveGameController.setVal = function() {
591 c.apply(this, arguments), d.apply(this, arguments)
592 }, e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}), s("Lobbychat successfully loaded!"), o.style.wordWrap = "break-word"
594 }, {
595 name: "Pin Guesser",
596 description: "Brute forces combinations for existing pins",
597 run: function() {
598 var e = 0,
599 t = 0,
600 o = document.querySelector("div[class*='titleText']");
602 function a() {
603 return Object.values(function e(t = document.querySelector("body>div")) {
604 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
605 }())[1].children[0]._owner.stateNode
606 }(function r() {
607 let n = Math.floor(9e6 * Math.random()) + 1e6;
608 fetch(`https://fb.blooket.com/c/firebase/id?id=${n}`, {
609 method: "GET",
610 credentials: "include"
611 }).then(e => e.json()).then(i => {
612 !0 === i.success ? (console.log("Game found:", n), o.innerHTML = "Game Found!", a().setState({
613 client: {
614 hostId: n.toString()
616 })) : (console.log("No game found for:", n), a().setState({
617 client: {
618 hostId: n.toString()
620 }), e++, o.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
621 }).catch(e => {
622 alert("Error:" + e)
624 })()
626 }, {
627 name: "Crash Game",
628 description: "Crashes the host's game",
629 run: function() {
630 var e = Object.values(function e(t = document.querySelector("#app")) {
631 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
632 }())[1].children[0]._owner.stateNode;
633 e.props.liveGameController.setVal({
634 path: `c/${e.props.client.name}/b/toString`,
635 val: "Crashed"
638 }, {
639 name: "Every Answer Correct",
640 description: "Sets every answer to be correct",
641 run: function() {
642 let {
643 stateNode: e
644 } = Object.values(function e(t = document.querySelector("body>div")) {
645 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
646 }())[1].children[0]._owner;
647 e.freeQuestions = e.freeQuestions?.map?.(e => ({
648 ...e,
649 correctAnswers: e.answers
650 })), e.questions = e.questions?.map?.(e => ({
651 ...e,
652 correctAnswers: e.answers
653 })), e.props.client.questions = e.props.client.questions.map(e => ({
654 ...e,
655 correctAnswers: e.answers
658 }, {
659 name: "Flood Game",
660 description: "Floods a game with a number of fake accounts",
661 run: async function() {
662 let e = document.createElement("iframe");
664 function t() {
665 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode
667 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
668 var o = {
669 randomNames: !1
671 a = t().props.liveGameController._liveApp.firebase;
672 async function r(e, t) {
673 let o = await fetch("https://fb.blooket.com/c/firebase/join", {
674 body: JSON.stringify({
675 id: e,
676 name: t
678 credentials: "include",
679 method: "PUT"
680 }).then(e => e.json());
681 if (o.success) {
682 let r = a.initializeApp({
683 apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
684 authDomain: "blooket-2020.firebaseapp.com",
685 projectId: "blooket-2020",
686 storageBucket: "blooket-2020.appspot.com",
687 messagingSenderId: "741533559105",
688 appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
689 measurementId: "G-S3H5NGN10Z",
690 databaseURL: o.fbShardURL
692 await r.auth().signInWithCustomToken(o.fbToken);
693 let n = r.database();
694 await n.ref(`${e}/c/${t}`).set({
695 b: "Rainbow Astronaut",
696 bg: "fire"
697 }), console.log("Bot joined!")
698 } else alert("Connect error: " + o.msg)
700 async function n() {
701 if (!t().props.liveGameController._liveApp) {
702 alert("You must be in a game for the flooder to work!");
703 return
705 var e, a = t().props.liveGameController._liveGameCode,
706 n = parseInt(prompt("Enter number of bots to flood with:"));
707 if (!n) {
708 alert("You must use a valid number!");
709 return
711 if (!o.randomNames) var s = prompt("Enter name of bots:");
712 for (var l = 0; l < n; l++) await r(a, e = o.randomNames ? i(15) : s + Math.floor(4e3 * Math.random()))
715 function i(e) {
716 for (var t = "", o = 0; o < e; o++) t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
717 return t
721 }, {
722 name: "Change Blook Ingame",
723 description: "Changes your blook",
724 run: function() {
725 let i = document.createElement('iframe');
726 document.body.append(i);
727 window.prompt = i.contentWindow.prompt.bind(window);
728 i.remove();
729 let {
730 props
731 } = Object.values((function react(r = document.querySelector("body>div")) {
732 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
733 })())[1].children[0]._owner.stateNode;
734 props.client.blook = prompt("Blook Name: (Case Sensitive)");;
735 props.liveGameController.setVal({
736 path: `c/${props.client.name}/b`,
737 val: props.client.blook
740 }, {
741 name: "Change Name Ingame",
742 description: "Changes your name ingame",
743 run: function() {
744 var newname = window.prompt("Enter the new name:");
746 (async () => {
747 const reactHandler = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
748 let i = document.createElement('iframe');
749 document.body.append(i);
750 let alert = i.contentWindow.alert.bind(window);
751 i.remove();
753 async function genToken(name) {
754 const res = await fetch("https://fb.blooket.com/c/firebase/join", {
755 body: JSON.stringify({
756 id: reactHandler().props.client.hostId,
757 name
759 headers: {
760 "Content-Type": "application/json"
762 method: "PUT",
763 credentials: "include"
764 }).then(e => e.json());
765 if (!res.success) {
766 alert("Error: " + res.msg);
767 return;
769 return res.fbToken;
772 const oldname = reactHandler().props.client.name;
773 reactHandler().props.client.name = newname;
774 const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
775 await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
776 const token = await genToken(newname);
777 if (!token) {
778 return;
780 await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
781 reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
782 if (e.uid.split(":")[1] === newname) {
783 reactHandler().props.liveGameController.setVal({
784 path: `c/${newname}`,
785 val: olddata
789 reactHandler().setState({});
790 })();
792 }, {
793 name: "Set Blook Ad Text",
794 description: "Sets a load of text as your blook and floods the teacher's screen in the lobby",
795 run: function() {
796 var text = window.prompt("Enter the text:");
798 let t = Object.values(function e(t = document.querySelector("body>div")) {
799 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
800 }())[1].children[0]._owner.stateNode;
802 if (!String.prototype.inc) {
803 String.prototype.inc = String.prototype.includes;
806 String.prototype.includes = function(a) {
807 if (a == "#" && this.length > 30) {
808 return true;
810 return String.prototype.inc.apply(this, arguments);
813 let repeatedText = Array(500).fill(text).join(' ');
815 if (!t.state.unlocks) {
816 t.client.blook = repeatedText;
819 t.props.liveGameController.setVal({
820 path: `c/${t.props.client.name}/b`,
821 val: repeatedText
824 }, {
825 name: "Set Blook Ad Text Ingame",
826 description: "Sets a load of text as your blook",
827 run: function() {
828 var text = window.prompt("Enter the text:");
830 let {
831 props: t
832 } = Object.values(function e(t = document.querySelector("body>div")) {
833 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
834 }())[1].children[0]._owner.stateNode;
836 let repeatedText = Array(500).fill(text).join(' ');
837 t.client.blook = repeatedText;
838 t.liveGameController.setVal({
839 path: `c/${t.client.name}/b`,
840 val: repeatedText
843 }, {
845 name: "Get Daily Rewards",
846 description: "Gets max daily tokens and xp",
847 run: async function() {
848 let e = document.createElement("iframe");
849 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
850 let {
852 } = await fetch("https://play.blooket.com/api/playersessions/solo", {
853 body: JSON.stringify({
854 gameMode: "Factory",
855 questionSetId: ["60101da869e8c70013913b59", "625db660c6842334835cb4c6", "60268f8861bd520016eae038", "611e6c804abdf900668699e3", "60ba5ff6077eb600221b7145", "642467af9b704783215c1f1b", "605bd360e35779001bf57c5e", "6234cc7add097ff1c9cff3bd", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "5fac96fe2ca0da00042b018f", "600b14d8d42a140004d52165", "5f88953cdb209e00046522c7", "600b153ad42a140004d52172", "5fe260e72a505b00040e2a11", "5fe3d085a529560004cd3076", "5f5fc017aee59500041a1456", "608b0a5863c4f2001eed43f4", "5fad491512c8620004918ace", "5fc91a9b4ea2e200046bd49a", "5c5d06a7deebc70017245da7", "5ff767051b68750004a6fd21", "5fdcacc85d465a0004b021b9", "5fb7eea20bd44300045ba495"][Math.floor(24 * Math.random())]
857 credentials: "include",
858 method: "POST"
859 }).then(e => e.json());
860 await fetch("https://play.blooket.com/api/playersessions/landings", {
861 body: JSON.stringify({
864 credentials: "include",
865 method: "POST"
866 }), await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
867 credentials: "include"
869 let {
870 name: o,
871 blook: {
872 name: a
874 } = Object.values(function e(t = document.querySelector("body>div")) {
875 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
876 }())[1].children[0]._owner.stateNode.props.user.data;
877 await fetch("https://play.blooket.com/api/users/factorystats", {
878 body: JSON.stringify({
879 blookUsed: a,
881 name: o,
882 cash: Math.floor(9e7 * Math.random()) + 1e7,
883 correctAnswers: Math.floor(500 * Math.random()) + 500,
884 upgrades: Math.floor(300 * Math.random()) + 300,
885 mode: "Time-Solo",
886 nameUsed: "You",
887 place: 1,
888 playersDefeated: 0
890 credentials: "include",
891 method: "PUT"
892 }), fetch("https://play.blooket.com/api/users/add-rewards", {
893 body: JSON.stringify({
895 name: o,
896 addedTokens: 500,
897 addedXp: 300
899 credentials: "include",
900 method: "PUT"
901 }).then(e => e.json()).then(({
902 dailyReward: e
903 }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
904 } else alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
906 }, {
907 name: "Use any Blook",
908 description: "Allows you to play as any blook.",
909 run: function() {
910 (() => {
911 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
912 let i = document.createElement('iframe');
913 document.body.append(i);
914 const alert = i.contentWindow.alert.bind(window);
915 i.remove();
916 if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
917 alert("This must be run on the lobby or dashboard!");
918 return;
920 if (stateNode.state.blookData) {
921 let oe = Object.entries;
922 Object.entries = function(a) {
923 if (a?.Chick) {
924 allBlooks(a);
925 Object.entries = oe;
927 return oe.apply(this, arguments);
929 stateNode.render();
931 function allBlooks(blooks) {
932 let blookData = {};
933 stateNode.setState({
934 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
935 allSets: Object.values(blooks).reduce((a, b) => {
936 return !a.includes(b.set) && a.push(b.set), a
937 }, [])
940 } else {
941 stateNode.setState({
942 unlocks: {
943 includes: e => 1
947 })();
949 }, {
950 name: "Bypass Filter",
951 description: "Bypasses the name filter",
952 run: function() {
953 var e, t, o, a;
954 let r;
955 o = function e(t) {
956 for (var o = t.split(""), a = "", r = 0; r < o.length; r++) a += "\xad" + o[r];
957 return a
958 }(t = window.prompt("Enter some text:")), r = document.createElement("iframe"), document.body.appendChild(r), window.alert = r.contentWindow.alert.bind(r.contentWindow), (e = document.createElement("textarea")).value = o, e.style.position = "fixed", e.style.top = 0, e.style.left = 0, e.style.opacity = 0, document.body.appendChild(e), e.select(), document.execCommand("copy"), alert("Bypassed text copied to clipboard!"), r.remove(), document.body.removeChild(e)
960 }, {
961 name: "Host Any Gamemode",
962 description: "Change the selected gamemode on the host settings page",
963 run: function(e) {
964 let t = document.createElement("iframe");
965 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) {
966 let o = ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"],
967 a = prompt(`Which gamemode do you want to switch to? (Case sensitive) ${o.slice(0,o.length-1).join(", ")} or ${o[o.length-1]}`);
968 if (o.includes(a)) {
969 let {
970 stateNode: r
971 } = Object.values(function e(t = document.querySelector("body>div")) {
972 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
973 }())[1].children[0]._owner;
974 r.setState({
975 settings: {
976 type: a
979 } else alert("Gamemode not found, make sure you spelled and capitalized it right.")
980 } else alert("Run this script on the host settings page")
983 voyage: [{
984 name: "Heist ESP",
985 description: "Shows you what's under each chest during a heist",
986 type: "toggle",
987 enabled: false,
988 data: null,
989 run: function() {
990 if (this.enabled) {
991 this.enabled = false;
992 clearInterval(this.data);
993 this.data = null;
994 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
995 } else {
996 this.enabled = true;
997 this.data = setInterval(() => {
998 const cheat = (async () => {
999 let {
1000 stateNode
1001 } = Object.values((function react(r = document.querySelector("body>div")) {
1002 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1003 })())[1].children[0]._owner;
1004 if (stateNode.state.stage == "heist") {
1005 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
1006 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
1007 for (const e of document.querySelectorAll("[class*=boxContent] > div")) e.remove();
1008 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
1009 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
1010 const box = container.firstChild.firstChild;
1011 if (open.includes(i)) return box.style.opacity = "";
1012 box.style.opacity = "0.5";
1013 let d = document.createElement("div");
1014 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
1015 d.className = "chestESP";
1016 d.style.position = "absolute";
1017 d.style.inset = "0";
1018 d.style.display = "grid";
1019 d.style.placeItems = "center";
1020 d.style.pointerEvents = "none";
1021 container.onclick = () => {
1022 d.remove();
1023 box.style.opacity = "";
1025 container.firstChild.prepend(d);
1029 cheat();
1030 }, 50);
1033 }, {
1034 name: "Max Levels",
1035 description: "Maxes out all islands and your boat",
1036 run: function() {
1037 let {
1038 stateNode: e
1039 } = Object.values(function e(t = document.querySelector("body>div")) {
1040 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1041 }())[1].children[0]._owner;
1042 e.setState({
1043 islandLevels: Array(e.state.islandLevels.length).fill(5)
1044 }, e.updateBoatLevel)
1046 }, {
1047 name: "Set Doubloons",
1048 description: "Sets Doubloons",
1049 run: function() {
1050 let e = document.createElement("iframe");
1051 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1052 let t = parseInt(prompt("How many doubloons do you want?")) || 0,
1054 stateNode: o
1055 } = Object.values(function e(t = document.querySelector("body>div")) {
1056 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1057 }())[1].children[0]._owner;
1058 o.setState({
1059 doubloons: t
1060 }), o.props.liveGameController.setVal({
1061 path: `c/${o.props.client.name}/d`,
1062 val: t
1065 }, {
1066 name: "Start Heist",
1067 description: "Starts a heist on someone",
1068 run: function() {
1069 let e = document.createElement("iframe");
1070 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1071 let {
1072 stateNode: t
1073 } = Object.values(function e(t = document.querySelector("body>div")) {
1074 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1075 }())[1].children[0]._owner;
1076 t.props.liveGameController.getDatabaseVal("c", function(e) {
1077 let o = Object.entries(e || {}).reduce((e, [o, a]) => (o != t.props.client.name && e.push({
1078 name: o,
1079 blook: a.b,
1080 doubloons: a.d || 0
1081 }), e), []);
1082 if (0 === o.length) return t.questionsToAnswer = 1, void t.randomQ();
1083 let {
1084 name: a,
1085 blook: r,
1086 doubloons: n
1087 } = o.find(e => e.name == prompt("Who would you like to heist? (Defaults to top player if no one found)")) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
1088 t.setState({
1089 stage: "heist",
1090 heistInfo: {
1091 name: a,
1092 blook: r
1094 prizeAmount: Math.max(1e3, n)
1098 }, {
1099 name: "Swap Doubloons",
1100 description: "Swaps Doubloons with someone",
1101 run: async function() {
1102 let e = document.createElement("iframe");
1103 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1104 let {
1105 stateNode: t
1106 } = Object.values(function e(t = document.querySelector("body>div")) {
1107 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1108 }())[1].children[0]._owner, o = Object.entries(await new Promise(e => t.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != t.props.client.name), a = o.find(e => e[0] == prompt("Who would you like to swap with? (Defaults to top player if no one found)")) || o[0];
1109 t.props.liveGameController.setVal({
1110 path: `c/${t.props.client.name}`,
1111 val: {
1112 b: t.props.client.blook,
1113 d: a[1].d,
1114 tat: `${a[0]}:${a[1].d-t.state.doubloons}`
1116 }), t.setState({
1117 doubloons: a[1].d
1120 }, {
1121 name: "Take Doubloons",
1122 description: "Takes Doubloons from someone",
1123 run: async function(e) {
1124 let t = document.createElement("iframe");
1125 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1126 let {
1127 stateNode: o
1128 } = Object.values(function e(t = document.querySelector("body>div")) {
1129 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1130 }())[1].children[0]._owner, a = Object.entries(await new Promise(e => o.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != o.props.client.name), r = a.find(e => e[0] == prompt("Who would you like to take from? (Defaults to top player if no one found)")) || a[0];
1131 o.setState({
1132 doubloons: o.state.doubloons + r[1].d
1133 }), o.props.liveGameController.setVal({
1134 path: `c/${o.props.client.name}`,
1135 val: {
1136 b: o.props.client.blook,
1137 d: r[1].d,
1138 tat: `${r[0]}:${r[1].d}`
1142 }, {
1143 name: "Send Ad Text",
1144 description: "Sends a load of text to another player (This will override your blook!)",
1145 run: async function() {
1146 var player = window.prompt("Enter the player's name:");
1147 var text = window.prompt("Enter the text to send:");
1149 let t = document.createElement("iframe");
1150 document.body.append(t);
1151 window.prompt = t.contentWindow.prompt.bind(window);
1152 t.remove();
1154 let {
1155 stateNode: a
1156 } = Object.values(function e(t = document.querySelector("body>div")) {
1157 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1158 }())[1].children[0]._owner;
1160 let o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e)))
1161 .sort((e, t) => t[1].d - e[1].d)
1162 .filter(e => e[0] != a.props.client.name);
1164 let r = o.find(t => t[0] == player) || o[0];
1166 a.setState({
1167 doubloons: a.state.doubloons + r[1].d
1170 a.props.liveGameController.setVal({
1171 path: `c/${a.props.client.name}`,
1172 val: {
1173 b: a.props.client.blook,
1174 d: r[1].d,
1175 tat: `${r[0]}:${r[1].d}`
1179 let {
1180 props: t2
1181 } = Object.values(function e(t = document.querySelector("body>div")) {
1182 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1183 }())[1].children[0]._owner.stateNode;
1185 let repeatedText = `Dog:${Array(500).fill(text).join(' ')}`;
1186 t2.client.blook = repeatedText;
1187 t2.liveGameController.setVal({
1188 path: `c/${t2.client.name}/b`,
1189 val: repeatedText
1193 brawl: [{
1194 name: "Double Enemy XP",
1195 description: "Doubles enemy XP drop value",
1196 run: function() {
1197 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"))) {
1198 var t = e.object2;
1199 let o = t.classType.prototype.start;
1200 t.classType.prototype.start = function() {
1201 o.apply(this, arguments), this.val *= 2
1202 }, t.children.entries.forEach(e => e.val *= 2)
1205 }, {
1206 name: "Half Enemy Speed",
1207 description: "Makes enemies move 2x slower",
1208 run: function() {
1209 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"))) {
1210 var t = e.object2;
1211 let o = t.classType.prototype.start;
1212 t.classType.prototype.start = function() {
1213 o.apply(this, arguments), this.speed *= .5
1214 }, t.children.entries.forEach(e => e.speed *= .5)
1217 }, {
1218 name: "Instant Kill",
1219 description: "Sets all enemies health to 1",
1220 run: function() {
1221 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"))) {
1222 var t = e.object2;
1223 let o = t.classType.prototype.start;
1224 t.classType.prototype.start = function() {
1225 o.apply(this, arguments), this.hp = 1
1226 }, t.children.entries.forEach(e => e.hp = 1)
1229 }, {
1230 name: "Invincibility",
1231 description: "Makes you invincible",
1232 run: function() {
1233 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) e.collideCallback = () => {}
1235 }, {
1236 name: "Magnet",
1237 description: "Pulls all xp towards you",
1238 run: function() {
1239 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({
1240 active: !0
1241 }, {
1242 active: !0,
1243 setActive() {},
1244 setVisible() {}
1247 }, {
1248 name: "Max Current Abilities",
1249 description: "Maxes out all your current abilities",
1250 run: function() {
1251 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1252 for (var [t, o] of Object.entries(e.state.abilities))
1253 for (let a = 0; a < 10 - o; a++) e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
1254 e.setState({
1255 level: e.game.current.scene.scenes[0].level = [1, 3, 5, 10, 15, 25, 35].sort((t, o) => Math.abs(t - e.state.level) - Math.abs(o - e.state.level))[0] - 1
1258 }, {
1259 name: "Next Level",
1260 description: "Skips to the next level",
1261 run: function() {
1262 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
1264 object1: t,
1265 object2: o
1266 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
1267 o.get().spawn(t.x, t.y, (1 === (o = e.state.level) ? 1 : o < 5 ? 5 : o < 10 ? 10 : o < 20 ? 20 : o < 30 ? 30 : o < 40 ? 40 : o < 50 ? 50 : 100) - e.xp)
1269 }, {
1270 name: "Remove Obstacles",
1271 description: "Removes all rocks and obstacles",
1272 run: function() {
1273 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
1274 try {
1275 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
1276 } catch {}
1279 }, {
1280 name: "Kill Enemies",
1281 description: "Kills all current enemies",
1282 run: function() {
1283 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))
1285 }, {
1286 name: "Reset Health",
1287 description: "Resets health and gives invincibility for 3 seconds",
1288 run: function() {
1289 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
1291 }, {
1292 name: "Set XP",
1293 description: "Sets amount of XP",
1294 run: function() {
1295 var e = parseFloat(window.prompt("Enter the amount of XP:")),
1296 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1297 t.setState({
1298 xp: e,
1299 totalXp: e
1300 }), t.xp = e, t.totalXp = e, t.props?.liveGameController.setVal({
1301 path: "c/".concat(t.props.client.name),
1302 val: {
1303 b: t.props.client.blook,
1304 xp: e
1308 }, {
1309 name: "Set Level",
1310 description: "Sets your level",
1311 run: function() {
1312 var e = parseInt(window.prompt("Enter your level:"));
1313 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1314 level: e
1318 cafe: [{
1319 name: "Spam Attack Player",
1320 description: "Attacks the player to make the game unplayable",
1321 type: "toggle",
1322 enabled: false,
1323 data: null,
1324 run: function() {
1325 var name = window.prompt("Enter the player's name:");
1326 if (this.enabled) {
1327 this.enabled = false;
1328 clearInterval(this.data);
1329 this.data = null;
1330 } else {
1331 this.enabled = true;
1333 function reactHandler() {
1334 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
1337 var action = name + ":inspect";
1339 function spamAction() {
1340 var handler = reactHandler();
1341 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
1342 handler.stateNode.props.liveGameController.setVal({
1343 id: handler.stateNode.props.client.hostId,
1344 path: "c/" + handler.stateNode.props.client.name + "/tat",
1345 val: action
1350 this.data = setInterval(spamAction, 50);
1353 }, {
1354 name: "Attack Player",
1355 description: "Sends the player a health inspection",
1356 run: function() {
1357 var targetPlayer = window.prompt("Enter the player's name:");
1359 function reactHandler() {
1360 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
1363 reactHandler().stateNode.props.liveGameController.setVal({
1364 id: reactHandler().stateNode.props.client.hostId,
1365 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
1366 val: targetPlayer + ":inspect"
1369 }, {
1370 name: "Max Items",
1371 description: "Maxes out items in the shop (Only usable in the shop)",
1372 run: function() {
1373 let e = document.createElement("iframe");
1374 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname) alert("This can only be run in the shop");
1375 else {
1376 let {
1377 stateNode: t
1378 } = Object.values(function e(t = document.querySelector("body>div")) {
1379 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1380 }())[1].children[0]._owner;
1381 t.setState({
1382 items: Object.fromEntries(Object.entries(t.state.items).map(e => [e[0], 5]))
1386 }, {
1387 name: "Remove Customers",
1388 description: "Skips the current customers (Not usable in the shop)",
1389 run: function() {
1390 let {
1391 stateNode: e
1392 } = Object.values(function e(t = document.querySelector("body>div")) {
1393 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1394 }())[1].children[0]._owner;
1395 e.state.customers.forEach((t, o) => Object.keys(t).length && e.removeCustomer(o, !0))
1397 }, {
1398 name: "Reset Abilities",
1399 description: "Resets used abilities in shop (Only usable in the shop)",
1400 run: function() {
1401 let e = document.createElement("iframe");
1402 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname) alert("This can only be run in the shop");
1403 else {
1404 let {
1405 stateNode: t
1406 } = Object.values(function e(t = document.querySelector("body>div")) {
1407 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1408 }())[1].children[0]._owner;
1409 t.setState({
1410 abilities: Object.fromEntries(Object.entries(t.state.abilities).map(e => [e[0], 5]))
1414 }, {
1415 name: "Set Cash",
1416 description: "Sets cafe cash",
1417 run: function() {
1418 let e = document.createElement("iframe");
1419 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1420 let t = Number(parseInt(prompt("How much cash would you like?"))),
1422 stateNode: o
1423 } = Object.values(function e(t = document.querySelector("body>div")) {
1424 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1425 }())[1].children[0]._owner;
1426 o.setState({
1427 cafeCash: t
1428 }), o.props.liveGameController.setVal({
1429 path: `c/${o.props.client.name}`,
1430 val: {
1431 b: o.props.client.blook,
1432 ca: t
1436 }, {
1437 name: "Stock Food",
1438 description: "Stocks all food to 99 (Not usable in the shop)",
1439 run: function() {
1440 var e = document.createElement("iframe");
1441 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe" !== window.location.pathname ? alert("This can't be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
1442 foods: e.state.foods.map(e => ({
1443 ...e,
1444 stock: 99,
1445 level: 5
1450 hack: [{
1451 name: "Choice ESP",
1452 description: "Shows what each choice will give you",
1453 type: "toggle",
1454 enabled: !1,
1455 data: null,
1456 run: function() {
1457 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
1458 let {
1459 stateNode: e
1460 } = Object.values(function e(t = document.querySelector("body>div")) {
1461 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1462 }())[1].children[0]._owner, {
1463 text: t
1464 } = e.state.choices[0], o = document.querySelector("[class^=styles__feedbackContainer___]");
1465 if (o.children.length <= 4) {
1466 let a = document.createElement("div");
1467 a.style.color = "white", a.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif", a.style.fontSize = "2em", a.style.display = "flex", a.style.justifyContent = "center", a.style.marginTop = "675px", a.innerText = t, o.append(a)
1469 }, 50))
1471 }, {
1472 name: "Password ESP",
1473 description: "Highlights the wrong passwords",
1474 type: "toggle",
1475 enabled: !1,
1476 data: null,
1477 run: function() {
1478 try {
1479 let e = this;
1480 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
1481 let {
1482 state: e
1483 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
1484 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1485 }())[1].children[1]._owner.stateNode;
1486 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
1487 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 = "")
1489 }, 50))
1490 } catch (t) {
1491 console.error("An error occurred:", t)
1494 }, {
1495 name: "Always Triple",
1496 description: "Always get triple crypto",
1497 type: "toggle",
1498 enabled: !1,
1499 data: null,
1500 run: function() {
1501 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({
1502 choices: [{
1503 type: "mult",
1504 val: 3,
1505 rate: .075,
1506 blook: "Brainy Bot",
1507 text: "Triple Crypto"
1509 }), 50))
1511 }, {
1512 name: "Always Hack",
1513 description: "Always get hack",
1514 type: "toggle",
1515 enabled: !1,
1516 data: null,
1517 run: function() {
1518 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({
1519 choices: [{
1520 type: "hack",
1521 val: 3,
1522 rate: .075,
1523 blook: "Mega Bot",
1524 text: "HACK"
1526 }), 50))
1528 }, {
1529 name: "Crash Password",
1530 description: "Crashes other players when they attempt to hack you",
1531 type: "toggle",
1532 enabled: !1,
1533 data: null,
1534 run: function() {
1535 var e = Object.values(function e(t = document.querySelector("#app")) {
1536 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1537 }())[1].children[0]._owner.stateNode;
1538 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
1539 path: `c/${e.props.client.name}/p`,
1540 val: e.state?.password
1542 else {
1543 this.enabled = !0;
1544 let t = () => {
1545 e.props.liveGameController.setVal({
1546 path: `c/${e.props.client.name}/p/toString`,
1547 val: "crash"
1550 this.data = setInterval(t, 25)
1553 }, {
1554 name: "Set Freeze Password",
1555 description: "Freezes other players when they attempt to hack you",
1556 type: "toggle",
1557 enabled: !1,
1558 data: null,
1559 run: function() {
1560 const encodedChars = [
1561 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1564 const chars = encodedChars.map(char => eval(`"${char}"`));
1566 function makeLongText() {
1567 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1570 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1572 if (this.enabled) {
1573 this.enabled = !1;
1574 clearInterval(this.data);
1575 this.data = null;
1576 t.setState({
1577 password: ''
1579 t.props.liveGameController.setVal({
1580 path: "c/".concat(t.props.client.name),
1581 val: {
1582 b: t.props.client.blook,
1583 p: '',
1584 cr: t.state.crypto
1587 } else {
1588 this.enabled = !0;
1589 let lagFunction = () => {
1590 var e = makeLongText();
1591 t.setState({
1592 password: e
1594 t.props.liveGameController.setVal({
1595 path: "c/".concat(t.props.client.name),
1596 val: {
1597 b: t.props.client.blook,
1598 p: e,
1599 cr: t.state.crypto
1603 this.data = setInterval(lagFunction, 25);
1606 }, {
1607 name: "Auto Guess",
1608 description: "Automatically performs the hack for you",
1609 type: "toggle",
1610 enabled: !1,
1611 data: null,
1612 run: function() {
1613 try {
1614 let e = this;
1615 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
1616 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
1617 let {
1618 stage: e,
1619 correctPassword: t
1620 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
1621 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
1623 }, 50))
1624 } catch (t) {
1625 console.error("An error occurred:", t)
1628 }, {
1629 name: "Set Host Screen Green",
1630 description: "Makes the whole screen filled with text",
1631 type: "toggle",
1632 enabled: !1,
1633 data: null,
1634 run: function() {
1635 var a = Object.values(function e(t = document.querySelector("#app")) {
1636 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1637 }())[1].children[0]._owner.stateNode;
1639 if (this.enabled) {
1640 this.enabled = !1;
1641 clearInterval(this.data);
1642 this.data = null;
1643 a.props.liveGameController.setVal({
1644 path: `c/${a.props.client.name}/cr`,
1645 val: ""
1647 } else {
1648 this.enabled = !0;
1649 let t = () => {
1650 var o = [];
1651 const char = eval('"\\u0e47"');
1652 for (let r = 0; r < 999; r++) {
1653 o.push(char.repeat(70));
1655 a.props.liveGameController.setVal({
1656 path: `c/${a.props.client.name}/cr`,
1657 val: `9999999999999999999999999999999999999999999999${o.join(" ")}`
1660 this.data = setInterval(t, 25);
1663 }, {
1664 name: "Remove Hack",
1665 description: "",
1666 run: function() {
1667 Object.values(function e(t = document.querySelector("body>div")) {
1668 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1669 }())[1].children[0]._owner.stateNode.setState({
1670 hack: ""
1673 }, {
1674 name: "Set Crypto",
1675 description: "Sets crypto",
1676 run: function() {
1677 var e = document.createElement("iframe"),
1678 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much crypto would you like?")))),
1679 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1680 t.setState({
1681 crypto: e,
1682 crypto2: e
1683 }), t.props.liveGameController.setVal({
1684 path: "c/".concat(t.props.client.name),
1685 val: {
1686 b: t.props.client.blook,
1687 p: t.state.password,
1688 cr: e
1692 }, {
1693 name: "Set Password",
1694 description: "Sets hacking password",
1695 run: function() {
1696 var e = document.createElement("iframe"),
1697 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), prompt("What do you want to set your password to?")),
1698 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1699 t.setState({
1700 password: e
1701 }), t.props.liveGameController.setVal({
1702 path: "c/".concat(t.props.client.name),
1703 val: {
1704 b: t.props.client.blook,
1705 p: e,
1706 cr: t.state.crypto
1710 }, {
1711 name: "Set Screen Text",
1712 description: "Makes the whole screen filled with text",
1713 run: function() {
1714 var e = window.prompt("Enter the text you want to display:");
1715 let t = document.createElement("iframe");
1716 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1717 var o = Object.values(function e(t = document.querySelector("#app")) {
1718 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1719 }())[1].children[0]._owner.stateNode,
1720 a = [];
1721 for (let r = 0; r < 999; r++) a.push(e);
1722 o.props.liveGameController.setVal({
1723 path: `c/${o.props.client.name}/cr`,
1724 val: `9999999999999999999999999999999999999999999999${a.join(" ")}`
1727 }, {
1728 name: "Steal Player's Crypto",
1729 description: "Steals all of someone's crypto",
1730 run: function() {
1731 var e = document.createElement("iframe");
1732 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1733 let t = prompt("Who's crypto would you like to steal?"),
1734 o = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1735 o.props.liveGameController.getDatabaseVal("c", e => {
1736 var a, r;
1737 e && Object.keys(e).map(e => e.toLowerCase()).includes(t.toLowerCase()) && ([a, {
1738 cr: r
1739 }] = Object.entries(e).find(([e]) => e.toLowerCase() == t.toLowerCase()), console.log(!!e, e, a, r, o.state), o.setState({
1740 crypto: o.state.crypto + r,
1741 crypto2: o.state.crypto + r
1742 }), o.props.liveGameController.setVal({
1743 path: "c/".concat(o.props.client.name),
1744 val: {
1745 b: o.props.client.blook,
1746 p: o.state.password,
1747 cr: o.state.crypto + r,
1748 tat: a + ":" + r
1750 }), console.log("done"))
1753 }, {
1754 name: "Send Ad Text",
1755 description: "Sends a load of text to another player (This will override your blook!)",
1756 run: async function() {
1757 var player = window.prompt("Enter the player's name:");
1758 var blook = window.prompt("Enter the text to send:");
1760 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1761 t.props.liveGameController.getDatabaseVal("c", a => {
1762 var o;
1763 if (a && Object.keys(a).map(e => e.toLowerCase()).includes(player.toLowerCase())) {
1764 [a, {
1765 cr: o
1766 }] = Object.entries(a).find(([t]) => t.toLowerCase() == player.toLowerCase());
1767 t.setState({
1768 crypto: t.state.crypto + o,
1769 crypto2: t.state.crypto + o
1771 t.props.liveGameController.setVal({
1772 path: "c/".concat(t.props.client.name),
1773 val: {
1774 b: t.props.client.blook,
1775 p: t.state.password,
1776 cr: t.state.crypto + o,
1777 tat: a + ":" + o
1783 let {
1784 props: t2
1785 } = Object.values(function e(t = document.querySelector("body>div")) {
1786 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1787 }())[1].children[0]._owner.stateNode;
1789 let repeatedText = `Dog:${Array(500).fill(blook).join(' ')}`;
1790 t2.client.blook = repeatedText;
1791 t2.liveGameController.setVal({
1792 path: `c/${t2.client.name}/b`,
1793 val: repeatedText
1797 defense: [{
1798 name: "Earthquake",
1799 description: "Shuffles around towers",
1800 run: function() {
1801 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
1802 t = (e.setState({
1803 eventName: "Earthquake",
1804 event: {
1805 short: "e",
1806 color: "#805500",
1807 icon: "fas fa-mountain",
1808 desc: "All of your towers get mixed up",
1809 rate: .02
1811 buyTowerName: "",
1812 buyTower: {}
1813 }, () => e.eventTimeout = setTimeout(() => e.setState({
1814 event: {},
1815 eventName: ""
1816 }), 6e3)), e.tiles.forEach(e => e.forEach((t, o) => 3 === t && (e[o] = 0))), e.tiles.flatMap((e, t) => e.map((e, o) => 0 === e && {
1817 x: o,
1818 y: t
1819 })).filter(Boolean).sort(() => .5 - Math.random()));
1820 e.towers.forEach(o => {
1821 var {
1822 x: a,
1823 y: r
1824 } = t.shift();
1825 o.move(a, r, e.tileSize), e.tiles[r][a] = 3
1828 }, {
1829 name: "Max Tower Stats",
1830 description: "Makes all placed towers overpowered",
1831 run: function() {
1832 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
1833 e.range = 100, e.fullCd = e.cd = 0, e.damage = 1e6
1836 }, {
1837 name: "Remove Ducks",
1838 description: "Removes ducks",
1839 run: function() {
1840 let {
1841 ducks: e,
1842 tiles: t
1843 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1844 e.forEach(e => {
1845 t[e.y][e.x] = 0
1846 }), e.length = 0
1848 }, {
1849 name: "Remove Enemies",
1850 description: "Removes all the enemies",
1851 run: function() {
1852 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1853 e.enemies = e.futureEnemies = []
1855 }, {
1856 name: "Remove Obstacles",
1857 description: "Lets you place towers anywhere",
1858 run: function() {
1859 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1860 e.tiles = e.tiles.map(e => e.fill(0))
1862 }, {
1863 name: "Set Damage",
1864 description: "Sets damage",
1865 run: function() {
1866 var e = document.createElement("iframe");
1867 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = Number(parseInt(prompt("How much dmg would you like?")))
1869 }, {
1870 name: "Set Round",
1871 description: "Sets the current round",
1872 run: function() {
1873 var e = document.createElement("iframe");
1874 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1875 round: Number(parseInt(prompt("What round do you want to set to?")))
1878 }, {
1879 name: "Set Tokens",
1880 description: "Sets the amount of tokens you have",
1881 run: function() {
1882 var e = document.createElement("iframe");
1883 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1884 tokens: Number(parseInt(prompt("How many tokens would you like?")))
1888 defense2: [{
1889 name: "Max Tower Stats",
1890 description: "Makes all placed towers overpowered",
1891 run: function() {
1892 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
1893 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)
1894 for (let t in e.stats.auraBuffs) e.stats.auraBuffs[t] *= 100
1897 }, {
1898 name: "Kill Enemies",
1899 description: "Kills all the enemies",
1900 run: function() {
1901 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1902 e.state.game.scene.enemyQueue.length = 0, e.state.game.scene.physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
1904 }, {
1905 name: "Set Coins",
1906 description: "Sets coins",
1907 run: function() {
1908 var e = document.createElement("iframe");
1909 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1910 coins: Number(parseInt(prompt("How many tokens would you like?")))
1913 }, {
1914 name: "Set Health",
1915 description: "Sets the amount of health you have",
1916 run: function(e) {
1917 var t = document.createElement("iframe");
1918 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1919 health: Number(parseInt(prompt("How much health do you want?")))
1922 }, {
1923 name: "Set Round",
1924 description: "Sets the current round",
1925 run: function(e) {
1926 var t = document.createElement("iframe");
1927 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1928 round: Number(parseInt(prompt("What round do you want to set to?")))
1932 dinos: [{
1933 name: "Auto Choose",
1934 description: "Automatically choose the best fossil when excavating",
1935 type: "toggle",
1936 enabled: false,
1937 data: null,
1938 run: function() {
1939 if (this.enabled) {
1940 this.enabled = false;
1941 clearInterval(this.data);
1942 this.data = null;
1943 } else {
1944 this.enabled = true;
1945 this.data = setInterval(() => {
1946 const cheat = (async () => {
1947 function rand(e, t) {
1948 const s = [];
1949 while (s.length < t) {
1950 const i = Math.random();
1951 let r = 0,
1952 g = null;
1953 for (let o = 0; o < e.length; o++) {
1954 r += e[o].rate;
1955 if (r >= i) {
1956 g = e[o];
1957 break;
1960 g && !s.includes(g) && s.push(g);
1962 return s;
1965 try {
1966 let {
1967 stateNode
1968 } = Object.values((function react(r = document.querySelector("body>div")) {
1969 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1970 })())[1].children[0]._owner;
1972 if (stateNode.state.stage === "excavate") {
1973 stateNode.state.choices.length || (stateNode.state.choices = rand([{
1974 type: "fossil",
1975 val: 10,
1976 rate: .1,
1977 blook: "Amber"
1980 type: "fossil",
1981 val: 25,
1982 rate: .1,
1983 blook: "Dino Egg"
1986 type: "fossil",
1987 val: 50,
1988 rate: .175,
1989 blook: "Dino Fossil"
1992 type: "fossil",
1993 val: 75,
1994 rate: .175,
1995 blook: "Stegosaurus"
1998 type: "fossil",
1999 val: 100,
2000 rate: .15,
2001 blook: "Velociraptor"
2004 type: "fossil",
2005 val: 125,
2006 rate: .125,
2007 blook: "Brontosaurus"
2010 type: "fossil",
2011 val: 250,
2012 rate: .075,
2013 blook: "Triceratops"
2016 type: "fossil",
2017 val: 500,
2018 rate: .025,
2019 blook: "Tyrannosaurus Rex"
2022 type: "mult",
2023 val: 1.5,
2024 rate: .05
2027 type: "mult",
2028 val: 2,
2029 rate: .025
2031 ], 3));
2033 let max = 0,
2034 index = -1;
2035 for (let i = 0; i < stateNode.state.choices.length; i++) {
2036 const {
2037 type,
2039 } = stateNode.state.choices[i];
2040 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
2041 if (value <= max && type != "mult") continue;
2042 max = value;
2043 index = i + 1;
2046 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
2048 } catch {}
2050 cheat();
2051 }, 50);
2054 }, {
2055 name: "Rock ESP",
2056 description: "Shows what is under the rocks",
2057 type: "toggle",
2058 enabled: !1,
2059 data: null,
2060 run: function() {
2061 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
2062 t = t => {
2063 let a = "";
2064 for (; t > 0;) a = e[t % parseInt("10")] + a, t = ~~(t / 10);
2065 return a
2067 a = e => {
2068 let a = e.toString();
2069 if (e >= 1e3) {
2070 let o = ["", "K", "M", "B", "T"],
2071 r = ~~((digits(e) - 1) / 3);
2072 if (r < o.length) {
2073 let i = "";
2074 for (let n = 3; n >= 1; n--) {
2075 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
2076 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
2077 if (s.length <= 3) break
2079 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)), a = i + o[r]
2080 } else {
2081 let l = e,
2082 c = 0;
2083 for (; l >= 100;) l = Math.floor(l / 10), c += 1;
2084 a = `${l/10} \xd7 10${t(c+1)}`
2087 return a
2089 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2090 let {
2091 stateNode: e
2092 } = Object.values(function e(t = document.querySelector("body>div")) {
2093 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2094 }())[1].children[0]._owner, t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
2095 t.every(e => e.querySelector("div")) || e.setState({
2096 choices: [{
2097 type: "fossil",
2098 val: 10,
2099 rate: .1,
2100 blook: "Amber"
2101 }, {
2102 type: "fossil",
2103 val: 25,
2104 rate: .1,
2105 blook: "Dino Egg"
2106 }, {
2107 type: "fossil",
2108 val: 50,
2109 rate: .175,
2110 blook: "Dino Fossil"
2111 }, {
2112 type: "fossil",
2113 val: 75,
2114 rate: .175,
2115 blook: "Stegosaurus"
2116 }, {
2117 type: "fossil",
2118 val: 100,
2119 rate: .15,
2120 blook: "Velociraptor"
2121 }, {
2122 type: "fossil",
2123 val: 125,
2124 rate: .125,
2125 blook: "Brontosaurus"
2126 }, {
2127 type: "fossil",
2128 val: 250,
2129 rate: .075,
2130 blook: "Triceratops"
2131 }, {
2132 type: "fossil",
2133 val: 500,
2134 rate: .025,
2135 blook: "Tyrannosaurus Rex"
2136 }, {
2137 type: "mult",
2138 val: 1.5,
2139 rate: .05
2140 }, {
2141 type: "mult",
2142 val: 2,
2143 rate: .025
2144 }].sort(() => .5 - Math.random()).slice(0, 3)
2145 }, () => {
2146 t.forEach((t, o) => {
2147 let r = e.state.choices[o];
2148 t.querySelector("div") && t.querySelector("div").remove();
2149 let i = document.createElement("div");
2150 i.style.color = "white", i.style.fontFamily = "Macondo", i.style.fontSize = "1em", i.style.display = "flex", i.style.justifyContent = "center", i.style.transform = "translateY(25px)", i.innerText = "fossil" === r.type ? `+${Math.round(r.val*e.state.fossilMult)>99999999?a(Math.round(r.val*e.state.fossilMult)):Math.round(r.val*e.state.fossilMult)} Fossils` : `x${r.val} Fossils Per Excavation`, t.append(i)
2153 }, 50))
2155 }, {
2156 name: "Set Fossils",
2157 description: "Sets the amount of fossils you have",
2158 run: function() {
2159 var e = document.createElement("iframe"),
2160 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many fossils would you like?")))),
2161 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2162 t.setState({
2163 fossils: e
2164 }), t.props.liveGameController.setVal({
2165 path: "c/" + t.props.client.name,
2166 val: {
2167 b: t.props.client.blook,
2168 f: e,
2169 ic: t.state.isCheating
2173 }, {
2174 name: "Set Multiplier",
2175 description: "Sets fossil multiplier",
2176 run: function() {
2177 var e = document.createElement("iframe"),
2178 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("What do you want your multiplier to be?"))));
2179 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2180 fossilMult: e
2183 }, {
2184 name: "Stop Cheating",
2185 description: "Undoes cheating so that you can't be caught",
2186 run: function() {
2187 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2188 e.setState({
2189 isCheating: !1
2190 }), e.props.liveGameController.setVal({
2191 path: `c/${e.props.client.name}/ic`,
2192 val: !1
2196 doom: [{
2197 name: "Fill Deck",
2198 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
2199 run: function() {
2200 let e = document.createElement("iframe");
2201 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
2202 let {
2203 stateNode: t
2204 } = Object.values(function e(t = document.querySelector("body>div")) {
2205 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2206 }())[1].children[0]._owner;
2207 t.props.tower.artifacts = "Medical Kit|Fury Relic|Survival Guide|Steel Socks|Piggy Bank|Lucky Feather|Coupon|Cheese|Tasty Egg|Training Weights|Mighty Shield|Toxic Waste|Lifeline Totem|Cursed Hourglass|Band-Aid|Elder Coins|Captain's Anchor|Chess Pieces|Pink Hippo|Anorak's Wizard Cap|Dave's Doggo|Anubis' Obelisk|Farm Tractor|Magic Seedling|Just A Bone|Cozy Igloo|King's Crown|Sacred Scroll".split("|"), t.props.tower.cards = "Chick,\uD83C\uDF3D|Chicken,\uD83C\uDF3D|Cow,\uD83C\uDF3D|Goat,\uD83C\uDF3D|Horse,\uD83C\uDF3D|Pig,\uD83C\uDF3D|Sheep,\uD83C\uDF3D|Duck,\uD83C\uDF3D|Dog,\uD83C\uDF3D|Cat,\uD83D\uDC3E|Rabbit,\uD83D\uDC3E|Goldfish,\uD83D\uDC3E|Hamster,\uD83D\uDC3E|Turtle,\uD83D\uDC3E|Kitten,\uD83D\uDC3E|Puppy,\uD83D\uDC3E|Bear,\uD83C\uDF32|Moose,\uD83C\uDF32|Fox,\uD83C\uDF32|Raccoon,\uD83C\uDF32|Squirrel,\uD83C\uDF32|Owl,\uD83C\uDF32|Hedgehog,\uD83C\uDF32|Baby Penguin,❄️|Penguin,❄️|Arctic Fox,❄️|Snowy Owl,❄️|Polar Bear,❄️|Arctic Hare,❄️|Seal,❄️|Walrus,❄️|Tiger,\uD83C\uDF34|Panther,\uD83C\uDF34|Cockatoo,\uD83C\uDF34|Orangutan,\uD83C\uDF34|Anaconda,\uD83C\uDF34|Macaw,\uD83C\uDF34|Jaguar,\uD83C\uDF34|Capuchin,\uD83C\uDF34|Toucan,\uD83C\uDF34|Parrot,\uD83C\uDF34|Elf,⚔️|Witch,⚔️|Wizard,⚔️|Fairy,⚔️|Slime Monster,⚔️|Jester,⚔️|Dragon,⚔️|Unicorn,⚔️|Queen,⚔️|King,⚔️|Snow Globe,☃️|Holiday Gift,☃️|Hot Chocolate,☃️|Gingerbread Man,☃️|Gingerbread House,☃️|Holiday Wreath,☃️|Snowman,☃️|Santa Claus,☃️|Two of Spades,\uD83C\uDFF0|Eat Me,\uD83C\uDFF0|Drink Me,\uD83C\uDFF0|Alice,\uD83C\uDFF0|Queen of Hearts,\uD83C\uDFF0|Dormouse,\uD83C\uDFF0|White Rabbit,\uD83C\uDFF0|Cheshire Cat,\uD83C\uDFF0|Caterpillar,\uD83C\uDFF0|Mad Hatter,\uD83C\uDFF0|King of Hearts,\uD83C\uDFF0".split("|").map(e => {
2208 let [t, o] = e.split(",");
2209 return {
2210 strength: 20,
2211 charisma: 20,
2212 wisdom: 20,
2213 class: o,
2214 blook: t
2217 try {
2218 t.props.addTowerNode()
2219 } catch {}
2220 t.setState({
2221 showDeck: !1
2223 } else alert("You need to be on the map to run this cheat!")
2225 }, {
2226 name: "Max Cards",
2227 description: "Maxes out all the cards in your deck",
2228 run: function() {
2229 var e = document.createElement("iframe");
2230 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname ? (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).props.tower.cards.forEach(e => {
2231 e.strength = 20, e.charisma = 20, e.wisdom = 20
2232 }) : alert("You need to be on the map to run this cheat!")
2234 }, {
2235 name: "Max Health",
2236 description: "Fills the player's health",
2237 run: function() {
2238 var e = document.createElement("iframe");
2239 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2240 myHealth: 100
2241 }) : alert("You need to be in battle to run this cheat!")
2243 }, {
2244 name: "Max Card Stats",
2245 description: "Maxes out player's current card (Only works on attribute select page)",
2246 run: function() {
2247 var e = document.createElement("iframe"),
2248 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;
2249 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
2250 myCard: {
2251 ...e.state.myCard,
2252 strength: 20,
2253 charisma: 20,
2254 wisdom: 20
2258 }, {
2259 name: "Min Enemy Stats",
2260 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
2261 run: function() {
2262 var e = document.createElement("iframe"),
2263 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;
2264 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
2265 enemyCard: {
2266 ...e.state.enemyCard,
2267 strength: 0,
2268 charisma: 0,
2269 wisdom: 0
2273 }, {
2274 name: "Set Coins",
2275 description: "Try's to set amount of tower coins you have",
2276 run: function() {
2277 var e = document.createElement("iframe");
2278 if (document.body.append(e), window.alert = e.contentWindow.prompt.bind(window), e.remove(), "/tower/battle" == window.location.pathname) {
2279 var e = parseInt("0" + alert("How many coins would you like?")),
2280 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2281 try {
2282 t.props.setTowerCoins(e)
2283 } catch {}
2284 } else alert("You need to be in battle to run this cheat!")
2287 factory: [{
2288 name: "Choose Blook",
2289 description: "Gives you a blook",
2290 run: function() {
2291 let e = document.createElement("iframe");
2292 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
2293 let {
2294 stateNode: t
2295 } = Object.values(function e(t = document.querySelector("body>div")) {
2296 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2297 }())[1].children[0]._owner, o = [{
2298 name: "Chick",
2299 color: "#ffcd05",
2300 class: "\uD83C\uDF3D",
2301 rarity: "Common",
2302 cash: [3, 7, 65, 400, 2500],
2303 time: [1, 1, 1, 1, 1],
2304 price: [300, 3e3, 3e4, 2e5]
2305 }, {
2306 name: "Chicken",
2307 color: "#ed1c24",
2308 class: "\uD83C\uDF3D",
2309 rarity: "Common",
2310 cash: [10, 40, 200, 1400, 1e4],
2311 time: [5, 4, 3, 2, 1],
2312 price: [570, 4e3, 5e4, 8e5]
2313 }, {
2314 name: "Cow",
2315 color: "#58595b",
2316 class: "\uD83C\uDF3D",
2317 rarity: "Common",
2318 cash: [25, 75, 1500, 25e3, 25e4],
2319 time: [15, 10, 10, 10, 5],
2320 price: [500, 9500, 16e4, 4e6]
2321 }, {
2322 name: "Duck",
2323 color: "#4ab96d",
2324 class: "\uD83C\uDF3D",
2325 rarity: "Common",
2326 cash: [4, 24, 200, 3e3, 4e4],
2327 time: [3, 3, 3, 3, 3],
2328 price: [450, 4200, 7e4, 11e5]
2329 }, {
2330 name: "Goat",
2331 color: "#c59a74",
2332 class: "\uD83C\uDF3D",
2333 rarity: "Common",
2334 cash: [5, 28, 200, 1300, 12e3],
2335 time: [3, 3, 2, 2, 2],
2336 price: [500, 6400, 45e3, 5e5]
2337 }, {
2338 name: "Horse",
2339 color: "#995b3c",
2340 class: "\uD83C\uDF3D",
2341 rarity: "Common",
2342 cash: [5, 20, 270, 1800, 15e3],
2343 time: [2, 2, 2, 2, 2],
2344 price: [550, 8200, 65e3, 6e5]
2345 }, {
2346 name: "Pig",
2347 color: "#f6a9cb",
2348 class: "\uD83C\uDF3D",
2349 rarity: "Common",
2350 cash: [20, 50, 1300, 8e3, 8e4],
2351 time: [7, 7, 7, 7, 5],
2352 price: [400, 11e3, 8e4, 13e5]
2353 }, {
2354 name: "Sheep",
2355 color: "#414042",
2356 class: "\uD83C\uDF3D",
2357 rarity: "Common",
2358 cash: [6, 25, 250, 1500, 11e3],
2359 time: [3, 3, 3, 2, 2],
2360 price: [500, 5e3, 5e4, 43e4]
2361 }, {
2362 name: "Cat",
2363 color: "#f49849",
2364 class: "\uD83D\uDC3E",
2365 rarity: "Common",
2366 cash: [5, 18, 170, 1700, 13e3],
2367 time: [2, 2, 2, 2, 2],
2368 price: [480, 5500, 6e4, 5e5]
2369 }, {
2370 name: "Dog",
2371 color: "#995b3c",
2372 class: "\uD83D\uDC3E",
2373 rarity: "Common",
2374 cash: [7, 25, 220, 1900, 9e3],
2375 time: [3, 3, 2, 2, 1],
2376 price: [460, 6600, 7e4, 73e4]
2377 }, {
2378 name: "Goldfish",
2379 color: "#f18221",
2380 class: "\uD83D\uDC3E",
2381 rarity: "Common",
2382 cash: [5, 40, 350, 3500, 35e3],
2383 time: [3, 3, 3, 3, 3],
2384 price: [750, 7200, 84e3, 95e4]
2385 }, {
2386 name: "Rabbit",
2387 color: "#e7bf9a",
2388 class: "\uD83D\uDC3E",
2389 rarity: "Common",
2390 cash: [3, 18, 185, 800, 7e3],
2391 time: [2, 2, 2, 1, 1],
2392 price: [500, 5800, 56e3, 55e4]
2393 }, {
2394 name: "Hamster",
2395 color: "#ce9176",
2396 class: "\uD83D\uDC3E",
2397 rarity: "Common",
2398 cash: [10, 45, 450, 4500, 45e3],
2399 time: [4, 4, 4, 4, 4],
2400 price: [650, 6500, 8e4, 93e4]
2401 }, {
2402 name: "Turtle",
2403 color: "#619a3c",
2404 class: "\uD83D\uDC3E",
2405 rarity: "Common",
2406 cash: [23, 120, 1400, 15e3, 17e4],
2407 time: [10, 10, 10, 10, 10],
2408 price: [700, 8500, 11e4, 13e5]
2409 }, {
2410 name: "Puppy",
2411 color: "#414042",
2412 class: "\uD83D\uDC3E",
2413 rarity: "Common",
2414 cash: [4, 10, 75, 500, 3e3],
2415 time: [1, 1, 1, 1, 1],
2416 price: [450, 4e3, 35e3, 25e4]
2417 }, {
2418 name: "Kitten",
2419 color: "#58595b",
2420 class: "\uD83D\uDC3E",
2421 rarity: "Common",
2422 cash: [4, 8, 60, 400, 2e3],
2423 time: [1, 1, 1, 1, 1],
2424 price: [350, 3500, 26e3, 17e4]
2425 }, {
2426 name: "Bear",
2427 color: "#995b3c",
2428 class: "\uD83C\uDF32",
2429 rarity: "Common",
2430 cash: [12, 70, 550, 4500, 1e5],
2431 time: [7, 7, 6, 5, 5],
2432 price: [550, 5500, 63e3, 16e5]
2433 }, {
2434 name: "Moose",
2435 color: "#995b3c",
2436 class: "\uD83C\uDF32",
2437 rarity: "Common",
2438 cash: [8, 45, 400, 3500, 26e3],
2439 time: [5, 5, 4, 4, 3],
2440 price: [520, 6500, 58e3, 7e5]
2441 }, {
2442 name: "Fox",
2443 color: "#f49849",
2444 class: "\uD83C\uDF32",
2445 rarity: "Common",
2446 cash: [7, 15, 80, 550, 3e3],
2447 time: [2, 2, 1, 1, 1],
2448 price: [400, 4e3, 36e3, 24e4]
2449 }, {
2450 name: "Raccoon",
2451 color: "#6d6e71",
2452 class: "\uD83C\uDF32",
2453 rarity: "Common",
2454 cash: [5, 14, 185, 1900, 19e3],
2455 time: [2, 2, 2, 2, 2],
2456 price: [400, 5e3, 71e3, 8e5]
2457 }, {
2458 name: "Squirrel",
2459 color: "#d25927",
2460 class: "\uD83C\uDF32",
2461 rarity: "Common",
2462 cash: [3, 10, 65, 470, 2600],
2463 time: [1, 1, 1, 1, 1],
2464 price: [420, 3600, 32e3, 21e4]
2465 }, {
2466 name: "Owl",
2467 color: "#594a42",
2468 class: "\uD83C\uDF32",
2469 rarity: "Common",
2470 cash: [4, 17, 155, 1500, 15e3],
2471 time: [2, 2, 2, 2, 2],
2472 price: [500, 4800, 55e3, 58e4]
2473 }, {
2474 name: "Hedgehog",
2475 color: "#3f312b",
2476 class: "\uD83C\uDF32",
2477 rarity: "Common",
2478 cash: [11, 37, 340, 2200, 3e4],
2479 time: [5, 4, 3, 2, 2],
2480 price: [540, 7e3, 77e3, 12e5]
2481 }, {
2482 name: "Seal",
2483 color: "#7ca1d5",
2484 class: "❄️",
2485 rarity: "Common",
2486 cash: [6, 17, 150, 1200, 13e3],
2487 time: [2, 2, 2, 2, 2],
2488 price: [480, 4500, 43e3, 52e4]
2489 }, {
2490 name: "Arctic Fox",
2491 color: "#7ca1d5",
2492 class: "❄️",
2493 rarity: "Common",
2494 cash: [5, 18, 180, 850, 8500],
2495 time: [2, 2, 2, 1, 1],
2496 price: [520, 550, 61e3, 68e4]
2497 }, {
2498 name: "Snowy Owl",
2499 color: "#feda3f",
2500 class: "❄️",
2501 rarity: "Common",
2502 cash: [5, 20, 190, 1900, 16e3],
2503 time: [3, 3, 2, 2, 2],
2504 price: [370, 5300, 76e3, 62e4]
2505 }, {
2506 name: "Arctic Hare",
2507 color: "#7ca1d5",
2508 class: "❄️",
2509 rarity: "Common",
2510 cash: [6, 19, 85, 900, 7e3],
2511 time: [2, 2, 1, 1, 1],
2512 price: [540, 5200, 66e3, 55e4]
2513 }, {
2514 name: "Penguin",
2515 color: "#fb8640",
2516 class: "❄️",
2517 rarity: "Common",
2518 cash: [4, 21, 310, 3200, 33e3],
2519 time: [3, 3, 3, 3, 3],
2520 price: [400, 6500, 76e3, 87e4]
2521 }, {
2522 name: "Baby Penguin",
2523 color: "#414042",
2524 class: "❄️",
2525 rarity: "Common",
2526 cash: [3, 8, 70, 450, 2700],
2527 time: [1, 1, 1, 1, 1],
2528 price: [420, 3300, 33e3, 23e4]
2529 }, {
2530 name: "Polar Bear",
2531 color: "#7ca1d5",
2532 class: "❄️",
2533 rarity: "Common",
2534 cash: [12, 75, 700, 6500, 85e3],
2535 time: [8, 7, 6, 5, 5],
2536 price: [630, 7e3, 91e3, 14e5]
2537 }, {
2538 name: "Walrus",
2539 color: "#7d4f33",
2540 class: "❄️",
2541 rarity: "Common",
2542 cash: [11, 46, 420, 3700, 51e3],
2543 time: [5, 5, 4, 4, 4],
2544 price: [550, 6200, 68e3, 1e6]
2545 }, {
2546 name: "Tiger",
2547 color: "#f18221",
2548 class: "\uD83C\uDF34",
2549 rarity: "Common",
2550 cash: [6, 20, 100, 975, 7500],
2551 time: [3, 3, 1, 1, 1],
2552 price: [390, 6e3, 7e4, 61e4]
2553 }, {
2554 name: "Jaguar",
2555 color: "#fbb040",
2556 class: "\uD83C\uDF34",
2557 rarity: "Common",
2558 cash: [8, 28, 230, 1600, 17e3],
2559 time: [3, 3, 2, 2, 2],
2560 price: [390, 6e3, 7e4, 61e4]
2561 }, {
2562 name: "Toucan",
2563 color: "#ffca34",
2564 class: "\uD83C\uDF34",
2565 rarity: "Common",
2566 cash: [9, 20, 175, 625, 3800],
2567 time: [2, 2, 2, 1, 1],
2568 price: [520, 4800, 42e3, 3e5]
2569 }, {
2570 name: "Cockatoo",
2571 color: "#7ca1d5",
2572 class: "\uD83C\uDF34",
2573 rarity: "Common",
2574 cash: [6, 35, 160, 1700, 18e3],
2575 time: [4, 4, 2, 2, 2],
2576 price: [500, 5e3, 63e3, 7e5]
2577 }, {
2578 name: "Macaw",
2579 color: "#00aeef",
2580 class: "\uD83C\uDF34",
2581 rarity: "Common",
2582 cash: [3, 8, 85, 850, 8500],
2583 time: [1, 1, 1, 1, 1],
2584 price: [480, 5400, 62e3, 63e4]
2585 }, {
2586 name: "Parrot",
2587 color: "#ed1c24",
2588 class: "\uD83C\uDF34",
2589 rarity: "Common",
2590 cash: [3, 9, 90, 900, 9e3],
2591 time: [1, 1, 1, 1, 1],
2592 price: [540, 5700, 65e3, 69e4]
2593 }, {
2594 name: "Panther",
2595 color: "#2f2c38",
2596 class: "\uD83C\uDF34",
2597 rarity: "Common",
2598 cash: [12, 28, 215, 2100, 21e3],
2599 time: [5, 3, 2, 2, 2],
2600 price: [530, 6500, 76e3, 87e4]
2601 }, {
2602 name: "Anaconda",
2603 color: "#8a9143",
2604 class: "\uD83C\uDF34",
2605 rarity: "Common",
2606 cash: [3, 15, 85, 1500, 7600],
2607 time: [1, 2, 1, 2, 1],
2608 price: [410, 5100, 58e3, 59e4]
2609 }, {
2610 name: "Orangutan",
2611 color: "#bc6234",
2612 class: "\uD83C\uDF34",
2613 rarity: "Common",
2614 cash: [13, 52, 570, 4300, 7e4],
2615 time: [5, 5, 5, 4, 4],
2616 price: [600, 7e3, 8e4, 14e5]
2617 }, {
2618 name: "Capuchin",
2619 color: "#e0b0a6",
2620 class: "\uD83C\uDF34",
2621 rarity: "Common",
2622 cash: [4, 14, 160, 780, 8200],
2623 time: [2, 2, 2, 1, 1],
2624 price: [390, 4700, 57e3, 68e4]
2625 }, {
2626 name: "Elf",
2627 color: "#a7d054",
2628 class: "⚔️",
2629 rarity: "Uncommon",
2630 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
2631 time: [1, 1, 1, 1, 1],
2632 price: [8e5, 9e6, 11e7, 8e8]
2633 }, {
2634 name: "Witch",
2635 color: "#4ab96d",
2636 class: "⚔️",
2637 rarity: "Uncommon",
2638 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
2639 time: [3, 3, 2, 2, 2],
2640 price: [11e5, 12e6, 15e7, 14e8]
2641 }, {
2642 name: "Wizard",
2643 color: "#5a459c",
2644 class: "⚔️",
2645 rarity: "Uncommon",
2646 cash: [19500, 65e3, 44e4, 46e5, 4e6],
2647 time: [3, 3, 2, 2, 2],
2648 price: [13e5, 135e5, 16e7, 16e8]
2649 }, {
2650 name: "Fairy",
2651 color: "#df6d9c",
2652 class: "⚔️",
2653 rarity: "Uncommon",
2654 cash: [18500, 6e4, 62e4, 44e5, 38e6],
2655 time: [3, 3, 3, 2, 2],
2656 price: [12e5, 125e5, 15e6, 15e8]
2657 }, {
2658 name: "Slime Monster",
2659 color: "#2fa04a",
2660 class: "⚔️",
2661 rarity: "Uncommon",
2662 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
2663 time: [5, 5, 4, 4, 4],
2664 price: [16e5, 15e6, 2e8, 23e8]
2665 }, {
2666 name: "Jester",
2667 color: "#be1e2d",
2668 class: "⚔️",
2669 rarity: "Rare",
2670 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
2671 time: [3, 3, 2, 2, 1],
2672 price: [2e6, 21e6, 23e7, 26e8]
2673 }, {
2674 name: "Dragon",
2675 color: "#2fa04a",
2676 class: "⚔️",
2677 rarity: "Rare",
2678 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
2679 time: [4, 4, 4, 4, 4],
2680 price: [23e5, 24e6, 27e7, 3e9]
2681 }, {
2682 name: "Unicorn",
2683 color: "#f6afce",
2684 class: "⚔️",
2685 rarity: "Epic",
2686 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
2687 time: [2, 2, 2, 1, 1],
2688 price: [45e5, 45e6, 55e7, 65e8]
2689 }, {
2690 name: "Queen",
2691 color: "#9e1f63",
2692 class: "⚔️",
2693 rarity: "Rare",
2694 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
2695 time: [3, 3, 3, 3, 3],
2696 price: [19e5, 2e7, 23e7, 25e8]
2697 }, {
2698 name: "King",
2699 color: "#ee2640",
2700 class: "⚔️",
2701 rarity: "Legendary",
2702 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
2703 time: [5, 5, 5, 5, 5],
2704 price: [6e6, 95e6, 16e8, 25e9]
2705 }, {
2706 name: "Two of Spades",
2707 color: "#414042",
2708 class: "\uD83C\uDFF0",
2709 rarity: "Uncommon",
2710 cash: [4500, 14e3, 14e4, 14e5, 9e6],
2711 time: [1, 1, 1, 1, 1],
2712 price: [77e4, 83e5, 98e6, 71e7]
2713 }, {
2714 name: "Eat Me",
2715 color: "#d58c55",
2716 class: "\uD83C\uDFF0",
2717 rarity: "Uncommon",
2718 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
2719 time: [2, 2, 2, 2, 2],
2720 price: [13e5, 14e6, 16e7, 2e9]
2721 }, {
2722 name: "Drink Me",
2723 color: "#dd7399",
2724 class: "\uD83C\uDFF0",
2725 rarity: "Uncommon",
2726 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
2727 time: [2, 2, 2, 2, 2],
2728 price: [12e5, 12e6, 14e7, 18e8]
2729 }, {
2730 name: "Alice",
2731 color: "#4cc9f5",
2732 class: "\uD83C\uDFF0",
2733 rarity: "Uncommon",
2734 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
2735 time: [2, 2, 1, 1, 1],
2736 price: [12e5, 13e6, 15e7, 19e8]
2737 }, {
2738 name: "Queen of Hearts",
2739 color: "#d62027",
2740 class: "\uD83C\uDFF0",
2741 rarity: "Uncommon",
2742 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
2743 time: [4, 4, 3, 3, 3],
2744 price: [13e5, 13e6, 18e7, 24e8]
2745 }, {
2746 name: "Dormouse",
2747 color: "#89d6f8",
2748 class: "\uD83C\uDFF0",
2749 rarity: "Rare",
2750 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
2751 time: [2, 2, 1, 1, 1],
2752 price: [2e6, 22e6, 25e7, 28e8]
2753 }, {
2754 name: "White Rabbit",
2755 color: "#ffcd05",
2756 class: "\uD83C\uDFF0",
2757 rarity: "Rare",
2758 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
2759 time: [3, 3, 3, 2, 2],
2760 price: [2e6, 23e6, 28e7, 29e8]
2761 }, {
2762 name: "Cheshire Cat",
2763 color: "#dd7399",
2764 class: "\uD83C\uDFF0",
2765 rarity: "Rare",
2766 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
2767 time: [4, 3, 3, 3, 2],
2768 price: [18e5, 19e6, 22e7, 24e8]
2769 }, {
2770 name: "Caterpillar",
2771 color: "#00c0f3",
2772 class: "\uD83C\uDFF0",
2773 rarity: "Epic",
2774 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
2775 time: [1, 1, 1, 1, 1],
2776 price: [42e5, 42e6, 54e7, 69e8]
2777 }, {
2778 name: "Mad Hatter",
2779 color: "#914f93",
2780 class: "\uD83C\uDFF0",
2781 rarity: "Epic",
2782 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
2783 time: [3, 3, 2, 2, 1],
2784 price: [48e5, 48e6, 52e7, 66e8]
2785 }, {
2786 name: "King of Hearts",
2787 color: "#c62127",
2788 class: "\uD83C\uDFF0",
2789 rarity: "Legendary",
2790 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
2791 time: [5, 5, 5, 5, 5],
2792 price: [7e6, 11e7, 18e8, 3e10]
2793 }, {
2794 name: "Earth",
2795 color: "#416eb5",
2796 class: "\uD83D\uDE80",
2797 rarity: "Uncommon",
2798 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
2799 time: [3, 3, 3, 3, 3],
2800 price: [1e6, 11e6, 15e7, 17e8]
2801 }, {
2802 name: "Meteor",
2803 color: "#c68c3c",
2804 class: "\uD83D\uDE80",
2805 rarity: "Uncommon",
2806 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
2807 time: [5, 4, 3, 2, 1],
2808 price: [95e4, 13e6, 16e7, 16e8]
2809 }, {
2810 name: "Stars",
2811 color: "#19184d",
2812 class: "\uD83D\uDE80",
2813 rarity: "Uncommon",
2814 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
2815 time: [2, 2, 1, 1, 1],
2816 price: [14e5, 14e6, 15e7, 15e8]
2817 }, {
2818 name: "Alien",
2819 color: "#8dc63f",
2820 class: "\uD83D\uDE80",
2821 rarity: "Uncommon",
2822 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
2823 time: [4, 4, 4, 4, 4],
2824 price: [15e5, 17e6, 19e7, 17e8]
2825 }, {
2826 name: "Planet",
2827 color: "#9dc6ea",
2828 class: "\uD83D\uDE80",
2829 rarity: "Rare",
2830 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
2831 time: [3, 3, 3, 3, 3],
2832 price: [2e6, 21e6, 21e7, 24e8]
2833 }, {
2834 name: "UFO",
2835 color: "#a15095",
2836 class: "\uD83D\uDE80",
2837 rarity: "Rare",
2838 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
2839 time: [2, 2, 2, 2, 2],
2840 price: [21e5, 23e6, 25e7, 28e8]
2841 }, {
2842 name: "Spaceship",
2843 color: "#ffcb29",
2844 class: "\uD83D\uDE80",
2845 rarity: "Epic",
2846 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
2847 time: [5, 4, 3, 2, 1],
2848 price: [48e5, 46e6, 54e7, 68e8]
2849 }, {
2850 name: "Astronaut",
2851 color: "#9bd4ee",
2852 class: "\uD83D\uDE80",
2853 rarity: "Legendary",
2854 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
2855 time: [3, 3, 2, 2, 2],
2856 price: [65e5, 1e8, 17e8, 27e9]
2857 }, {
2858 name: "Lil Bot",
2859 color: "#3e564a",
2860 class: "\uD83E\uDD16",
2861 rarity: "Uncommon",
2862 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
2863 time: [1, 1, 1, 1, 1],
2864 price: [73e4, 12e6, 13e7, 19e8]
2865 }, {
2866 name: "Lovely Bot",
2867 color: "#f179af",
2868 class: "\uD83E\uDD16",
2869 rarity: "Uncommon",
2870 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
2871 time: [3, 3, 3, 2, 2],
2872 price: [13e5, 14e6, 17e7, 16e8]
2873 }, {
2874 name: "Angry Bot",
2875 color: "#f1613a",
2876 class: "\uD83E\uDD16",
2877 rarity: "Uncommon",
2878 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
2879 time: [4, 4, 4, 3, 3],
2880 price: [12e5, 13e6, 15e7, 17e8]
2881 }, {
2882 name: "Happy Bot",
2883 color: "#51ba6b",
2884 class: "\uD83E\uDD16",
2885 rarity: "Uncommon",
2886 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
2887 time: [2, 2, 2, 1, 1],
2888 price: [14e5, 15e6, 18e7, 24e8]
2889 }, {
2890 name: "Watson",
2891 color: "#d69b5a",
2892 class: "\uD83E\uDD16",
2893 rarity: "Rare",
2894 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
2895 time: [3, 3, 3, 3, 3],
2896 price: [2e6, 22e6, 24e7, 26e8]
2897 }, {
2898 name: "Buddy Bot",
2899 color: "#9dc6ea",
2900 class: "\uD83E\uDD16",
2901 rarity: "Rare",
2902 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
2903 time: [3, 3, 2, 2, 2],
2904 price: [19e5, 21e6, 23e7, 25e8]
2905 }, {
2906 name: "Brainy Bot",
2907 color: "#9ecf7a",
2908 class: "\uD83E\uDD16",
2909 rarity: "Epic",
2910 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
2911 time: [4, 3, 3, 3, 2],
2912 price: [5e6, 46e6, 5e8, 67e8]
2913 }, {
2914 name: "Mega Bot",
2915 color: "#d71f27",
2916 class: "\uD83E\uDD16",
2917 rarity: "Legendary",
2918 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
2919 time: [5, 5, 3, 3, 3],
2920 price: [7e6, 12e7, 19e8, 35e9]
2921 }].find(function({
2922 name: e
2923 }) {
2924 return e.toLowerCase() == this
2925 }, prompt("Enter blook name:").toLowerCase());
2926 o ? (t.state.blooks.length >= 10 && alert("Choose a blook to replace"), t.chooseBlook(o)) : alert("That is not a valid blook!")
2928 }, {
2929 name: "Free Upgrades",
2930 description: "Sets upgrade prices to 0 for all current blooks",
2931 run: function() {
2932 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
2933 ...e,
2934 blooks: e.blooks.map(e => ({
2935 ...e,
2936 price: [0, 0, 0, 0]
2940 }, {
2941 name: "Max Blooks",
2942 description: "Maxes out all your blooks' levels",
2943 run: function() {
2944 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
2946 }, {
2947 name: "Remove Glitches",
2948 description: "Removes all enemy glitches",
2949 run: function() {
2950 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2951 e.setState({
2952 bits: 0,
2953 ads: [],
2954 hazards: [],
2955 color: "",
2956 lol: !1,
2957 joke: !1,
2958 slow: !1,
2959 dance: !1,
2960 glitch: "",
2961 glitcherName: "",
2962 glitcherBlook: ""
2963 }), clearTimeout(e.adTimeout), clearInterval(e.hazardInterval), clearTimeout(e.nightTimeout), clearTimeout(e.glitchTimeout), clearTimeout(e.lolTimeout), clearTimeout(e.jokeTimeout), clearTimeout(e.slowTimeout), clearTimeout(e.danceTimeout), clearTimeout(e.nameTimeout)
2965 }, {
2966 name: "Send Glitch",
2967 description: "Sends a glitch to everyone else playing",
2968 run: function() {
2969 var e = document.createElement("iframe"),
2970 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,
2971 t = {
2972 lb: "Lunch Break",
2973 as: "Ad Spam",
2974 e37: "Error 37",
2975 nt: "Night Time",
2976 lo: "#LOL",
2977 j: "Jokester",
2978 sm: "Slow Mo",
2979 dp: "Dance Party",
2980 v: "Vortex",
2981 r: "Reverse",
2982 f: "Flip",
2983 m: "Micro"
2985 o = Object.keys(t)[Math.floor(Math.random() * Object.keys(t).length)];
2986 e.safe = !0, e.props.liveGameController.setVal({
2987 path: `c/${e.props.client.name}/tat`,
2988 val: o
2989 }), alert(`Sent a ${t[o]} glitch`)
2991 }, {
2992 name: "Set All MegaBot",
2993 description: "Sets all your blooks to maxed out Mega Bots",
2994 run: function() {
2995 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2996 blooks: Array(10).fill({
2997 name: "Mega Bot",
2998 color: "#d71f27",
2999 class: "\uD83E\uDD16",
3000 rarity: "Legendary",
3001 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
3002 time: [5, 5, 3, 3, 3],
3003 price: [7e6, 12e7, 19e8, 35e9],
3004 active: !1,
3005 level: 4,
3006 bonus: 5.5
3010 }, {
3011 name: "Set Cash",
3012 description: "Sets amount of cash you have",
3013 run: function() {
3014 var e = document.createElement("iframe"),
3015 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much cash would you like?"))));
3016 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3017 cash: e
3021 fishing: [{
3022 name: "Frenzy",
3023 description: "Sets everyone to frenzy mode",
3024 run: function() {
3025 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3026 e.props.liveGameController.setVal({
3027 path: "c/" + e.props.client.name,
3028 val: {
3029 b: e.props.client.blook,
3030 w: e.state.weight,
3031 f: "Frenzy",
3032 s: !0
3036 }, {
3037 name: "Always Frenzy",
3038 description: "Always sets everyone to frenzy mode",
3039 type: "toggle",
3040 enabled: false,
3041 data: null,
3042 run: function() {
3043 if (this.enabled) {
3044 this.enabled = false;
3045 clearInterval(this.data);
3046 this.data = null;
3047 } else {
3048 this.enabled = true;
3049 this.data = setInterval(() => {
3050 const cheat = (async () => {
3051 let {
3052 stateNode
3053 } = Object.values((function react(r = document.querySelector("body>div")) {
3054 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3055 })())[1].children[0]._owner;
3056 stateNode.props.liveGameController.setVal({
3057 path: `c/${stateNode.props.client.name}`,
3058 val: {
3059 b: stateNode.props.client.blook,
3060 w: stateNode.state.weight,
3061 f: "Frenzy",
3062 s: true
3066 cheat();
3067 }, 50);
3070 }, {
3071 name: "Remove Distractions",
3072 description: "Removes distractions",
3073 type: "toggle",
3074 enabled: !1,
3075 data: null,
3076 run: function() {
3077 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3078 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3079 party: ""
3081 }, 50))
3083 }, {
3084 name: "Send Distraction",
3085 description: "Sends a distraction to everyone",
3086 run: function() {
3087 var e = document.createElement("iframe"),
3088 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,
3089 t = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())];
3090 e.safe = !0, e.props.liveGameController.setVal({
3091 path: "c/" + e.props.client.name,
3092 val: {
3093 b: e.props.client.blook,
3094 w: e.state.weight,
3095 f: t,
3096 s: !0
3098 }), alert(`Sent a ${t} distraction`)
3100 }, {
3101 name: "Set Lure",
3102 description: "Sets fishing lure (range 1 - 5)",
3103 run: function() {
3104 var e = document.createElement("iframe");
3105 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3106 lure: Math.max(Math.min(Number(parseInt(prompt("What would you like to set your lure to? (1 - 5)"))) - 1, 4), 0)
3109 }, {
3110 name: "Set Next Fish",
3111 description: "Sets the next fish to catch",
3112 run: function() {
3113 var e = document.createElement("iframe");
3115 function t() {
3116 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
3118 document.body.appendChild(e), window.prompt = e.contentWindow.prompt.bind(window), window.alert = e.contentWindow.alert.bind(window), e.remove();
3119 var o = {
3120 "Old Boot": {
3121 rarity: "Trash",
3122 minWeight: 1,
3123 maxWeight: 10,
3124 tiers: ["F", "D", "C"]
3126 Waffle: {
3127 rarity: "Trash",
3128 minWeight: 1,
3129 maxWeight: 10,
3130 tiers: ["F", "D", "C"]
3132 "Two of Spades": {
3133 rarity: "Trash",
3134 minWeight: 1,
3135 maxWeight: 10,
3136 tiers: ["F", "D", "C"]
3138 Jellyfish: {
3139 rarity: "Easy One",
3140 minWeight: 10,
3141 maxWeight: 25,
3142 tiers: ["D", "C", "B"]
3144 Clownfish: {
3145 rarity: "Easy One",
3146 minWeight: 20,
3147 maxWeight: 45,
3148 tiers: ["D", "C", "B"]
3150 Goldfish: {
3151 rarity: "Easy One",
3152 minWeight: 30,
3153 maxWeight: 65,
3154 tiers: ["D", "C", "B"]
3156 Frog: {
3157 rarity: "Easy One",
3158 minWeight: 50,
3159 maxWeight: 100,
3160 tiers: ["D", "C", "B"]
3162 "Blizzard Clownfish": {
3163 rarity: "Great Catch",
3164 minWeight: 75,
3165 maxWeight: 125,
3166 tiers: ["D", "C", "B"]
3168 Turtle: {
3169 rarity: "Great Catch",
3170 minWeight: 100,
3171 maxWeight: 150,
3172 tiers: ["D", "C", "B", "A"]
3174 Cat: {
3175 rarity: "Great Catch",
3176 minWeight: 100,
3177 maxWeight: 200,
3178 tiers: ["D", "C", "B", "A"]
3180 "Lovely Frog": {
3181 rarity: "Great Catch",
3182 minWeight: 150,
3183 maxWeight: 350,
3184 tiers: ["D", "C", "B", "A"]
3186 "Lucky Frog": {
3187 rarity: "Great Catch",
3188 minWeight: 200,
3189 maxWeight: 400,
3190 tiers: ["D", "C", "B", "A"]
3192 "Poison Dart Frog": {
3193 rarity: "Great Catch",
3194 minWeight: 250,
3195 maxWeight: 750,
3196 tiers: ["D", "C", "B", "A"]
3198 Seal: {
3199 rarity: "Rare Find",
3200 minWeight: 500,
3201 maxWeight: 1e3,
3202 tiers: ["D", "C", "B", "A"]
3204 Walrus: {
3205 rarity: "Rare Find",
3206 minWeight: 700,
3207 maxWeight: 2200,
3208 tiers: ["D", "C", "B", "A"]
3210 Fairy: {
3211 rarity: "Rare Find",
3212 minWeight: 1500,
3213 maxWeight: 2500,
3214 tiers: ["D", "C", "B", "A"]
3216 Crab: {
3217 rarity: "Rare Find",
3218 minWeight: 1e3,
3219 maxWeight: 3e3,
3220 tiers: ["D", "C", "B", "A"]
3222 "Lemon Crab": {
3223 rarity: "Rare Find",
3224 minWeight: 2e3,
3225 maxWeight: 5e3,
3226 tiers: ["C", "B", "A"]
3228 Pufferfish: {
3229 rarity: "Rare Find",
3230 minWeight: 2e3,
3231 maxWeight: 4e3,
3232 tiers: ["D", "C", "B", "A"]
3234 Blobfish: {
3235 rarity: "Rare Find",
3236 minWeight: 3e3,
3237 maxWeight: 5e3,
3238 tiers: ["D", "C", "B", "A"]
3240 "Rainbow Jellyfish": {
3241 rarity: "Epic Grab",
3242 minWeight: 7e3,
3243 maxWeight: 1e4,
3244 tiers: ["C", "B", "A"]
3246 Octopus: {
3247 rarity: "Epic Grab",
3248 minWeight: 1e4,
3249 maxWeight: 15e3,
3250 tiers: ["C", "B", "A"]
3252 "Pirate Pufferfish": {
3253 rarity: "Epic Grab",
3254 minWeight: 12e3,
3255 maxWeight: 2e4,
3256 tiers: ["C", "B", "A"]
3258 "Donut Blobfish": {
3259 rarity: "Epic Grab",
3260 minWeight: 13e3,
3261 maxWeight: 25e3,
3262 tiers: ["C", "B", "A"]
3264 "Crimson Octopus": {
3265 rarity: "Epic Grab",
3266 minWeight: 15e3,
3267 maxWeight: 3e4,
3268 tiers: ["B", "A"]
3270 Narwhal: {
3271 rarity: "Catch of the Day",
3272 minWeight: 25e3,
3273 maxWeight: 5e4,
3274 tiers: ["B", "A", "S"]
3276 "Baby Shark": {
3277 rarity: "Catch of the Day",
3278 minWeight: 5e4,
3279 maxWeight: 1e5,
3280 tiers: ["B", "A", "S"]
3282 Megalodon: {
3283 rarity: "Catch of the Day",
3284 minWeight: 25e4,
3285 maxWeight: 5e5,
3286 tiers: ["B", "A", "S"]
3288 Alien: {
3289 rarity: "Angler's Legend",
3290 minWeight: 5e5,
3291 maxWeight: 7e5,
3292 tiers: ["A", "S"]
3294 "Rainbow Narwhal": {
3295 rarity: "Angler's Legend",
3296 minWeight: 75e4,
3297 maxWeight: 1e6,
3298 tiers: ["A", "S", "S+"]
3300 UFO: {
3301 rarity: "Angler's Legend",
3302 minWeight: 1e6,
3303 maxWeight: 2e6,
3304 tiers: ["A", "S", "S+"]
3306 "Santa Claus": {
3307 rarity: "Angler's Legend",
3308 minWeight: 1e6,
3309 maxWeight: 2e6,
3310 tiers: ["A", "S", "S+"]
3312 "Swamp Monster": {
3313 rarity: "Angler's Legend",
3314 minWeight: 1e6,
3315 maxWeight: 2e6,
3316 tiers: ["A", "S", "S+"]
3318 "Red Astronaut": {
3319 rarity: "Angler's Legend",
3320 minWeight: 1e6,
3321 maxWeight: 2e6,
3322 tiers: ["A", "S", "S+"]
3324 "Spooky Pumpkin": {
3325 rarity: "Angler's Legend",
3326 minWeight: 1e6,
3327 maxWeight: 2e6,
3328 tiers: ["A", "S", "S+"]
3330 Dragon: {
3331 rarity: "Angler's Legend",
3332 minWeight: 1e6,
3333 maxWeight: 2e6,
3334 tiers: ["A", "S", "S+"]
3336 "Tim the Alien": {
3337 rarity: "Angler's Legend",
3338 minWeight: 15e5,
3339 maxWeight: 25e5,
3340 tiers: ["A", "S", "S+"]
3343 a = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
3344 if (!window.functionSet) {
3345 var r = t().stateNode.answerNext;
3346 t().stateNode.answerNext = function() {
3347 if (t().stateNode.state.hackFish) {
3348 var e, n, i;
3349 t().stateNode.setState({
3350 stage: "caught",
3351 isCast: !1,
3352 fish: {
3353 name: e = t().stateNode.state.hackFish,
3354 rarity: o[e].rarity,
3355 weight: (n = o[e].minWeight, Math.floor(Math.random() * ((i = o[e].maxWeight) - n) + n)),
3356 tier: o[e].tiers[Math.floor(Math.random() * o[e].tiers.length)],
3357 isSpecial: a.includes(e) && 8 > Math.floor(100 * Math.random())
3359 claimReady: !1
3360 }), setTimeout(function() {
3361 t().stateNode.setState({
3362 claimReady: !0
3364 }, 1600), t().stateNode.state.hackFish = null
3365 } else r.apply(this, arguments)
3368 window.functionSet = !0,
3369 function e(a) {
3370 if (Object.keys(o).includes(a)) t().stateNode.state.hackFish = a;
3371 else {
3372 alert("That fish does not exist!");
3373 return
3375 }(prompt("What fish would you like to catch next (case sensitive)?"))
3377 }, {
3378 name: "Set Weight",
3379 description: "Sets weight",
3380 run: function() {
3381 var e = document.createElement("iframe"),
3382 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much weight would you like?")))),
3383 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3384 t.setState({
3385 weight: e,
3386 weight2: e
3387 }), t.props.liveGameController.setVal({
3388 path: "c/" + t.props.client.name,
3389 val: {
3390 b: t.props.client.blook,
3391 w: e,
3392 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
3397 flappy: [{
3398 name: "Toggle Ghost",
3399 description: "Lets you go through the pipes",
3400 type: "toggle",
3401 enabled: false,
3402 run: function() {
3403 this.enabled = !this.enabled;
3404 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
3405 if (!body.gameObject.frame.texture.key.startsWith("blook")) continue;
3406 body.checkCollision.none = this.enabled;
3407 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
3408 break;
3411 }, {
3412 name: "Set Score",
3413 description: "Sets flappy blook score",
3414 run: function() {
3415 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](parseInt(prompt("What do you want to set your score to?")) || 0);
3418 gold: [{
3419 name: "Always Triple",
3420 description: "Always get triple gold",
3421 type: "toggle",
3422 enabled: !1,
3423 data: null,
3424 run: function() {
3425 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3426 e._choosePrize ||= e.choosePrize, this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
3427 e.choosePrize = function(t) {
3428 e.state.choices[t] = {
3429 type: "multiply",
3430 val: 3,
3431 text: "Triple Gold!",
3432 blook: "Unicorn"
3433 }, e._choosePrize(t)
3435 }, 50))
3437 }, {
3438 name: "Auto Choose",
3439 description: "Automatically picks the option that would give you the most gold",
3440 type: "toggle",
3441 enabled: false,
3442 data: null,
3443 run: function() {
3444 if (this.enabled) {
3445 this.enabled = false;
3446 clearInterval(this.data);
3447 this.data = null;
3448 } else {
3449 this.enabled = true;
3450 this.data = setInterval(() => {
3451 let {
3452 stateNode
3453 } = Object.values((function react(r = document.querySelector("body>div")) {
3454 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3455 })())[1].children[0]._owner;
3457 if (stateNode.state.stage == "prize") {
3458 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
3459 if (players == null) return;
3460 players = Object.entries(players);
3461 let most = 0,
3462 max = 0,
3463 index = -1;
3464 for (let i = 0; i < players.length; i++) {
3465 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
3466 most = players[i][1];
3469 for (let i = 0; i < stateNode.state.choices.length; i++) {
3470 const choice = stateNode.state.choices[i];
3471 let value = stateNode.state.gold;
3472 if (choice.type == "gold") {
3473 value = stateNode.state.gold + (choice.val || 0);
3474 } else if (choice.type == "multiply" || choice.type == "divide") {
3475 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
3476 } else if (choice.type == "swap") {
3477 value = most || stateNode.state.gold;
3478 } else if (choice.type == "take") {
3479 value = stateNode.state.gold + (most * choice.val || 0);
3481 if ((value || 0) <= max) continue;
3482 max = value;
3483 index = i + 1;
3485 document.querySelector("div[class*='choice" + index + "']")?.click();
3488 }, 50);
3491 }, {
3492 name: "Chest ESP",
3493 description: "Shows what each chest will give you",
3494 type: "toggle",
3495 enabled: false,
3496 data: null,
3497 run: function() {
3498 if (this.enabled) {
3499 this.enabled = false;
3500 clearInterval(this.data);
3501 this.data = null;
3502 } else {
3503 this.enabled = true;
3504 this.data = setInterval(() => {
3505 const cheat = (async () => {
3506 Object.values((function react(r = document.querySelector("body>div")) {
3507 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3508 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
3509 text
3510 }, index) => {
3511 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
3512 if (!chest || chest.querySelector('div')) return;
3513 let choice = document.createElement('div')
3514 choice.style.color = "white";
3515 choice.style.fontFamily = "Eczar";
3516 choice.style.fontSize = "2em";
3517 choice.style.display = "flex";
3518 choice.style.justifyContent = "center";
3519 choice.style.transform = "translateY(200px)";
3520 choice.innerText = text;
3521 chest.append(choice)
3524 cheat();
3525 }, 50);
3528 }, {
3529 name: "Remove Lose 25%-50%",
3530 description: "Blocks buttons with text 'Lose 25%' and 'Lose 50%'",
3531 type: "toggle",
3532 enabled: !1,
3533 data: null,
3534 run: function() {
3535 let e = this,
3536 t = this;
3538 function o() {
3539 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
3541 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(() => {
3542 document.querySelectorAll('div[role="button"]').forEach(e => {
3543 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
3545 }, 50), t.data = setInterval(() => {
3546 var e;
3547 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled) try {
3548 if ("prize" === o().stateNode.state.stage) {
3549 let {
3550 choices: a
3551 } = o().stateNode.state, r = document.querySelector("div[class*='regularBody']").children[1];
3552 r && (document.querySelectorAll(".chest-esp").length ? a.forEach((e, t) => {
3553 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
3554 }) : a.forEach((e, t) => {
3555 (textElement = document.createElement("p")).className = "chest-esp", textElement.innerText = e.text, textElement.style = "text-align: center; font-size: 30px; color: white; font-family:Titan One, sans-serif; border-color: black; margin-top: 200px; opacity: 0;";
3556 try {
3557 r.children[t].appendChild(textElement)
3558 } catch (o) {
3559 console.log(o)
3563 } catch (n) {
3564 console.log(n)
3566 }, 50))
3568 }, {
3569 name: "Reset Players Gold",
3570 description: "Sets a player's gold to 0",
3571 run: function() {
3572 let e = document.createElement("iframe");
3573 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
3574 let t = prompt("Who's gold would you like to reset?"),
3576 stateNode: {
3577 props: o,
3578 state: a
3580 } = Object.values(function e(t = document.querySelector("body>div")) {
3581 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3582 }())[1].children[0]._owner;
3583 stateNode.props.liveGameController.getDatabaseVal("c", e => {
3584 e && Object.keys(e).map(e => e.toLowerCase()).includes(t.toLowerCase()) && o.liveGameController.setVal({
3585 path: "c/".concat(o.client.name),
3586 val: {
3587 b: o.client.blook,
3588 g: a.gold,
3589 tat: `${t}:swap:0`
3594 }, {
3595 name: "Set Gold",
3596 description: "Sets amount of gold",
3597 run: function() {
3598 var e = document.createElement("iframe"),
3599 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much gold would you like?")))),
3600 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3601 t.setState({
3602 gold: e,
3603 gold2: e
3604 }), t.props.liveGameController.setVal({
3605 path: "c/".concat(t.props.client.name),
3606 val: {
3607 b: t.props.client.blook,
3608 g: e
3612 }, {
3613 name: "Swap Gold",
3614 description: "Swaps gold with someone",
3615 run: function() {
3616 (() => {
3617 const cheat = (async () => {
3618 let {
3619 stateNode
3620 } = Object.values((function react(r = document.querySelector("body>div")) {
3621 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3622 })())[1].children[0]._owner;
3623 const player = prompt("Who's gold would you like to swap with? (Case sensitive)");
3624 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
3625 if (!players || players[player] == null) return;
3626 const gold = players[player].g || 0;
3627 stateNode.props.liveGameController.setVal({
3628 path: "c/" + stateNode.props.client.name,
3629 val: {
3630 b: stateNode.props.client.blook,
3631 tat: player + ":swap:" + (stateNode.state.gold || 0),
3632 g: gold
3635 stateNode.setState({
3636 gold,
3637 gold2: gold
3641 cheat();
3642 })();
3644 }, {
3645 name: "Set Player's Gold",
3646 description: "Sets a player's gold to any amount.",
3647 run: function() {
3648 (async () => {
3649 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
3650 let i = document.createElement('iframe');
3651 document.body.append(i);
3652 const alert = i.contentWindow.alert.bind(window);
3653 const prompt = i.contentWindow.prompt.bind(window);
3654 i.remove();
3656 const db = await stateNode.props.liveGameController.getDatabaseVal("c");
3657 const players = Object.keys(db);
3659 function search(q) {
3660 const res = players.filter(e => e?.toLowerCase()?.includes(q.toLowerCase()));
3661 if (res.length > 1) {
3662 alert(`${res.length} players were found!`);
3663 return;
3665 if (res.length < 1) {
3666 alert("No players were found!");
3667 return;
3669 return res[0];
3672 const result = search(prompt("Enter player name or part of it here (not case sensitive):"));
3673 if (!result) {
3674 return;
3677 const amount = prompt(`Enter the amount you would like to set the player to:`);
3678 if (!amount || amount.length < 1) {
3679 alert("You must enter an amount.");
3680 return;
3683 stateNode.props.liveGameController.setVal({
3684 path: `c/${stateNode.props.client.name}/tat`,
3685 val: `${result}:swap:${amount}`
3688 alert(`Set ${result}'s gold to ${amount}!`);
3689 })();
3691 }, {
3692 name: "Reset All Players' Gold",
3693 description: "Set's everyone else's gold to 0",
3694 run: function() {
3695 var e = document.createElement("iframe");
3696 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove();
3697 let {
3698 props: t,
3699 state: o
3700 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, a = 0;
3701 t.liveGameController.getDatabaseVal("c", async e => {
3702 if (e)
3703 for (let r of Object.keys(e)) t.liveGameController.setVal({
3704 path: "c/".concat(t.client.name),
3705 val: {
3706 b: t.client.blook,
3707 g: o.gold,
3708 tat: r + ":swap:0"
3710 }), a++, await new Promise(e => setTimeout(e, 4e3));
3711 alert(`Reset ${a} players' gold!`)
3714 }, {
3715 name: "Send Ad Text",
3716 description: "Sends a load of text to another player (This will override your blook!)",
3717 run: function() {
3718 var player = window.prompt("Enter the player's name:");
3719 var text = window.prompt("Enter the text to send:");
3721 var {
3722 props: t2,
3723 state: a
3724 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3725 t2.liveGameController.setVal({
3726 path: "c/".concat(t2.client.name),
3727 val: {
3728 b: t2.client.blook,
3729 g: a.gold,
3730 tat: player + ":swap:0"
3734 let {
3735 props: t
3736 } = Object.values(function e(t = document.querySelector("body>div")) {
3737 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3738 }())[1].children[0]._owner.stateNode;
3740 let repeatedText = `Dog:${Array(500).fill(text).join(' ')}`;
3741 t.client.blook = repeatedText;
3742 t.liveGameController.setVal({
3743 path: `c/${t.client.name}/b`,
3744 val: repeatedText
3748 kingdom: [{
3749 name: "Choice ESP",
3750 description: "Shows you what will happen if you say Yes or No",
3751 type: "toggle",
3752 enabled: false,
3753 data: null,
3754 run: function() {
3755 if (this.enabled) {
3756 this.enabled = false;
3757 clearInterval(this.data);
3758 this.data = null;
3759 } else {
3760 this.enabled = true;
3761 this.data = setInterval((stats => {
3762 let {
3763 stateNode
3764 } = Object.values((function react(r = document.querySelector("body>div")) {
3765 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3766 })())[1].children[0]._owner;
3768 let elements = Array.prototype.reduce.call(
3769 document.querySelectorAll('[class*=statContainer]'),
3770 (obj, container, i) => (obj[stats[i]] = container, obj), {}
3773 if (stateNode.state.phase == "choice") {
3774 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
3776 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
3777 if (elements[x] == null) return;
3778 let element = document.createElement('div');
3779 element.className = 'choiceESP';
3780 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
3781 element.innerText = String(stateNode.state.guest.yes[x]);
3782 elements[x].appendChild(element);
3785 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
3786 if (elements[x] == null) return;
3787 let element = document.createElement('div');
3788 element.className = 'choiceESP';
3789 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
3790 element.innerText = String(stateNode.state.guest.no[x]);
3791 elements[x].appendChild(element);
3794 Array.prototype.forEach.call(
3795 document.querySelectorAll("[class*=guestButton][role=button]"),
3796 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove()))
3799 }), 50, ['materials', 'people', 'happiness', 'gold']);
3802 }, {
3803 name: "Disable Tax Toucan",
3804 description: "Tax evasion",
3805 run: function() {
3806 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
3808 }, {
3809 name: "Max Stats",
3810 description: "Sets all resources to the max",
3811 run: function() {
3812 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3813 materials: 100,
3814 people: 100,
3815 happiness: 100,
3816 gold: 100
3819 }, {
3820 name: "Set Guests",
3821 description: "Sets the amount of guests you've seen",
3822 run: function() {
3823 var e = document.createElement("iframe"),
3824 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many guests do you want?"))));
3825 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3826 guestScore: e
3829 }, {
3830 name: "Skip Guest",
3831 description: "Skips the current guest",
3832 run: function() {
3833 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
3836 racing: [{
3837 name: "Instant Win",
3838 description: "Instantly Wins the race",
3839 run: function() {
3840 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3841 e.setState({
3842 progress: e.state.goalAmount
3843 }, () => {
3844 let {
3845 question: t
3846 } = e.state;
3847 try {
3848 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, o) => t.correctAnswers.includes(e) ? o : null).filter(e => null != e)[0]]?.click?.()
3849 } catch {}
3852 }, {
3853 name: "Set Questions",
3854 description: "Sets the number of questions left",
3855 run: function() {
3856 let i = document.createElement('iframe');
3857 document.body.append(i);
3858 window.prompt = i.contentWindow.prompt.bind(window);
3859 i.remove();
3860 let {
3861 stateNode
3862 } = Object.values((function react(r = document.querySelector("body>div")) {
3863 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3864 })())[1].children[0]._owner;
3865 let progress = stateNode.props.client.amount - parseInt(prompt("How many questions left do you want?"));
3866 if (!isNaN(progress)) {
3867 stateNode.setState({
3868 progress
3870 stateNode.props.liveGameController.setVal({
3871 path: "c/".concat(stateNode.props.client.name),
3872 val: {
3873 b: stateNode.props.client.blook,
3874 pr: progress
3880 royale: [{
3881 name: "Auto Answer (Toggle)",
3882 description: "Toggles auto answer on",
3883 type: "toggle",
3884 enabled: !1,
3885 data: null,
3886 run: function() {
3887 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3888 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3889 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
3890 }, 50))
3892 }, {
3893 name: "Auto Answer",
3894 description: "Chooses the correct answer for you",
3895 run: function() {
3896 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3897 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
3900 rush: [{
3901 name: "Set Blooks",
3902 description: "Sets amount of blooks you or your team has",
3903 run: function() {
3904 var e = document.createElement("iframe"),
3905 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many blooks do you want?")))),
3906 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3907 t.setState({
3908 numBlooks: e
3909 }), t.isTeam ? t.props.liveGameController.setVal({
3910 path: `a/${t.props.client.name}/bs`,
3911 val: e
3912 }) : t.props.liveGameController.setVal({
3913 path: `c/${t.props.client.name}/bs`,
3914 val: numDefense
3917 }, {
3918 name: "Set Defense",
3919 description: "Sets amount of defense you or your team has (Max 4)",
3920 run: function() {
3921 var e = document.createElement("iframe"),
3922 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Math.min(Number(parseInt(prompt("How much defense do you want? (Max 4)"))), 4)),
3923 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3924 t.setState({
3925 numDefense: e
3926 }), t.isTeam ? t.props.liveGameController.setVal({
3927 path: `a/${t.props.client.name}/d`,
3928 val: e
3929 }) : t.props.liveGameController.setVal({
3930 path: `c/${t.props.client.name}/d`,
3931 val: e
3934 }, {
3935 name: "Freeze Host :)",
3936 description: "They aint coming back with this one",
3937 run: function() {
3938 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
3939 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3940 t.setState({
3941 numBlooks: largeNumber
3943 if (t.isTeam) {
3944 t.props.liveGameController.setVal({
3945 path: `a/${t.props.client.name}/bs`,
3946 val: largeNumber
3948 } else {
3949 t.props.liveGameController.setVal({
3950 path: `c/${t.props.client.name}/bs`,
3951 val: largeNumber
3956 workshop: [{
3957 name: "Remove Distractions",
3958 description: "Removes all enemy distractions",
3959 run: function() {
3960 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3961 fog: !1,
3962 dusk: !1,
3963 wind: !1,
3964 plow: !1,
3965 blizzard: !1,
3966 force: !1,
3967 canada: !1,
3968 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
3971 }, {
3972 name: "Send Distraction",
3973 description: "Sends a distraction to everyone else playing",
3974 run: function() {
3975 var e = document.createElement("iframe"),
3976 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,
3977 t = {
3978 c: "Oh Canada",
3979 b: "Blizzard",
3980 f: "Fog Spell",
3981 d: "Dark & Dusk",
3982 w: "Howling Wind",
3983 g: "Gift Time!",
3984 t: "TREES",
3985 s: "Snow Plow",
3986 fr: "Use The Force"
3988 o = Object.keys(t)[Math.floor(Math.random() * Object.keys(t).length)];
3989 e.safe = !0, e.props.liveGameController.setVal({
3990 path: `c/${e.props.client.name}/tat`,
3991 val: o
3992 }), alert(`Sent a ${t[o]} distraction`)
3994 }, {
3995 name: "Set Toys",
3996 description: "Sets amount of toys",
3997 run: function() {
3998 var e = document.createElement("iframe"),
3999 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), parseInt(prompt("How many toys would you like?"))),
4000 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4001 t.setState({
4002 toys: e
4003 }), t.props.liveGameController.setVal({
4004 path: "c/".concat(t.props.client.name),
4005 val: {
4006 b: t.props.client.blook,
4007 t: e
4011 }, {
4012 name: "Set Toys Per Question",
4013 description: "Sets amount of toys per question",
4014 run: function() {
4015 var e = document.createElement("iframe");
4016 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4017 toysPerQ: parseInt(prompt("How many toys per question would you like?"))
4020 }, {
4021 name: "Swap Toys",
4022 description: "Swaps toys with someone",
4023 run: function() {
4024 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4025 e.props.liveGameController.getDatabaseVal("c", t => {
4026 e.setState({
4027 choosingPlayer: !1,
4028 players: t ? Object.entries(t).map(([e, {
4029 b: t,
4030 t: o
4031 }]) => ({
4032 name: e,
4033 blook: t,
4034 toys: o || 0
4035 })).filter(t => t.name != e.props.client.name).sort(({
4036 toys: e
4037 }, {
4038 toys: t
4039 }) => t - e) : [],
4040 phaseTwo: !0,
4041 stage: "prize",
4042 choiceObj: {
4043 type: "swap"
4045 }, () => setTimeout(() => e.setState({
4046 choosingPlayer: !0
4047 }), 300))
4052 var u = document.createElement("details");
4053 for (let p of (u.innerHTML = '<summary style="padding: 10px; font-size: 1.5em; font-weight: bolder">Global</summary>', d.global)) {
4054 let m = v(p.name);
4055 m.style.backgroundColor = "toggle" == p.type ? p.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)", m.onclick = () => {
4056 try {
4057 p.run()
4058 } finally {
4059 m.style.backgroundColor = "toggle" == p.type ? p.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)"
4061 }, u.appendChild(m)
4063 u.open = !1, u.style.paddingBottom = "10px", t.appendChild(u);
4064 let h = document.createElement("div");
4065 t.appendChild(h), console.log(d);
4066 let y = e => {
4067 if (e && d[e])
4068 for (let t of d[e]) {
4069 let o = v(t.name);
4070 o.style.backgroundColor = "toggle" == t.type ? t.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)", o.onclick = () => {
4071 try {
4072 t.run()
4073 } finally {
4074 o.style.backgroundColor = "toggle" == t.type ? t.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)"
4076 }, h.appendChild(o), h.appendChild(document.createElement("br"))
4079 setTimeout(() => y(_()), 50);
4080 var $ = function(e) {
4081 let t = window.location.pathname,
4082 o = setInterval(() => {
4083 window.location.pathname != t && e(t = window.location.pathname)
4084 }, 50);
4085 return () => clearInterval(o)
4086 }(e => {
4087 var t = _();
4088 curPageEl.innerText = _(!0) ? "Current gamemode: " + _(!0) : "No game detected", h.innerHTML = "", y(t)
4091 function v(e) {
4092 var t = document.createElement("button");
4093 return t.classList.add("cheat"), t.innerText = e, t
4096 function _(e) {
4097 switch (window.location.pathname) {
4098 case "/play/racing":
4099 return e ? "Racing" : "racing";
4100 case "/play/pirate":
4101 return e ? "Pirate's Voyage" : "voyage";
4102 case "/play/factory":
4103 return e ? "Factory" : "factory";
4104 case "/play/classic/get-ready":
4105 case "/play/classic/question":
4106 case "/play/classic/answer/sent":
4107 case "/play/classic/answer/result":
4108 case "/play/classic/standings":
4109 return e ? "Classic" : "classic";
4110 case "/play/battle-royale/match/preview":
4111 case "/play/battle-royale/question":
4112 case "/play/battle-royale/answer/sent":
4113 case "/play/battle-royale/answer/result":
4114 case "/play/battle-royale/match/result":
4115 return e ? "Battle Royale" : "royale";
4116 case "/play/toy":
4117 return e ? "Santa's Workshop" : "workshop";
4118 case "/play/gold":
4119 return e ? "Gold Quest" : "gold";
4120 case "/play/brawl":
4121 return e ? "Monster Brawl" : "brawl";
4122 case "/play/hack":
4123 return e ? "Crypto Hack" : "hack";
4124 case "/play/fishing":
4125 return e ? "Fishing Frenzy" : "fishing";
4126 case "/play/rush":
4127 return e ? "Blook Rush" : "rush";
4128 case "/play/dino":
4129 return e ? "Deceptive Dinos" : "dinos";
4130 case "/tower/map":
4131 case "/tower/battle":
4132 case "/tower/rest":
4133 case "/tower/risk":
4134 case "/tower/shop":
4135 case "/tower/victory":
4136 return e ? "Tower of Doom" : "doom";
4137 case "/cafe":
4138 case "/cafe/shop":
4139 return e ? "Cafe" : "cafe";
4140 case "/defense":
4141 return e ? "Tower Defense" : "defense";
4142 case "/play/defense2":
4143 return e ? "Tower Defense 2" : "defense2";
4144 case "/kingdom":
4145 return e ? "Crazy Kingdom" : "kingdom";
4146 case "/play/lobby":
4147 return e ? "Lobby" : "flappy";
4148 default:
4149 return !1
4153 function f(e) {
4154 "KeyE" == e.code && (a.hidden = !a.hidden)
4156 addEventListener("keypress", f)
4158 })();