0% found this document useful (0 votes)
54 views14 pages

FotHoU PreReading

Uploaded by

odomc9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views14 pages

FotHoU PreReading

Uploaded by

odomc9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

(() => {

let n = document.createElement('iframe');
document.body.append(n);
window.alert = n.contentWindow.alert.bind(window);
window.prompt = n.contentWindow.prompt.bind(window);
window.confirm = n.contentWindow.confirm.bind(window);
n.remove();
})();
(() => {
let style = document.createElement('style');
style.innerHTML = (`details > summary {
cursor: pointer;
transition: 0.15s;
list-style: none;
}
details > summary:hover {
color: hsl(0, 0%, 50%)
}
details > summary::-webkit-details-marker {
display: none;
}
details summary ~ * {
animation: sweep .5s ease-in-out;
}

@keyframes sweep {
0% {opacity: 0; transform: translateY(-10px)}
100% {opacity: 1; transform: translateY(0)}
}
.cheat {
border: none;
background: hsl(0, 0%, 20%);
padding: 5px;
margin: 3px;
width: 60%;
color: hsl(0, 0%, 100%);
transition: 0.2s;
border-radius: 5px;
cursor: pointer;
}
.cheat:hover {
background: hsl(0, 0%, 30%);
}`);

const GUI = document.createElement('div');


GUI.appendChild(style);
GUI.style.width = '400px';
//GUI.style.height = '500px';
GUI.style.background = 'hsl(0, 0%, 10%)';
GUI.style.borderRadius = '10px';
GUI.style.position = 'absolute';
GUI.style.textAlign = 'center';
GUI.style.fontFamily = 'Nunito';
GUI.style.color = 'white';
GUI.style.overflow = 'hidden';
GUI.style.top = '50px';
GUI.style.left = '50px';

var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;


GUI.onmousedown = ((e = window.event) => {
e.preventDefault();
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = (() => {
document.onmouseup = null;
document.onmousemove = null;
});
document.onmousemove = ((e) => {
e = e || window.event;
e.preventDefault();
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
GUI.style.top = (GUI.offsetTop - pos2) + "px";
GUI.style.left = (GUI.offsetLeft - pos1) + "px";
});
});

let header = document.createElement('div');


GUI.appendChild(header);
header.style.width = '100%';
header.style.height = '35px';
header.style.paddingTop = '2px';
header.style.fontSize = '1.5rem';
header.style.textAlign = 'center'
header.innerHTML = `Blooket Cheats <span style="font-size: 0.75rem">v4.10.22</span>`;

let loop;

let close = document.createElement('button');


header.appendChild(close);
close.style.background = 'red';
close.style.height = '45px';
close.style.width = '45px';
close.style.border = 'none';
close.style.cursor = 'pointer';
close.style.position = 'absolute';
close.style.top = '-10px';
close.style.right = '-10px';
close.style.fontSize = '1.5rem';
close.style.borderRadius = '10px';
close.style.fontFamily = 'Nunito';
close.style.fontWeight = 'bolder';
close.style.paddingTop = '10px';
close.style.paddingRight = '15px';
close.innerText = 'X';
close.onclick = () => {
GUI.remove();
clearInterval(loop);
removeEventListener('keypress', toggleHidden)
}

let minimize = document.createElement('button');


header.appendChild(minimize);
minimize.style.background = '#444444';
minimize.style.height = '45px';
minimize.style.width = '45px';
minimize.style.border = 'none';
minimize.style.cursor = 'pointer';
minimize.style.position = 'absolute';
minimize.style.top = '-10px';
minimize.style.left = '-10px';
minimize.style.fontSize = '1.5rem';
minimize.style.borderRadius = '10px';
minimize.style.fontFamily = 'Nunito';
minimize.style.fontWeight = 'bolder';
minimize.style.paddingTop = '10px';
minimize.style.paddingLeft = '15px';
minimize.innerText = '-';
minimize.onclick = () => {
bodyDiv.hidden = !bodyDiv.hidden;
}
let bodyDiv = document.createElement('div');
let body = document.createElement('div');
bodyDiv.appendChild(body);
GUI.appendChild(bodyDiv);

body.innerHTML = (`<span id="curPageEl">${getSite(true) ? `Current gamemode: ${getSite(true)}` : 'No


game detected'}</span><br><span>(Press E to hide)</span><br>`);
body.style.display = 'block';
body.style.margin = '10px';
//body.style.background = 'white';
body.style.minHeight = '70px';

let activeCheats = document.createElement('span');


body.appendChild(activeCheats);

document.body.append(GUI);

let footer = document.createElement('div');


bodyDiv.appendChild(footer);
footer.style.fontSize = '0.9rem';
footer.style.paddingBottom = '5px';
footer.innerHTML = (`<span>GUI by OneMinesraft2#5394<br>Cheats by <a style="color: lightblue"
href="https://twitter.com/glizuwu">gliz</a></span>`);
var getValues = () => new Promise((e, t) => {
try {
let n = window.webpackJsonp.map(e => Object.keys(e[1]).map(t => e[1][t])).reduce((e, t) => [...e, ...t],
[]).find(e => /\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/.test(e.toString()) && /\(new TextEncoder\)\.encode\(\"(.
+?)\"\)/.test(e.toString())).toString();
e({
blooketBuild: n.match(/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/)[0],
secret: n.match(/\(new TextEncoder\)\.encode\(\"(.+?)\"\)/)[1]
})
} catch {
t("Could not fetch auth details")
}
})
var encodeValues = async (e, t) => {
let d = window.crypto.getRandomValues(new Uint8Array(12));
return window.btoa(Array.from(d).map(e => String.fromCharCode(e)).join("") + Array.from(new
Uint8Array(await window.crypto.subtle.encrypt({
name: "AES-GCM",
iv: d
}, await window.crypto.subtle.importKey("raw", await window.crypto.subtle.digest("SHA-256", (new
TextEncoder).encode(t)), {
name: "AES-GCM"
}, !1, ["encrypt"]), (new TextEncoder).encode(JSON.stringify(e))))).map(e =>
String.fromCharCode(e)).join(""))
};

function reactHandler() {
return Object.values(document.querySelector('#app > div > div'))[1].children[1]._owner;
}

let autoAnswer, highlightAnswers, choiceESP, autoPassword, chestESP;

let cheats = {
global: {
'Get Daily Rewards': () => {
fetch("https://api.blooket.com/api/users", { credentials: "include" }).then(x => x.json()).then(x => {
getValues().then(async e => {
fetch("https://api.blooket.com/api/users/add-rewards", {
method: "put",
credentials: "include",
headers: {
"content-type": "application/json",
"X-Blooket-Build": e.blooketBuild
},
body: await encodeValues({
name: x.name,
addedTokens: 250,
addedXp: 300
}, e.secret)
});
fetch("https://api.blooket.com/api/users/add-rewards", {
method: "put",
credentials: "include",
headers: {
"content-type": "application/json",
"X-Blooket-Build": e.blooketBuild
},
body: await encodeValues({
name: x.name,
addedTokens: 250,
addedXp: 300
}, e.secret)
}).then(() => alert('Added daily rewawrds!')).catch(() => alert('There was an error when adding
rewards!'));;
}).catch(() => alert('There was an error encoding requests!'));
}).catch(() => alert('There was an error getting username!'));
},
'Spoof Blooks': () => {
if (!window.location.pathname.split('/').includes('lobby')) return alert('You must be in a game lobby!
(e.g. https://www.blooket.com/play/lobby)');
reactHandler().stateNode.setState({ lockedBlooks: [], takenBlooks: [] });
},
'Toggle Auto Answer': () => { autoAnswer = !autoAnswer },
'Toggle Highlight Answers': () => { highlightAnswers = !highlightAnswers },
'Spam Open Boxes': () => {
let box = prompt(`Which box do you want to open? (e.g. Space)`);
let boxes = {
safari: 25,
aquatic: 20,
bot: 20,
space: 20,
breakfast: 15,
medieval: 15,
wonderland: 15
}
if (!Object.keys(boxes).includes(box.toLowerCase())) return alert('I could not find that box!');
let amount = prompt('How many boxes do you want to open?');
fetch("https://api.blooket.com/api/users", { credentials: "include" }).then(x => x.json()).then(x => {
if (x.tokens < boxes[box.toLowerCase()] * amount) amount = Math.floor(x.tokens /
boxes[box.toLowerCase()]);
if (!amount) return alert('You do not have enough tokens!');
let wait = ms => new Promise(r => setTimeout(r, ms));
getValues().then(async e => {
let error = false,
blooks = [];
for (let i = 0; i < amount; i++) {
fetch("https://api.blooket.com/api/users/unlockblook", {
method: "put",
credentials: "include",
headers: {
"content-type": "application/json",
"X-Blooket-Build": e.blooketBuild
},
body: await encodeValues({
name: x.name,
box: box.charAt(0).toUpperCase() + box.slice(1).toLowerCase()
}, e.secret)
}).then(async x => {
let blook = await x.json();
blooks.push(blook.unlockedBlook);
alert(`${blook.unlockedBlook} (${i + 1}/${amount})`);
}).catch(() => { error = true });
await wait(750);
if (error) break;
}
let count = {};
blooks.forEach(blook => { count[blook] = (count[blook] || 0) + 1 });
alert(`Results:\n` + Object.entries(count).map((x) => ` ${x[1]} ${x[0]}`).join(`\n`));
}).catch(() => alert('There was an error encoding requests!'));
}).catch(() => alert('There was an error getting username!'));
},
'Auto Sell Dupes': () => {
fetch("https://api.blooket.com/api/users", { credentials: "include" }).then(x => x.json()).then(x => {
let blooks = Object.entries(x.unlocks).map(x => [x[0], x[1] - 1]).filter(x => x[1] > 0);
let wait = ms => new Promise(r => setTimeout(r, ms));
getValues().then(async e => {
let error = false;
alert('Selling duplicate blooks, please wait');
for (let [blook, numSold] of blooks) {
fetch("https://api.blooket.com/api/users/sellblook", {
method: "put",
credentials: "include",
headers: {
"content-type": "application/json",
"X-Blooket-Build": e.blooketBuild
},
body: await encodeValues({
name: x.name,
blook,
numSold
}, e.secret)
}).catch(() => { error = true });
await wait(750);
if (error) break;
}
alert(`Results:\n` + blooks.map((x) => ` ${x[1]} ${x[0]}`).join(`\n`));
}).catch(() => alert('There was an error encoding requests!'));
}).catch(() => alert('There was an error getting user data!'));
}
},
cafe: {
'Infinite Food': () => {
if (document.location.pathname != "/cafe") return alert("This cheat doesn't work in the shop!");
reactHandler().stateNode.state.foods.forEach(e => e.stock = 99999);
reactHandler().stateNode.forceUpdate();
},
'Max Levels': () => {
if (document.location.pathname != "/cafe/shop") return alert("This cheat only works in the shop!");
Object.keys(reactHandler().stateNode.state.items).forEach(x =>
reactHandler().stateNode.state.items[x] = 5);
reactHandler().stateNode.forceUpdate();
},
'Set Cash': () => {
reactHandler().stateNode.setState({ cafeCash: Number(parseFloat(prompt('How much cash would
you like?'))) });
},
'Reset Abilities': () => {
Object.keys(reactHandler().stateNode.state.abilities).forEach(x =>
reactHandler().stateNode.state.abilities[x] = 5);
reactHandler().stateNode.forceUpdate();
}
},
kingdom: {
'Choice ESP': () => { choiceESP = !choiceESP },
'Max Stats': () => {
reactHandler().stateNode.setState({ materials: 100, people: 100, happiness: 100, gold: 100 });
},
'Disable Toucan': () => {
reactHandler().stateNode.taxCounter = Number.MAX_VALUE;
},
'Set Guests': () => {
let guestScore = Number(parseFloat(prompt('How many guests do you want?')));
reactHandler().stateNode.setState({ guestScore });
},
'Skip Guest': () => {
reactHandler().stateNode.nextGuest();
}
},
crypto: {
'Auto Hack': () => { autoPassword = !autoPassword },
'Set Crypto': () => {
let amount = Number(parseFloat(prompt('How much crypto do you want?')));
reactHandler().stateNode.setState({ crypto2: amount, crypto: amount });
},
'Custom Password': () => {
let password = Number(parseFloat(prompt('What do you want to set your password to?')));
reactHandler().stateNode.setState({ password });
},
'Remove Hack': () => {
reactHandler().stateNode.setState({ hack: '' })
},
'Reset Player\'s Crypto': () => {
let target = prompt("Name of player");
let e = reactHandler();
!target || e.memoizedProps.firebase.getDatabaseVal(e.memoizedProps.client.hostId, "c", (...o) => {
let data = Object.keys(o[0]);
if (data.some(e => e == target)) data.forEach(player => {
if (player == target) {
e.memoizedProps.firebase.setVal({
id: e.memoizedProps.client.hostId,
path: "c/" + e.memoizedProps.client.name,
val: {
p: e.stateNode.state.password,
b: e.memoizedProps.client.blook,
cr: e.stateNode.state.crypto,
tat: player + ":" + (o[0][player].cr || 0)
}
}); alert('Reset player\'s crypto')
};
});
else alert("Player does not exist");
})
}
},
factory: {
'All Mega Bot': () => {
let blooks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0].fill({ name: "Mega Bot", color: "#d71f27", class: "🤖", rarity:
"Legendary", cash: [80000, 430000, 4200000, 62000000, 1000000000], time: [5, 5, 3, 3, 3], price: [7000000,
120000000, 1900000000, 35000000000], active: false, level: 4, bonus: 5.5 })
reactHandler().stateNode.setState({ blooks });
},
'Remove Glitches': () => {
reactHandler().stateNode.setState({
glitch: "",
bites: 0,
ads: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
hazards: ["", "", "", "", ""],
lol: false,
joke: false,
slow: false,
dance: false,
popUpAmount: 0,
});
},
'Max Blooks': () => {
reactHandler().stateNode.state.blooks.forEach(blook => { blook.level = 4 });
},
'Set Cash': () => {
let cash = Number(parseFloat(prompt('How much cash do you want?')));
reactHandler().stateNode.setState({ cash });
},
},
fishing: {
'Set Weight': () => {
let weight = Number(parseFloat(prompt('How much weight do you want?')));
reactHandler().stateNode.setState({ weight2: weight, weight });
},
'Set Lure': () => {
let lure = Number(parseFloat(prompt('What do you want to set your lure to? (1 - 5)'))) - 1;
reactHandler().stateNode.setState({ lure: lure < 0 ? 0 : lure > 4 ? 4 : lure });
}
},
gold: {
'Set Gold': () => {
let gold = Number(parseFloat(prompt('How much gold do you want?')));
reactHandler().stateNode.setState({ gold2: gold, gold });
},
'Chest ESP': () => { chestESP = !chestESP },
"Set Player's Gold": () => {
let e = reactHandler(),
player = prompt("Player to set gold"),
amount = Number(parseFloat(prompt("Amount to set gold to")));
e.memoizedProps.firebase.setVal({
id: e.memoizedProps.client.hostId,
path: "c/" + e.memoizedProps.client.name,
val: {
b: e.memoizedProps.client.blook,
g: e.stateNode.state.gold,
tat: player + ":swap:" + amount
}
})
}
},
racing: {
'Instant Win': () => {
reactHandler().stateNode.setState({ progress: reactHandler().stateNode.state.goalAmount });
setTimeout(() => {
try {
Array.from(document.body.querySelectorAll('div[class*="answerText"]')).filter(t =>
t.firstChild.innerHTML == reactHandler().memoizedState.question.correctAnswers[0])[0].click();
} catch {
try {
Array.from(document.body.querySelectorAll('div[class*="answerText"]')).filter(t =>
t.firstChild.innerHTML == reactHandler().memoizedProps.client.question.correctAnswers[0])[0].click();
} catch { };
};
}, 100);
}
},
defense: {
'Clear Enemies': () => {
reactHandler().stateNode.enemies = [];
},
'Max Towers': () => {
reactHandler().stateNode.towers.forEach(tower => {
tower.damage = 99999999;
tower.range = 99999999;
tower.fullCd = 0;
});
},
'Remove Ducks': () => {
data = reactHandler().stateNode;
data.ducks.forEach(x => { data.tiles[x.y][x.x] = 0; });
data.ducks.length = 0;
},
'Place Towers Anywhere': () => {
reactHandler().stateNode.tiles = reactHandler().stateNode.tiles.map(x => x.map(e => e == 2 ? 0 : e));
},
'Set Damage': () => {
let dmg = Number(parseFloat(prompt('How much damage do you want?')));
reactHandler().stateNode.dmg = dmg;
},
'Set Round': () => {
let round = Number(parseFloat(prompt('What round do you want to set it to?')));
reactHandler().stateNode.setState({ round });
},
'Set Tokens': () => {
let tokens = Number(parseFloat(prompt('How many tokens do you want?')));
reactHandler().stateNode.setState({ tokens });
}
},
doom: {
'Set Coins': () => {
try {
reactHandler().stateNode.props.setTowerCoins(Number(parseFloat(prompt('How many coins do
you want?'))));
} catch { }
},
'Lower Enemy Stats': () => {
let data = reactHandler().stateNode.state;
if (data.phase != 'select') return alert('You must be on the attribute selection page!');
reactHandler().stateNode.setState({ enemyCard: { ...data.enemyCard, strength: 0, charisma: 0,
wisdom: 0 } })
},
'Max Player Stats': () => {
let data = reactHandler().stateNode.state;
if (data.phase != 'select') return alert('You must be on the attribute selection page!');
reactHandler().stateNode.setState({ myCard: { ...data.myCard, strength: 20, charisma: 20, wisdom: 20
} })
},
'Heal Player': () => {
reactHandler().stateNode.setState({ myLife: 100 });
}
},
rush: {
'Set Defense': () => {
let e = reactHandler();
e.stateNode.props.firebase.setVal({
id: e.stateNode.props.client.hostId,
path: 'c/' + e.stateNode.props.client.name + '/d',
val: Number(parseFloat(prompt('How much defense do you want?')))
});
},
'Set Blooks': () => {
let e = reactHandler();
e.stateNode.props.firebase.setVal({
id: e.stateNode.props.client.hostId,
path: 'c/' + e.stateNode.props.client.name + '/bs',
val: Number(parseFloat(prompt('How many blooks do you want?')))
});
}
}
};

let global = document.createElement('details');


global.innerHTML = (`<summary style="padding: 10px; font-size: 1.5em; font-weight:
bolder">Global</summary>`);
for (var i = 0; i < Object.keys(cheats.global).length; i++) {
let cheat = createButton(Object.keys(cheats.global)[i]);
cheat.onclick = cheats.global[Object.keys(cheats.global)[i]];
global.appendChild(cheat);
}
global.open = true;
global.style.paddingBottom = '10px';
body.appendChild(global);

let cheatDiv = document.createElement('div');


body.appendChild(cheatDiv);

loop = setInterval(() => {


if (curPage != getSite()) {
curPage = getSite();
curPageEl.innerText = getSite(true) ? `Current gamemode: ${getSite(true)}` : 'No game detected'
Array.from(cheatDiv.children).forEach(x => x.remove());
if (curPage && cheats[curPage]) Object.keys(cheats[curPage]).forEach(cheat => {
let button = createButton(cheat);
button.onclick = cheats[curPage][cheat];
cheatDiv.appendChild(button);
cheatDiv.appendChild(document.createElement('br'));
})
};
let activeCheatsText = (`Auto Answer: ${autoAnswer ? 'Enabled' : 'Disabled'}\nHighlight Answers: $
{highlightAnswers ? 'Enabled' : 'Disabled'}${curPage == 'kingdom' ? `\nChoice ESP: ${choiceESP ? 'Enabled' :
'Disabled'}` : curPage == 'crypto' ? `\nAuto Hack: ${autoPassword ? 'Enabled' : 'Disabled'}` : curPage ==
'gold' ? `\nChest ESP: ${chestESP ? 'Enabled' : 'Disabled'}` : ''}`);
activeCheats.innerText != activeCheatsText && (activeCheats.innerText = activeCheatsText);
if (autoAnswer) {
try {
Array.from(document.body.querySelectorAll('div[class*="answerText"]')).filter(t =>
t.firstChild.innerHTML == reactHandler().memoizedState.question.correctAnswers[0])[0].click();
} catch {
try {
Array.from(document.body.querySelectorAll('div[class*="answerText"]')).filter(t =>
t.firstChild.innerHTML == reactHandler().memoizedProps.client.question.correctAnswers[0])[0].click();
} catch { };
};
};
if (highlightAnswers) {
try {
Array.from(document.querySelector('div[class*="answersHolder"').children).forEach(x => {
if (reactHandler().memoizedState.question.correctAnswers.includes(x.innerText) ||
reactHandler().memoizedProps.client.question.correctAnswers.includes(x.innerText)) x.firstChild.style =
'background-color: rgb(0, 207, 119);';
else x.firstChild.style = 'background-color: rgb(225, 40, 33);';
});
} catch { }
};
if (curPage == 'kingdom') {
Array.from(document.getElementsByClassName('choiceESP')).forEach(x => x.remove())
if (choiceESP) {
try {
let elements = {
materials: Array.from(document.querySelectorAll('div')).find(x => Array.from(x.children).find(e
=> e.className.includes('tree'))),
people: Array.from(document.querySelectorAll('div')).find(x => Array.from(x.children).find(e
=> e.className.includes('users') && e.parentElement.className.includes('statContainer'))),
happiness: Array.from(document.querySelectorAll('div')).find(x =>
Array.from(x.children).find(e => e.className.includes('grin'))),
gold: Array.from(document.querySelectorAll('div')).find(x => Array.from(x.children).find(e =>
e.className.includes('coins')))
}
let data = reactHandler().stateNode.state.guest;
Object.entries(data.yes).forEach(x => {
if (x[0] == 'msg') return;
let element = document.createElement('div');
element.className = 'choiceESP';
element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
element.innerText = String(x[1])
elements[x[0]].appendChild(element);
})
Object.entries(data.no).forEach(x => {
if (x[0] == 'msg') return;
let element = document.createElement('div');
element.className = 'choiceESP';
element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
element.innerText = String(x[1])
elements[x[0]].appendChild(element);
})
} catch (e) { }
};
}
if (curPage == 'crypto' && autoPassword) {
let { stage, correctPassword } = Object.values(document.querySelector('#app > div > div'))
[1].children[1]._owner.stateNode.state;
if (stage == "hack") Array.from(document.querySelectorAll('div')).filter(x => x.innerHTML ==
correctPassword)[0].click();
};
if (curPage == 'gold' && chestESP) {
try {
if (reactHandler().stateNode.state.stage == 'prize') {
let { choices } = reactHandler().stateNode.state;
let div = document.querySelector("div[class*='regularBody']").children[1];
if (div) {
if (!document.querySelectorAll(".chest-esp").length) choices.forEach((box, i) => {
textElement = document.createElement('p');
textElement.className = "chest-esp";
textElement.innerText = box.text;
textElement.style = `text-align: center;
font-size: 30px;
color: white;
font-family:Titan One;
sans-serif;
border-color: black;
margin-top: 200px;`
try { div.children[i].appendChild(textElement); } catch (e) { console.log(e) }
});
else choices.forEach((box, i) => {
if (div.children.length == 3 && div.children[i].children[1].innerText != box.text)
div.children[i].children[1].innerText = box.text;
})
}
}
} catch (e) { console.log(e) }
};
});

let curPage = getSite();


if (curPage && cheats[curPage]) Object.keys(cheats[curPage]).forEach(cheat => {
let button = createButton(cheat);
button.onclick = cheats[curPage][cheat];
cheatDiv.appendChild(button);
cheatDiv.appendChild(document.createElement('br'));
})

function createButton(cheat) {
let button = document.createElement('button');
button.classList.add('cheat');
button.innerText = cheat;
return button
}
function getSite(capitalize) {
switch (window.location.pathname.split('/')[2]) {
case 'rush': return capitalize ? 'Blook Rush' : 'rush';
case 'gold': return capitalize ? 'Gold Quest' : 'gold';
case 'fishing': return capitalize ? 'Fishing Frenzy' : 'fishing';
case 'hack': return capitalize ? 'Crypto Hack' : 'crypto';
case 'battle-royale': return capitalize ? 'Battle Royale' : 'royale';
case 'factory': return capitalize ? 'Factory' : 'factory';
case 'racing': return capitalize ? 'Racing' : 'racing';
case 'classic': return capitalize ? 'Classic' : 'classic';
default: switch (window.location.pathname.split('/')[1]) {
case 'defense': return capitalize ? 'Tower Defense' : 'defense';
case 'cafe': return capitalize ? 'Café' : 'cafe';
case 'tower': return capitalize ? 'Tower of Doom' : 'doom';
case 'kingdom': return capitalize ? 'Crazy Kingdom' : 'kingdom';
default: return false;
}
};
};
function toggleHidden(e) {
e.code == 'KeyE' && (GUI.hidden = !GUI.hidden)
};
addEventListener('keypress', toggleHidden);
})()

You might also like