// ==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
// ==/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<style>\nh1 {\nfont-size: 50px;\n}\n</style>\n\n<h1 id=\"loading\">Loading...</h1>\n";
document.body.appendChild(backgroundDiv);
setTimeout(() => {
backgroundDiv.innerHTML = "\n <style>\n h1 {\n font-size: 50px;\n }\n </style>\n <h1 id=\"loaded\">Game Loaded!</h1>\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 <h3 style=\"\n margin-top: 0;\n text-align: center;\n text-shadow: 0 0 5px rgba(255, 192, 203, 0.8),\n 0 0 10px rgba(255, 192, 203, 0.6),\n 0 0 15px rgba(255, 192, 203, 0.4);\n color: #fff;\n \">\n Unknown Client\n <br>\n <span class=\"subText\"> Menu By CX </span>\n </h3>\n <div id=\"tabs\">\n <button id=\"visualTab\" class=\"tab active\">\n <img src=\"https://i.ibb.co/z5v8XYc/eyebrow-removebg-preview.png\" class=\"tabIcon\"> Visuals\n </button>\n <button id=\"combatTab\" class=\"tab\">\n <img src=\"https://i.ibb.co/85pZqGk/sword-removebg-preview.png\" class=\"tabIcon\"> Combat\n </button>\n <button id=\"miscTab\" class=\"tab\">\n <img src=\"https://i.ibb.co/gytFzqL/more-1-removebg-preview.png\" class=\"tabIcon\"> Misc\n </button>\n <button id=\"devTab\" class=\"tab\">\n <img src=\"https://i.ibb.co/s6nGQS7/web-development-removebg-preview.png\" class=\"tabIcon\"> Developing\n </button>\n</div>\n\n";
v5.innerHTML = "\n <div class=\"right-panel\" onmousedown=\"startDrag(event)\">\n <div id=\"visualContent\" class=\"content active\">\n <h4>Visual</h4>\n <label><input type=\"checkbox\" id=\"healAnim\" checked> Heal/Damage Animations</label><br>\n <label><input type=\"checkbox\" id=\"notifs\" checked> Notifications</label><br>\n <label><input type=\"checkbox\" id=\"dmgtext\" checked> Damage Text</label><br>\n <label><input type=\"checkbox\" id=\"snow\"> Snow</label><br>\n <label><input type=\"checkbox\" id=\"fakePing\" checked> FakePing</label><br>\n <label><input type=\"checkbox\" id=\"font\" checked> Font</label><br>\n <label><input type=\"checkbox\" id=\"placeVis\"> Render Placers</label><br>\n <label><input type=\"checkbox\" id=\"daytime\"> daytime?</label><br>\n <label><input type=\"checkbox\" id=\"spinner\"> Spin</label><br>\n <label><input type=\"checkbox\" id=\"cleanmode\" checked> Cleanmode</label><br>\n <label><input type=\"checkbox\" id=\"showgrid\"> showGrid?</label><br>\n <label for=\"playerShadowIntensity\"> Shadow Intensity:</label>\n <input type=\"range\" id=\"playerShadowIntensity\" class=\"slider\" value=\"10\" min=\"1\" max=\"20\" oninput=\"document.getElementById('shadowIntensityValue').textContent = this.value\">\n <span id=\"shadowIntensityValue\">10</span>\n <br>\n <label for=\"BuildHealth\">BuildHealth Style:</label>\n <select id=\"BuildHealth\" class=\"styledSelect\">\n <option value=\"bh1\">Rectangle</option>\n <option value=\"bh2\">Filled Circle</option>\n <option value=\"bh3\" selected>Outlined Circle</option>\n </select><br>\n <label for=\"Camera\">CameraType:</label>\n <select id=\"cameramodes\" class=\"styledSelect\">\n <option value=\"camera1\">still</option>\n <option value=\"camera2\">smooth</option>\n <option value=\"camera3\" selected>Smooth + mouse</option>\n </select><br>\n <label><input type=\"checkbox\" id=\"combatZoom\" checked> Combat Zoom</label><br>\n <br>\n </div>\n </div>\n <div id=\"combatContent\" class=\"content\">\n <h4>Combat</h4>\n <label><input type=\"checkbox\" id=\"healingBeta\" checked> Heal </label><br>\n <label><input type=\"checkbox\" id=\"autoPush\" checked> Auto Push</label><br>\n <label><input type=\"checkbox\" id=\"smartInsta\" checked> AutoInsta</label><br>\n <label><input type=\"checkbox\" id=\"antispike\" checked> Anti Spike</label><br>\n <label><input type=\"checkbox\" id=\"slowOT\"> SlowOneTick</label><br>\n <label><input type=\"checkbox\" id=\"safeWalk\" checked> safewalk</label><br>\n <label><input type=\"checkbox\" id=\"killChat\" checked> Kill Chat</label><br>\n <input type=\"text\" id=\"killChatInput\" value=\"Auto-GG_Magma_Mod\" placeholder=\"custom killchat\" oninput=\"document.getElementById('killChat').textContent = this.value\"> <br>\n <label><input type=\"checkbox\" id=\"autoBuy\" checked> Auto Buy</label><br>\n <label><input type=\"checkbox\" id=\"autoBuyEquip\" chcked> Auto Buy Equip</label><br>\n <label><input type=\"checkbox\" id=\"preTick\" checked> PreTick</label><br>\n <label><input type=\"checkbox\" id=\"revTick\" checked> RevTick</label><br>\n <label><input type=\"checkbox\" id=\"autoPlace\" checked> Auto Place</label><br>\n <label><input type=\"checkbox\" id=\"autoReplace\" checked> Auto Replace</label><br>\n <label><input type=\"checkbox\" id=\"spikeTick\" checked> Spike Tick</label><br>\n <label><input type=\"checkbox\" id=\"antiTrap\" checked> AntiTrap</label><br>\n <label><input type=\"checkbox\" id=\"attackDir\" > attackDir</label><br>\n <label><input type=\"checkbox\" id=\"noDir\" checked> noDir</label><br>\n <label><input type=\"checkbox\" id=\"showDir\" checked> ShowDir</label><br>\n <label><input type=\"checkbox\" id=\"autoRespawn\"> AutoRespawn</label><br>\n <label for=\"AntiBullType\">AntiBullMode:</label>\n <select id=\"antiBullType\" class=\"styledSelect\">\n <option value=\"noab\" selected>None</option>\n <option value=\"abreload\">When Reloaded</option>\n <option value=\"abalway\" >Primary Reloaded</option>\n </select><br>\n </label>\n </div>\n <div id=\"miscContent\" class=\"content\">\n <h4>Misc</h4>\n <label><input type=\"checkbox\" id=\"weaponGrind\" onclick=\"window.startGrind()\"> Weapon Grinder</label><br>\n <label><input type=\"checkbox\" id=\"safeAntiSpikeTick\" checked> Safe AntiSpikeTick</label><br>\n <label><input type=\"checkbox\" id=\"turretCombat\" checked> Turret Gear Combat Assistance</label><br>\n <label><input type=\"checkbox\" id=\"backupNobull\" checked> Backup Nobull Insta</label><br>\n <label><input type=\"checkbox\" id=\"autoUpgrade\" checked> Smart Upgrade</label><br>\n <label><input type=\"checkbox\" id=\"autorespond\" > AutoRespond</label><br>\n <label><input type=\"checkbox\" id=\"autoSync\" checked> AutoSync (press \"0\")</label><br>\n <label for=\"AutoInsta\">AutoInsta Mode:</label>\n <select id=\"AutoInsta\" class=\"styledSelect\">\n <option value=\"always\">Always Insta</option>\n <option value=\"smart\" selected>Insta on 5 Shame</option>\n </select><br>\n </label>\n <label for=\"syncMode\">SyncMode:</label>\n <select id=\"synctype\" class=\"styledSelect\">\n <option value=\"rangesync\">Ranged</option>\n <option value=\"meleesync\">Melee</option>\n <option value=\"instasync\">Insta-sync</option>\n </select><br>\n </div>\n\n <div id=\"devContent\" class=\"content\">\n <h4>Developer</h4>\n <label><input type=\"checkbox\" id=\"devMode\" checked> DevMode</label><br>\n <label>Menu Color: <input type=\"color\" id=\"menuColor\" value=\"#2c2f33\"></label><br>\n <label>Tab Color: <input type=\"color\" id=\"tabColor\" value=\"#7289da\"></label><br>\n </div>\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 = "<br>";
if (p143 > 0) {
v104 = "";
for (let v105 = 0; v105 < p143; v105++) {
v104 += "<br>";
}
}
this.add(v104);
}
checkBox(p144) {
let v106 = "<input type = \"checkbox\"";
if (p144.id) {
v106 += " id = " + p144.id;
}
if (p144.style) {
v106 += " style = " + p144.style.replaceAll(" ", "");
}
if (p144.class) {
v106 += " class = " + p144.class;
}
if (p144.checked) {
v106 += " checked";
}
if (p144.onclick) {
v106 += " onclick = " + p144.onclick;
}
v106 += ">";
this.add(v106);
}
text(p145) {
let v107 = "<input type = \"text\"";
if (p145.id) {
v107 += " id = " + p145.id;
}
if (p145.style) {
v107 += " style = " + p145.style.replaceAll(" ", "");
}
if (p145.class) {
v107 += " class = " + p145.class;
}
if (p145.size) {
v107 += " size = " + p145.size;
}
if (p145.maxLength) {
v107 += " maxLength = " + p145.maxLength;
}
if (p145.value) {
v107 += " value = " + p145.value;
}
if (p145.placeHolder) {
v107 += " placeHolder = " + p145.placeHolder.replaceAll(" ", " ");
}
v107 += ">";
this.add(v107);
}
select(p146) {
let v108 = "<select";
if (p146.id) {
v108 += " id = " + p146.id;
}
if (p146.style) {
v108 += " style = " + p146.style.replaceAll(" ", "");
}
if (p146.class) {
v108 += " class = " + p146.class;
}
v108 += ">";
for (let v109 in p146.option) {
v108 += "<option value = " + p146.option[v109].id;
if (p146.option[v109].selected) {
v108 += " selected";
}
v108 += ">" + v109 + "</option>";
}
v108 += "</select>";
this.add(v108);
}
button(p147) {
let v110 = "<button";
if (p147.id) {
v110 += " id = " + p147.id;
}
if (p147.style) {
v110 += " style = " + p147.style.replaceAll(" ", "");
}
if (p147.class) {
v110 += " class = " + p147.class;
}
if (p147.onclick) {
v110 += " onclick = " + p147.onclick;
}
v110 += ">";
if (p147.innerHTML) {
v110 += p147.innerHTML;
}
v110 += "</button>";
this.add(v110);
}
selectMenu(p148) {
let v111 = "<select";
if (!p148.id) {
alert("please put id skid");
return;
}
window[p148.id + "Func"] = function () {};
if (p148.id) {
v111 += " id = " + p148.id;
}
if (p148.style) {
v111 += " style = " + p148.style.replaceAll(" ", "");
}
if (p148.class) {
v111 += " class = " + p148.class;
}
v111 += " onchange = window." + (p148.id + "Func") + "()";
v111 += ">";
let v112;
let v113 = 0;
for (let v114 in p148.menu) {
v111 += "<option value = " + ("option_" + v114) + " id = " + ("O_" + v114);
if (p148.menu[v114]) {
v111 += " checked";
}
v111 += " style = \"color: " + (p148.menu[v114] ? "#000" : "") + "; background: " + (p148.menu[v114] ? "" : "") + ";\">" + v114 + "</option>";
v113++;
}
v111 += "</select>";
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("<style>" + p156 + "</style>");
}
}
;
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] + "<span class='itemInfoReqVal'> x" + p597.req[v381 + 1] + "</span>",
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.org/scripts/520849/MooMooio%20Script%20Unpatcher%20%28Any%20Hack%29%20%28All%20patches%2C%20fixes%20packets%29.user.js
// @updateURL https://update.greasyfork.org/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)]);
})
});