// ==UserScript==
// @name ! 1 unknown client UNPACTHED AGAIN !!!!! OBFUSCATED
// @version v3.15
// @description HACK MOD SEND HACK PLES SEND HACK MOD OP HACK
// @match *://*.moomoo.io/*
// @author zen, .za
// @run-at document_idle
// @grant none
// @icon https://moomoo.io/img/favicon.png?v=1
// @namespace https://greasyfork.org/users/1417640
// @downloadURL https://update.greasyfork.icu/scripts/522535/%21%201%20unknown%20client%20UNPACTHED%20AGAIN%20%21%21%21%21%21%20OBFUSCATED.user.js
// @updateURL https://update.greasyfork.icu/scripts/522535/%21%201%20unknown%20client%20UNPACTHED%20AGAIN%20%21%21%21%21%21%20OBFUSCATED.meta.js
// ==/UserScript==
// preplacer causes fps drops , autobull,
// sometimes our anti spike tick wont let u survive from diamond spike ticker
// BTW IF YOU ARE GETTING INVALID CONNECTION ERROR YOU ARE TRYING TO JOIN THE GAME TOO FAST, WAIT A LITTLE BEFORE PRESSING ENTER GAME
// This mod is NOT for Low end pc
let backgroundDiv = document.createElement("div");
backgroundDiv.style.position = "fixed";
backgroundDiv.style.top = "0";
backgroundDiv.style.left = "0";
backgroundDiv.style.width = "100%";
backgroundDiv.style.height = "100%";
backgroundDiv.style.background = "#212121";
backgroundDiv.style.backgroundSize = "cover";
backgroundDiv.style.backgroundRepeat = "no-repeat";
backgroundDiv.style.backgroundPosition = "center";
backgroundDiv.style.display = "flex";
backgroundDiv.style.justifyContent = "center";
backgroundDiv.style.alignItems = "center";
backgroundDiv.style.color = "white";
backgroundDiv.style.fontSize = "35px";
backgroundDiv.style.zIndex = "99999999";
backgroundDiv.style.transition = "0.5s";
backgroundDiv.innerHTML = "\n\n\n
Loading...
\n";
document.body.appendChild(backgroundDiv);
setTimeout(() => {
backgroundDiv.innerHTML = "\n \n Game Loaded!
\n ";
setTimeout(() => {
backgroundDiv.style.opacity = "0";
setTimeout(() => {
backgroundDiv.style.display = "none";
}, 500);
}, 2000);
}, 2500);
const removeSnowflakes = () => {
const v = document.querySelectorAll(".snowflake");
v.forEach(p => {
p.parentNode.removeChild(p);
});
};
const createSnowflake = function () {
const v2 = document.createElement("div");
v2.className = "snowflake";
v2.style.position = "absolute";
v2.style.width = "10px";
v2.style.height = "10px";
v2.style.background = "#fff";
v2.style.borderRadius = "50%";
v2.style.zIndex = "9998";
v2.style.opacity = Math.random();
v2.style.left = Math.random() * 100 + "vw";
v2.style.animation = "fall " + (Math.random() * 2 + 1) + "s linear infinite";
v2.addEventListener("animationiteration", function () {
v2.style.left = Math.random() * 100 + "vw";
v2.style.opacity = Math.random();
});
return v2;
};
const styleSnowflakes = document.createElement("style");
styleSnowflakes.textContent = " @keyframes fall { 0% { transform: translateY(-10vh); opacity: 1; } 100% { transform: translateY(110vh); opacity: 0; } } .fast-fall { animation-duration: " + (Math.random() * 1 + 1) + "s; } ";
document.head.appendChild(styleSnowflakes);
const snowflakeContainer = document.createElement("div");
snowflakeContainer.style.position = "absolute";
snowflakeContainer.style.top = "0";
snowflakeContainer.style.left = "0";
snowflakeContainer.style.width = "100%";
snowflakeContainer.style.height = "100%";
snowflakeContainer.style.pointerEvents = "none";
snowflakeContainer.style.zIndex = "9998";
snowflakeContainer.style.display = "none";
document.body.appendChild(snowflakeContainer);
const maxSnowflakes = 40;
for (let i = 0; i < maxSnowflakes; i++) {
const snowflake = createSnowflake();
if (Math.random() > 0.7) {
snowflake.classList.add("fast-fall");
}
snowflakeContainer.appendChild(snowflake);
}
(function () {
'use strict';
let v3 = document.createElement("script");
v3.src = "https://www.youtube.com/iframe_api";
document.head.appendChild(v3);
let v4 = document.createElement("div");
v4.id = "modSidebar";
v4.style = "\n position: fixed; top: 10px; left: 10px; width: 200px;\n background-color: #2c2f33; color: #fff; padding: 10px;\n border-radius: 10px; z-index: 1000; font-family: Arial, sans-serif;\n box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); transition: opacity 0.5s ease,\n visibility 0.5s ease, transform 0.5s ease; opacity: 0; visibility: hidden;\n transform: translateX(-220px);\n ";
let v5 = document.createElement("div");
v5.id = "modRightPanel";
v5.style = "\n position: fixed; top: 10px; left: 220px; width: 350px;\n background-color: #2c2f33; color: #fff; padding: 10px;\n border-radius: 10px; z-index: 1000; font-family: Arial, sans-serif;\n box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); transition: opacity 0.5s ease,\n visibility 0.5s ease, transform 0.5s ease; opacity: 0; visibility: hidden;\n transform: translateX(0);\n ";
v4.innerHTML = "\n \n Unknown Client\n
\n Menu By CX \n
\n \n
\n
\n
\n
\n
\n\n";
v5.innerHTML = "\n \n \n
Combat
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n \n
Misc
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n \n
\n \n\n \n
Developer
\n
\n
\n
\n \n ";
document.body.appendChild(v4);
document.body.appendChild(v5);
const v6 = document.createElement("style");
v6.textContent = "\n .tab {\n display: flex; align-items: center; width: 100%; padding: 10px;\n margin-bottom: 5px; background-color: #23272a; color: white;\n border: none; border-radius: 5px; text-align: left; cursor: pointer;\n transition: background-color 0.3s ease, transform 0.3s ease;\n }\n .tab.active { background-color: #7289da; transform: scale(1.05); }\n .tab:hover { background-color: #414755; transform: scale(1.05); }\n .tabIcon {\n width: 20px; height: 20px; margin-right: 10px;\n transition: transform 0.3s ease; /* Smooth transition for movement */\n }\n .tab:hover .tabIcon {\n transform: translateX(10px); /* Move icon to the right on hover */\n }\n .content { display: none; }\n .content.active { display: block; }\n input[type=\"checkbox\"] {\n background: #999999; position: relative; appearance: none; width: 25px;\n height: 12px; border-radius: 50px; box-shadow: inset 0 0 5px rgba(41, 41, 41, 0.2);\n cursor: pointer; top: 7.5px; left: 0; transition: 0.4s;\n }\n input[type=\"checkbox\"]:checked {\n background: #7289da; box-shadow: inset 0 0 5px rgba(41, 41, 41, 0.2);\n }\n input[type=\"checkbox\"]::before {\n content: \"\"; position: absolute; border-radius: 50%; background: white;\n width: 16px; height: 16px; top: -2px; left: -2px; transition: 0.4s;\n }\n input:checked[type=\"checkbox\"]::before { left: 12px; }\n .customText { padding: 5px; border-radius: 5px; border: 1px solid #555; background: #333; color: #fff; }\n .styledSelect { background: #333; color: #fff; border: 1px solid #555; border-radius: 5px; padding: 5px; }\n .menuB {\n background: linear-gradient(145deg, #4b7bec, #2e86de);\n color: #fff;\n border: none;\n padding: 5px 10px;\n border-radius: 6px;\n cursor: pointer;\n margin-right: 5px;\n font-size: 12px;\n font-weight: normal;\n text-transform: none;\n transition: all 0.2s ease;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);\n }\n .menuB:hover {\n background: linear-gradient(145deg, #2e86de, #4b7bec);\n box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.3);\n }\n .menuB:active {\n background: linear-gradient(145deg, #1f4f8b, #2a5d9f);\n box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.3);\n }\n";
document.head.appendChild(v6);
function f(p2) {
document.querySelectorAll(".tab").forEach(p3 => p3.classList.remove("active"));
document.querySelectorAll(".content").forEach(p4 => p4.classList.remove("active"));
document.getElementById(p2 + "Tab").classList.add("active");
document.getElementById(p2 + "Content").classList.add("active");
}
document.getElementById("visualTab").addEventListener("click", () => f("visual"));
document.getElementById("combatTab").addEventListener("click", () => f("combat"));
document.getElementById("miscTab").addEventListener("click", () => f("misc"));
document.getElementById("devTab").addEventListener("click", () => f("dev"));
function f2() {
let v7 = v4.style.opacity === "1";
v4.style.opacity = v7 ? "0" : "1";
v4.style.visibility = v7 ? "hidden" : "visible";
v4.style.transform = v7 ? "translateX(-220px)" : "translateX(0)";
v5.style.opacity = v7 ? "0" : "1";
v5.style.visibility = v7 ? "hidden" : "visible";
v5.style.transform = v7 ? "translateX(220px)" : "translateX(0)";
}
document.addEventListener("keydown", p5 => {
if (p5.key === "Escape") {
f2();
}
});
document.getElementById("menuColor").addEventListener("input", p6 => {
const v8 = p6.target.value;
v4.style.backgroundColor = v8;
v5.style.backgroundColor = v8;
});
document.getElementById("tabColor").addEventListener("input", p7 => {
const v9 = p7.target.value;
document.querySelectorAll(".tab, .menuB").forEach(p8 => {
p8.style.backgroundColor = v9;
});
});
})();
const cursorStyles = [{
name: "Crosshair",
cursor: "crosshair"
}];
document.body.style.cursor = cursorStyles[0].cursor;
let testMode = window.location.hostname == "127.0.0.1";
let css = document.createElement("style");
css.type = "text/css";
css.appendChild(document.createTextNode("\n\n.actionBarItem {\n width: 66px;\n height: 66px;\n margin-right: 6px;\n background-color: #00000050;\n -webkit-border-radius: 0px;\n -moz-border-radius: 0px;\n border-radius: 5px;\n display: inline-block;\n cursor: pointer;\n pointer-events: all;\n background-size: cover;\n backdrop-filter: blur(1px);\n box-shadow: 0px 0px 6px #00000050;\n}\n#ageBarContainer {\n width: 100%;\n bottom: 120px;\n text-align: center;\n}\n#ageBar {\n background-color: #00000050;\n -webkit-border-radius: 8px;\n -moz-border-radius: 8px;\n border-radius: 8px;\n padding: 5px;\n width: 314px;\n height: 10px;\n display: inline-block;\n margin-bottom: 8px;\n backdrop-filter: blur(1px);\n box-shadow: 0px 0px 6px #00000050;\n}\n\n.gameButton, #leaderboard, .resourceDisplay,\n#mapDisplay, #allianceHolder, #allianceInput,\n.allianceButtonM, #storeHolder, .storeTab, #chatBox {\n color: #FFF;\n text-shadow:\n 0 0 5px rgba(173, 216, 230, 0.8),\n 0 0 10px rgba(173, 216, 230, 0.6),\n 0 0 20px rgba(173, 216, 230, 0.4),\n 0 0 30px rgba(173, 216, 230, 0.3);\n transition: text-shadow 0.3s ease-in-out;\n}\n\n.gameButton:hover, #leaderboard:hover,\n.resourceDisplay:hover, #mapDisplay:hover,\n#allianceHolder:hover, #allianceInput:hover,\n.allianceButtonM:hover, #storeHolder:hover,\n.storeTab:hover, #chatBox:hover {\n text-shadow:\n 0 0 10px rgba(173, 216, 230, 0.8),\n 0 0 20px rgba(173, 216, 230, 0.6),\n 0 0 30px rgba(173, 216, 230, 0.5),\n 0 0 40px rgba(173, 216, 230, 0.4);\n}\n\n\n"));
document.head.appendChild(css);
document.addEventListener("keydown", function (p9) {
if (p9.key === "Tab") {
p9.preventDefault();
}
if (p9.key === "F5") {
p9.preventDefault();
}
});
function onBoxMouseOver() {
this.style.transform = "scale(1.05)";
this.style.transition = "all 0.7s ease-in-out";
}
function onBoxMouseLeave() {
this.style.transition = "all 0.7s ease-in-out";
this.style.transform = "scale(1)";
}
function onEnterGameMouseOver() {
const v10 = document.getElementById("enterGame");
v10.style.backgroundColor = "rgba(255, 255, 0, 0.2)";
v10.style.borderRadius = "20px";
v10.style.transition = "all 0.7s ease-in-out";
}
function onEnterGameMouseLeave() {
const v11 = document.getElementById("enterGame");
v11.style.backgroundColor = "rgba(153, 50, 204, 0.3)";
v11.style.borderRadius = "15px";
v11.style.transition = "all 0.7s ease-in-out";
}
const boxes = document.querySelectorAll(".menuCard");
boxes.forEach(p10 => {
p10.style.transition = "transform 1s ease";
p10.addEventListener("mouseenter", onBoxMouseOver);
p10.addEventListener("mouseleave", onBoxMouseLeave);
});
const enterGameBox = document.getElementById("enterGame");
enterGameBox.addEventListener("mouseenter", onEnterGameMouseOver);
enterGameBox.addEventListener("mouseleave", onEnterGameMouseLeave);
const guideCardDiv = document.getElementById("guideCard");
if (guideCardDiv) {
guideCardDiv.style.position = "absolute";
guideCardDiv.style.width = "300px";
guideCardDiv.style.height = "200px";
guideCardDiv.style.top = "100%";
guideCardDiv.style.left = "41%";
guideCardDiv.style.zIndex = "9999";
}
let Leuchtturm = false;
setInterval(() => {
console.clear();
}, 500);
function getEl(p11) {
return document.getElementById(p11);
}
var EasyStar = function (p12) {
var v12 = {};
function f3(p13) {
if (v12[p13]) {
return v12[p13].exports;
}
var v13 = v12[p13] = {
i: p13,
l: false,
exports: {}
};
p12[p13].call(v13.exports, v13, v13.exports, f3);
v13.l = true;
return v13.exports;
}
f3.m = p12;
f3.c = v12;
f3.d = function (p14, p15, p16) {
if (!f3.o(p14, p15)) {
Object.defineProperty(p14, p15, {
enumerable: true,
get: p16
});
}
};
f3.r = function (p17) {
if (typeof Symbol != "undefined" && Symbol.toStringTag) {
Object.defineProperty(p17, Symbol.toStringTag, {
value: "Module"
});
}
Object.defineProperty(p17, "__esModule", {
value: true
});
};
f3.t = function (p18, p19) {
if (p19 & 1) {
p18 = f3(p18);
}
if (p19 & 8) {
return p18;
}
if (p19 & 4 && typeof p18 == "object" && p18 && p18.__esModule) {
return p18;
}
var v14 = Object.create(null);
f3.r(v14);
Object.defineProperty(v14, "default", {
enumerable: true,
value: p18
});
if (p19 & 2 && typeof p18 != "string") {
for (var v15 in p18) {
f3.d(v14, v15, function (p20) {
return p18[p20];
}.bind(null, v15));
}
}
return v14;
};
f3.n = function (p21) {
var v16 = p21 && p21.__esModule ? function () {
return p21.default;
} : function () {
return p21;
};
f3.d(v16, "f", v16);
return v16;
};
f3.o = function (p22, p23) {
return Object.prototype.hasOwnProperty.call(p22, p23);
};
f3.p = "/bin/";
return f3(f3.s = 0);
}([function (p24, p25, p26) {
var v17 = {};
var vP26 = p26(1);
var vP262 = p26(2);
var vP263 = p26(3);
p24.exports = v17;
var v18 = 1;
v17.js = function () {
var v19;
var v20;
var v21;
var v22 = 1.4;
var v23 = false;
var v24 = {};
var v25 = {};
var v26 = {};
var v27 = {};
var v28 = true;
var v29 = {};
var v30 = [];
var v31 = Number.MAX_VALUE;
var v32 = false;
this.setAcceptableTiles = function (p27) {
if (p27 instanceof Array) {
v21 = p27;
} else if (!isNaN(parseFloat(p27)) && isFinite(p27)) {
v21 = [p27];
}
};
this.enableSync = function () {
v23 = true;
};
this.disableSync = function () {
v23 = false;
};
this.enableDiagonals = function () {
v32 = true;
};
this.disableDiagonals = function () {
v32 = false;
};
this.setGrid = function (p28) {
v19 = p28;
for (var v33 = 0; v33 < v19.length; v33++) {
for (var v34 = 0; v34 < v19[0].length; v34++) {
v25[v19[v33][v34]] ||= 1;
}
}
};
this.setTileCost = function (p29, p30) {
v25[p29] = p30;
};
this.setAdditionalPointCost = function (p31, p32, p33) {
if (v26[p32] === undefined) {
v26[p32] = {};
}
v26[p32][p31] = p33;
};
this.removeAdditionalPointCost = function (p34, p35) {
if (v26[p35] !== undefined) {
delete v26[p35][p34];
}
};
this.removeAllAdditionalPointCosts = function () {
v26 = {};
};
this.setDirectionalCondition = function (p36, p37, p38) {
if (v27[p37] === undefined) {
v27[p37] = {};
}
v27[p37][p36] = p38;
};
this.removeAllDirectionalConditions = function () {
v27 = {};
};
this.setIterationsPerCalculation = function (p39) {
v31 = p39;
};
this.avoidAdditionalPoint = function (p40, p41) {
if (v24[p41] === undefined) {
v24[p41] = {};
}
v24[p41][p40] = 1;
};
this.stopAvoidingAdditionalPoint = function (p42, p43) {
if (v24[p43] !== undefined) {
delete v24[p43][p42];
}
};
this.enableCornerCutting = function () {
v28 = true;
};
this.disableCornerCutting = function () {
v28 = false;
};
this.stopAvoidingAllAdditionalPoints = function () {
v24 = {};
};
this.findPath = function (p44, p45, p46, p47, p48) {
function f4(p49) {
if (v23) {
p48(p49);
} else {
setTimeout(function () {
p48(p49);
});
}
}
if (v21 === undefined) {
throw new Error("You can't set a path without first calling setAcceptableTiles() on EasyStar.");
}
if (v19 === undefined) {
throw new Error("You can't set a path without first calling setGrid() on EasyStar.");
}
if (p44 < 0 || p45 < 0 || p46 < 0 || p47 < 0 || p44 > v19[0].length - 1 || p45 > v19.length - 1 || p46 > v19[0].length - 1 || p47 > v19.length - 1) {
throw new Error("Your start or end point is outside the scope of your grid.");
}
if (p44 !== p46 || p45 !== p47) {
var v35 = v19[p47][p46];
var v36 = false;
for (var v37 = 0; v37 < v21.length; v37++) {
if (v35 === v21[v37]) {
v36 = true;
break;
}
}
if (v36 !== false) {
var v38 = new vP26();
v38.openList = new vP263(function (p50, p51) {
return p50.bestGuessDistance() - p51.bestGuessDistance();
});
v38.isDoneCalculating = false;
v38.nodeHash = {};
v38.startX = p44;
v38.startY = p45;
v38.endX = p46;
v38.endY = p47;
v38.callback = f4;
v38.openList.push(f9(v38, v38.startX, v38.startY, null, 1));
p47 = v18++;
v29[p47] = v38;
v30.push(p47);
return p47;
}
f4(null);
} else {
f4([]);
}
};
this.cancelPath = function (p52) {
return p52 in v29 && (delete v29[p52], true);
};
this.calculate = function () {
if (v30.length !== 0 && v19 !== undefined && v21 !== undefined) {
for (v20 = 0; v20 < v31; v20++) {
if (v30.length === 0) {
return;
}
if (v23) {
v20 = 0;
}
var v39 = v30[0];
var v40 = v29[v39];
if (v40 !== undefined) {
if (v40.openList.size() !== 0) {
var v41 = v40.openList.pop();
if (v40.endX !== v41.x || v40.endY !== v41.y) {
if ((v41.list = 0) < v41.y) {
f5(v40, v41, 0, -1, +f8(v41.x, v41.y - 1));
}
if (v41.x < v19[0].length - 1) {
f5(v40, v41, 1, 0, +f8(v41.x + 1, v41.y));
}
if (v41.y < v19.length - 1) {
f5(v40, v41, 0, 1, +f8(v41.x, v41.y + 1));
}
if (v41.x > 0) {
f5(v40, v41, -1, 0, +f8(v41.x - 1, v41.y));
}
if (v32) {
if (v41.x > 0 && v41.y > 0 && (v28 || f6(v19, v21, v41.x, v41.y - 1, v41) && f6(v19, v21, v41.x - 1, v41.y, v41))) {
f5(v40, v41, -1, -1, v22 * f8(v41.x - 1, v41.y - 1));
}
if (v41.x < v19[0].length - 1 && v41.y < v19.length - 1 && (v28 || f6(v19, v21, v41.x, v41.y + 1, v41) && f6(v19, v21, v41.x + 1, v41.y, v41))) {
f5(v40, v41, 1, 1, v22 * f8(v41.x + 1, v41.y + 1));
}
if (v41.x < v19[0].length - 1 && v41.y > 0 && (v28 || f6(v19, v21, v41.x, v41.y - 1, v41) && f6(v19, v21, v41.x + 1, v41.y, v41))) {
f5(v40, v41, 1, -1, v22 * f8(v41.x + 1, v41.y - 1));
}
if (v41.x > 0 && v41.y < v19.length - 1 && (v28 || f6(v19, v21, v41.x, v41.y + 1, v41) && f6(v19, v21, v41.x - 1, v41.y, v41))) {
f5(v40, v41, -1, 1, v22 * f8(v41.x - 1, v41.y + 1));
}
}
} else {
var v42 = [];
v42.push({
x: v41.x,
y: v41.y
});
for (var v43 = v41.parent; v43 != null;) {
v42.push({
x: v43.x,
y: v43.y
});
v43 = v43.parent;
}
v42.reverse();
v40.callback(v42);
delete v29[v39];
v30.shift();
}
} else {
v40.callback(null);
delete v29[v39];
v30.shift();
}
} else {
v30.shift();
}
}
}
};
function f5(p53, p54, p55, p56, p57) {
p55 = p54.x + p55;
p56 = p54.y + p56;
if ((v24[p56] === undefined || v24[p56][p55] === undefined) && !!f6(v19, v21, p55, p56, p54)) {
if ((p56 = f9(p53, p55, p56, p54, p57)).list === undefined) {
p56.list = 1;
p53.openList.push(p56);
} else if (p54.costSoFar + p57 < p56.costSoFar) {
p56.costSoFar = p54.costSoFar + p57;
p56.parent = p54;
p53.openList.updateItem(p56);
}
}
}
function f6(p58, p59, p60, p61, p62) {
var v44 = v27[p61] && v27[p61][p60];
if (v44) {
var v_0x608561 = f7(p62.x - p60, p62.y - p61);
if (!function () {
for (var v45 = 0; v45 < v44.length; v45++) {
if (v44[v45] === v_0x608561) {
return true;
}
}
return false;
}()) {
return false;
}
}
for (var v46 = 0; v46 < p59.length; v46++) {
if (p58[p61][p60] === p59[v46]) {
return true;
}
}
return false;
}
function f7(p63, p64) {
if (p63 === 0 && p64 === -1) {
return v17.TOP;
}
if (p63 === 1 && p64 === -1) {
return v17.TOP_RIGHT;
}
if (p63 === 1 && p64 === 0) {
return v17.RIGHT;
}
if (p63 === 1 && p64 === 1) {
return v17.BOTTOM_RIGHT;
}
if (p63 === 0 && p64 === 1) {
return v17.BOTTOM;
}
if (p63 === -1 && p64 === 1) {
return v17.BOTTOM_LEFT;
}
if (p63 === -1 && p64 === 0) {
return v17.LEFT;
}
if (p63 === -1 && p64 === -1) {
return v17.TOP_LEFT;
}
throw new Error("These differences are not valid: " + p63 + ", " + p64);
}
function f8(p65, p66) {
return v26[p66] && v26[p66][p65] || v25[v19[p66][p65]];
}
function f9(p67, p68, p69, p70, p71) {
if (p67.nodeHash[p69] !== undefined) {
if (p67.nodeHash[p69][p68] !== undefined) {
return p67.nodeHash[p69][p68];
}
} else {
p67.nodeHash[p69] = {};
}
var v47 = f10(p68, p69, p67.endX, p67.endY);
var p71 = p70 !== null ? p70.costSoFar + p71 : 0;
var v47 = new vP262(p70, p68, p69, p71, v47);
return p67.nodeHash[p69][p68] = v47;
}
function f10(p72, p73, p74, p75) {
var v48;
var v49;
if (v32) {
if ((v48 = Math.abs(p72 - p74)) < (v49 = Math.abs(p73 - p75))) {
return v22 * v48 + v49;
} else {
return v22 * v49 + v48;
}
} else {
return (v48 = Math.abs(p72 - p74)) + (v49 = Math.abs(p73 - p75));
}
}
};
v17.TOP = "TOP";
v17.TOP_RIGHT = "TOP_RIGHT";
v17.RIGHT = "RIGHT";
v17.BOTTOM_RIGHT = "BOTTOM_RIGHT";
v17.BOTTOM = "BOTTOM";
v17.BOTTOM_LEFT = "BOTTOM_LEFT";
v17.LEFT = "LEFT";
v17.TOP_LEFT = "TOP_LEFT";
}, function (p76, p77) {
p76.exports = function () {
this.pointsToAvoid = {};
this.startX;
this.callback;
this.startY;
this.endX;
this.endY;
this.nodeHash = {};
this.openList;
};
}, function (p78, p79) {
p78.exports = function (p80, p81, p82, p83, p84) {
this.parent = p80;
this.x = p81;
this.y = p82;
this.costSoFar = p83;
this.simpleDistanceToTarget = p84;
this.bestGuessDistance = function () {
return this.costSoFar + this.simpleDistanceToTarget;
};
};
}, function (p85, p86, p87) {
p85.exports = p87(4);
}, function (p88, p89, p90) {
var v50;
var v51;
(function () {
var v52;
var v53;
var v54;
var v55;
var v56;
var v57;
var v58;
var v59;
var v60;
var v61;
var v62;
var v63;
var v64;
var v65;
var v66;
function f11(p91) {
this.cmp = p91 ?? v53;
this.nodes = [];
}
v54 = Math.floor;
v61 = Math.min;
v53 = function (p92, p93) {
if (p92 < p93) {
return -1;
} else if (p93 < p92) {
return 1;
} else {
return 0;
}
};
v60 = function (p94, p95, p96, p97, p98) {
var v67;
if (p96 == null) {
p96 = 0;
}
if (p98 == null) {
p98 = v53;
}
if (p96 < 0) {
throw new Error("lo must be non-negative");
}
for (p97 == null && (p97 = p94.length); p96 < p97;) {
if (p98(p95, p94[v67 = v54((p96 + p97) / 2)]) < 0) {
p97 = v67;
} else {
p96 = v67 + 1;
}
}
[].splice.apply(p94, [p96, p96 - p96].concat(p95));
return p95;
};
v57 = function (p99, p100, p101) {
if (p101 == null) {
p101 = v53;
}
p99.push(p100);
return v65(p99, 0, p99.length - 1, p101);
};
v56 = function (p102, p103) {
var v68;
var v69;
if (p103 == null) {
p103 = v53;
}
v68 = p102.pop();
if (p102.length) {
v69 = p102[0];
p102[0] = v68;
v66(p102, 0, p103);
} else {
v69 = v68;
}
return v69;
};
v59 = function (p104, p105, p106) {
var v70;
if (p106 == null) {
p106 = v53;
}
v70 = p104[0];
p104[0] = p105;
v66(p104, 0, p106);
return v70;
};
v58 = function (p107, p108, p109) {
var v71;
if (p109 == null) {
p109 = v53;
}
if (p107.length && p109(p107[0], p108) < 0) {
p108 = (v71 = [p107[0], p108])[0];
p107[0] = v71[1];
v66(p107, 0, p109);
}
return p108;
};
v55 = function (p110, p111) {
var v72;
var v73;
var v74;
var v75;
var v76;
var v77;
if (p111 == null) {
p111 = v53;
}
v76 = [];
v73 = 0;
v74 = (v75 = function () {
v77 = [];
for (var v78 = 0, vV54 = v54(p110.length / 2); vV54 >= 0 ? v78 < vV54 : vV54 < v78; vV54 >= 0 ? v78++ : v78--) {
v77.push(v78);
}
return v77;
}.apply(this).reverse()).length;
for (; v73 < v74; v73++) {
v72 = v75[v73];
v76.push(v66(p110, v72, p111));
}
return v76;
};
v64 = function (p112, p113, p114) {
if (p114 == null) {
p114 = v53;
}
if ((p113 = p112.indexOf(p113)) !== -1) {
v65(p112, 0, p113, p114);
return v66(p112, p113, p114);
}
};
v62 = function (p115, p116, p117) {
var v79;
var v80;
var v81;
var v82;
var v83;
if (p117 == null) {
p117 = v53;
}
if (!(v80 = p115.slice(0, p116)).length) {
return v80;
}
v55(v80, p117);
v81 = 0;
v82 = (v83 = p115.slice(p116)).length;
for (; v81 < v82; v81++) {
v79 = v83[v81];
v58(v80, v79, p117);
}
return v80.sort(p117).reverse();
};
v63 = function (p118, p119, p120) {
var v84;
var v85;
var v86;
var v87;
var v88;
var v89;
var v90;
var v91;
var v92;
if (p120 == null) {
p120 = v53;
}
if (p119 * 10 <= p118.length) {
if (!(v86 = p118.slice(0, p119).sort(p120)).length) {
return v86;
}
v85 = v86[v86.length - 1];
v87 = 0;
v89 = (v90 = p118.slice(p119)).length;
for (; v87 < v89; v87++) {
if (p120(v84 = v90[v87], v85) < 0) {
v60(v86, v84, 0, null, p120);
v86.pop();
v85 = v86[v86.length - 1];
}
}
return v86;
}
v55(p118, p120);
v92 = [];
v88 = 0;
v91 = v61(p119, p118.length);
for (; v91 >= 0 ? v88 < v91 : v91 < v88; v91 >= 0 ? ++v88 : --v88) {
v92.push(v56(p118, p120));
}
return v92;
};
v65 = function (p121, p122, p123, p124) {
var v93;
var v94;
var v95;
if (p124 == null) {
p124 = v53;
}
v93 = p121[p123];
while (p122 < p123 && p124(v93, v94 = p121[v95 = p123 - 1 >> 1]) < 0) {
p121[p123] = v94;
p123 = v95;
}
return p121[p123] = v93;
};
v66 = function (p125, p126, p127) {
var v96;
var v97;
var v98;
var v99;
var v100;
if (p127 == null) {
p127 = v53;
}
v97 = p125.length;
v98 = p125[v100 = p126];
v96 = p126 * 2 + 1;
while (v96 < v97) {
if ((v99 = v96 + 1) < v97 && !(p127(p125[v96], p125[v99]) < 0)) {
v96 = v99;
}
p125[p126] = p125[v96];
v96 = (p126 = v96) * 2 + 1;
}
p125[p126] = v98;
return v65(p125, v100, p126, p127);
};
f11.push = v57;
f11.pop = v56;
f11.replace = v59;
f11.pushpop = v58;
f11.heapify = v55;
f11.updateItem = v64;
f11.nlargest = v62;
f11.nsmallest = v63;
f11.prototype.push = function (p128) {
return v57(this.nodes, p128, this.cmp);
};
f11.prototype.pop = function () {
return v56(this.nodes, this.cmp);
};
f11.prototype.peek = function () {
return this.nodes[0];
};
f11.prototype.contains = function (p129) {
return this.nodes.indexOf(p129) !== -1;
};
f11.prototype.replace = function (p130) {
return v59(this.nodes, p130, this.cmp);
};
f11.prototype.pushpop = function (p131) {
return v58(this.nodes, p131, this.cmp);
};
f11.prototype.heapify = function () {
return v55(this.nodes, this.cmp);
};
f11.prototype.updateItem = function (p132) {
return v64(this.nodes, p132, this.cmp);
};
f11.prototype.clear = function () {
return this.nodes = [];
};
f11.prototype.empty = function () {
return this.nodes.length === 0;
};
f11.prototype.size = function () {
return this.nodes.length;
};
f11.prototype.clone = function () {
var v101 = new f11();
v101.nodes = this.nodes.slice(0);
return v101;
};
f11.prototype.toArray = function () {
return this.nodes.slice(0);
};
f11.prototype.insert = f11.prototype.push;
f11.prototype.top = f11.prototype.peek;
f11.prototype.front = f11.prototype.peek;
f11.prototype.has = f11.prototype.contains;
f11.prototype.copy = f11.prototype.clone;
v52 = f11;
v50 = [];
if ((v51 = typeof (v51 = function () {
return v52;
}) == "function" ? v51.apply(p89, v50) : v51) !== undefined) {
p88.exports = v51;
}
}).call(this);
}]);
let easystar = new EasyStar.js();
document.getElementById("gameName").innerHTML = "";
$("#gameName").css({
display: "none"
});
let coolFont = document.createElement("link");
coolFont.rel = "stylesheet";
coolFont.href = "https://fonts.googleapis.com/css2?family=Lilita+One&display=swap";
coolFont.type = "text/css";
document.body.append(coolFont);
let min = document.createElement("script");
min.src = "https://rawgit.com/kawanet/msgpack-lite/master/dist/msgpack.min.js";
document.body.append(min);
window.oncontextmenu = function () {
return false;
};
let config = window.config;
config.clientSendRate = 9;
config.serverUpdateRate = 9;
config.deathFadeout = 0;
config.playerCapacity = 50;
config.isSandbox = window.location.hostname == "sandbox.moomoo.io";
config.skinColors = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#91b2db"];
config.weaponVariants = [{
id: 0,
src: "",
xp: 0,
val: 1
}, {
id: 1,
src: "_g",
xp: 3000,
val: 1.1
}, {
id: 2,
src: "_d",
xp: 7000,
val: 1.18
}, {
id: 3,
src: "_r",
poison: true,
xp: 12000,
val: 1.18
}, {
id: 4,
src: "_e",
poison: true,
heal: true,
xp: 24000,
val: 1.18
}];
config.anotherVisual = true;
config.useWebGl = false;
config.resetRender = true;
function waitTime(p133) {
return new Promise(p134 => {
setTimeout(() => {
p134();
}, p133);
});
}
let botSkts = [];
let canStore;
if (typeof Storage !== "undefined") {
canStore = true;
}
function saveVal(p135, p136) {
if (canStore) {
localStorage.setItem(p135, p136);
}
}
function deleteVal(p137) {
if (canStore) {
localStorage.removeItem(p137);
}
}
function getSavedVal(p138) {
if (canStore) {
return localStorage.getItem(p138);
}
return null;
}
let gC = function (p139, p140) {
try {
let v102 = JSON.parse(getSavedVal(p139));
if (typeof v102 === "object") {
return p140;
} else {
return v102;
}
} catch (_0x3f328e) {
return p140;
}
};
function setCommands() {}
function setConfigs() {
return {};
}
let commands = setCommands();
let configs = setConfigs();
window.removeConfigs = function () {
for (let v103 in configs) {
deleteVal(v103, configs[v103]);
}
};
for (let cF in configs) {
configs[cF] = gC(cF, configs[cF]);
}
window.changeMenu = function () {};
window.debug = function () {};
window.wasdMode = function () {};
window.startGrind = function () {};
window.connectFillBots = function () {};
window.destroyFillBots = function () {};
window.tryConnectBots = function () {};
window.destroyBots = function () {};
window.resBuild = function () {};
window.toggleBotsCircle = function () {};
window.toggleVisual = function () {};
window.prepareUI = function () {};
window.leave = function () {};
window.ping = 0;
class HtmlAction {
constructor(p141) {
this.element = p141;
}
add(p142) {
if (!this.element) {
return undefined;
}
this.element.innerHTML += p142;
}
newLine(p143) {
let v104 = "
";
if (p143 > 0) {
v104 = "";
for (let v105 = 0; v105 < p143; v105++) {
v104 += "
";
}
}
this.add(v104);
}
checkBox(p144) {
let v106 = "";
this.add(v106);
}
text(p145) {
let v107 = "";
this.add(v107);
}
select(p146) {
let v108 = "";
this.add(v108);
}
button(p147) {
let v110 = "";
this.add(v110);
}
selectMenu(p148) {
let v111 = "";
this.add(v111);
v113 = 0;
for (let v115 in p148.menu) {
window[v115 + "Func"] = function () {
p148.menu[v115] = getEl("check_" + v115).checked ? true : false;
saveVal(v115, p148.menu[v115]);
getEl("O_" + v115).style.color = p148.menu[v115] ? "#000" : "#fff";
getEl("O_" + v115).style.background = p148.menu[v115] ? "#8ecc51" : "#cc5151";
};
this.checkBox({
id: "check_" + v115,
style: "display: " + (v113 == 0 ? "inline-block" : "none") + ";",
class: "checkB",
onclick: "window." + (v115 + "Func") + "()",
checked: p148.menu[v115]
});
v113++;
}
v112 = "check_" + getEl(p148.id).value.split("_")[1];
window[p148.id + "Func"] = function () {
getEl(v112).style.display = "none";
v112 = "check_" + getEl(p148.id).value.split("_")[1];
getEl(v112).style.display = "inline-block";
};
}
}
;
class Html {
constructor() {
this.element = null;
this.action = null;
this.divElement = null;
this.startDiv = function (p149, p150) {
let v116 = document.createElement("div");
if (p149.id) {
v116.id = p149.id;
}
if (p149.style) {
v116.style = p149.style;
}
if (p149.class) {
v116.className = p149.class;
}
this.element.appendChild(v116);
this.divElement = v116;
let v117 = new HtmlAction(v116);
if (typeof p150 == "function") {
p150(v117);
}
};
this.addDiv = function (p151, p152) {
let v118 = document.createElement("div");
if (p151.id) {
v118.id = p151.id;
}
if (p151.style) {
v118.style = p151.style;
}
if (p151.class) {
v118.className = p151.class;
}
if (p151.appendID) {
getEl(p151.appendID).appendChild(v118);
}
this.divElement = v118;
let v119 = new HtmlAction(v118);
if (typeof p152 == "function") {
p152(v119);
}
};
}
set(p153) {
this.element = getEl(p153);
this.action = new HtmlAction(this.element);
}
resetHTML(p154) {
if (p154) {
this.element.innerHTML = "";
} else {
this.element.innerHTML = "";
}
}
setStyle(p155) {
this.element.style = p155;
}
setCSS(p156) {
this.action.add("");
}
}
;
let HTML = new Html();
let menuChatDiv = document.createElement("div");
menuChatDiv.id = "menuChatDiv";
document.body.appendChild(menuChatDiv);
HTML.set("menuChatDiv");
HTML.setStyle("");
HTML.resetHTML();
HTML.setCSS(" ");
HTML.startDiv({
id: "mChDiv",
class: "chDiv"
}, p157 => {
HTML.addDiv({
id: "mChMain",
class: "chMainDiv",
appendID: "mChDiv"
}, p158 => {});
p157.text({
id: "mChBox",
class: "chMainBox"
});
});
let menuChats = getEl("mChMain");
let menuChatBox = getEl("mChBox");
let menuCBFocus = false;
let menuChCounts = 0;
menuChatBox.value = "";
menuChatBox.addEventListener("focus", () => {
menuCBFocus = true;
});
menuChatBox.addEventListener("blur", () => {
menuCBFocus = false;
});
let menuIndex = 0;
let menus = ["menuMain", "menuConfig", "menuOther"];
window.changeMenu = function () {
getEl(menus[menuIndex % menus.length]).style.display = "none";
menuIndex++;
getEl(menus[menuIndex % menus.length]).style.display = "block";
};
let mStatus = document.createElement("div");
mStatus.id = "status";
getEl("gameUI").appendChild(mStatus);
HTML.set("status");
HTML.setStyle("\n display: block;\n position: absolute;\n color: #ddd;\n font: 15px Hammersmith One;\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n ");
HTML.resetHTML();
HTML.setCSS("\n .sizing {\n font-size: 13px;\n }\n .mod {\n font-size: 13px;\n display: inline-block;\n }\n ");
HTML.startDiv({
id: "uehmod",
class: "sizing"
}, p159 => {
p159.add("Ping: ");
HTML.addDiv({
id: "pingFps",
class: "mod",
appendID: "uehmod"
}, p160 => {
p160.add("None");
});
});
let openMenu = false;
let WS = undefined;
let socketID = undefined;
let useWasd = false;
let secPacket = 0;
let secMax = 120;
let secTime = 1000;
let firstSend = {
sec: false
};
let game = {
tick: 0,
tickQueue: [],
tickBase: function (p161, p162) {
if (this.tickQueue[this.tick + p162]) {
this.tickQueue[this.tick + p162].push(p161);
} else {
this.tickQueue[this.tick + p162] = [p161];
}
},
tickRate: 1000 / config.serverUpdateRate,
tickSpeed: 0,
lastTick: performance.now()
};
let modConsole = [];
let dontSend = false;
let fpsTimer = {
last: 0,
time: 0,
ltime: 0
};
let lastMoveDir = undefined;
let lastsp = ["unknown1l", 1, "__proto__"];
WebSocket.prototype.nsend = WebSocket.prototype.send;
WebSocket.prototype.send = function (p163) {
if (!WS) {
WS = this;
WS.addEventListener("message", function (p164) {
getMessage(p164);
});
WS.addEventListener("close", p165 => {
if (p165.code == 4001) {
window.location.reload();
}
});
}
if (WS == this) {
dontSend = false;
let v120 = new Uint8Array(p163);
let v121 = window.msgpack.decode(v120);
let v122 = v121[0];
v120 = v121[1];
if (v122 == "6") {
if (v120[0]) {
let v123 = ["cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard"];
let v124;
v123.forEach(p166 => {
if (v120[0].indexOf(p166) > -1) {
v124 = "";
for (let v125 = 0; v125 < p166.length; ++v125) {
if (v125 == 1) {
v124 += String.fromCharCode(0);
}
v124 += p166[v125];
}
let v126 = new RegExp(p166, "g");
v120[0] = v120[0].replace(v126, v124);
}
});
v120[0] = v120[0].slice(0, 30);
}
} else if (v122 == "L") {
v120[0] = v120[0] + String.fromCharCode(0).repeat(7);
v120[0] = v120[0].slice(0, 7);
} else if (v122 == "M") {
v120[0].name = v120[0].name == "" ? "unknown" : v120[0].name;
v120[0].moofoll = true;
v120[0].skin = v120[0].skin == 10 ? "__proto__" : v120[0].skin;
lastsp = [v120[0].name, v120[0].moofoll, v120[0].skin];
} else if (v122 == "D") {
if (my.lastDir == v120[0] || [null, undefined].includes(v120[0])) {
dontSend = true;
} else {
my.lastDir = v120[0];
}
} else if (v122 == "d") {
if (!v120[2]) {
dontSend = true;
} else if (![null, undefined].includes(v120[1])) {
my.lastDir = v120[1];
}
} else if (v122 == "K") {
if (!v120[1]) {
dontSend = true;
}
} else if (v122 == "S") {
instaC.wait = !instaC.wait;
dontSend = true;
} else if (v122 == "f") {
if (v120[1]) {
if (player.moveDir == v120[0]) {
dontSend = true;
}
player.moveDir = v120[0];
} else {
dontSend = true;
}
}
if (!dontSend) {
let v127 = window.msgpack.encode([v122, v120]);
this.nsend(v127);
if (!firstSend.sec) {
firstSend.sec = true;
setTimeout(() => {
firstSend.sec = false;
secPacket = 0;
}, secTime);
}
secPacket++;
}
} else {
this.nsend(p163);
}
};
function packet(p167) {
let v128 = Array.prototype.slice.call(arguments, 1);
let v129 = window.msgpack.encode([p167, v128]);
WS.send(v129);
}
function origPacket(p168) {
let v130 = Array.prototype.slice.call(arguments, 1);
let v131 = window.msgpack.encode([p168, v130]);
WS.nsend(v131);
}
window.leave = function () {
origPacket("kys", {
"frvr is so bad": true,
"sidney is too good": true,
"dev are too weak": true
});
};
let io = {
send: packet
};
function getMessage(p169) {
let v132 = new Uint8Array(p169.data);
let v133 = window.msgpack.decode(v132);
let v134 = v133[0];
v132 = v133[1];
let v135 = {
A: setInitData,
C: setupGame,
D: addPlayer,
E: removePlayer,
a: updatePlayers,
G: updateLeaderboard,
H: loadGameObject,
I: loadAI,
J: animateAI,
K: gatherAnimation,
L: wiggleGameObject,
M: shootTurret,
N: updatePlayerValue,
O: updateHealth,
P: killPlayer,
Q: killObject,
R: killObjects,
S: updateItemCounts,
T: updateAge,
U: updateUpgrades,
V: updateItems,
X: addProjectile,
2: allianceNotification,
3: setPlayerTeam,
4: setAlliancePlayers,
5: updateStoreItems,
6: receiveChat,
7: updateMinimap,
8: showText,
9: pingMap,
0: pingSocketResponse
};
if (v134 == "io-init") {
socketID = v132[0];
} else if (v135[v134]) {
v135[v134].apply(undefined, v132);
}
}
Math.lerpAngle = function (p170, p171, p172) {
let v136 = Math.abs(p171 - p170);
if (v136 > Math.PI) {
if (p170 > p171) {
p171 += Math.PI * 2;
} else {
p170 += Math.PI * 2;
}
}
let v137 = p171 + (p170 - p171) * p172;
if (v137 >= 0 && v137 <= Math.PI * 2) {
return v137;
}
return v137 % (Math.PI * 2);
};
CanvasRenderingContext2D.prototype.roundRect = function (p173, p174, p175, p176, p177) {
if (p175 < p177 * 2) {
p177 = p175 / 2;
}
if (p176 < p177 * 2) {
p177 = p176 / 2;
}
if (p177 < 0) {
p177 = 0;
}
this.beginPath();
this.moveTo(p173 + p177, p174);
this.arcTo(p173 + p175, p174, p173 + p175, p174 + p176, p177);
this.arcTo(p173 + p175, p174 + p176, p173, p174 + p176, p177);
this.arcTo(p173, p174 + p176, p173, p174, p177);
this.arcTo(p173, p174, p173 + p175, p174, p177);
this.closePath();
return this;
};
function resetMoveDir() {
keys = {};
io.send("e");
}
let allChats = [];
let ticks = {
tick: 0,
delay: 0,
time: [],
manage: []
};
let ais = [];
let players = [];
let alliances = [];
let alliancePlayers = [];
let allianceNotifications = [];
let gameObjects = [];
let liztobj = [];
let projectiles = [];
let deadPlayers = [];
let breakObjects = [];
let player;
let playerSID;
let tmpObj;
let enemy = [];
let nears = [];
let near = [];
let my = {
reloaded: false,
waitHit: 0,
autoAim: false,
revAim: false,
ageInsta: true,
reSync: false,
bullTick: 0,
anti0Tick: 0,
antiSync: false,
safePrimary: function (p178) {
return [0, 8].includes(p178.primaryIndex);
},
safeSecondary: function (p179) {
return [10, 11, 14].includes(p179.secondaryIndex);
},
lastDir: 0,
autoPush: false,
pushData: {}
};
function findID(p180, p181) {
return p180.find(p182 => p182.id == p181);
}
function findSID(p183, p184) {
return p183.find(p185 => p185.sid == p184);
}
function findPlayerByID(p186) {
return findID(players, p186);
}
function findPlayerBySID(p187) {
return findSID(players, p187);
}
function findAIBySID(p188) {
return findSID(ais, p188);
}
function findObjectBySid(p189) {
return findSID(gameObjects, p189);
}
function findProjectileBySid(p190) {
return findSID(gameObjects, p190);
}
let adCard = getEl("adCard");
adCard.remove();
let promoImageHolder = getEl("promoImgHolder");
promoImageHolder.remove();
let chatButton = getEl("chatButton");
chatButton.remove();
let gameCanvas = getEl("gameCanvas");
let mainContext = gameCanvas.getContext("2d");
$("#mapDisplay").css("background", "url('https://wormax.org/chrome3kafa/moomooio-background.png')");
let mapContext = mapDisplay.getContext("2d");
mapDisplay.width = 300;
mapDisplay.height = 300;
let storeMenu = getEl("storeMenu");
let storeHolder = getEl("storeHolder");
let upgradeHolder = getEl("upgradeHolder");
let upgradeCounter = getEl("upgradeCounter");
let chatBox = getEl("chatBox");
let chatHolder = getEl("chatHolder");
let actionBar = getEl("actionBar");
let leaderboardData = getEl("leaderboardData");
let itemInfoHolder = getEl("itemInfoHolder");
let menuCardHolder = getEl("menuCardHolder");
let mainMenu = getEl("mainMenu");
let diedText = getEl("diedText");
let screenWidth;
let screenHeight;
let maxScreenWidth = config.maxScreenWidth;
let maxScreenHeight = config.maxScreenHeight;
let pixelDensity = 1;
let delta;
let now;
let lastUpdate = performance.now();
let camX;
let camY;
let tmpDir;
let mouseX = 0;
let mouseY = 0;
let allianceMenu = getEl("allianceMenu");
let waterMult = 1;
let waterPlus = 0;
let outlineColor = "#525252";
let darkOutlineColor = "#3d3f42";
let outlineWidth = 5.5;
let firstSetup = true;
let keys = {};
let moveKeys = {
87: [0, -1],
38: [0, -1],
83: [0, 1],
40: [0, 1],
65: [-1, 0],
37: [-1, 0],
68: [1, 0],
39: [1, 0]
};
let attackState = 0;
let inGame = false;
let macro = {};
let pads = {
placeSpawnPads: 0
};
let lastDir;
let lastLeaderboardData = [];
let inWindow = true;
window.onblur = function () {
inWindow = false;
};
window.onfocus = function () {
inWindow = true;
if (player && player.alive) {}
};
let ms = {
avg: 0,
max: 0,
min: 0,
delay: 0
};
function pingSocketResponse() {
let v138 = Math.ceil(window.pingTime * 2.6);
let v139 = window.pingTime;
const v140 = document.getElementById("pingDisplay");
v140.innerText = "";
if (v139 > ms.max || isNaN(ms.max)) {
ms.max = v139;
}
if (v139 < ms.min || isNaN(ms.min)) {
ms.min = v139;
}
}
let placeVisible = [];
let preplaceVisible = [];
class Utils {
constructor() {
let v141 = Math.abs;
let v142 = Math.cos;
let v143 = Math.sin;
let v144 = Math.pow;
let v145 = Math.sqrt;
let v146 = Math.atan2;
let v147 = Math.PI;
let vThis = this;
this.round = function (p191, p192) {
return Math.round(p191 * p192) / p192;
};
this.toRad = function (p193) {
return p193 * (v147 / 180);
};
this.toAng = function (p194) {
return p194 / (v147 / 180);
};
this.randInt = function (p195, p196) {
return Math.floor(Math.random() * (p196 - p195 + 1)) + p195;
};
this.randFloat = function (p197, p198) {
return Math.random() * (p198 - p197 + 1) + p197;
};
this.lerp = function (p199, p200, p201) {
return p199 + (p200 - p199) * p201;
};
this.decel = function (p202, p203) {
if (p202 > 0) {
p202 = Math.max(0, p202 - p203);
} else if (p202 < 0) {
p202 = Math.min(0, p202 + p203);
}
return p202;
};
this.getDistance = function (p204, p205, p206, p207) {
return v145((p206 -= p204) * p206 + (p207 -= p205) * p207);
};
this.getDist = function (p208, p209, p210, p211) {
let v148 = {
x: p210 == 0 ? p208.x : p210 == 1 ? p208.x1 : p210 == 2 ? p208.x2 : p210 == 3 && p208.x3,
y: p210 == 0 ? p208.y : p210 == 1 ? p208.y1 : p210 == 2 ? p208.y2 : p210 == 3 && p208.y3
};
let v149 = {
x: p211 == 0 ? p209.x : p211 == 1 ? p209.x1 : p211 == 2 ? p209.x2 : p211 == 3 && p209.x3,
y: p211 == 0 ? p209.y : p211 == 1 ? p209.y1 : p211 == 2 ? p209.y2 : p211 == 3 && p209.y3
};
return v145((v149.x -= v148.x) * v149.x + (v149.y -= v148.y) * v149.y);
};
this.getDirection = function (p212, p213, p214, p215) {
return v146(p213 - p215, p212 - p214);
};
this.getDirect = function (p216, p217, p218, p219) {
let v150 = {
x: p218 == 0 ? p216.x : p218 == 1 ? p216.x1 : p218 == 2 ? p216.x2 : p218 == 3 && p216.x3,
y: p218 == 0 ? p216.y : p218 == 1 ? p216.y1 : p218 == 2 ? p216.y2 : p218 == 3 && p216.y3
};
let v151 = {
x: p219 == 0 ? p217.x : p219 == 1 ? p217.x1 : p219 == 2 ? p217.x2 : p219 == 3 && p217.x3,
y: p219 == 0 ? p217.y : p219 == 1 ? p217.y1 : p219 == 2 ? p217.y2 : p219 == 3 && p217.y3
};
return v146(v150.y - v151.y, v150.x - v151.x);
};
this.getAngleDist = function (p220, p221) {
let v152 = v141(p221 - p220) % (v147 * 2);
if (v152 > v147) {
return v147 * 2 - v152;
} else {
return v152;
}
};
this.isNumber = function (p222) {
return typeof p222 == "number" && !isNaN(p222) && isFinite(p222);
};
this.isString = function (p223) {
return p223 && typeof p223 == "string";
};
this.kFormat = function (p224) {
if (p224 > 999) {
return (p224 / 1000).toFixed(1) + "k";
} else {
return p224;
}
};
this.sFormat = function (p225) {
let v153 = [{
num: 1000,
string: "k"
}, {
num: 1000000,
string: "m"
}, {
num: 1000000000,
string: "b"
}, {
num: 1000000000000,
string: "q"
}].reverse();
let v154 = v153.find(p226 => p225 >= p226.num);
if (!v154) {
return p225;
}
return (p225 / v154.num).toFixed(1) + v154.string;
};
this.capitalizeFirst = function (p227) {
return p227.charAt(0).toUpperCase() + p227.slice(1);
};
this.fixTo = function (p228, p229) {
return parseFloat(p228.toFixed(p229));
};
this.sortByPoints = function (p230, p231) {
return parseFloat(p231.points) - parseFloat(p230.points);
};
this.lineInRect = function (p232, p233, p234, p235, p236, p237, p238, p239) {
let vP236 = p236;
let vP238 = p238;
if (p236 > p238) {
vP236 = p238;
vP238 = p236;
}
if (vP238 > p234) {
vP238 = p234;
}
if (vP236 < p232) {
vP236 = p232;
}
if (vP236 > vP238) {
return false;
}
let vP237 = p237;
let vP239 = p239;
let v155 = p238 - p236;
if (Math.abs(v155) > 1e-7) {
let v156 = (p239 - p237) / v155;
let v157 = p237 - v156 * p236;
vP237 = v156 * vP236 + v157;
vP239 = v156 * vP238 + v157;
}
if (vP237 > vP239) {
let vVP239 = vP239;
vP239 = vP237;
vP237 = vVP239;
}
if (vP239 > p235) {
vP239 = p235;
}
if (vP237 < p233) {
vP237 = p233;
}
if (vP237 > vP239) {
return false;
}
return true;
};
this.containsPoint = function (p240, p241, p242) {
let v158 = p240.getBoundingClientRect();
let v159 = v158.left + window.scrollX;
let v160 = v158.top + window.scrollY;
let v161 = v158.width;
let v162 = v158.height;
let v163 = p241 > v159 && p241 < v159 + v161;
let v164 = p242 > v160 && p242 < v160 + v162;
return v163 && v164;
};
this.mousifyTouchEvent = function (p243) {
let v165 = p243.changedTouches[0];
p243.screenX = v165.screenX;
p243.screenY = v165.screenY;
p243.clientX = v165.clientX;
p243.clientY = v165.clientY;
p243.pageX = v165.pageX;
p243.pageY = v165.pageY;
};
this.hookTouchEvents = function (p244, p245) {
let v166 = !p245;
let v167 = false;
let v168 = false;
p244.addEventListener("touchstart", this.checkTrusted(f12), v168);
p244.addEventListener("touchmove", this.checkTrusted(f13), v168);
p244.addEventListener("touchend", this.checkTrusted(f14), v168);
p244.addEventListener("touchcancel", this.checkTrusted(f14), v168);
p244.addEventListener("touchleave", this.checkTrusted(f14), v168);
function f12(p246) {
vThis.mousifyTouchEvent(p246);
window.setUsingTouch(true);
if (v166) {
p246.preventDefault();
p246.stopPropagation();
}
if (p244.onmouseover) {
p244.onmouseover(p246);
}
v167 = true;
}
function f13(p247) {
vThis.mousifyTouchEvent(p247);
window.setUsingTouch(true);
if (v166) {
p247.preventDefault();
p247.stopPropagation();
}
if (vThis.containsPoint(p244, p247.pageX, p247.pageY)) {
if (!v167) {
if (p244.onmouseover) {
p244.onmouseover(p247);
}
v167 = true;
}
} else if (v167) {
if (p244.onmouseout) {
p244.onmouseout(p247);
}
v167 = false;
}
}
function f14(p248) {
vThis.mousifyTouchEvent(p248);
window.setUsingTouch(true);
if (v166) {
p248.preventDefault();
p248.stopPropagation();
}
if (v167) {
if (p244.onclick) {
p244.onclick(p248);
}
if (p244.onmouseout) {
p244.onmouseout(p248);
}
v167 = false;
}
}
};
this.removeAllChildren = function (p249) {
while (p249.hasChildNodes()) {
p249.removeChild(p249.lastChild);
}
};
this.generateElement = function (p250) {
let v169 = document.createElement(p250.tag || "div");
function f15(p251, p252) {
if (p250[p251]) {
v169[p252] = p250[p251];
}
}
f15("text", "textContent");
f15("html", "innerHTML");
f15("class", "className");
for (let v170 in p250) {
switch (v170) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue;
default:
break;
}
v169[v170] = p250[v170];
}
if (v169.onclick) {
v169.onclick = this.checkTrusted(v169.onclick);
}
if (v169.onmouseover) {
v169.onmouseover = this.checkTrusted(v169.onmouseover);
}
if (v169.onmouseout) {
v169.onmouseout = this.checkTrusted(v169.onmouseout);
}
if (p250.style) {
v169.style.cssText = p250.style;
}
if (p250.hookTouch) {
this.hookTouchEvents(v169);
}
if (p250.parent) {
p250.parent.appendChild(v169);
}
if (p250.children) {
for (let v171 = 0; v171 < p250.children.length; v171++) {
v169.appendChild(p250.children[v171]);
}
}
return v169;
};
this.checkTrusted = function (p253) {
return function (p254) {
if (p254 && p254 instanceof Event && (p254 && typeof p254.isTrusted == "boolean" ? p254.isTrusted : true)) {
p253(p254);
} else {}
};
};
this.randomString = function (p255) {
let v172 = "";
let v173 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (let v174 = 0; v174 < p255; v174++) {
v172 += v173.charAt(Math.floor(Math.random() * v173.length));
}
return v172;
};
this.countInArray = function (p256, p257) {
let v175 = 0;
for (let v176 = 0; v176 < p256.length; v176++) {
if (p256[v176] === p257) {
v175++;
}
}
return v175;
};
this.hexToRgb = function (p258) {
return p258.slice(1).match(/.{1,2}/g).map(p259 => parseInt(p259, 16));
};
this.getRgb = function (p260, p261, p262) {
return [p260 / 255, p261 / 255, p262 / 255].join(", ");
};
}
}
;
class Animtext {
constructor() {
this.init = function (p263, p264, p265, p266, p267, p268, p269) {
this.x = p263;
this.y = p264;
this.color = p269;
this.scale = p265;
this.startScale = this.scale;
this.maxScale = p265 * 1.5;
this.scaleSpeed = 0.7;
this.speed = p266;
this.life = p267;
this.text = p268;
};
this.update = function (p270) {
if (this.life) {
this.life -= p270;
this.y -= this.speed * p270;
this.scale += this.scaleSpeed * p270;
if (this.scale >= this.maxScale) {
this.scale = this.maxScale;
this.scaleSpeed *= -1;
} else if (this.scale <= this.startScale) {
this.scale = this.startScale;
this.scaleSpeed = 0;
}
if (this.life <= 0) {
this.life = 0;
}
}
};
this.render = function (p271, p272, p273) {
p271.fillStyle = this.color;
if (getEl("font").checked) {
p271.font = this.scale + "px Lilita One";
} else {
p271.font = this.scale + "px Hammersmith One";
}
p271.fillText(this.text, this.x - p272, this.y - p273);
};
}
}
;
class Textmanager {
constructor() {
this.texts = [];
this.stack = [];
this.update = function (p274, p275, p276, p277) {
p275.textBaseline = "middle";
p275.textAlign = "center";
for (let v177 = 0; v177 < this.texts.length; ++v177) {
if (this.texts[v177].life) {
this.texts[v177].update(p274);
this.texts[v177].render(p275, p276, p277);
}
}
};
this.showText = function (p278, p279, p280, p281, p282, p283, p284) {
let v178;
for (let v179 = 0; v179 < this.texts.length; ++v179) {
if (!this.texts[v179].life) {
v178 = this.texts[v179];
break;
}
}
if (!v178) {
v178 = new Animtext();
this.texts.push(v178);
}
v178.init(p278, p279, p280, p281, p282, p283, p284);
};
}
}
class GameObject {
constructor(p285) {
this.sid = p285;
this.init = function (p286, p287, p288, p289, p290, p291, p292) {
p291 = p291 || {};
this.sentTo = {};
this.gridLocations = [];
this.active = true;
this.render = true;
this.doUpdate = p291.doUpdate;
this.x = p286;
this.y = p287;
this.dir = p288 + Math.PI;
this.lastDir = p288;
this.xWiggle = 0;
this.yWiggle = 0;
this.visScale = p289;
this.scale = p289;
this.type = p290;
this.id = p291.id;
this.owner = p292;
this.name = p291.name;
this.isItem = this.id != undefined;
this.group = p291.group;
this.maxHealth = p291.health;
this.health = this.maxHealth;
this.layer = 2;
if (this.group != undefined) {
this.layer = this.group.layer;
} else if (this.type == 0) {
this.layer = 3;
} else if (this.type == 2) {
this.layer = 0;
} else if (this.type == 4) {
this.layer = -1;
}
this.colDiv = p291.colDiv || 1;
this.blocker = p291.blocker;
this.ignoreCollision = p291.ignoreCollision;
this.dontGather = p291.dontGather;
this.hideFromEnemy = p291.hideFromEnemy;
this.friction = p291.friction;
this.projDmg = p291.projDmg;
this.dmg = p291.dmg;
this.pDmg = p291.pDmg;
this.pps = p291.pps;
this.zIndex = p291.zIndex || 0;
this.turnSpeed = p291.turnSpeed;
this.req = p291.req;
this.trap = p291.trap;
this.healCol = p291.healCol;
this.teleport = p291.teleport;
this.boostSpeed = p291.boostSpeed;
this.projectile = p291.projectile;
this.shootRange = p291.shootRange;
this.shootRate = p291.shootRate;
this.shootCount = this.shootRate;
this.spawnPoint = p291.spawnPoint;
this.onNear = 0;
this.breakObj = false;
this.alpha = p291.alpha || 1;
this.maxAlpha = p291.alpha || 1;
this.damaged = 0;
};
this.changeHealth = function (p293, p294) {
this.health += p293;
return this.health <= 0;
};
this.getScale = function (p295, p296) {
p295 = p295 || 1;
return this.scale * (this.isItem || this.type == 2 || this.type == 3 || this.type == 4 ? 1 : p295 * 0.6) * (p296 ? 1 : this.colDiv);
};
this.visibleToPlayer = function (p297) {
return !this.hideFromEnemy || this.owner && (this.owner == p297 || this.owner.team && p297.team == this.owner.team);
};
this.update = function (p298) {
if (this.health != this.healthMov) {
if (this.health < this.healthMov) {
this.healthMov -= 1.9;
} else {
this.healthMov += 1.9;
}
if (Math.abs(this.health - this.healthMov) < 1.9) {
this.healthMov = this.health;
}
}
;
if (this.active) {
if (this.xWiggle) {
this.xWiggle *= Math.pow(0.99, p298);
}
if (this.yWiggle) {
this.yWiggle *= Math.pow(0.99, p298);
}
if (config.anotherVisualTurn) {
let v180 = UTILS.getAngleDist(this.lastDir, this.dir);
if (v180 > 0.01) {
this.dir += v180 / 5;
} else {
this.dir = this.lastDir;
}
} else if (this.turnSpeed) {
this.dir += this.turnSpeed * p298;
}
} else if (this.alive) {
this.alpha -= p298 / (200 / this.maxAlpha);
this.visScale += p298 / (this.scale / 2.5);
if (this.alpha <= 0) {
this.alpha = 0;
this.alive = false;
}
}
};
this.isTeamObject = function (p299) {
if (this.owner == null) {
return true;
} else {
return this.owner && p299.sid == this.owner.sid || p299.findAllianceBySid(this.owner.sid);
}
};
}
}
class Items {
constructor() {
this.groups = [{
id: 0,
name: "food",
layer: 0
}, {
id: 1,
name: "walls",
place: true,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: true,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: true,
limit: 7,
layer: 1
}, {
id: 4,
name: "mine",
place: true,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: true,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: true,
limit: 12,
layer: -1
}, {
id: 7,
name: "turret",
place: true,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: true,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: true,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: true,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: true,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: true,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: true,
limit: 2,
layer: -1
}];
this.projectiles = [{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1000
}, {
indx: 1,
layer: 1,
dmg: 25,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
}];
this.weapons = [{
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "sword_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 46,
dmg: 35,
spdMult: 0.85,
range: 110,
gather: 1,
speed: 300
}, {
id: 4,
type: 0,
age: 8,
pre: 3,
name: "katana",
desc: "greater range and damage",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 40,
spdMult: 0.8,
range: 118,
gather: 1,
speed: 300
}, {
id: 5,
type: 0,
age: 2,
name: "polearm",
desc: "long range melee weapon",
src: "spear_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 45,
knock: 0.2,
spdMult: 0.82,
range: 142,
gather: 1,
speed: 700
}, {
id: 6,
type: 0,
age: 2,
name: "bat",
desc: "fast long range melee weapon",
src: "bat_1",
iPad: 1.3,
length: 110,
width: 180,
xOff: -8,
yOff: 53,
dmg: 20,
knock: 0.7,
range: 110,
gather: 1,
speed: 300
}, {
id: 7,
type: 0,
age: 2,
name: "daggers",
desc: "really fast short range weapon",
src: "dagger_1",
iPad: 0.8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: 0.1,
range: 65,
gather: 1,
hitSlow: 0.1,
spdMult: 1.13,
speed: 100
}, {
id: 8,
type: 0,
age: 2,
name: "stick",
desc: "great for gathering but very weak",
src: "stick_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 1,
spdMult: 1,
range: 70,
gather: 7,
speed: 400
}, {
id: 9,
type: 1,
age: 6,
name: "hunting bow",
desc: "bow used for ranged combat and hunting",
src: "bow_1",
req: ["wood", 4],
length: 120,
width: 120,
xOff: -6,
yOff: 0,
Pdmg: 25,
projectile: 0,
spdMult: 0.75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
Pdmg: 10,
spdMult: 0.88,
range: 75,
sDmg: 7.5,
gather: 1,
speed: 400
}, {
id: 11,
type: 1,
age: 6,
name: "wooden shield",
desc: "blocks projectiles and reduces melee damage",
src: "shield_1",
length: 120,
width: 120,
shield: 0.2,
xOff: 6,
yOff: 0,
Pdmg: 0,
spdMult: 0.7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: ["wood", 5],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
Pdmg: 35,
projectile: 2,
spdMult: 0.7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: ["wood", 10],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
Pdmg: 30,
projectile: 3,
spdMult: 0.7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
Pdmg: 0,
steal: 250,
knock: 0.2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: ["stone", 10],
aboveHand: true,
rec: 0.35,
armS: 0.6,
hndS: 0.3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
Pdmg: 50,
projectile: 5,
hideProjectile: true,
spdMult: 0.6,
speed: 1500
}];
this.list = [{
group: this.groups[0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
consume: function (p300) {
return p300.changeHealth(20, p300);
},
scale: 22,
holdOffset: 15,
healing: 20,
itemID: 0,
itemAID: 16
}, {
age: 3,
group: this.groups[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
consume: function (p301) {
return p301.changeHealth(40, p301);
},
scale: 27,
holdOffset: 15,
healing: 40,
itemID: 1,
itemAID: 17
}, {
age: 7,
group: this.groups[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
consume: function (p302) {
if (p302.changeHealth(30, p302) || p302.health < 100) {
p302.dmgOverTime.dmg = -10;
p302.dmgOverTime.doer = p302;
p302.dmgOverTime.time = 5;
return true;
}
return false;
},
scale: 27,
holdOffset: 15,
healing: 30,
itemID: 2,
itemAID: 18
}, {
group: this.groups[1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: true,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5,
itemID: 3,
itemAID: 19
}, {
age: 3,
group: this.groups[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5,
itemID: 4,
itemAID: 20
}, {
age: 7,
group: this.groups[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5,
itemID: 5,
itemAID: 21
}, {
group: this.groups[2],
name: "spikes",
desc: "damages enemies when they touch them",
req: ["wood", 20, "stone", 5],
health: 400,
dmg: 20,
scale: 49,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 6,
itemAID: 22
}, {
age: 5,
group: this.groups[2],
name: "greater spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 10],
health: 500,
dmg: 35,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 7,
itemAID: 23
}, {
age: 9,
group: this.groups[2],
name: "poison spikes",
desc: "poisons enemies when they touch them",
req: ["wood", 35, "stone", 15],
health: 600,
dmg: 30,
pDmg: 5,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 8,
itemAID: 24
}, {
age: 9,
group: this.groups[2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 20],
health: 500,
dmg: 45,
turnSpeed: 0.001,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 9,
itemAID: 25
}, {
group: this.groups[3],
name: "windmill",
desc: "generates gold over time",
req: ["wood", 50, "stone", 10],
health: 400,
pps: 1,
turnSpeed: 0,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5,
itemID: 10,
itemAID: 26
}, {
age: 5,
group: this.groups[3],
name: "faster windmill",
desc: "generates more gold over time",
req: ["wood", 60, "stone", 20],
health: 500,
pps: 1.5,
turnSpeed: 0,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5,
itemID: 11,
itemAID: 27
}, {
age: 8,
group: this.groups[3],
name: "power mill",
desc: "generates more gold over time",
req: ["wood", 100, "stone", 50],
health: 800,
pps: 2,
turnSpeed: 0,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5,
itemID: 12,
itemAID: 28
}, {
age: 5,
group: this.groups[4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: ["wood", 20, "stone", 100],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0,
itemID: 13,
itemAID: 29
}, {
age: 5,
group: this.groups[11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: ["wood", 150],
iconLineMult: 12,
colDiv: 0.5,
scale: 110,
holdOffset: 50,
placeOffset: -15,
itemID: 14,
itemAID: 30
}, {
age: 4,
group: this.groups[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: true,
ignoreCollision: true,
hideFromEnemy: true,
health: 500,
colDiv: 0.2,
scale: 50,
holdOffset: 20,
placeOffset: -5,
alpha: 0.6,
itemID: 15,
itemAID: 31
}, {
age: 4,
group: this.groups[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: true,
boostSpeed: 1.5,
health: 150,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 16,
itemAID: 32
}, {
age: 7,
group: this.groups[7],
doUpdate: true,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: ["wood", 200, "stone", 150],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5,
itemID: 17,
itemAID: 33
}, {
age: 7,
group: this.groups[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: true,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5,
itemID: 18,
itemAID: 34
}, {
age: 7,
group: this.groups[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: true,
healCol: 15,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 19,
itemAID: 35
}, {
age: 9,
group: this.groups[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: true,
spawnPoint: true,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 20,
itemAID: 36
}, {
age: 7,
group: this.groups[12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: true,
blocker: 300,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 21,
itemAID: 37
}, {
age: 7,
group: this.groups[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: true,
teleport: true,
health: 200,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 22,
itemAID: 38
}];
this.checkItem = {
index: function (p303, p304) {
if ([0, 1, 2].includes(p303)) {
return 0;
} else if ([3, 4, 5].includes(p303)) {
return 1;
} else if ([6, 7, 8, 9].includes(p303)) {
return 2;
} else if ([10, 11, 12].includes(p303)) {
return 3;
} else if ([13, 14].includes(p303)) {
return 5;
} else if ([15, 16].includes(p303)) {
return 4;
} else if ([17, 18, 19, 21, 22].includes(p303)) {
if ([13, 14].includes(p304)) {
return 6;
} else {
return 5;
}
} else if (p303 == 20) {
if ([13, 14].includes(p304)) {
return 7;
} else {
return 6;
}
} else {
return undefined;
}
}
};
for (let v181 = 0; v181 < this.list.length; ++v181) {
this.list[v181].id = v181;
if (this.list[v181].pre) {
this.list[v181].pre = v181 - this.list[v181].pre;
}
}
if (typeof window !== "undefined") {
function f16(p305) {
for (let v182 = p305.length - 1; v182 > 0; v182--) {
const v183 = Math.floor(Math.random() * (v182 + 1));
[p305[v182], p305[v183]] = [p305[v183], p305[v182]];
}
return p305;
}
}
}
}
class Objectmanager {
constructor(p306, p307, p308, p309, p310, p311) {
let v184 = Math.floor;
let v185 = Math.abs;
let v186 = Math.cos;
let v187 = Math.sin;
let v188 = Math.pow;
let v189 = Math.sqrt;
this.ignoreAdd = false;
this.hitObj = [];
this.disableObj = function (p312) {
p312.active = false;
};
let v190;
this.add = function (p313, p314, p315, p316, p317, p318, p319, p320, p321) {
v190 = findObjectBySid(p313);
if (!v190) {
v190 = gameObjects.find(p322 => !p322.active);
if (!v190) {
v190 = new p306(p313);
gameObjects.push(v190);
}
}
if (p320) {
v190.sid = p313;
}
v190.init(p314, p315, p316, p317, p318, p319, p321);
};
this.disableBySid = function (p323) {
let vFindObjectBySid = findObjectBySid(p323);
if (vFindObjectBySid) {
this.disableObj(vFindObjectBySid);
}
};
this.removeAllItems = function (p324, p325) {
gameObjects.filter(p326 => p326.active && p326.owner && p326.owner.sid == p324).forEach(p327 => this.disableObj(p327));
};
this.checkItemLocation = function (p328, p329, p330, p331, p332, p333, p334) {
let v191 = p307.find(p335 => p335.active && p308.getDistance(p328, p329, p335.x, p335.y) < p330 + (p335.blocker ? p335.blocker : p335.getScale(p331, p335.isItem)));
if (v191) {
return false;
}
if (!p333 && p332 != 18 && p329 >= p309.mapScale / 2 - p309.riverWidth / 2 && p329 <= p309.mapScale / 2 + p309.riverWidth / 2) {
return false;
}
return true;
};
this.customCheckItemLocation = (p336, p337, p338, p339, p340, p341, p342, p343, p344, p345, p346) => {
let v192 = p344.find(p347 => p347.active && p347.x !== p343.x && p347.y !== p343.y && p347.id !== p343.id && p345.getDistance(p336, p337, p347.x, p347.y) < p338 + (p347.blocker ? p347.blocker : p347.getScale(p339, p347.isItem)));
if (v192) {
return false;
}
if (!p341 && p340 != 18 && p337 >= p346.mapScale / 2 - p346.riverWidth / 2 && p337 <= p346.mapScale / 2 + p346.riverWidth / 2) {
return false;
}
return true;
};
}
}
class Projectile {
constructor(p348, p349, p350, p351, p352, p353, p354) {
this.init = function (p355, p356, p357, p358, p359, p360, p361, p362, p363) {
this.active = true;
this.tickActive = true;
this.indx = p355;
this.x = p356;
this.y = p357;
this.x2 = p356;
this.y2 = p357;
this.dir = p358;
this.skipMov = true;
this.speed = p359;
this.dmg = p360;
this.scale = p362;
this.range = p361;
this.r2 = p361;
this.owner = p363;
};
this.update = function (p364) {
if (this.active) {
let v193 = this.speed * p364;
if (!this.skipMov) {
this.x += v193 * Math.cos(this.dir);
this.y += v193 * Math.sin(this.dir);
this.range -= v193;
if (this.range <= 0) {
this.x += this.range * Math.cos(this.dir);
this.y += this.range * Math.sin(this.dir);
v193 = 1;
this.range = 0;
this.active = false;
}
} else {
this.skipMov = false;
}
}
};
this.tickUpdate = function (p365) {
if (this.tickActive) {
let v194 = this.speed * p365;
if (!this.skipMov) {
this.x2 += v194 * Math.cos(this.dir);
this.y2 += v194 * Math.sin(this.dir);
this.r2 -= v194;
if (this.r2 <= 0) {
this.x2 += this.r2 * Math.cos(this.dir);
this.y2 += this.r2 * Math.sin(this.dir);
v194 = 1;
this.r2 = 0;
this.tickActive = false;
}
} else {
this.skipMov = false;
}
}
};
}
}
;
class Store {
constructor() {
this.hats = [{
id: 45,
name: "Shame!",
dontSell: true,
price: 0,
scale: 120,
desc: "hacks are for winners"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1000,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: true
}, {
id: 1,
name: "Marksman Cap",
price: 3000,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3000,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3000,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Anti Insta",
price: 4000,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: 0.94,
dmgMult: 0.75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4000,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5000,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5000,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5000,
scale: 120,
desc: "reduces cost of projectiles",
projCost: 0.5
}, {
id: 7,
name: "Bull Helmet",
price: 6000,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: 0.96
}, {
id: 22,
name: "Emp Helmet",
price: 6000,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: 0.7
}, {
id: 12,
name: "Booster Hat",
price: 6000,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8000,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: 0.6
}, {
id: 21,
name: "Plague Mask",
price: 10000,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 10000,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: true,
price: 10000,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "deal damage to players that damage you",
dmg: 0.45
}, {
id: 53,
name: "Turret Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: 0.7
}, {
id: 20,
name: "Samurai Armor",
price: 12000,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: 0.78
}, {
id: 58,
name: "Dark Knight",
price: 12000,
scale: 120,
desc: "restores health when you deal damage",
healD: 0.4
}, {
id: 27,
name: "Scavenger Gear",
price: 15000,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15000,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: 0.3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15000,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: 0.5
}, {
id: 55,
name: "Bloodthirster",
price: 20000,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: 0.25,
dmgMultO: 1.2
}, {
id: 56,
name: "Assassin Gear",
price: 20000,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: true,
spdMult: 1.1,
invisTimer: 1000
}];
this.accessories = [{
id: 12,
name: "Snowball",
price: 1000,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2000,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2000,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: 0.2
}, {
id: 17,
name: "Apple Basket",
price: 3000,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3000,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4000,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5000,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6000,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 10000,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 10000,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 10000,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12000,
scale: 90,
spin: true,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: 0.15
}, {
id: 13,
name: "Angel Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: 0.2
}, {
id: 21,
name: "Corrupt X Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: 0.25
}];
}
}
;
class ProjectileManager {
constructor(p366, p367, p368, p369, p370, p371, p372, p373, p374) {
this.addProjectile = function (p375, p376, p377, p378, p379, p380, p381, p382, p383, p384) {
let v195 = p371.projectiles[p380];
let v196;
for (let v197 = 0; v197 < p367.length; ++v197) {
if (!p367[v197].active) {
v196 = p367[v197];
break;
}
}
if (!v196) {
v196 = new p366(p368, p369, p370, p371, p372, p373, p374);
v196.sid = p367.length;
p367.push(v196);
}
v196.init(p380, p375, p376, p377, p379, v195.dmg, p378, v195.scale, p381);
v196.ignoreObj = p382;
v196.layer = p383 || v195.layer;
v196.inWindow = p384;
v196.src = v195.src;
return v196;
};
}
}
;
class AiManager {
constructor(p385, p386, p387, p388, p389, p390, p391, p392, p393) {
this.aiTypes = [{
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: 0.8,
speed: 0.00095,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 50]
}, {
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: 0.6,
speed: 0.00085,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 80]
}, {
id: 2,
name: "Bull",
src: "bull_2",
hostile: true,
dmg: 20,
killScore: 1000,
health: 1800,
weightM: 0.5,
speed: 0.00094,
turnSpeed: 0.00074,
scale: 78,
viewRange: 800,
chargePlayer: true,
drop: ["food", 100]
}, {
id: 3,
name: "Bully",
src: "bull_1",
hostile: true,
dmg: 20,
killScore: 2000,
health: 2800,
weightM: 0.45,
speed: 0.001,
turnSpeed: 0.0008,
scale: 90,
viewRange: 900,
chargePlayer: true,
drop: ["food", 400]
}, {
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: true,
dmg: 8,
killScore: 500,
health: 300,
weightM: 0.45,
speed: 0.001,
turnSpeed: 0.002,
scale: 84,
viewRange: 800,
chargePlayer: true,
drop: ["food", 200]
}, {
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2000,
noTrap: true,
health: 300,
weightM: 0.2,
speed: 0.0018,
turnSpeed: 0.006,
scale: 70,
drop: ["food", 100]
}, {
id: 6,
name: "MOOSTAFA",
nameScale: 50,
src: "enemy",
hostile: true,
dontRun: true,
fixedSpawn: true,
spawnDelay: 60000,
noTrap: true,
colDmg: 100,
dmg: 40,
killScore: 8000,
health: 18000,
weightM: 0.4,
speed: 0.0007,
turnSpeed: 0.01,
scale: 80,
spriteMlt: 1.8,
leapForce: 0.9,
viewRange: 1000,
hitRange: 210,
hitDelay: 1000,
chargePlayer: true,
drop: ["food", 100]
}, {
id: 7,
name: "Treasure",
hostile: true,
nameScale: 35,
src: "crate_1",
fixedSpawn: true,
spawnDelay: 120000,
colDmg: 200,
killScore: 5000,
health: 20000,
weightM: 0.1,
speed: 0,
turnSpeed: 0,
scale: 70,
spriteMlt: 1
}, {
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: true,
fixedSpawn: true,
dontRun: true,
hitScare: 4,
spawnDelay: 30000,
noTrap: true,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3000,
health: 7000,
weightM: 0.45,
speed: 0.0015,
turnSpeed: 0.002,
scale: 90,
viewRange: 800,
chargePlayer: true,
drop: ["food", 1000]
}];
this.spawn = function (p394, p395, p396, p397) {
let v198 = p385.find(p398 => !p398.active);
if (!v198) {
v198 = new p386(p385.length, p389, p387, p388, p391, p390, p392, p393);
p385.push(v198);
}
v198.init(p394, p395, p396, p397, this.aiTypes[p397]);
return v198;
};
}
}
;
class AI {
constructor(p399, p400, p401, p402, p403, p404, p405, p406) {
this.sid = p399;
this.isAI = true;
this.nameIndex = p403.randInt(0, p404.cowNames.length - 1);
this.init = function (p407, p408, p409, p410, p411) {
this.x = p407;
this.y = p408;
this.startX = p411.fixedSpawn ? p407 : null;
this.startY = p411.fixedSpawn ? p408 : null;
this.xVel = 0;
this.yVel = 0;
this.zIndex = 0;
this.dir = p409;
this.dirPlus = 0;
this.showName = "aaa";
this.index = p410;
this.src = p411.src;
if (p411.name) {
this.name = p411.name;
}
this.weightM = p411.weightM;
this.speed = p411.speed;
this.killScore = p411.killScore;
this.turnSpeed = p411.turnSpeed;
this.scale = p411.scale;
this.maxHealth = p411.health;
this.leapForce = p411.leapForce;
this.health = this.maxHealth;
this.chargePlayer = p411.chargePlayer;
this.viewRange = p411.viewRange;
this.drop = p411.drop;
this.dmg = p411.dmg;
this.hostile = p411.hostile;
this.dontRun = p411.dontRun;
this.hitRange = p411.hitRange;
this.hitDelay = p411.hitDelay;
this.hitScare = p411.hitScare;
this.spriteMlt = p411.spriteMlt;
this.nameScale = p411.nameScale;
this.colDmg = p411.colDmg;
this.noTrap = p411.noTrap;
this.spawnDelay = p411.spawnDelay;
this.hitWait = 0;
this.waitCount = 1000;
this.moveCount = 0;
this.targetDir = 0;
this.active = true;
this.alive = true;
this.runFrom = null;
this.chargeTarget = null;
this.dmgOverTime = {};
};
let v199 = 0;
let v200 = 0;
this.animate = function (p412) {
if (this.animTime > 0) {
this.animTime -= p412;
if (this.animTime <= 0) {
this.animTime = 0;
this.dirPlus = 0;
v199 = 0;
v200 = 0;
} else if (v200 == 0) {
v199 += p412 / (this.animSpeed * p404.hitReturnRatio);
this.dirPlus = p403.lerp(0, this.targetAngle, Math.min(1, v199));
if (v199 >= 1) {
v199 = 1;
v200 = 1;
}
} else {
v199 -= p412 / (this.animSpeed * (1 - p404.hitReturnRatio));
this.dirPlus = p403.lerp(0, this.targetAngle, Math.max(0, v199));
}
}
};
this.startAnim = function () {
this.animTime = this.animSpeed = 600;
this.targetAngle = Math.PI * 0.8;
v199 = 0;
v200 = 0;
};
}
}
;
class addCh {
constructor(p413, p414, p415, p416) {
this.x = p413;
this.y = p414;
this.alpha = 0;
this.active = true;
this.alive = false;
this.chat = p415;
this.owner = p416;
}
}
;
class DeadPlayer {
constructor(p417, p418, p419, p420, p421, p422, p423, p424, p425) {
this.x = p417;
this.y = p418;
this.lastDir = p419;
this.dir = p419 + Math.PI;
this.buildIndex = p420;
this.weaponIndex = p421;
this.weaponVariant = p422;
this.skinColor = p423;
this.scale = p424;
this.visScale = 0;
this.name = p425;
this.alpha = 1;
this.active = true;
this.animate = function (p426) {
let v201 = UTILS.getAngleDist(this.lastDir, this.dir);
if (v201 > 0.01) {
this.dir += v201 / 20;
} else {
this.dir = this.lastDir;
}
if (this.visScale < this.scale) {
this.visScale += p426 / (this.scale / 2);
if (this.visScale >= this.scale) {
this.visScale = this.scale;
}
}
this.alpha -= p426 / 30000;
if (this.alpha <= 0) {
this.alpha = 0;
this.active = false;
}
};
}
}
;
class Player {
constructor(p427, p428, p429, p430, p431, p432, p433, p434, p435, p436, p437, p438, p439, p440) {
this.id = p427;
this.sid = p428;
this.tmpScore = 0;
this.team = null;
this.latestSkin = 0;
this.oldSkinIndex = 0;
this.skinIndex = 0;
this.latestTail = 0;
this.oldTailIndex = 0;
this.tailIndex = 0;
this.hitTime = 0;
this.lastHit = 0;
this.showName = "NOOO";
this.tails = {};
for (let v202 = 0; v202 < p437.length; ++v202) {
if (p437[v202].price <= 0) {
this.tails[p437[v202].id] = 1;
}
}
this.skins = {};
for (let v203 = 0; v203 < p436.length; ++v203) {
if (p436[v203].price <= 0) {
this.skins[p436[v203].id] = 1;
}
}
this.points = 0;
this.dt = 0;
this.hidden = false;
this.itemCounts = {};
this.isPlayer = true;
this.pps = 0;
this.moveDir = undefined;
this.skinRot = 0;
this.lastPing = 0;
this.iconIndex = 0;
this.skinColor = 0;
this.dist2 = 0;
this.aim2 = 0;
this.maxSpeed = 1;
this.chat = {
message: null,
count: 0
};
this.backupNobull = true;
this.circle = false;
this.circleRad = 200;
this.circleRadSpd = 0.1;
this.cAngle = 0;
this.spawn = function (p441) {
this.attacked = false;
this.timeDamaged = 0;
this.timeHealed = 0;
this.pinge = 0;
this.millPlace = "NOOO";
this.lastshamecount = 0;
this.death = false;
this.spinDir = 0;
this.sync = false;
this.antiBull = 0;
this.bullTimer = 0;
this.poisonTimer = 0;
this.active = true;
this.alive = true;
this.lockMove = false;
this.lockDir = false;
this.minimapCounter = 0;
this.chatCountdown = 0;
this.shameCount = 0;
this.shameTimer = 0;
this.sentTo = {};
this.gathering = 0;
this.gatherIndex = 0;
this.shooting = {};
this.shootIndex = 9;
this.autoGather = 0;
this.animTime = 0;
this.animSpeed = 0;
this.mouseState = 0;
this.buildIndex = -1;
this.weaponIndex = 0;
this.weaponCode = 0;
this.weaponVariant = 0;
this.primaryIndex = undefined;
this.secondaryIndex = undefined;
this.dmgOverTime = {};
this.noMovTimer = 0;
this.maxXP = 300;
this.XP = 0;
this.age = 1;
this.kills = 0;
this.upgrAge = 2;
this.upgradePoints = 0;
this.x = 0;
this.y = 0;
this.oldXY = {
x: 0,
y: 0
};
this.zIndex = 0;
this.xVel = 0;
this.yVel = 0;
this.slowMult = 1;
this.dir = 0;
this.dirPlus = 0;
this.targetDir = 0;
this.targetAngle = 0;
this.maxHealth = 100;
this.health = this.maxHealth;
this.oldHealth = this.maxHealth;
this.damaged = 0;
this.scale = p429.playerScale;
this.speed = p429.playerSpeed;
this.resetMoveDir();
this.resetResources(p441);
this.items = [0, 3, 6, 10];
this.weapons = [0];
this.shootCount = 0;
this.weaponXP = [];
this.reloads = {
0: 0,
1: 0,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
10: 0,
11: 0,
12: 0,
13: 0,
14: 0,
15: 0,
53: 0
};
this.bowThreat = {
9: 0,
12: 0,
13: 0,
15: 0
};
this.damageThreat = 0;
this.inTrap = false;
this.canEmpAnti = false;
this.empAnti = false;
this.soldierAnti = false;
this.poisonTick = 0;
this.bullTick = 0;
this.setPoisonTick = false;
this.setBullTick = false;
this.antiTimer = 2;
};
this.resetMoveDir = function () {
this.moveDir = undefined;
};
this.resetResources = function (p442) {
for (let v204 = 0; v204 < p429.resourceTypes.length; ++v204) {
this[p429.resourceTypes[v204]] = p442 ? 100 : 0;
}
};
this.getItemType = function (p443) {
let v205 = this.items.findIndex(p444 => p444 == p443);
if (v205 != -1) {
return v205;
} else {
return p435.checkItem.index(p443, this.items);
}
};
this.setData = function (p445) {
this.id = p445[0];
this.sid = p445[1];
this.name = p445[2];
this.x = p445[3];
this.y = p445[4];
this.dir = p445[5];
this.health = p445[6];
this.maxHealth = p445[7];
this.scale = p445[8];
this.skinColor = p445[9];
};
this.updateTimer = function () {
this.bullTimer -= 1;
if (this.bullTimer <= 0) {
this.setBullTick = false;
this.bullTick = game.tick - 1;
this.bullTimer = p429.serverUpdateRate;
}
this.poisonTimer -= 1;
if (this.poisonTimer <= 0) {
this.setPoisonTick = false;
this.poisonTick = game.tick - 1;
this.poisonTimer = p429.serverUpdateRate;
}
};
this.update = function (p446) {
if (this.sid == playerSID) {}
if (this.active) {
let v206 = {
skin: findID(p436, this.skinIndex),
tail: findID(p437, this.tailIndex)
};
let v207 = (this.buildIndex >= 0 ? 0.5 : 1) * (p435.weapons[this.weaponIndex].spdMult || 1) * (v206.skin ? v206.skin.spdMult || 1 : 1) * (v206.tail ? v206.tail.spdMult || 1 : 1) * (this.y <= p429.snowBiomeTop ? v206.skin && v206.skin.coldM ? 1 : p429.snowSpeed : 1) * this.slowMult;
this.maxSpeed = v207;
}
};
let v208 = 0;
let v209 = 0;
this.animate = function (p447) {
if (this.animTime > 0) {
this.animTime -= p447;
if (this.animTime <= 0) {
this.animTime = 0;
this.dirPlus = 0;
v208 = 0;
v209 = 0;
} else if (v209 == 0) {
v208 += p447 / (this.animSpeed * p429.hitReturnRatio);
this.dirPlus = p430.lerp(0, this.targetAngle, Math.min(1, v208));
if (v208 >= 1) {
v208 = 1;
v209 = 1;
}
} else {
v208 -= p447 / (this.animSpeed * (1 - p429.hitReturnRatio));
this.dirPlus = p430.lerp(0, this.targetAngle, Math.max(0, v208));
}
}
};
this.startAnim = function (p448, p449) {
this.animTime = this.animSpeed = p435.weapons[p449].speed;
this.targetAngle = p448 ? -p429.hitAngle : -Math.PI;
v208 = 0;
v209 = 0;
};
this.canSee = function (p450) {
if (!p450) {
return false;
}
let v210 = Math.abs(p450.x - this.x) - p450.scale;
let v211 = Math.abs(p450.y - this.y) - p450.scale;
return v210 <= p429.maxScreenWidth / 2 * 1.3 && v211 <= p429.maxScreenHeight / 2 * 1.3;
};
this.judgeShame = function () {
this.lastshamecount = this.shameCount;
if (this.oldHealth < this.health) {
if (this.hitTime) {
let v212 = game.tick - this.hitTime;
this.lastHit = game.tick;
this.hitTime = 0;
if (v212 < 2) {
this.shameCount++;
} else {
this.shameCount = Math.max(0, this.shameCount - 2);
}
}
} else if (this.oldHealth > this.health) {
this.hitTime = game.tick;
}
};
this.addShameTimer = function () {
this.shameCount = 0;
this.shameTimer = 30;
let vSetInterval = setInterval(() => {
this.shameTimer--;
if (this.shameTimer <= 0) {
clearInterval(vSetInterval);
}
}, 1000);
};
this.isTeam = function (p451) {
return this == p451 || this.team && this.team == p451.team;
};
this.findAllianceBySid = function (p452) {
if (this.team) {
return alliancePlayers.find(p453 => p453 === p452);
} else {
return null;
}
};
this.checkCanInsta = function (p454) {
let v213 = 0;
if (this.alive && inGame) {
let v214 = {
weapon: this.weapons[0],
variant: this.primaryVariant,
dmg: this.weapons[0] == undefined ? 0 : p435.weapons[this.weapons[0]].dmg
};
let v215 = {
weapon: this.weapons[1],
variant: this.secondaryVariant,
dmg: this.weapons[1] == undefined ? 0 : p435.weapons[this.weapons[1]].Pdmg
};
let v216 = this.skins[7] && !p454 ? 1.5 : 1;
let v217 = v214.variant != undefined ? p429.weaponVariants[v214.variant].val : 1;
if (v214.weapon != undefined && this.reloads[v214.weapon] == 0) {
v213 += v214.dmg * v217 * v216;
}
if (v215.weapon != undefined && this.reloads[v215.weapon] == 0) {
v213 += v215.dmg;
}
if (this.skins[53] && this.reloads[53] <= (player.weapons[1] == 10 ? 0 : game.tickRate) && near.skinIndex != 22) {
v213 += 25;
}
v213 *= near.skinIndex == 6 ? 0.75 : 1;
return v213;
}
return 0;
};
this.manageReload = function () {
if (this.shooting[53]) {
this.shooting[53] = 0;
this.reloads[53] = 2500 - game.tickRate;
} else if (this.reloads[53] > 0) {
this.reloads[53] = Math.max(0, this.reloads[53] - game.tickRate);
}
if (this.reloads[this.weaponIndex] <= 1000 / 9) {
let v218 = this.weaponIndex;
let v219 = liztobj.filter(p455 => (p455.active || p455.alive) && p455.health < p455.maxHealth && p455.group !== undefined && p430.getDist(p455, player, 0, 2) <= p435.weapons[player.weaponIndex].range + p455.scale);
for (let v220 = 0; v220 < v219.length; v220++) {
let v221 = v219[v220];
let v222 = p435.weapons[v218].dmg * p429.weaponVariants[tmpObj[(v218 < 9 ? "prima" : "seconda") + "ryVariant"]].val * (p435.weapons[v218].sDmg || 1) * 3.3;
let v223 = p435.weapons[v218].dmg * p429.weaponVariants[tmpObj[(v218 < 9 ? "prima" : "seconda") + "ryVariant"]].val * (p435.weapons[v218].sDmg || 1);
if (v221.health - v223 <= 0 && near.length) {
place(near.dist2 < near.scale * 1.8 + 50 ? 4 : 2, caf(v221, player) + Math.PI);
}
}
}
if (this.gathering || this.shooting[1]) {
if (this.gathering) {
this.gathering = 0;
this.reloads[this.gatherIndex] = p435.weapons[this.gatherIndex].speed * (this.skinIndex == 20 ? 0.78 : 1);
this.attacked = true;
}
if (this.shooting[1]) {
this.shooting[1] = 0;
this.reloads[this.shootIndex] = p435.weapons[this.shootIndex].speed * (this.skinIndex == 20 ? 0.78 : 1);
this.attacked = true;
}
} else {
this.attacked = false;
if (this.buildIndex < 0) {
if (this.reloads[this.weaponIndex] > 0) {
this.reloads[this.weaponIndex] = Math.max(0, this.reloads[this.weaponIndex] - 110);
if (this == player) {
if (getEl("weaponGrind").checked) {
for (let v224 = 0; v224 < Math.PI * 2; v224 += Math.PI / 2) {
checkPlace(player.getItemType(22), v224);
}
}
}
if (this.reloads[this.primaryIndex] == 0 && this.reloads[this.weaponIndex] == 0) {
this.antiBull++;
game.tickBase(() => {
this.antiBull = 0;
}, 1);
}
}
}
}
};
this.addDamageThreat = function (p456) {
let v225 = {
weapon: this.primaryIndex,
variant: this.primaryVariant
};
v225.dmg = v225.weapon == undefined ? 45 : p435.weapons[v225.weapon].dmg;
let v226 = {
weapon: this.secondaryIndex,
variant: this.secondaryVariant
};
v226.dmg = v226.weapon == undefined ? 35 : p435.weapons[v226.weapon].Pdmg;
let v227 = 1.5;
let v228 = v225.variant != undefined ? p429.weaponVariants[v225.variant].val : 1.18;
let v229 = v226.variant != undefined ? [9, 12, 17, 15].includes(v226.weapon) ? 1 : p429.weaponVariants[v226.variant].val : 1.18;
if (v225.weapon == undefined ? true : this.reloads[v225.weapon] == 0) {
this.damageThreat += v225.dmg * v228 * v227;
}
if (v226.weapon == undefined ? true : this.reloads[v226.weapon] == 0) {
this.damageThreat += v226.dmg * v229;
}
if (this.reloads[53] <= game.tickRate) {
this.damageThreat += 25;
}
this.damageThreat *= p456.skinIndex == 6 ? 0.75 : 1;
if (!this.isTeam(p456)) {
if (this.dist2 <= 300) {
p456.damageThreat += this.damageThreat;
}
}
};
this.addDamageProbability = function (p457) {
let v230 = {
weapon: this.primaryIndex,
variant: this.primaryVariant
};
v230.dmg = v230.weapon == undefined ? 45 : p435.weapons[v230.weapon].dmg;
let v231 = {
weapon: this.secondaryIndex,
variant: this.secondaryVariant
};
v231.dmg = v231.weapon == undefined ? 50 : p435.weapons[v231.weapon].Pdmg;
let v232 = 1.5;
let v233 = v230.variant != undefined ? p429.weaponVariants[v230.variant].val : 1.18;
let v234 = v231.variant != undefined ? [9, 12, 17, 15].includes(v231.weapon) ? 1 : p429.weaponVariants[v231.variant].val : 1.18;
if (v230.weapon == undefined ? true : this.reloads[v230.weapon] == 0) {
this.damageProbably += v230.dmg * v233 * v232 * 0.75;
}
if (v231.weapon == undefined ? true : this.reloads[v231.weapon] == 0) {
this.damageProbably += v231.dmg * v234;
}
this.damageProbably *= 0.75;
if (!this.isTeam(p457)) {
if (this.dist2 <= 300) {
p457.damageProbably += this.damageProbably;
}
}
};
}
}
;
function sendUpgrade(p458) {
player.reloads[p458] = 0;
packet("H", p458);
}
function storeEquip(p459, p460) {
packet("c", 0, p459, p460);
}
function storeBuy(p461, p462) {
packet("c", 1, p461, p462);
}
function getVelocity(p463) {
let vCaf = caf({
x: p463.olderX,
y: p463.olderY
}, p463);
let vCdf = cdf({
x: p463.olderX,
y: p463.olderY
}, p463);
let v235 = p463.x + Math.cos(vCaf) * 4 * window.pingTime / 111.1111;
let v236 = p463.y + Math.sin(vCaf) * 4 * window.pingTime / 111.1111;
return [vCdf, v235, v236, vCaf];
}
function buyEquip(p464, p465) {
let v237 = player.skins[6] ? 6 : 0;
if (player.alive && inGame) {
if (p465 == 0) {
if (player.skins[p464]) {
if (player.latestSkin != p464) {
packet("c", 0, p464, 0);
}
} else if (getEl("autoBuyEquip").checked) {
let vFindID = findID(hats, p464);
if (vFindID) {
if (player.points >= vFindID.price) {
packet("c", 1, p464, 0);
packet("c", 0, p464, 0);
} else if (player.latestSkin != v237) {
packet("c", 0, v237, 0);
}
} else if (player.latestSkin != v237) {
packet("c", 0, v237, 0);
}
} else if (player.latestSkin != v237) {
packet("c", 0, v237, 0);
}
} else if (p465 == 1) {
if (useWasd && p464 != 11 && p464 != 0) {
if (player.latestTail != 0) {
packet("c", 0, 0, 1);
}
return;
}
if (player.tails[p464]) {
if (player.latestTail != p464) {
packet("c", 0, p464, 1);
}
} else if (getEl("autoBuyEquip").checked) {
let vFindID2 = findID(accessories, p464);
if (vFindID2) {
if (player.points >= vFindID2.price) {
packet("c", 1, p464, 1);
packet("c", 0, p464, 1);
} else if (player.latestTail != 0) {
packet("c", 0, 0, 1);
}
} else if (player.latestTail != 0) {
packet("c", 0, 0, 1);
}
} else if (player.latestTail != 0) {
packet("c", 0, 0, 1);
}
}
}
}
function selectToBuild(p466, p467) {
packet("z", p466, p467);
}
function selectWeapon(p468, p469) {
if (!p469) {
player.weaponCode = p468;
}
packet("z", p468, 1);
}
function sendAutoGather() {
packet("K", 1, 1);
}
function sendAtck(p470, p471) {
packet("F", p470, p471, 1);
}
let placePacketLimiter = false;
let placementsPerTick = 0;
let phantom = [];
function place(p472, p473, p474) {
try {
if (p472 == undefined) {
return;
}
let v238 = items.list[player.items[p472]];
let v239 = player.scale + v238.scale + (v238.placeOffset || 0);
let v240 = player.x2 + v239 * Math.cos(p473);
let v241 = player.y2 + v239 * Math.sin(p473);
if (player.alive && inGame && player.itemCounts[v238.group.id] == undefined ? true : player.itemCounts[v238.group.id] < (config.isSandbox ? 299 : v238.group.limit ? v238.group.limit : 99)) {
selectToBuild(player.items[p472]);
sendAtck(1, p473);
selectWeapon(player.weaponCode, 1);
if (p474 && getEl("placeVis").checked) {
placeVisible.push({
x: v240,
y: v241,
name: v238.name,
scale: v238.scale,
dir: p473
});
game.tickBase(() => {
placeVisible.shift();
}, 1);
}
}
} catch (_0x5f3754) {}
}
function checkPlace(p475, p476) {
try {
if (p475 == undefined) {
return;
}
let v242 = items.list[player.items[p475]];
let v243 = player.scale + v242.scale + (v242.placeOffset || 0);
let v244 = player.x2 + v243 * Math.cos(p476);
let v245 = player.y2 + v243 * Math.sin(p476);
if (objectManager.checkItemLocation(v244, v245, v242.scale, 0.6, v242.id, false, player)) {
place(p475, p476, 1);
}
} catch (_0x53d8e2) {}
}
function soldierMult() {
if (player.latestSkin == 6) {
return 0.75;
} else {
return 1;
}
}
function healthBased() {
if (player.health == 100) {
return 0;
}
if (player.skinIndex != 45 && player.skinIndex != 56) {
return Math.ceil((100 - player.health) / items.list[player.items[0]].healing);
}
return 0;
}
function insat1() {
io.send("6", "");
my.autoAim = true;
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
buyEquip(0, 1);
sendAutoGather();
setTimeout(() => {
selectWeapon(player.weapons[1]);
buyEquip(53, 0);
setTimeout(() => {
sendAutoGather();
my.autoAim = false;
}, 180);
}, 100);
}
function getAttacker(p477) {
let v246 = enemy.filter(p478 => {
let v247 = {
three: p478.attacked
};
return v247.three;
});
return v246;
}
function healer() {
for (let v248 = 0; v248 < healthBased(); v248++) {
place(0, getAttackDir());
}
}
function healer33() {
for (let v249 = 0; v249 < healthBased(); v249++) {
place(0, getAttackDir());
}
}
function healer1() {
place(0, getAttackDir());
return Math.ceil((100 - player.health) / items.list[player.items[0]].healing);
}
function noshameheal() {
place(0, getAttackDir());
if (player.shameCount >= 5) {
place(0, getAttackDir());
healer33();
} else if (player.shameCount <= 4 && player.skinIndex != 6 && player.skinIndex != 22) {
healer33();
buyEquip(6, 0);
} else if (player.shameCount >= 5 && player.skinIndex != 6 && player.skinIndex != 22) {
return Math.ceil((100 - player.health) / items.list[player.items[0]].healing);
healer33();
}
}
const placedSpikePositions = new Set();
const placedTrapPositions = new Set();
function isPositionValid(p479) {
const v250 = player.x2;
const v251 = player.y2;
const v252 = Math.hypot(p479[0] - v250, p479[1] - v251);
return v252 > 35;
}
function findAllianceBySid(p480) {
if (player.team) {
return alliancePlayers.find(p481 => p481 === p480);
} else {
return null;
}
}
function calculatePossibleTrapPositions(p482, p483, p484) {
const v253 = [];
const v254 = 16;
for (let v255 = 0; v255 < v254; v255++) {
const v256 = Math.PI * 2 * v255 / v254;
const v257 = p482 + p484 * Math.cos(v256);
const v258 = p483 + p484 * Math.sin(v256);
const v259 = [v257, v258];
if (!v253.some(p485 => isPositionTooClose(v259, p485))) {
v253.push(v259);
}
}
return v253;
}
function isPositionTooClose(p486, p487, p488 = 50) {
const v260 = Math.hypot(p486[0] - p487[0], p486[1] - p487[1]);
return v260 < p488;
}
function applCxC(p489) {
if (player.health == 100) {
return 0;
}
if (player.skinIndex != 45 && player.skinIndex != 56) {
return Math.ceil(p489 / items.list[player.items[0]].healing);
}
return 0;
}
function healthBased() {
if (player.health == 100) {
return 0;
}
if (player.skinIndex != 45 && player.skinIndex != 56) {
return Math.ceil((100 - player.health) / items.list[player.items[0]].healing);
}
return 0;
}
function calcDmg(p490) {
if (p490 * player.skinIndex == 6) {
return 0.75;
} else {
return 1;
}
}
function antirev() {
if (tmpObj.isPlayer) {
for (let v261 = 0; v261 < healthBased(); v261++) {
place(0, getAttackDir());
if (player.health == 100 && player.shameCount < 6 && player.skinIndex == 6) {
place(0, getAttackDir());
console.log("AAAAAAAAAAAAA");
} else if (player.health == 100 && player.shameCount < 6 && player.skinIndex != 6) {
place(0, getAttackDir());
console.log("AAAAAAAAAAAAA");
} else if (player.health == 96 && player.shameCount < 5 && player.skinIndex == 6) {
place(0, getAttackDir());
setTimeout(() => {
place(0, getAttackDir());
}, 5);
} else if (player.health == 25 && player.shameCount < 5 && player.skinIndex == 6) {
place(0, getAttackDir());
setTimeout(() => {
place(0, getAttackDir());
}, 5);
} else if (player.health == 10 && player.shameCount < 6 && player.skinIndex == 6) {
place(0, getAttackDir());
setTimeout(() => {
place(0, getAttackDir());
}, 5);
} else if (player.health == 50 && player.shameCount < 7 && player.skinIndex != 6) {
place(0, getAttackDir());
setTimeout(() => {
place(0, getAttackDir());
}, 5);
}
if (player.shameCount < 6) {
setTimeout(() => {
place(0, getAttackDir());
}, 30);
}
}
}
}
let slowHeal = function (p491) {
setTimeout(() => {
healer();
}, 25);
};
let isHealing = false;
let delay = 20;
function uziheal() {
if (!isHealing && player.health < 100) {
isHealing = true;
if (player.health < 70) {
place(0, getAttackDir());
healer();
isHealing = false;
} else {
const v262 = 5;
const v263 = Math.ceil((100 - player.health) / 25);
let v264 = 0;
function f17() {
if (v264 < v263) {
setTimeout(() => {
place(0, getAttackDir());
v264++;
f17();
}, v262);
} else {
isHealing = false;
}
}
f17();
}
}
}
function predictHeal() {}
function antiSyncHealing(p492) {
my.antiSync = true;
let vSetInterval2 = setInterval(() => {
if (player.shameCount < 6) {
place(0, getAttackDir());
}
}, 75);
setTimeout(() => {
clearInterval(vSetInterval2);
setTimeout(() => {
my.antiSync = false;
}, game.tickRate);
}, game.tickRate);
}
function biomeGear(p493, p494) {
if (player.moveDir == undefined && near.dist2 > 300) {
buyEquip(22, 0);
}
if (player.y2 >= config.mapScale / 2 - config.riverWidth / 2 && player.y2 <= config.mapScale / 2 + config.riverWidth / 2) {
if (p494) {
return 31;
}
buyEquip(31, 0);
} else if (player.y2 <= config.snowBiomeTop) {
if (p494) {
if (enemy && near.dist2 <= 300) {
return 6;
} else {
return 15;
}
}
buyEquip(15, 0);
} else {
if (p494) {
if (enemy && near.dist2 <= 300) {
return 6;
} else {
return 12;
}
}
buyEquip(enemy ? 6 : 12, 0);
}
if (p494) {
return 0;
}
}
function getPossibleObjDmg(p495) {
return items.weapons[p495.weapons[p495.weapons[1] ? Number(p495.weapons[1] == 10) : 0]].dmg / 4 * (player.skins[40] ? 3.3 : 1) * (items.weapons[p495.weapons[Number(p495.weapons[1] == 10)]].sDmg || 1);
}
let doStuffPingSet = [];
function smartTick(p496) {
doStuffPingSet.push(p496);
}
class Combat {
constructor(p497, p498) {
this.findSpikeHit = {
x: 0,
y: 0,
spikePosX: 0,
spikePosY: 0,
canHit: false,
spikes: []
};
this.spikesNearEnemy = [];
this.doSpikeHit = function () {
if (enemy.length) {
let v265 = gameObjects.find(p499 => p499.active && p499.name == "pit trap" && p499.isTeamObject(player) && p497.getDistance(p499.x, p499.y, near.x2, near.y2) <= 50);
let v266 = 0.3 + (p498.weapons[player.weapons[0]].knock || 0);
let v267 = Math.atan2(near.y2 - player.y2, near.x2 - player.x2);
let v268 = {
x: near.x2 + v266 * Math.cos(v267) * 224,
y: near.y2 + v266 * Math.sin(v267) * 224
};
if (near.dist2 < p498.weapons[player.weapons[0]].range + 70 && !v265 && near) {
this.findSpikeHit.x = v268.x;
this.findSpikeHit.y = v268.y;
}
this.findSpikeHit.spikes = gameObjects.filter(p500 => p500.active && p500.dmg && p500.owner.sid == player.sid && p497.getDistance(p500.x, p500.y, v268.x, v268.y) <= 35 + p500.scale);
for (let v269 = 0; v269 < this.findSpikeHit.spikes.length; v269++) {
let v270 = this.findSpikeHit.spikes[v269];
const v271 = p497.getDist(player, v270, 0, 0);
const v272 = p497.getDist(near, v270, 0, 0);
const v273 = p497.getDist(v270, near, 0, 0);
if (v271 > v272 && v273 < 35 + v270.scale + player.scale && (player.primaryDmg >= 35 && player.skinIndex != 6 || player.primaryDmg >= 51)) {
if (v270 && !v265 && near && near.dist2 <= p498.weapons[player.weapons[0]].range + player.scale * 1.8 && player.reloads[player.weapons[0]] == 0) {
this.findSpikeHit.canHit = true;
this.findSpikeHit.spikePosX = v270.x;
this.findSpikeHit.spikePosY = v270.y;
if (this.findSpikeHit.canHit) {
instaC.canSpikeTick = true;
instaC.syncHit = true;
if (getEl("revTick").checked && player.weapons[1] == 15 && player.reloads[53] == 0 && instaC.perfCheck(player, near)) {
instaC.revTick = true;
}
}
smartTick(() => {
smartTick(() => {
this.findSpikeHit.spikePosX = 0;
this.findSpikeHit.spikePosY = 0;
this.findSpikeHit.canHit = false;
});
});
}
} else {
this.findSpikeHit.spikePosX = 0;
this.findSpikeHit.spikePosY = 0;
this.findSpikeHit.canHit = false;
}
}
}
};
}
}
let advHeal = [];
let enemyKbSpike = {
x: null,
y: null
};
let enemyKbSpike2 = {
x: null,
y: null
};
class Traps {
constructor(p501, p502) {
this.dist = 0;
this.aim = 0;
this.inTrap = false;
this.replaced = false;
this.antiTrapped = false;
this.info = {};
this.notFast = function () {
return player.weapons[1] == 10 && (this.info.health > p502.weapons[player.weapons[0]].dmg || player.weapons[0] == 5);
};
this.testCanPlace = function (p503, p504 = -(Math.PI / 2), p505 = Math.PI / 2, p506 = Math.PI / 18, p507, p508, p509) {
try {
let v274 = p502.list[player.items[p503]];
let v275 = player.scale + v274.scale + (v274.placeOffset || 0);
let v276 = {
attempts: 0,
placed: 0
};
let v277 = [];
gameObjects.forEach(p510 => {
v277.push({
x: p510.x,
y: p510.y,
active: p510.active,
blocker: p510.blocker,
scale: p510.scale,
isItem: p510.isItem,
type: p510.type,
colDiv: p510.colDiv,
getScale: function (p511, p512) {
p511 = p511 || 1;
return this.scale * (this.isItem || this.type == 2 || this.type == 3 || this.type == 4 ? 1 : p511 * 0.6) * (p512 ? 1 : this.colDiv);
}
});
});
for (let vP504 = p504; vP504 < p505; vP504 += p506) {
v276.attempts++;
let v278 = p507 + vP504;
let v279 = player.x2 + v275 * Math.cos(v278);
let v280 = player.y2 + v275 * Math.sin(v278);
let v281 = v277.find(p513 => p513.active && p501.getDistance(v279, v280, p513.x, p513.y) < v274.scale + (p513.blocker ? p513.blocker : p513.getScale(0.6, p513.isItem)));
if (v281) {
continue;
}
if (v274.id != 19 && v280 >= config.mapScale / 2 - config.riverWidth / 2 && v280 <= config.mapScale / 2 + config.riverWidth / 2) {
continue;
}
if (!p508 && p509 || useWasd) {
if (useWasd ? false : p509.inTrap) {
if (p501.getAngleDist(near.aim2 + Math.PI, v278 + Math.PI) <= Math.PI) {
place(2, v278, 1);
} else if (player.items[4] == 15) {
place(4, v278, 1);
}
} else if (p501.getAngleDist(near.aim2, v278) <= config.gatherAngle / 1.5) {
place(2, v278, 1);
} else if (player.items[4] == 15) {
place(4, v278, 1);
}
} else {
place(p503, v278, 1);
}
v277.push({
x: v279,
y: v280,
active: true,
blocker: v274.blocker,
scale: v274.scale,
isItem: true,
type: null,
colDiv: v274.colDiv,
getScale: function () {
return this.scale;
}
});
if (p501.getAngleDist(near.aim2, v278) <= 1) {
v276.placed++;
}
}
if (v276.placed > 0 && p508 && v274.dmg) {
if (near.dist2 <= p502.weapons[player.weapons[0]].range + player.scale * 1.8 && configs.spikeTick) {
instaC.canSpikeTick = true;
}
}
} catch (_0x5d85e8) {}
};
this.checkSpikeTick = function () {
try {
if (![3, 4, 5].includes(near.primaryIndex)) {
return false;
}
if (getEl("safeAntiSpikeTick").checked || my.autoPush ? false : near.primaryIndex == undefined ? true : near.reloads[near.primaryIndex] > game.tickRate) {
return false;
}
if (near.dist2 <= p502.weapons[near.primaryIndex || 5 || 7 || 4 || 0].range + near.scale * 1.8) {
buyEquip(26, 0);
let v282 = p502.list[9];
let v283 = near.scale + v282.scale + (v282.placeOffset || 0);
let v284 = 0;
let v285 = {
attempts: 0,
block: "unblocked"
};
for (let v286 = -1; v286 <= 1; v286 += 1 / 10) {
v285.attempts++;
let v287 = p501.getDirect(player, near, 2, 2) + v286;
let v288 = near.x2 + v283 * Math.cos(v287);
let v289 = near.y2 + v283 * Math.sin(v287);
let v290 = gameObjects.find(p514 => p514.active && p501.getDistance(v288, v289, p514.x, p514.y) < v282.scale + (p514.blocker ? p514.blocker : p514.getScale(0.6, p514.isItem)));
if (v290) {
continue;
}
if (v289 >= config.mapScale / 2 - config.riverWidth / 2 && v289 <= config.mapScale / 2 + config.riverWidth / 2) {
continue;
}
v284++;
v285.block = "blocked";
break;
}
if (v284) {
my.anti0Tick = 1;
healer();
buyEquip(6, 0);
return true;
}
}
} catch (_0x52bca4) {
return null;
}
return false;
};
this.protect = function (p515) {
if (!configs.antiTrap) {
return;
}
if (player.items[4]) {
this.testCanPlace(2, -(Math.PI / 2), Math.PI / 2, Math.PI / 18, p515 + Math.PI);
this.antiTrapped = true;
}
};
this.ReTrap = function () {
let v291 = p502.weapons[player.weaponIndex].range + 70;
gameObjects.forEach(p516 => {
if (enemy.length) {
let v292 = p501.getDist(p516, player, 0, 2);
let v293 = p501.getDirect(p516, player, 0, 2);
game.tickBase(() => {
if (near.dist2 <= v291 && p516.health <= 272.58 && PrePlaceCount < 15 && f25(p516, player) <= v291 || near.length && near.reloads[near.weaponIndex] <= config.tickRate * (window.pingTime >= 200 ? 2 : 1) || player.reloads[player.weaponIndex] * 1000 <= config.tickRate * (window.pingTime >= 200 ? 2 : 1)) {
place(2, v293);
} else if (near.dist2 > v291 && p516.health <= 272.58 && PrePlaceCount >= 0 && f25(p516, player) <= v291 || near.length && near.reloads[near.weaponIndex] <= config.tickRate * (window.pingTime >= 200 ? 2 : 1) || player.reloads[player.weaponIndex] * 1000 <= config.tickRate * (window.pingTime >= 200 ? 2 : 1)) {}
}, 1);
}
});
};
function f18(p517, p518) {
try {
return Math.hypot((p518.y2 || p518.y) - (p517.y2 || p517.y), (p518.x2 || p518.x) - (p517.x2 || p517.x));
} catch (_0x5b3b42) {
return Infinity;
}
}
function f19(p519) {
return Math.sqrt(p519.xVel * p519.xVel + p519.yVel * p519.yVel);
}
function f20(p520) {
return Math.atan2(p520.yVel, p520.xVel);
}
function f21() {
let v294 = [];
for (let v295 = 0; v295 < 360; v295 += 250) {
v294.push(Math.PI / 180 * v295);
}
return v294;
}
this.protect = function (p521) {
if (!getEl("antiTrap").checked) {
return;
}
if (player.items[4] && near.dist2 <= 600) {
this.testCanPlace(2, -(Math.PI / 2), Math.PI / 2, Math.PI / 18, p521 + Math.PI);
this.antiTrapped = true;
}
};
p501.deg2rad = function (p522) {
return p522 * (Math.PI / 180);
};
this.autoPlace = function () {
if (secPacket >= 90) {
return;
}
let v296;
v296 = 250;
const v297 = 45;
const v298 = Math.PI / 24;
if (enemy.length && game.tick % (Math.max(1, parseInt) || 1) === 0) {
let v299 = {
inTrap: false
};
let v300 = gameObjects.find(p523 => p523.trap && p523.active && p523.isTeamObject(player) && p501.getDist(p523, near, 0, 2) <= near.scale + p523.getScale() + 5);
v299.inTrap = !!v300;
if (near.dist2 < 500 && near.dist2 > 350) {
this.testCanPlace(4, 0, Math.PI * 2, Math.PI / 24, near.aim2);
}
if (near.dist2 <= 300 && (near.dist2 > v296 && !v299.inTrap || autoQ)) {
if (v299.inTrap && near.dist2 <= 250) {
checkPlace(2, near.aim2 + Math.PI);
} else if (player.items[4] == 15) {
checkPlace(4, near.aim2);
}
} else if (!v299.inTrap && (testMode ? enemy.length : near.dist2 <= v296)) {
let v301 = p501.getDirect(near, player, 0, 2);
let v302 = 70;
const vF19 = f19(near);
const vF20 = f20(near);
if (near.dist2 <= v296) {
if (player.items[4] == 15) {
this.testCanPlace(4, p501.deg2rad(-90), p501.deg2rad(90), Math.PI / 24, v301, v302, {
inTrap: true,
enemyVelocity: vF19,
enemyDirection: vF20
});
}
}
} else if (v299.inTrap) {
let v303 = p501.getDirect(v300, player, 0, 2);
let v304 = 70;
const vF192 = f19(v300);
const vF202 = f20(v300);
if (near.dist2 <= 100) {
let v305 = Math.random() * Math.PI * 2;
this.testCanPlace(2, v305, v305 + Math.PI * 2, v298, v303, v297, {
inTrap: false,
enemyVelocity: vF192,
enemyDirection: vF202
});
}
}
}
};
function f22(p524, p525, p526, p527) {
return Math.atan2(p527 - p525, p526 - p524);
}
function f23(p528) {
const v306 = 20;
return p528.health < v306;
}
function f24() {
this.info.health <= p502.weapons[player.weaponIndex].dmg * config.weaponVariants[tmpObj[(player.weaponIndex < 9 ? "prima" : "seconda") + "ryVariant"]].val * (p502.weapons[player.weaponIndex].sDmg || 1) * 3.3;
autoQ = true;
}
function f25(p529, p530) {
return Math.sqrt(Math.pow(p530.y - p529.y, 2) + Math.pow(p530.x - p529.x, 2));
}
let v307 = false;
let v308 = false;
var v309 = {
draw3: {
active: false,
x: 0,
y: 0,
scale: 0
},
moveDir: undefined,
lastPos: {
x: 0,
y: 0
}
};
function f26(p531, p532) {
return p531.x * p532.x + p531.y * p532.y;
}
function f27(p533) {
return Math.sqrt(p533.x * p533.x + p533.y * p533.y);
}
function f28(p534, p535) {
return {
x: p535.x - p534.x,
y: p535.y - p534.y
};
}
function f29(p536, p537) {
let vF28 = f28(p536, p537);
let v310 = {
x: Math.cos(player.dir),
y: Math.sin(player.dir)
};
let vF26 = f26(v310, vF28);
let v311 = f27(v310) * f27(vF28);
let v312 = vF26 / v311;
let v313 = Math.acos(v312);
v313 *= 180 / Math.PI;
if (v313 < 0) {
v313 += 360;
}
return v313;
}
let v314 = false;
function f30(p538, p539, p540) {
const v315 = Math.abs(p538 - p539 * Math.cos(Math.atan2(near.yVel, near.xVel)));
const v316 = 1 - v315 / p540;
return Math.max(0, Math.min(1, v316));
}
this.replacer = function (p541) {
if (!p541 || !getEl("autoReplace").checked) {
return;
}
if (!inGame) {
return;
}
if (this.antiTrapped) {
return;
}
this.angles = this.angles || [];
game.tickBase(() => {
let v317 = p501.getDirect(p541, player, 0, 2);
let v318 = p501.getDist(p541, player, 0, 2);
let v319 = Math.PI / 6;
if (getEl("weaponGrind").checked && v318 <= p502.weapons[player.weaponIndex].range + player.scale) {
return;
}
if (v318 <= 300 && near.dist2 <= 300) {
let v320 = this.checkSpikeTick();
let v321 = p502.weapons[near.primaryIndex || 5].range;
if (!v320 && (near.dist2 <= v321 || traps.inTrap && v318 <= 150)) {
let v322 = Math.atan2(player.y - p541.y, player.x - p541.x);
let v323 = p501.getDist(p541, player, 0, 2);
let v324 = 80;
let v325 = Math.sqrt(near.xVel * near.xVel + near.yVel * near.yVel);
let v326 = Math.atan2(near.yVel, near.xVel);
let v327 = v322 + v325 * Math.cos(v326);
let v328 = v323 + v325 * Math.sin(v326);
this.angles.push(v327);
if (this.angles.length > 5) {
this.angles.shift();
}
let v329 = this.angles.reduce((p542, p543) => p542 + p543, 0) / this.angles.length;
v329 += v319;
let v330 = Math.PI / 24 * Math.sin(Date.now() / 1000);
let v331 = v329 + v330;
this.testCanPlace(2, v331, v331 + Math.PI * 2, Math.PI / 24, v317, v324);
} else if (player.items[4] === 15 || near.dist2 <= 100) {
let v332 = Math.atan2(player.y - p541.y, player.x - p541.x);
let v333 = p501.getDist(p541, player, 0, 2);
let v334 = 70;
let v335 = Math.sqrt(near.xVel * near.xVel + near.yVel * near.yVel);
let v336 = Math.atan2(near.yVel, near.xVel);
let v337 = v332 + v335 * Math.cos(v336);
let v338 = v333 + v335 * Math.sin(v336);
this.angles.push(v337);
if (this.angles.length > 5) {
this.angles.shift();
}
let v339 = this.angles.reduce((p544, p545) => p544 + p545, 0) / this.angles.length;
v339 += v319;
let v340 = v339 + Math.PI;
if (player.items[4] == 15) {
this.testCanPlace(4, v340, v340 + Math.PI * 2, Math.PI / 24, v317, v334);
}
}
}
let v341 = [];
gameObjects.forEach(p546 => {
if (p546.dmg === true && p546.isTeamObj(player)) {
v341.push(p546);
}
});
if (v308) {
if (player.items[4] == 15) {
this.testCanPlace(4, 0, Math.PI * 2, Math.PI / 24, v317, 1);
}
v308 = false;
}
let v342 = false;
v341.forEach(p547 => {
if (p501.getDist(p547, player, 0, 2) <= 200) {
let v343 = Math.atan2(p547.y2 - player.y2, p547.x2 - player.x2);
let v344 = Math.atan2(near.y2 - p547.y2, near.x2 - p547.x2);
let v345 = p501.nearestAngle(v343, v344);
let v346 = 87;
let v347 = player.x2 + v346 * Math.cos(v345);
let v348 = player.y2 + v346 * Math.sin(v345);
let v349 = p501.getDist(near, {
x2: v347,
y2: v348
}, 0, 2);
if (p501.getDist(p541, near, 0, 2) <= 87 && v349 > 1 + v346) {
place(2, v345);
v342 = true;
}
}
});
if (!v342) {
if (near.dist2 <= 250 && !v307) {
for (let v350 = 0; v350 < 24; v350 += 2) {
let v351 = Math.PI * 2 * v350 / 24;
this.testCanPlace(2, v351, v351 + Math.PI / 24, Math.PI / 24, v317, 1);
v308 = true;
break;
}
}
if (v318 <= 250 && near.dist2 <= 250) {
let v352 = this.checkSpikeTick();
if (!v352 && near.dist3 <= p502.weapons[near.primaryIndex || 5 || 7 || 4 || 0].range + near.scale * 1.8) {
for (let v353 = 0; v353 < 24; v353 += 2) {
let v354 = Math.PI * 2 * v353 / 24;
this.testCanPlace(2, v354, v354 + Math.PI / 24, Math.PI / 24, v317, 1);
this.testCanPlace(2, Math.PI / 2, Math.PI / 2, Math.PI / 2, near, v317, 1);
v307 = true;
break;
}
} else if (player.items[4] == 15) {
this.testCanPlace(4, 0, Math.PI * 2, Math.PI / 24, v317, 1);
}
this.replaced = true;
}
}
}, 1);
};
this.replacer = function (p548) {
const v355 = gameObjects.filter(p549 => p549.trap && p549.active).sort((p550, p551) => p501.getDist(p550, near, 0, 2) - p501.getDist(p551, near, 0, 2)).find(p552 => {
const v356 = Math.hypot(p552.y - near.y2, p552.x - near.x2);
return p552 !== player && (player.sid === p552.owner.sid || findAllianceBySid(p552.owner.sid)) && v356 <= 50;
});
if (!p548 || !configs.autoReplace) {
return;
}
if (!inGame) {
return;
}
if (this.antiTrapped) {
return;
}
if (v357 <= p502.weapons[player.weaponIndex].range + player.scale) {
return;
}
let v357 = p501.getDist(p548, player, 0, 2);
let v358 = p501.getDirect(p548, player, 0, 2);
if (v357 <= 400 && near.dist2 <= 400) {
if (near.dist2 < 250) {
for (let v359 = 0; v359 < Math.PI * 2; v359 += Math.PI / 9) {
checkPlace(2, near.aim2 + v359);
}
} else {
for (let v360 = 0; v360 < Math.PI * 2; v360 += Math.PI / 9) {
checkPlace(4, near.aim2 + v360);
}
}
this.replaced = true;
}
};
}
}
;
class Instakill {
constructor() {
this.wait = false;
this.can = false;
this.isTrue = false;
this.nobull = false;
this.ticking = false;
this.canSpikeTick = false;
this.canSpikeSync = false;
this.startTick = false;
this.readyTick = false;
this.canCounter = false;
this.revTick = false;
this.syncHit = false;
this.changeType = function (p553) {
this.wait = false;
this.isTrue = true;
my.autoAim = true;
let v361 = [p553];
let v362 = near.backupNobull;
near.backupNobull = false;
if (p553 == "rev") {
healer1();
selectWeapon(player.weapons[1]);
buyEquip(53, 0);
sendAutoGather();
setTimeout(() => {
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
setTimeout(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 225);
}, 100);
} else if (p553 == "nobull") {
selectWeapon(player.weapons[0]);
healer1();
buyEquip(7, 0);
sendAutoGather();
setTimeout(() => {
selectWeapon(player.weapons[1]);
buyEquip(player.reloads[53] == 0 ? 53 : 6, 0);
setTimeout(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 255);
}, 105);
} else if (p553 == "normal") {
selectWeapon(player.weapons[0]);
healer1();
buyEquip(7, 0);
sendAutoGather();
game.tickBase(() => {
selectWeapon(player.weapons[1]);
buyEquip(player.reloads[53] == 0 ? 53 : 6, 0);
setTimeout(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 100);
}, 1);
} else {
setTimeout(() => {
this.isTrue = false;
my.autoAim = false;
}, 50);
}
};
this.syncTry = function () {
if (getEl("synctype").value == "rangesync") {
buyEquip(53, 0);
game.tickBase(() => {
this.isTrue = true;
my.autoAim = true;
selectWeapon(player.weapons[1]);
sendAutoGather();
game.tickBase(() => {
my.autoAim = false;
this.isTrue = false;
sendAutoGather();
}, 1);
}, 2);
} else if (getEl("synctype").value == "instasync") {
return "insta them";
} else {
this.isTrue = true;
my.autoAim = true;
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
buyEquip(21, 1);
sendAutoGather();
game.tickBase(() => {
if (player.reloads[53] == 0 && getEl("turretCombat").checked) {
selectWeapon(player.weapons[0]);
buyEquip(53, 0);
buyEquip(21, 1);
game.tickBase(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 1);
} else {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}
}, 1);
}
;
};
this.spikeTickType = function () {
this.isTrue = true;
my.autoAim = true;
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
buyEquip(21, 1);
sendAutoGather();
game.tickBase(() => {
if (player.reloads[53] == 0 && getEl("turretCombat").checked) {
selectWeapon(player.weapons[0]);
buyEquip(53, 0);
buyEquip(21, 1);
game.tickBase(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 1);
} else {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}
}, 1);
};
this.counterType = function () {
this.isTrue = true;
my.autoAim = true;
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
buyEquip(21, 1);
sendAutoGather();
game.tickBase(() => {
if (player.reloads[53] == 0 && getEl("turretCombat").checked) {
selectWeapon(player.weapons[0]);
buyEquip(53, 0);
buyEquip(21, 1);
game.tickBase(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}, 1);
} else {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
}
}, 1);
};
this.oneTickType = function () {
this.isTrue = true;
my.autoAim = true;
selectWeapon(player.weapons[1]);
buyEquip(53, 0);
packet("f", near.aim2, 1);
if (player.weapons[1] == 15) {
my.revAim = true;
sendAutoGather();
}
game.tickBase(() => {
my.revAim = false;
selectWeapon(player.weapons[0]);
buyEquip(7, 0);
buyEquip(19, 1);
packet("f", near.aim2, 1);
if (player.weapons[1] != 15) {
sendAutoGather();
}
game.tickBase(() => {
sendAutoGather();
this.isTrue = false;
my.autoAim = false;
packet("f", undefined, 1);
}, 1);
}, 1);
};
this.gotoGoal = function (p554, p555) {
let vF = p556 => p556 * config.playerScale;
let v363 = {
a: p554 - p555,
b: p554 + p555,
c: p554 - vF(1),
d: p554 + vF(1),
e: p554 - vF(2),
f: p554 + vF(2),
g: p554 - vF(4),
h: p554 + vF(4)
};
let vF2 = function (p557, p558) {
if (player.y2 >= config.mapScale / 2 - config.riverWidth / 2 && player.y2 <= config.mapScale / 2 + config.riverWidth / 2 && p558 == 0) {
buyEquip(31, 0);
} else {
buyEquip(p557, p558);
}
};
if (enemy.length) {
let v364 = near.dist2;
this.ticking = true;
if (v364 >= v363.a && v364 <= v363.b) {
vF2(22, 0);
vF2(11, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
return {
dir: undefined,
action: 1
};
} else {
if (v364 < v363.a) {
if (v364 >= v363.g) {
if (v364 >= v363.e) {
if (v364 >= v363.c) {
vF2(40, 0);
vF2(21, 1);
if (getEl("slowOT").checked) {
if (player.buildIndex != player.items[1]) {
selectToBuild(player.items[1]);
}
} else if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
} else {
vF2(26, 0);
vF2(21, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
} else {
vF2(26, 0);
vF2(12, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
} else {
biomeGear();
vF2(11, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
return {
dir: near.aim2 + Math.PI,
action: 0
};
} else if (v364 > v363.b) {
if (v364 <= v363.h) {
if (v364 <= v363.f) {
if (v364 <= v363.d) {
vF2(40, 0);
vF2(9, 1);
if (getEl("slowOT").checked) {
if (player.buildIndex != player.items[1]) {
selectToBuild(player.items[1]);
}
} else if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
} else {
vF2(22, 0);
vF2(19, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
} else {
vF2(6, 0);
vF2(12, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
} else {
biomeGear();
vF2(19, 1);
if (player.weaponIndex != player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0] || player.buildIndex > -1) {
selectWeapon(player.weapons[[10, 14].includes(player.weapons[1]) ? 1 : 0]);
}
}
return {
dir: near.aim2,
action: 0
};
}
return {
dir: undefined,
action: 0
};
}
} else {
this.ticking = false;
return {
dir: undefined,
action: 0
};
}
};
this.bowMovement = function () {
let v365 = this.gotoGoal(685, 3);
if (v365.action) {
if (player.reloads[53] == 0 && !this.isTrue) {
this.rangeType("ageInsta");
} else {
packet("f", v365.dir, 1);
}
} else {
packet("f", v365.dir, 1);
}
};
this.tickMovement = function () {
let v366 = this.gotoGoal([10, 14].includes(player.weapons[1]) && player.y2 > config.snowBiomeTop ? 240 : player.weapons[1] == 15 ? 250 : player.y2 <= config.snowBiomeTop ? [10, 14].includes(player.weapons[1]) ? 270 : 265 : 275, 3);
if (v366.action) {
if (![6, 22].includes(near.skinIndex) && player.reloads[53] == 0 && !this.isTrue) {
if ([10, 14].includes(player.weapons[1]) && player.y2 > config.snowBiomeTop || player.weapons[1] == 15) {
this.oneTickType();
} else {
this.threeOneTickType();
}
} else {
packet("f", v366.dir, 1);
}
} else {
packet("f", v366.dir, 1);
}
};
this.kmTickMovement = function () {
let v367 = this.gotoGoal(240, 3);
if (v367.action) {
if (near.skinIndex != 22 && player.reloads[53] == 0 && !this.isTrue && (game.tick - near.poisonTick) % config.serverUpdateRate == 8) {
this.kmTickType();
} else {
packet("f", v367.dir, 1);
}
} else {
packet("f", v367.dir, 1);
}
};
this.boostTickMovement = function () {
let v368 = player.weapons[1] == 9 ? 365 : player.weapons[1] == 12 ? 380 : player.weapons[1] == 13 ? 390 : player.weapons[1] == 15 ? 365 : 370;
let v369 = player.weapons[1] == 9 ? 2 : player.weapons[1] == 12 ? 1.5 : player.weapons[1] == 13 ? 1.5 : player.weapons[1] == 15 ? 2 : 3;
let v370 = this.gotoGoal(v368, v369);
if (v370.action) {
if (player.reloads[53] == 0 && !this.isTrue) {
this.boostTickType();
} else {
packet("f", v370.dir, 1);
}
} else {
packet("f", v370.dir, 1);
}
};
this.perfCheck = function (p559, p560) {
if (p560.weaponIndex == 11 && UTILS.getAngleDist(p560.aim2 + Math.PI, p560.d2) <= config.shieldAngle) {
return false;
}
if (![9, 12, 13, 15].includes(player.weapons[1])) {
return true;
}
let v371 = {
x: p560.x2 + Math.cos(p560.aim2 + Math.PI) * 70,
y: p560.y2 + Math.sin(p560.aim2 + Math.PI) * 70
};
if (UTILS.lineInRect(p559.x2 - p559.scale, p559.y2 - p559.scale, p559.x2 + p559.scale, p559.y2 + p559.scale, v371.x, v371.y, v371.x, v371.y)) {
return true;
}
let v372 = ais.filter(p561 => p561.visible).find(p562 => {
if (UTILS.lineInRect(p562.x2 - p562.scale, p562.y2 - p562.scale, p562.x2 + p562.scale, p562.y2 + p562.scale, v371.x, v371.y, v371.x, v371.y)) {
return true;
}
});
if (v372) {
return false;
}
v372 = gameObjects.filter(p563 => p563.active).find(p564 => {
let v373 = p564.getScale();
if (!p564.ignoreCollision && UTILS.lineInRect(p564.x - v373, p564.y - v373, p564.x + v373, p564.y + v373, v371.x, v371.y, v371.x, v371.y)) {
return true;
}
});
if (v372) {
return false;
}
return true;
};
}
}
;
class Autobuy {
constructor(p565, p566) {
this.hat = function () {
p565.forEach(p567 => {
let vFindID3 = findID(hats, p567);
if (vFindID3 && !player.skins[p567] && player.points >= vFindID3.price) {
packet("c", 1, p567, 0);
}
});
};
this.acc = function () {
p566.forEach(p568 => {
let vFindID4 = findID(accessories, p568);
if (vFindID4 && !player.tails[p568] && player.points >= vFindID4.price) {
packet("c", 1, p568, 1);
}
});
};
}
}
;
class Autoupgrade {
constructor() {
this.sb = function (p569) {
p569(3);
p569(17);
p569(31);
p569(23);
p569(9);
p569(38);
};
this.kh = function (p570) {
p570(3);
p570(17);
p570(31);
p570(23);
p570(10);
p570(38);
p570(4);
p570(25);
};
this.pb = function (p571) {
p571(5);
p571(17);
p571(32);
p571(23);
p571(9);
p571(38);
};
this.ph = function (p572) {
p572(5);
p572(17);
p572(32);
p572(23);
p572(10);
p572(38);
p572(28);
p572(25);
};
this.db = function (p573) {
p573(7);
p573(17);
p573(31);
p573(23);
p573(9);
p573(34);
};
this.km = function (p574) {
p574(7);
p574(17);
p574(31);
p574(23);
p574(10);
p574(38);
p574(4);
p574(15);
};
}
}
;
class Damages {
constructor(p575) {
this.calcDmg = function (p576, p577) {
return p576 * p577;
};
this.getAllDamage = function (p578) {
return [this.calcDmg(p578, 0.75), p578, this.calcDmg(p578, 1.125), this.calcDmg(p578, 1.5)];
};
this.weapons = [];
for (let v374 = 0; v374 < p575.weapons.length; v374++) {
let v375 = p575.weapons[v374];
let v376 = v375.name.split(" ").length <= 1 ? v375.name : v375.name.split(" ")[0] + "_" + v375.name.split(" ")[1];
this.weapons.push(this.getAllDamage(v374 > 8 ? v375.Pdmg : v375.dmg));
this[v376] = this.weapons[v374];
}
}
}
let tmpList = [];
let UTILS = new Utils();
let items = new Items();
let objectManager = new Objectmanager(GameObject, gameObjects, UTILS, config);
let store = new Store();
let hats = store.hats;
let accessories = store.accessories;
let projectileManager = new ProjectileManager(Projectile, projectiles, players, ais, objectManager, items, config, UTILS);
let aiManager = new AiManager(ais, AI, players, items, null, config, UTILS);
let textManager = new Textmanager();
let traps = new Traps(UTILS, items);
let instaC = new Instakill();
let sCombat = new Combat(UTILS, items);
let autoBuy = new Autobuy([40, 6, 7, 22, 53, 15, 31], [11, 19, 21, 13]);
let autoUpgrade = new Autoupgrade();
let lastDeath;
let minimapData;
let mapMarker = {};
let mapPings = [];
let tmpPing;
let breakTrackers = [];
let pathFindTest = 0;
let grid = [];
let pathFind = {
active: false,
grid: 40,
scale: 1440,
x: 14400,
y: 14400,
chaseNear: false,
array: [],
lastX: this.grid / 2,
lastY: this.grid / 2
};
function sendChat(p579) {
packet("6", p579.slice(0, 30));
}
let runAtNextTick = [];
function checkProjectileHolder(p580, p581, p582, p583, p584, p585, p586, p587) {
let v377 = p585 == 0 ? 9 : p585 == 2 ? 12 : p585 == 3 ? 13 : p585 == 5 && 15;
let v378 = config.playerScale * 2;
let v379 = {
x: p585 == 1 ? p580 : p580 - v378 * Math.cos(p582),
y: p585 == 1 ? p581 : p581 - v378 * Math.sin(p582)
};
let v380 = players.filter(p588 => p588.visible && UTILS.getDist(v379, p588, 0, 2) <= p588.scale).sort(function (p589, p590) {
return UTILS.getDist(v379, p589, 0, 2) - UTILS.getDist(v379, p590, 0, 2);
})[0];
if (v380) {
if (p585 == 1) {
v380.shooting[53] = 1;
} else {
v380.shootIndex = v377;
v380.shooting[1] = 1;
antiProj(v380, p582, p583, p584, p585, v377);
}
}
}
let projectileCount = 0;
function antiProj(p591, p592, p593, p594, p595, p596) {
if (!p591.isTeam(player)) {
tmpDir = UTILS.getDirect(player, p591, 2, 2);
if (UTILS.getAngleDist(tmpDir, p592) <= 0.2) {
p591.bowThreat[p596]++;
if (p595 == 5) {
projectileCount++;
}
setTimeout(() => {
p591.bowThreat[p596]--;
if (p595 == 5) {
projectileCount--;
}
}, p593 / p594);
if (p591.bowThreat[9] >= 1 && (p591.bowThreat[12] >= 1 || p591.bowThreat[15] >= 1)) {
place(1, p591.aim2);
my.anti0Tick = 4;
if (!my.antiSync) {
antiSyncHealing(4);
}
} else if (projectileCount >= 2) {
place(1, p591.aim2);
healer();
buyEquip(22, 0);
buyEquip(13, 1);
my.anti0Tick = 4;
if (!my.antiSync) {
autoQ = true;
antiSyncHealing(4);
}
} else if (projectileCount === 1) {
buyEquip(6, 0);
buyEquip(26, 0);
healer();
game.tickBase(() => {}, 2);
}
}
}
}
function showItemInfo(p597, p598, p599) {
if (player && p597) {
UTILS.removeAllChildren(itemInfoHolder);
itemInfoHolder.classList.add("visible");
UTILS.generateElement({
id: "itemInfoName",
text: UTILS.capitalizeFirst(p597.name),
parent: itemInfoHolder
});
UTILS.generateElement({
id: "itemInfoDesc",
text: p597.desc,
parent: itemInfoHolder
});
if (p599) {} else if (p598) {
UTILS.generateElement({
class: "itemInfoReq",
text: !p597.type ? "primary" : "secondary",
parent: itemInfoHolder
});
} else {
for (let v381 = 0; v381 < p597.req.length; v381 += 2) {
UTILS.generateElement({
class: "itemInfoReq",
html: p597.req[v381] + " x" + p597.req[v381 + 1] + "",
parent: itemInfoHolder
});
}
if (p597.group.limit) {
UTILS.generateElement({
class: "itemInfoLmt",
text: (player.itemCounts[p597.group.id] || 0) + "/" + (config.isSandbox ? 99 : p597.group.limit),
parent: itemInfoHolder
});
}
}
} else {
itemInfoHolder.classList.remove("visible");
}
}
window.addEventListener("resize", UTILS.checkTrusted(resize));
function resize() {
screenWidth = window.innerWidth;
screenHeight = window.innerHeight;
let v382 = Math.max(screenWidth / maxScreenWidth, screenHeight / maxScreenHeight) * pixelDensity;
gameCanvas.width = screenWidth * pixelDensity;
gameCanvas.height = screenHeight * pixelDensity;
gameCanvas.style.width = screenWidth + "px";
gameCanvas.style.height = screenHeight + "px";
mainContext.setTransform(v382, 0, 0, v382, (screenWidth * pixelDensity - maxScreenWidth * v382) / 2, (screenHeight * pixelDensity - maxScreenHeight * v382) / 2);
}
resize();
var usingTouch;
const mals = document.getElementById("touch-controls-fullscreen");
mals.style.display = "block";
mals.addEventListener("mousemove", gameInput, false);
function gameInput(p600) {
mouseX = p600.clientX;
mouseY = p600.clientY;
}
let clicks = {
left: false,
middle: false,
right: false
};
mals.addEventListener("mousedown", mouseDown, false);
function mouseDown(p601) {
if (attackState != 1) {
attackState = 1;
if (p601.button == 0) {
my.autoAim = true;
clicks.left = true;
} else if (p601.button == 1) {
clicks.middle = true;
} else if (p601.button == 2) {
clicks.right = true;
}
}
}
mals.addEventListener("mouseup", UTILS.checkTrusted(mouseUp));
function mouseUp(p602) {
if (attackState != 0) {
attackState = 0;
if (p602.button == 0) {
my.autoAim = false;
clicks.left = false;
} else if (p602.button == 1) {
clicks.middle = false;
} else if (p602.button == 2) {
clicks.right = false;
}
}
}
mals.addEventListener("wheel", wheel, false);
function wheel(p603) {
if (player.shameCount > 1 && !near) {
buyEquip(7, 0);
} else {
buyEquip(6, 0);
}
}
function getMoveDir() {
let v383 = 0;
let v384 = 0;
for (let v385 in moveKeys) {
let v386 = moveKeys[v385];
v383 += !!keys[v385] * v386[0];
v384 += !!keys[v385] * v386[1];
}
if (v383 == 0 && v384 == 0) {
return undefined;
} else {
return Math.atan2(v384, v383);
}
}
function getSafeDir() {
if (!player) {
return 0;
}
if (!player.lockDir) {
lastDir = Math.atan2(mouseY - screenHeight / 2, mouseX - screenWidth / 2);
}
return lastDir || 0;
}
function getAttackDir(p604) {
if (p604) {
if (!player) {
return "0";
}
if (my.autoAim || (clicks.left || useWasd && near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) && player.reloads[player.weapons[0]] == 0) {
lastDir = getEl("weaponGrind").checked ? "getSafeDir()" : enemy.length ? my.revAim ? "(near.aim2 + Math.PI)" : "near.aim2" : "getSafeDir()";
} else if (clicks.right && player.reloads[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = "getSafeDir()";
} else if (traps.inTrap && player.reloads[traps.notFast() ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = "traps.aim";
} else if (!player.lockDir) {
if (getEl("noDir").checked) {
return "undefined";
}
lastDir = "getSafeDir()";
}
return lastDir;
} else {
if (!player) {
return 0;
}
if (my.autoAim || (clicks.left || useWasd && near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) && player.reloads[player.weapons[0]] == 0) {
lastDir = getEl("weaponGrind").checked ? getSafeDir() : enemy.length ? my.revAim ? near.aim2 + Math.PI : near.aim2 : getSafeDir();
} else if (clicks.right && player.reloads[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = getSafeDir();
} else if (traps.inTrap && player.reloads[traps.notFast() ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = traps.aim;
} else if (!player.lockDir) {
if (getEl("noDir").checked) {
return undefined;
}
lastDir = getSafeDir();
}
return lastDir || 0;
}
}
function getVisualDir() {
if (!player) {
return 0;
}
if (my.autoAim || (clicks.left || useWasd && near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) && player.reloads[player.weapons[0]] == 0) {
lastDir = getEl("weaponGrind").checked ? getSafeDir() : enemy.length ? my.revAim ? near.aim2 + Math.PI : near.aim2 : getSafeDir();
} else if (clicks.right && player.reloads[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = getSafeDir();
} else if (traps.inTrap && player.reloads[traps.notFast() ? player.weapons[1] : player.weapons[0]] == 0) {
lastDir = traps.aim;
} else if (!player.lockDir) {
lastDir = getSafeDir();
}
return lastDir || 0;
}
function keysActive() {
return allianceMenu.style.display != "block" && chatHolder.style.display != "block" && !menuCBFocus;
}
function toggleMenuChat() {
if (menuChatDiv.style.display != "none") {
let vF3 = function (p605) {
return {
found: p605.startsWith("/") && commands[p605.slice(1).split(" ")[0]]
};
};
let vVF3 = vF3(menuChatBox.value);
if (vVF3.found) {
if (typeof vVF3.fv.action === "function") {
vVF3.fv.action(menuChatBox.value);
}
} else {
sendChat(menuChatBox.value);
}
menuChatBox.value = "";
menuChatBox.blur();
} else if (menuCBFocus) {
menuChatBox.blur();
} else {
menuChatBox.focus();
}
}
function keyDown(p606) {
let v387 = p606.which || p606.keyCode || 0;
if (player && player.alive && keysActive()) {
if (!keys[v387]) {
keys[v387] = 1;
macro[p606.key] = 1;
if (v387 == 27) {
openMenu = !openMenu;
$("#menuDiv").toggle();
$("#menuChatDiv").toggle();
} else if (v387 == 69) {
sendAutoGather();
} else if (v387 == 67) {
updateMapMarker();
} else if (player.weapons[v387 - 49] != undefined) {
player.weaponCode = player.weapons[v387 - 49];
} else if (moveKeys[v387]) {
sendMoveDir();
} else if (p606.key == "m") {
pads.placeSpawnPads = !pads.placeSpawnPads;
} else if (p606.key == "z") {
mills.place = !mills.place;
} else if (p606.key == "0") {
sendChat(".sync");
} else if (p606.key == "Z") {
if (typeof window.debug == "function") {
window.debug();
}
} else if (v387 == 32) {
packet("F", 1, getSafeDir(), 1);
packet("F", 0, getSafeDir(), 1);
} else if (p606.key == ",") {
io.send("6", "syncon");
project.send(JSON.stringify(["tezt", "ratio"]));
botSkts.push([botPlayer]);
for (let v388 = 0; v388 < botz.length; v388++) {
if (botz[v388][0]) {
botz[v388][0].zync(near);
console.log(botz[v388][0]);
}
project.send("tezt");
botSkts.forEach(p607 => {
p607.zync();
});
io.send("S", 1);
}
}
}
}
}
let intervalId;
document.addEventListener("keydown", function (p608) {
if (["allianceinput", "chatbox", "nameinput", "storeHolder"].includes(document.activeElement.id.toLowerCase())) {
return null;
}
if (p608.key === "p") {
songChat = !songChat;
if (songChat) {
playSongLyrics();
}
}
});
function oneTick() {
my.autoAim = true;
buyEquip(53, 0);
selectWeapon(player.weapons[0]);
game.tickBase(() => {
buyEquip(7, 0);
sendAutoGather();
game.tickBase(() => {
sendAutoGather();
my.autoAim = false;
}, 1);
}, 1);
}
let songChat = false;
const lyrics = [{
line: "I'm going back to 505",
delay: 0
}, {
line: "If it's a 7 hour flight",
delay: 3000
}, {
line: "Or a 45 minute drive",
delay: 2000
}, {
line: "In my imagination",
delay: 3000
}, {
line: "You're waiting lying",
delay: 2000
}, {
line: "on your side",
delay: 2000
}, {
line: "With your hands",
delay: 2000
}, {
line: "between your thighs",
delay: 1000
}, {
line: "Stop and wait a sec",
delay: 6000
}, {
line: "When you look at me",
delay: 2000
}, {
line: "like that",
delay: 2000
}, {
line: "My darling, what did",
delay: 1500
}, {
line: "you expect?",
delay: 2000
}, {
line: "I probably still adore you",
delay: 3000
}, {
line: "With your hands around",
delay: 2000
}, {
line: "my neck",
delay: 2000
}, {
line: "Or I did last time",
delay: 2500
}, {
line: "I checked",
delay: 2000
}, {
line: "Not shy of a spark",
delay: 7000
}, {
line: "The knife twists",
delay: 2500
}, {
line: "at the thought",
delay: 2000
}, {
line: "That I should fall short",
delay: 2500
}, {
line: "of the mark",
delay: 2000
}, {
line: "Frightened by the bite",
delay: 3000
}, {
line: "Though it's no harsher",
delay: 2500
}, {
line: "than the bark",
delay: 2000
}, {
line: "A middle of adventure",
delay: 4000
}, {
line: "Such a perfect place",
delay: 4000
}, {
line: "to start",
delay: 2000
}, {
line: "I'm going back to 505",
delay: 7000
}, {
line: "If it's a 7 hour flight",
delay: 3000
}, {
line: "Or a 45 minute drive",
delay: 2000
}, {
line: "In my imagination",
delay: 3000
}, {
line: "You're waiting lying",
delay: 2000
}, {
line: "on your side",
delay: 2000
}, {
line: "With your hands",
delay: 2000
}, {
line: "between your thighs",
delay: 1000
}, {
line: "But I crumble completely",
delay: 12000
}, {
line: "When you cry",
delay: 2500
}, {
line: "It seems like once again",
delay: 4000
}, {
line: "You've had to greet me",
delay: 2000
}, {
line: "with goodbye",
delay: 2000
}, {
line: "I'm always just about to",
delay: 3000
}, {
line: "Go and spoil a surprise",
delay: 2000
}, {
line: "Take my hands off",
delay: 3000
}, {
line: "of your eyes",
delay: 2000
}, {
line: "Too soon",
delay: 2000
}, {
line: "I'm going back to 505",
delay: 7000
}, {
line: "If it's a 7 hour flight",
delay: 3000
}, {
line: "Or a 45 minute drive",
delay: 2000
}, {
line: "In my imagination",
delay: 3000
}, {
line: "You're waiting lying",
delay: 2000
}, {
line: "on your side",
delay: 2000
}, {
line: "With your hands",
delay: 2000
}, {
line: "between your thighs",
delay: 1000
}];
function playSongLyrics() {
let v389 = 0;
for (let v390 = 0; v390 < lyrics.length; v390++) {
const {
line: _0x37349f,
delay: _0x28153a
} = lyrics[v390];
v389 += _0x28153a;
setTimeout(() => {
if (songChat) {
sendChat(_0x37349f);
}
}, v389);
}
}
addEventListener("keydown", UTILS.checkTrusted(keyDown));
function keyUp(p609) {
if (player && player.alive) {
let v391 = p609.which || p609.keyCode || 0;
if (v391 == 13) {
toggleMenuChat();
} else if (keysActive()) {
if (keys[v391]) {
keys[v391] = 0;
macro[p609.key] = 0;
if (moveKeys[v391]) {
sendMoveDir();
} else if (p609.key == ",") {
player.sync = false;
}
}
}
}
}
window.addEventListener("keyup", UTILS.checkTrusted(keyUp));
function sendMoveDir() {
if (found) {
packet("f", undefined, 1);
} else {
let vGetMoveDir = getMoveDir();
if (lastMoveDir == undefined || vGetMoveDir == undefined || Math.abs(vGetMoveDir - lastMoveDir) > 0.3) {
if (!my.autoPush && !found) {
packet("f", vGetMoveDir, 1);
}
lastMoveDir = vGetMoveDir;
}
}
}
function bindEvents() {}
bindEvents();
function chechPathColl(p610) {
return (player.scale + p610.getScale()) / (player.maxSpeed * items.weapons[player.weaponIndex].spdMult) + (p610.dmg && !p610.isTeamObject(player) ? 35 : 0);
if (p610.colDiv == 0.5) {
return p610.scale * p610.colDiv;
} else if (!p610.isTeamObject(player) && p610.dmg) {
return p610.scale + player.scale;
} else if (p610.isTeamObject(player) && p610.trap) {
return 0;
} else {
return p610.scale;
}
}
function checkObject() {
let v392 = gameObjects.filter(p611 => player.canSee(p611) && p611.active);
for (let v393 = 0; v393 < pathFind.grid; v393++) {
grid[v393] = [];
for (let v394 = 0; v394 < pathFind.grid; v394++) {
let v395 = {
x: player.x2 - pathFind.scale / 2 + pathFind.scale / pathFind.grid * v394,
y: player.y2 - pathFind.scale / 2 + pathFind.scale / pathFind.grid * v393
};
if (UTILS.getDist(pathFind.chaseNear ? near : pathFind, v395, pathFind.chaseNear ? 2 : 0, 0) <= (pathFind.chaseNear ? 35 : 60)) {
pathFind.lastX = v394;
pathFind.lastY = v393;
grid[v393][v394] = 0;
continue;
}
let v396 = v392.find(p612 => UTILS.getDist(p612, v395, 0, 0) <= chechPathColl(p612));
if (v396) {
if (v396.trap) {
grid[v393][v394] = 0;
continue;
}
grid[v393][v394] = 1;
} else {
grid[v393][v394] = 0;
}
}
}
}
function createPath() {
grid = [];
checkObject();
}
function Pathfinder() {
pathFind.scale = config.maxScreenWidth / 2 * 1.3;
if (!traps.inTrap && (pathFind.chaseNear ? enemy.length : true)) {
if (near.dist2 <= items.weapons[player.weapons[0]].range) {
packet("f", undefined, 1);
} else {
createPath();
easystar.setGrid(grid);
easystar.setAcceptableTiles([0]);
easystar.enableDiagonals();
easystar.findPath(grid[0].length / 2, grid.length / 2, pathFind.lastX, pathFind.lastY, function (p613) {
if (p613 === null) {
pathFind.array = [];
if (near.dist2 <= items.weapons[player.weapons[0]].range) {
packet("f", undefined, 1);
} else {
packet("f", near.aim2, 1);
}
} else {
pathFind.array = p613;
if (pathFind.array.length > 1) {
let v397 = {
x: player.x2 - pathFind.scale / 2 + pathFind.scale / pathFind.grid * p613[1].x,
y: player.y2 - pathFind.scale / 2 + pathFind.scale / pathFind.grid * p613[1].y
};
packet("f", UTILS.getDirect(v397, player, 0, 2), 1);
}
}
});
easystar.calculate();
}
}
}
let isItemSetted = [];
function updateItemCountDisplay(p614 = undefined) {
for (let v398 = 3; v398 < items.list.length; ++v398) {
let v399 = items.list[v398].group.id;
let v400 = items.weapons.length + v398;
if (!isItemSetted[v400]) {
isItemSetted[v400] = document.createElement("div");
isItemSetted[v400].id = "itemCount" + v400;
getEl("actionBarItem" + v400).appendChild(isItemSetted[v400]);
isItemSetted[v400].style = "\n display: block;\n position: absolute;\n padding-left: 5px;\n font-size: 20px;\n font-family: 'Hammersmith One', cursive;\n color: #fff;\n ";
isItemSetted[v400].innerHTML = player.itemCounts[v399] || 0;
} else if (p614 == v399) {
isItemSetted[v400].innerHTML = player.itemCounts[p614] || 0;
}
}
}
function fgdo(p615, p616) {
return Math.sqrt(Math.pow(p616.y - p615.y, 2) + Math.pow(p616.x - p615.x, 2));
}
function autoPush() {
let v401 = liztobj.filter(p617 => p617.trap && p617.active && p617.isTeamObject(player) && UTILS.getDist(p617, near, 0, 2) <= near.scale + p617.getScale() + 5).sort(function (p618, p619) {
return UTILS.getDist(p618, near, 0, 2) - UTILS.getDist(p619, near, 0, 2);
})[0];
if (v401) {
let v402 = liztobj.filter(p620 => p620.dmg && p620.active && p620.isTeamObject(player) && UTILS.getDist(p620, v401, 0, 0) <= near.scale + v401.scale + p620.scale).sort(function (p621, p622) {
return UTILS.getDist(p621, near, 0, 2) - UTILS.getDist(p622, near, 0, 2);
})[0];
if (v402) {
let v403 = Math.atan2(near.y2 - v402.y, near.x2 - v402.x);
let v404 = {
x: v402.x + Math.cos(UTILS.getDirect(near, v402, 2, 0)) * 250,
y: v402.y + Math.sin(UTILS.getDirect(near, v402, 2, 0)) * 250,
x2: v402.x + (UTILS.getDist(near, v402, 2, 0) + player.scale) * Math.cos(UTILS.getDirect(near, v402, 2, 0)) + Math.cos(25),
y2: v402.y + (UTILS.getDist(near, v402, 2, 0) + player.scale) * Math.sin(UTILS.getDirect(near, v402, 2, 0)) + Math.sin(25)
};
let v405 = liztobj.filter(p623 => p623.active).find(p624 => {
let v406 = p624.getScale();
if (!p624.ignoreCollision && UTILS.lineInRect(p624.x - v406, p624.y - v406, p624.x + v406, p624.y + v406, player.x2, player.y2, v404.x2, v404.y2)) {
return true;
}
});
if (v405) {
if (my.autoPush) {
my.autoPush = false;
packet("f", lastMoveDir || undefined, 1);
}
} else {
my.autoPush = true;
my.pushData = {
x: v402.x + Math.cos(v403),
y: v402.y + Math.sin(v403),
x2: player.x2 + 30,
y2: player.y2 + 30
};
let v407 = {
x: near.x2 + Math.cos(v403) * 30,
y: near.y2 + Math.sin(v403) * 60
};
let v408 = Math.atan2(v407.y - player.y2, v407.x - player.x2);
packet("f", v408, 1);
let v409 = player.scale / 10;
if (UTILS.lineInRect(player.x2 - v409, player.y2 - v409, player.x2 + v409, player.y2 + v409, near.x2, near.y2, v404.x, v404.y)) {
packet("f", near.aim2, 1);
} else {
packet("f", UTILS.getDirect(v404, player, 2, 2), 1);
}
}
} else if (my.autoPush) {
my.autoPush = false;
packet("f", lastMoveDir || undefined, 1);
}
} else if (my.autoPush) {
my.autoPush = false;
packet("f", lastMoveDir || undefined, 1);
}
}
function knockBackPredict() {
let v410 = {
x0: 0,
y0: 0,
x1: 0,
y1: 0,
instax: 0,
instay: 0,
turretx: 0,
turrety: 0
};
let v411 = Math.atan2(near.y2 - player.y2, near.x2 - player.x2);
let vInfinity = Infinity;
let v412 = gameObjects.filter(p625 => p625.name == "pit trap" && p625.active && p625.isTeamObject(player) && UTILS.getDist(p625, near, 0, 2) <= p625.getScale() + player.scale + 5).sort((p626, p627) => {
return UTILS.getDist(p626, near, 0, 2) - UTILS.UTILS.getDist(p627, near, 0, 2);
})[0];
if (near.dist2 - player.scale * 1.8 <= items.weapons[player.weapons[0]].range && !v412) {
for (let v413 of gameObjects) {
let vV410 = v410;
if (v413.dmg && v413.active && v413.isTeamObject(player)) {
let v414 = (items.weapons[player.weapons[0]].knock || 0) * items.weapons[player.weapons[0]].range + player.scale * 2;
let v415 = ![undefined, 9, 12, 13, 15].includes(player.weapons[1]) ? (items.weapons[player.weapons[1]].knock || 0) * items.weapons[player.weapons[1]].range + player.scale * 2 - 10 : player.weapons[1] != undefined ? 60 : 0;
let v416 = v414 + v415;
let v417 = player.reloads[53] == 0 ? v414 + v415 + 75 : v416;
let v418 = near.x2 + v414 * Math.cos(v411);
let v419 = near.y2 + v414 * Math.sin(v411);
let v420 = near.x2 + v415 * Math.cos(v411);
let v421 = near.y2 + v415 * Math.sin(v411);
let v422 = near.x2 + v416 * Math.cos(v411);
let v423 = near.y2 + v416 * Math.sin(v411);
let v424 = near.x2 + v417 * Math.cos(v411);
let v425 = near.y2 + v417 * Math.sin(v411);
vV410.x0 = v418;
vV410.y0 = v419;
vV410.x1 = v420;
vV410.y1 = v421;
vV410.instax = v422;
vV410.instay = v423;
vV410.turretx = v424;
vV410.turrety = v425;
if (UTILS.getDist({
x: v418,
y: v419
}, v413, 0, 0) <= v413.scale + player.scale && player.reloads[player.weapons[0]] == 0) {
return "insta them";
}
if (UTILS.getDist({
x: v422,
y: v423
}, v413, 0, 0) <= v413.scale + player.scale && player.reloads[player.weapons[0]] == 0 && player.reloads[player.weapons[1]] == 0) {
return "insta them";
}
}
}
} else {
v410 = {
x0: 0,
y0: 0,
x1: 0,
y1: 0,
instax: 0,
instay: 0,
turretx: 0,
turrety: 0
};
}
return false;
}
function addDeadPlayer(p628) {
deadPlayers.push(new DeadPlayer(p628.x, p628.y, p628.dir, p628.buildIndex, p628.weaponIndex, p628.weaponVariant, p628.skinColor, p628.scale, p628.name));
}
function setInitData(p629) {
alliances = p629.teams;
}
function setupGame(p630) {
keys = {};
macro = {};
playerSID = p630;
attackState = 0;
inGame = true;
packet("F", 0, getAttackDir(), 1);
my.ageInsta = true;
if (firstSetup) {
firstSetup = false;
gameObjects.length = 0;
liztobj.length = 0;
}
}
function addPlayer(p631, p632) {
let vFindPlayerByID = findPlayerByID(p631[0]);
if (!vFindPlayerByID) {
vFindPlayerByID = new Player(p631[0], p631[1], config, UTILS, projectileManager, objectManager, players, ais, items, hats, accessories);
players.push(vFindPlayerByID);
if (p631[1] != playerSID) {
notif2("Encountered", p631[2]);
}
} else if (p631[1] != playerSID) {
notif2("Encountered", p631[2]);
}
vFindPlayerByID.spawn(p632 ? true : null);
vFindPlayerByID.visible = false;
vFindPlayerByID.oldPos = {
x2: undefined,
y2: undefined
};
vFindPlayerByID.x2 = undefined;
vFindPlayerByID.y2 = undefined;
vFindPlayerByID.x3 = undefined;
vFindPlayerByID.y3 = undefined;
vFindPlayerByID.setData(p631);
if (p632) {
if (!player) {
window.prepareUI(vFindPlayerByID);
}
player = vFindPlayerByID;
camX = player.x;
camY = player.y;
my.lastDir = 0;
updateItems();
updateAge();
updateItemCountDisplay();
if (player.skins[7]) {
my.reSync = true;
}
}
}
function removePlayer(p633) {
for (let v426 = 0; v426 < players.length; v426++) {
if (players[v426].id == p633) {
players.splice(v426, 1);
break;
}
}
}
Math.getDist = function (p634, p635) {
try {
let v427 = p635.x2 || p635.x;
let v428 = p635.y2 || p635.y;
let v429 = p634.x2 || p634.x;
let v430 = p634.y2 || p634.y;
return Math.sqrt((v429 -= v427) * v429 + (v430 -= v428) * v430);
} catch (_0x3459c0) {
return Infinity;
}
};
Math.getDir = function (p636, p637) {
try {
return Math.atan2((p637.y2 || p637.y) - (p636.y2 || p636.y), (p637.x2 || p637.x) - (p636.x2 || p636.x));
} catch (_0x182e83) {
return 0;
}
};
let potSpikeReplace = 0;
function dmgPot() {
let v431 = 0;
if (nears.length && player) {
nears.forEach(p638 => {
if (Math.getDist(player, p638) <= 300) {
if (p638.primaryIndex && Math.getDist(player, p638) <= items.weapons[p638.primaryIndex].range + player.scale * 2) {
if (p638.reloads[p638.primaryIndex] <= 0.2) {
v431 += items.weapons[p638.primaryIndex].dmg * config.weaponVariants[p638.primaryVariant].val * 1.5;
if (config.weaponVariants[p638.primaryVariant].src === "_r") {
v431 += 5;
}
} else if (!p638.primaryIndex) {
v431 += 60;
}
}
if (p638.secondaryIndex && p638.reloads[p638.secondaryIndex] <= 0.2) {
const v432 = p638.secondaryIndex === 10 ? items.weapons[p638.secondaryIndex].dmg : items.weapons[p638.secondaryIndex].Pdmg;
v431 += v432;
} else if (!p638.secondaryIndex) {
v431 += 50;
}
if (p638.reloads[53] <= 0.2 || p638.reloads[53] >= 0.8 && Math.getDist(player, p638) >= 160) {
v431 += 25;
} else if (!p638.reloads[53]) {
v431 += 25;
}
}
});
liztobj.forEach(p639 => {
if (p639.dmg && p639.active && p639.ownerSID != player.sid && !p639.isTeamObject(player)) {
if (Math.getDist(p639, player) <= p639.scale + player.scale + 20) {
v431 += p639.dmg;
}
}
});
if (player.skinIndex === 7) {
v431 += 5;
} else if (player.skinIndex === 6) {
v431 = v431 * 0.75;
} else if (player.skinIndex === 13) {
v431 = v431 - 3;
} else if (player.skinIndex === 55) {
if (player.currentReloads.primary === 1) {
v431 = v431 - items.weapons[player.weapons[0]].dmg * 0.25;
}
} else if (player.skinIndex === 58) {
if (player.currentReloads.primary === 1) {
v431 = v431 - items.weapons[player.weapons[0]].dmg * 0.4;
}
}
if (player.tailIndex === 13) {
v431 = v431 - 3;
} else if (player.tailIndex === 18) {
if (player.currentReloads.primary === 1) {
v431 = v431 - items.weapons[player.weapons[0]].dmg * 0.2;
}
}
}
return v431;
}
let prevTrap = false;
let prevEnemyBullTick = 0;
let enemyBullTick = 0;
let lastTickDamage = 0;
let skippedTicks = 0;
let countBTicks = 0;
let prevBullTick = 0;
let lastBullTick = 0;
function updateHealth(p640, p641) {
let vFindPlayerBySID = findPlayerBySID(p640);
let v433 = {
weapon: this.secondaryIndex,
variant: this.secondaryVariant
};
if (!vFindPlayerBySID) {
return;
}
if (vFindPlayerBySID) {
vFindPlayerBySID.oldHealth = vFindPlayerBySID.health;
vFindPlayerBySID.health = p641;
vFindPlayerBySID.judgeShame();
if (vFindPlayerBySID.oldHealth > vFindPlayerBySID.health) {
vFindPlayerBySID.timeDamaged = Date.now();
vFindPlayerBySID.damaged = vFindPlayerBySID.oldHealth - vFindPlayerBySID.health;
let v434 = vFindPlayerBySID.damaged;
vFindPlayerBySID = findPlayerBySID(p640);
let v435 = false;
if (vFindPlayerBySID.health <= 0) {
if (!vFindPlayerBySID.death) {
vFindPlayerBySID.death = true;
addDeadPlayer(vFindPlayerBySID);
}
}
if (vFindPlayerBySID == player) {
if (vFindPlayerBySID.skinIndex == 7 && (v434 == 5 || vFindPlayerBySID.latestTail == 13 && v434 == 2)) {
if (my.reSync) {
my.reSync = false;
vFindPlayerBySID.setBullTick = true;
}
v435 = true;
}
let v436 = true;
let v437 = false;
let v438 = player.empAnti;
let v439 = true;
let v440 = false;
let v441 = true;
let v442 = 85;
let vGetAttacker = getAttacker(v434);
let v443 = [0.25, 0.45].map(p642 => p642 * items.weapons[player.weapons[0]].dmg);
let v444 = near.length ? !v435 && v443.includes(v434) && near[0].skinIndex == 11 && near[0].tailIndex == 21 : false;
function f31(p643) {
if (v438) {
setTimeout(() => {
healer();
}, p643);
}
;
}
;
if (vGetAttacker.length) {
let v445 = vGetAttacker.filter(p644 => {
if (p644.dist2 <= (p644.weaponIndex < 9 ? 300 : 700)) {
tmpDir = UTILS.getDirect(player, p644, 2, 2);
if (UTILS.getAngleDist(tmpDir, p644.d2) <= Math.PI) {
return p644;
}
}
});
if (v442 && player.dmg) {
if (v442) {
v442 = 65 || 80;
if (v445.length) {
let v446 = v444 ? 10 : 10;
if (v434 > v446 && game.tick - vFindPlayerBySID.antiTimer > 1) {
vFindPlayerBySID.canEmpAnti = true;
vFindPlayerBySID.antiTimer = game.tick;
let v447 = 4;
if (vFindPlayerBySID.shameCount < v447) {
healer();
} else {
f31(v442);
}
} else {
f31(v442);
}
} else {
f31(v442);
}
}
;
}
;
}
;
if (inGame) {
let v448 = vFindPlayerBySID.weapons[0] == 4 ? 2 : 5;
let v449 = v434 >= (v444 ? 8 : 20) && vFindPlayerBySID.damageThreat >= 20;
if (v449 && v441 && game.tick - vFindPlayerBySID.antiTimer > 1) {}
if (v449 && v440) {
setTimeout(() => {
healer();
}, 120);
}
if (v449 && v436 && vFindPlayerBySID.primaryIndex !== "4" && game.tick - vFindPlayerBySID.antiTimer > 1) ;
if (v434 >= 20 && player.skinIndex == 11 && player.shameCount <= 3) {
instaC.canCounter = true;
}
if (v434 >= 0 && v434 <= 66 && player.shameCount === 4 && vFindPlayerBySID.primaryIndex !== "4") {
v440 = true;
v436 = false;
v437 = false;
v441 = false;
} else if (player.shameCount !== 4) {
v440 = false;
v436 = true;
v441 = true;
}
if (v434 <= 66 && player.shameCount === 3 && vFindPlayerBySID.primaryIndex !== "4") {
v436 = false;
} else if (player.shameCount !== 3) {
v436 = true;
}
if (v434 <= 66 && player.shameCount === 4 && vFindPlayerBySID.primaryIndex !== "4") {
v437 = true;
} else if (player.shameCount !== 4) {
v437 = false;
}
if (v434 <= 66 && player.skinIndex != 6 && enemy.weaponIndex === 4) {
game.tickBase(() => {
healer1();
}, 2);
}
}
;
let v450 = 100 - player.health;
if (v434 >= (v444 ? 8 : 20) && vFindPlayerBySID.damageThreat >= 20 && v441 && game.tick - vFindPlayerBySID.antiTimer > 1) {
if (vFindPlayerBySID.reloads[53] == 0 && vFindPlayerBySID.reloads[vFindPlayerBySID.weapons[1]] == 0) {
vFindPlayerBySID.canEmpAnti = true;
} else {
player.soldierAnti = true;
}
vFindPlayerBySID.antiTimer = game.tick;
let v451 = vFindPlayerBySID.weapons[0] == 4 ? 2 : 5;
if (vFindPlayerBySID.shameCount < v451) {
healer();
} else {
game.tickBase(() => {
healer();
}, 2);
}
if (v434 >= (v444 ? 8 : 20) && vFindPlayerBySID.damageThreat >= 20 && v440) {
setTimeout(() => {
healer();
}, 120);
}
let v452 = 100 - player.health;
if (v434 >= (v444 ? 8 : 20) && vFindPlayerBySID.damageThreat >= 20 && v436 && vFindPlayerBySID.primaryIndex !== "4" && game.tick - vFindPlayerBySID.antiTimer > 1) {
if (vFindPlayerBySID.reloads[53] == 0 && vFindPlayerBySID.reloads[vFindPlayerBySID.weapons[1]] == 0) {
vFindPlayerBySID.canEmpAnti = true;
} else {
player.soldierAnti = true;
}
vFindPlayerBySID.antiTimer = game.tick;
let v453 = vFindPlayerBySID.weapons[0] == 4 ? 2 : 5;
if (vFindPlayerBySID.shameCount < v453) {
healer();
} else {
game.tickBase(() => {
healer();
}, 2);
}
}
if (v434 >= 20 && player.skinIndex == 11 && player.shameCount <= 3) {
instaC.canCounter = true;
}
} else {
game.tickBase(() => {
healer();
}, 2);
}
} else {
vFindPlayerBySID.maxShameCount = Math.max(vFindPlayerBySID.maxShameCount, vFindPlayerBySID.shameCount);
}
} else if (!vFindPlayerBySID.setPoisonTick && (vFindPlayerBySID.damaged == 5 || vFindPlayerBySID.latestTail == 13 && vFindPlayerBySID.damaged == 2)) {
vFindPlayerBySID.setPoisonTick = true;
}
}
if (nears.length && vFindPlayerBySID.shameCount <= 5 && nears.some(p645 => [9, 12, 17, 15].includes(v433.weapon))) {
if (near.reloads[near.secondaryIndex] == 0) {
my.empAnti = true;
my.soldierAnti = false;
} else {
my.soldierAnti = true;
my.empAnti = false;
}
}
}
function killPlayer() {
inGame = false;
lastDeath = {
x: player.x,
y: player.y
};
}
function updateItemCounts(p646, p647) {
if (player) {
player.itemCounts[p646] = p647;
updateItemCountDisplay(p646);
}
}
function updateAge(p648, p649, p650) {
var v454 = document.getElementById("ageText");
var v455 = document.getElementById("ageBarBody");
var v456 = document.getElementById("ageBarContainer");
document.getElementById("woodDisplay").style.display = "none";
document.getElementById("stoneDisplay").style.display = "none";
document.getElementById("foodDisplay").style.display = "none";
if (p648 !== undefined) {
player.XP = p648;
}
if (p649 !== undefined) {
player.maxXP = p649;
}
if (p650 !== undefined) {
player.age = p650;
}
if (player.age >= 9) {
v454.style.display = "none";
v455.style.display = "block";
v456.style.display = "block";
} else {
v454.style.display = "none";
v455.style.display = "block";
v456.style.display = "block";
v454.innerHTML = "AGE " + player.age;
v455.style.width = player.XP / player.maxXP * 100 + "%";
}
}
function updateUpgrades(p651, p652) {
player.upgradePoints = p651;
player.upgrAge = p652;
if (p651 > 0) {
tmpList.length = 0;
UTILS.removeAllChildren(upgradeHolder);
for (let v458 = 0; v458 < items.weapons.length; ++v458) {
if (items.weapons[v458].age == p652 && (items.weapons[v458].pre == undefined || player.weapons.indexOf(items.weapons[v458].pre) >= 0)) {
let v459 = UTILS.generateElement({
id: "upgradeItem" + v458,
class: "actionBarItem",
onmouseout: function () {
showItemInfo();
},
parent: upgradeHolder
});
v459.style.backgroundImage = getEl("actionBarItem" + v458).style.backgroundImage;
tmpList.push(v458);
}
}
for (let v460 = 0; v460 < items.list.length; ++v460) {
if (items.list[v460].age == p652 && (items.list[v460].pre == undefined || player.items.indexOf(items.list[v460].pre) >= 0)) {
let v461 = items.weapons.length + v460;
let v462 = UTILS.generateElement({
id: "upgradeItem" + v461,
class: "actionBarItem",
onmouseout: function () {
showItemInfo();
},
parent: upgradeHolder
});
v462.style.backgroundImage = getEl("actionBarItem" + v461).style.backgroundImage;
tmpList.push(v461);
}
}
for (let v463 = 0; v463 < tmpList.length; v463++) {
(function (p653) {
let vGetEl = getEl("upgradeItem" + p653);
vGetEl.onclick = UTILS.checkTrusted(function () {
packet("H", p653);
});
UTILS.hookTouchEvents(vGetEl);
if (getEl("autoUpgrade").checked) {
let vParseInt = parseInt(getEl("autoUpgrade").checked);
if (tmpList.length == 1) {
packet("H", p653);
} else if (["17", "31", "23", vParseInt].find(p654 => vGetEl.id.includes(p654))) {
packet("H", p653);
}
}
})(tmpList[v463]);
}
if (tmpList.length) {
upgradeHolder.style.display = "block";
upgradeCounter.style.display = "block";
upgradeCounter.innerHTML = "SELECT ITEMS (" + p651 + ")";
} else {
upgradeHolder.style.display = "none";
upgradeCounter.style.display = "none";
showItemInfo();
}
} else {
upgradeHolder.style.display = "none";
upgradeCounter.style.display = "none";
showItemInfo();
}
}
function killObject(p655) {
let vFindObjectBySid2 = findObjectBySid(p655);
objectManager.disableBySid(p655);
if (player) {
for (let v464 = 0; v464 < breakObjects.length; v464++) {
if (breakObjects[v464].sid == p655) {
breakObjects.splice(v464, 1);
break;
}
}
if (!player.canSee(vFindObjectBySid2)) {
breakTrackers.push({
x: vFindObjectBySid2.x,
y: vFindObjectBySid2.y
});
}
if (breakTrackers.length > 8) {
breakTrackers.shift();
}
traps.replacer(vFindObjectBySid2);
}
}
function dotProduct(p656, p657) {
return p656.x * p657.x + p656.y * p657.y;
}
function magnitude(p658) {
return Math.sqrt(p658.x * p658.x + p658.y * p658.y);
}
function vectorDifference(p659, p660) {
return {
x: p660.x - p659.x,
y: p660.y - p659.y
};
}
function calculateAngleUsingDotProduct(p661, p662) {
let vVectorDifference = vectorDifference(p661, p662);
let v465 = {
x: Math.cos(player.dir),
y: Math.sin(player.dir)
};
let vDotProduct = dotProduct(v465, vVectorDifference);
let v466 = magnitude(v465) * magnitude(vVectorDifference);
let v467 = vDotProduct / v466;
let v468 = Math.acos(v467);
v468 *= 180 / Math.PI;
if (v468 < 0) {
v468 += 360;
}
return v468;
}
function calculatePerfectAngle(p663, p664, p665, p666) {
return Math.atan2(p666 - p664, p665 - p663);
}
function killObjects(p667) {
if (player) {
objectManager.removeAllItems(p667);
}
}
function setTickout(p668, p669) {
if (!ticks.manage[ticks.tick + p669]) {
ticks.manage[ticks.tick + p669] = [p668];
} else {
ticks.manage[ticks.tick + p669].push(p668);
}
}
function isAlly(p670, p671) {
tmpObj = findPlayerBySID(p670);
if (!tmpObj) {
return;
}
if (p671) {
let vFindPlayerBySID2 = findPlayerBySID(p671);
if (!vFindPlayerBySID2) {
return;
}
if (vFindPlayerBySID2.sid == p670) {
return true;
} else if (tmpObj.team) {
if (tmpObj.team === vFindPlayerBySID2.team) {
return true;
} else {
return false;
}
} else {
return false;
}
}
if (!tmpObj) {
return;
}
if (player.sid == p670) {
return true;
} else if (tmpObj.team) {
if (tmpObj.team === player.team) {
return true;
} else {
return false;
}
} else {
return false;
}
}
function caf(p672, p673) {
try {
return Math.atan2((p673.y2 || p673.y) - (p672.y2 || p672.y), (p673.x2 || p673.x) - (p672.x2 || p672.x));
} catch (_0x5de0cb) {
return 0;
}
}
let found = false;
let autoQ = false;
let autos = {
insta: {
todo: false,
wait: false,
count: 4,
shame: 5
},
bull: false,
antibull: 0,
reloaded: false,
stopspin: true
};
let placeableSpikes = [];
let placeableTraps = [];
let placeableSpikesPREDICTS = [];
function getDir(p674, p675) {
try {
return Math.atan2((p675.y2 || p675.y) - (p674.y2 || p674.y), (p675.x2 || p675.x) - (p674.x2 || p674.x));
} catch (_0x137f8a) {
return 0;
}
}
const getDistance = (p676, p677, p678, p679) => {
let v469 = p678 - p676;
let v470 = p679 - p677;
return Math.sqrt(v469 * v469 + v470 * v470);
};
const getPotentialDamage = (p680, p681) => {
const v471 = p681.weapons[1] === 10 && !player.reloads[p681.weapons[1]] ? 1 : 0;
const v472 = p681.weapons[v471];
if (player.reloads[v472]) {
return 0;
}
const v473 = items.weapons[v472];
const v474 = getDistance(p680.x, p680.y, p681.x2, p681.y2) <= p680.getScale() + v473.range;
if (p681.visible && v474) {
return v473.dmg * (v473.sDmg || 1) * 3.3;
} else {
return 0;
}
};
const findPlacementAngle = (p682, p683, p684) => {
if (!p684) {
return null;
}
const v475 = Math.PI * 2;
const v476 = Math.PI / 360;
const v477 = items.list[p682.items[p683]];
let v478 = Math.atan2(p684.y - p682.y, p684.x - p682.x);
let v479 = p682.scale + (v477.scale || 1) + (v477.placeOffset || 0);
for (let v480 = 0; v480 < v475; v480 += v476) {
let v481 = [(v478 + v480) % v475, (v478 - v480 + v475) % v475];
for (let v482 of v481) {
let v483 = p682.x + v479 * Math.cos(v482);
let v484 = p682.y + v479 * Math.sin(v482);
if (objectManager.customCheckItemLocation(v483, v484, v477.scale, 0.6, v477.id, false, p682, p684, gameObjects, UTILS, config)) {
return v482;
}
}
}
return null;
};
const AutoReplace = () => {
const v485 = [];
const v486 = player.x;
const v487 = player.y;
const v488 = gameObjects.length;
for (let v489 = 0; v489 < v488; v489++) {
const v490 = gameObjects[v489];
if (v490.isItem && v490.active && v490.health > 0) {
let v491 = players.reduce((p685, p686) => p685 + getPotentialDamage(v490, p686), 0);
if (v490.health <= v491) {
v485.push(v490);
}
}
}
const vF5 = () => {
let v492 = gameObjects.filter(p687 => p687.trap && p687.active && p687.isTeamObject(player) && getDistance(p687.x, p687.y, v486, v487) <= p687.getScale() + 5);
let v493 = gameObjects.find(p688 => p688.dmg && p688.active && p688.isTeamObject(player) && getDistance(p688.x, p688.y, v486, v487) < 87 && !v492.length);
const v494 = v493 ? 4 : 2;
v485.forEach(p689 => {
let vFindPlacementAngle = findPlacementAngle(player, v494, p689);
if (vFindPlacementAngle !== null) {
place(v494, vFindPlacementAngle);
if (getEl("placeVis").checked) {
tracker.draw2.active = true;
tracker.draw2.x = p689.x;
tracker.draw2.y = p689.y;
tracker.draw2.scale = p689.scale;
}
}
});
};
const v495 = game.tickSpeed - (window.pingTime || 0) + (game.tickSpeed < 110 ? 15 : 15);
if (near && near.dist2 <= 280) {
let v496 = window.pingTime;
if (v496 + 40 < window.pingTime) {
v496 += 40;
} else if (v496 + 25 < window.pingTime) {
v495 += 25;
}
setTimeout(vF5, v495);
tracker.draw2.active = false;
}
};
let lastPos = {
x: 0,
y: 0
};
let mills = {
x: undefined,
y: undefined,
size: function (p690) {
return p690 * 1.45;
},
dist: function (p691) {
return p691 * 1.8;
},
active: config.isSandbox ? false : false,
count: 0
};
let laztPoz = {};
let oldXY = {
x: undefined,
y: undefined
};
function notif2(p692, p693) {
let v497 = document.getElementById("notification-container");
if (!v497) {
v497 = document.createElement("div");
v497.id = "notification-container";
v497.style.position = "fixed";
v497.style.top = "10%";
v497.style.left = "50%";
v497.style.transform = "translateX(-50%)";
v497.style.zIndex = "9999";
document.body.appendChild(v497);
}
const v498 = document.createElement("div");
v498.innerHTML = p692 + ": " + p693;
v498.style.fontSize = "1.5rem";
v498.style.color = "white";
v498.style.opacity = "0";
v498.style.transition = "opacity 0.5s ease-in-out";
v498.style.padding = "10px";
v498.style.backgroundColor = "rgba(0, 0, 0, 0.2)";
v498.style.borderRadius = "5px";
v498.style.boxShadow = "0 4px 6px rgba(0, 0, 0, 0.1)";
v498.style.marginBottom = "10px";
v497.appendChild(v498);
const v499 = new Audio("https://cdn.glitch.global/4c998580-5aaf-4a1a-8da3-e0c6b9f241a7/Audio_-_notification3_-_Creator_Store%20(1).mp3?v=1709582087126");
v499.volume = 0.4;
v499.play();
setTimeout(function () {
v498.style.opacity = "1";
}, 100);
setTimeout(function () {
v498.style.opacity = "0";
setTimeout(function () {
v498.remove();
}, 500);
}, 3000);
}
function notif(p694, p695) {
let vPlayer = player;
let vTextManager = textManager;
if (typeof p694 !== "undefined") {
vTextManager.showText(vPlayer.x, vPlayer.y, 40, 0.18, 1000, p694, "white");
}
if (typeof p695 !== "undefined") {
vTextManager.showText(vPlayer.x, vPlayer.y + 40, 30, 0.18, 1000, p695, "white");
}
}
const safeWalk = () => {
let v500 = false;
let v501 = null;
let v502 = false;
my.autoPush = false;
pathFind.active = false;
pathFind.chaseNear = false;
const v503 = liztobj.sort((p696, p697) => Math.hypot(player.y2 - p696.y, player.x2 - p696.x) - Math.hypot(player.y2 - p697.y, player.x2 - p697.x));
const v504 = v503.filter(p698 => {
return (p698.name === "spikes" || p698.name === "greater spikes" || p698.name === "spinning spikes" || p698.name === "poison spikes") && !isAlly(p698.owner.sid) && p698.owner.sid !== player.sid && fgdo(player, p698) < 250 && p698.active;
});
const v505 = {
x: player.x2 + (player.x2 - lastPos.x) * 1.2 + Math.cos(player.moveDir) * 50,
y: player.y2 + (player.y2 - lastPos.y) * 1.2 + Math.sin(player.moveDir) * 50
};
for (let v506 = 0; v506 < v504.length; v506++) {
if (fgdo(v504[v506], v505) < v504[v506].scale + player.scale + 3) {
v500 = true;
v501 = v504[v506];
break;
}
}
const vF6 = () => {
packet("D", Math.atan2(v501.y - player.y2, v501.x - player.x2));
};
const vF7 = () => {
my.autoPush = false;
pathFind.active = false;
pathFind.chaseNear = false;
selectWeapon(player.weapons[player.weapons[1] === 10 ? 1 : 0]);
sendAutoGather();
buyEquip(40, 0);
vF6();
my.waitHit = 1;
game.tickBase(() => {
sendAutoGather();
my.waitHit = 0;
}, 1);
};
if (v500 && !traps.inTrap && !phantom.find(p699 => p699.sid === v501.sid)) {
if (player.reloads[player.weapons[0]] === 0 && !instaC.isTrue && !clicks.left && !clicks.right && player.reloads[player.weapons[1]] === 0) {
vF7();
}
;
packet("e");
my.autoPush = false;
pathFind.active = false;
pathFind.chaseNear = false;
v502 = true;
tracker.draw3.active = true;
tracker.draw3.x = v501.x;
tracker.draw3.y = v501.y;
tracker.draw3.scale = v501.scale;
if (getEl("notifs").checked) {
notif("Stop!");
}
} else {
v502 = false;
tracker.draw3.active = false;
packet("f", lastMoveDir, 1);
}
lastPos.x = player.x2;
lastPos.y = player.y2;
};
function updatePlayers(p700) {
safeWalk();
if (player.shameCount > 0) {
my.reSync = true;
} else {
my.reSync = false;
}
if (player.shameCount > 4) {
player.chat.message = "danger";
player.chat.count = 1000;
}
if (near.shameCount > 4) {
near.chat.message = "killable";
near.chat.count = 1000;
}
if (tmpObj == player) {
if (!mills.x || !oldXY.x) {
mills.x = oldXY.x = tmpObj.x2;
}
if (!mills.y || !oldXY.y) {
mills.y = oldXY.y = tmpObj.y2;
}
}
if (textManager.stack.length) {
let v507 = [];
let v508 = [];
let v509 = 0;
let v510 = 0;
let v511 = {
x: null,
y: null
};
let v512 = {
x: null,
y: null
};
textManager.stack.forEach(p701 => {
if (p701.value >= 0) {
if (v509 == 0) {
v511 = {
x: p701.x,
y: p701.y
};
}
v509 += Math.abs(p701.value);
} else {
if (v510 == 0) {
v512 = {
x: p701.x,
y: p701.y
};
}
v510 += Math.abs(p701.value);
}
});
if (v510 > 0) {
textManager.showText(v512.x, v512.y, Math.max(45, Math.min(50, v510)), 0.18, 500, v510, "#8ecc51");
}
if (v509 > 0) {
textManager.showText(v511.x, v511.y, Math.max(45, Math.min(50, v509)), 0.18, 500, v509, "#fff");
}
textManager.stack = [];
}
if (runAtNextTick.length) {
runAtNextTick.forEach(p702 => {
checkProjectileHolder(...p702);
});
runAtNextTick = [];
}
function f32(p703) {
let v513 = liztobj.sort((p704, p705) => Math.hypot(p703.y - p704.y, p703.x - p704.x) - Math.hypot(p703.y - p705.y, p703.x - p705.x));
let v514 = v513.filter(p706 => p706.dmg && cdf(player, p706) < 200 && !p706.isTeamObject(player) && p706.active);
let v515 = {
x: p703.x + (player.oldPos.x2 - p703.x) * -2,
y: p703.y + (player.oldPos.y2 - p703.y) * -2,
x: player.x2 + (player.oldPos.x2 - player.x2) * -1,
y: player.y2 + (player.oldPos.y2 - player.y2) * -1
};
let v516 = false;
for (let v517 = 0; v517 < v514.length; v517++) {
if (cdf(v515, v514[v517]) < player.scale + v514[v517].scale) {
v516 = true;
}
}
player.oldPos.x2 = p703.x2;
player.oldPos.y2 = p703.y2;
}
game.tick++;
enemy = [];
nears = [];
near = [];
game.tickSpeed = performance.now() - game.lastTick;
game.lastTick = performance.now();
players.forEach(p707 => {
p707.forcePos = !p707.visible;
p707.visible = false;
if (p707.timeHealed - p707.timeDamaged > 0 && p707.lastshamecount < p707.shameCount) {
p707.pinge = p707.timeHealed - p707.timeDamaged;
}
});
for (let v518 = 0; v518 < p700.length;) {
tmpObj = findPlayerBySID(p700[v518]);
if (tmpObj) {
tmpObj.t1 = tmpObj.t2 === undefined ? game.lastTick : tmpObj.t2;
tmpObj.t2 = game.lastTick;
tmpObj.oldPos.x2 = tmpObj.x2;
tmpObj.oldPos.y2 = tmpObj.y2;
tmpObj.x1 = tmpObj.x;
tmpObj.y1 = tmpObj.y;
tmpObj.x2 = p700[v518 + 1];
tmpObj.y2 = p700[v518 + 2];
tmpObj.x3 = tmpObj.x2 + (tmpObj.x2 - tmpObj.oldPos.x2);
tmpObj.y3 = tmpObj.y2 + (tmpObj.y2 - tmpObj.oldPos.y2);
tmpObj.d1 = tmpObj.d2 === undefined ? p700[v518 + 3] : tmpObj.d2;
tmpObj.d2 = p700[v518 + 3];
tmpObj.dt = 0;
tmpObj.buildIndex = p700[v518 + 4];
tmpObj.weaponIndex = p700[v518 + 5];
tmpObj.weaponVariant = p700[v518 + 6];
tmpObj.team = p700[v518 + 7];
tmpObj.isLeader = p700[v518 + 8];
tmpObj.oldSkinIndex = tmpObj.skinIndex;
tmpObj.oldTailIndex = tmpObj.tailIndex;
tmpObj.skinIndex = p700[v518 + 9];
tmpObj.tailIndex = p700[v518 + 10];
tmpObj.iconIndex = p700[v518 + 11];
tmpObj.zIndex = p700[v518 + 12];
tmpObj.visible = true;
tmpObj.update(game.tickSpeed);
tmpObj.dist2 = UTILS.getDist(tmpObj, player, 2, 2);
tmpObj.aim2 = UTILS.getDirect(tmpObj, player, 2, 2);
tmpObj.dist3 = UTILS.getDist(tmpObj, player, 3, 3);
tmpObj.aim3 = UTILS.getDirect(tmpObj, player, 3, 3);
tmpObj.damageThreat = 0;
if (tmpObj.skinIndex == 45 && tmpObj.shameTimer <= 0) {
tmpObj.addShameTimer();
}
if (tmpObj.oldSkinIndex == 45 && tmpObj.skinIndex != 45) {
tmpObj.shameTimer = 0;
tmpObj.shameCount = 0;
if (tmpObj == player) {
healer();
}
}
botSkts.forEach(p708 => {
p708.showName = "YEAHHH";
});
for (let v519 = 0; v519 < players.length; v519++) {
for (let v520 = 0; v520 < botSkts.length; v520++) {
if (player.id === v520.id) {
v520.showName = "YEAHHHHHH";
}
}
}
if (player.shameCount < 3 && near.dist3 <= 300 && near.reloads[near.primaryIndex] <= game.tickRate * (window.pingTime >= 150 ? 2 : 1)) {
autoQ = true;
healer();
} else {
if (autoQ) {
healer();
}
autoQ = false;
}
if (phantom.length > 0) {
for (let v521 of phantom) {
objectManager.disableBySid(v521.sid);
}
phantom = [];
}
if (tmpObj == player) {
if (liztobj.length) {
liztobj.forEach(p709 => {
p709.onNear = false;
if (p709.active) {
if (!p709.onNear && UTILS.getDist(p709, tmpObj, 0, 2) <= p709.scale + items.weapons[tmpObj.weapons[0]].range) {
p709.onNear = true;
}
if (p709.isItem && p709.owner) {
p709.breakObj = true;
breakObjects.push({
x: p709.x,
y: p709.y,
sid: p709.sid
});
}
}
});
let v522 = liztobj.filter(p710 => p710.trap && p710.active && UTILS.getDist(p710, tmpObj, 0, 2) <= tmpObj.scale + p710.getScale() + 25 && !p710.isTeamObject(tmpObj)).sort(function (p711, p712) {
return UTILS.getDist(p711, tmpObj, 0, 2) - UTILS.getDist(p712, tmpObj, 0, 2);
})[0];
if (v522) {
let v523 = liztobj.filter(p713 => p713.dmg && cdf(tmpObj, p713) <= tmpObj.scale + v522.scale / 2 && !p713.isTeamObject(tmpObj) && p713.active)[0];
traps.dist = UTILS.getDist(v522, tmpObj, 0, 2);
traps.aim = UTILS.getDirect(v523 ? v523 : v522, tmpObj, 0, 2);
tracker.draw3.active = true;
traps.protect(caf(v522, tmpObj) - Math.PI);
traps.inTrap = true;
traps.info = v522;
} else {
if (traps.inTrap) {
Leuchtturm = true;
setTimeout(() => {
Leuchtturm = false;
}, 240);
} else {
Leuchtturm = false;
}
traps.inTrap = false;
traps.info = {};
}
} else {
tracker.draw3.active = false;
traps.inTrap = false;
}
}
if (tmpObj.weaponIndex < 9) {
tmpObj.primaryIndex = tmpObj.weaponIndex;
tmpObj.primaryVariant = tmpObj.weaponVariant;
} else if (tmpObj.weaponIndex > 8) {
tmpObj.secondaryIndex = tmpObj.weaponIndex;
tmpObj.secondaryVariant = tmpObj.weaponVariant;
}
}
v518 += 13;
}
if (runAtNextTick.length) {
runAtNextTick.forEach(p714 => {
checkProjectileHolder(...p714);
});
runAtNextTick = [];
}
for (let v524 = 0; v524 < p700.length;) {
tmpObj = findPlayerBySID(p700[v524]);
if (tmpObj) {
if (!tmpObj.isTeam(player)) {
enemy.push(tmpObj);
if (tmpObj.dist2 <= items.weapons[tmpObj.primaryIndex == undefined ? 5 : tmpObj.primaryIndex].range + player.scale * 2) {
nears.push(tmpObj);
}
}
tmpObj.manageReload();
if (tmpObj != player) {
tmpObj.addDamageThreat(player);
}
}
v524 += 13;
}
if (player && player.alive) {
if (enemy.length) {
near = enemy.sort(function (p715, p716) {
return p715.dist2 - p716.dist2;
})[0];
} else {}
if (game.tickQueue[game.tick]) {
game.tickQueue[game.tick].forEach(p717 => {
p717();
});
game.tickQueue[game.tick] = null;
}
if (advHeal.length) {
advHeal.forEach(p718 => {
if (window.pingTime < 150) {
let v525 = p718[0];
let v526 = p718[1];
let v527 = 100 - v526;
let v528 = p718[2];
tmpObj = findPlayerBySID(v525);
let v529 = false;
if (tmpObj && tmpObj.health <= 0) {
if (!tmpObj.death) {
tmpObj.death = true;
if (tmpObj != player) {
notif2("KILLED : ", tmpObj.name);
}
addDeadPlayer(tmpObj);
}
}
if (tmpObj == player) {
if (tmpObj.skinIndex == 7 && (v528 == 5 || tmpObj.latestTail == 13 && v528 == 2)) {
if (my.reSync) {
my.reSync = false;
tmpObj.setBullTick = true;
}
v529 = true;
}
if (inGame) {
let vGetAttacker2 = getAttacker(v528);
let v530 = [0.25, 0.45].map(p719 => p719 * items.weapons[player.weapons[0]].dmg * soldierMult());
let v531 = enemy.length ? !v529 && v530.includes(v528) && near.skinIndex == 11 : false;
let v532 = 140 - window.pingTime;
let v533 = 100 - player.health;
let vF8 = function (p720, p721) {
if (!p721) {
setTimeout(() => {
healer();
}, p720);
} else {
game.tickBase(() => {
healer();
}, 2);
}
};
if (getEl("healingBeta").checked) {
if (enemy.length) {
if ([0, 7, 8].includes(near.primaryIndex)) {
if (v528 < 75) {
vF8(v532);
} else {
healer();
}
}
if (!Leuchtturm && v528 >= 20 && player.skinIndex == 6 && player.shameCount <= 4 && getEl("antiBullType").value == "abalway" && near.dist2 <= 150 && (player.weapons[0] == 4 || player.weapons[0] == 3) && near.primaryIndex != 5) {
instaC.canCounter = true;
}
if (player.weapons[1] == 11) {
if ([15, 9, 12, 13].includes(near.secondaryIndex) && near.reloads[near.secondaryIndex] == 1) {
if (v528 < 75) {
my.autoAim = true;
selectWeapon(player.weapons[1]);
vF8(v532);
setTimeout(() => {
selectWeapon(player.weapons[0]);
my.autoAim = false;
}, 250);
}
}
} else if (player.weapons[1] == 11) {
if (near.skinIndex == 53) {
my.autoAim = true;
selectWeapon(player.weapons[1]);
vF8(v532);
setTimeout(() => {
selectWeapon(player.weapons[0]);
my.autoAim = false;
}, 250);
}
}
if ([1, 2, 6].includes(near.primaryIndex)) {
if (v528 >= 25 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 5) {
healer();
} else {
vF8(v532);
}
}
if (near.primaryIndex == 5 && near.secondaryIndex == 10 && traps.inTrap && v533 >= 10 && near.reloads[near.primaryIndex] == 0) {
healer();
}
if (near.primaryIndex == 3) {
if (near.secondaryIndex == 15) {
if (near.primaryVariant < 2) {
if (v528 >= 35 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 6) {
tmpObj.canEmpAnti = true;
healer();
} else {
vF8(v532);
}
} else if (v528 > 35 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 6 && game.tick - player.antiTimer > 1) {
tmpObj.canEmpAnti = true;
tmpObj.antiTimer = game.tick;
healer();
} else {
vF8(v532);
}
} else if (v528 >= 25 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 4) {
healer();
} else {
vF8(v532);
}
}
if (near.primaryIndex == 4) {
if (near.primaryVariant >= 1) {
if (v528 >= 10 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 4) {
healer();
} else {
vF8(v532);
}
} else if (v528 >= 35 && player.damageThreat + v533 >= 95 && tmpObj.shameCount < 3) {
healer();
} else {
vF8(v532);
}
}
if ([undefined, 5].includes(near.primaryIndex)) {
if (near.secondaryIndex == 10) {
if (v533 >= (v531 ? 10 : 20) && tmpObj.damageThreat + v533 >= 80 && tmpObj.shameCount < 6) {
healer();
} else {
vF8(v532);
}
} else if (near.primaryVariant >= 2 || near.primaryVariant == undefined) {
if (v533 >= (v531 ? 15 : 20) && tmpObj.damageThreat + v533 >= 50 && tmpObj.shameCount < 6) {
healer();
} else {
vF8(v532);
}
} else if ([undefined || 15].includes(near.secondaryIndex)) {
if (v528 > (v531 ? 8 : 20) && player.damageThreat >= 25 && game.tick - player.antiTimer > 1) {
if (tmpObj.shameCount < 5) {
healer();
} else {
vF8(v532);
}
} else {
vF8(v532);
}
} else if ([9, 12, 13].includes(near.secondaryIndex)) {
if (v533 >= 25 && player.damageThreat + v533 >= 70 && tmpObj.shameCount < 6) {
healer();
} else {
vF8(v532);
}
} else if (v528 > 25 && player.damageThreat + v533 >= 95) {
healer();
} else {
vF8(v532);
}
}
if (near.primaryIndex == 6) {
if (near.secondaryIndex == 15) {
if (v528 >= 25 && tmpObj.damageThreat + v533 >= 95 && tmpObj.shameCount < 4) {
healer();
} else {
vF8(v532);
}
} else if (v528 >= 70 && tmpObj.shameCount < 4) {
healer();
} else {
vF8(v532);
}
}
if (v528 >= 30 && near.reloads[near.secondaryIndex] == 0 && near.dist2 <= 150 && player.skinIndex == 11 && player.tailIndex == 21) {
instaC.canCounter = true;
}
} else if (v528 >= 70) {
healer();
} else {
vF8(v532);
}
} else {
if (v528 >= (v531 ? 8 : 25) && v533 + player.damageThreat >= 80 && game.tick - player.antiTimer > 1) {
if (tmpObj.reloads[53] == 0 && tmpObj.reloads[tmpObj.weapons[1]] == 0) {
tmpObj.canEmpAnti = true;
} else {
player.soldierAnti = true;
}
tmpObj.antiTimer = game.tick;
let v534 = [0, 4, 6, 7, 8].includes(near.primaryIndex) ? 2 : 5;
if (tmpObj.shameCount < v534) {
healer();
} else if (near.primaryIndex == 7 || player.weapons[0] == 7 && (near.skinIndex == 11 || near.tailIndex == 21)) {
vF8(v532);
} else {
vF8(v532, 1);
}
} else if (near.primaryIndex == 7 || player.weapons[0] == 7 && (near.skinIndex == 11 || near.tailIndex == 21)) {
vF8(v532);
} else {
vF8(v532, 1);
}
if (v528 >= 25 && near.dist2 <= 140 && player.skinIndex == 11 && player.tailIndex == 21) {
instaC.canCounter = true;
}
}
} else if (!tmpObj.setPoisonTick && (tmpObj.damaged == 5 || tmpObj.latestTail == 13 && tmpObj.damaged == 2)) {
tmpObj.setPoisonTick = true;
}
}
} else {
let [v535, v536, v537] = p718;
let v538 = 100 - v536;
let vFindPlayerBySID3 = findPlayerBySID(v535);
let v539 = false;
if (vFindPlayerBySID3 == player) {
if (vFindPlayerBySID3.skinIndex == 7 && (v537 == 5 || vFindPlayerBySID3.latestTail == 13 && v537 == 2)) {
if (my.reSync) {
my.reSync = false;
vFindPlayerBySID3.setBullTick = true;
v539 = true;
}
}
if (inGame) {
let vGetAttacker3 = getAttacker(v537);
let v540 = [0.25, 0.45].map(p722 => p722 * items.weapons[player.weapons[0]].dmg * soldierMult());
let v541 = enemy.length ? !v539 && v540.includes(v537) && near.skinIndex == 11 : false;
let v542 = 60;
let v543 = 100 - player.health;
let v544 = [2, 5][[0, 4, 6, 7, 8].includes(near.primaryIndex) ? 0 : 1];
let vF9 = function (p723, p724) {
if (!p724) {
setTimeout(() => healer(), p723);
} else {
game.tickBase(() => healer(), 2);
}
};
if (getEl("healingBeta").checked) {
let v545 = [0, 7, 8].includes(near.primaryIndex) ? v537 < 75 : [1, 2, 6].includes(near.primaryIndex) ? v537 >= 25 && player.damageThreat + v543 >= 95 && vFindPlayerBySID3.shameCount < 5 : [undefined, 5].includes(near.primaryIndex) ? v543 >= (v541 ? 15 : 20) && vFindPlayerBySID3.damageThreat + v543 >= 50 && vFindPlayerBySID3.shameCount < 6 : near.primaryIndex == 3 && near.secondaryIndex == 15 ? v537 >= 35 && player.damageThreat + v543 >= 95 && vFindPlayerBySID3.shameCount < 5 && game.tick - player.antiTimer > 1 : near.primaryIndex == 4 ? near.primaryVariant >= 1 ? v537 >= 10 && player.damageThreat + v543 >= 95 && vFindPlayerBySID3.shameCount < 4 : v537 >= 35 && player.damageThreat + v543 >= 95 && vFindPlayerBySID3.shameCount < 3 : near.primaryIndex == 6 && near.secondaryIndex == 15 ? v537 >= 25 && vFindPlayerBySID3.damageThreat + v543 >= 95 && vFindPlayerBySID3.shameCount < 4 : v537 >= 25 && player.damageThreat + v543 >= 95;
if (v545) {
healer();
} else {
vF9(v542);
}
} else {
let v546 = v537 >= (v541 ? 8 : 25) && v543 + player.damageThreat >= 80 && game.tick - player.antiTimer > 1;
if (v546) {
if (vFindPlayerBySID3.reloads[53] == 0 && vFindPlayerBySID3.reloads[vFindPlayerBySID3.weapons[1]] == 0) {
vFindPlayerBySID3.canEmpAnti = true;
} else {
player.soldierAnti = true;
}
vFindPlayerBySID3.antiTimer = game.tick;
if (vFindPlayerBySID3.shameCount < v544) {
healer();
} else {
vF9(v542, near.primaryIndex == 7 || player.weapons[0] == 7 && (near.skinIndex == 11 || near.tailIndex == 21) ? 0 : 1);
}
} else {
vF9(v542, near.primaryIndex == 7 || player.weapons[0] == 7 && (near.skinIndex == 11 || near.tailIndex == 21) ? 0 : 1);
}
}
} else if (!vFindPlayerBySID3.setPoisonTick && (vFindPlayerBySID3.damaged == 5 || vFindPlayerBySID3.latestTail == 13 && vFindPlayerBySID3.damaged == 2)) {
vFindPlayerBySID3.setPoisonTick = true;
}
}
}
});
advHeal = [];
}
players.forEach(p725 => {
if (!p725.visible && player != p725) {
p725.reloads = {
0: 0,
1: 0,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
10: 0,
11: 0,
12: 0,
13: 0,
14: 0,
15: 0,
53: 0
};
}
if (p725.setBullTick) {
p725.bullTimer = 0;
}
if (p725.setPoisonTick) {
p725.poisonTimer = 0;
}
p725.updateTimer();
});
if (inGame) {
if (enemy.length) {
if (!instaC.isTrue && getEl("preTick").checked && my.anti0Tick <= 0) {
let vKnockBackPredict = knockBackPredict();
if (vKnockBackPredict == "insta them" && (![9, 12, 13, 15].includes(player.weapons[1]) || near.dist2 <= items.weapons[player.weapons[1]].range + player.scale * 1.8)) {
instaC.changeType(configs.revTick || player.weapons[1] == 10 ? "rev" : "normal");
if (getEl("notifs").checked) {
notif("KBSpikeTick");
}
}
if (vKnockBackPredict == "primary sync") {
instaC.spikeTickType("rev");
}
}
let v547 = gameObjects.filter(p726 => p726.dmg && p726.active && p726.isTeamObject(player) && UTILS.getDist(p726, near, 0, 3) <= p726.scale + near.scale).sort(function (p727, p728) {
return UTILS.getDist(p727, near, 0, 2) - UTILS.getDist(p728, near, 0, 2);
})[0];
if (v547) {
if (near.dist2 <= items.weapons[player.weapons[0]].range + player.scale * 1.8 && getEl("preTick").checked) {
instaC.canSpikeTick = true;
instaC.syncHit = true;
if (getEl("notifs").checked) {
notif("AKH");
}
if (getEl("revTick").checked && player.weapons[1] == 15 && player.reloads[53] == 0 && instaC.perfCheck(player, near)) {
instaC.revTick = true;
if (getEl("notifs").checked) {
notif("revTick");
}
}
}
}
let vUndefined = undefined;
let v548 = tmpObj.damaged;
let v549 = gameObjects.filter(p729 => p729.dmg && p729.active && !p729.isTeamObject(player) && UTILS.getDist(p729, player, 0, 3) < p729.scale + 40 + player.scale).sort(function (p730, p731) {
return UTILS.getDist(p730, player, 0, 5) - UTILS.getDist(p731, player, 0, 5);
})[0];
let v550 = v549 && vUndefined <= 45 && near.primaryIndex == [5, 4, 3, 7];
let v551 = near.skinIndex == 7 && vUndefined <= 60;
let v552 = near.dist2 <= items.weapons[near.primaryIndex || 5].range + near.scale * 1.2;
let v553 = near.skinIndex == 7;
let v554 = near.primaryIndex == 5 && vUndefined >= 45 && f37();
let v555 = near.secondaryIndex == 0 && vUndefined >= 10 && f38();
let v556 = near.primaryIndex == 3 && vUndefined >= 30 && f41();
let v557 = near.secondaryIndex == 15 && vUndefined >= 30 && f40();
let v558 = near.secondaryIndex == 13 && vUndefined && f34();
let v559 = near.primaryIndex == 5 && vUndefined && f42();
let v560 = near.secondaryIndex == 15 && vUndefined && f43();
let v561 = near.primaryIndex == 5 && vUndefined >= 45 && f39();
let v562 = near.primaryIndex == 4 && vUndefined >= 33 && f36();
let v563 = near.secondaryIndex == 9 && vUndefined >= 25 && f35();
let v564 = [5, 7, 4, 3].includes(near.primaryIndex) && player.damageThreat && vUndefined >= 20;
let v_0x16c8be = f33;
let v_0x2bc614 = f37;
async function f33() {
while (traps.inTrap) {
await new Promise(p732 => setTimeout(p732, 1));
if (v549 && vUndefined >= 70 || v549 && v548 >= 70) {
while (v549 && vUndefined >= 70 || v549 && v548 >= 70) {
await new Promise(p733 => setTimeout(p733, 1));
if (vUndefined <= 70 && !v548) {
return;
}
}
}
}
}
async function f34() {
while (near.secondaryIndex == 13) {
await new Promise(p734 => setTimeout(p734, 1));
if (near.primaryIndex == 5 && near.secondaryIndex != 13 && vUndefined >= 37) {
return;
}
}
}
async function f35() {
while (near.secondaryIndex == 9) {
await new Promise(p735 => setTimeout(p735, 1));
if (near.primaryIndex == 4 && near.secondaryIndex != 9 && vUndefined >= 30) {
return;
}
}
}
async function f36() {
while (near.primaryIndex == 4) {
await new Promise(p736 => setTimeout(p736, 1));
if (near.secondaryIndex == 9 && near.primaryIndex != 4 && vUndefined >= 18) {
return;
}
}
}
async function f37() {
while (near.primaryIndex == 5) {
await new Promise(p737 => setTimeout(p737, 1));
if (near.secondaryIndex == 0 && near.primaryIndex != 5 && vUndefined >= 5) {
return;
}
}
}
async function f38() {
while (near.secondaryIndex == 0) {
await new Promise(p738 => setTimeout(p738, 1));
if (near.primaryIndex == 5 && near.secondaryIndex != 0 && vUndefined >= 40) {
return;
}
}
}
async function f39() {
while (near.primaryIndex == 5) {
await new Promise(p739 => setTimeout(p739, 1));
if (near.secondaryIndex == 15 && near.primaryIndex != 5 && vUndefined >= 30) {
return;
}
}
}
async function f40() {
while (near.secondaryIndex == 15) {
await new Promise(p740 => setTimeout(p740, 1));
if (near.primaryIndex == 3 && near.secondaryIndex != 15 && vUndefined >= 20) {
return;
}
}
}
async function f41() {
while (near.primaryIndex == 3) {
await new Promise(p741 => setTimeout(p741, 1));
if (near.secondaryIndex == 15 && near.primaryIndex != 3 && vUndefined >= 37) {
return;
}
}
}
async function f42() {
while (near.primaryIndex == 5) {
await new Promise(p742 => setTimeout(p742, 1));
if (near.secondaryIndex == 13 && near.primaryIndex != 5 && vUndefined >= 30) {
return;
}
}
}
async function f43() {
while (near.secondaryIndex == 15) {
await new Promise(p743 => setTimeout(p743, 1));
if (near.primaryIndex == 5 && near.secondaryIndex != 15 && vUndefined >= 35) {
return;
}
}
}
async function f44() {
while (near.secondaryIndex == 0) {
await new Promise(p744 => setTimeout(p744, 1));
if (near.primaryIndex == 4 && near.secondaryIndex != 0 && vUndefined >= 30) {
return;
}
}
}
if (instaC.can && !traps.inTrap || traps.inTrap && player.skinIndex == 40) {
if ([0].includes(near.secondaryIndex) && near.secondaryIndex == 0 && player.damageThreat && f44 && vUndefined >= 10 || v553 && [9].includes(near.secondaryIndex) && near.primaryIndex == 4 && player.damageThreat && v563 && vUndefined >= 10 || v553 && [4].includes(near.primaryIndex) && near.primaryIndex == 4 && player.damageThreat && v562 && vUndefined >= 33 || v553 && [4].includes(near.primaryIndex) && near.primaryIndex == 4 && player.damageThreat && f37 && vUndefined >= 45 || [15].includes(near.secondaryIndex) && near.secondaryIndex == 15 && player.damageThreat && v557 && vUndefined >= 30 || v553 && [3].includes(near.primaryIndex) && near.primaryIndex == 3 && player.damageThreat && v556 && vUndefined >= 30 || [0].includes(near.secondaryIndex) && near.secondaryIndex == 0 && player.damageThreat && v555 && vUndefined >= 10 || v553 && [5].includes(near.primaryIndex) && near.primaryIndex == 5 && player.damageThreat && v554 && vUndefined >= 45 || v553 && [5].includes(near.primaryIndex) && near.primaryIndex == 5 && player.damageThreat && v559 && vUndefined >= 45 || [5].includes(near.primaryIndex) && near.primaryIndex == 5 && player.damageThreat && v561 && vUndefined >= 45 || [15].includes(near.secondaryIndex) && near.secondaryIndex == 15 && player.damageThreat && v560 && vUndefined >= 30 || [0].includes(near.secondaryIndex) && near.secondaryIndex == 13 && player.damageThreat && f34 && vUndefined >= 10) {
autoQ = true;
buyEquip(6, 0);
}
}
let v565 = gameObjects.filter(p745 => p745.dmg && p745.active && !p745.isTeamObject(player) && UTILS.getDist(p745, player, 0, 3) < p745.scale + player.scale).sort(function (p746, p747) {
return UTILS.getDist(p746, player, 0, 2) - UTILS.getDist(p747, player, 0, 2);
})[0];
if (v565 && !traps.inTrap) {
if (near.dist2 <= items.weapons[5].range + near.scale * 1.8) {
my.anti0Tick = 1;
buyEquip(6, 0);
}
if (v565 && traps.inTrap) {
if (near.dist3 <= items.weapons[5].range + near.scale * 1.8) {
my.anti0Tick = 4;
buyEquip(6, 0);
}
}
}
}
if ((useWasd ? true : (player.checkCanInsta(true) >= 100 ? player.checkCanInsta(true) : player.checkCanInsta(false)) >= (player.weapons[1] == 10 ? 95 : 100)) && near.dist2 <= items.weapons[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]].range + near.scale * 1.8 && (instaC.wait || useWasd && Math.floor(Math.random() * 5) == 0) && !instaC.isTrue && !my.waitHit && player.reloads[player.weapons[0]] == 0 && player.reloads[player.weapons[1]] == 0 && (useWasd ? true(player.reloads[53] <= (player.weapons[1] == 10 ? 0 : game.tickRate)) : true) && instaC.perfCheck(player, near)) {
if (player.checkCanInsta(true) >= 100) {
instaC.nobull = useWasd ? false : instaC.canSpikeTick ? false : true;
} else {
instaC.nobull = false;
}
instaC.can = true;
} else {
instaC.can = false;
}
if (macro.q) {
place(0, getAttackDir());
}
if (macro.f) {
place(4, getSafeDir());
}
if (macro.v) {
place(2, getSafeDir());
}
if (macro.y) {
place(5, getSafeDir());
}
if (macro.h) {
place(player.getItemType(22), getSafeDir());
}
if (macro.n) {
place(3, getSafeDir());
}
laztPoz.x = player.x;
laztPoz.y = player.y;
let v566 = mills.size(items.list[player.items[3]].scale);
let v567 = mills.dist(items.list[player.items[3]].scale);
if (UTILS.getDist(mills, player, 0, 2) > v567 + items.list[player.items[3]].placeOffset && game.tick % 2 == 0) {
if (mills.place) {
let v568 = {
x: mills.x,
y: mills.y
};
let v569 = UTILS.getDirect(v568, player, 0, 2);
checkPlace(3, v569 + UTILS.toRad(v566));
checkPlace(3, v569 - UTILS.toRad(v566));
checkPlace(3, v569);
mills.count = Math.max(0, mills.count - 1);
}
mills.x = player.x2;
mills.y = player.y2;
}
if (pads.placeSpawnPads) {
for (let v570 = 0; v570 < Math.PI * 2; v570 += Math.PI / 2) {
checkPlace(player.getItemType(20), UTILS.getDirect(player.oldPos, player, 2, 2) + v570);
}
}
if (instaC.can) {
instaC.changeType(player.weapons[1] == 10 ? "rev" : "normal");
}
if (getEl("smartInsta").checked) {
if (player.weapons[1] == 15 || player.weapons[1] == 9 || player.weapons[1] == 12 || player.weapons[1] == 13) {
if (getEl("AutoInsta").value == "smart") {
if (near.shameCount >= 5 && player.reloads[player.weapons[0]] === 0 && !instaC.isTrue && !clicks.right && player.reloads[player.weapons[1]] === 0 && near.dist2 <= items.weapons[player.weapons[0]].range + player.scale * 1.8 && player.weapons[1] !== 10) {
instaC.changeType(player.weapons[1] == 9 || player.weapons[1] == 12 || player.weapons[1] == 13 ? "rev" : "normal");
if (getEl("notifs").checked) {
notif("AutoInsta:5 Shame");
}
}
}
}
if (getEl("AutoInsta").value == "always" && player.reloads[player.weapons[0]] === 0 && !instaC.isTrue && !clicks.right && player.reloads[player.weapons[1]] === 0 && near.dist2 <= items.weapons[player.weapons[0]].range + player.scale * 1.8 && player.weapons[1] !== 10) {
instaC.changeType(player.weapons[1] == 9 || player.weapons[1] == 12 || player.weapons[1] == 13 ? "rev" : "normal");
}
}
if (instaC.canCounter && !Leuchtturm) {
instaC.canCounter = false;
if (player.reloads[player.weapons[0]] == 0 && !instaC.isTrue) {
instaC.counterType();
}
}
if (instaC.canSpikeTick) {
instaC.canSpikeTick = false;
if (instaC.revTick) {
instaC.revTick = false;
if ([1, 2, 3, 4, 5, 6].includes(player.weapons[0]) && player.reloads[player.weapons[1]] == 0 && !instaC.isTrue) {
instaC.changeType("rev");
}
} else if ([1, 2, 3, 4, 5, 6].includes(player.weapons[0]) && player.reloads[player.weapons[0]] == 0 && !instaC.isTrue) {
instaC.spikeTickType();
if (instaC.syncHit) {}
}
}
if (!clicks.middle && (clicks.left || clicks.right) && !instaC.isTrue) {
if (player.weaponIndex != (clicks.right && player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]) || player.buildIndex > -1) {
selectWeapon(clicks.right && player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]);
}
if (player.reloads[clicks.right && player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0 && !my.waitHit) {
sendAutoGather();
my.waitHit = 1;
game.tickBase(() => {
sendAutoGather();
my.waitHit = 0;
}, 1);
}
}
if (useWasd && !clicks.left && !clicks.right && !instaC.isTrue && near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) {
if (player.weaponIndex != player.weapons[0] || player.buildIndex > -1) {
selectWeapon(player.weapons[0]);
}
if (player.reloads[player.weapons[0]] == 0 && !my.waitHit) {
sendAutoGather();
my.waitHit = 1;
game.tickBase(() => {
sendAutoGather();
my.waitHit = 0;
}, 1);
}
new ver();
}
if (getEl("snow").checked) {
snowflakeContainer.style.display = "block";
} else {
snowflakeContainer.style.display = "none";
}
if (traps.inTrap) {
let v571 = liztobj.sort((p748, p749) => fgdo(player, p748) - fgdo(player, p749));
let v572 = v571.filter(p750 => (p750.name == "spikes" || p750.name == "greater spikes" || p750.name == "spinning spikes" || p750.name == "poison spikes") && fgdo(player, p750) < player.scale + p750.scale + 20 && !isAlly(p750.owner.sid) && p750.active)[0];
if (!clicks.left && !clicks.right && !instaC.isTrue) {
if (v572 && player.weapons[1] === 10) {
tracker.draw3.active = true;
traps.aim = Math.atan2(v572.y - player.y, v572.x - player.x);
}
if (player.weaponIndex != (traps.notFast() ? player.weapons[1] : player.weapons[0]) || player.buildIndex > -1) {
tracker.draw3.active = true;
selectWeapon(traps.notFast() ? player.weapons[1] : player.weapons[0]);
}
if (player.reloads[traps.notFast() ? player.weapons[1] : player.weapons[0]] == 0 && !my.waitHit) {
sendAutoGather();
my.waitHit = 1;
game.tickBase(() => {
sendAutoGather();
my.waitHit = 0;
}, 1);
}
}
}
if (clicks.middle && !traps.inTrap) {
if (!instaC.isTrue && player.reloads[player.weapons[1]] == 0) {
if (my.ageInsta && player.weapons[0] != 4 && player.weapons[1] == 9 && player.age >= 9 && enemy.length) {
instaC.bowMovement();
} else {
instaC.rangeType();
}
}
}
if (player.weapons[1] && !clicks.left && !clicks.right && !traps.inTrap && !instaC.isTrue && (!useWasd || !(near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8))) {
if (player.reloads[player.weapons[0]] == 0 && player.reloads[player.weapons[1]] == 0) {
if (!my.reloaded) {
my.reloaded = true;
let v573 = items.weapons[player.weapons[0]].spdMult < items.weapons[player.weapons[1]].spdMult ? 1 : 0;
if (player.weaponIndex != player.weapons[v573] || player.buildIndex > -1) {
selectWeapon(player.weapons[v573]);
}
}
} else {
my.reloaded = false;
if (useWasd) {
autos.stopspin = false;
}
if (player.reloads[player.weapons[0]] > 0) {
if (player.weaponIndex != player.weapons[0] || player.buildIndex > -1) {
selectWeapon(player.weapons[0]);
}
} else if (player.reloads[player.weapons[0]] == 0 && player.reloads[player.weapons[1]] > 0) {
if (player.weaponIndex != player.weapons[1] || player.buildIndex > -1) {
selectWeapon(player.weapons[1]);
}
if (useWasd) {
if (!autos.stopspin) {
setTimeout(() => {
autos.stopspin = true;
}, 750);
}
}
}
}
}
if (!instaC.isTrue && !traps.inTrap && !traps.replaced) {
traps.autoPlace();
}
if (!macro.q && !macro.f && !macro.v && !macro.h && !macro.n) {
packet("D", getAttackDir());
}
let vF10 = function () {
if (my.anti0Tick > 0 || Leuchtturm) {
buyEquip(6, 0);
} else if (clicks.left || clicks.right) {
if ((player.shameCount > 0 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) && (near && near.dist2 > 140 || !near)) {
buyEquip(7, 0);
} else if (clicks.left) {
buyEquip(player.reloads[player.weapons[0]] == 0 ? getEl("weaponGrind").checked ? 40 : 7 : player.empAnti ? 22 : player.soldierAnti ? 6 : getEl("antiBullType").value == "abreload" && near.antiBull > 0 ? 6 : near.dist2 <= 275 ? getEl("antiBullType").value == "abalway" && near.reloads[near.primaryIndex] == 0 && (player.weapons[0] == 4 || player.weapons[0] == 3) && near.primaryIndex != 5 ? 6 : 6 : 6, 0);
} else if (clicks.right) {
buyEquip(player.reloads[clicks.right && player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0 ? 40 : player.empAnti ? 22 : player.soldierAnti ? 6 : getEl("antiBullType").value == "abreload" && near.antiBull > 0 ? 6 : near.dist2 <= 275 ? getEl("antiBullType").value == "abalway" && near.reloads[near.primaryIndex] == 0 && (player.weapons[0] == 4 || player.weapons[0] == 3) && near.primaryIndex != 5 ? 6 : 6 : biomeGear(1, 1), 0);
}
} else if (traps.inTrap) {
if (traps.info.health <= items.weapons[player.weaponIndex].dmg ? false : player.reloads[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0) {
buyEquip(40, 0);
} else if ((player.shameCount > 0 && (game.tick - player.bullTick) % config.serverUpdateRate === 7 || 0 && player.skinIndex != 45 || my.reSync) && (near && near.dist2 > 140 || !near)) {
buyEquip(6, 0);
setTimeout(() => {
buyEquip(7, 0);
}, 120);
} else {
buyEquip(player.empAnti || near.dist2 > 300 || !enemy.length ? 22 : 6, 0);
}
} else if (player.empAnti || player.soldierAnti) {
buyEquip(player.empAnti ? 22 : 6, 0);
} else if ((player.shameCount > 0 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) && (near && near.dist2 > 140 || !near)) {
buyEquip(7, 0);
setTimeout(() => {
buyEquip(7, 0);
}, 120);
} else if (near.dist2 <= 275) {
buyEquip(getEl("antiBullType").value == "abreload" && near.antiBull > 0 ? 6 : getEl("antiBullType").value == "abalway" && near.reloads[near.primaryIndex] == 0 ? 6 : 6, 0);
} else {
biomeGear(1);
}
};
let vF11 = function () {
if (instaC.can && player.checkCanInsta(true) >= 100) {
buyEquip(21, 1);
} else if (clicks.left) {
setTimeout(() => {
buyEquip(21, 1);
}, 100);
} else if (clicks.right) {
setTimeout(() => {
buyEquip(21, 1);
}, 50);
} else if (near.dist2 <= 350 && !traps.inTrap) {
buyEquip(19, 1);
} else if (traps.inTrap) {
buyEquip(21, 1);
} else {
buyEquip(11, 1);
}
};
let vF12 = function () {
if (my.anti0Tick > 0) {
buyEquip(6, 0);
} else if (clicks.left || clicks.right) {
if (player.shameCount > 4320 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) {
buyEquip(7, 0);
} else if (clicks.left) {
buyEquip(player.reloads[player.weapons[0]] == 0 ? getEl("weaponGrind").checked ? 40 : 7 : 11);
} else if (clicks.right) {
buyEquip(player.reloads[clicks.right && player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0 ? 40 : player.empAnti ? 22 : 6, 0);
}
} else if (near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) {
if (player.shameCount > 4320 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) {
buyEquip(7, 0);
} else {
buyEquip(player.reloads[player.weapons[0]] == 0 ? 7 : player.empAnti ? 22 : 6, 0);
}
} else if (traps.inTrap) {
if (traps.info.health <= items.weapons[player.weaponIndex].dmg ? false : player.reloads[player.weapons[1] == 10 ? player.weapons[1] : player.weapons[0]] == 0) {
buyEquip(40, 0);
} else if (player.shameCount > 4320 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) {
buyEquip(7, 0);
} else {
buyEquip(player.empAnti ? 22 : 6, 0);
}
} else if (player.empAnti) {
buyEquip(22, 0);
} else if (player.shameCount > 4320 && (game.tick - player.bullTick) % config.serverUpdateRate === 0 && player.skinIndex != 45 || my.reSync) {
buyEquip(7, 0);
} else {
buyEquip(6, 0);
}
if (clicks.left || clicks.right) {
if (clicks.left) {
setTimeout(() => {
buyEquip(0, 1);
}, 50);
} else if (clicks.right) {
buyEquip(11, 1);
}
} else if (near.dist2 <= items.weapons[player.weapons[0]].range + near.scale * 1.8 && !traps.inTrap) {
buyEquip(0, 1);
} else if (traps.inTrap) {
buyEquip(0, 1);
} else {
buyEquip(11, 1);
}
};
if (near.weaponIndex > 1 && near.dist2 <= 150) {
buyEquip(6, 0);
}
if (storeMenu.style.display != "block" && !instaC.isTrue && !instaC.ticking) {
if (useWasd) {
vF12();
} else {
vF10();
vF11();
}
}
if (player.alive && inGame && getEl("safeWalk").checked) {
safeWalk();
}
if (getEl("autoPush").checked && enemy.length && !traps.inTrap && !instaC.ticking) {
autoPush();
} else if (my.autoPush) {
my.autoPush = false;
packet("f", lastMoveDir || undefined, 1);
}
if (!my.autoPush && pathFind.active) {
Pathfinder();
}
instaC.ticking &&= false;
instaC.syncHit &&= false;
player.empAnti &&= false;
player.soldierAnti &&= false;
if (my.anti0Tick > 0) {
my.anti0Tick--;
}
traps.replaced &&= false;
traps.antiTrapped &&= false;
}
}
if (botSkts.length) {
botSkts.forEach(p751 => {
if (true) {
p751[0].showName = "YEAHHH";
}
});
}
AutoReplace();
}
for (var i1 = 0; i1 < liztobj.length; i1++) {
if (liztobj[i1].active && liztobj[i1].health > 0 && UTILS.getDist(liztobj[i1], player, 0, 2) < 150 && getEl("antipush").checked) {
tracker.draw3.active = true;
if (liztobj[i1].name.includes("spike") && liztobj[i1]) {
tracker.draw3.active = true;
if (liztobj[i1].owner.sid != player.sid && clicks.left == false && tmpObj.reloads[tmpObj.secondaryIndex] == 0) {
tracker.draw3.active = true;
selectWeapon(player.weapons[1]);
buyEquip(40, 0);
packet("D", UTILS.getDirect(liztobj[i1], player, 0, 2));
setTickout(() => {
buyEquip(6, 0);
}, 1);
}
}
}
;
}
function ez(p752, p753, p754) {
p752.fillStyle = "rgba(0, 255, 255, 0.2)";
p752.beginPath();
p752.arc(p753, p754, 55, 0, Math.PI * 2);
p752.fill();
p752.closePath();
p752.globalAlpha = 1;
}
var leaderboard = getEl("leaderboard");
function updateLeaderboard(p755) {
lastLeaderboardData = p755;
UTILS.removeAllChildren(leaderboardData);
let v574 = 1;
for (let v575 = 0; v575 < p755.length; v575 += 3) {
(function (p756) {
UTILS.generateElement({
class: "leaderHolder",
parent: leaderboardData,
children: [UTILS.generateElement({
class: "leaderboardItem",
style: "font-family: 'Hammersmith One', cursive; color:" + (p755[p756] == playerSID ? "#fff" : "rgba(255,255,255,0.6)") + "; font-size: 16px;",
text: p755[p756 + 1] != "" ? p755[p756 + 1] + " " : "unknown"
}), UTILS.generateElement({
class: "leaderScore",
style: "font-family: 'Hammersmith One', cursive; font-size: 16px; color: #fff;",
text: UTILS.sFormat(p755[p756 + 2]) || "0"
})]
});
})(v575);
v574++;
}
}
$("#leaderboard").css({
"-webkit-border-radius": "0px",
"-moz-border-radius": "0px",
"border-radius": "15px",
"background-color": "transparent",
"box-shadow": "0 0 5px 2px rgba(255,255,255,0.6)",
"text-align": "center"
});
var leaderboardElement = document.getElementById("leaderboard");
leaderboardElement.style.position = "fixed";
leaderboardElement.style.top = "10px";
leaderboardElement.style.right = "10px";
var killCounterElement = document.getElementById("killCounter");
killCounterElement.style.position = "fixed";
killCounterElement.style.bottom = "220px";
killCounterElement.style.left = "20px";
killCounterElement.style.width = "25px";
var allianceButton = getEl("allianceButton");
var storeButton = getEl("storeButton");
allianceButton.style.right = "330px";
allianceButton.style.width = "40px";
storeButton.style.right = "270px";
storeButton.style.width = "40px";
function loadGameObject(p757) {
for (let v576 = 0; v576 < p757.length;) {
objectManager.add(p757[v576], p757[v576 + 1], p757[v576 + 2], p757[v576 + 3], p757[v576 + 4], p757[v576 + 5], items.list[p757[v576 + 6]], true, p757[v576 + 7] >= 0 ? {
sid: p757[v576 + 7]
} : null);
v576 += 8;
}
}
function loadAI(p758) {
for (let v577 = 0; v577 < ais.length; ++v577) {
ais[v577].forcePos = !ais[v577].visible;
ais[v577].visible = false;
}
if (p758) {
let v578 = performance.now();
for (let v579 = 0; v579 < p758.length;) {
tmpObj = findAIBySID(p758[v579]);
if (tmpObj) {
tmpObj.index = p758[v579 + 1];
tmpObj.t1 = tmpObj.t2 === undefined ? v578 : tmpObj.t2;
tmpObj.t2 = v578;
tmpObj.x1 = tmpObj.x;
tmpObj.y1 = tmpObj.y;
tmpObj.x2 = p758[v579 + 2];
tmpObj.y2 = p758[v579 + 3];
tmpObj.d1 = tmpObj.d2 === undefined ? p758[v579 + 4] : tmpObj.d2;
tmpObj.d2 = p758[v579 + 4];
tmpObj.health = p758[v579 + 5];
tmpObj.dt = 0;
tmpObj.visible = true;
} else {
tmpObj = aiManager.spawn(p758[v579 + 2], p758[v579 + 3], p758[v579 + 4], p758[v579 + 1]);
tmpObj.x2 = tmpObj.x;
tmpObj.y2 = tmpObj.y;
tmpObj.d2 = tmpObj.dir;
tmpObj.health = p758[v579 + 5];
if (!aiManager.aiTypes[p758[v579 + 1]].name) {
tmpObj.name = config.cowNames[p758[v579 + 6]];
}
tmpObj.forcePos = true;
tmpObj.sid = p758[v579];
tmpObj.visible = true;
}
v579 += 7;
}
}
}
function animateAI(p759) {
tmpObj = findAIBySID(p759);
if (tmpObj) {
tmpObj.startAnim();
}
}
function gatherAnimation(p760, p761, p762) {
tmpObj = findPlayerBySID(p760);
if (tmpObj) {
tmpObj.startAnim(p761, p762);
tmpObj.gatherIndex = p762;
tmpObj.gathering = 1;
if (near.dist2 >= 150 && near.dist2 <= 300 && !tmpObj.isTeam(player) && tmpObj.weaponIndex === 5 && tmpObj.primaryVariant >= 1 && !tmpObj.secondaryIndex !== undefined && tmpObj.skinIndex === 53 && (player.canEmpAnti = true)) {
buyEquip(6, 0);
healer();
}
if (p761) {
let v580 = objectManager.hitObj;
objectManager.hitObj = [];
game.tickBase(() => {
tmpObj = findPlayerBySID(p760);
let v581 = items.weapons[p762].dmg * config.weaponVariants[tmpObj[(p762 < 9 ? "prima" : "seconda") + "ryVariant"]].val * (items.weapons[p762].sDmg || 1) * (tmpObj.skinIndex == 40 ? 3.3 : 1);
v580.forEach(p763 => {
p763.health -= v581;
if (getEl("dmgtext").checked) {
const v582 = Math.floor(Math.random() * 128) + 128;
const v583 = Math.floor(Math.random() * 128) + 128;
const v584 = Math.floor(Math.random() * 128) + 128;
const v585 = "rgb(" + v582 + ", " + v583 + ", " + v584 + ")";
textManager.showText(p763.x, p763.y, 30, 0.1, 400, Math.round(v581), v585);
}
});
}, 1);
}
}
}
if (nears.filter(p764 => p764.gathering).length > 1) {
healer();
}
function wiggleGameObject(p765, p766) {
tmpObj = findObjectBySid(p766);
if (tmpObj) {
tmpObj.xWiggle += config.gatherWiggle * Math.cos(p765);
tmpObj.yWiggle += config.gatherWiggle * Math.sin(p765);
if (tmpObj.health) {
tmpObj.damaged = Math.min(255, tmpObj.damaged + 60);
objectManager.hitObj.push(tmpObj);
}
}
}
function shootTurret(p767, p768) {
tmpObj = findObjectBySid(p767);
if (tmpObj) {
if (config.anotherVisual) {
tmpObj.lastDir = p768;
} else {
tmpObj.dir = p768;
}
tmpObj.xWiggle += config.gatherWiggle * Math.cos(p768 + Math.PI);
tmpObj.yWiggle += config.gatherWiggle * Math.sin(p768 + Math.PI);
}
}
function updatePlayerValue(p769, p770, p771) {
if (player) {
player[p769] = p770;
if (p769 == "points") {
if (getEl("autoBuy").checked) {
autoBuy.hat();
autoBuy.acc();
}
} else if (p769 == "kills") {
if (getEl("killChat").checked) {
const v586 = document.getElementById("killChatInput").value;
sendChat(v586);
setTimeout(() => {
sendChat(p770 + " =Nubs Which Magmamod killed");
}, 1000);
}
}
}
}
function updateItems(p772, p773) {
if (p772) {
if (p773) {
player.weapons = p772;
player.primaryIndex = player.weapons[0];
player.secondaryIndex = player.weapons[1];
if (!instaC.isTrue) {
selectWeapon(player.weapons[0]);
}
} else {
player.items = p772;
}
}
for (let v587 = 0; v587 < items.list.length; v587++) {
let v588 = items.weapons.length + v587;
let vGetEl2 = getEl("actionBarItem" + v588);
vGetEl2.style.display = player.items.indexOf(items.list[v587].id) >= 0 ? "inline-block" : "none";
}
for (let v589 = 0; v589 < items.weapons.length; v589++) {
let vGetEl3 = getEl("actionBarItem" + v589);
vGetEl3.style.display = player.weapons[items.weapons[v589].type] == items.weapons[v589].id ? "inline-block" : "none";
}
let v590 = player.weapons[0] == 3 && player.weapons[1] == 15;
if (v590) {
getEl("actionBarItem3").style.display = "none";
getEl("actionBarItem4").style.display = "inline-block";
}
}
function addProjectile(p774, p775, p776, p777, p778, p779, p780, p781) {
projectileManager.addProjectile(p774, p775, p776, p777, p778, p779, null, null, p780, inWindow).sid = p781;
runAtNextTick.push(Array.prototype.slice.call(arguments));
}
function remProjectile(p782, p783) {
for (let v591 = 0; v591 < projectiles.length; ++v591) {
if (projectiles[v591].sid == p782) {
projectiles[v591].range = p783;
let v592 = objectManager.hitObj;
objectManager.hitObj = [];
game.tickBase(() => {
let v593 = projectiles[v591].dmg;
v592.forEach(p784 => {
if (p784.projDmg) {
p784.health -= v593;
}
});
}, 1);
}
}
}
let noob = false;
let serverReady = true;
var isProd = location.hostname !== "127.0.0.1" && !location.hostname.startsWith("192.168.");
let wssws = isProd ? "wss" : "ws";
let project = new WebSocket(wssws + "://beautiful-sapphire-toad.glitch.me");
let withSync = true;
project.binaryType = "arraybuffer";
project.onmessage = function (p785) {
let v594 = p785.data;
if (v594 == "isready") {
serverReady = true;
}
if (v594 == "fine") {
noob = false;
}
if (v594 == "tezt") {}
if (v594 == "yeswearesyncer") {
let v595 = Date.now() - wsDelay;
withSync = true;
if (player) {}
}
};
function allianceNotification(p786, p787) {
let vFindSID = findSID(bots, p786);
if (vFindSID) {}
}
function setPlayerTeam(p788, p789) {
if (player) {
player.team = p788;
player.isOwner = p789;
if (p788 == null) {
alliancePlayers = [];
}
}
}
function setAlliancePlayers(p790) {
alliancePlayers = p790;
}
function updateStoreItems(p791, p792, p793) {
if (p793) {
if (!p791) {
player.tails[p792] = 1;
} else {
player.latestTail = p792;
}
} else if (!p791) {
player.skins[p792] = 1;
if (p792 == 7) {
my.reSync = true;
}
} else {
player.latestSkin = p792;
}
}
function isTeam(p794) {
return p794 == player || p794.team && p794.team == player.team;
}
function receiveChat(p795, p796, p797) {
let vFindPlayerBySID4 = findPlayerBySID(p795);
let v596 = ["cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard"];
if (player == vFindPlayerBySID4) {
if (p796.includes(".dc")) {
setTimeout(() => {
window.leave();
}, 50);
} else if (p796.startsWith(".create")) {
let v597 = p796.split(" ")[1];
if (!v597) {
v597 = "1l1l1l1l1l1l1l";
}
packet("L", v597);
} else if (p796.includes(".leave")) {
packet("N");
}
}
if (getEl("autoSync").checked) {
if (isTeam(vFindPlayerBySID4) || player == vFindPlayerBySID4) {
if (p796.includes(".sync") && !instaC.isTrue && player.reloads[player.weapons[1]] == 0 && player.reloads[player.weapons[0]] == 0) {
instaC.syncTry();
sendChat("Delay: " + window.pingTime + "ms");
}
}
}
if (p796.includes("dc unknownclientuser")) {
window.leave();
}
if (getEl("autorespond").checked) {
if (p796.includes("mod")) {
packet("6", "Shut up beggar");
}
}
if (vFindPlayerBySID4) {
if (!config.anotherVisual) {
allChats.push(new addCh(vFindPlayerBySID4.x, vFindPlayerBySID4.y, p796, vFindPlayerBySID4));
} else {
vFindPlayerBySID4.chatMessage = (p798 => {
let v598;
v596.forEach(p799 => {
if (p798.indexOf(p799) > -1) {
v598 = "";
for (var v599 = 0; v599 < p799.length; ++v599) {
v598 += v598.length ? "o" : "M";
}
var v600 = new RegExp(p799, "g");
p798 = p798.replace(v600, v598);
}
});
return p798;
})(p796);
vFindPlayerBySID4.chatCountdown = config.chatCountdown;
}
} else {}
}
function updateMinimap(p800) {
minimapData = p800;
}
function showText(p801, p802, p803, p804, p805) {
if (getEl("healAnim").checked) {
textManager.stack.push({
x: p801,
y: p802,
value: p803
});
}
}
let bots = [];
let ranLocation = {
x: UTILS.randInt(35, 14365),
y: UTILS.randInt(35, 14365)
};
setInterval(() => {
ranLocation = {
x: UTILS.randInt(35, 14365),
y: UTILS.randInt(35, 14365)
};
}, 60000);
class Bot {
constructor(p806, p807, p808, p809) {
this.millPlace = true;
this.id = p806;
this.sid = p807;
this.team = null;
this.skinIndex = 0;
this.tailIndex = 0;
this.hitTime = 0;
this.iconIndex = 0;
this.enemy = [];
this.near = [];
this.dist2 = 0;
this.aim2 = 0;
this.tick = 0;
this.itemCounts = {};
this.latestSkin = 0;
this.latestTail = 0;
this.points = 0;
this.tails = {};
for (let v601 = 0; v601 < p809.length; ++v601) {
if (p809[v601].price <= 0) {
this.tails[p809[v601].id] = 1;
}
}
this.skins = {};
for (let v602 = 0; v602 < p808.length; ++v602) {
if (p808[v602].price <= 0) {
this.skins[p808[v602].id] = 1;
}
}
this.spawn = function (p810) {
this.upgraded = 0;
this.enemy = [];
this.near = [];
this.active = true;
this.alive = true;
this.lockMove = false;
this.lockDir = false;
this.minimapCounter = 0;
this.chatCountdown = 0;
this.shameCount = 0;
this.shameTimer = 0;
this.sentTo = {};
this.gathering = 0;
this.autoGather = 0;
this.animTime = 0;
this.animSpeed = 0;
this.mouseState = 0;
this.buildIndex = -1;
this.weaponIndex = 0;
this.dmgOverTime = {};
this.noMovTimer = 0;
this.maxXP = 300;
this.XP = 0;
this.age = 1;
this.kills = 0;
this.upgrAge = 2;
this.upgradePoints = 0;
this.x = 0;
this.y = 0;
this.zIndex = 0;
this.xVel = 0;
this.yVel = 0;
this.slowMult = 1;
this.dir = 0;
this.nDir = 0;
this.dirPlus = 0;
this.targetDir = 0;
this.targetAngle = 0;
this.maxHealth = 100;
this.health = this.maxHealth;
this.oldHealth = this.maxHealth;
this.scale = config.playerScale;
this.speed = config.playerSpeed;
this.resetMoveDir();
this.resetResources(p810);
this.items = [0, 3, 6, 10];
this.weapons = [0];
this.shootCount = 0;
this.weaponXP = [];
this.isBot = false;
this.reloads = {
0: 0,
1: 0,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
10: 0,
11: 0,
12: 0,
13: 0,
14: 0,
15: 0,
53: 0
};
this.timeZinceZpawn = 0;
this.whyDie = "";
this.clearRadius = false;
this.circlee = 0;
};
this.resetMoveDir = function () {
this.moveDir = undefined;
};
this.resetResources = function (p811) {
for (let v603 = 0; v603 < config.resourceTypes.length; ++v603) {
this[config.resourceTypes[v603]] = p811 ? 100 : 0;
}
};
this.setData = function (p812) {
this.id = p812[0];
this.sid = p812[1];
this.name = p812[2];
this.x = p812[3];
this.y = p812[4];
this.dir = p812[5];
this.health = p812[6];
this.maxHealth = p812[7];
this.scale = p812[8];
this.skinColor = p812[9];
};
this.judgeShame = function () {
if (this.oldHealth < this.health) {
if (this.hitTime) {
let v604 = this.tick - this.hitTime;
this.hitTime = 0;
if (v604 < 2) {
this.lastshamecount = this.shameCount;
this.shameCount++;
} else {
this.lastshamecount = this.shameCount;
this.shameCount = Math.max(0, this.shameCount - 2);
}
}
} else if (this.oldHealth > this.health) {
this.hitTime = this.tick;
}
};
this.manageReloadaa = function () {
if (this.shooting[53]) {
this.shooting[53] = 0;
this.reloads[53] = 2500 - 1000 / 9;
} else if (this.reloads[53] > 0) {
this.reloads[53] = Math.max(0, this.reloads[53] - 1000 / 9);
}
if (this.gathering || this.shooting[1]) {
if (this.gathering) {
this.gathering = 0;
this.reloads[this.gatherIndex] = items.weapons[this.gatherIndex].speed * (this.skinIndex == 20 ? 0.78 : 1);
this.attacked = true;
}
if (this.shooting[1]) {
this.shooting[1] = 0;
this.reloads[this.shootIndex] = items.weapons[this.shootIndex].speed * (this.skinIndex == 20 ? 0.78 : 1);
this.attacked = true;
}
} else {
this.attacked = false;
if (this.buildIndex < 0) {
if (this.reloads[this.weaponIndex] > 0) {
this.reloads[this.weaponIndex] = Math.max(0, this.reloads[this.weaponIndex] - game.tickRate);
}
}
}
};
this.closeSockets = function (p813) {
p813.close();
};
this.whyDieChat = function (p814, p815) {
p814.sendWS("6", "why die XDDD " + p815);
};
}
}
;
class BotObject {
constructor(p816) {
this.sid = p816;
this.init = function (p817, p818, p819, p820, p821, p822, p823) {
p822 = p822 || {};
this.active = true;
this.x = p817;
this.y = p818;
this.scale = p820;
this.owner = p823;
this.id = p822.id;
this.dmg = p822.dmg;
this.trap = p822.trap;
this.teleport = p822.teleport;
this.isItem = this.id != undefined;
};
}
}
;
class BotObjManager {
constructor(p824, p825) {
this.disableObj = function (p826) {
p826.active = false;
if (config.anotherVisual) {} else {
p826.alive = false;
}
};
let v605;
this.add = function (p827, p828, p829, p830, p831, p832, p833, p834, p835) {
v605 = p825(p827);
if (!v605) {
v605 = p824.find(p836 => !p836.active);
if (!v605) {
v605 = new BotObject(p827);
p824.push(v605);
}
}
if (p834) {
v605.sid = p827;
}
v605.init(p828, p829, p830, p831, p832, p833, p835);
};
this.disableBySid = function (p837) {
let vP825 = p825(p837);
if (vP825) {
this.disableObj(vP825);
}
};
this.removeAllItems = function (p838, p839) {
p824.filter(p840 => p840.active && p840.owner && p840.owner.sid == p838).forEach(p841 => this.disableObj(p841));
};
}
}
;
let botz = [];
function botSpawn(p842) {
let v606;
console.log(WS);
let v607 = WS.url.split("wss://")[1].split("?")[0];
v606 = p842 && new WebSocket("wss://" + v607 + "?token=re:" + encodeURIComponent(p842));
let v608 = new Map();
botSkts.push([v608]);
botz.push([v606]);
let v609;
let v610 = [];
let v611 = [];
let v612 = {
x: 0,
y: 0,
inGame: false,
closeSocket: false,
whyDie: ""
};
let v613 = {
x: 0,
y: 0
};
let v614 = 0;
let v615 = new BotObjManager(v610, function (p843) {
return findSID(v610, p843);
});
v606.binaryType = "arraybuffer";
v606.first = true;
v606.sendWS = function (p844) {
let v616 = Array.prototype.slice.call(arguments, 1);
let v617 = window.msgpack.encode([p844, v616]);
v606.send(v617);
};
v606.spawn = function () {
v606.sendWS("M", {
name: "unknown1l",
moofoll: 1,
skin: "__proto__"
});
};
v606.sendUpgrade = function (p845) {
v606.sendWS("H", p845);
};
v606.place = function (p846, p847) {
try {
let v618 = items.list[v608.items[p846]];
if (v608.itemCounts[v618.group.id] == undefined ? true : v608.itemCounts[v618.group.id] < (config.isSandbox ? 296 : v618.group.limit ? v618.group.limit : 296)) {
v606.sendWS("G", v608.items[p846]);
v606.sendWS("d", 1, p847);
v606.sendWS("G", v608.weaponIndex, true);
}
} catch (_0x500fa2) {}
};
v606.buye = function (p848, p849) {
let v619 = 0;
if (v608.alive && v608.inGame) {
if (p849 == 0) {
if (v608.skins[p848]) {
if (v608.latestSkin != p848) {
v606.sendWS("c", 0, p848, 0);
}
} else {
let vFindID5 = findID(hats, p848);
if (vFindID5) {
if (v608.points >= vFindID5.price) {
v606.sendWS("c", 1, p848, 0);
v606.sendWS("c", 0, p848, 0);
} else if (v608.latestSkin != v619) {
v606.sendWS("c", 0, v619, 0);
}
} else if (v608.latestSkin != v619) {
v606.sendWS("c", 0, v619, 0);
}
}
} else if (p849 == 1) {
if (v608.tails[p848]) {
if (v608.latestTail != p848) {
v606.sendWS("c", 0, p848, 1);
}
} else {
let vFindID6 = findID(accessories, p848);
if (vFindID6) {
if (v608.points >= vFindID6.price) {
v606.sendWS("c", 1, p848, 1);
v606.sendWS("c", 0, p848, 1);
} else if (v608.latestTail != 0) {
v606.sendWS("c", 0, 0, 1);
}
} else if (v608.latestTail != 0) {
v606.sendWS("c", 0, 0, 1);
}
}
}
}
};
v606.fastGear = function () {
if (v608.y2 >= config.mapScale / 2 - config.riverWidth / 2 && v608.y2 <= config.mapScale / 2 + config.riverWidth / 2) {
v606.buye(31, 0);
} else if (v608.moveDir == undefined) {
v606.buye(22, 0);
} else if (v608.y2 <= config.snowBiomeTop) {
v606.buye(15, 0);
} else {
v606.buye(12, 0);
}
};
v606.selectWeapon = function (p850) {
packet("G", p850, 1);
};
function f45(p851, p852) {
try {
return Math.atan2((p852.y2 || p852.y) - (p851.y2 || p851.y), (p852.x2 || p852.x) - (p851.x2 || p851.x));
} catch (_0x2209f6) {
return 0;
}
}
v606.heal = function () {
if (v608.health < 100) {
v606.place(0, 0);
}
};
function f46(p853, p854) {
try {
return Math.hypot((p854.y2 || p854.y) - (p853.y2 || p853.y), (p854.x2 || p854.x) - (p853.x2 || p853.x));
} catch (_0x18ce1c) {
return Infinity;
}
}
let v620 = "no";
v606.zync = function (p855) {
if (!v608.millPlace) {
v620 = "yeah";
v606.place(5, f45(v608, p855));
let v621 = {
x: v608.x + Math.cos(f45(p855, v608) - Math.PI) * 80,
y: v608.y + Math.sin(f45(p855, v608) - Math.PI) * 80,
x2: v608.x + Math.cos(f45(p855, v608) - Math.PI) * 80,
y2: v608.y + Math.sin(f45(p855, v608) - Math.PI) * 80
};
function f47(p856, p857, p858, p859) {
let v622 = Math.sqrt(Math.pow(p858 - p856, 2) + Math.pow(p859 - p857, 2));
return v622;
}
function f48() {
v606.sendWS("6", f47(v621.x, v621.y, v608.x, v608.y) + "");
v606.sendWS("D", f45(p855, v608) - Math.PI);
}
let vSetInterval3 = setInterval(() => {
v606.sendWS("G", v608.weapons[1], true);
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
setTimeout(() => {
v606.sendWS("G", v608.weapons[0], true);
}, 2000);
v606.buye(53, 0);
if (f47(v621.x, v621.y, v608.x, v608.y) > 5) {
v606.sendWS("f", f45(v608, v621));
} else {
v606.sendWS("6", f47(v621.x, v621.y, v608.x, v608.y) + "");
v620 = "no";
v606.sendWS("f", undefined);
f48();
clearInterval(vSetInterval3);
}
}, 150);
setTimeout(() => {
v620 = "no";
clearInterval(vSetInterval3);
}, 500);
}
};
v606.onmessage = function (p860) {
let v623 = new Uint8Array(p860.data);
let v624 = window.msgpack.decode(v623);
let v625 = v624[0];
v623 = v624[1];
if (v625 == "io-init") {
v606.spawn();
}
if (v625 == "1") {
v609 = v623[0];
console.log(v609);
}
if (v625 == "D") {
if (v623[1]) {
v608 = new Bot(v623[0][0], v623[0][1], hats, accessories);
v608.setData(v623[0]);
v608.inGame = true;
v608.alive = true;
v608.x2 = undefined;
v608.y2 = undefined;
v608.spawn(1);
v608.oldHealth = 100;
v608.health = 100;
v608.showName = "YEAHHH";
v613 = {
x: v623[0][3],
y: v623[0][4]
};
v612.inGame = true;
if (v606.first) {
v606.first = false;
bots.push(v612);
}
}
}
if (v625 == "P") {
v606.spawn();
v608.inGame = false;
v612.inGame = false;
}
if (v625 == "f") {
let v626 = v623[0];
v608.tick++;
v608.enemy = [];
v608.near = [];
v606.showName = "YEAHHH";
v611 = [];
for (let v627 = 0; v627 < v626.length;) {
if (v626[v627] == v608.sid) {
v608.x2 = v626[v627 + 1];
v608.y2 = v626[v627 + 2];
v608.d2 = v626[v627 + 3];
v608.buildIndex = v626[v627 + 4];
v608.weaponIndex = v626[v627 + 5];
v608.weaponVariant = v626[v627 + 6];
v608.team = v626[v627 + 7];
v608.isLeader = v626[v627 + 8];
v608.skinIndex = v626[v627 + 9];
v608.tailIndex = v626[v627 + 10];
v608.iconIndex = v626[v627 + 11];
v608.zIndex = v626[v627 + 12];
v608.visible = true;
v612.x2 = v608.x2;
v612.y2 = v608.y2;
}
v627 += 13;
}
for (let v628 = 0; v628 < v626.length;) {
tmpObj = findPlayerBySID(v626[v628]);
if (tmpObj) {
if (!tmpObj.isTeam(v608)) {
enemy.push(tmpObj);
if (tmpObj.dist2 <= items.weapons[tmpObj.primaryIndex == undefined ? 5 : tmpObj.primaryIndex].range + v608.scale * 2) {
nears.push(tmpObj);
}
}
}
v628 += 13;
}
if (enemy.length) {
v608.near = enemy.sort(function (p861, p862) {
return p861.dist2 - p862.dist2;
})[0];
}
if (v614 == 1) {
v606.sendWS("K", 1);
v614 = 0;
}
if (v612.closeSocket) {
v608.closeSockets(v606);
}
if (v612.whyDie != "") {
v608.whyDieChat(v606, v612.whyDie);
v612.whyDie = "";
}
if (v608.alive) {
if (player.team) {
if (v608.team != player.team && v608.tick % 9 === 0) {
if (v608.team) {
v606.sendWS("N");
}
v606.sendWS("b", player.team);
}
}
let v629 = items.list[v608.items[3]];
let v630 = v608.itemCounts[v629.group.id];
if ((v630 != undefined ? v630 : 0) < 201 && v608.millPlace) {
if (v608.inGame) {
v606.sendWS("D", v608.moveDir);
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
if (UTILS.getDist(v613, v608, 0, 2) > 90) {
let v631 = UTILS.getDirect(v613, v608, 0, 2);
v606.place(3, v631 + 7.7);
v606.place(3, v631 - 7.7);
v606.place(3, v631);
v613 = {
x: v608.x2,
y: v608.y2
};
}
if (v608.tick % 90 === 0) {
let v632 = Math.random() * Math.PI * 2;
v608.moveDir = v632;
v606.sendWS("f", v608.moveDir);
}
}
v606.fastGear();
} else if ((v630 != undefined ? v630 : 0) > 296 && v608.millPlace) {
v608.millPlace = false;
v606.fastGear();
} else if (v608.inGame) {
if (v610.length > 0) {
let v633 = v610.filter(p863 => p863.active && p863.isItem && UTILS.getDist(p863, player, 0, 2) <= 600);
if (getEl("mode").value == "fuckemup") {
v606.selectWeapon(v608.weapons[1]);
let v634 = UTILS.getDist(v633[0], v608, 0, 2);
let v635 = UTILS.getDirect(v633[0], v608, 0, 2);
v611 = v610.filter(p864 => p864.active && (findSID(v633, p864.sid) ? true : !p864.trap || player.sid != p864.owner.sid && !player.findAllianceBySid(p864.owner.sid)) && p864.isItem && UTILS.getDist(p864, v608, 0, 2) <= items.weapons[v608.weaponIndex].range + p864.scale + 10).sort(function (p865, p866) {
return UTILS.getDist(p865, v608, 0, 2) - UTILS.getDist(p866, v608, 0, 2);
})[0];
if (v611) {
let v636 = UTILS.getDist(v633[0], v611, 0, 0);
if (v634 - v636 > 0) {
if (findSID(v633, v611.sid) ? true : v611.dmg || v611.trap) {
if (v608.moveDir != undefined) {
v608.moveDir = undefined;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
}
} else {
v608.moveDir = v635;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
}
if (v608.nDir != UTILS.getDirect(v611, v608, 0, 2)) {
v608.nDir = UTILS.getDirect(v611, v608, 0, 2);
v606.sendWS("D", v608.nDir);
}
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
v606.buye(40, 0);
} else {
v608.moveDir = v635;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
v606.fastGear();
}
} else {
v608.moveDir = v635;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
v606.fastGear();
}
}
}
if (v610.length > 0) {
if (getEl("mode").value == "flex") {
const v637 = v608.sid * (Math.PI * 2 / v608.sid);
const v638 = Math.cos(Date.now() * 0.01) * 300 + player.x;
const v639 = Math.sin(Date.now() * 0.01) * 300 + player.x;
v606.sendWS("f", Math.atan2(v639 - v608.y, v638 - v608.x));
const v640 = Math.hypot(v638 - v608.x, v639 - v608.y);
if (v640 > 22) {
return;
}
}
}
if (v610.length > 0) {
v611 = v610.filter(p867 => p867.active && p867.isItem && UTILS.getDist(p867, v608, 0, 2) <= items.weapons[v608.weaponIndex].range).sort(function (p868, p869) {
return UTILS.getDist(p868, v608, 0, 2) - UTILS.getDist(p869, v608, 0, 2);
})[0];
if (v611) {
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
if (v608.nDir != UTILS.getDirect(v611, v608, 0, 2)) {
v608.nDir = UTILS.getDirect(v611, v608, 0, 2);
v606.sendWS("D", v608.nDir);
}
v606.buye(40, 0);
v606.buye(11, 1);
} else {
v606.fastGear();
v606.buye(11, 1);
}
v606.buye(11, 1);
if (breakObjects.length > 0 && getEl("mode").value == "clear") {
v606.selectWeapon(v608.weapons[1]);
let v641 = UTILS.getDist(breakObjects[0], v608, 0, 2);
let v642 = UTILS.getDirect(breakObjects[0], v608, 0, 2);
v611 = v610.filter(p870 => p870.active && (findSID(breakObjects, p870.sid) ? true : !p870.trap || player.sid != p870.owner.sid && !player.findAllianceBySid(p870.owner.sid)) && p870.isItem && UTILS.getDist(p870, v608, 0, 2) <= items.weapons[v608.weaponIndex].range + p870.scale).sort(function (p871, p872) {
return UTILS.getDist(p871, v608, 0, 2) - UTILS.getDist(p872, v608, 0, 2);
})[0];
if (v611) {
let v643 = UTILS.getDist(breakObjects[0], v611, 0, 0);
if (v641 - v643 > 0) {
if (findSID(breakObjects, v611.sid) ? true : v611.dmg || v611.trap) {
if (v608.moveDir != undefined) {
v608.moveDir = undefined;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
}
} else {
v608.moveDir = v642;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
}
if (v608.nDir != UTILS.getDirect(v611, v608, 0, 2)) {
v608.nDir = UTILS.getDirect(v611, v608, 0, 2);
v606.sendWS("D", v608.nDir);
}
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
v606.buye(40, 0);
v606.fastGear();
} else {
v608.moveDir = v642;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
v606.fastGear();
}
} else {
v608.moveDir = v642;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
v606.fastGear();
}
if (v641 > 300) {
if (UTILS.getDist(v613, v608, 0, 2) > 90) {
let v644 = UTILS.getDirect(v613, v608, 0, 2);
v606.place(3, v644 + 7.7);
v606.place(3, v644 - 7.7);
v606.place(3, v644);
v613 = {
x: v608.x2,
y: v608.y2
};
}
}
}
}
if (v610.length > 0 && getEl("mode").value == "zync") {
let v645 = v610.filter(p873 => p873.active && p873.isItem && UTILS.getDist(p873, player, 0, 2) <= items.weapons[v608.weaponIndex].range + p873.scale);
if (!v645.length) {
if (v620 == "no") {
v606.sendWS("D", UTILS.getDirect(player, v608, 0, 2));
}
v606.sendWS("f", f45(player, v608) + Math.PI);
}
if (v645.length) {
let v646 = UTILS.getDist(v645[0], v608, 0, 2);
let v647 = UTILS.getDirect(v645[0], v608, 0, 2);
v611 = v610.filter(p874 => p874.active && (findSID(v645, p874.sid) ? true : !p874.trap || player.sid != p874.owner.sid && !player.findAllianceBySid(p874.owner.sid)) && p874.isItem && UTILS.getDist(p874, v608, 0, 2) <= items.weapons[v608.weaponIndex].range + p874.scale).sort(function (p875, p876) {
return UTILS.getDist(p875, v608, 0, 2) - UTILS.getDist(p876, v608, 0, 2);
})[0];
if (v611) {
let v648 = UTILS.getDist(v645[0], v611, 0, 0);
if (v646 - v648 > 0) {
if (findSID(v645, v611.sid) ? true : v611.dmg || v611.trap) {
if (v608.moveDir != undefined) {
v608.moveDir = undefined;
v606.sendWS("f", v608.moveDir);
v606.sendWS("D", v608.nDir);
}
} else {
v606.sendWS("D", v608.nDir);
}
if (v608.nDir != UTILS.getDirect(v611, v608, 0, 2)) {
v608.nDir = UTILS.getDirect(v611, v608, 0, 2);
v606.sendWS("D", v608.nDir);
}
if (v614 == 0) {
v606.sendWS("K", 1);
v614 = 1;
}
v606.buye(40, 0);
v606.fastGear();
} else {
if (v620 == "no") {
v606.sendWS("D", UTILS.getDirect(v611, v608, 0, 2));
}
if (f46(player, v608) <= 110) {
v606.sendWS("f", undefined);
} else {
v606.sendWS("f", f45(player, v608) + Math.PI);
}
}
} else if (v645.length) {
if (v620 == "no") {
v606.sendWS("D", UTILS.getDirect(v645[0], v608, 0, 2));
}
if (f46(player, v608) <= 110) {
v606.sendWS("f", undefined);
} else {
v606.sendWS("f", f45(player, v608) + Math.PI);
}
} else {
if (v620 == "no") {
v606.sendWS("D", UTILS.getDirect(player, v608, 0, 2));
}
if (f46(player, v608) <= 110) {
v606.sendWS("f", undefined);
} else {
v606.sendWS("f", f45(player, v608) + Math.PI);
}
}
}
}
}
}
}
if (v625 == "H") {
let v649 = v623[0];
for (let v650 = 0; v650 < v649.length;) {
v615.add(v649[v650], v649[v650 + 1], v649[v650 + 2], v649[v650 + 3], v649[v650 + 4], v649[v650 + 5], items.list[v649[v650 + 6]], true, v649[v650 + 7] >= 0 ? {
sid: v649[v650 + 7]
} : null);
v650 += 8;
}
}
if (v625 == "N") {
let v651 = v623[0];
let v652 = v623[1];
if (v608) {
v608[v651] = v652;
}
}
if (v625 == "O") {
if (v623[0] == v608.sid) {
v608.oldHealth = v608.health;
v608.health = v623[1];
v608.judgeShame();
if (v608.oldHealth > v608.health) {
if (v608.shameCount < 5) {
for (let v653 = 0; v653 < 2; v653++) {
v606.place(0, v608.nDir);
}
} else {
setTimeout(() => {
for (let v654 = 0; v654 < 2; v654++) {
v606.place(0, v608.nDir);
}
}, 95);
}
}
}
}
if (v625 == "Q") {
let v655 = v623[0];
v615.disableBySid(v655);
}
if (v625 == "R") {
let v656 = v623[0];
if (v608.alive) {
v615.removeAllItems(v656);
}
}
if (v625 == "S") {
let v657 = v623[0];
let v658 = v623[1];
if (v608) {
v608.itemCounts[v657] = v658;
}
}
if (v625 == "U") {
if (v623[0] > 0) {
if (getEl("setup").value == "dm") {
if (v608.upgraded == 0) {
v606.sendUpgrade(7);
} else if (v608.upgraded == 1) {
v606.sendUpgrade(17);
} else if (v608.upgraded == 2) {
v606.sendUpgrade(31);
} else if (v608.upgraded == 3) {
v606.sendUpgrade(23);
} else if (v608.upgraded == 4) {
v606.sendUpgrade(9);
} else if (v608.upgraded == 5) {
v606.sendUpgrade(34);
} else if (v608.upgraded == 6) {
v606.sendUpgrade(12);
} else if (v608.upgraded == 7) {
v606.sendUpgrade(15);
}
} else if (getEl("setup").value == "dr") {
if (v608.upgraded == 0) {
v606.sendUpgrade(7);
} else if (v608.upgraded == 1) {
v606.sendUpgrade(17);
} else if (v608.upgraded == 2) {
v606.sendUpgrade(31);
} else if (v608.upgraded == 3) {
v606.sendUpgrade(23);
} else if (v608.upgraded == 4) {
v606.sendUpgrade(9);
} else if (v608.upgraded == 5) {
v606.sendUpgrade(34);
} else if (v608.upgraded == 6) {
v606.sendUpgrade(12);
} else if (v608.upgraded == 7) {
v606.sendUpgrade(13);
}
} else if (getEl("setup").value == "kh") {
if (v608.upgraded == 0) {
v606.sendUpgrade(3);
} else if (v608.upgraded == 1) {
v606.sendUpgrade(17);
} else if (v608.upgraded == 2) {
v606.sendUpgrade(31);
} else if (v608.upgraded == 3) {
v606.sendUpgrade(27);
} else if (v608.upgraded == 4) {
v606.sendUpgrade(10);
} else if (v608.upgraded == 5) {
v606.sendUpgrade(34);
} else if (v608.upgraded == 6) {
v606.sendUpgrade(4);
} else if (v608.upgraded == 7) {
v606.sendUpgrade(25);
}
} else if (getEl("setup").value == "zd") {
if (v608.upgraded == 0) {
v606.sendUpgrade(3);
} else if (v608.upgraded == 1) {
v606.sendUpgrade(17);
} else if (v608.upgraded == 2) {
v606.sendUpgrade(31);
} else if (v608.upgraded == 3) {
v606.sendUpgrade(27);
} else if (v608.upgraded == 4) {
v606.sendUpgrade(9);
} else if (v608.upgraded == 5) {
v606.sendUpgrade(34);
} else if (v608.upgraded == 6) {
v606.sendUpgrade(12);
} else if (v608.upgraded == 7) {
v606.sendUpgrade(15);
}
}
v608.upgraded++;
}
}
if (v625 == "V") {
let v659 = v623[0];
let v660 = v623[1];
if (v659) {
if (v660) {
v608.weapons = v659;
} else {
v608.items = v659;
}
}
}
if (v625 == "5") {
let v661 = v623[0];
let v662 = v623[1];
let v663 = v623[2];
if (v663) {
if (!v661) {
v608.tails[v662] = 1;
} else {
v608.latestTail = v662;
}
} else if (!v661) {
v608.skins[v662] = 1;
} else {
v608.latestSkin = v662;
}
}
if (v625 == "6") {
let v664 = v623[0];
let v665 = v623[1] + "";
if (v664 == player.sid && v665.includes("syncon")) {
v606.zync(v608.near);
}
}
};
v606.onclose = function () {
v608.inGame = false;
v612.inGame = false;
};
}
let spikes = {
near: [],
aim: undefined,
nearSpike: false,
nearBreak: false
};
let trapData = {
sid: undefined,
hitCount: 0
};
let tracker = {
draw3: {
active: false,
x: 0,
y: 0,
scale: 0
},
draw2: {
active: false,
x: 0,
y: 0,
scale: 0
},
moveDir: undefined,
lastPos: {
x: 0,
y: 0
}
};
function renderLeaf(p877, p878, p879, p880, p881) {
let v666 = p877 + p879 * Math.cos(p880);
let v667 = p878 + p879 * Math.sin(p880);
let v668 = p879 * 0.4;
p881.moveTo(p877, p878);
p881.beginPath();
p881.quadraticCurveTo((p877 + v666) / 2 + v668 * Math.cos(p880 + Math.PI / 2), (p878 + v667) / 2 + v668 * Math.sin(p880 + Math.PI / 2), v666, v667);
p881.quadraticCurveTo((p877 + v666) / 2 - v668 * Math.cos(p880 + Math.PI / 2), (p878 + v667) / 2 - v668 * Math.sin(p880 + Math.PI / 2), p877, p878);
p881.closePath();
p881.fill();
p881.stroke();
}
function renderCircle(p882, p883, p884, p885, p886, p887) {
p885 = p885 || mainContext;
p885.beginPath();
p885.arc(p882, p883, p884, 0, Math.PI * 2);
if (!p887) {
p885.fill();
}
if (!p886) {
p885.stroke();
}
}
function renderHealthCircle(p888, p889, p890, p891, p892, p893) {
p891 = p891 || mainContext;
p891.beginPath();
p891.arc(p888, p889, p890, 0, Math.PI * 2);
if (!p893) {
p891.fill();
}
if (!p892) {
p891.stroke();
}
}
function renderStar(p894, p895, p896, p897) {
let v669 = Math.PI / 2 * 3;
let v670;
let v671;
let v672 = Math.PI / p895;
p894.beginPath();
p894.moveTo(0, -p896);
for (let v673 = 0; v673 < p895; v673++) {
v670 = Math.cos(v669) * p896;
v671 = Math.sin(v669) * p896;
p894.lineTo(v670, v671);
v669 += v672;
v670 = Math.cos(v669) * p897;
v671 = Math.sin(v669) * p897;
p894.lineTo(v670, v671);
v669 += v672;
}
p894.lineTo(0, -p896);
p894.closePath();
}
function renderHealthStar(p898, p899, p900, p901) {
let v674 = Math.PI / 2 * 3;
let v675;
let v676;
let v677 = Math.PI / p899;
p898.beginPath();
p898.moveTo(0, -p900);
for (let v678 = 0; v678 < p899; v678++) {
v675 = Math.cos(v674) * p900;
v676 = Math.sin(v674) * p900;
p898.lineTo(v675, v676);
v674 += v677;
v675 = Math.cos(v674) * p901;
v676 = Math.sin(v674) * p901;
p898.lineTo(v675, v676);
v674 += v677;
}
p898.lineTo(0, -p900);
p898.closePath();
}
function renderRect(p902, p903, p904, p905, p906, p907, p908) {
if (!p908) {
p906.fillRect(p902 - p904 / 2, p903 - p905 / 2, p904, p905);
}
if (!p907) {
p906.strokeRect(p902 - p904 / 2, p903 - p905 / 2, p904, p905);
}
}
function renderHealthRect(p909, p910, p911, p912, p913, p914, p915) {
if (!p915) {
p913.fillRect(p909 - p911 / 2, p910 - p912 / 2, p911, p912);
}
if (!p914) {
p913.strokeRect(p909 - p911 / 2, p910 - p912 / 2, p911, p912);
}
}
function renderRectCircle(p916, p917, p918, p919, p920, p921, p922, p923) {
p921.save();
p921.translate(p916, p917);
p920 = Math.ceil(p920 / 2);
for (let v679 = 0; v679 < p920; v679++) {
renderRect(0, 0, p918 * 2, p919, p921, p922, p923);
p921.rotate(Math.PI / p920);
}
p921.restore();
}
function renderBlob(p924, p925, p926, p927) {
let v680 = Math.PI / 2 * 3;
let v681;
let v682;
let v683 = Math.PI / p925;
let v684;
p924.beginPath();
p924.moveTo(0, -p927);
for (let v685 = 0; v685 < p925; v685++) {
v684 = UTILS.randInt(p926 + 0.9, p926 * 1.2);
p924.quadraticCurveTo(Math.cos(v680 + v683) * v684, Math.sin(v680 + v683) * v684, Math.cos(v680 + v683 * 2) * p927, Math.sin(v680 + v683 * 2) * p927);
v680 += v683 * 2;
}
p924.lineTo(0, -p927);
p924.closePath();
}
function renderTriangle(p928, p929) {
p929 = p929 || mainContext;
let v686 = p928 * (Math.sqrt(3) / 2);
p929.beginPath();
p929.moveTo(0, -v686 / 2);
p929.lineTo(-p928 / 2, v686 / 2);
p929.lineTo(p928 / 2, v686 / 2);
p929.lineTo(0, -v686 / 2);
p929.fill();
p929.closePath();
}
function prepareMenuBackground() {}
const speed = 1;
function renderDeadPlayers(p930, p931) {
mainContext.fillStyle = "#91b2db";
const v687 = Date.now();
deadPlayers.filter(p932 => p932.active).forEach(p933 => {
if (!p933.startTime) {
p933.startTime = v687;
p933.angle = 0;
p933.radius = 0.1;
}
const v688 = v687 - p933.startTime;
const v689 = 1;
p933.alpha = Math.max(0, v689 - v688 / 3000);
p933.animate(delta);
mainContext.globalAlpha = p933.alpha;
mainContext.strokeStyle = outlineColor;
mainContext.save();
mainContext.translate(p933.x - p930, p933.y - p931);
p933.radius -= 0.001;
p933.angle += 10;
const v690 = 1;
const v691 = p933.radius * Math.cos(p933.angle);
const v692 = p933.radius * Math.sin(p933.angle);
p933.x += v691 * v690;
p933.y += v692 * v690;
mainContext.rotate(p933.angle);
renderDeadPlayer(p933, mainContext);
mainContext.restore();
mainContext.fillStyle = "#91b2db";
if (v688 >= 3000) {
p933.active = false;
p933.startTime = null;
}
});
}
function renderPlayers(p934, p935, p936) {
mainContext.globalAlpha = 1;
mainContext.fillStyle = "#91b2db";
for (var v693 = 0; v693 < players.length; ++v693) {
tmpObj = players[v693];
if (tmpObj.zIndex == p936) {
tmpObj.animate(delta);
if (tmpObj.visible) {
let vParseInt2 = parseInt(document.getElementById("playerShadowIntensity").value, 10);
tmpObj.skinRot += delta * 0.002;
tmpDir = !getEl("showDir").checked && !useWasd && tmpObj == player ? getEl("attackDir").checked ? getVisualDir() : getSafeDir() : tmpObj.dir || 0;
mainContext.save();
mainContext.translate(tmpObj.x - p934, tmpObj.y - p935);
mainContext.shadowColor = "rgba(0, 0, 0, 0.5)";
mainContext.shadowBlur = vParseInt2;
mainContext.shadowOffsetX = 0;
mainContext.shadowOffsetY = 0;
if (getEl("spinner").checked && tmpObj == player) {
mainContext.rotate(tmpDir + tmpObj.dt);
} else {
mainContext.rotate(tmpDir + tmpObj.dirPlus);
}
renderPlayer(tmpObj, mainContext);
mainContext.shadowColor = "none";
mainContext.shadowBlur = 0;
mainContext.restore();
}
}
}
}
function renderDeadPlayer(p937, p938) {
p938 = p938 || mainContext;
p938.lineWidth = outlineWidth;
p938.lineJoin = "miter";
let v694 = Math.PI / 4 * (items.weapons[p937.weaponIndex].armS || 1);
let v695 = p937.buildIndex < 0 ? items.weapons[p937.weaponIndex].hndS || 1 : 1;
let v696 = p937.buildIndex < 0 ? items.weapons[p937.weaponIndex].hndD || 1 : 1;
renderTail2(13, p938, p937);
if (p937.buildIndex < 0 && !items.weapons[p937.weaponIndex].aboveHand) {
renderTool(items.weapons[p937.weaponIndex], config.weaponVariants[p937.weaponVariant || 0].src || "", p937.scale, 0, p938);
if (items.weapons[p937.weaponIndex].projectile != undefined && !items.weapons[p937.weaponIndex].hideProjectile) {
renderProjectile(p937.scale, 0, items.projectiles[items.weapons[p937.weaponIndex].projectile], mainContext);
}
}
p938.fillStyle = "#ececec";
renderCircle(p937.scale * Math.cos(v694), p937.scale * Math.sin(v694), 14);
renderCircle(p937.scale * v696 * Math.cos(-v694 * v695), p937.scale * v696 * Math.sin(-v694 * v695), 14);
if (p937.buildIndex < 0 && items.weapons[p937.weaponIndex].aboveHand) {
renderTool(items.weapons[p937.weaponIndex], config.weaponVariants[p937.weaponVariant || 0].src || "", p937.scale, 0, p938);
if (items.weapons[p937.weaponIndex].projectile != undefined && !items.weapons[p937.weaponIndex].hideProjectile) {
renderProjectile(p937.scale, 0, items.projectiles[items.weapons[p937.weaponIndex].projectile], mainContext);
}
}
if (p937.buildIndex >= 0) {
var vGetItemSprite = getItemSprite(items.list[p937.buildIndex]);
p938.drawImage(vGetItemSprite, p937.scale - items.list[p937.buildIndex].holdOffset, -vGetItemSprite.width / 2);
}
renderCircle(0, 0, p937.scale, p938);
renderSkin2(48, p938, null, p937);
}
function renderPlayer(p939, p940) {
p940 = p940 || mainContext;
p940.lineWidth = outlineWidth;
p940.lineJoin = "miter";
let v697 = Math.PI / 4 * (items.weapons[p939.weaponIndex].armS || 1);
let v698 = p939.buildIndex < 0 ? items.weapons[p939.weaponIndex].hndS || 1 : 1;
let v699 = p939.buildIndex < 0 ? items.weapons[p939.weaponIndex].hndD || 1 : 1;
let v700 = p939 == player && p939.weapons[0] == 3 && p939.weapons[1] == 15;
if (p939.tailIndex > 0) {
renderTailTextureImage(p939.tailIndex, p940, p939);
}
if (p939.buildIndex < 0 && !items.weapons[p939.weaponIndex].aboveHand) {
renderTool(items.weapons[v700 ? 4 : p939.weaponIndex], config.weaponVariants[p939.weaponVariant].src, p939.scale, 0, p940);
if (items.weapons[p939.weaponIndex].projectile != undefined && !items.weapons[p939.weaponIndex].hideProjectile) {
renderProjectile(p939.scale, 0, items.projectiles[items.weapons[p939.weaponIndex].projectile], mainContext);
}
}
p940.fillStyle = config.skinColors[p939.skinColor];
renderCircle(p939.scale * Math.cos(v697), p939.scale * Math.sin(v697), 14);
renderCircle(p939.scale * v699 * Math.cos(-v697 * v698), p939.scale * v699 * Math.sin(-v697 * v698), 14);
if (p939.buildIndex < 0 && items.weapons[p939.weaponIndex].aboveHand) {
renderTool(items.weapons[p939.weaponIndex], config.weaponVariants[p939.weaponVariant].src, p939.scale, 0, p940);
if (items.weapons[p939.weaponIndex].projectile != undefined && !items.weapons[p939.weaponIndex].hideProjectile) {
renderProjectile(p939.scale, 0, items.projectiles[items.weapons[p939.weaponIndex].projectile], mainContext);
}
}
if (p939.buildIndex >= 0) {
var vGetItemSprite2 = getItemSprite(items.list[p939.buildIndex]);
p940.drawImage(vGetItemSprite2, p939.scale - items.list[p939.buildIndex].holdOffset, -vGetItemSprite2.width / 2);
}
renderCircle(0, 0, p939.scale, p940);
if (p939.skinIndex > 0) {
p940.rotate(Math.PI / 2);
renderTextureSkin(p939.skinIndex, p940, null, p939);
}
}
var skinSprites2 = {};
var skinPointers2 = {};
function renderSkin2(p941, p942, p943, p944) {
tmpSkin = skinSprites2[p941];
if (!tmpSkin) {
var v701 = new Image();
v701.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v701.src = "https://moomoo.io/img/hats/hat_" + p941 + ".png";
skinSprites2[p941] = v701;
tmpSkin = v701;
}
var v702 = p943 || skinPointers2[p941];
if (!v702) {
for (var v703 = 0; v703 < hats.length; ++v703) {
if (hats[v703].id == p941) {
v702 = hats[v703];
break;
}
}
skinPointers2[p941] = v702;
}
if (tmpSkin.isLoaded) {
p942.drawImage(tmpSkin, -v702.scale / 2, -v702.scale / 2, v702.scale, v702.scale);
}
if (!p943 && v702.topSprite) {
p942.save();
p942.rotate(p944.skinRot);
renderSkin2(p941 + "_top", p942, v702, p944);
p942.restore();
}
}
function renderTextureSkin(p945, p946, p947, p948) {
if (!(tmpSkin = skinSprites[p945 + (txt ? "lol" : 0)])) {
var v704 = new Image();
v704.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v704.src = setSkinTextureImage(p945, "hat", p945);
skinSprites[p945 + (txt ? "lol" : 0)] = v704;
tmpSkin = v704;
}
var v705 = p947 || skinPointers[p945];
if (!v705) {
for (var v706 = 0; v706 < hats.length; ++v706) {
if (hats[v706].id == p945) {
v705 = hats[v706];
break;
}
}
skinPointers[p945] = v705;
}
if (tmpSkin.isLoaded) {
p946.drawImage(tmpSkin, -v705.scale / 2, -v705.scale / 2, v705.scale, v705.scale);
}
if (!p947 && v705.topSprite) {
p946.save();
p946.rotate(p948.skinRot);
renderSkin(p945 + "_top", p946, v705, p948);
p946.restore();
}
}
var FlareZHat = {
6: "https://i.imgur.com/HjWADL7.png",
7: "http://i.imgur.com/wqG2CBb.png"
};
function setSkinTextureImage(p949, p950, p951) {
if (true) {
if (FlareZHat[p949] && p950 == "hat") {
return FlareZHat[p949];
} else if (p950 == "acc") {
return ".././img/accessories/access_" + p949 + ".png";
} else if (p950 == "hat") {
return ".././img/hats/hat_" + p949 + ".png";
} else {
return ".././img/weapons/" + p949 + ".png";
}
} else if (p950 == "acc") {
return ".././img/accessories/access_" + p949 + ".png";
} else if (p950 == "hat") {
return ".././img/hats/hat_" + p949 + ".png";
} else {
return ".././img/weapons/" + p949 + ".png";
}
}
let skinSprites = {};
let skinPointers = {};
let tmpSkin;
function renderSkin(p952, p953, p954, p955) {
tmpSkin = skinSprites[p952];
if (!tmpSkin) {
let v707 = new Image();
v707.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v707.src = "https://moomoo.io/img/hats/hat_" + p952 + ".png";
skinSprites[p952] = v707;
tmpSkin = v707;
}
let v708 = p954 || skinPointers[p952];
if (!v708) {
for (let v709 = 0; v709 < hats.length; ++v709) {
if (hats[v709].id == p952) {
v708 = hats[v709];
break;
}
}
skinPointers[p952] = v708;
}
if (tmpSkin.isLoaded) {
p953.drawImage(tmpSkin, -v708.scale / 2, -v708.scale / 2, v708.scale, v708.scale);
}
if (!p954 && v708.topSprite) {
p953.save();
p953.rotate(p955.skinRot);
renderSkin(p952 + "_top", p953, v708, p955);
p953.restore();
}
}
var FlareZAcc = {};
function setTailTextureImage(p956, p957, p958) {
if (true) {
if (FlareZAcc[p956] && p957 == "acc") {
return FlareZAcc[p956];
} else if (p957 == "acc") {
return ".././img/accessories/access_" + p956 + ".png";
} else if (p957 == "hat") {
return ".././img/hats/hat_" + p956 + ".png";
} else {
return ".././img/weapons/" + p956 + ".png";
}
} else if (p957 == "acc") {
return ".././img/accessories/access_" + p956 + ".png";
} else if (p957 == "hat") {
return ".././img/hats/hat_" + p956 + ".png";
} else {
return ".././img/weapons/" + p956 + ".png";
}
}
function renderTailTextureImage(p959, p960, p961) {
if (!(tmpSkin = accessSprites[p959 + (txt ? "lol" : 0)])) {
var v710 = new Image();
v710.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v710.src = setTailTextureImage(p959, "acc");
accessSprites[p959 + (txt ? "lol" : 0)] = v710;
tmpSkin = v710;
}
var v711 = accessPointers[p959];
if (!v711) {
for (var v712 = 0; v712 < accessories.length; ++v712) {
if (accessories[v712].id == p959) {
v711 = accessories[v712];
break;
}
}
accessPointers[p959] = v711;
}
if (tmpSkin.isLoaded) {
p960.save();
p960.translate(-20 - (v711.xOff || 0), 0);
if (v711.spin) {
p960.rotate(p961.skinRot);
}
p960.drawImage(tmpSkin, -(v711.scale / 2), -(v711.scale / 2), v711.scale, v711.scale);
p960.restore();
}
}
let accessSprites = {};
let accessPointers = {};
var txt = true;
function renderTail(p962, p963, p964) {
tmpSkin = accessSprites[p962];
if (!tmpSkin) {
let v713 = new Image();
v713.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v713.src = "https://moomoo.io/img/accessories/access_" + p962 + ".png";
accessSprites[p962] = v713;
tmpSkin = v713;
}
let v714 = accessPointers[p962];
if (!v714) {
for (let v715 = 0; v715 < accessories.length; ++v715) {
if (accessories[v715].id == p962) {
v714 = accessories[v715];
break;
}
}
accessPointers[p962] = v714;
}
if (tmpSkin.isLoaded) {
p963.save();
p963.translate(-20 - (v714.xOff || 0), 0);
if (v714.spin) {
p963.rotate(p964.skinRot);
}
p963.drawImage(tmpSkin, -(v714.scale / 2), -(v714.scale / 2), v714.scale, v714.scale);
p963.restore();
}
}
var accessSprites2 = {};
var accessPointers2 = {};
function renderTail2(p965, p966, p967) {
tmpSkin = accessSprites2[p965];
if (!tmpSkin) {
var v716 = new Image();
v716.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v716.src = "https://moomoo.io/img/accessories/access_" + p965 + ".png";
accessSprites2[p965] = v716;
tmpSkin = v716;
}
var v717 = accessPointers2[p965];
if (!v717) {
for (var v718 = 0; v718 < accessories.length; ++v718) {
if (accessories[v718].id == p965) {
v717 = accessories[v718];
break;
}
}
accessPointers2[p965] = v717;
}
if (tmpSkin.isLoaded) {
p966.save();
p966.translate(-20 - (v717.xOff || 0), 0);
if (v717.spin) {
p966.rotate(p967.skinRot);
}
p966.drawImage(tmpSkin, -(v717.scale / 2), -(v717.scale / 2), v717.scale, v717.scale);
p966.restore();
}
}
let toolSprites = {};
function renderTool(p968, p969, p970, p971, p972) {
let v719 = p968.src + (p969 || "");
let v720 = toolSprites[v719];
if (!v720) {
v720 = new Image();
v720.onload = function () {
this.isLoaded = true;
};
v720.src = "https://moomoo.io/img/weapons/" + v719 + ".png";
toolSprites[v719] = v720;
}
if (v720.isLoaded) {
p972.drawImage(v720, p970 + p968.xOff - p968.length / 2, p971 + p968.yOff - p968.width / 2, p968.length, p968.width);
}
}
function renderProjectiles(p973, p974, p975) {
for (let v721 = 0; v721 < projectiles.length; v721++) {
tmpObj = projectiles[v721];
if (tmpObj.active && tmpObj.layer == p973 && tmpObj.inWindow) {
tmpObj.update(delta);
if (tmpObj.active && isOnScreen(tmpObj.x - p974, tmpObj.y - p975, tmpObj.scale)) {
mainContext.save();
mainContext.translate(tmpObj.x - p974, tmpObj.y - p975);
mainContext.rotate(tmpObj.dir);
renderProjectile(0, 0, tmpObj, mainContext, 1);
mainContext.restore();
}
}
}
;
}
let projectileSprites = {};
function renderProjectile(p976, p977, p978, p979, p980) {
if (p978.src) {
let v722 = items.projectiles[p978.indx].src;
let v723 = projectileSprites[v722];
if (!v723) {
v723 = new Image();
v723.onload = function () {
this.isLoaded = true;
};
v723.src = "https://moomoo.io/img/weapons/" + v722 + ".png";
projectileSprites[v722] = v723;
}
if (v723.isLoaded) {
p979.drawImage(v723, p976 - p978.scale / 2, p977 - p978.scale / 2, p978.scale, p978.scale);
}
} else if (p978.indx == 1) {
p979.fillStyle = "#939393";
renderCircle(p976, p977, p978.scale, p979);
}
}
let aiSprites = {};
function renderAI(p981, p982) {
let v724 = p981.index;
let v725 = aiSprites[v724];
if (!v725) {
let v726 = new Image();
v726.onload = function () {
this.isLoaded = true;
this.onload = null;
};
v726.src = "https://moomoo.io/img/animals/" + p981.src + ".png";
v725 = v726;
aiSprites[v724] = v725;
}
if (v725.isLoaded) {
let v727 = p981.scale * 1.2 * (p981.spriteMlt || 1);
p982.drawImage(v725, -v727, -v727, v727 * 2, v727 * 2);
}
}
function renderWaterBodies(p983, p984, p985, p986) {
let v728 = config.riverWidth + p986;
let v729 = config.mapScale / 2 - p984 - v728 / 2;
if (v729 < maxScreenHeight && v729 + v728 > 0) {
p985.fillRect(0, v729, maxScreenWidth, v728);
}
}
let gameObjectSprites = {};
function getResSprite(p987) {
let v730 = p987.y >= config.mapScale - config.snowBiomeTop ? 2 : p987.y <= config.snowBiomeTop ? 1 : 0;
let v731 = p987.type + "_" + p987.scale + "_" + v730;
let v732 = gameObjectSprites[v731];
if (!v732) {
let v733 = 6;
let v734 = document.createElement("canvas");
v734.width = v734.height = p987.scale * 2.1 + outlineWidth;
let v735 = v734.getContext("2d");
v735.translate(v734.width / 2, v734.height / 2);
v735.rotate(UTILS.randFloat(0, Math.PI));
v735.strokeStyle = outlineColor;
v735.lineWidth = outlineWidth;
if (p987.type == 0) {
let v736;
let v737 = 8;
v735.globalAlpha = cdf(p987, player) <= 250 ? 0.5 : 0.5;
for (let v738 = 0; v738 < 2; ++v738) {
v736 = tmpObj.scale * (!v738 ? 1 : 0.5);
renderBlob(v735, v737, v736, v736 * 0.7);
v735.fillStyle = !v730 ? !v738 ? "#9ebf57" : "#b4db62" : !v738 ? "#e3f1f4" : "#fff";
v735.fill();
if (!v738) {
v735.stroke();
v735.globalAlpha = 1;
}
if (!v738) {} else {}
}
} else if (p987.type == 1) {
if (v730 == 2) {
v735.fillStyle = "#606060";
renderStar(v735, 6, p987.scale * 0.3, p987.scale * 0.71);
v735.fill();
v735.stroke();
v735.fillStyle = "#89a54c";
renderCircle(0, 0, p987.scale * 0.55, v735);
v735.fillStyle = "#a5c65b";
renderCircle(0, 0, p987.scale * 0.3, v735, true);
} else {
renderBlob(v735, 6, tmpObj.scale, tmpObj.scale * 0.7);
v735.fillStyle = v730 ? "#e3f1f4" : "#89a54c";
v735.fill();
v735.stroke();
v735.fillStyle = v730 ? "#6a64af" : "#c15555";
let v739;
let v740 = 4;
let v741 = Math.PI * 2 / v740;
for (let v742 = 0; v742 < v740; ++v742) {
v739 = UTILS.randInt(tmpObj.scale / 3.5, tmpObj.scale / 2.3);
renderCircle(v739 * Math.cos(v741 * v742), v739 * Math.sin(v741 * v742), UTILS.randInt(10, 12), v735);
}
}
} else if (p987.type == 2 || p987.type == 3) {
v735.fillStyle = p987.type == 2 ? v730 == 2 ? "#938d77" : "#939393" : "#e0c655";
renderStar(v735, 3, p987.scale, p987.scale);
v735.fill();
v735.stroke();
v735.fillStyle = p987.type == 2 ? v730 == 2 ? "#b2ab90" : "#bcbcbc" : "#ebdca3";
renderStar(v735, 3, p987.scale * 0.55, p987.scale * 0.65);
v735.fill();
}
v732 = v734;
gameObjectSprites[v731] = v732;
}
return v732;
}
let itemSprites = [];
function getItemSprite(p988, p989) {
let v743 = itemSprites[p988.id];
if (!v743 || p989) {
let v744 = !p989 ? 20 : 5;
let v745 = document.createElement("canvas");
let v746 = !p989 && p988.name == "windmill" ? items.list[4].scale : p988.scale;
v745.width = v745.height = v746 * 2.5 + outlineWidth + (items.list[p988.id].spritePadding || 0) + v744;
let v747 = v745.getContext("2d");
v747.translate(v745.width / 2, v745.height / 2);
v747.rotate(p989 ? 0 : Math.PI / 2);
v747.strokeStyle = outlineColor;
v747.lineWidth = outlineWidth * (p989 ? v745.width / 81 : 1);
if (!p989) {}
if (p988.name == "apple") {
v747.fillStyle = "#c15555";
renderCircle(0, 0, p988.scale, v747);
v747.fillStyle = "#89a54c";
let v748 = -(Math.PI / 2);
renderLeaf(p988.scale * Math.cos(v748), p988.scale * Math.sin(v748), 25, v748 + Math.PI / 2, v747);
} else if (p988.name == "cookie") {
v747.fillStyle = "#cca861";
renderCircle(0, 0, p988.scale, v747);
v747.fillStyle = "#937c4b";
let v749 = 4;
let v750 = Math.PI * 2 / v749;
let v751;
for (let v752 = 0; v752 < v749; ++v752) {
v751 = UTILS.randInt(p988.scale / 2.5, p988.scale / 1.7);
renderCircle(v751 * Math.cos(v750 * v752), v751 * Math.sin(v750 * v752), UTILS.randInt(4, 5), v747, true);
}
} else if (p988.name == "cheese") {
v747.fillStyle = "#f4f3ac";
renderCircle(0, 0, p988.scale, v747);
v747.fillStyle = "#c3c28b";
let v753 = 4;
let v754 = Math.PI * 2 / v753;
let v755;
for (let v756 = 0; v756 < v753; ++v756) {
v755 = UTILS.randInt(p988.scale / 2.5, p988.scale / 1.7);
renderCircle(v755 * Math.cos(v754 * v756), v755 * Math.sin(v754 * v756), UTILS.randInt(4, 5), v747, true);
}
} else if (p988.name == "wood wall" || p988.name == "stone wall" || p988.name == "castle wall") {
v747.fillStyle = p988.name == "castle wall" ? "#83898e" : p988.name == "wood wall" ? "#a5974c" : "#939393";
let v757 = p988.name == "castle wall" ? 4 : 3;
renderStar(v747, v757, p988.scale * 1.1, p988.scale * 1.1);
v747.fill();
v747.stroke();
v747.fillStyle = p988.name == "castle wall" ? "#9da4aa" : p988.name == "wood wall" ? "#c9b758" : "#bcbcbc";
renderStar(v747, v757, p988.scale * 0.65, p988.scale * 0.65);
v747.fill();
} else if (p988.name == "spikes" || p988.name == "greater spikes" || p988.name == "poison spikes" || p988.name == "spinning spikes") {
v747.fillStyle = p988.name == "poison spikes" ? "#7b935d" : "#939393";
let v758 = p988.scale * 0.6;
renderStar(v747, p988.name == "spikes" ? 5 : 6, p988.scale, v758);
v747.fill();
v747.stroke();
v747.fillStyle = "#a5974c";
renderCircle(0, 0, v758, v747);
v747.fillStyle = "#c9b758";
renderCircle(0, 0, v758 / 2, v747, true);
} else if (p988.name == "windmill" || p988.name == "faster windmill" || p988.name == "power mill") {
v747.fillStyle = "#a5974c";
renderCircle(0, 0, v746, v747);
v747.fillStyle = "#c9b758";
renderRectCircle(0, 0, v746 * 1.5, 29, 4, v747);
v747.fillStyle = "#a5974c";
renderCircle(0, 0, v746 * 0.5, v747);
} else if (p988.name == "mine") {
v747.fillStyle = "#939393";
renderStar(v747, 3, p988.scale, p988.scale);
v747.fill();
v747.stroke();
v747.fillStyle = "#bcbcbc";
renderStar(v747, 3, p988.scale * 0.55, p988.scale * 0.65);
v747.fill();
} else if (p988.name == "sapling") {
for (let v759 = 0; v759 < 2; ++v759) {
let v760 = p988.scale * (!v759 ? 1 : 0.5);
renderStar(v747, 7, v760, v760 * 0.7);
v747.fillStyle = !v759 ? "#9ebf57" : "#b4db62";
v747.fill();
if (!v759) {
v747.stroke();
}
}
} else if (p988.name == "pit trap") {
v747.fillStyle = "#a5974c";
renderStar(v747, 3, p988.scale * 1.1, p988.scale * 1.1);
v747.fill();
v747.stroke();
v747.fillStyle = outlineColor;
renderStar(v747, 3, p988.scale * 0.65, p988.scale * 0.65);
v747.fill();
} else if (p988.name == "boost pad") {
v747.fillStyle = "#7e7f82";
renderRect(0, 0, p988.scale * 2, p988.scale * 2, v747);
v747.fill();
v747.stroke();
v747.fillStyle = "#dbd97d";
renderTriangle(p988.scale * 1, v747);
} else if (p988.name == "turret") {
v747.fillStyle = "#a5974c";
renderCircle(0, 0, p988.scale, v747);
v747.fill();
v747.stroke();
v747.fillStyle = "#939393";
let v761 = 50;
renderRect(0, -v761 / 2, p988.scale * 0.9, v761, v747);
renderCircle(0, 0, p988.scale * 0.6, v747);
v747.fill();
v747.stroke();
} else if (p988.name == "platform") {
v747.fillStyle = "#cebd5f";
let v762 = 4;
let v763 = p988.scale * 2;
let v764 = v763 / v762;
let v765 = -(p988.scale / 2);
for (let v766 = 0; v766 < v762; ++v766) {
renderRect(v765 - v764 / 2, 0, v764, p988.scale * 2, v747);
v747.fill();
v747.stroke();
v765 += v763 / v762;
}
} else if (p988.name == "healing pad") {
v747.fillStyle = "#7e7f82";
renderRect(0, 0, p988.scale * 2, p988.scale * 2, v747);
v747.fill();
v747.stroke();
v747.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p988.scale * 0.65, 20, 4, v747, true);
} else if (p988.name == "spawn pad") {
v747.fillStyle = "#7e7f82";
renderRect(0, 0, p988.scale * 2, p988.scale * 2, v747);
v747.fill();
v747.stroke();
v747.fillStyle = "#71aad6";
renderCircle(0, 0, p988.scale * 0.6, v747);
} else if (p988.name == "blocker") {
v747.fillStyle = "#7e7f82";
renderCircle(0, 0, p988.scale, v747);
v747.fill();
v747.stroke();
v747.rotate(Math.PI / 4);
v747.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p988.scale * 0.65, 20, 4, v747, true);
} else if (p988.name == "teleporter") {
v747.fillStyle = "#7e7f82";
renderCircle(0, 0, p988.scale, v747);
v747.fill();
v747.stroke();
v747.rotate(Math.PI / 4);
v747.fillStyle = "#d76edb";
renderCircle(0, 0, p988.scale * 0.5, v747, true);
}
v743 = v745;
if (!p989) {
itemSprites[p988.id] = v743;
}
}
return v743;
}
function getItemSprite2(p990, p991, p992) {
let vMainContext = mainContext;
let v767 = p990.name == "windmill" ? items.list[4].scale : p990.scale;
vMainContext.save();
vMainContext.translate(p991, p992);
vMainContext.rotate(p990.dir);
vMainContext.strokeStyle = outlineColor;
vMainContext.lineWidth = outlineWidth;
if (p990.name == "apple") {
vMainContext.fillStyle = "#c15555";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fillStyle = "#89a54c";
let v768 = -(Math.PI / 2);
renderLeaf(p990.scale * Math.cos(v768), p990.scale * Math.sin(v768), 25, v768 + Math.PI / 2, vMainContext);
} else if (p990.name == "cookie") {
vMainContext.fillStyle = "#cca861";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fillStyle = "#937c4b";
let v769 = 4;
let v770 = Math.PI * 2 / v769;
let v771;
for (let v772 = 0; v772 < v769; ++v772) {
v771 = UTILS.randInt(p990.scale / 2.5, p990.scale / 1.7);
renderCircle(v771 * Math.cos(v770 * v772), v771 * Math.sin(v770 * v772), UTILS.randInt(4, 5), vMainContext, true);
}
} else if (p990.name == "cheese") {
vMainContext.fillStyle = "#f4f3ac";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fillStyle = "#c3c28b";
let v773 = 4;
let v774 = Math.PI * 2 / v773;
let v775;
for (let v776 = 0; v776 < v773; ++v776) {
v775 = UTILS.randInt(p990.scale / 2.5, p990.scale / 1.7);
renderCircle(v775 * Math.cos(v774 * v776), v775 * Math.sin(v774 * v776), UTILS.randInt(4, 5), vMainContext, true);
}
} else if (p990.name == "wood wall" || p990.name == "stone wall" || p990.name == "castle wall") {
vMainContext.fillStyle = p990.name == "castle wall" ? "#83898e" : p990.name == "wood wall" ? "#a5974c" : "#939393";
let v777 = p990.name == "castle wall" ? 4 : 3;
renderStar(vMainContext, v777, p990.scale * 1.1, p990.scale * 1.1);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = p990.name == "castle wall" ? "#9da4aa" : p990.name == "wood wall" ? "#c9b758" : "#bcbcbc";
renderStar(vMainContext, v777, p990.scale * 0.65, p990.scale * 0.65);
vMainContext.fill();
} else if (p990.name == "spikes" || p990.name == "greater spikes" || p990.name == "poison spikes" || p990.name == "spinning spikes") {
vMainContext.fillStyle = p990.name == "poison spikes" ? "#7b935d" : "#939393";
let v778 = p990.scale * 0.6;
renderStar(vMainContext, p990.name == "spikes" ? 5 : 6, p990.scale, v778);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#a5974c";
renderCircle(0, 0, v778, vMainContext);
vMainContext.fillStyle = "#c9b758";
renderCircle(0, 0, v778 / 2, vMainContext, true);
} else if (p990.name == "windmill" || p990.name == "faster windmill" || p990.name == "power mill") {
vMainContext.fillStyle = "#a5974c";
renderCircle(0, 0, v767, vMainContext);
vMainContext.fillStyle = "#c9b758";
renderRectCircle(0, 0, v767 * 1.5, 29, 4, vMainContext);
vMainContext.fillStyle = "#a5974c";
renderCircle(0, 0, v767 * 0.5, vMainContext);
} else if (p990.name == "mine") {
vMainContext.fillStyle = "#939393";
renderStar(vMainContext, 3, p990.scale, p990.scale);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#bcbcbc";
renderStar(vMainContext, 3, p990.scale * 0.55, p990.scale * 0.65);
vMainContext.fill();
} else if (p990.name == "sapling") {
for (let v779 = 0; v779 < 2; ++v779) {
let v780 = p990.scale * (!v779 ? 1 : 0.5);
renderStar(vMainContext, 7, v780, v780 * 0.7);
vMainContext.fillStyle = !v779 ? "#9ebf57" : "#b4db62";
vMainContext.fill();
if (!v779) {
vMainContext.stroke();
}
}
} else if (p990.name == "pit trap") {
vMainContext.fillStyle = "#a5974c";
renderStar(vMainContext, 3, p990.scale * 1.1, p990.scale * 1.1);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = outlineColor;
renderStar(vMainContext, 3, p990.scale * 0.65, p990.scale * 0.65);
vMainContext.fill();
} else if (p990.name == "boost pad") {
vMainContext.fillStyle = "#7e7f82";
renderRect(0, 0, p990.scale * 2, p990.scale * 2, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#dbd97d";
renderTriangle(p990.scale * 1, vMainContext);
} else if (p990.name == "turret") {
vMainContext.fillStyle = "#a5974c";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#939393";
let v781 = 50;
renderRect(0, -v781 / 2, p990.scale * 0.9, v781, vMainContext);
renderCircle(0, 0, p990.scale * 0.6, vMainContext);
vMainContext.fill();
vMainContext.stroke();
} else if (p990.name == "platform") {
vMainContext.fillStyle = "#cebd5f";
let v782 = 4;
let v783 = p990.scale * 2;
let v784 = v783 / v782;
let v785 = -(p990.scale / 2);
for (let v786 = 0; v786 < v782; ++v786) {
renderRect(v785 - v784 / 2, 0, v784, p990.scale * 2, vMainContext);
vMainContext.fill();
vMainContext.stroke();
v785 += v783 / v782;
}
} else if (p990.name == "healing pad") {
vMainContext.fillStyle = "#7e7f82";
renderRect(0, 0, p990.scale * 2, p990.scale * 2, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p990.scale * 0.65, 20, 4, vMainContext, true);
} else if (p990.name == "spawn pad") {
vMainContext.fillStyle = "#7e7f82";
renderRect(0, 0, p990.scale * 2, p990.scale * 2, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.fillStyle = "#71aad6";
renderCircle(0, 0, p990.scale * 0.6, vMainContext);
} else if (p990.name == "blocker") {
vMainContext.fillStyle = "#7e7f82";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.rotate(Math.PI / 4);
vMainContext.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p990.scale * 0.65, 20, 4, vMainContext, true);
} else if (p990.name == "teleporter") {
vMainContext.fillStyle = "#7e7f82";
renderCircle(0, 0, p990.scale, vMainContext);
vMainContext.fill();
vMainContext.stroke();
vMainContext.rotate(Math.PI / 4);
vMainContext.fillStyle = "#d76edb";
renderCircle(0, 0, p990.scale * 0.5, vMainContext, true);
}
vMainContext.restore();
}
let objSprites = [];
function getObjSprite(p993) {
let v787 = objSprites[p993.id];
if (!v787) {
let v788 = 0;
let v789 = document.createElement("canvas");
v789.width = v789.height = p993.scale * 2.5 + outlineWidth + (items.list[p993.id].spritePadding || 0) + v788;
let v790 = v789.getContext("2d");
v790.translate(v789.width / 2, v789.height / 2);
v790.rotate(Math.PI / 2);
v790.strokeStyle = outlineColor;
v790.lineWidth = outlineWidth;
if (p993.name == "spikes" || p993.name == "greater spikes" || p993.name == "poison spikes" || p993.name == "spinning spikes") {
v790.fillStyle = p993.name == "poison spikes" ? "#7b935d" : "#939393";
let v791 = p993.scale * 0.6;
renderStar(v790, p993.name == "spikes" ? 5 : 6, p993.scale, v791);
v790.fill();
v790.stroke();
v790.shadowColor = "rgba(255, 0, 0, 0.8)";
v790.shadowBlur = 20;
v790.shadowOffsetX = 0;
v790.shadowOffsetY = 0;
v790.fillStyle = "#a5974c";
renderCircle(0, 0, v791, v790);
v790.shadowColor = "transparent";
v790.shadowBlur = 0;
v790.shadowOffsetX = 0;
v790.shadowOffsetY = 0;
} else if (p993.name == "pit trap") {
v790.fillStyle = "#a5974c";
renderStar(v790, 3, p993.scale * 1.1, p993.scale * 1.1);
v790.fill();
v790.stroke();
v790.fillStyle = "#cc5151";
renderStar(v790, 3, p993.scale * 0.65, p993.scale * 0.65);
v790.fill();
}
v787 = v789;
objSprites[p993.id] = v787;
}
return v787;
}
function getMarkSprite(p994, p995, p996, p997) {
let v792 = {
x: screenWidth / 2,
y: screenHeight / 2
};
p995.lineWidth = outlineWidth;
mainContext.globalAlpha = 0.2;
p995.strokeStyle = outlineColor;
p995.save();
p995.translate(p996, p997);
p995.rotate(34867844010000000000);
if (p994.name == "spikes" || p994.name == "greater spikes" || p994.name == "poison spikes" || p994.name == "spinning spikes") {
p995.fillStyle = p994.name == "poison spikes" ? "#7b935d" : "#939393";
var v793 = p994.scale;
renderStar(p995, p994.name == "spikes" ? 5 : 6, p994.scale, v793);
p995.fill();
p995.stroke();
p995.fillStyle = "#a5974c";
renderCircle(0, 0, v793, p995);
if (player && p994.owner && player.sid != p994.owner.sid && !tmpObj.findAllianceBySid(p994.owner.sid)) {
p995.fillStyle = "#a34040";
} else {
p995.fillStyle = "#c9b758";
}
renderCircle(0, 0, v793 / 2, p995, true);
} else if (p994.name == "turret") {
renderCircle(0, 0, p994.scale, p995);
p995.fill();
p995.stroke();
p995.fillStyle = "#939393";
let v794 = 50;
renderRect(0, -v794 / 2, p994.scale * 0.9, v794, p995);
renderCircle(0, 0, p994.scale * 0.6, p995);
p995.fill();
p995.stroke();
} else if (p994.name == "teleporter") {
p995.fillStyle = "#7e7f82";
renderCircle(0, 0, p994.scale, p995);
p995.fill();
p995.stroke();
p995.rotate(Math.PI / 4);
p995.fillStyle = "#d76edb";
renderCircle(0, 0, p994.scale * 0.5, p995, true);
} else if (p994.name == "platform") {
p995.fillStyle = "#cebd5f";
let v795 = 4;
let v796 = p994.scale * 2;
let v797 = v796 / v795;
let v798 = -(p994.scale / 2);
for (let v799 = 0; v799 < v795; ++v799) {
renderRect(v798 - v797 / 2, 0, v797, p994.scale * 2, p995);
p995.fill();
p995.stroke();
v798 += v796 / v795;
}
} else if (p994.name == "healing pad") {
p995.fillStyle = "#7e7f82";
renderRect(0, 0, p994.scale * 2, p994.scale * 2, p995);
p995.fill();
p995.stroke();
p995.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p994.scale * 0.65, 20, 4, p995, true);
} else if (p994.name == "spawn pad") {
p995.fillStyle = "#7e7f82";
renderRect(0, 0, p994.scale * 2, p994.scale * 2, p995);
p995.fill();
p995.stroke();
p995.fillStyle = "#71aad6";
renderCircle(0, 0, p994.scale * 0.6, p995);
} else if (p994.name == "blocker") {
p995.fillStyle = "#7e7f82";
renderCircle(0, 0, p994.scale, p995);
p995.fill();
p995.stroke();
p995.rotate(Math.PI / 4);
p995.fillStyle = "#db6e6e";
renderRectCircle(0, 0, p994.scale * 0.65, 20, 4, p995, true);
} else if (p994.name == "windmill" || p994.name == "faster windmill" || p994.name == "power mill") {
p995.fillStyle = "#a5974c";
renderCircle(0, 0, p994.scale, p995);
p995.fillStyle = "#c9b758";
renderRectCircle(0, 0, p994.scale * 1.5, 29, 4, p995);
p995.fillStyle = "#a5974c";
renderCircle(0, 0, p994.scale * 0.5, p995);
} else if (p994.name == "pit trap") {
p995.fillStyle = "#a5974c";
renderStar(p995, 3, p994.scale * 1.1, p994.scale * 1.1);
p995.fill();
p995.stroke();
if (player && p994.owner && player.sid != p994.owner.sid && !tmpObj.findAllianceBySid(p994.owner.sid)) {
p995.fillStyle = "#a34040";
} else {
p995.fillStyle = outlineColor;
}
renderStar(p995, 3, p994.scale * 0.65, p994.scale * 0.65);
p995.fill();
}
p995.restore();
}
function isOnScreen(p998, p999, p1000) {
return p998 + p1000 >= 0 && p998 - p1000 <= maxScreenWidth && p999 + p1000 >= 0 && (p999, p1000, maxScreenHeight);
}
function renderGameObjects(p1001, p1002, p1003) {
let v800;
let v801;
let v802;
liztobj.forEach(p1004 => {
tmpObj = p1004;
if (tmpObj.active && liztobj.includes(p1004) && tmpObj.render) {
v801 = tmpObj.x + tmpObj.xWiggle - p1002;
v802 = tmpObj.y + tmpObj.yWiggle - p1003;
if (p1001 == 0) {
tmpObj.update(delta);
}
mainContext.globalAlpha = tmpObj.alpha;
if (tmpObj.layer == p1001 && isOnScreen(v801, v802, tmpObj.scale + (tmpObj.blocker || 0))) {
if (tmpObj.isItem) {
if ((tmpObj.dmg || tmpObj.trap) && !tmpObj.isTeamObject(player)) {
v800 = getObjSprite(tmpObj);
} else {
v800 = getItemSprite(tmpObj);
}
mainContext.save();
mainContext.translate(v801, v802);
mainContext.rotate(tmpObj.dir);
if (!tmpObj.active) {
mainContext.scale(tmpObj.visScale / tmpObj.scale, tmpObj.visScale / tmpObj.scale);
}
mainContext.drawImage(v800, -(v800.width / 2), -(v800.height / 2));
if (tmpObj.blocker) {
mainContext.strokeStyle = "#db6e6e";
mainContext.globalAlpha = 0.3;
mainContext.lineWidth = 6;
renderCircle(0, 0, tmpObj.blocker, mainContext, false, true);
}
mainContext.restore();
} else {
v800 = getResSprite(tmpObj);
mainContext.drawImage(v800, v801 - v800.width / 2, v802 - v800.height / 2);
}
}
if (p1001 == 3) {
if (tmpObj.health < tmpObj.maxHealth && getEl("BuildHealth").value == "bh1") {
mainContext.fillStyle = darkOutlineColor;
mainContext.roundRect(v801 - config.healthBarWidth / 2 - config.healthBarPad, v802 - config.healthBarPad, config.healthBarWidth + config.healthBarPad * 2, 17, 8);
mainContext.fill();
mainContext.fillStyle = tmpObj.isTeamObject(player) ? "#8ecc51" : "#cc5151";
mainContext.roundRect(v801 - config.healthBarWidth / 2, v802, config.healthBarWidth * (tmpObj.health / tmpObj.maxHealth), 17 - config.healthBarPad * 2, 7);
mainContext.fill();
}
if (tmpObj.health < tmpObj.maxHealth && getEl("BuildHealth").value == "bh2") {
mainContext.fillStyle = darkOutlineColor;
mainContext.beginPath();
mainContext.arc(v801, v802, config.healthBarWidth / 2 + config.healthBarPad, 0, Math.PI * 2);
mainContext.fill();
mainContext.fillStyle = tmpObj.isTeamObject(player) ? "#8ecc51" : "#cc5151";
mainContext.beginPath();
const v803 = tmpObj.health / tmpObj.maxHealth;
mainContext.arc(v801, v802, config.healthBarWidth / 2, -Math.PI / 2, -Math.PI / 2 + Math.PI * 2 * v803);
mainContext.lineTo(v801, v802);
mainContext.fill();
}
if (tmpObj.health < tmpObj.maxHealth && getEl("BuildHealth").value == "bh3") {
const v804 = tmpObj.health / tmpObj.maxHealth * 360 * (Math.PI / 180);
const v805 = 14;
const v806 = 22;
mainContext.save();
mainContext.lineWidth = 9;
mainContext.lineCap = "round";
mainContext.translate(v801, v802);
mainContext.beginPath();
mainContext.arc(0, 0, v806, 0, v804);
mainContext.stroke();
mainContext.restore();
mainContext.save();
mainContext.strokeStyle = tmpObj.isTeamObject(player) ? "#8ecc51" : "#cc5151";
mainContext.lineCap = "round";
mainContext.translate(v801, v802);
mainContext.beginPath();
mainContext.arc(0, 0, v806, 0, v804);
mainContext.stroke();
mainContext.restore();
}
}
}
});
if (p1001 == 0) {
if (placeVisible.length) {
placeVisible.forEach(p1005 => {
v801 = p1005.x - p1002;
v802 = p1005.y - p1003;
markObject(p1005, v801, v802);
});
}
}
}
function markObject(p1006, p1007, p1008) {
yen(mainContext, p1007, p1008);
}
function yen(p1009, p1010, p1011) {
p1009.fillStyle = "rgba(0, 255, 255, 0.5)";
p1009.beginPath();
p1009.arc(p1010, p1011, 55, 0, Math.PI * 2);
p1009.fill();
p1009.closePath();
p1009.globalAlpha = 1;
}
class MapPing {
constructor(p1012, p1013) {
this.init = function (p1014, p1015) {
this.scale = 0;
this.x = p1014;
this.y = p1015;
this.active = true;
};
this.update = function (p1016, p1017) {
if (this.active) {
this.scale += p1017 * 0.05;
if (this.scale >= p1013) {
this.active = false;
} else {
p1016.globalAlpha = 1 - Math.max(0, this.scale / p1013);
p1016.beginPath();
p1016.arc(this.x / config.mapScale * mapDisplay.width, this.y / config.mapScale * mapDisplay.width, this.scale, 0, Math.PI * 2);
p1016.stroke();
}
}
};
this.color = p1012;
}
}
let relMin = 55;
let relMax = 385;
function getBarColor(p1018, p1019) {
let vTmpObj = tmpObj;
if (p1019) {
if (p1018 <= 0.3703703703703704) {
return "#8ecc51";
} else if (p1018 <= 0.7407407407407408) {
return "hsl(" + relMin + ", 50%, 60%)";
} else {
return "#f9f64f";
}
} else {
let v807 = 1 - p1018;
if (vTmpObj.secondary != 10) {
let v808 = "hsl(" + Math.round(relMax + v807 * (relMin - relMax)) % 360 + ", 50%, 60%)";
if (p1018 == 1) {
return "#f4f259";
} else {
return v808;
}
} else if (vTmpObj.secondary == 10) {
let v809 = "hsl(" + Math.round(relMax + v807 * (relMin - relMax)) % 360 + ", 50%, 60%)";
if (p1018 <= 0.3703703703703704) {
return "#73bfa2";
} else if (p1018 <= 0.7407407407407408) {
return "#8ecc51";
} else {
return "#f9f64f";
}
}
}
}
function pingMap(p1020, p1021) {
tmpPing = mapPings.find(p1022 => !p1022.active);
if (!tmpPing) {
tmpPing = new MapPing("#fff", config.mapPingScale);
mapPings.push(tmpPing);
}
tmpPing.init(p1020, p1021);
}
function updateMapMarker() {
mapMarker.x = player.x;
mapMarker.y = player.y;
}
function renderMinimap(p1023) {
if (player && player.alive) {
mapContext.clearRect(0, 0, mapDisplay.width, mapDisplay.height);
mapContext.lineWidth = 4;
for (let v810 = 0; v810 < mapPings.length; ++v810) {
tmpPing = mapPings[v810];
mapContext.strokeStyle = tmpPing.color;
tmpPing.update(mapContext, p1023);
}
mapContext.globalAlpha = 1;
mapContext.fillStyle = "#ff0000";
if (breakTrackers.length) {
mapContext.fillStyle = "#abcdef";
mapContext.font = "34px Hammersmith One";
mapContext.textBaseline = "middle";
mapContext.textAlign = "center";
for (let v811 = 0; v811 < breakTrackers.length;) {
mapContext.fillText("!", breakTrackers[v811].x / config.mapScale * mapDisplay.width, breakTrackers[v811].y / config.mapScale * mapDisplay.height);
v811 += 2;
}
}
mapContext.globalAlpha = 1;
mapContext.fillStyle = "#fff";
renderCircle(player.x / config.mapScale * mapDisplay.width, player.y / config.mapScale * mapDisplay.height, 7, mapContext, true);
mapContext.fillStyle = "rgba(255,255,255,0.35)";
if (player.team && minimapData) {
for (let v812 = 0; v812 < minimapData.length;) {
renderCircle(minimapData[v812] / config.mapScale * mapDisplay.width, minimapData[v812 + 1] / config.mapScale * mapDisplay.height, 7, mapContext, true);
v812 += 2;
}
}
if (bots.length) {
bots.forEach(p1024 => {
if (p1024.inGame) {
mapContext.globalAlpha = 1;
mapContext.strokeStyle = "#cc5151";
renderCircle(p1024.x2 / config.mapScale * mapDisplay.width, p1024.y2 / config.mapScale * mapDisplay.height, 7, mapContext, false, true);
}
});
}
if (lastDeath) {
mapContext.fillStyle = "#fc5553";
mapContext.font = "34px Hammersmith One";
mapContext.textBaseline = "middle";
mapContext.textAlign = "center";
mapContext.fillText("x", lastDeath.x / config.mapScale * mapDisplay.width, lastDeath.y / config.mapScale * mapDisplay.height);
}
if (mapMarker) {
mapContext.fillStyle = "#fff";
mapContext.font = "34px Hammersmith One";
mapContext.textBaseline = "middle";
mapContext.textAlign = "center";
mapContext.fillText("x", mapMarker.x / config.mapScale * mapDisplay.width, mapMarker.y / config.mapScale * mapDisplay.height);
}
}
}
let crossHairs = ["https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Crosshairs_Red.svg/1200px-Crosshairs_Red.svg.png", "https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Crosshairs_Red.svg/1200px-Crosshairs_Red.svg.png"];
let crossHairSprites = {};
let iconSprites = {};
let icons = ["crown", "skull"];
function loadIcons() {
for (let v813 = 0; v813 < icons.length; ++v813) {
let v814 = new Image();
v814.onload = function () {
this.isLoaded = true;
};
v814.src = "./../img/icons/" + icons[v813] + ".png";
iconSprites[icons[v813]] = v814;
}
for (let v815 = 0; v815 < crossHairs.length; ++v815) {
let v816 = new Image();
v816.onload = function () {
this.isLoaded = true;
};
v816.src = crossHairs[v815];
crossHairSprites[v815] = v816;
}
}
loadIcons();
function cdf(p1025, p1026) {
try {
return Math.hypot((p1026.y2 || p1026.y) - (p1025.y2 || p1025.y), (p1026.x2 || p1026.x) - (p1025.x2 || p1025.x));
} catch (_0x216fef) {
return Infinity;
}
}
function updateGame() {
if (gameObjects.length && inGame) {
gameObjects.forEach(p1027 => {
if (UTILS.getDistance(p1027.x, p1027.y, player.x, player.y) <= 1200) {
if (!liztobj.includes(p1027)) {
liztobj.push(p1027);
p1027.render = true;
}
} else if (liztobj.includes(p1027)) {
if (UTILS.getDistance(p1027.x, p1027.y, player.x, player.y) >= 1200) {
p1027.render = false;
const v817 = liztobj.indexOf(p1027);
if (v817 > -1) {
liztobj.splice(v817, 1);
}
}
} else if (UTILS.getDistance(p1027.x, p1027.y, player.x, player.y) >= 1200) {
p1027.render = false;
const v818 = liztobj.indexOf(p1027);
if (v818 > -1) {
liztobj.splice(v818, 1);
}
} else {
p1027.render = false;
const v819 = liztobj.indexOf(p1027);
if (v819 > -1) {
liztobj.splice(v819, 1);
}
}
});
}
mainContext.beginPath();
mainContext.clearRect(0, 0, gameCanvas.width, gameCanvas.height);
mainContext.globalAlpha = 1;
function f49(p1028, p1029, p1030 = 25) {
camX = (camX * (p1030 - 1) + p1028) / p1030;
camY = (camY * (p1030 - 1) + p1029) / p1030;
}
if (player) {
let v820 = player.x;
let v821 = player.y;
if (near.dist2 <= 1000 && inGame || !getEl("combatZoom").checked) {
maxScreenWidth = config.maxScreenWidth * 1;
maxScreenHeight = config.maxScreenHeight * 1;
} else {
maxScreenWidth = config.maxScreenWidth * 1.4;
maxScreenHeight = config.maxScreenHeight * 1.4;
}
let v822 = getEl("cameramodes").value;
if (v822 === "camera3") {
f49(v820, v821);
let v823 = (mouseX - window.innerWidth / 2) / 175;
let v824 = (mouseY - window.innerHeight / 2) / 175;
camX += v823;
camY += v824;
resize();
let v825 = UTILS.getDistance(camX, camY, v820, v821);
let v826 = UTILS.getDirection(v820, v821, camX, camY);
let v827 = 0.0001;
let v828 = v825 * v827;
if (v825 > 1e-19) {
camX += (v828 * Math.cos(v826) - camX) * v827;
camY += (v828 * Math.sin(v826) - camY) * v827;
} else {
camX = v820;
camY = v821;
}
} else if (v822 === "camera2") {
f49(v820, v821);
let v829 = UTILS.getDistance(camX, camY, v820, v821);
let v830 = UTILS.getDirection(v820, v821, camX, camY);
let v831 = 0.0001;
let v832 = v829 * v831;
if (v829 > 1e-19) {
camX += (v832 * Math.cos(v830) - camX) * v831;
camY += (v832 * Math.sin(v830) - camY) * v831;
} else {
camX = v820;
camY = v821;
}
} else if (v822 === "camera1") {
camX = v820;
camY = v821;
let v833 = UTILS.getDistance(camX, camY, v820, v821);
let v834 = UTILS.getDirection(v820, v821, camX, camY);
let v835 = Math.min(v833 * 0.005 * delta, v833);
if (v833 > 0.05) {
camX += v835 * Math.cos(v834);
camY += v835 * Math.sin(v834);
} else {
camX = v820;
camY = v821;
}
} else {
camX = config.mapScale / 2;
camY = config.mapScale / 2;
}
} else {
camX = config.mapScale / 2;
camY = config.mapScale / 2;
}
let v836 = now - 1000 / config.serverUpdateRate;
let v837;
for (let v838 = 0; v838 < players.length + ais.length; ++v838) {
tmpObj = players[v838] || ais[v838 - players.length];
if (tmpObj && tmpObj.visible) {
if (tmpObj.forcePos) {
tmpObj.x = tmpObj.x2;
tmpObj.y = tmpObj.y2;
tmpObj.dir = tmpObj.d2;
} else {
let v839 = tmpObj.t2 - tmpObj.t1;
let v840 = v836 - tmpObj.t1;
let v841 = v840 / v839;
let v842 = 170;
tmpObj.dt += delta;
let v843 = Math.min(1.7, tmpObj.dt / v842);
v837 = tmpObj.x2 - tmpObj.x1;
tmpObj.x = tmpObj.x1 + v837 * v843;
v837 = tmpObj.y2 - tmpObj.y1;
tmpObj.y = tmpObj.y1 + v837 * v843;
if (config.anotherVisual) {
tmpObj.dir = Math.lerpAngle(tmpObj.d2, tmpObj.d1, Math.min(1.2, v841));
} else {
tmpObj.dir = Math.lerpAngle(tmpObj.d2, tmpObj.d1, Math.min(1.2, v841));
}
}
}
}
let v844 = camX - maxScreenWidth / 2;
let v845 = camY - maxScreenHeight / 2;
if (config.snowBiomeTop - v845 <= 0 && config.mapScale - config.snowBiomeTop - v845 >= maxScreenHeight) {
mainContext.fillStyle = "#b6db66";
mainContext.fillRect(0, 0, maxScreenWidth, maxScreenHeight);
} else if (config.mapScale - config.snowBiomeTop - v845 <= 0) {
mainContext.fillStyle = "#dbc666";
mainContext.fillRect(0, 0, maxScreenWidth, maxScreenHeight);
} else if (config.snowBiomeTop - v845 >= maxScreenHeight) {
mainContext.fillStyle = "#fff";
mainContext.fillRect(0, 0, maxScreenWidth, maxScreenHeight);
} else if (config.snowBiomeTop - v845 >= 0) {
mainContext.fillStyle = "#fff";
mainContext.fillRect(0, 0, maxScreenWidth, config.snowBiomeTop - v845);
mainContext.fillStyle = "#b6db66";
mainContext.fillRect(0, config.snowBiomeTop - v845, maxScreenWidth, maxScreenHeight - (config.snowBiomeTop - v845));
} else {
mainContext.fillStyle = "#b6db66";
mainContext.fillRect(0, 0, maxScreenWidth, config.mapScale - config.snowBiomeTop - v845);
mainContext.fillStyle = "#dbc666";
mainContext.fillRect(0, config.mapScale - config.snowBiomeTop - v845, maxScreenWidth, maxScreenHeight - (config.mapScale - config.snowBiomeTop - v845));
}
if (!firstSetup) {
waterMult += waterPlus * config.waveSpeed * delta;
if (waterMult >= config.waveMax) {
waterMult = config.waveMax;
waterPlus = -1;
} else if (waterMult <= 1) {
waterMult = waterPlus = 1;
}
mainContext.globalAlpha = 1;
mainContext.fillStyle = "#dbc666";
renderWaterBodies(v844, v845, mainContext, config.riverPadding);
mainContext.fillStyle = "#91b2db";
renderWaterBodies(v844, v845, mainContext, (waterMult - 1) * 250);
}
if (getEl("showgrid").checked) {
mainContext.lineWidth = 4;
mainContext.strokeStyle = "#000";
mainContext.globalAlpha = 0.06;
} else {
mainContext.lineWidth = 0;
mainContext.strokeStyle = "#000";
mainContext.globalAlpha = 0;
}
for (let v846 = -camX; v846 < maxScreenWidth; v846 += maxScreenHeight / 18) {
if (v846 > 0) {
mainContext.moveTo(v846, 0);
mainContext.lineTo(v846, maxScreenHeight);
}
}
for (let v847 = -camY; v847 < maxScreenHeight; v847 += maxScreenHeight / 18) {
if (v847 > 0) {
mainContext.moveTo(0, v847);
mainContext.lineTo(maxScreenWidth, v847);
}
}
mainContext.stroke();
if (pathFind.active) {
if (pathFind.array && (pathFind.chaseNear ? enemy.length : true)) {
mainContext.lineWidth = 3;
mainContext.globalAlpha = 1;
mainContext.strokeStyle = "cyan";
mainContext.beginPath();
pathFind.array.forEach((p1031, p1032) => {
let v848 = {
x: pathFind.scale / pathFind.grid * p1031.x,
y: pathFind.scale / pathFind.grid * p1031.y
};
let v849 = {
x: player.x2 - pathFind.scale / 2 + v848.x - v844,
y: player.y2 - pathFind.scale / 2 + v848.y - v845
};
if (p1032 == 0) {
mainContext.moveTo(v849.x, v849.y);
} else {
mainContext.lineTo(v849.x, v849.y);
}
});
mainContext.stroke();
}
}
mainContext.globalAlpha = 1;
mainContext.strokeStyle = outlineColor;
renderDeadPlayers(v844, v845);
mainContext.globalAlpha = 1;
mainContext.strokeStyle = outlineColor;
renderGameObjects(-1, v844, v845);
mainContext.globalAlpha = 1;
mainContext.lineWidth = outlineWidth;
renderProjectiles(0, v844, v845);
renderPlayers(v844, v845, 0);
mainContext.globalAlpha = 1;
for (let v850 = 0; v850 < ais.length; ++v850) {
tmpObj = ais[v850];
if (tmpObj.active && tmpObj.visible) {
tmpObj.animate(delta);
mainContext.save();
mainContext.translate(tmpObj.x - v844, tmpObj.y - v845);
mainContext.rotate(tmpObj.dir + tmpObj.dirPlus - Math.PI / 2);
renderAI(tmpObj, mainContext);
mainContext.restore();
}
}
renderGameObjects(0, v844, v845);
renderProjectiles(1, v844, v845);
renderGameObjects(1, v844, v845);
renderPlayers(v844, v845, 1);
renderGameObjects(2, v844, v845);
renderGameObjects(3, v844, v845);
mainContext.fillStyle = "#000";
mainContext.globalAlpha = 0.09;
if (v844 <= 0) {
mainContext.fillRect(0, 0, -v844, maxScreenHeight);
}
if (config.mapScale - v844 <= maxScreenWidth) {
let v851 = Math.max(0, -v845);
mainContext.fillRect(config.mapScale - v844, v851, maxScreenWidth - (config.mapScale - v844), maxScreenHeight - v851);
}
if (v845 <= 0) {
mainContext.fillRect(-v844, 0, maxScreenWidth + v844, -v845);
}
if (config.mapScale - v845 <= maxScreenHeight) {
let v852 = Math.max(0, -v844);
let v853 = 0;
if (config.mapScale - v844 <= maxScreenWidth) {
v853 = maxScreenWidth - (config.mapScale - v844);
}
mainContext.fillRect(v852, config.mapScale - v845, maxScreenWidth - v852 - v853, maxScreenHeight - (config.mapScale - v845));
}
if (getEl("daytime").checked) {
mainContext.globalAlpha = 1;
mainContext.fillStyle = "rgba(0, 0, 70, 0.35)";
mainContext.fillRect(0, 0, maxScreenWidth, maxScreenHeight);
} else {
mainContext.globalAlpha = 1;
mainContext.fillStyle = "rgba(0, 0, 70, 0.6)";
mainContext.fillRect(0, 0, maxScreenWidth, maxScreenHeight);
}
if (tracker.draw3.active) {
mainContext.globalAlpha = 1;
let v854 = {
x: tracker.draw3.x - v844,
y: tracker.draw3.y - v845,
scale: tracker.draw3.scale
};
mainContext.strokeStyle = "#cc5151";
mainContext.lineWidth = 3.25;
mainContext.beginPath();
mainContext.arc(v854.x, v854.y, v854.scale, 0, Math.PI * 2);
mainContext.stroke();
}
if (tracker.draw2.active) {
mainContext.globalAlpha = 0.5;
let v855 = {
x: tracker.draw2.x - v844,
y: tracker.draw2.y - v845,
scale: tracker.draw2.scale
};
mainContext.fillStyle = "rgba(255, 0, 0, 0.5)";
mainContext.beginPath();
mainContext.arc(v855.x, v855.y, v855.scale, 0, Math.PI * 2);
mainContext.fill();
mainContext.closePath();
mainContext.globalAlpha = 1;
}
mainContext.strokeStyle = darkOutlineColor;
mainContext.globalAlpha = 1;
mainContext.beginPath();
for (let v856 = 0; v856 < players.length + ais.length; ++v856) {
tmpObj = players[v856] || ais[v856 - players.length];
if (tmpObj.visible) {
mainContext.strokeStyle = darkOutlineColor;
let v857 = (tmpObj.team ? "[" + tmpObj.team + "] " : "") + (tmpObj.name || "");
if (v857 != "") {
mainContext.globalAlpha = 1;
mainContext.font = (tmpObj.nameScale || 30) + "px Hammersmith One";
mainContext.fillStyle = "#fff";
mainContext.textBaseline = "middle";
mainContext.textAlign = "center";
mainContext.lineWidth = tmpObj.nameScale ? 11 : 8;
mainContext.lineJoin = "round";
mainContext.strokeText(v857, tmpObj.x - v844, tmpObj.y - v845 - tmpObj.scale - config.nameY);
mainContext.fillText(v857, tmpObj.x - v844, tmpObj.y - v845 - tmpObj.scale - config.nameY);
if (tmpObj.isLeader && iconSprites.crown.isLoaded) {
let v858 = config.crownIconScale;
let v859 = tmpObj.x - v844 - v858 / 2 - mainContext.measureText(v857).width / 2 - config.crownPad;
mainContext.drawImage(iconSprites.crown, v859, tmpObj.y - v845 - tmpObj.scale - config.nameY - v858 / 2 - 5, v858, v858);
}
if (tmpObj.iconIndex == 1 && iconSprites.skull.isLoaded) {
let v860 = config.crownIconScale;
let v861 = tmpObj.x - v844 - v860 / 2 + mainContext.measureText(v857).width / 2 + config.crownPad;
mainContext.drawImage(iconSprites.skull, v861, tmpObj.y - v845 - tmpObj.scale - config.nameY - v860 / 2 - 5, v860, v860);
}
if (tmpObj.isPlayer && instaC.wait && near == tmpObj && (tmpObj.backupNobull ? crossHairSprites[1].isLoaded : crossHairSprites[0].isLoaded) && enemy.length && !useWasd) {
let v862 = tmpObj.scale * 2.2;
mainContext.drawImage(tmpObj.backupNobull ? crossHairSprites[1] : crossHairSprites[0], tmpObj.x - v844 - v862 / 2, tmpObj.y - v845 - v862 / 2, v862, v862);
}
}
if (!getEl("cleanmode").checked) {
if (tmpObj.isPlayer) {
let v863 = tmpObj.x - v844 + mainContext.measureText(v857).width / 2 + config.crownPad;
let v864 = tmpObj.y - v845 - tmpObj.scale - config.nameY;
if (tmpObj.iconIndex == 1) {
v863 = tmpObj.x - v844 - 30 + mainContext.measureText(v857).width / 2 + config.crownPad * 3.5 + 5;
}
mainContext.font = (tmpObj.nameScale || 30) + "px Hammersmith One";
if (tmpObj.shameCount > 4) {
mainContext.fillStyle = "#cc5151";
} else if (tmpObj.shameCount > 2) {
mainContext.fillStyle = "#ffff00";
} else {
mainContext.fillStyle = tmpObj == player || tmpObj.team && tmpObj.team == player.team ? "#8ecc51" : "#fff";
}
mainContext.textBaseline = "middle";
mainContext.textAlign = "center";
mainContext.lineWidth = tmpObj.nameScale ? 11 : 8;
mainContext.lineJoin = "round";
mainContext.strokeText(tmpObj.shameCount, v863, v864);
mainContext.fillText(tmpObj.shameCount, v863, v864);
}
}
if (tmpObj.health > 0) {
if (tmpObj.name != "") {
mainContext.fillStyle = darkOutlineColor;
mainContext.roundRect(tmpObj.x - v844 - config.healthBarWidth - config.healthBarPad, tmpObj.y - v845 + tmpObj.scale + config.nameY, config.healthBarWidth * 2 + config.healthBarPad * 2, 17, 8);
mainContext.fill();
mainContext.fillStyle = tmpObj == player || tmpObj.team && tmpObj.team == player.team ? "#8ecc51" : "#cc5151";
mainContext.roundRect(tmpObj.x - v844 - config.healthBarWidth, tmpObj.y - v845 + tmpObj.scale + config.nameY + config.healthBarPad, config.healthBarWidth * 2 * (tmpObj.health / tmpObj.maxHealth), 17 - config.healthBarPad * 2, 7);
mainContext.fill();
}
if (tmpObj.isPlayer && !getEl("cleanmode").checked) {
mainContext.globalAlpha = 1;
let v865 = {
primary: tmpObj.primaryIndex == undefined ? 1 : (items.weapons[tmpObj.primaryIndex].speed - tmpObj.reloads[tmpObj.primaryIndex]) / items.weapons[tmpObj.primaryIndex].speed,
secondary: tmpObj.secondaryIndex == undefined ? 1 : (items.weapons[tmpObj.secondaryIndex].speed - tmpObj.reloads[tmpObj.secondaryIndex]) / items.weapons[tmpObj.secondaryIndex].speed,
turret: (2500 - tmpObj.reloads[53]) / 2500
};
if (!tmpObj.currentReloads) {
tmpObj.currentReloads = {
primary: v865.primary,
secondary: v865.secondary,
turret: v865.turret
};
}
const v866 = 0.3;
tmpObj.currentReloads.primary = (1 - v866) * tmpObj.currentReloads.primary + v866 * v865.primary;
tmpObj.currentReloads.secondary = (1 - v866) * tmpObj.currentReloads.secondary + v866 * v865.secondary;
tmpObj.currentReloads.turret = (1 - v866) * tmpObj.currentReloads.turret + v866 * v865.turret;
if (tmpObj.currentReloads.secondary < 0.999) {
let v867 = tmpObj.currentReloads.secondary;
mainContext.fillStyle = darkOutlineColor;
mainContext.roundRect(tmpObj.x - v844 + 2 - config.healthBarPad, tmpObj.y - v845 + tmpObj.scale + config.nameY - 13, 47 + config.healthBarPad * 2, 17, 10);
mainContext.fill();
mainContext.fillStyle = tmpObj == player || tmpObj.team && tmpObj.team == player.team ? "#8ecc51" : "#cc5151";
mainContext.roundRect(tmpObj.x - v844 + 2, tmpObj.y - v845 + tmpObj.scale + config.nameY - 13 + config.healthBarPad, v867 * 47, 16 - config.healthBarPad * 2, 10);
mainContext.fill();
}
if (tmpObj.currentReloads.primary < 0.999) {
let v868 = tmpObj.currentReloads.primary;
mainContext.fillStyle = darkOutlineColor;
mainContext.roundRect(tmpObj.x - v844 - 50 - config.healthBarPad, tmpObj.y - v845 + tmpObj.scale + config.nameY - 13, 47 + config.healthBarPad * 2, 17, 10);
mainContext.fill();
mainContext.fillStyle = tmpObj == player || tmpObj.team && tmpObj.team == player.team ? "#8ecc51" : "#cc5151";
mainContext.roundRect(tmpObj.x - v844 - 50, tmpObj.y - v845 + tmpObj.scale + config.nameY - 13 + config.healthBarPad, v868 * 47, 16 - config.healthBarPad * 2, 10);
mainContext.fill();
}
if (tmpObj == player) {}
}
if (inGame) {
f50(0, 20, 20, "rgba(0,0,0,5)", "auto", 6, true);
}
}
}
}
function f50(p1033, p1034, p1035, p1036, p1037, p1038 = 0, p1039) {
let v869 = p1039 == true ? tmpObj.isPlayer && tmpObj != player : tmpObj.isPlayer && tmpObj.sid != player.sid && (!isAlly(tmpObj.sid) || tmpObj.sid == player.sid);
let v870 = {
x: screenWidth / 2,
y: screenHeight / 2
};
let v871 = Math.min(1, UTILS.getDistance(0, 0, player.x - tmpObj.x, (player.y - tmpObj.y) * (16 / 9)) * 100 / (config.maxScreenHeight / 2) / v870.y);
if (v869 && !tmpObj.isTeam(player)) {
let v872 = Math.sqrt((tmpObj.x - player.x) ** 2 + (tmpObj.x - player.x) ** 2);
let v873 = player.x + v872 * 0.5 * Math.cos(Math.atan2(tmpObj.y - player.y, tmpObj.x - player.x));
let v874 = player.y + v872 * 0.5 * Math.sin(Math.atan2(tmpObj.y - player.y, tmpObj.x - player.x));
mainContext.save();
mainContext.translate(v873 - v844, v874 - v845);
mainContext.rotate(Math.atan2(tmpObj.y - player.y, tmpObj.x - player.x) + Math.PI / 2);
mainContext.fillStyle = p1036;
mainContext.globalAlpha = p1037 == "auto" ? v871 : p1037;
mainContext.lineWidth = p1038;
mainContext.lineCap = "round";
mainContext.beginPath();
mainContext.strokeStyle = "transparent";
mainContext.moveTo(p1033, p1033);
mainContext.lineTo(p1034, p1034);
mainContext.lineTo(-p1035, p1035);
mainContext.fill();
mainContext.stroke();
mainContext.closePath();
mainContext.restore();
}
}
function f51(p1040, p1041, p1042, p1043, p1044, p1045, p1046, p1047) {
mainContext.save();
mainContext.translate(p1042 - p1040, p1043 - p1041);
mainContext.rotate(Math.PI / 4);
mainContext.rotate(p1046);
mainContext.globalAlpha = 1;
mainContext.strokeStyle = p1045;
mainContext.lineCap = "round";
mainContext.lineWidth = p1047;
mainContext.beginPath();
mainContext.moveTo(-p1044, -p1044);
mainContext.lineTo(p1044, -p1044);
mainContext.lineTo(p1044, p1044);
mainContext.stroke();
mainContext.closePath();
mainContext.restore();
}
if (player) {
if (my.autoPush && my.pushData) {
let v875 = near.dist2;
mainContext.lineWidth = 5;
mainContext.globalAlpha = Math.max(0.5, 1 - v875 / 1000000);
mainContext.lineCap = "round";
mainContext.beginPath();
mainContext.strokeStyle = "#FFFFFF";
let v876 = Math.max(5, Math.min(20, v875 / 100));
mainContext.setLineDash([v876, v876 * 2]);
mainContext.moveTo(player.x - v844, player.y - v845);
let v877 = (player.x + my.pushData.x) / 2 - v844;
let v878 = (player.y + my.pushData.y) / 2 - v845 - 100;
mainContext.quadraticCurveTo(v877, v878, my.pushData.x - v844, my.pushData.y - v845);
mainContext.stroke();
mainContext.setLineDash([]);
mainContext.lineWidth = 9;
mainContext.globalAlpha = 0.2;
mainContext.stroke();
}
}
mainContext.globalAlpha = 1;
renderMinimap(delta);
textManager.update(delta, mainContext, v844, v845);
for (let v879 = 0; v879 < players.length; ++v879) {
tmpObj = players[v879];
if (tmpObj.visible) {
if (tmpObj.chatCountdown > 0) {
tmpObj.chatCountdown -= delta;
if (tmpObj.chatCountdown <= 0) {
tmpObj.chatCountdown = 0;
}
mainContext.font = "22px Lilita One";
let v880 = mainContext.measureText(tmpObj.chatMessage);
mainContext.textBaseline = "middle";
mainContext.textAlign = "center";
let v881 = tmpObj.x - v844;
let v882 = tmpObj.y - tmpObj.scale - v845 - 130;
let v883 = 47;
let v884 = v880.width + 17;
mainContext.fillStyle = "rgba(0,0,0,0.2)";
mainContext.roundRect(v881 - v884 / 2, v882 - v883 / 2, v884, v883, 6);
mainContext.fill();
mainContext.fillStyle = "#fff";
mainContext.fillText(tmpObj.chatMessage, v881, v882);
}
if (tmpObj.chat.count > 0) {
tmpObj.chat.count -= delta;
if (tmpObj.chat.count <= 0) {
tmpObj.chat.count = 0;
}
mainContext.font = "25px Lilita One";
let v885 = mainContext.measureText(tmpObj.chat.message);
mainContext.textBaseline = "middle";
mainContext.textAlign = "center";
let v886 = tmpObj.x - v844;
let v887 = tmpObj.y - tmpObj.scale - v845 + 140;
let v888 = 47;
let v889 = v885.width + 17;
mainContext.fillStyle = "rgba(0,0,0,0)";
mainContext.roundRect(v886 - v889 / 2, v887 - v888 / 2, v889, v888, 6);
mainContext.fill();
mainContext.fillStyle = "#cc5151";
mainContext.fillText(tmpObj.chat.message, v886, v887);
} else {
tmpObj.chat.count = 0;
}
}
}
if (allChats.length) {
allChats.filter(p1048 => p1048.active).forEach(p1049 => {
if (!p1049.alive) {
if (p1049.alpha <= 1) {
p1049.alpha += delta / 250;
if (p1049.alpha >= 1) {
p1049.alpha = 1;
p1049.alive = true;
}
}
} else {
p1049.alpha -= delta / 5000;
if (p1049.alpha <= 0) {
p1049.alpha = 0;
p1049.active = false;
}
}
if (p1049.active) {
mainContext.font = "20px Hammersmith One";
let v890 = mainContext.measureText(p1049.chat);
mainContext.textBaseline = "middle";
mainContext.textAlign = "center";
let v891 = p1049.x - v844;
let v892 = p1049.y - v845 - 90;
let v893 = 40;
let v894 = v890.width + 15;
mainContext.globalAlpha = p1049.alpha;
mainContext.fillStyle = p1049.owner.isTeam(player) ? "#8ecc51" : "#cc5151";
mainContext.strokeStyle = "rgb(25, 25, 25)";
mainContext.strokeText(p1049.owner.name, v891, v892 - 45);
mainContext.fillText(p1049.owner.name, v891, v892 - 45);
mainContext.lineWidth = 5;
mainContext.fillStyle = "#ccc";
mainContext.strokeStyle = "rgb(25, 25, 25)";
mainContext.roundRect(v891 - v894 / 2, v892 - v893 / 2, v894, v893, 6);
mainContext.stroke();
mainContext.fill();
mainContext.fillStyle = "#fff";
mainContext.strokeStyle = "#000";
mainContext.strokeText(p1049.chat, v891, v892);
mainContext.fillText(p1049.chat, v891, v892);
p1049.y -= delta / 100;
}
});
}
mainContext.globalAlpha = 1;
renderMinimap(delta);
}
window.requestAnimFrame = function () {
return null;
};
window.rAF = function () {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (p1050) {
window.setTimeout(p1050, 1000 / 9);
};
}();
function doUpdate() {
now = performance.now();
delta = now - lastUpdate;
lastUpdate = now;
let v895 = performance.now();
let v896 = v895 - fpsTimer.last;
if (v896 >= 1000) {
fpsTimer.ltime = fpsTimer.time * (1000 / v896);
fpsTimer.last = v895;
fpsTimer.time = 0;
}
fpsTimer.time++;
let v897 = Math.ceil(window.pingTime * 136136126);
if (getEl("fakePing").checked) {
getEl("pingFps").innerHTML = v897 + " | FPS: " + Math.round(fpsTimer.ltime) + " | Packet: " + secPacket + " | AutoMills: " + mills.place + " | CanInsta?: " + instaC.isTrue;
} else {
getEl("pingFps").innerHTML = window.pingTime + " | FPS: " + Math.round(fpsTimer.ltime) + " | Packet: " + secPacket + " | AutoMills: " + mills.place + " | CanInsta?: " + instaC.isTrue;
}
updateGame();
rAF(doUpdate);
ms.avg = Math.round((ms.min + ms.max) / 2);
}
prepareMenuBackground();
doUpdate();
function toggleUseless(p1051) {
getEl("antiBullType").disabled = p1051;
getEl("BuildHealth").disabled = p1051;
}
toggleUseless(useWasd);
let changeDays = {};
window.debug = function () {
my.waitHit = 0;
my.autoAim = false;
instaC.isTrue = false;
traps.inTrap = false;
my.autoPush = false;
pathFind.active = false;
pathFind.chaseNear = false;
itemSprites = [];
objSprites = [];
gameObjectSprites = [];
sendChat("debugging.");
setTimeout(() => {
sendChat("debugging..");
}, 1000);
setTimeout(() => {
sendChat("debugging...");
}, 2000);
};
window.wasdMode = function () {
useWasd = !useWasd;
toggleUseless(useWasd);
};
window.startGrind = function () {
if (getEl("weaponGrind").checked) {
for (let v898 = 0; v898 < Math.PI * 2; v898 += Math.PI / 2) {
checkPlace(player.getItemType(22), v898);
}
}
};
let projects = ["adorable-eight-guppy", "galvanized-bittersweet-windshield"];
let botIDS = 0;
window.connectFillBots = function () {
botSkts = [];
botIDS = 0;
for (let v899 = 0; v899 < projects.length; v899++) {
let v900 = new WebSocket("wss://" + projects[v899] + ".glitch.me");
v900.binaryType = "arraybuffer";
v900.onopen = function () {
v900.ssend = function (p1052) {
let v901 = Array.prototype.slice.call(arguments, 1);
let v902 = window.msgpack.encode([p1052, v901]);
v900.send(v902);
};
for (let v903 = 0; v903 < 4; v903++) {
window.grecaptcha.execute("6LfahtgjAAAAAF8SkpjyeYMcxMdxIaQeh-VoPATP", {
action: "homepage"
}).then(function (p1053) {
let v904 = WS.url.split("wss://")[1].split("?")[0];
v900.ssend("bots", "wss://" + v904 + "?token=re:" + encodeURIComponent(p1053), botIDS);
botSkts.push([v900]);
botIDS++;
});
}
};
v900.onmessage = function (p1054) {
let v905 = new Uint8Array(p1054.data);
let v906 = window.msgpack.decode(v905);
let v907 = v906[0];
v905 = v906[1];
};
}
};
window.destroyFillBots = function () {
botSkts.forEach(p1055 => {
p1055[0].close();
});
botSkts = [];
};
window.tryConnectBots = function () {
for (let v908 = 0; v908 < (bots.length < 3 ? 3 : 4); v908++) {
window.grecaptcha.execute("6LfahtgjAAAAAF8SkpjyeYMcxMdxIaQeh-VoPATP", {
action: "homepage"
}).then(function (p1056) {
botSpawn(p1056);
});
}
};
window.destroyBots = function () {
bots.forEach(p1057 => {
p1057.closeSocket = true;
});
bots = [];
};
window.resBuild = function () {
if (gameObjects.length) {
gameObjects.forEach(p1058 => {
p1058.breakObj = false;
});
breakObjects = [];
}
};
window.toggleBotsCircle = function () {
player.circle = !player.circle;
};
window.toggleVisual = function () {
config.anotherVisual = !config.anotherVisual;
gameObjects.forEach(p1059 => {
if (p1059.active) {
p1059.dir = p1059.lastDir;
}
});
};
window.prepareUI = function (p1060) {
resize();
var v909 = document.getElementById("chatBox");
var v910 = document.getElementById("chatHolder");
var v911 = document.createElement("div");
v911.id = "suggestBox";
var v912 = [];
var v913 = 0;
function f52() {
if (!usingTouch) {
if (v910.style.display == "block") {
if (v909.value) {
sendChat(v909.value);
}
f53();
} else {
storeMenu.style.display = "none";
allianceMenu.style.display = "none";
v910.style.display = "block";
v909.focus();
resetMoveDir();
}
} else {
setTimeout(function () {
var vPrompt2 = prompt("chat message");
if (vPrompt2) {
sendChat(vPrompt2);
}
}, 1);
}
v909.value = "";
(() => {
v913 = 0;
})();
}
function f53() {
v909.value = "";
v910.style.display = "none";
}
UTILS.removeAllChildren(actionBar);
for (let v914 = 0; v914 < items.weapons.length + items.list.length; ++v914) {
(function (p1061) {
UTILS.generateElement({
id: "actionBarItem" + p1061,
class: "actionBarItem",
onmouseout: function () {
showItemInfo();
},
parent: actionBar
});
})(v914);
}
for (let v915 = 0; v915 < items.list.length + items.weapons.length; ++v915) {
(function (p1062) {
let v916 = document.createElement("canvas");
v916.width = v916.height = 66;
let v917 = v916.getContext("2d");
v917.translate(v916.width / 2, v916.height / 2);
v917.imageSmoothingEnabled = false;
v917.webkitImageSmoothingEnabled = false;
v917.mozImageSmoothingEnabled = false;
if (items.weapons[p1062]) {
v917.rotate(Math.PI);
let v918 = new Image();
toolSprites[items.weapons[p1062].src] = v918;
v918.onload = function () {
this.isLoaded = true;
let v919 = 1 / (this.height / this.width);
let v920 = items.weapons[p1062].iPad || 1;
v917.drawImage(this, -(v916.width * v920 * config.iconPad * v919) / 2, -(v916.height * v920 * config.iconPad) / 2, v916.width * v920 * v919 * config.iconPad, v916.height * v920 * config.iconPad);
v917.fillStyle = "rgba(0, 0, 70, 0.2)";
v917.globalCompositeOperation = "source-atop";
v917.fillRect(-v916.width / 2, -v916.height / 2, v916.width, v916.height);
getEl("actionBarItem" + p1062).style.backgroundImage = "url(" + v916.toDataURL() + ")";
};
v918.src = "./../img/weapons/" + items.weapons[p1062].src + ".png";
let vGetEl4 = getEl("actionBarItem" + p1062);
vGetEl4.onclick = UTILS.checkTrusted(function () {
selectWeapon(p1060.weapons[items.weapons[p1062].type]);
});
UTILS.hookTouchEvents(vGetEl4);
} else {
let vGetItemSprite3 = getItemSprite(items.list[p1062 - items.weapons.length], true);
let v921 = Math.min(v916.width - config.iconPadding, vGetItemSprite3.width);
v917.globalAlpha = 1;
v917.drawImage(vGetItemSprite3, -v921 / 2, -v921 / 2, v921, v921);
v917.fillStyle = "rgba(0, 0, 70, 0.1)";
v917.globalCompositeOperation = "source-atop";
v917.fillRect(-v921 / 2, -v921 / 2, v921, v921);
getEl("actionBarItem" + p1062).style.backgroundImage = "url(" + v916.toDataURL() + ")";
let vGetEl5 = getEl("actionBarItem" + p1062);
vGetEl5.onclick = UTILS.checkTrusted(function () {
selectToBuild(p1060.items[p1060.getItemType(p1062 - items.weapons.length)]);
});
UTILS.hookTouchEvents(vGetEl5);
}
})(v915);
}
};
window.profineTest = function (p1063) {
if (p1063) {
let v922 = p1063 + "";
v922 = v922.slice(0, config.maxNameLength);
return v922;
}
};
var uwu = document.getElementById("foodDisplay");
var da = document.getElementById("woodDisplay");
var das = document.getElementById("stoneDisplay");
var dsa = document.getElementById("killCounter");
var ds312a = document.getElementById("scoreDisplay");
var dsa2 = document.getElementById("chatBox");
var ds312a2 = document.getElementById("leaderboard");
var ds312a3 = document.getElementById("ageText");
var ds312a4 = document.getElementById("actionBar");
var ds312a5 = document.getElementById("pingDisplay");
var ds312a6 = document.getElementById("upgradeCounter");
var elements = [uwu, da, das, dsa, ds312a, dsa2, ds312a2, ds312a3, ds312a4, ds312a5, ds312a6];
elements.forEach(function (p1064) {
if (p1064) {
p1064.style.fontFamily = "Lilita One";
}
});
const getContextHandler = {
apply(p1065, p1066, p1067) {
const v923 = p1065.apply(p1066, p1067);
if (p1066.id == "gameCanvas") {
context = v923;
}
return v923;
}
};
const requestAnimationFrameHandler = {
apply(p1068, p1069, p1070) {
if (context) {
context.globalAlpha = 0.3;
}
return p1068.apply(p1069, p1070);
}
};
let context = null;
Object.setPrototypeOf(getContextHandler, null);
Object.setPrototypeOf(requestAnimationFrameHandler, null);
HTMLCanvasElement.prototype.getContext = new Proxy(HTMLCanvasElement.prototype.getContext, getContextHandler);
window.requestAnimationFrame = new Proxy(window.requestAnimationFrame, requestAnimationFrameHandler);
// ==UserScript==
// @name MooMoo.io Script Unpatcher (Any Hack) (All patches, fixes packets)
// @namespace http://tampermonkey.net/
// @version 100000
// @description Rewrites packets to most recent version (e.g. 33 -> f)
// @author JavedPension
// @match *://*.moomoo.io/*
// @require https://greasyfork.org/scripts/423602-msgpack/code/msgpack.js
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/520849/MooMooio%20Script%20Unpatcher%20%28Any%20Hack%29%20%28All%20patches%2C%20fixes%20packets%29.user.js
// @updateURL https://update.greasyfork.icu/scripts/520849/MooMooio%20Script%20Unpatcher%20%28Any%20Hack%29%20%28All%20patches%2C%20fixes%20packets%29.meta.js
// ==/UserScript==
/* How to use
Copy and paste the code below to the end of your hack.
This technically will auto-fix all hacks after the first update in 2021.
If you do not have msgpack locally referencable, include the `// @require` line in your mod metadata as done above.
*/
const PACKET_MAP = {
// wont have all old packets, since they conflict with some of the new ones, add them yourself if you want to unpatch mods that are that old.
"33": "9",
// "7": "K",
"ch": "6",
"pp": "0",
"13c": "c",
// most recent packet changes
"f": "9",
"a": "9",
"d": "F",
"G": "z"
}
let originalSend = WebSocket.prototype.send;
WebSocket.prototype.send = new Proxy(originalSend, {
apply: ((target, websocket, argsList) => {
let decoded = msgpack.decode(new Uint8Array(argsList[0]));
if (PACKET_MAP.hasOwnProperty(decoded[0])) {
decoded[0] = PACKET_MAP[decoded[0]];
}
return target.apply(websocket, [msgpack.encode(decoded)]);
})
});