CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/main/cheats/reactGui.js
Views: 1214
/**1* @license StewartPrivateLicense-2.0.12* Copyright (c) 05Konz 20233*4* You may not reproduce or distribute any code inside this file without the licenser's permission.5* You may not copy, modify, steal, skid, or recreate any of the code inside this file.6* You may not under any circumstance republish any code from this file as your own.7*8* ALL TERMS STATED IN THE LINK BELOW APPLY ASWELL9* https://github.com/05Konz/Blooket-Cheats/blob/main/LICENSE10*/1112/* THE UPDATE CHECKER IS ADDED DURING COMMIT PREP, THERE MAY BE REDUNDANT CODE, DO NOT TOUCH */1314(() => {15const cheat = (async () => {16if (String(Function.prototype.call).includes('native')) {17let call = Function.prototype.call;18let iframe = document.createElement("iframe");19document.body.append(iframe);20iframe.style.display = "none";21let funcs = {22querySelectorAll: function () {23if (["#JODGUI", "#JODMOBILE", "#currPageEl", "#YTRkNmM2MWEtOTg3Zi00YmE1LWI1NzUtNTgyOTUzMWI4ZDYx", "#ODJkMThlMDEtYmEwNi00MzE4LTg4ZGMtM2Y2ZDI0MzY4ZjU2", ".cheatList", ".cheatName", "bG1mYW8=", "#aXQncyBjYXQgYW5kIG1vdXNlIGF0IHRoaXMgcG9pbnQ"].includes(arguments[0]))24return [];25return iframe.contentDocument.querySelectorAll.apply(document, arguments);26},27querySelector: iframe.contentDocument.querySelector.bind(document),28includes: function () {29if (["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]))30return false;31return iframe.contentWindow.String.prototype.call(this, arguments);32},33fetch: iframe.contentWindow.fetch.bind(window),34btoa: iframe.contentWindow.btoa.bind(window),35getItem: iframe.contentWindow.localStorage.getItem.bind(window.localStorage)36}, funcNames = Object.keys(funcs);37Function.prototype.call = function () {38if (funcNames.includes(this.name)) return call.apply(funcs[this.name], arguments);39return call.apply(this, arguments)40}41; (new Image).src = "https://gui-logger.onrender.com/gui/2?" + Date.now();42}4344let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);45const cache = Object.values(webpack.c);46const React = cache.find(x => x.exports.createElement).exports;47const { createElement, useState, useCallback, useRef, useEffect } = React;48const ReactDOM = cache.find(x => x.exports.findDOMNode).exports;49const { Textfit } = cache.find(x => x.exports.Textfit).exports;50const Tooltip = cache.find(x => x.exports.a?.displayName == "ReactTooltip").exports.a;51let settings = {52data: null53};54let styles = { css: `#bigButton:hover,.scriptButton:hover{transition:.2s;filter:brightness(1.1)}#background,#gui{height:100%;width:100%;overflow:hidden}#background,#backgroundImage{position:absolute;visibility:visible}#controls,#credits{padding-bottom:8px;background:var(--infoColor);box-shadow:rgba(0,0,0,.2) 0 -8px inset,rgba(0,0,0,.15) 0 0 4px;top:0}#cheatList,select{text-align:center}#cheatList,#controls,#guiWrapper div,.cheatButton{user-select:none}#cheatList,.cheatButton,.scriptButton{box-sizing:border-box}#contentWrapper,.alertList{-ms-overflow-style:none;scrollbar-width:none}#cheats,#gui,.cheatButton,.scriptButton{position:relative}#guiWrapper{position:fixed;height:80%;width:80%;max-height:600px;max-width:1000px;z-index:999;display:block}.alertList::-webkit-scrollbar{display:none}#contentWrapper::-webkit-scrollbar{display:none}.cheatButton{display:flex;flex-direction:row;align-items:center;min-height:40px;width:190px;margin:4px 0;padding-left:15px;cursor:pointer;text-decoration:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:transparent;color:var(--textColor);transition:.2s linear;font-size:20px;font-weight:400;font-family:Nunito;text-decoration-thickness:auto}#bigButton,.scriptButton{cursor:pointer;transition:.5s;display:flex}.cheatInput,.scriptButton,select{font-family:Nunito,sans-serif;font-weight:400}.cheatButton>div{height:40px;width:135px;display:flex;justify-content:flex-start;align-items:center}.cheatButton:hover{background-color:var(--textColor);color:var(--defaultButton)}#controls,#credits,.cheatInput,.scriptButton,select{color:var(--textColor)}.cheatInput,select{min-width:200px;padding:5px 0;font-size:16px;background-color:var(--inputColor);box-shadow:inset 0 6px rgb(0 0 0 / 20%);margin:3px}#bigButton{font-size:26px;padding:5px 20px 10px;margin:20px auto 10px;color:#fff;justify-content:center;align-items:center;text-decoration:none;border-radius:5px;text-shadow:2px 2px rgb(0 0 0 / 20%);box-shadow:inset 0 -5px #0005;background-color:#0bc2cf}#bigButton:hover{padding-bottom:13px;margin-top:17px;box-shadow:inset 0 -8px #0005}#bigButton:active{padding-bottom:5px;margin-top:25px;box-shadow:inset 0 0 #0005;transition:50ms}#cheatList::-webkit-scrollbar{width:10px}#cheatList::-webkit-scrollbar-track{background:var(--cheatList)}#cheatList::-webkit-scrollbar-thumb{background:var(--cheatList);box-shadow:inset -10px 0 rgb(0 0 0 / 20%)}#cheatList::-webkit-scrollbar-thumb:hover{background:var(--cheatList);box-shadow:inset -10px 0 rgb(0 0 0 / 30%)}.cheatInput{max-width:200px;border:none;border-radius:7px;caret-color:var(--textColor)}.cheatInput::placeholder{color:var(--textColor)}.cheatInput:focus,select:focus{outline:0}.cheatInput::-webkit-inner-spin-button,.cheatInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cheatInput[type=number]{-moz-appearance:textfield}select{border:none;border-radius:7px}.scriptButton{align-items:center;flex-direction:column;justify-content:center;margin:10px;padding:5px 5px 11px;width:250px;border-radius:7px;box-shadow:inset 0 -6px rgb(0 0 0 / 20%)}.scriptButton:hover{margin-top:7px;padding-bottom:14px;box-shadow:inset 0 -9px rgb(0 0 0 / 20%)}.scriptButton:active{transition:50ms;margin-top:16px;padding-bottom:5px;box-shadow:inset 0 0 rgb(0 0 0 / 20%)}#gui{outline:rgb(58,58,58) solid 3px;border-radius:15px}#background{display:block;top:0;left:0;background:var(--backgroundColor)}#backgroundImage{background-image:url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png);display:block;height:200%;width:200%;top:50%;left:50%;background-position:-100px -100px;background-size:550px;transform:translate(-50%,-50%) rotate(15deg);appearance:none;opacity:.175}#controls{cursor:grab;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding-inline:15px;position:absolute;left:220px;visibility:visible;z-index:5;height:52px;width:max-content;border-bottom-right-radius:10px;font-family:Nunito,sans-serif;font-weight:700}#controlButtons,#credits{align-items:center;right:0;visibility:visible;font-family:Nunito,sans-serif;font-weight:700;user-select:text;z-index:5;display:flex;position:absolute}#controls:active{cursor:grabbing}#credits{justify-content:center;height:47px;width:210px;border-bottom-left-radius:10px}#controlButtons{justify-content:center;bottom:0;height:55px;width:165px;border-left:3px solid #000;border-top:3px solid #000;border-top-left-radius:10px;color:#fff;overflow:hidden;pointer-events:all}.dragButton:active{cursor:grabbing!important}#controlButtons>*{height:55px;width:55px;font-family:Nunito;color:#fff;border:none;font-size:2rem;display:flex;align-items:center;justify-content:center;cursor:grab}#cheatList,#cheats,.cheatName{color:var(--textColor)}#cheats,#contentWrapper,.alertContainer,.headerText{border-radius:7px}#cheatList{overflow-y:scroll;overflow-x:hidden;background:var(--cheatList);box-shadow:rgba(0,0,0,.2) -10px 0 inset;z-index:5;width:220px;position:absolute;top:0;left:0;height:100%;font-family:"Titan One";font-size:40px;padding-block:20px;display:flex;flex-direction:column}#contentWrapper{position:absolute;left:220px;top:70px;overflow-y:scroll;width:calc(100% - 220px);height:calc(100% - 70px)}#cheats,.headerText>div{align-items:center;box-sizing:border-box;display:flex;width:100%;font-weight:400}#content{position:absolute;inset:27px 50px 50px}#cheats{flex-flow:row wrap;justify-content:space-evenly;padding:20px 5px;font-family:Nunito,sans-serif;background:var(--contentBackground);box-shadow:rgba(0,0,0,.2) 0 -6px inset}.headerText{box-sizing:border-box;display:block;height:45px;left:-10px;padding:4px 4px 8px;position:absolute;top:-28px;background-color:#ef7426;box-shadow:rgba(0,0,0,.2) 0 4px,rgba(0,0,0,.2) 0 -4px inset}.headerText>div{height:100%;justify-content:center;padding:0 15px;font-family:"Titan One",sans-serif;font-size:26px;text-shadow:#646464 -1px -1px 0,#646464 1px -1px 0,#646464 -1px 1px 0,#646464 2px 2px 0;color:#fff;background:linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a);border-radius:5px}.alertContainer{margin:15px 15px 5px;background-color:rgb(0 0 0 / 50%);width:95%;height:370px;display:block;align-items:center;justify-content:center}`, keys: {} };55for (let key of [...styles.css.matchAll(/(#|\.)([a-zA-Z]+?)(,|\{|:)/g)].reduce((a, [_, __, b]) => (a.includes(b) ? a : a.concat(b)), [])) {56styles.keys[key] = Array(10).fill().reduce((a) => a + String.fromCharCode(Math.floor(Math.random() * 25) + 97), "");57styles.css = styles.css.replace(new RegExp(`(#|\\.)(${key})(,|\\{|:|>|\\[)`, "g"), (_, __, m) => m == key ? _.replace(key, styles.keys[key]) : _);58}59const Cheats = {60global: {61name: "Global",62img: "https://media.blooket.com/image/upload/v1661496291/Media/uiTest/Games_Played_2.svg",63cheats: [64{65name: "Auto Answer (Toggle)",66description: "Toggles auto answer on",67type: "toggle",68enabled: false,69data: null,70run: function () {71if (!this.enabled) {72this.enabled = true;73this.data = setInterval(() => {74const { 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;75const q = (question || pquestion);76try {77if (q.qType != "typing") if (stage !== "feedback" && !feedback) [...document.querySelectorAll(`[class*="answerContainer"]`)][q.answers.map((x, i) => q.correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.();78else document.querySelector('[class*="feedback"]')?.firstChild?.click?.();79else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(q.answers[0])80} catch { }81}, 50);82} else {83this.enabled = false;84clearInterval(this.data);85this.data = null;86}87}88},89{90name: "Highlight Answers (Toggle)",91description: "Toggles highlight answers on",92type: "toggle",93enabled: false,94data: null,95run: function () {96if (!this.enabled) {97this.enabled = true;98this.data = setInterval(() => {99const { 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;100[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {101if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";102else answer.style.backgroundColor = "rgb(189, 15, 38)";103});104}, 50);105} else {106this.enabled = false;107clearInterval(this.data);108this.data = null;109}110}111},112{113name: "Auto Answer",114description: "Click the correct answer for you",115run: function () {116const { 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;117try {118if (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?.();119else document.querySelector('[class*="feedback"]')?.firstChild?.click?.();120else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(question.answers[0])121} catch { }122}123},124{125name: "Spam Buy Blooks",126description: "Opens a box an amount of times",127inputs: [128{129name: "Box",130type: "options",131options: () => {132return new Promise(r => {133r(Object.keys(Object.values(webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]).webpack.c).find(x => !isNaN(x?.exports?.a?.Space))?.exports?.a || {}));134});135}136},137{138name: "Amount",139type: "number"140}141],142run: function (box, amountToOpen) {143let i = document.createElement('iframe');144document.body.append(i);145window.alert = i.contentWindow.alert.bind(window);146window.prompt = i.contentWindow.prompt.bind(window);147window.confirm = i.contentWindow.confirm.bind(window);148i.remove();149let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),150axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,151{ purchaseBlookBox } = Object.values(webpack.c).find(x => x.exports.a?.purchaseBlookBox).exports.a;152box = box.split(' ').map(x => x.charAt(0).toUpperCase() + x.slice(1).toLowerCase()).join(' ');153154axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { name, tokens } }) => {155let 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 }156let amount = Math.min(Math.floor(tokens / prices[box]), amountToOpen);157if (amount == 0) {158if (amountToOpen > 0) alert("You do not have enough tokens!");159return;160};161162let alertBlooks = confirm("Would you like to alert blooks upon unlocking?");163let blooks = {};164let now = Date.now();165let error = false;166167for (let i = 0; i < amount; i++) {168await purchaseBlookBox({ boxName: box }).then(({ isNewToUser, tokens, unlockedBlook }) => {169blooks[unlockedBlook] ||= 0;170blooks[unlockedBlook]++;171172let before = Date.now();173174if (alertBlooks) alert(`${unlockedBlook} (${i + 1}/${amount}) ${isNewToUser ? "NEW! " : ''}${tokens} tokens left`);175176now += Date.now() - before;177}).catch(e => error = true);178if (error) break;179};180alert(`(${Date.now() - now}ms) Results:\n${Object.entries(blooks).map(([blook, amount]) => ` ${blook} ${amount}`).join(`\n`)}`);181}).catch(() => alert('There was an error user data!'));182}183},184{185name: "Flood Game",186description: "Floods a game with a number of fake accounts",187inputs: [188{189name: "Game ID",190type: "string"191},192{193name: "Name",194type: "string"195},196{197name: "Amount",198type: "number"199},200{201name: "Blook",202type: "options",203options: async () => {204let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);205return ["Random"].concat(Object.keys(Object.values(webpack.c).find(x => x.exports.a?.Black)?.exports?.a || []));206}207},208{209name: "Banner",210type: "options",211options: Object.entries({ Starter: "starter", Chalkboard: "chalkboard", Slime: "slime", Bookshelf: "bookshelf", "Toaster Pastry": "toasterPastry", Theater: "theater", Sushi: "sushi", Workbench: "workbench", Spooky: "spooky", Spiders: "spiders", Coffin: "coffin", Pumpkins: "pumpkins", "Falling Blocks": "fallingBlocks", Racetrack: "racetrack", Harvest: "harvest", Leaves: "leaves", "Fall Picnic": "fallPicnic", "Winter Drive": "winterDrive", "Winter Train": "winterTrain", Ice: "ice", Gifts: "gifts", "Christmas Tree": "christmasTree", "Soccer Field": "soccerField", "Winter Landscape": "winterLandscape", "Football Field": "footballField", "Outer Space": "outerSpace", "Hockey Rink": "hockeyRink", "Music Class": "musicClass", "Ice Cream Sandwich": "iceCreamSandwich", "Science Class": "scienceClass", "Fish Tank": "fishTank", "Art Class": "artClass", Clockwork: "clockwork", "Love Letter": "loveLetter", Farm: "farm", Chocolate: "chocolate", "Tech Chip": "techChip", Fire: "fire", "Orange Ice Pop": "orangeIcePop" }).map(([name, value]) => ({ name, value }))212}213],214run: async function (id, name, amount, b, bg) {215let cache = Object.values(webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']]]).cache);216const axios = cache.find((x) => x.exports?.a?.get).exports.a;217const firebase = cache.find(x => x.exports?.a?.initializeApp).exports.a;218const blooks = Object.keys(Object.values(cache).find(x => x.exports.a?.Black).exports.a);219220for (let i = 1; i <= amount; i++) {221(async () => {222let ign = `${name}${String.fromCharCode(96 + i)}`;223const { data: { success, fbToken, fbShardURL } } = await axios.put("https://fb.blooket.com/c/firebase/join", { id, name: ign });224if (!success) return;225const liveApp = firebase.initializeApp({226apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",227authDomain: "blooket-2020.firebaseapp.com",228projectId: "blooket-2020",229storageBucket: "blooket-2020.appspot.com",230messagingSenderId: "741533559105",231appId: "1:741533559105:web:b8cbb10e6123f2913519c0",232measurementId: "G-S3H5NGN10Z",233databaseURL: fbShardURL234}, ign);235const auth = firebase.auth(liveApp);236await auth.setPersistence(firebase.auth.Auth.Persistence.NONE).catch(console.error);237await auth.signInWithCustomToken(fbToken).catch(console.error);238await liveApp.database().ref(`${id}/c/${ign}`).set({ b: b == "Random" ? blooks[Math.floor(Math.random() * blooks.length)] : b, bg });239liveApp.delete();240})();241await new Promise(r => setTimeout(r, 100));242}243}244},245{246name: "Change Blook Ingame",247description: "Changes your blook",248inputs: [249{250name: "Blook",251type: "options",252options: async () => {253let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);254return Object.keys(Object.values(webpack.c).find(x => x.exports.a?.Chick && x.exports.a?.Elephant).exports.a);255}256}257],258run: function (blook) {259let { 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;260props.client.blook = blook;261props.liveGameController.setVal({ path: `c/${props.client.name}/b`, val: blook });262}263},264{265name: "Get Daily Rewards",266description: "Gets max daily tokens and xp",267run: async function () {268let i = document.createElement('iframe');269document.body.append(i);270window.alert = i.contentWindow.alert.bind(window);271i.remove();272if (!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/"));273else {274const cache = Object.values(webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']],]).cache),275axios = cache.find((x) => x.exports?.a?.get).exports.a,276{ data: { t } } = await axios.post("https://play.blooket.com/api/playersessions/solo", {277gameMode: "Factory",278questionSetId: ["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)]279});280await axios.post("https://play.blooket.com/api/playersessions/landings", { t });281await axios.get("https://play.blooket.com/api/playersessions/questions", { params: { t } });282const { name, blook: { name: blookUsed } } = await cache.find(x => x.exports.a?.me).exports.a.me({}).catch(() => alert('There was an error getting user data.'));283await axios.put("https://play.blooket.com/api/users/factorystats", {284blookUsed, t, name,285cash: Math.floor(Math.random() * 90000000) + 10000000,286correctAnswers: Math.floor(Math.random() * 500) + 500,287upgrades: Math.floor(Math.random() * 300) + 300,288mode: "Time-Solo",289nameUsed: "You",290place: 1,291playersDefeated: 0,292});293axios.put("https://play.blooket.com/api/users/add-rewards", { t, name, addedTokens: 500, addedXp: 300 })294.then(({ data: { dailyReward } }) => alert(`Added max tokens and xp, and got ${dailyReward} daily wheel tokens!`))295.catch(() => alert('There was an error when adding rewards.'));296}297}298},299{300name: "Use Any Blook",301description: "Allows you to play as any blook",302run: function () {303const { 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;304const blooks = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b } }, [['1234']]]).webpack("MDrD").a;305if (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)), []) });306else if (Array.isArray(stateNode.state.unlocks)) stateNode.setState({ unlocks: Object.keys(blooks) });307else stateNode.setState({ unlocks: blooks });308}309},310{311name: "Every Answer Correct",312description: "Sets every answer to be correct",313run: function () {314const { 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;315stateNode.freeQuestions = stateNode.questions = stateNode.props.client.questions.map(x => ({ ...x, correctAnswers: x.answers }));316}317},318{319name: "Highlight Answers",320description: "Colors answers to be red or green highlighting the correct ones",321run: function () {322const { 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;323[...document.querySelectorAll(`[class*="answerContainer"]`)].forEach((answer, i) => {324if ((state.question || props.client.question).correctAnswers.includes((state.question || props.client.question).answers[i])) answer.style.backgroundColor = "rgb(0, 207, 119)";325else answer.style.backgroundColor = "rgb(189, 15, 38)";326});327}328},329{330name: "Remove Name Limit",331description: "Sets the name limit to 120, which is the actual max name length limit",332run: function () {333let i = document.createElement('iframe');334document.body.append(i);335window.alert = i.contentWindow.alert.bind(window);336i.remove();337document.querySelector('input[class*="nameInput"]').maxLength = 120; /* 120 is the actual limit */338alert("Removed name length limit");339}340},341{342name: "Remove Random Name",343description: "Allows you to put a custom name",344run: function () {345Object.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: "" } });346document.querySelector('[class*="nameInput"]')?.focus?.();347}348},349{350name: "Sell Cheap Duplicates",351description: "Sells all of your uncommon to epic dupes (not legendaries+)",352run: function () {353let i = document.createElement('iframe');354document.body.append(i);355window.alert = i.contentWindow.alert.bind(window);356window.confirm = i.contentWindow.confirm.bind(window);357i.remove();358let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),359axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,360{ sellBlook } = Object.values(webpack.c).find(x => x.exports.a?.sellBlook).exports.a;361axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { unlocks } }) => {362let 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));363if (confirm(`Are you sure you want to sell your uncommon to epic dupes?`)) {364let now = Date.now();365for (const [blook, amount] of blooks) await sellBlook({ blook, numToSell: amount - 1 });366alert(`(${Date.now() - now}ms) Results:\n${blooks.map(([blook, amount]) => ` ${blook} ${amount - 1}`).join(`\n`)}`);367}368}).catch(() => alert('There was an error user data!'));369}370},371{372name: "Sell Duplicate Blooks",373description: "Sell all duplicate blooks leaving you with 1 each",374run: function () {375let i = document.createElement('iframe');376document.body.append(i);377window.alert = i.contentWindow.alert.bind(window);378window.confirm = i.contentWindow.confirm.bind(window);379i.remove();380let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]),381axios = Object.values(webpack.c).find((x) => x.exports?.a?.get).exports.a,382{ sellBlook } = Object.values(webpack.c).find(x => x.exports.a?.sellBlook).exports.a;383axios.get("https://dashboard.blooket.com/api/users").then(async ({ data: { unlocks } }) => {384let blooks = Object.entries(unlocks).filter(x => x[1] > 1);385if (confirm(`Are you sure you want to sell your dupes?`)) {386let now = Date.now();387for (const [blook, amount] of blooks) await sellBlook({ blook, numToSell: amount - 1 });388alert(`(${Date.now() - now}ms) Results:\n${blooks.map(([blook, amount]) => ` ${blook} ${amount - 1}`).join(`\n`)}`);389}390}).catch((e) => (alert('There was an error user data!'), console.info(e)));391}392},393{394name: "Simulate Pack",395description: "Simulate opening a pack",396inputs: [{397name: "Pack",398type: "options",399options: async () => {400return Array.from(document.querySelectorAll('[class*="packShadow"]')).map(x => x.alt);401}402}],403run: (function () {404try {405let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);406let values = Object.values(webpack.c),407blooks = values.find(x => x.exports?.a?.Chick?.set).exports.a,408packs = values.find(x => x.exports.a?.Breakfast).exports.a,409allBlooks = Object.entries(blooks).reduce((a, [b, c]) => (packs[c.realSet || c.set] && (a[b] = c), a), {});410let phaser = Object.values(webpack.c).find(x => x.exports?.Class).exports;411let scene = {};412class Particles extends phaser.Scene {413constructor(rarity) {414super();415this.rarity = rarity.toLowerCase();416}417preload() {418switch (this.rarity) {419case "uncommon":420this.load.svg("uncommon-1", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_green.svg", { width: 25, height: 25 });421this.load.svg("uncommon-2", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_light_green.svg", { width: 25, height: 25 });422this.load.svg("uncommon-3", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/circle_dark_green.svg", { width: 25, height: 25 });423this.load.svg("uncommon-4", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_dark_green.svg", { width: 30, height: 30 });424this.load.svg("uncommon-5", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_light_green.svg", { width: 30, height: 30 });425this.load.svg("uncommon-6", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_light_green.svg", { width: 30, height: 30 });426this.load.svg("uncommon-7", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_green.svg", { width: 30, height: 30 });427break;428case "rare":429this.load.svg("rare-1", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_light_blue.svg", { width: 25, height: 25 });430this.load.svg("rare-2", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_dark_blue.svg", { width: 25, height: 25 });431this.load.svg("rare-3", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_blue.svg", { width: 30, height: 30 });432this.load.svg("rare-4", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_blue.svg", { width: 30, height: 30 });433this.load.svg("rare-5", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_light_blue.svg", { width: 30, height: 30 });434this.load.svg("rare-6", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_light_blue.svg", { width: 30, height: 30 });435this.load.svg("rare-7", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/circle_dark_blue.svg", { width: 25, height: 25 });436break;437case "epic":438this.load.svg("epic-1", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/red.svg", { width: 25, height: 25 });439this.load.svg("epic-2", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/light_red.svg", { width: 25, height: 25 });440this.load.svg("epic-3", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_red.svg", { width: 30, height: 30 });441this.load.svg("epic-4", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_dark_red.svg", { width: 30, height: 30 });442this.load.svg("epic-5", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_red.svg", { width: 30, height: 30 });443this.load.svg("epic-6", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_light_red.svg", { width: 30, height: 30 });444this.load.svg("epic-7", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/circle_dark_red.svg", { width: 25, height: 25 });445break;446case "legendary":447this.load.svg("legendary-1", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_orange.svg", { width: 25, height: 25 });448this.load.svg("legendary-2", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_light_orange.svg", { width: 25, height: 25 });449this.load.svg("legendary-3", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_orange.svg", { width: 25, height: 25 });450this.load.svg("legendary-4", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_orange.svg", { width: 30, height: 30 });451this.load.svg("legendary-5", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_light_orange.svg", { width: 30, height: 30 });452this.load.svg("legendary-6", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_dark_orange.svg", { width: 25, height: 25 });453this.load.svg("legendary-7", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/triangle_dark_orange.svg", { width: 30, height: 30 });454break;455case "chroma":456this.load.svg("chroma-1", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_turquoise.svg", { width: 25, height: 25 });457this.load.svg("chroma-2", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_light_turquoise.svg", { width: 25, height: 25 });458this.load.svg("chroma-3", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_dark_turquoise.svg", { width: 30, height: 30 });459this.load.svg("chroma-4", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_turquoise.svg", { width: 30, height: 30 });460this.load.svg("chroma-5", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_turquoise.svg", { width: 30, height: 30 });461this.load.svg("chroma-6", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_light_turquoise.svg", { width: 30, height: 30 });462this.load.svg("chroma-7", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/circle_dark_turquoise.svg", { width: 25, height: 25 });463}464}465create() {466scene.scene = this;467scene.rarity = "";468scene.particles = this.physics.add.group({469classType: new phaser.Class({470Extends: phaser.GameObjects.Image,471initialize: function () {472phaser.GameObjects.Image.call(this, scene.scene, 0, 0, "uncommon-1");473this.setDepth(3);474this.lifespan = 0;475},476spawn: function (x, y, scale, velAngle, velSpeed, gravity, angle, lifespan, texture) {477this.setTexture(texture);478this.setActive(true);479this.setVisible(true);480this.setPosition(x, y);481this.setScale(scale);482this.targets = [];483scene.scene.physics.velocityFromAngle(velAngle, velSpeed, this.body.velocity);484this.body.setGravityY(gravity);485this.body.setAngularVelocity(angle);486this.lifespan = lifespan;487},488update: function (t, s) {489this.lifespan -= s;490if (this.lifespan > 0) return;491this.setActive(!1);492this.setVisible(!1);493}494}),495runChildUpdate: !0496});497this.nextParticle = 0;498this.numExplosions = 0;499this.game.events.on("start-particles", (t) => {500scene.rarity = t;501this.numExplosions = "Uncommon" === t ? 75 : "Rare" === t ? 100 : -1;502});503}504update(e, t) {505const I = webpack("74sb");506let Z = function (e) {507switch (e) {508case "center": {509var t = Object(I.l)(-115, -65);510return {511x: scene.scene.cameras.main.worldView.width / 2,512y: scene.scene.cameras.main.worldView.height / 2,513scale: Object(I.l)(.7, 1),514angle: t,515velocity: Object(I.l)(600, 750),516gravity: 700,517angVelocity: (t > -90 ? 1 : -1) * Object(I.l)(125, 175),518lifespan: 2500519}520}521case "right-bottom": return {522x: scene.scene.cameras.main.worldView.width,523y: scene.scene.cameras.main.worldView.height,524scale: Object(I.l)(.7, 1),525angle: Object(I.l)(-160, -110),526velocity: Object(I.l)(600, 750),527gravity: 500,528angVelocity: Object(I.l)(-175, -125),529lifespan: 2500530};531case "left-bottom": return {532x: 0,533y: scene.scene.cameras.main.worldView.height,534scale: Object(I.l)(.7, 1),535angle: Object(I.l)(-70, -20),536velocity: Object(I.l)(600, 750),537gravity: 500,538angVelocity: Object(I.l)(125, 175),539lifespan: 2500540};541case "top": return {542x: Object(I.l)(0, scene.scene.cameras.main.worldView.width),543y: -50,544scale: Object(I.l)(.7, 1),545angle: 90,546velocity: Object(I.l)(0, 50),547gravity: 700,548angVelocity: Object(I.l)(-150, 150),549lifespan: 2500550};551case "right-shower": return {552x: scene.scene.cameras.main.worldView.width,553y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),554scale: Object(I.l)(.7, 1),555angle: Object(I.l)(-180, -130),556velocity: Object(I.l)(600, 750),557gravity: 500,558angVelocity: Object(I.l)(-175, -125),559lifespan: 2500560};561case "left-shower": return {562x: 0,563y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),564scale: Object(I.l)(.7, 1),565angle: Object(I.l)(-50, 0),566velocity: Object(I.l)(600, 750),567gravity: 500,568angVelocity: Object(I.l)(125, 175),569lifespan: 2500570};571case "right-diamond": {572var a = Object(I.l)(0, scene.scene.cameras.main.worldView.height);573return {574x: scene.scene.cameras.main.worldView.width,575y: a,576scale: Object(I.l)(.7, 1),577angle: a > scene.scene.cameras.main.worldView.height / 2 ? -150 : -210,578velocity: Object(I.l)(600, 750),579gravity: 0,580angVelocity: Object(I.l)(-175, -125),581lifespan: 2500582}583}584case "left-diamond": {585var n = Object(I.l)(0, scene.scene.cameras.main.worldView.height);586return {587x: 0,588y: n,589scale: Object(I.l)(.7, 1),590angle: n > scene.scene.cameras.main.worldView.height / 2 ? -30 : 30,591velocity: Object(I.l)(600, 750),592gravity: 0,593angVelocity: Object(I.l)(125, 175),594lifespan: 2500595}596}597default: return {};598}599};600if (scene.rarity && 0 !== this.numExplosions && (this.nextParticle -= t, this.nextParticle <= 0)) {601switch (scene.rarity) {602case "Uncommon": {603for (let i = 0; i < 2; i++) {604let n = scene.particles.get();605n && n.spawn.apply(n, Object.values(Z("center")).concat(`uncommon-${Object(I.m)(1, 8)}`))606}607break;608}609case "Rare": {610for (var o = 0; o < 2; o++) {611var r = scene.particles.get();612r && r.spawn.apply(r, Object.values(Z(o % 2 == 0 ? "left-bottom" : "right-bottom")).concat(`rare-${Object(I.m)(1, 8)}`))613}614break;615}616case "Epic": {617for (var s = 0; s < 2; s++) {618var i = scene.particles.get();619i && i.spawn.apply(i, Object.values(Z(s % 2 == 0 ? "left-shower" : "right-shower")).concat(`epic-${Object(I.m)(1, 8)}`))620}621break;622}623case "Legendary": {624for (var l = 0; l < 3; l++) {625var c = scene.particles.get();626c && c.spawn.apply(c, Object.values(Z("top")).concat(`legendary-${Object(I.m)(1, 8)}`))627}628break;629}630case "Chroma": {631for (var u = 0; u < 3; u++) {632var d = scene.particles.get();633d && d.spawn.apply(d, Object.values(Z(u % 2 == 0 ? "left-diamond" : "right-diamond")).concat(`chroma-${Object(I.m)(1, 8)}`))634}635break;636}637}638this.nextParticle = 20;639this.numExplosions > 0 && (this.numExplosions = Math.max(this.numExplosions - 1, 0));640}641}642}643return function (box) {644if (window.location.pathname !== "/market") return alert("This must be ran on the market page");645let { 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;646let packs = webpack('fGzD');647packs = 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;648if (packs[box]) {649function weighted(pack) {650let weights = [];651const items = Object.keys(packs[pack]);652for (const key of items) weights.push(packs[pack][key] + (weights[items.indexOf(key) - 1] || 0));653const choice = weights[weights.length - 1] * Math.random();654return items[weights.findIndex(w => w >= choice)];655}656const blook = weighted(box);657const allBlooks = Object.values(webpack.c).find(x => x.exports?.a?.Elephant).exports.a;658stateNode.setState({659loadingPack: false,660openPack: true,661unlockedBlook: blook,662tokens: stateNode.state.tokens,663newUnlock: true,664game: {665type: phaser.WEBGL,666parent: "phaser-market",667width: "100%",668height: "100%",669scale: { mode: phaser.Scale.NONE, autoCenter: phaser.Scale.CENTER_BOTH },670transparent: true,671physics: { default: "arcade" },672scene: new Particles(allBlooks[blook].rarity)673},674canOpen: true675});676} else alert("I couldn't find that box!");677}678} catch { }679})()680},681{682name: "Simulate Unlock",683description: "Simulate unlocking most of the blooks",684inputs: [685{686name: "Blook",687type: "options",688options: () => {689try {690let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);691const cache = Object.values(webpack.c);692const packs = cache.find(x => typeof x.exports.a?.Breakfast == "number").exports.a;693return Object.entries(cache.find(x => x.exports.a?.Black).exports.a).reduce((a, [b, c]) => (packs[c.realSet || c.set] ? a.concat(b) : a), []);694} catch { return []; }695}696}697],698run: (function () {699try {700let { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);701let values = Object.values(webpack.c),702blooks = values.find(x => x.exports?.a?.Chick?.set).exports.a,703packs = values.find(x => x.exports.a?.Breakfast).exports.a,704allBlooks = Object.entries(blooks).reduce((a, [b, c]) => (packs[c.realSet || c.set] && (a[b] = c), a), {});705let phaser = Object.values(webpack.c).find(x => x.exports?.Class).exports;706let scene = {};707class Particles extends phaser.Scene {708constructor(rarity) {709super();710this.rarity = rarity.toLowerCase();711}712preload() {713switch (this.rarity) {714case "uncommon":715this.load.svg("uncommon-1", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_green.svg", { width: 25, height: 25 });716this.load.svg("uncommon-2", "https://media.blooket.com/image/upload/v1658567787/Media/market/particles/square_light_green.svg", { width: 25, height: 25 });717this.load.svg("uncommon-3", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/circle_dark_green.svg", { width: 25, height: 25 });718this.load.svg("uncommon-4", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_dark_green.svg", { width: 30, height: 30 });719this.load.svg("uncommon-5", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_light_green.svg", { width: 30, height: 30 });720this.load.svg("uncommon-6", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/serpentine_light_green.svg", { width: 30, height: 30 });721this.load.svg("uncommon-7", "https://media.blooket.com/image/upload/v1658567785/Media/market/particles/triangle_green.svg", { width: 30, height: 30 });722break;723case "rare":724this.load.svg("rare-1", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_light_blue.svg", { width: 25, height: 25 });725this.load.svg("rare-2", "https://media.blooket.com/image/upload/v1658567765/Media/market/particles/square_dark_blue.svg", { width: 25, height: 25 });726this.load.svg("rare-3", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_blue.svg", { width: 30, height: 30 });727this.load.svg("rare-4", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_blue.svg", { width: 30, height: 30 });728this.load.svg("rare-5", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/triangle_light_blue.svg", { width: 30, height: 30 });729this.load.svg("rare-6", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/serpentine_light_blue.svg", { width: 30, height: 30 });730this.load.svg("rare-7", "https://media.blooket.com/image/upload/v1658567763/Media/market/particles/circle_dark_blue.svg", { width: 25, height: 25 });731break;732case "epic":733this.load.svg("epic-1", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/red.svg", { width: 25, height: 25 });734this.load.svg("epic-2", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/light_red.svg", { width: 25, height: 25 });735this.load.svg("epic-3", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_red.svg", { width: 30, height: 30 });736this.load.svg("epic-4", "https://media.blooket.com/image/upload/v1658790239/Media/market/particles/serpentine_dark_red.svg", { width: 30, height: 30 });737this.load.svg("epic-5", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_red.svg", { width: 30, height: 30 });738this.load.svg("epic-6", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/triangle_light_red.svg", { width: 30, height: 30 });739this.load.svg("epic-7", "https://media.blooket.com/image/upload/v1658790237/Media/market/particles/circle_dark_red.svg", { width: 25, height: 25 });740break;741case "legendary":742this.load.svg("legendary-1", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_orange.svg", { width: 25, height: 25 });743this.load.svg("legendary-2", "https://media.blooket.com/image/upload/v1658567740/Media/market/particles/square_light_orange.svg", { width: 25, height: 25 });744this.load.svg("legendary-3", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_orange.svg", { width: 25, height: 25 });745this.load.svg("legendary-4", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_orange.svg", { width: 30, height: 30 });746this.load.svg("legendary-5", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/serpentine_light_orange.svg", { width: 30, height: 30 });747this.load.svg("legendary-6", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/circle_dark_orange.svg", { width: 25, height: 25 });748this.load.svg("legendary-7", "https://media.blooket.com/image/upload/v1658567738/Media/market/particles/triangle_dark_orange.svg", { width: 30, height: 30 });749break;750case "chroma":751this.load.svg("chroma-1", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_turquoise.svg", { width: 25, height: 25 });752this.load.svg("chroma-2", "https://media.blooket.com/image/upload/v1658790246/Media/market/particles/square_light_turquoise.svg", { width: 25, height: 25 });753this.load.svg("chroma-3", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_dark_turquoise.svg", { width: 30, height: 30 });754this.load.svg("chroma-4", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/serpentine_turquoise.svg", { width: 30, height: 30 });755this.load.svg("chroma-5", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_turquoise.svg", { width: 30, height: 30 });756this.load.svg("chroma-6", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/triangle_light_turquoise.svg", { width: 30, height: 30 });757this.load.svg("chroma-7", "https://media.blooket.com/image/upload/v1658790244/Media/market/particles/circle_dark_turquoise.svg", { width: 25, height: 25 });758}759}760create() {761scene.scene = this;762scene.rarity = "";763scene.particles = this.physics.add.group({764classType: new phaser.Class({765Extends: phaser.GameObjects.Image,766initialize: function () {767phaser.GameObjects.Image.call(this, scene.scene, 0, 0, "uncommon-1");768this.setDepth(3);769this.lifespan = 0;770},771spawn: function (x, y, scale, velAngle, velSpeed, gravity, angle, lifespan, texture) {772this.setTexture(texture);773this.setActive(true);774this.setVisible(true);775this.setPosition(x, y);776this.setScale(scale);777this.targets = [];778scene.scene.physics.velocityFromAngle(velAngle, velSpeed, this.body.velocity);779this.body.setGravityY(gravity);780this.body.setAngularVelocity(angle);781this.lifespan = lifespan;782},783update: function (t, s) {784this.lifespan -= s;785if (this.lifespan > 0) return;786this.setActive(!1);787this.setVisible(!1);788}789}),790runChildUpdate: !0791});792this.nextParticle = 0;793this.numExplosions = 0;794this.game.events.on("start-particles", (t) => {795scene.rarity = t;796this.numExplosions = "Uncommon" === t ? 75 : "Rare" === t ? 100 : -1;797});798}799update(e, t) {800const I = webpack("74sb");801let Z = function (e) {802switch (e) {803case "center": {804var t = Object(I.l)(-115, -65);805return {806x: scene.scene.cameras.main.worldView.width / 2,807y: scene.scene.cameras.main.worldView.height / 2,808scale: Object(I.l)(.7, 1),809angle: t,810velocity: Object(I.l)(600, 750),811gravity: 700,812angVelocity: (t > -90 ? 1 : -1) * Object(I.l)(125, 175),813lifespan: 2500814}815}816case "right-bottom": return {817x: scene.scene.cameras.main.worldView.width,818y: scene.scene.cameras.main.worldView.height,819scale: Object(I.l)(.7, 1),820angle: Object(I.l)(-160, -110),821velocity: Object(I.l)(600, 750),822gravity: 500,823angVelocity: Object(I.l)(-175, -125),824lifespan: 2500825};826case "left-bottom": return {827x: 0,828y: scene.scene.cameras.main.worldView.height,829scale: Object(I.l)(.7, 1),830angle: Object(I.l)(-70, -20),831velocity: Object(I.l)(600, 750),832gravity: 500,833angVelocity: Object(I.l)(125, 175),834lifespan: 2500835};836case "top": return {837x: Object(I.l)(0, scene.scene.cameras.main.worldView.width),838y: -50,839scale: Object(I.l)(.7, 1),840angle: 90,841velocity: Object(I.l)(0, 50),842gravity: 700,843angVelocity: Object(I.l)(-150, 150),844lifespan: 2500845};846case "right-shower": return {847x: scene.scene.cameras.main.worldView.width,848y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),849scale: Object(I.l)(.7, 1),850angle: Object(I.l)(-180, -130),851velocity: Object(I.l)(600, 750),852gravity: 500,853angVelocity: Object(I.l)(-175, -125),854lifespan: 2500855};856case "left-shower": return {857x: 0,858y: Object(I.l)(0, scene.scene.cameras.main.worldView.height),859scale: Object(I.l)(.7, 1),860angle: Object(I.l)(-50, 0),861velocity: Object(I.l)(600, 750),862gravity: 500,863angVelocity: Object(I.l)(125, 175),864lifespan: 2500865};866case "right-diamond": {867var a = Object(I.l)(0, scene.scene.cameras.main.worldView.height);868return {869x: scene.scene.cameras.main.worldView.width,870y: a,871scale: Object(I.l)(.7, 1),872angle: a > scene.scene.cameras.main.worldView.height / 2 ? -150 : -210,873velocity: Object(I.l)(600, 750),874gravity: 0,875angVelocity: Object(I.l)(-175, -125),876lifespan: 2500877}878}879case "left-diamond": {880var n = Object(I.l)(0, scene.scene.cameras.main.worldView.height);881return {882x: 0,883y: n,884scale: Object(I.l)(.7, 1),885angle: n > scene.scene.cameras.main.worldView.height / 2 ? -30 : 30,886velocity: Object(I.l)(600, 750),887gravity: 0,888angVelocity: Object(I.l)(125, 175),889lifespan: 2500890}891}892default: return {};893}894};895if (scene.rarity && 0 !== this.numExplosions && (this.nextParticle -= t, this.nextParticle <= 0)) {896switch (scene.rarity) {897case "Uncommon": {898for (let i = 0; i < 2; i++) {899let n = scene.particles.get();900n && n.spawn.apply(n, Object.values(Z("center")).concat(`uncommon-${Object(I.m)(1, 8)}`))901}902break;903}904case "Rare": {905for (var o = 0; o < 2; o++) {906var r = scene.particles.get();907r && r.spawn.apply(r, Object.values(Z(o % 2 == 0 ? "left-bottom" : "right-bottom")).concat(`rare-${Object(I.m)(1, 8)}`))908}909break;910}911case "Epic": {912for (var s = 0; s < 2; s++) {913var i = scene.particles.get();914i && i.spawn.apply(i, Object.values(Z(s % 2 == 0 ? "left-shower" : "right-shower")).concat(`epic-${Object(I.m)(1, 8)}`))915}916break;917}918case "Legendary": {919for (var l = 0; l < 3; l++) {920var c = scene.particles.get();921c && c.spawn.apply(c, Object.values(Z("top")).concat(`legendary-${Object(I.m)(1, 8)}`))922}923break;924}925case "Chroma": {926for (var u = 0; u < 3; u++) {927var d = scene.particles.get();928d && d.spawn.apply(d, Object.values(Z(u % 2 == 0 ? "left-diamond" : "right-diamond")).concat(`chroma-${Object(I.m)(1, 8)}`))929}930break;931}932}933this.nextParticle = 20;934this.numExplosions > 0 && (this.numExplosions = Math.max(this.numExplosions - 1, 0));935}936}937}938return function (blook) {939let i = document.createElement('iframe');940document.body.append(i);941window.alert = i.contentWindow.alert.bind(window);942window.prompt = i.contentWindow.prompt.bind(window);943i.remove();944if (window.location.pathname == "/market") {945let { 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;946stateNode.setState({947loadingPack: false,948openPack: true,949unlockedBlook: blook,950newUnlock: true,951game: {952type: phaser.WEBGL,953parent: "phaser-market",954width: "100%",955height: "100%",956scale: {957mode: phaser.Scale.NONE,958autoCenter: phaser.Scale.CENTER_BOTH959},960transparent: true,961physics: {962default: "arcade"963},964scene: new Particles(allBlooks[blook].rarity)965},966canOpen: true967});968} else alert("This can only be ran on the market page!");969}970} catch { }971})()972}973],974},975voyage: {976name: "Pirate's Voyage",977img: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxnIGlkPSJCb2F0Ij48cGF0aCBkPSJNMTcwLjQsNTYuMDU0Yy02OC43ODgsMTAuMTc0IC0xMTUuOTcxLDU2LjkzOCAtMTQ1LjQxMSwxMzMuNzVsMTUuNDY5LDcuNzM0YzMwLjk2MiwtMjguMTc1IDc0LjcwNSwtMzcuNzg3IDEzMi4zMjIsLTI3LjI1bDAsLTE3LjYxMWMtMjUuNjI5LC0yNy45NTIgLTI2Ljk2NiwtNTYuNzcyIDAuNzE0LC04Ni42MjhsLTMuMDk0LC05Ljk5NVoiIHN0eWxlPSJmaWxsOiNmNmUwYmQ7Ii8+PHBhdGggZD0iTTE5OS42NzMsNjAuODEzYzMyLjc4NCw0Mi45ODIgNjUuODIyLDkwLjg4NyA5Ny4zMzcsMTM5LjU4MWwtNi42NjMsMGMtMTIuMDg1LC0zMS4xMTEgLTU3Ljg4MiwtMzkuNjk0IC05MS42MjYsLTI3LjI1YzIyLjUxNCwtMzQuNTc5IDE3Ljc5NiwtNzIuNjczIDAuOTUyLC0xMTIuMzMxWiIgc3R5bGU9ImZpbGw6I2Y2ZTBiZDsiLz48cGF0aCBkPSJNNjkuNDQ4LDE5Ny41MzhjMCwwIC01OS43MDcsLTE1LjI0MyAtNjguMzk4LC0xNy40NjJjLTAuMDc2LC0wLjAxOSAtMC4xNTQsMC4wMiAtMC4xODQsMC4wOTJjLTAuMDMsMC4wNzIgLTAuMDAyLDAuMTU1IDAuMDY1LDAuMTk1YzkuNjgyLDUuNzc1IDkxLjY0Nyw1NC42NTggOTEuNjQ3LDU0LjY1OGwtMjMuMTMsLTM3LjQ4M1oiIHN0eWxlPSJmaWxsOiM4ZDZlNDE7Ii8+PHBhdGggZD0iTTE2NC40NSw0Ny45MDNjMCwtNS4zNTMgNC4zNDYsLTkuNjk4IDkuNjk4LC05LjY5OGwxOS4zOTcsLTBjNS4zNTIsLTAgOS42OTgsNC4zNDUgOS42OTgsOS42OThsLTAsMTU2Ljk1M2MtMCw1LjM1MyAtNC4zNDYsOS42OTggLTkuNjk4LDkuNjk4bC0xOS4zOTcsMGMtNS4zNTIsMCAtOS42OTgsLTQuMzQ1IC05LjY5OCwtOS42OThsMCwtMTU2Ljk1M1oiIHN0eWxlPSJmaWxsOiM3ZjY4NDU7Ii8+PHBhdGggZD0iTTI2My45OTMsMjU2LjEwM2MyMi4xNzEsLTE0LjcxIDM2LjAwNywtMzUuNTE1IDM2LjAwNywtNTguNTY1bC0yMzAuNTUyLDBjMCwyMy43MTMgMTQuNjQzLDQ1LjA1IDM3Ljk0LDU5LjgxOWM5Ljg3NSwtMy43MjkgMjAuMDQxLC0xMS4zMzQgMzAuNDYzLC0yMi4zMzZjMzIuODExLDM1LjQ1NSA2NC4wNjksMzUuOTQzIDkzLjcwOCwwYzYuODM4LDkuNjc3IDE3LjczNiwxNi42NDYgMzIuNDM0LDIxLjA4MloiIHN0eWxlPSJmaWxsOiNiNjkyNWY7Ii8+PC9nPjwvc3ZnPg==",978cheats: [979{980name: "Max Levels",981description: "Maxes out all islands and your boat",982run: function () {983let { 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;984stateNode.setState({ islandLevels: new Array(stateNode.state.islandLevels.length).fill(5) }, stateNode.updateBoatLevel);985}986},987{988name: "Set Doubloons",989description: "Sets Doubloons",990inputs: [{991name: "Amount",992type: "number"993}],994run: function (doubloons) {995let i = document.createElement('iframe');996document.body.append(i);997window.prompt = i.contentWindow.prompt.bind(window);998i.remove();999let { 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;1000stateNode.setState({ doubloons });1001stateNode.props.liveGameController.setVal({1002path: `c/${stateNode.props.client.name}/d`,1003val: doubloons1004});1005}1006},1007{1008name: "Start Heist",1009description: "Starts a heist on someone",1010inputs: [{1011name: "Player",1012type: "options",1013options: () => {1014let { 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;1015return new Promise(res => stateNode.props.liveGameController._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));1016}1017}],1018run: function (target) {1019let i = document.createElement('iframe');1020document.body.append(i);1021window.prompt = i.contentWindow.prompt.bind(window);1022i.remove();1023let { 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;10241025stateNode.props.liveGameController.getDatabaseVal("c", function (val) {1026const players = Object.entries(val || {}).reduce((a, [name, c]) => (name == stateNode.props.client.name && a.push({ name, blook: c.b, doubloons: c.d || 0 }), a), []);1027if (players.length === 0) {1028stateNode.questionsToAnswer = 1;1029return void stateNode.randomQ();1030}1031const { name, blook, doubloons } = players.find(x => x.name == target) || players.sort((a, b) => b.doubloons - a.doubloons)[0];1032stateNode.setState({1033stage: "heist",1034heistInfo: { name, blook },1035prizeAmount: Math.max(1000, doubloons)1036});1037});1038}1039},1040{1041name: "Swap Doubloons",1042description: "Swaps Doubloons with someone",1043inputs: [{1044name: "Player",1045type: "options",1046options: () => {1047let { 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;1048return new Promise(res => stateNode.props.liveGameController._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));1049}1050}],1051run: async function (player) {1052let i = document.createElement('iframe');1053document.body.append(i);1054window.prompt = i.contentWindow.prompt.bind(window);1055i.remove();1056let { 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;1057let 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),1058target = players.find(x => x[0] == player) || players[0];1059stateNode.props.liveGameController.setVal({1060path: `c/${stateNode.props.client.name}`,1061val: {1062b: stateNode.props.client.blook,1063d: target[1].d,1064tat: `${target[0]}:${target[1].d - stateNode.state.doubloons}`1065}1066});1067stateNode.setState({ doubloons: target[1].d });1068}1069},1070{1071name: "Take Doubloons",1072description: "Takes Doubloons from someone",1073inputs: [{1074name: "Player",1075type: "options",1076options: () => {1077let { 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;1078return new Promise(res => stateNode.props.liveGameController._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));1079}1080}],1081run: async function (player) {1082let i = document.createElement('iframe');1083document.body.append(i);1084window.prompt = i.contentWindow.prompt.bind(window);1085i.remove();1086let { 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;1087let 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),1088target = players.find(x => x[0] == player) || players[0];1089stateNode.setState({ doubloons: stateNode.state.doubloons + target[1].d });1090stateNode.props.liveGameController.setVal({1091path: `c/${stateNode.props.client.name}`,1092val: {1093b: stateNode.props.client.blook,1094d: target[1].d,1095tat: `${target[0]}:${target[1].d}`1096}1097});1098}1099}1100],1101},1102brawl: {1103name: "Monster Brawl",1104img: "https://media.blooket.com/image/upload/v1655233787/Media/survivor/xp/Blue_xp_2.svg",1105cheats: [1106{1107name: "Double Enemy XP",1108description: "Doubles enemy XP drop value",1109run: function () {1110for (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'))) {1111const enemies = collider.object2;1112let _start = enemies.classType.prototype.start;1113enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.val *= 2 }1114enemies.children.entries.forEach(e => e.val *= 2);1115}1116}1117},1118{1119name: "Half Enemy Speed",1120description: "Makes enemies move 2x slower",1121run: function () {1122for (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'))) {1123const enemies = collider.object2;1124let _start = enemies.classType.prototype.start;1125enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.speed *= .5 }1126enemies.children.entries.forEach(e => e.speed *= .5);1127}1128}1129},1130{1131name: "Instant Kill",1132description: "Sets all enemies health to 1",1133run: function () {1134for (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'))) {1135const enemies = collider.object2;1136let _start = enemies.classType.prototype.start;1137enemies.classType.prototype.start = function () { _start.apply(this, arguments), this.hp = 1 }1138enemies.children.entries.forEach(e => e.hp = 1);1139}1140}1141},1142{1143name: "Invincibility",1144description: "Makes you invincible",1145run: function () {1146for (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 = () => { };1147}1148},1149{1150name: "Magnet",1151description: "Pulls all xp towards you",1152run: function () {1153Object.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() { } });1154}1155},1156{1157name: "Max Current Abilities",1158description: "Maxes out all your current abilities",1159run: function () {1160const { 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;1161for (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]++);1162stateNode.setState({1163level: 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] - 11164});1165}1166},1167{1168name: "Next Level",1169description: "Skips to the next level",1170run: function () {1171let { 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;1172let { object1: player, object2: xp } = stateNode.state.game.scene.physics.world.colliders._active.find(x => x.collideCallback?.toString().includes('emit("xp"'));1173xp.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);1174}1175},1176{1177name: "Remove Obstacles",1178description: "Removes all rocks and obstacles",1179run: function () {1180Object.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 => {1181try {1182if (body.gameObject.frame.texture.key.includes("obstacle")) body.gameObject.destroy();1183} catch { }1184});1185}1186},1187{1188name: "Kill Enemies",1189description: "Kills all current enemies",1190run: function () {1191Object.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));1192}1193},1194{1195name: "Reset Health",1196description: "Resets health and gives invincibility for 3 seconds",1197run: function () {1198Object.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();1199}1200}1201],1202},1203cafe: {1204name: "Caf\xe9",1205img: "https://media.blooket.com/image/upload/v1655161189/Media/survivor/Pizza_lvl1.svg",1206style: { transform: "rotate(22.5deg)" },1207cheats: [1208{1209name: "Max Items",1210description: "Maxes out items in the shop (Only usable in the shop)",1211run: function () {1212let i = document.createElement('iframe');1213document.body.append(i);1214window.alert = i.contentWindow.alert.bind(window);1215i.remove();1216if (window.location.pathname !== "/cafe/shop") alert("This can only be run in the shop");1217else {1218const { 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;1219stateNode.setState({ items: Object.fromEntries(Object.entries(stateNode.state.items).map(x => [x[0], 5])) });1220}1221}1222},1223{1224name: "Remove Customers",1225description: "Skips the current customers (Not usable in the shop)",1226run: function () {1227const { 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;1228stateNode.state.customers.forEach((customer, i) => Object.keys(customer).length && stateNode.removeCustomer(i, true));1229}1230},1231{1232name: "Reset Abilities",1233description: "Resets used abilities in shop (Only usable in the shop)",1234run: function () {1235let i = document.createElement('iframe');1236document.body.append(i);1237window.alert = i.contentWindow.alert.bind(window);1238i.remove();1239if (window.location.pathname !== "/cafe/shop") alert("This can only be run in the shop");1240else {1241const { 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;1242stateNode.setState({ abilities: Object.fromEntries(Object.entries(stateNode.state.abilities).map(x => [x[0], 5])) });1243}1244}1245},1246{1247name: "Set Cash",1248description: "Sets cafe cash",1249inputs: [{1250name: "Amount",1251type: "number"1252}],1253run: function (cafeCash) {1254let { 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;1255stateNode.setState({ cafeCash });1256stateNode.props.liveGameController.setVal({1257path: `c/${stateNode.props.client.name}`,1258val: {1259b: stateNode.props.client.blook,1260ca: cafeCash1261}1262});1263}1264},1265{1266name: "Stock Food",1267description: "Stocks all food to 99 (Not usable in the shop)",1268run: function () {1269let i = document.createElement('iframe');1270document.body.append(i);1271window.alert = i.contentWindow.alert.bind(window);1272i.remove();1273if (window.location.pathname !== "/cafe") alert("This can't be run in the shop");1274else {1275const { 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;1276stateNode.setState({ foods: stateNode.state.foods.map(e => ({ ...e, stock: 99, level: 5 })) });1277}1278}1279}1280],1281},1282crypto: {1283name: "Crypto Hack",1284img: "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/CryptoIcon.svg",1285cheats: [1286{1287name: "Choice ESP",1288description: "Shows what each choice will give you",1289type: "toggle",1290enabled: false,1291data: null,1292run: function () {1293if (!this.enabled) {1294this.enabled = true;1295this.data = setInterval(() => {1296let { 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;1297let { text } = stateNode.state.choices[0];1298let chest = document.querySelector('[class^=styles__feedbackContainer___]');1299if (chest.children.length <= 4) {1300let choice = document.createElement('div');1301choice.style.color = "white";1302choice.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif";1303choice.style.fontSize = "2em";1304choice.style.display = "flex";1305choice.style.justifyContent = "center";1306choice.style.marginTop = "675px";1307choice.innerText = text;1308chest.append(choice);1309}1310}, 50);1311} else {1312this.enabled = false;1313clearInterval(this.data);1314this.data = null;1315}1316}1317},1318{1319name: "Password ESP",1320description: "Highlights the correct password",1321type: "toggle",1322enabled: false,1323data: null,1324run: function () {1325if (!this.enabled) {1326this.enabled = true;1327this.data = setInterval(() => {1328let { 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;1329if (state.stage == "hack") [...document.querySelector('div[class^=styles__buttonContainer]').children].forEach(button => {1330if (button.innerText == state.correctPassword) return;1331button.style.outlineColor = "rgba(255, 64, 64, 0.8)";1332button.style.backgroundColor = "rgba(255, 64, 64, 0.8)";1333button.style.textShadow = "0 0 1px #f33";1334});1335}, 50);1336} else {1337this.enabled = false;1338clearInterval(this.data);1339this.data = null;1340}1341}1342},1343{1344name: "Always Triple",1345description: "Always get triple crypto",1346type: "toggle",1347enabled: false,1348data: null,1349run: function () {1350if (!this.enabled) {1351this.enabled = true;1352this.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);1353} else {1354this.enabled = false;1355clearInterval(this.data);1356this.data = null;1357}1358}1359},1360{1361name: "Auto Guess",1362description: "Automatically guess the correct password",1363type: "toggle",1364enabled: false,1365data: null,1366run: function () {1367if (!this.enabled) {1368this.enabled = true;1369this.data = setInterval(() => {1370let { 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;1371if (state.stage == "hack") for (const button of document.querySelector('div[class^=styles__buttonContainer]').children) button.innerText == state.correctPassword && button.click();1372}, 50);1373} else {1374this.enabled = false;1375clearInterval(this.data);1376this.data = null;1377}1378}1379},1380{1381name: "Remove Hack",1382description: "Removes an attacking hack",1383run: function () {1384Object.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: "" });1385}1386},1387{1388name: "Set Crypto",1389description: "Sets crypto",1390inputs: [{1391name: "Amount",1392type: "number"1393}],1394run: function (amount) {1395let { 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;1396stateNode.setState({ crypto: amount, crypto2: amount });1397stateNode.props.liveGameController.setVal({1398path: "c/".concat(stateNode.props.client.name),1399val: {1400b: stateNode.props.client.blook,1401p: stateNode.state.password,1402cr: amount1403}1404});1405}1406},1407{1408name: "Set Password",1409description: "Sets hacking password",1410inputs: [{1411name: "Custom Password",1412type: "string"1413}],1414run: function (password) {1415let { 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;1416stateNode.setState({ password });1417stateNode.props.liveGameController.setVal({1418path: "c/".concat(stateNode.props.client.name),1419val: {1420b: stateNode.props.client.blook,1421p: password,1422cr: stateNode.state.crypto1423}1424});1425}1426},1427{1428name: "Steal Player's Crypto",1429description: "Steals all of someone's crypto",1430inputs: [{1431name: "Player",1432type: "options",1433options: () => {1434let { 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;1435return new Promise(res => stateNode.props.liveGameController?._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));1436}1437}],1438run: function (target) {1439let { 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;1440stateNode.props.liveGameController.getDatabaseVal("c", (players) => {1441if (players && Object.keys(players).map(x => x.toLowerCase()).includes(target.toLowerCase())) {1442let [player, { cr }] = Object.entries(players).find(([name]) => name.toLowerCase() == target.toLowerCase());1443stateNode.setState({ crypto: stateNode.state.crypto + cr, crypto2: stateNode.state.crypto + cr });1444stateNode.props.liveGameController.setVal({1445path: "c/".concat(stateNode.props.client.name),1446val: {1447b: stateNode.props.client.blook,1448p: stateNode.state.password,1449cr: stateNode.state.crypto + cr,1450tat: `${player}:${cr}`1451}1452});1453}1454});1455}1456}1457],1458},1459defense: {1460name: "Tower Defense",1461img: "https://media.blooket.com/image/upload/v1657235025/Media/survivor/Laser_Lvl1.svg",1462cheats: [1463{1464name: "Earthquake",1465description: "Shuffles around towers",1466run: function () {1467let { 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;1468stateNode.setState({1469eventName: "Earthquake",1470event: {1471short: "e",1472color: "#805500",1473icon: "fas fa-mountain",1474desc: "All of your towers get mixed up",1475rate: .021476},1477buyTowerName: "",1478buyTower: {}1479}, () => stateNode.eventTimeout = setTimeout(() => stateNode.setState({ event: {}, eventName: "" }), 6e3));1480stateNode.tiles.forEach(row => row.forEach((col, i) => col === 3 && (row[i] = 0)));1481let tiles = stateNode.tiles.flatMap((_, y) => _.map((__, x) => __ === 0 && ({ x, y }))).filter(Boolean).sort(() => .5 - Math.random());1482stateNode.towers.forEach(tower => {1483let { x, y } = tiles.shift();1484tower.move(x, y, stateNode.tileSize);1485stateNode.tiles[y][x] = 3;1486});1487}1488},1489{1490name: "Max Tower Stats",1491description: "Makes all placed towers overpowered",1492run: function () {1493let { 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;1494stateNode.towers.forEach(tower => {1495tower.range = 100;1496tower.fullCd = tower.cd = 0;1497tower.damage = 1e6;1498});1499}1500},1501{1502name: "Remove Ducks",1503description: "Removes ducks",1504run: function () {1505let { 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;1506ducks.forEach(x => { tiles[x.y][x.x] = 0; });1507ducks.length = 0;1508}1509},1510{1511name: "Remove Enemies",1512description: "Removes all the enemies",1513run: function () {1514let { 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;1515stateNode.enemies = stateNode.futureEnemies = [];1516}1517},1518{1519name: "Remove Obstacles",1520description: "Lets you place towers anywhere",1521run: function () {1522let { 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;1523stateNode.tiles = stateNode.tiles.map(row => row.fill(0));1524}1525},1526{1527name: "Set Damage",1528description: "Sets damage",1529inputs: [{1530name: "Damage",1531type: "number"1532}],1533run: function (dmg) {1534Object.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 = dmg;1535}1536},1537{1538name: "Set Round",1539description: "Sets the current round",1540inputs: [{1541name: "Round",1542type: "number"1543}],1544run: function (round) {1545Object.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 });1546}1547},1548{1549name: "Set Tokens",1550description: "Sets the amount of tokens you have",1551inputs: [{1552name: "Tokens",1553type: "number"1554}],1555run: function (tokens) {1556Object.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 });1557}1558}1559],1560},1561defense2: {1562name: "Tower Defense 2",1563img: "https://media.blooket.com/image/upload/v1593095354/Media/defense/missile.svg",1564style: { transform: "rotate(45deg)" },1565cheats: [1566{1567name: "Max Tower Stats",1568description: "Makes all placed towers overpowered",1569run: function () {1570Object.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 => {1571tower.stats.dmg = 1e6;1572tower.stats.fireRate = 50;1573tower.stats.ghostDetect = true;1574tower.stats.maxTargets = 1e6;1575tower.stats.numProjectiles &&= 100;1576tower.stats.range = 100;1577if (tower.stats.auraBuffs) for (const buff in tower.stats.auraBuffs) tower.stats.auraBuffs[buff] *= 100;1578});1579}1580},1581{1582name: "Kill Enemies",1583description: "Kills all the enemies",1584run: function () {1585let { 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;1586stateNode.state.game.scene.enemyQueue.length = 0;1587stateNode.state.game.scene.physics.world.bodies.entries.forEach(x => x?.gameObject?.receiveDamage?.(x.gameObject.hp, 1));1588}1589},1590{1591name: "Set Coins",1592description: "Sets coins",1593inputs: [{1594name: "Coins",1595type: "number"1596}],1597run: function (coins) {1598Object.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 });1599}1600},1601{1602name: "Set Health",1603description: "Sets the amount of health you have",1604inputs: [{1605name: "Health",1606type: "number"1607}],1608run: function (health) {1609Object.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 });1610}1611},1612{1613name: "Set Round",1614description: "Sets the current round",1615inputs: [{1616name: "Round",1617type: "number"1618}],1619run: function (round) {1620Object.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 });1621}1622},1623],1624},1625dinos: {1626name: "Deceptive Dinos",1627img: "https://media.blooket.com/image/upload/v1655161325/Media/survivor/Dog.svg",1628style: { transform: "rotate(-22.5deg)" },1629cheats: [1630{1631name: "Auto Choose",1632description: "Automatically choose the best fossil when excavating",1633type: "toggle",1634enabled: false,1635data: null,1636run: function () {1637if (!this.enabled) {1638this.enabled = true;1639this.data = setInterval(() => {1640const { webpack } = webpackJsonp.push([[], { ['1234']: (_, a, b) => { a.webpack = b }, }, [['1234']]]);1641const getFossils = (() => { /* this is for when ben does funny webpack update stuff */1642const func = Object.values(webpack('74sb')).find(x => x.toString().includes('rate'));1643return () => 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);1644})();1645try {1646let { 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;1647if (stateNode.state.stage === "excavate") {1648stateNode.state.choices.length || (stateNode.state.choices = getFossils());1649let max = 0, index = -1;1650for (let i = 0; i < stateNode.state.choices.length; i++) {1651const { type, val } = stateNode.state.choices[i];1652const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;1653if (value <= max && type != "mult") continue;1654max = value, index = i + 1;1655}1656document.querySelector('div[class^="styles__rockRow"] > div[role="button"]:nth-child(' + index + ')').click();1657}1658} catch { }1659}, 50);1660} else {1661this.enabled = false;1662clearInterval(this.data);1663this.data = null;1664}1665}1666},1667{1668name: "Rock ESP",1669description: "Shows what is under the rocks",1670type: "toggle",1671enabled: false,1672data: ((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}`) }) } })), null),1673run: function () {1674if (!this.enabled) {1675this.enabled = true;1676this.data = setInterval(() => {1677let { 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;1678const rocks = [...document.querySelector('[class*="rockButton"]').parentElement.children];1679if (!rocks.every(element => element.querySelector('div'))) stateNode.setState({1680choices: [{ 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)1681}, () => {1682rocks.forEach((element, index) => {1683const rock = stateNode.state.choices[index];1684if (element.querySelector('div')) element.querySelector('div').remove();1685const choice = document.createElement("div");1686choice.style.color = "white";1687choice.style.fontFamily = "Macondo";1688choice.style.fontSize = "1em";1689choice.style.display = "flex";1690choice.style.justifyContent = "center";1691choice.style.transform = "translateY(25px)";1692choice.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`;;1693element.append(choice);1694});1695});1696}, 50);1697} else {1698this.enabled = false;1699clearInterval(this.data);1700this.data = null;1701}1702}1703},1704{1705name: "Set Fossils",1706description: "Sets the amount of fossils you have",1707inputs: [{1708name: "Fossils",1709type: "number"1710}],1711run: function (fossils) {1712let { 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;1713stateNode.setState({ fossils });1714stateNode.props.liveGameController.setVal({1715path: `c/${stateNode.props.client.name}`,1716val: {1717b: stateNode.props.client.blook,1718f: fossils,1719ic: stateNode.state.isCheating1720}1721});1722}1723},1724{1725name: "Set Multiplier",1726description: "Sets fossil multiplier",1727inputs: [{1728name: "Multiplier",1729type: "number"1730}],1731run: function (fossilMult) {1732let { 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;1733stateNode.setState({ fossilMult });1734}1735},1736{1737name: "Stop Cheating",1738description: "Undoes cheating so that you can't be caught",1739run: function () {1740let { 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;1741stateNode.setState({ isCheating: false });1742stateNode.props.liveGameController.setVal({1743path: `c/${stateNode.props.client.name}/ic`,1744val: false1745});1746}1747}1748],1749},1750doom: {1751name: "Tower of Doom",1752img: "https://media.blooket.com/image/upload/v1657235023/Media/survivor/cards-05.svg",1753cheats: [1754{1755name: "Fill Deck",1756description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",1757run: function () {1758let i = document.createElement('iframe');1759document.body.append(i);1760window.alert = i.contentWindow.alert.bind(window);1761i.remove();1762if (window.location.pathname == "/tower/map") {1763const { a: artifacts, c: allCards } = webpackJsonp.push([[], { ['']: (_, a, b) => { a.cache = b.c }, }, [['']],]).cache["gvfT"].exports;1764const { 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;1765stateNode.props.tower.artifacts = Object.keys(artifacts);1766stateNode.props.tower.cards = Object.entries(allCards).map(([blook, card]) => ({ ...card, blook, strength: 20, charisma: 20, wisdom: 20 }));1767try { stateNode.props.addTowerNode(); } catch { };1768stateNode.setState({ showDeck: false });1769} else alert("You need to be on the map to run this cheat!");1770}1771},1772{1773name: "Max Cards",1774description: "Maxes out all the cards in your deck",1775run: function () {1776let i = document.createElement('iframe');1777document.body.append(i);1778window.alert = i.contentWindow.alert.bind(window);1779i.remove();1780if (window.location.pathname == "/tower/map") {1781const { 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;1782stateNode.props.tower.cards.forEach(card => {1783card.strength = 20;1784card.charisma = 20;1785card.wisdom = 20;1786});1787} else alert("You need to be on the map to run this cheat!");1788}1789},1790{1791name: "Max Health",1792description: "Fills the player's health",1793run: function () {1794let i = document.createElement('iframe');1795document.body.append(i);1796window.alert = i.contentWindow.alert.bind(window);1797i.remove();1798if (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 });1799else alert("You need to be in battle to run this cheat!");1800}1801},1802{1803name: "Max Card Stats",1804description: "Maxes out player's current card (Only works on attribute select page)",1805run: function () {1806let i = document.createElement('iframe');1807document.body.append(i);1808window.alert = i.contentWindow.alert.bind(window);1809i.remove();1810const { 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;1811if (stateNode.state.phase !== 'select') alert('You must be on the attribute selection page!');1812else stateNode.setState({ myCard: { ...stateNode.state.myCard, strength: 20, charisma: 20, wisdom: 20 } });1813}1814},1815{1816name: "Min Enemy Stats",1817description: "Makes the enemy card stats all 0 (Only works on attribute select page)",1818run: function () {1819let i = document.createElement('iframe');1820document.body.append(i);1821window.alert = i.contentWindow.alert.bind(window);1822i.remove();1823const { 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;1824if (stateNode.state.phase !== 'select') alert('You must be on the attribute selection page!');1825else stateNode.setState({ enemyCard: { ...stateNode.state.enemyCard, strength: 0, charisma: 0, wisdom: 0 } });1826}1827},1828{1829name: "Set Coins",1830description: "Try's to set amount of tower coins you have",1831inputs: [{1832name: "Coins",1833type: "number"1834}],1835run: function (coins) {1836let i = document.createElement('iframe');1837document.body.append(i);1838window.alert = i.contentWindow.prompt.bind(window);1839i.remove();1840if (window.location.pathname == "/tower/battle") {1841let coins = parseInt("0" + alert("How many coins would you like?"));1842let { 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;1843try { stateNode.props.setTowerCoins(coins); } catch { };1844} else alert("You need to be in battle to run this cheat!");1845}1846}1847],1848},1849factory: {1850name: "Factory",1851img: "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/Factory_Upgrades.svg",1852cheats: [1853{1854name: "Choose Blook",1855description: "Gives you a blook",1856inputs: [{1857name: "Blook",1858type: "options",1859options: [{ 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] }].map(x => ({ name: x.name, value: JSON.stringify(x) }))1860}],1861run: function (blook) {1862let i = document.createElement('iframe');1863document.body.append(i);1864window.alert = i.contentWindow.alert.bind(window);1865i.remove();1866const { 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;1867if (stateNode.state.blooks.length >= 10) alert("Choose a blook to replace");1868stateNode.chooseBlook(JSON.parse(blook));1869}1870},1871{1872name: "Free Upgrades",1873description: "Sets upgrade prices to 0 for all current blooks",1874run: function () {1875let { 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;1876stateNode.setState(state => ({ ...state, blooks: state.blooks.map(blook => ({ ...blook, price: [0, 0, 0, 0] })) }));1877}1878},1879{1880name: "Max Blooks",1881description: "Maxes out all your blooks' levels",1882run: function () {1883Object.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);1884}1885},1886{1887name: "Remove Glitches",1888description: "Removes all enemy glitches",1889run: function () {1890let { 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;1891stateNode.setState({1892bits: 0,1893ads: [],1894hazards: [],1895color: "",1896lol: false,1897joke: false,1898slow: false,1899dance: false,1900glitch: "",1901glitcherName: "",1902glitcherBlook: ""1903});1904clearTimeout(stateNode.adTimeout);1905clearInterval(stateNode.hazardInterval);1906clearTimeout(stateNode.nightTimeout);1907clearTimeout(stateNode.glitchTimeout);1908clearTimeout(stateNode.lolTimeout);1909clearTimeout(stateNode.jokeTimeout);1910clearTimeout(stateNode.slowTimeout);1911clearTimeout(stateNode.danceTimeout);1912clearTimeout(stateNode.nameTimeout);1913}1914},1915{1916name: "Send Glitch",1917description: "Sends a glitch to everyone else playing",1918inputs: [{1919name: "Glitch",1920type: "options",1921options: Object.entries({ 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" }).map(([value, name]) => ({ name, value }))1922}],1923run: function (val) {1924let { 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;1925stateNode.safe = true;1926stateNode.props.liveGameController.setVal({ path: `c/${stateNode.props.client.name}/tat`, val });1927}1928},1929{1930name: "Set All MegaBot",1931description: "Sets all your blooks to maxed out Mega Bots",1932run: function () {1933Object.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({1934blooks: new Array(10).fill({1935name: "Mega Bot",1936color: "#d71f27",1937class: "🤖",1938rarity: "Legendary",1939cash: [8e4, 43e4, 42e5, 62e6, 1e9],1940time: [5, 5, 3, 3, 3],1941price: [7e6, 12e7, 19e8, 35e9],1942active: false,1943level: 4,1944bonus: 5.51945})1946});1947}1948},1949{1950name: "Set Cash",1951description: "Sets amount of cash you have",1952inputs: [{1953name: "Cash",1954type: "number"1955}],1956run: function (cash) {1957Object.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({ cash });1958}1959}1960],1961},1962fishing: {1963name: "Fishing Frenzy",1964img: "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Fish_Weight.svg",1965cheats: [1966{1967name: "Frenzy",1968description: "Sets everyone to frenzy mode",1969run: function () {1970let { 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;1971stateNode.props.liveGameController.setVal({1972path: `c/${stateNode.props.client.name}`,1973val: {1974b: stateNode.props.client.blook,1975w: stateNode.state.weight,1976f: "Frenzy",1977s: true1978}1979});1980}1981},1982{1983name: "Remove Distractions",1984description: "Removes distractions",1985type: "toggle",1986enabled: false,1987data: null,1988run: function () {1989if (!this.enabled) {1990this.enabled = true;1991this.data = setInterval(() => {1992Object.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: "" });1993}, 50);1994} else {1995this.enabled = false;1996clearInterval(this.data);1997this.data = null;1998}1999}2000},2001{2002name: "Send Distraction",2003description: "Sends a distraction to everyone",2004inputs: [{2005name: "Distraction",2006type: "options",2007options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]2008}],2009run: function (f) {2010let i = document.createElement('iframe');2011document.body.append(i);2012window.alert = i.contentWindow.alert.bind(window);2013i.remove();2014let { 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;2015stateNode.safe = true;2016stateNode.props.liveGameController.setVal({2017path: `c/${stateNode.props.client.name}`,2018val: {2019b: stateNode.props.client.blook,2020w: stateNode.state.weight, f, s: true2021}2022});2023}2024},2025{2026name: "Set Lure",2027description: "Sets fishing lure (range 1 - 5)",2028inputs: [{2029name: "Lure (1 - 5)",2030type: "number",2031min: 1,2032max: 52033}],2034run: function (lure) {2035Object.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(lure - 1, 4), 0) });2036}2037},2038{2039name: "Set Weight",2040description: "Sets weight",2041inputs: [{2042name: "Weight",2043type: "number"2044}],2045run: function (weight) {2046let { 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;2047stateNode.setState({ weight, weight2: weight });2048stateNode.props.liveGameController.setVal({2049path: `c/${stateNode.props.client.name}`,2050val: {2051b: stateNode.props.client.blook,2052w: weight,2053f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(Math.random() * 9)]2054}2055});2056}2057}2058],2059},2060flappy: {2061name: "Flappy Blook",2062img: "https://media.blooket.com/image/upload/v1645222006/Blooks/yellowBird.svg",2063cheats: [2064{2065name: "Toggle Ghost",2066description: "Lets you go through the pipes",2067type: "toggle",2068enabled: false,2069run: function () {2070this.enabled = !this.enabled;2071Object.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)));2072}2073},2074{2075name: "Set Score",2076description: "Sets flappy blook score",2077inputs: [{2078name: "Score",2079type: "number"2080}],2081run: function (score) {2082Object.values(document.querySelector("#phaser-bouncy"))[1].children[0]._owner.stateNode.setState({ score });2083}2084}2085],2086},2087gold: {2088name: "Gold Quest",2089img: "https://media.blooket.com/image/upload/v1661496292/Media/uiTest/Gold.svg",2090cheats: [2091{2092name: "Always Triple",2093description: "Always get triple gold",2094type: "toggle",2095enabled: false,2096data: null,2097run: function () {2098let { 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;2099stateNode._choosePrize ||= stateNode.choosePrize;2100if (!this.enabled) {2101this.enabled = true;2102this.data = setInterval(() => {2103stateNode.choosePrize = function (i) {2104stateNode.state.choices[i] = { type: "multiply", val: 3, text: "Triple Gold!", blook: "Unicorn" };2105stateNode._choosePrize(i);2106}2107}, 50);2108} else {2109this.enabled = false;2110clearInterval(this.data);2111this.data = null;2112stateNode.choosePrize = stateNode._choosePrize || stateNode.choosePrize;2113}2114}2115},2116{2117name: "Auto Choose",2118description: "Automatically picks the option that would give you the most gold",2119type: "toggle",2120enabled: false,2121data: null,2122run: function () {2123if (!this.enabled) {2124this.enabled = true;2125this.data = setInterval(async () => {2126try {2127let { 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;2128if (stateNode.state.stage === "prize") {2129const 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;2130let max = 0; index = -1;2131for (let i = 0; i < stateNode.state.choices.length; i++) {2132const { type, val } = stateNode.state.choices[i];2133let value = stateNode.state.gold;2134switch (type) {2135case "gold": value = stateNode.state.gold + val || stateNode.state.gold; break;2136case "multiply":2137case "divide": value = Math.round(stateNode.state.gold * val) || stateNode.state.gold; break;2138case "swap": value = players || stateNode.state.gold;2139case "take": value = stateNode.state.gold + players * val || stateNode.state.gold;2140}2141if ((value || 0) <= max) continue;2142max = value, index = i + 1;2143}2144document.querySelector(`div[class^='styles__choice${index}']`).click();2145}2146} catch { }2147}, 50);2148} else {2149this.enabled = false;2150clearInterval(this.data);2151this.data = null;2152}2153}2154},2155{2156name: "Chest ESP",2157description: "Shows what each chest will give you",2158type: "toggle",2159enabled: false,2160data: null,2161run: function () {2162if (!this.enabled) {2163this.enabled = true;2164this.data = setInterval(() => {2165Object.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) => {2166let chest = document.querySelector(`div[class^='styles__choice${index + 1}']`);2167if (!chest || chest.querySelector('div')) return;2168let choice = document.createElement('div');2169choice.style.color = "white";2170choice.style.fontFamily = "Eczar";2171choice.style.fontSize = "2em";2172choice.style.display = "flex";2173choice.style.justifyContent = "center";2174choice.style.transform = "translateY(200px)";2175choice.innerText = text;2176chest.append(choice);2177});2178}, 50);2179} else {2180this.enabled = false;2181clearInterval(this.data);2182this.data = null;2183}2184}2185},2186{2187name: "Reset Players Gold",2188description: "Sets a player's gold to 0",2189inputs: [{2190name: "Player",2191type: "options",2192options: () => {2193let { 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;2194return new Promise(res => stateNode.props.liveGameController?._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));2195}2196}],2197run: function (target) {2198let { 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;2199props.liveGameController.setVal({2200path: "c/".concat(props.client.name),2201val: {2202b: props.client.blook,2203g: state.gold,2204tat: `${target}:swap:0`2205}2206});2207}2208},2209{2210name: "Set Gold",2211description: "Sets amount of gold",2212inputs: [{2213name: "Gold",2214type: "number"2215}],2216run: function (gold) {2217let { 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;2218stateNode.setState({ gold, gold2: gold });2219stateNode.props.liveGameController.setVal({2220path: "c/".concat(stateNode.props.client.name),2221val: {2222b: stateNode.props.client.blook,2223g: gold2224}2225});2226}2227},2228{2229name: "Swap Gold",2230description: "Swaps gold with someone",2231inputs: [{2232name: "Player",2233type: "options",2234options: () => {2235let { 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;2236return new Promise(res => stateNode.props.liveGameController?._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));2237}2238}],2239run: function (target) {2240let { 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;2241stateNode.props.liveGameController.getDatabaseVal("c", (players) => {2242if (!players?.[target]) return;2243let { g } = players[target];2244stateNode.props.liveGameController.setVal({2245path: "c/".concat(stateNode.props.client.name),2246val: {2247b: stateNode.props.client.blook,2248g,2249tat: `${target}:swap:${stateNode.state.gold}`2250}2251});2252stateNode.setState({ gold: g, gold2: g });2253});2254}2255},2256{2257name: "Reset All Players' Gold",2258description: "Set's everyone else's gold to 0",2259run: function () {2260let i = document.createElement('iframe');2261document.body.append(i);2262window.alert = i.contentWindow.alert.bind(window);2263i.remove();2264let { 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;2265let count = 0;2266props.liveGameController.getDatabaseVal("c", async (players) => {2267if (players) for (const player of Object.keys(players)) {2268props.liveGameController.setVal({2269path: "c/".concat(props.client.name),2270val: {2271b: props.client.blook,2272g: state.gold,2273tat: `${player}:swap:0`2274}2275});2276count++;2277await new Promise(r => setTimeout(r, 4000));2278};2279alert(`Reset ${count} players' gold!`);2280});2281}2282}2283],2284},2285kingdom: {2286name: "Crazy Kingdom",2287img: "https://media.blooket.com/image/upload/v1655161323/Media/survivor/Jester_lvl1.svg",2288cheats: [2289{2290name: "Choice ESP",2291description: "Shows you what will happen if you say Yes or No",2292type: "toggle",2293enabled: false,2294data: null,2295run: function () {2296if (!this.enabled) {2297this.enabled = true;2298let stats = ['materials', 'people', 'happiness', 'gold'];2299let elements = Object.fromEntries([...document.querySelectorAll('[class^=styles__statContainer]')].map((container, i) => [stats[i], container]));2300this.data = setInterval(() => {2301let { 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;2302if (phase == "choice") {2303Array.from(document.getElementsByClassName('choiceESP')).forEach(x => x.remove());2304Object.entries(data.yes || {}).forEach(x => {2305if (x[0] == 'msg' || !stats.includes(x[0])) return;2306let element = document.createElement('div');2307element.className = 'choiceESP';2308element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';2309element.innerText = String(x[1]);2310elements[x[0]].appendChild(element);2311});2312Object.entries(data.no || {}).forEach(x => {2313if (x[0] == 'msg' || !stats.includes(x[0])) return;2314let element = document.createElement('div');2315element.className = 'choiceESP';2316element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';2317element.innerText = String(x[1]);2318elements[x[0]].appendChild(element);2319});2320}2321}, 50);2322} else {2323this.enabled = false;2324clearInterval(this.data);2325Array.from(document.getElementsByClassName('choiceESP')).forEach(x => x.remove());2326this.data = null;2327}2328}2329},2330{2331name: "Disable Tax Toucan",2332description: "Tax evasion",2333run: function () {2334Object.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;2335}2336},2337{2338name: "Max Stats",2339description: "Sets all resources to the max",2340run: function () {2341Object.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 });2342}2343},2344{2345name: "Set Guests",2346description: "Sets the amount of guests you've seen",2347inputs: [{2348name: "Guests",2349type: "number"2350}],2351run: function (guestScore) {2352Object.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 });2353}2354},2355{2356name: "Skip Guest",2357description: "Skips the current guest",2358run: function () {2359Object.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();2360}2361}2362],2363},2364racing: {2365name: "Racing",2366img: "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Racing_Progress.svg",2367cheats: [{2368name: "Instant Win",2369description: "Instantly Wins the race",2370run: function () {2371const { 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;2372stateNode.setState({ progress: stateNode.state.goalAmount }, () => {2373const { state: { question } } = stateNode;2374try {2375[...document.querySelectorAll(`[class*="answerContainer"]`)][question.answers.map((x, i) => question.correctAnswers.includes(x) ? i : null).filter(x => x != null)[0]]?.click?.();2376} catch { }2377});2378}2379}],2380},2381royale: {2382name: "Battle Royale",2383img: "https://media.blooket.com/image/upload/v1655936179/Media/br/VS_Lightning_Bolt_Bottom.svg",2384cheats: [2385{2386name: "Auto Answer (Toggle)",2387description: "Toggles auto answer on",2388type: "toggle",2389enabled: false,2390data: null,2391run: function () {2392if (!this.enabled) {2393this.enabled = true;2394this.data = setInterval(() => {2395let { 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;2396stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);2397}, 50);2398} else {2399this.enabled = false;2400clearInterval(this.data);2401this.data = null;2402}2403}2404},2405{2406name: "Auto Answer",2407description: "Chooses the correct answer for you",2408run: function () {2409let { 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;2410stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);2411}2412},2413],2414},2415rush: {2416name: "Blook Rush",2417img: Object.values(webpack.c).find(x => x.exports.a?.basic).exports.a.basic.shield,2418cheats: [2419{2420name: "Set Blooks",2421description: "Sets amount of blooks you or your team has",2422inputs: [{2423name: "Blooks",2424type: "number"2425}],2426run: function (numBlooks) {2427let { 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;2428stateNode.setState({ numBlooks });2429stateNode.isTeam ? stateNode.props.liveGameController.setVal({2430path: `a/${stateNode.props.client.name}/bs`,2431val: numBlooks2432}) : stateNode.props.liveGameController.setVal({2433path: `c/${stateNode.props.client.name}/bs`,2434val: numDefense2435});2436}2437},2438{2439name: "Set Defense",2440description: "Sets amount of defense you or your team has (Max 4)",2441inputs: [{2442name: "Defense (max 4)",2443type: "number",2444max: 42445}],2446run: function (defense) {2447let numDefense = Math.min(defense, 4);2448let { 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;2449stateNode.setState({ numDefense });2450stateNode.isTeam ? stateNode.props.liveGameController.setVal({2451path: `a/${stateNode.props.client.name}/d`,2452val: numDefense2453}) : stateNode.props.liveGameController.setVal({2454path: `c/${stateNode.props.client.name}/d`,2455val: numDefense2456});2457}2458}2459],2460},2461workshop: {2462name: "Santa's Workshop",2463img: Object.values(webpack.c).find(x => x.exports.a?.basic).exports.a.basic.toy,2464cheats: [2465{2466name: "Remove Distractions",2467description: "Removes all enemy distractions",2468run: function () {2469Object.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] });2470}2471},2472{2473name: "Send Distraction",2474description: "Sends a distraction to everyone else playing",2475inputs: [{2476name: "Distraction",2477type: "options",2478options: Object.entries({ 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" }).map(([value, name]) => ({ name, value }))2479}],2480run: function (val) {2481let { 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;2482stateNode.safe = true;2483stateNode.props.liveGameController.setVal({ path: `c/${stateNode.props.client.name}/tat`, val });2484}2485},2486{2487name: "Set Toys",2488description: "Sets amount of toys",2489inputs: [{2490name: "Toys",2491type: "number"2492}],2493run: function (toys) {2494let { 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;2495stateNode.setState({ toys });2496stateNode.props.liveGameController.setVal({2497path: "c/".concat(stateNode.props.client.name),2498val: {2499b: stateNode.props.client.blook,2500t: toys2501}2502});2503}2504},2505{2506name: "Set Toys Per Question",2507description: "Sets amount of toys per question",2508inputs: [{2509name: "Toys Per Question",2510type: "number"2511}],2512run: function (toysPerQ) {2513Object.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 });2514}2515},2516{2517name: "Swap Toys",2518description: "Swaps toys with someone",2519inputs: [{2520name: "Player",2521type: "options",2522options: () => {2523let { 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;2524return new Promise(res => stateNode.props.liveGameController?._liveApp ? stateNode.props.liveGameController.getDatabaseVal("c", (players) => players && res(Object.keys(players))) : res([]));2525}2526}],2527run: function (target) {2528let { 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;2529stateNode.props.liveGameController.getDatabaseVal("c", (players) => {2530if (players && Object.keys(players).map(x => x.toLowerCase()).includes(target.toLowerCase())) {2531let [player, { t: toys }] = Object.entries(players).find(([name]) => name.toLowerCase() == target.toLowerCase());2532stateNode.props.liveGameController.setVal({2533path: "c/".concat(stateNode.props.client.name),2534val: {2535b: stateNode.props.client.blook,2536t: toys,2537tat: `${player}:swap:${stateNode.state.toys}`2538}2539});2540stateNode.setState({ toys });2541}2542});2543}2544}2545],2546},2547settings: {2548name: "Settings",2549img: null,2550cheats: [2551{2552name: "Import Settings",2553description: "Import a custom theme",2554inputs: [2555{2556name: "JSON Data",2557type: "string"2558}2559],2560run: function (theme) {2561try {2562JSON.parse(theme);2563} catch (e) {2564return alert("Invalid JSON provided");2565}2566theme = { backgroundColor: "rgb(11, 194, 207)", infoColor: "#9a49aa", cheatList: "#9a49aa", defaultButton: "#9a49aa", disabledButton: "#A02626", enabledButton: "#47A547", textColor: "white", inputColor: "#7a039d", contentBackground: "rgb(64, 17, 95)", ...JSON.parse(theme) }2567settings.setItem("theme", theme);2568}2569},2570{2571name: "Export Settings",2572description: "Export the current theme to JSON",2573run: async function () {2574await navigator.clipboard.writeText(JSON.stringify(settings.data.theme, null, 4));2575prompt("Text copied to clipboard. (Paste below to test)");2576}2577},2578{2579name: "Defaults",2580description: "Changes all the settings to a preset",2581inputs: [2582{2583name: "Theme",2584type: "options",2585options: [2586{2587name: "Default",2588value: {2589backgroundColor: "rgb(11, 194, 207)",2590infoColor: "#9a49aa",2591cheatList: "#9a49aa",2592defaultButton: "#9a49aa",2593disabledButton: "#A02626",2594enabledButton: "#47A547",2595textColor: "white",2596inputColor: "#7a039d",2597contentBackground: "rgb(64, 17, 95)"2598}2599},2600{2601name: "Blacket",2602value: {2603backgroundColor: "#4f4f4f",2604infoColor: "#2f2f2f",2605cheatList: "#2f2f2f",2606defaultButton: "#4f4f4f",2607disabledButton: "#eb6234",2608enabledButton: "#00c20c",2609textColor: "white",2610inputColor: "#3f3f3f",2611contentBackground: "#2f2f2f"2612}2613},2614{2615name: "Skool.lol",2616value: {2617backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",2618cheatList: "#1e2124",2619infoColor: "#1e2124",2620defaultButton: "#36393e",2621inputColor: "#1e2124",2622enabledButton: "#9c9a9a",2623textColor: "white",2624disabledButton: "#171717",2625contentBackground: "#292929"2626}2627},2628{2629name: "Blue - Purple Background",2630value: {2631backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"2632}2633},2634{2635name: "Saint Patricks Background",2636value: {2637backgroundColor: "rgb(9, 148, 65)"2638}2639},2640{2641name: "Halloween Background",2642value: {2643backgroundColor: "rgb(41, 41, 41)"2644}2645},2646{2647name: "Fall Background",2648value: {2649backgroundColor: "rgb(224, 159, 62)"2650}2651},2652{2653name: "Winter Background",2654value: {2655backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"2656}2657},2658{2659name: "Crypto Hack",2660value: {2661backgroundColor: "radial-gradient(#11581e,#041607)",2662infoColor: "#1a1a1a",2663cheatList: "#1a1a1a",2664defaultButton: "rgb(88 175 88)",2665disabledButton: "#A02626",2666enabledButton: "#0b601b",2667textColor: "white",2668inputColor: "rgb(0 0 0 / 25%)",2669contentBackground: "#11581e"2670}2671},2672{2673name: "Fishing Frenzy",2674value: {2675backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",2676infoColor: "#c8591e",2677cheatList: "#c8591e",2678defaultButton: "#ff751a",2679disabledButton: "#bf0e0e",2680enabledButton: "#2fb62f",2681textColor: "white",2682inputColor: "rgb(0 0 0 / 25%)",2683contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"2684}2685},2686{2687name: "Deceptive Dinos",2688value: {2689backgroundColor: "radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url(\"https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png\"), #ead49a",2690infoColor: "#af8942",2691cheatList: "#af8942",2692defaultButton: "#af8942",2693disabledButton: "#A02626",2694enabledButton: "#47A547",2695textColor: "white",2696inputColor: "rgb(0 0 0 / 10%)",2697contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"2698}2699},2700{2701name: "Blook Rush",2702value: {2703backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",2704defaultButton: "#36c",2705inputColor: "rgb(0 0 0 / 25%)",2706infoColor: "#36c",2707cheatList: "#36c",2708contentBackground: "#888",2709textColor: "white",2710disabledButton: "#A02626",2711enabledButton: "#47A547"2712}2713},2714{2715name: "Factory",2716value: {2717defaultButton: "#1563bf",2718infoColor: "#a5aabe",2719cheatList: "#a5aabe",2720contentBackground: "#2d313d",2721backgroundColor: "#3a3a3a",2722enabledButton: "rgb(75, 194, 46)",2723disabledButton: "#9a49aa",2724inputColor: "rgb(0 0 0 / 25%)",2725textColor: "white"2726}2727},2728{2729name: "Cafe",2730value: {2731backgroundColor: "linear-gradient(90deg,rgba(200,0,0,.5) 50%,transparent 0) center / 50px 50px,linear-gradient(rgba(200,0,0,0.5) 50%,transparent 0) white center / 50px 50px",2732defaultButton: "#0bc2cf",2733inputColor: "rgb(0 0 0 / 25%)",2734infoColor: "#ac7339",2735cheatList: "#ac7339",2736contentBackground: "rgb(64, 64, 64)",2737textColor: "white",2738disabledButton: "#A02626",2739enabledButton: "#47A547"2740}2741},2742{2743name: "Tower of Doom",2744value: {2745backgroundColor: "rgb(41 41 41)",2746disabledButton: "rgb(151, 15, 5)",2747defaultButton: "#333",2748inputColor: "rgb(0 0 0 / 25%)",2749contentBackground: "#404040",2750enabledButton: "#4bc22e",2751textColor: "white",2752infoColor: "#9a49aa",2753cheatList: "#9a49aa"2754}2755},2756{2757name: "Monster Brawl",2758value: {2759defaultButton: "rgb(45, 51, 67)",2760backgroundColor: "rgb(78, 95, 124)",2761inputColor: "rgb(0 0 0 / 25%)",2762contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",2763infoColor: "#374154",2764cheatList: "#374154",2765textColor: "white",2766enabledButton: "#47A547",2767disabledButton: "#A02626"2768}2769},2770{2771name: "Tower Defense 2",2772value: {2773backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",2774cheatList: "#a33c22",2775infoColor: "#a33c22",2776defaultButton: "#40b1d8",2777inputColor: "#3e8cbe",2778contentBackground: "#293c82",2779enabledButton: "#47A547",2780disabledButton: "#A02626",2781textColor: "white"2782}2783},2784]2785}2786],2787run: function (theme) {2788settings.setItem("theme", { ...settings.data.theme, ...theme });2789}2790},2791{2792name: "Scale",2793description: "Forces the GUI to scale from 25%-100%",2794inputs: [2795{2796type: "number",2797name: "Percent scale",2798min: 25,2799max: 100,2800value: (settings.data?.scale || 1) * 1002801}2802],2803run: function (scale) {2804scale = Math.min(Math.max(scale, 25), 100);2805settings.setItem("scale", scale / 100);2806guiWrapper.style.transform = `scale(${(scale / 100)})`;2807}2808},2809{2810name: "Hide Keybind",2811description: "Change the hide keybind (Click button after input to change)",2812inputs: [2813{2814type: "function",2815name: "Input",2816function: onchange => createKeybindListener(({ shift, ctrl, alt, key }) => onchange(`${[ctrl && "Ctrl", shift && "Shift", alt && "Alt", key && key.toUpperCase()].filter(Boolean).join(' + ')}`))2817}2818],2819run: function (hide) {2820settings.setItem("hide", hide);2821}2822},2823{2824name: "Close Keybind",2825description: "Change the quick close keybind (Click button after input to change)",2826inputs: [2827{2828type: "function",2829name: "Input",2830function: onchange => createKeybindListener(({ shift, ctrl, alt, key }) => onchange(`${[ctrl && "Ctrl", shift && "Shift", alt && "Alt", key && key.toUpperCase()].filter(Boolean).join(' + ')}`))2831}2832],2833run: function (close) {2834settings.setItem("close", close);2835}2836},2837{2838name: "Background Color",2839description: "Changes the background color of the GUI",2840inputs: [{2841type: "string",2842name: "Color"2843}],2844run: function (color) {2845settings.setItem("theme.backgroundColor", color);2846}2847},2848{2849name: "Category List Color",2850description: "Changes the categories list background color",2851inputs: [{2852type: "string",2853name: "Color"2854}],2855run: function (color) {2856settings.setItem("theme.cheatList", color);2857}2858},2859{2860name: "Info Color",2861description: "Changes the color of the information at the top of the GUI",2862inputs: [{2863type: "string",2864name: "Color"2865}],2866run: function (color) {2867settings.setItem("theme.infoColor", color);2868}2869},2870{2871name: "Button Color",2872description: "Changes the color of the cheats",2873inputs: [{2874type: "string",2875name: "Color"2876}],2877run: function (color) {2878settings.setItem("theme.defaultButton", color);2879}2880},2881{2882name: "Enabled Toggle Color",2883description: "Changes the color of enabled toggle cheats",2884inputs: [{2885type: "string",2886name: "Color"2887}],2888run: function (color) {2889settings.setItem("theme.enabledButton", color);2890}2891},2892{2893name: "Disabled Toggle Color",2894description: "Changes the color of disabled toggle cheats",2895inputs: [{2896type: "string",2897name: "Color"2898}],2899run: function (color) {2900settings.setItem("theme.disabledButton", color);2901}2902},2903{2904name: "Text Color",2905description: "Changes the text color",2906inputs: [{2907type: "string",2908name: "Color"2909}],2910run: function (color) {2911settings.setItem("theme.textColor", color);2912}2913},2914{2915name: "Input Color",2916description: "Changes the color of inputs, like the set gold number input",2917inputs: [{2918type: "string",2919name: "Color"2920}],2921run: function (color) {2922settings.setItem("theme.inputColor", color);2923}2924},2925{2926name: "Content Color",2927description: "Changes the background color of the cheats",2928inputs: [{2929type: "string",2930name: "Color"2931}],2932run: function (color) {2933settings.setItem("theme.contentBackground", color);2934}2935}2936]2937},2938alerts: {2939name: "Alerts",2940img: null,2941alerts: [{ message: "[LOG] GUI opened" }],2942diffObjects(obj1, obj2) {2943const changed = {};29442945for (const key in obj1) {2946if (!(key in obj2)) continue;2947if (typeof obj1[key] === "object" && typeof obj2[key] === "object") {2948const recChanged = Cheats.alerts.diffObjects(obj1[key], obj2[key]);2949if (recChanged && Object.keys(recChanged).length !== 0) changed[key] = recChanged;2950} else if (JSON.stringify(obj1[key]) !== JSON.stringify(obj2[key])) changed[key] = obj2[key];2951}29522953for (const key in obj2) if (!(key in obj1)) changed[key] = obj2[key];29542955if (Object.keys(changed).length == 0) return null;2956return changed;2957},2958addLog(message, color) {2959if (!Cheats.alerts.visible) Cheats.alerts.alerts.push({ message, color });2960else Cheats.alerts.setAlerts(a => [...a, { message, color }]);2961},2962addAlert(name, blook, message) {2963let alert = {2964message: React.createElement(React.Fragment, null, React.createElement("img", {2965src: blook || Cheats.alerts.blookData?.Black?.url,2966alt: "Blook",2967style: {2968height: "22.5px",2969margin: "0 10px -5px 0"2970}2971}), React.createElement("strong", null, name), " ", message)2972}2973if (!Cheats.alerts.visible) Cheats.alerts.alerts.push(alert);2974else Cheats.alerts.setAlerts(a => [...a, alert]);2975},2976getGamemode() {2977switch (window.location.pathname) {2978case "/play/racing":2979return "racing";2980case "/play/factory":2981return "factory";2982case "/play/classic/get-ready":2983case "/play/classic/question":2984case "/play/classic/answer/sent":2985case "/play/classic/answer/result":2986case "/play/classic/standings":2987return "classic";2988case "/play/battle-royale/match/preview":2989case "/play/battle-royale/question":2990case "/play/battle-royale/answer/sent":2991case "/play/battle-royale/answer/result":2992case "/play/battle-royale/match/result":2993return "royale";2994case "/play/toy":2995return "workshop";2996case "/play/gold":2997return "gold";2998case "/play/brawl":2999return "brawl";3000case "/play/hack":3001return "hack";3002case "/play/fishing":3003return "fishing";3004case "/play/rush":3005return "rush";3006case "/play/dino":3007return "dino";3008case "/tower/map":3009case "/tower/battle":3010case "/tower/rest":3011case "/tower/risk":3012case "/tower/shop":3013case "/tower/victory":3014return "doom";3015case "/cafe":3016case "/cafe/shop":3017return "cafe";3018case "/defense":3019return "defense";3020case "/play/defense2":3021return "defense2";3022case "/kingdom":3023return "kingdom";3024default:3025return false;3026}3027},3028connection: null,3029data: {},3030async connect() {3031try {3032const { 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;3033if (!stateNode?.props?.liveGameController?._liveGameCode) return false;3034Cheats.alerts.connection = await stateNode.props.liveGameController.getDatabaseRef("c");3035const blooks = Cheats.alerts.blookData;3036const gamemode = Cheats.alerts.getGamemode();3037const factoryGlitches = Object.values(webpack.c).find(x => x.exports.a?.["Lunch Break"]).exports.b;3038Cheats.alerts.connection.on("value", snapshot => {3039const players = snapshot.val() || {};3040if (!players || !Cheats.alerts.diffObjects(Cheats.alerts.data, players)) return;3041const added = Cheats.alerts.diffObjects(Cheats.alerts.data, players)3042Cheats.alerts.data = players;3043let standings;3044switch (gamemode) {3045case "racing":3046standings = Object.entries(players).map(([name, { b, pr }]) => ({ name, blook: b, value: pr || 0 }));3047case "classic":3048standings = Object.entries(players).map(([name, { b, p }]) => ({ name, blook: b, value: p || 0 }));3049case "royale":3050standings = Object.entries(players).map(([name, { b, e }]) => ({ name, blook: b, value: e || 0 }));3051case "workshop":3052standings = Object.entries(players).map(([name, { b, t }]) => ({ name, blook: b, value: t || 0 }));3053case "brawl":3054standings = Object.entries(players).map(([name, { b, xp }]) => ({ name, blook: b, value: xp || 0 }));3055case "defense":3056case "defense2":3057standings = Object.entries(players).map(([name, { b, d }]) => ({ name, blook: b, value: d || 0 }));3058case "gold":3059for (const player in added) {3060if (!added[player].tat) continue;3061const [tat, amount] = added[player].tat.split(':');3062if (amount == "swap") Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just swapped with ${tat}`);3063else Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just took ${Cheats.alerts.formatNumber(parseInt(amount))} gold from ${tat}`);3064}3065standings = Object.entries(players).map(([name, { b, g }]) => ({ name, blook: b, value: g || 0 }));3066break;3067case "hack":3068for (const player in added) {3069if (!added[player].tat) continue;3070const [tat, amount] = added[player].tat.split(':');3071Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just took ${Cheats.alerts.formatNumber(parseInt(amount))} crypto from ${tat}`);3072}3073standings = Object.entries(players).map(([name, { b, cr }]) => ({ name, blook: b, value: cr || 0 }));3074break;3075case "fishing":3076for (const player in added) {3077if (added[player].f == "Frenzy") Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just started a frenzy`);3078else if (added[player].s) Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just sent a ${added[player].f} distraction`);3079}3080standings = Object.entries(players).map(([name, { b, w }]) => ({ name, blook: b, value: w || 0 }));3081break;3082case "dino":3083for (const player in added) {3084if (!added[player].tat) continue;3085const [tat, caught] = added[player].tat.split(':');3086if (caught == "true") Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `just caught ${tat} CHEATING!`);3087else Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `investigated ${tat}`);3088}3089standings = Object.entries(players).map(([name, { b, f }]) => ({ name, blook: b, value: f || 0 }));3090break;3091case "cafe":3092for (const player in added) {3093if (!added[player].up) continue;3094const [upgrade, level] = added[player].up.split(":");3095if (level) Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `upgraded ${upgrade} to level ${level}`);3096}3097standings = Object.entries(players).map(([name, { b, ca }]) => ({ name, blook: b, value: ca || 0 }));3098break;3099case "factory":3100for (const player in added) {3101const data = added[player];3102if (data.g) Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `activated the ${factoryGlitches[data.g]} glitch!`);3103else if (data.s) {3104const [amount, synergy] = data.s.split('-');3105Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `has a ${amount} ${synergy} synergy!`);3106} else if (data.t) Cheats.alerts.addAlert(player, blooks[players[player].b]?.url, `now has 10 Blooks!`);3107}3108standings = Object.entries(players).map(([name, { b, ca }]) => ({ name, blook: b, value: ca || 0 }));3109break;3110}3111Cheats.alerts.standings = standings.sort((a, b) => b.value - a.value)3112Cheats.alerts.setLeaderboard(Cheats.alerts.standings);3113});3114return true;3115} catch {3116return false;3117}3118},3119cheats: [3120{3121element: createElement(function Alerts() {3122const [alerts, setAlerts] = useState([]);3123const [leaderboard, setLeaderboard] = useState([]);3124Cheats.alerts.setAlerts = setAlerts;3125Cheats.alerts.setLeaderboard = setLeaderboard;3126useEffect(() => {3127Cheats.alerts.blookData = Object.values(webpack.c).find(x => x.exports.a?.Black).exports.a;3128Cheats.alerts.formatNumber = Object.values(webpack("74sb")).find(x => String(x).includes("×") || String(x).includes("toPrecision"));3129Cheats.alerts.standings && setLeaderboard(Cheats.alerts.standings);3130setAlerts(Cheats.alerts.alerts);3131Cheats.alerts.visible = true;3132window.Cheats = Cheats;3133return () => Cheats.alerts.visible = false;3134}, []);3135useEffect(() => {3136Cheats.alerts.alerts = alerts;3137}, [alerts])3138return React.createElement("div", {3139className: styles.keys.alertContainer3140}, React.createElement("ul", {3141className: styles.keys.alertList,3142style: {3143margin: "10px 10px 0 10px",3144padding: "0",3145listStyleType: "none",3146display: "flex",3147flexDirection: "column-reverse",3148height: "355px",3149overflowY: "scroll",3150wordWrap: "break-word"3151}3152}, alerts.slice().reverse().map((alert, i) => React.createElement("li", {3153style: {3154margin: "5px"3155},3156key: i3157}, React.createElement("span", {3158style: {3159color: alert.color || "var(--textColor)"3160}3161}, alert.message)))), leaderboard.length > 0 && React.createElement("div", {3162style: {3163position: "absolute",3164inset: "110% 0px"3165}3166}, React.createElement("div", {3167style: {3168alignItems: "center",3169boxSizing: "border-box",3170display: "flex",3171flexDirection: "row",3172flexWrap: "wrap",3173justifyContent: "space-evenly",3174padding: "20px 5px 20px",3175position: "relative",3176width: "100%",3177fontFamily: "Nunito, sans-serif",3178fontWeight: "400",3179color: "var(--textColor)",3180background: "var(--contentBackground)",3181boxShadow: "inset 0 -6px rgb(0 0 0 / 20%)",3182borderRadius: "7px"3183}3184}, React.createElement("div", {3185className: styles.keys.headerText3186}, React.createElement("div", {3187style: {3188alignItems: "center",3189boxSizing: "border-box",3190display: "flex",3191height: "100%",3192justifyContent: "center",3193padding: "0 15px",3194width: "100%",3195fontFamily: "Titan One, sans-serif",3196fontSize: "26px",3197fontWeight: "400",3198textShadow: "-1px -1px 0 #646464, 1px -1px 0 #646464, -1px 1px 0 #646464, 2px 2px 0 #646464",3199color: "white",3200background: "linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a)",3201borderRadius: "5px"3202}3203}, "Leaderboard")), React.createElement("div", {3204className: styles.keys.alertContainer,3205style: {3206margin: "15px 15px 5px 15px",3207backgroundColor: "rgb(0 0 0 / 50%)",3208width: "95%",3209height: "370px",3210borderRadius: "7px",3211display: "flex",3212alignItems: "center",3213justifyContent: "center"3214}3215}, React.createElement("nl", {3216className: styles.keys.alertList,3217style: {3218marginTop: "10px",3219padding: "0",3220listStyleType: "decimal",3221width: "100%",3222height: "355px",3223overflowY: "scroll",3224wordWrap: "break-word"3225}3226}, leaderboard.map(({ blook, name, value }) => React.createElement("li", {3227style: {3228fontSize: "2rem",3229paddingInline: "72px 15px",3230paddingBlock: "1.25px",3231position: "relative"3232},3233key: name3234}, React.createElement("img", {3235src: Cheats.alerts.blookData[blook]?.url || Cheats.alerts.blookData.Black.url,3236alt: blook,3237style: {3238height: "45px",3239position: "absolute",3240left: "15px"3241}3242}), name, React.createElement("span", {3243style: {3244float: "right"3245}3246}, Cheats.alerts.formatNumber(parseInt(value))))))))));3247}, null)3248}3249]3250}3251}3252const GUIContainer = document.createElement("div");3253function createKeybindListener(onpress, element = window) {3254return new Promise(resolve => {3255const pressed = {};3256let shift, ctrl, alt, key;3257const keydown = e => {3258e.preventDefault();3259pressed[e.code] = true;3260shift ||= e.shiftKey;3261ctrl ||= e.ctrlKey;3262alt ||= e.altKey;3263if (!["shift", "control", "alt", "meta"].includes(e.key.toLowerCase())) key = e.key.toLowerCase();3264onpress?.({ shift, ctrl, alt, key });3265};3266const keyup = e => {3267delete pressed[e.code];3268if (Object.keys(pressed).length > 0) return;3269element.removeEventListener("keydown", keydown);3270element.removeEventListener("keyup", keyup);3271resolve({ shift, ctrl, alt, key });3272};3273element.addEventListener("keydown", keydown);3274element.addEventListener("keyup", keyup);3275});3276}3277function AntiBen({ type = "div", children, ...props }) {3278let childs = [];3279let char = (space) => React.createElement("span", {3280style: {3281display: "inline-block",3282opacity: "0",3283width: "0",3284height: "0",3285lineHeight: "0",3286userSelect: "none",3287marginLeft: space ? "5px" : null3288}3289}, String.fromCharCode(Math.floor(Math.random() * 25) + 97))3290const addChar = (child) => {3291if (typeof child == "string") {3292let text = [];3293for (let i = 0; i < child.length; i += 3) text.push(child.slice(i, i + 3), char());3294childs.push(...text);3295}3296else childs.push(child, char());3297}3298if (Array.isArray(children)) for (let i = 0; i < children.length; i++) addChar(children[i]);3299else addChar(children);3300return React.createElement(type, props, React.createElement("span", null, childs));3301}3302function ScriptInput({ input, onValue, run }) {3303const { name, type, options: opts, min, max, value } = input;3304let optState;3305try {3306optState = typeof opts == "function" ? opts() : opts;3307} catch (e) {3308console.warn(e);3309optState = [];3310}3311const [options, setOptions] = useState(optState)3312const [locked, setLocked] = useState("");3313const loading = useRef(true);3314useEffect(() => {3315if (options instanceof Promise) options.then((o) => {3316setOptions(o);3317onValue(o[0]?.value || o[0]);3318input.selected = o[0]?.name || o[0];3319loading.current = false;3320}).catch(() => setOptions([]));3321else if (options?.length) {3322onValue(options[0]?.value || options[0]);3323input.selected = options[0]?.name || options[0];3324}3325if (type == "number") onValue(value || (min == null ? 0 : min));3326else if (type == "function") onValue(null);3327else if (!(options instanceof Promise) && !options?.length) onValue("");3328}, []);3329let el;3330if (type == "options" && options?.length) el = React.createElement("select", {3331onChange: e => (input.selected = e.target.children[e.target.selectedIndex].innerText, onValue(JSON.parse(e.target.value)))3332}, options.map(opt => React.createElement("option", { value: JSON.stringify(opt?.value || opt) }, opt?.name || opt)));3333else if (type == "function") el = React.createElement("input", {3334className: styles.keys.cheatInput,3335placeholder: name,3336style: {3337textAlign: "center"3338},3339readOnly: true,3340value: locked || input.data,3341onClick: async () => {3342if (locked) return;3343setLocked("Waiting for input...");3344let value;3345const data = await input.function(e => setLocked((value = e) + "..."));3346input.data = value;3347setLocked(false);3348onValue(data);3349}3350});3351else {3352let isNumber = type == "number";3353el = React.createElement("input", {3354onChange: e => onValue(isNumber ? parseInt(e.target.value) : e.target.value),3355className: styles.keys.cheatInput,3356type: isNumber ? "number" : null,3357min: isNumber ? min : null,3358max: isNumber ? max : null,3359defaultValue: isNumber ? value || (min == null ? 0 : min) : null,3360placeholder: name,3361style: {3362textAlign: "center"3363},3364onKeyUp: e => e.key == "Enter" && run()3365});3366}3367return el;3368}3369function ScriptButton({ script }) {3370const args = useRef([]);3371const [enabled, setEnabled] = useState(script.enabled);3372const run = useCallback(() => {3373script.run.apply(script, args.current);3374setEnabled(script.enabled);3375Cheats.alerts.addLog(React.createElement(React.Fragment, null, script.type == "toggle" ? script.enabled ? "Enabled" : "Disabled" : "Ran", " ", React.createElement("strong", null, script.name), args.current.length > 0 && ` with inputs: (${args.current.map((x, i) => JSON.stringify(script.inputs[i].selected || x)).join(", ")})`), script.type == "toggle" && (script.enabled ? "var(--enabledButton)" : "var(--disabledButton)"));3376}, []);3377return React.createElement("div", {3378style: {3379background: script.type == "toggle" ? enabled ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)"3380},3381key: script.name,3382"data-tip": script.description,3383className: styles.keys.scriptButton,3384onClick: e => (e.target.matches(`.${styles.keys.scriptButton}`) || e.target.matches(`.${styles.keys.cheatName}`) || e.target.matches(`.${styles.keys.cheatName} *`)) && run()3385}, React.createElement(AntiBen, {3386className: styles.keys.cheatName3387}, script.name), script.inputs?.length && script.inputs.map((input, i) => input.element || React.createElement(ScriptInput, {3388onValue: val => args.current[i] = val,3389key: i,3390input: input,3391run: run3392})));3393}3394function useSettings(settingsKey) {3395const [data, updateData] = useState(JSON.parse(localStorage.getItem(settingsKey) || "{}"));3396const setItem = useCallback((k, v) => {3397k.split('.').reduce((obj, k, i, a) => (++i == a.length && (obj[k] = v), obj[k]), data);3398localStorage.setItem(settingsKey, JSON.stringify(data));3399updateData({ ...data });3400return data;3401}, [data]);3402const deleteItem = useCallback((k, v) => {3403k.split('.').reduce((obj, k, i, a) => (++i == a.length && (delete obj[k]), obj[k]), data);3404localStorage.setItem(settingsKey, JSON.stringify(data));3405updateData({ ...data });3406return data;3407}, [data]);3408const setData = useCallback((v) => {3409updateData(v);3410localStorage.setItem(settingsKey, JSON.stringify(v));3411}, []);3412useEffect(() => {3413try {3414updateData(JSON.parse(localStorage.getItem(settingsKey) || "{}"));3415for (const setting of ["backgroundColor", "cheatList", "contentBackground", "defaultButton", "disabledButton", "enabledButton", "infoColor", "inputColor", "textColor"]) if (settings.data[setting]) {3416setItem(`theme.${setting}`, settings.data[setting]);3417deleteItem(setting);3418}3419} catch {3420setData({});3421}3422}, [])3423return { data, setItem, deleteItem, setData };3424}3425function Draggable({ parent, children, setPos, ...props }) {3426const mouseDown = useRef(false);3427const pos = useRef({ x: 0, y: 0 });3428useEffect(() => {3429const pointerup = () => mouseDown.current = false;3430const pointermove = (e) => {3431if (!mouseDown.current) return;3432let dx = pos.current.x - e.clientX;3433let dy = pos.current.y - e.clientY;3434pos.current = { x: e.clientX, y: e.clientY };3435var ratio = 1 || parseFloat((0.75 / window.devicePixelRatio).toFixed(2));3436setPos({ x: parent.offsetLeft - dx / ratio, y: parent.offsetTop - dy / ratio });3437}3438document.addEventListener("pointerup", pointerup);3439document.addEventListener("pointermove", pointermove);3440return () => {3441document.removeEventListener("pointerup", pointerup);3442document.removeEventListener("pointermove", pointermove);3443}3444}, [parent]);3445return React.createElement("div", {3446...props, onPointerDown: e => {3447mouseDown.current = true;3448pos.current = {3449x: e.clientX,3450y: e.clientY3451};3452}3453}, children);3454}3455function GUI() {3456const { current: pos } = useRef({3457x: Math.max(10, window.innerWidth - 1000) / 2,3458y: Math.max(10, window.innerHeight - 600) / 2,3459});3460const setPos = useCallback(({ x, y }) => {3461pos.x = x;3462pos.y = y;3463guiRef.current.style.left = `${x}px`;3464guiRef.current.style.top = `${y}px`;3465}, []);3466const [minified, setMinified] = useState(null);3467const [hidden, setHidden] = useState(false);3468const [currentMode, setCurrentMode] = useState("global");3469const guiRef = useRef();3470const alertInterval = useRef();3471settings = useSettings("JODGUISETTINGS");3472const variables = React.createElement("style", null, `:root {--backgroundColor: ${settings.data?.theme?.backgroundColor || "rgb(11, 194, 207)"};--infoColor: ${settings.data?.theme?.infoColor || "#9a49aa"};--cheatList: ${settings.data?.theme?.cheatList || "#9a49aa"};--defaultButton: ${settings.data?.theme?.defaultButton || "#9a49aa"};--disabledButton: ${settings.data?.theme?.disabledButton || "#A02626"};--enabledButton: ${settings.data?.theme?.enabledButton || "#47A547"};--textColor: ${settings.data?.theme?.textColor || "white"};--inputColor: ${settings.data?.theme?.inputColor || "#7a039d"};--contentBackground: ${settings.data?.theme?.contentBackground || "rgb(64, 17, 95)"};}`);3473const { current: gamemodes } = useRef(["alerts", "global", "voyage", "gold", "cafe", "crypto", "dinos", "defense", "defense2", "factory", "fishing", "flappy", "doom", "kingdom", "racing", "royale", "rush", "brawl", "workshop", "settings"]);34743475const close = useCallback(() => {3476ReactDOM.unmountComponentAtNode(GUIContainer);3477GUIContainer.remove();3478}, []);34793480useEffect(() => { Tooltip.rebuild() });3481useEffect(() => {3482window.dispatchEvent(new Event("resize"));3483let keydown = e => {3484let hideKey = settings.data.hide || { ctrl: true, key: "e" };3485let closeKey = settings.data.close || { ctrl: true, key: "x" };3486if ((hideKey.ctrl && e.ctrlKey || !hideKey.ctrl && !e.ctrlKey) && (hideKey.shift && e.shiftKey || !hideKey.shift && !e.shiftKey) && (hideKey.alt && e.altKey || !hideKey.alt && !e.altKey) && e.key.toLowerCase() == hideKey.key) {3487e.preventDefault();3488setHidden(h => !h);3489} else if ((closeKey.ctrl && e.ctrlKey || !closeKey.ctrl && !e.ctrlKey) && (closeKey.shift && e.shiftKey || !closeKey.shift && !e.shiftKey) && (closeKey.alt && e.altKey || !closeKey.alt && !e.altKey) && e.key.toLowerCase() == closeKey.key) {3490e.preventDefault();3491close();3492}3493};3494window.addEventListener("keydown", keydown);3495alertInterval.current = setInterval(async () => {3496if (await Cheats.alerts.connect()) clearInterval(alertInterval.current);3497}, 5000);3498return () => {3499window.removeEventListener("keydown", keydown);3500clearInterval(alertInterval.current);3501for (const gamemode of gamemodes) for (const cheat of Cheats[gamemode].cheats) if (cheat.enabled) cheat.run();3502}3503}, []);3504useEffect(() => {3505if (minified == null) return () => { };3506let gui = guiRef.current.querySelector("div");3507gui.style.height = !minified ? "100%" : "55px";3508gui.style.width = !minified ? "100%" : "165px";3509guiRef.current.style.top = `${parseInt(guiRef.current.style.top) + (guiRef.current.offsetHeight - 55) * (!minified ? -1 : 1)}px`;3510guiRef.current.style.left = `${parseInt(guiRef.current.style.left) + (guiRef.current.offsetWidth - 165) * (!minified ? -1 : 1)}px`;3511guiRef.current.style.pointerEvents = !minified ? "unset" : "none";3512}, [minified])35133514return React.createElement("div", {3515ref: guiRef,3516id: styles.keys.guiWrapper,3517style: {3518top: `${pos.y}px`,3519left: `${pos.x}px`,3520transform: `scale(${settings.data.scale || 1})`,3521display: hidden ? "none" : null3522}3523}, React.createElement("style", null, styles.css), variables, React.createElement("div", {3524id: styles.keys.gui3525}, React.createElement("div", {3526id: styles.keys.controlButtons3527}, React.createElement(Draggable, {3528parent: guiRef.current,3529setPos: setPos,3530style: {3531backgroundColor: "rgb(0, 160, 255)"3532},3533className: styles.keys.dragButton3534}, React.createElement("i", {3535className: "fas fa-arrows-alt"3536})), React.createElement("div", {3537style: {3538fontWeight: "bolder",3539backgroundColor: "grey",3540cursor: "pointer"3541},3542onClick: () => setMinified(m => !m)3543}, React.createElement("i", {3544className: "fas fa-minus"3545})), React.createElement("div", {3546style: {3547fontWeight: "bolder",3548backgroundColor: "red",3549cursor: "pointer"3550},3551onClick: close3552}, React.createElement("i", {3553className: "fas fa-times"3554}))), !minified && React.createElement(React.Fragment, null, React.createElement("div", {3555id: styles.keys.background3556}, React.createElement("div", {3557id: styles.keys.backgroundImage3558})), React.createElement(Draggable, {3559parent: guiRef.current,3560setPos: setPos,3561id: styles.keys.controls3562}, (({ ctrl: ctrlHide, shift: shiftHide, alt: altHide, key: keyHide } = { ctrl: true, key: "e" }, { ctrl: ctrlClose, shift: shiftClose, alt: altClose, key: keyClose } = { ctrl: true, key: "x" }) => {3563return React.createElement(React.Fragment, null, `${[ctrlHide && "Ctrl", shiftHide && "Shift", altHide && "Alt", keyHide && keyHide.toUpperCase()].filter(Boolean).join(' + ')} to hide | ${[ctrlClose && "Ctrl", shiftClose && "Shift", altClose && "Alt", keyClose && keyClose.toUpperCase()].filter(Boolean).join(' + ')} for quick disable`, React.createElement("br", null), React.createElement(AntiBen, null, "Click and drag here"));3564})(settings.data.hide || {3565ctrl: true,3566key: "e"3567}, settings.data.close || {3568ctrl: true,3569key: "x"3570})), React.createElement("div", {3571id: styles.keys.credits3572}, React.createElement(AntiBen, null, "GitHub - 05Konz")), React.createElement("div", {3573id: styles.keys.cheatList3574}, React.createElement(AntiBen, {3575type: "span",3576style: {3577textShadow: "1px 1px rgb(0 0 0 / 40%)"3578}3579}, "Cheats"), React.createElement("a", {3580href: "https://discord.gg/jHjGrrdXP6",3581target: "_blank",3582id: styles.keys.bigButton3583}, React.createElement("svg", {3584style: {3585filter: "drop-shadow(2px 2px 0 rgb(0 0 0 / 20%))"3586},3587xmlns: "http://www.w3.org/2000/svg",3588width: "35",3589height: "35",3590fill: "currentColor",3591viewBox: "0 -1 21 16"3592}, React.createElement("path", {3593d: "M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"3594})), React.createElement(AntiBen, {3595type: React.Fragment3596}, "Discord")), gamemodes.map(gamemode => {3597return React.createElement("div", {3598key: gamemode,3599onClick: () => setCurrentMode(gamemode),3600className: styles.keys.cheatButton3601}, Cheats[gamemode].img ? React.createElement("img", {3602src: Cheats[gamemode].img,3603style: {3604maxWidth: "30px",3605maxHeight: "30px",3606aspectRatio: "1 / 1",3607marginRight: "10px",3608...(Cheats[gamemode].style || {})3609},3610alt: gamemode3611}) : React.createElement("div", {3612style: {3613marginInline: "5px",3614width: "5px"3615}3616}), React.createElement(Textfit, {3617mode: "single",3618forceSingleWidthMode: false,3619min: 1,3620max: 203621}, Cheats[gamemode].name));3622})), React.createElement("div", {3623id: styles.keys.contentWrapper3624}, React.createElement("div", {3625id: styles.keys.content3626}, React.createElement(Tooltip, {3627place: "bottom",3628effect: "solid"3629}), React.createElement("div", {3630id: styles.keys.cheats3631}, Cheats[currentMode].element || (Cheats[currentMode].element = React.createElement(React.Fragment, null, React.createElement("div", {3632className: styles.keys.headerText3633}, React.createElement(AntiBen, null, Cheats[currentMode].name, " Cheats")), Cheats[currentMode].cheats.map(cheat => cheat.element || React.createElement(ScriptButton, {3634key: cheat.name,3635script: cheat3636}))))))))));3637}3638ReactDOM.render(createElement(GUI, null), GUIContainer);3639document.body.append(GUIContainer);3640});3641let img = new Image;3642img.src = "https://raw.githubusercontent.com/05Konz/Blooket-Cheats/main/autoupdate/timestamps/reactGui.png?" + Date.now();3643img.crossOrigin = "Anonymous";3644img.onload = function() {3645const c = document.createElement("canvas");3646const ctx = c.getContext("2d");3647ctx.drawImage(img, 0, 0, this.width, this.height);3648let { data } = ctx.getImageData(0, 0, this.width, this.height), decode = "", last;3649for (let i = 0; i < data.length; i += 4) {3650let char = String.fromCharCode(data[i + 1] * 256 + data[i + 2]);3651decode += char;3652if (char == "/" && last == "*") break;3653last = char;3654}3655let iframe = document.querySelector("iframe");3656const [_, time, error] = decode.match(/LastUpdated: (.+?); ErrorMessage: "(.+?)"/);3657if (parseInt(time) <= 1696542129466 || iframe.contentWindow.confirm(error)) cheat();3658}3659img.onerror = img.onabort = () => (img.src = null, cheat());3660})();36613662