function w(e, t, a, o) {
let r = l("div", {
className: "cheatButton",
innerHTML: ("string" == typeof t ? `` : t || "") + e,
onclick: () => k(r.innerText, a, o)
});
return h.appendChild(r),
r.onclick
}
function insertElemBefore(name, imgSrc, a, o, elem) {
let r = l("div", {
className: "cheatButton",
innerHTML: ("string" == typeof imgSrc ? `` : imgSrc || "") + name,
onclick: () => k(r.innerText, a, o)
});
return h.insertBefore(r, elem),
r.onclick
}
async function k(e, t, a) {
b.innerHTML = "",
v.firstChild.innerText = e + (a ? "" : " Cheats"),
b.append(v);
for (let o = 0; o "number" == e.type ? parseInt("0" + e.value) : "SELECT" == e.nodeName ? JSON.parse(e.value) : e.data || e.value)), "toggle" == n && (u.style.background = this.enabled ? "var(--enabledButton)" : "var(--disabledButton)"), C.alerts?.[0].addLog(`${"toggle" == n ? this.enabled ? "Enabled" : "Disabled" : "Ran"} ${this.name}` + (s?.length ? ` with inputs: (${t.map(e => "SELECT" == e.nodeName ? e.selectedOptions[0].innerText : e.value).join(", ")})` : ""), "toggle" == n ? this.enabled ? "var(--enabledButton)" : "var(--disabledButton)" : null))
}).bind(t[o]), s?.length)
for (let h = 0; h {
var t = document.createElement("option");
t.value = JSON.stringify(e?.value || e),
t.innerHTML = e?.name || e,
k.appendChild(t)
}),
u.appendChild(k)
} else if ("function" == $) {
let S = document.createElement("input");
S.classList.add("cheatInput"),
S.placeholder = m,
S.style.textAlign = "center";
let x = (S.readOnly = !0, !1);
S.onclick = async () => {
x || (S.value = "Waiting for input...", x = !0, S.data = await s[h].function(e => S.value = e + "..."), x = !1, S.value = S.value.slice(0, -3))
},
u.appendChild(S)
} else(g = document.createElement("input")).classList.add("cheatInput"), "number" == $ && (g.type = "number", g.min = y, g.max = _, g.value = f || (null != y ? y : 0)), g.placeholder = m, g.style.textAlign = "center", g.onkeyup = u.onclick, u.appendChild(g)
}
t[o].element = u
}
b.appendChild(t[o].element)
}
}
document.body.appendChild(_);
let C = {
global: [{
name: "Auto Answer",
description: "Toggles auto answer on",
type: "toggle",
enabled: !1,
data: null,
run: function() {
this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
var {
state: {
question: e,
stage: t,
feedback: a
},
props: {
client: {
question: o
}
}
} = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
let r = e || o;
try {
"typing" != r.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][r.answers.map((e, t) => r.correctAnswers.includes(e) ? t : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(r.answers[0])
} catch {}
}, 50))
}
}, {
name: "Highlight Answers",
description: "Toggles highlight answers on",
type: "toggle",
enabled: !1,
data: null,
run: function() {
this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
let {
stateNode: {
state: e,
props: t
}
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
[...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
(e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
})
}, 50))
}
}, {
name: "Subtle Highlight Answers",
description: "Toggles subtle highlight answers on",
type: "toggle",
enabled: !1,
data: null,
run: function() {
this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
let {
stateNode: {
state: e,
props: t
}
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
[...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
(e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
})
}, 50))
}
}, {
name: "Freeze Leaderboard",
description: "Freezes the leaderboard on the host's screen",
type: "toggle",
enabled: !1,
data: null,
run: function() {
var e = Object.values(function e(t = document.querySelector("#app")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner.stateNode;
if (this.enabled)
this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.removeVal(`c/${e.props.client.name}/tat`);
else {
this.enabled = !0;
let t = () => {
e.props.liveGameController.setVal({
path: `c/${e.props.client.name}/tat/Freeze`,
val: "freeze"
})
};
this.data = setInterval(t, 25)
}
}
}, {
name: "Percent Auto Answer",
description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
inputs: [{
name: "Target Grade",
type: "number"
}],
type: "toggle",
enabled: !1,
data: null,
run: function(e) {
if (this.enabled)
this.enabled = !1, clearInterval(this.data), this.data = null;
else {
this.enabled = !0;
let {
stateNode: t
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
this.data = setInterval(e => {
try {
let a = t.state.question || t.props.client.question;
if ("feedback" == t.state.stage || t.state.feedback)
return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
let o = 0,
r = 0;
for (let i in t.corrects)
o += t.corrects[i];
for (let n in t.incorrects)
r += t.incorrects[n];
r += o;
let s = 0 == r || Math.abs(o / (r + 1) - e) >= Math.abs((o + 1) / (r + 1) - e);
if ("typing" != t.state.question.qType) {
let l = document.querySelectorAll("[class*='answerContainer']");
for (let c = 0; c e.exports.a?.Chick && e.exports.a?.Elephant).exports.a);
}
}],
run: function(e) {
let {
props: t
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
}
())[1].children[0]._owner.stateNode;
let repeatedText = Array(500).fill(e).join(' ');
t.client.blook = repeatedText;
t.liveGameController.setVal({
path: `c/${t.client.name}/b`,
val: repeatedText
});
}
}, {
name: "Auto Answer",
description: "Click the correct answer for you",
run: function() {
let {
state: {
question: e,
stage: t,
feedback: a
},
props: {
client: {
question: o
}
}
} = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
try {
"typing" != e.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][(e || o).answers.map((t, a) => (e || o).correctAnswers.includes(t) ? a : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(e.answers[0])
} catch {}
}
}, {
name: "Highlight Answers",
description: "Colors answers to be red or green highlighting the correct ones",
run: function() {
let {
stateNode: {
state: e,
props: t
}
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
[...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
(e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
})
}
}, {
name: "Subtle Highlight Answers",
description: "Removes the shadow from correct answers",
run: function() {
let {
stateNode: {
state: e,
props: t
}
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
[...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
(e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
})
}
}, {
name: "Get Daily Rewards",
description: "Gets max daily tokens and xp",
run: async function() {
let e = document.createElement("iframe");
if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
let {
t
} = await fetch("https://play.blooket.com/api/playersessions/solo", {
body: JSON.stringify({
gameMode: "Factory",
questionSetId: ["5fac96fe2ca0da00042b018f", "66702d024ec37ac03062cc06", "600b1491d42a140004d5215a", "65d4810a8a408800b6449e57", "5fac96fe2ca0da00042b018f", "615e9cd727d0720066bcf638", "5fac96fe2ca0da00042b018f", "600b1491d42a140004d5215a", "63ee6c1fbd7c007948b2f986", "65d8de5bd25f9bd49916d855", "600b14d8d42a140004d52165", "6352e93608ea4ee9d0a5fe7f", "64cd1b99ff6f69f3025fc25a", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "65fb6005f986c984060ed92c", "65e88b461a39195a37309c57", "60cc9f943f191b00230ae2a2", "61f5484186dade0979280d54", "664418e736bd1bf1890b2dae", "640a7d9bde68f5243d403977", "66256e6b861ee38a258b8b61", "65119f1fba0bb577d186df8e", "661d7540a452254baf51b1dd", "65ff17a207a715061a6249e6", "61c3570ad8f92ff303ee4733", "63efbff8e2b70e8a1bb1a583", "644a30c06dd4d2c2c5c9c6ae", "66461ff5c671f7c7db225cb3", "664777444be95fa91fc9a4ee", "6425e5e052b1ba5ae2cb07a2", "612e2aad654d48002a4f384d", "6548ffabcbe542c105812e64", "666092337e18e9b7b044e6c8", "6277e6ca21e2151edc435c53", "6268270201c2a958b75af1cf", "61aa4f9c190f70ceda79cf92", "6680e522559ac110b3c6ef28", "6657d986e92bbd481c12a6e8", "61d877c1910d317630b69e02", "618e5d8b7242bec7572b53ca", "656d4a2ac3bc01302555bfbd", "61d7463d2250de5603ad8ba1", "6650bd7a87c4bb5302d69c08", "61b1fdb09a3347d1a298157b", "60b632ff2089ea0028d26fc8", "5fdcacc85d465a0004b021b9", "665e3161785c8a4e8853f995", "61b9d07a7a1e178d18ccd903", "6624a2cd861ee38a258b814d", "650b3ccd54b65594ff99e620", "61b2a39895bd185869e3844e", "6581df4af27a6029a933d954", "641eecaec2e1181b54481588", "668ce3d2eb8513f5ed4c79c1", "5fac96fe2ca0da00042b018f", "6192afff6cb94db501ecc7d5", "600b14d8d42a140004d52165", "665898ae99eca64187ffe7df", "5fe3d085a529560004cd3076", "64fb8fbfdbeffc06f36f8f5f", "654e79558169fc618f544ac7", "628d24107ffc913af879c58a", "617041e0e97439003084cb25", "6408cc2a52d433570018126b", "663c5686d93c1e441547529f", "666c3d24c9e069d6094bbcce", "6548ffabcbe542c105812e64", "663d4766d93c1e4415476a9d", "5f88953cdb209e00046522c7", "64fcec87be8604702a6e0559", "614b2b3747e4cd002c3c0e35", "600b14d8d42a140004d52165", "63640a18c5370a98f00349b1", "6690e0ec559ac110b3c7b4dd", "664644bd7ea36b003839459c", "600b153ad42a140004d52172", "63e638d8db4486e546547014", "61406d240c2275002a272a95", "627bced5fdb8934dfba749a8", "619c2736a7fb3a4c9d3810cc", "650a06c4fe5c6757ff82208c", "6060c2240db34f001ddfe119", "6525532901343f98c90eee3e", "60101da869e8c70013913b59", "625db660c6842334835cb4c6", "60268f8861bd520016eae038", "611e6c804abdf900668699e3", "60ba5ff6077eb600221b7145", "642467af9b704783215c1f1b", "605bd360e35779001bf57c5e", "6234cc7add097ff1c9cff3bd", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "5fac96fe2ca0da00042b018f", "600b14d8d42a140004d52165", "5f88953cdb209e00046522c7", "600b153ad42a140004d52172", "5fe260e72a505b00040e2a11", "5fe3d085a529560004cd3076", "5f5fc017aee59500041a1456", "608b0a5863c4f2001eed43f4", "5fad491512c8620004918ace", "5fc91a9b4ea2e200046bd49a", "5c5d06a7deebc70017245da7", "5ff767051b68750004a6fd21", "5fdcacc85d465a0004b021b9", "5fb7eea20bd44300045ba495"][Math.floor(107 * Math.random())]
}),
credentials: "include",
method: "POST"
}).then(e => e.json());
await fetch("https://play.blooket.com/api/playersessions/landings", {
body: JSON.stringify({
t
}),
credentials: "include",
method: "POST"
});
await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
credentials: "include"
});
await fetch("https://play.blooket.com/api/users/factorystats", {
body: JSON.stringify({
blookUsed: "Chick",
t,
cash: Math.floor(9e7 * Math.random()) + 1e7,
correctAnswers: Math.floor(500 * Math.random()) + 500,
upgrades: Math.floor(300 * Math.random()) + 300,
mode: "Time-Solo",
nameUsed: "You",
place: 1,
playersDefeated: 0
}),
credentials: "include",
method: "PUT"
}),
fetch("https://play.blooket.com/api/users/add-rewards", {
body: JSON.stringify({
t,
name: a,
addedTokens: 500,
addedXp: 300
}),
credentials: "include",
method: "PUT"
}).then(e => e.json()).then(({
dailyReward: e
}) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
} else
alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
}
}, {
name: "Use any Blook",
description: "Allows you to play as any blook.",
run: function() {
(() => {
const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
let i = document.createElement('iframe');
document.body.append(i);
const alert = i.contentWindow.alert.bind(window);
i.remove();
if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
alert("This must be run on the lobby or dashboard!");
return;
}
if (stateNode.state.blookData) {
let oe = Object.entries;
Object.entries = function(a) {
if (a?.Chick) {
allBlooks(a);
Object.entries = oe;
}
return oe.apply(this, arguments);
}
stateNode.render();
function makeLongText() {
return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
}
let {
props: t
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
}
())[1].children[0]._owner.stateNode;
let repeatedText = makeLongText();
t.client.blook = repeatedText;
t.liveGameController.setVal({
path: `c/${t.client.name}/b`,
val: repeatedText
});
}
}, {
name: "Remove all Taken Blooks",
description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
run: function() {
const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
stateNode.setState({
takenBlooks: {
includes: e => !1
}
});
stateNode.setState = function(a, b) {
if (a?.takenBlooks) {
return;
}
stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
}
}
}, {
name: "Dynamic Player Count",
description: "Updates the player count at the top of the screen in realtime as players join or leave.",
run: function() {
(async () => {
const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
const ref = await stateNode.props.liveGameController.getDatabaseRef("")
ref.on("value", e => {
document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
});
})()
}
}, {
name: "Lobbychat",
description: "Chat with other people and execute commands",
run: function() {
if (window.run) {
return;
} else {
window.run = true;
}
function e() {
return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
}
var t = 0,
a = !1;
document.addEventListener("keydown", function(e) {
"`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
});
let o = document.createElement("div");
o.className = "chat-box",
document.body.appendChild(o);
let r = document.createElement("div");
r.className = "chat-header",
r.textContent = "Chat",
o.appendChild(r);
let i = document.createElement("div");
i.className = "chat-body",
o.appendChild(i);
let n = document.createElement("input");
function s(e) {
let t = document.createElement("div");
t.textContent = e,
i.appendChild(t)
}
n.type = "text",
n.className = "chat-input",
n.placeholder = "Type a message...",
o.appendChild(n),
o.style.position = "fixed",
o.style.bottom = "20px",
o.style.right = "20px",
o.style.width = "300px",
o.style.backgroundColor = "#fff",
o.style.border = "1px solid #ccc",
o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)",
r.addEventListener("click", () => {
i.classList.toggle("open")
}),
n.addEventListener("keydown", function(a) {
13 === a.keyCode && (function a(o) {
var r,
n,
l,
c,
d,
p,
u,
h = function e(t) {
if ("/" !== t.charAt(0))
return !1;
var a = t.split(" "),
o = a[0].replace("/", "");
return a.splice(0, 1), {
cmd: o,
args: a
}
}
(o);
if (h)
switch (h.cmd) {
case "cb":
r = h.args.join(" "),
(n = webpackJsonp.push([
[], {
1234(e, t, a) {
t.webpack = a
}
},
[
["1234"]
]
]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
id: e().stateNode.props.client.hostId,
path: "c/" + e().stateNode.props.client.name,
val: {
b: r
}
}), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
break;
case "clear":
i.innerHTML = "";
break;
case "dumpstate":
Object.keys(e().stateNode.state).map(t => {
var a = e().stateNode.state[t];
if (null == a)
return "N/A";
Array.from(a) && "object" == typeof a && (a = "[Array]"),
s(t + ":" + a)
}).join(";");
break;
case "list":
e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
});
break;
case "tlog":
window.logsv = !window.logsv,
s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
break;
case "setval":
l = h.args,
e().stateNode.props.liveGameController.setVal({
path: "c/" + e().stateNode.props.client.name + "/" + l[0],
val: l.slice(1, l.length).join(" ")
});
break;
case "setstate":
c = h.args,
d = {},
c.forEach(e => {
var t = e.split(":");
Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])),
d[t[0]] = t[1]
}),
e().stateNode.setState(d),
s("Set Successful!");
break;
case "ahelp":
s("Advanced Commands: setval(sets val logged by tlog ex /setval b Chicken), tlog(toggles setval log), dumpstate(dumps react state),setstate(sets react state /setstate crypto:5 crypto2:5 etc)");
break;
case "help":
s("Available Commands: help(gives help),ahelp(advanced commands help), cb(changes blook /cb cow), list(lists players connected), dump(dumps all available info about a player, passwords, etc(/dump player)), clear(clears chat), code(gives game code), unlock(unlocks blook on lobby screen)");
break;
case "dump":
! function t(a) {
e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
})
}
(h.args.join(" "));
break;
case "unlock":
p = h.args.join(" "),
(u = webpackJsonp.push([
[], {
1234(e, t, a) {
t.webpack = a
}
},
[
["1234"]
]
]).webpack("MDrD").a)[p = Object.keys(u).find(e => p.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (e().stateNode.state.unlocks.push(p), e().stateNode.forceUpdate()) : s("No blook with that name was found!");
break;
case "code":
s("Game Code: " + e().stateNode.props.client.hostId);
break;
default:
s("Unrecognized chat command!")
}
else
e().stateNode.props.liveGameController.setVal({
id: e().stateNode.props.client.hostId,
path: "c/" + e().stateNode.props.client.name + "/msg",
val: {
i: t,
msg: o
}
}), t++
}
(a.srcElement.value), a.srcElement.value = "")
});
var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
function c(e) {
window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
}
e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
var r,
i;
console.log(e, t, a, o),
r = e,
null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)),
l(e, t, a, o)
},
window.logsv = !1;
var d = e().stateNode.props.liveGameController.setVal;
e().stateNode.props.liveGameController.setVal = function() {
c.apply(this, arguments),
d.apply(this, arguments)
},
e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.client.hostId}`).on("value", e => {}),
s("Lobbychat successfully loaded!"),
o.style.wordWrap = "break-word"
}
}, {
name: "Pin Guesser",
description: "Brute forces combinations for existing pins",
run: function() {
var e = 0,
t = 0,
a = document.querySelector("div[class*='titleText']");
function o() {
return Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner.stateNode
}! function r() {
let i = Math.floor(9e6 * Math.random()) + 1e6;
fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
method: "GET",
credentials: "include"
}).then(e => e.json()).then(n => {
!0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
client: {
hostId: i.toString()
}
})) : (console.log("No game found for:", i), o().setState({
client: {
hostId: i.toString()
}
}), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
}).catch(e => {
alert("Error:" + e)
})
}
()
}
}, {
name: "Every Answer Correct",
description: "Sets every answer to be correct",
run: function() {
let {
stateNode: e
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner;
e.freeQuestions = e.freeQuestions?.map?.(e => ({
...e,
correctAnswers: e.answers
})),
e.questions = e.questions?.map?.(e => ({
...e,
correctAnswers: e.answers
})),
e.props.client.questions = e.props.client.questions.map(e => ({
...e,
correctAnswers: e.answers
}))
}
}, {
name: "Remove Name Limit",
description: "Sets the name limit to 120, which is the actual max name length limit",
run: function() {
var e = document.createElement("iframe");
document.body.append(e),
window.alert = e.contentWindow.alert.bind(window),
e.remove(),
document.querySelector('input[class*="nameInput"]').maxLength = 120,
alert("Removed name length limit")
}
}, {
name: "Remove Random Name",
description: "Allows you to put a custom name",
run: function() {
Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
isRandom: !1,
client: {
name: ""
}
}),
document.querySelector('[class*="nameInput"]')?.focus?.()
}
}, {
name: "Sell Cheap Duplicates",
description: "Sells all of your uncommon to epic dupes (not legendaries+)",
run: function() {
var e = document.createElement("iframe");
document.body.append(e),
window.alert = e.contentWindow.alert.bind(window),
window.confirm = e.contentWindow.confirm.bind(window),
e.remove();
let t = webpackJsonp.push([
[], {
1234(e, t, a) {
t.webpack = a
}
},
[
["1234"]
]
]).webpack,
a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
a.get("https://dashboard.blooket.com/api/users").then(async ({
data: {
unlocks: e
}
}) => {
if (e = Object.entries(e).filter(([e, t]) => 1 ` ${e} ` + (t - 1)).join(" "))
}
}).catch(() => alert("There was an error user data!"))
}
}, {
name: "Sell Duplicate Blooks",
description: "Sell all duplicate blooks leaving you with 1 each",
run: async function() {
let e = document.createElement("iframe");
if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove(), /dashboard.*/blooks/.test(window.location.href)) {
if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
let {
stateNode: t
} = Object.values(function e(t = document.querySelector("body>div")) {
return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
}
())[1].children[0]._owner,
a = Date.now(),
o = "";
for (let r in t.state.blookData)
if (t.state.blookData[r] > 1) {
if (t.setState({
blook: r,
numToSell: t.state.blookData[r] - 1
}), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim()))
continue;
o += ` ${r} ${t.state.blookData[r] - 1} `,
await t.sellBlook({
preventDefault() {}
}, !0)
}
alert(`(${Date.now() - a}ms) Results: ${o.trim()}`)
}
} else
alert("This can only be ran in the Blooks page.")
}
}],
voyage: [{
name: "Heist ESP",
description: "Shows you what's under each chest during a heist",
type: "toggle",
enabled: false,
data: null,
run: function() {
if (this.enabled) {
this.enabled = false;
clearInterval(this.data);
this.data = null;
Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
} else {
this.enabled = true;
this.data = setInterval(() => {
const cheat = (async () => {
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;
if (stateNode.state.stage == "heist") {
const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
for (const e of document.querySelectorAll("[class*=boxContent] > div"))
e.remove();
const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
const box = container.firstChild.firstChild;
if (open.includes(i))
return box.style.opacity = "";
box.style.opacity = "0.5";
let d