15
15
let a = document.createElement("link");
a.rel = "stylesheet";
a.href = "https://fonts.googleapis.com/css?family=Ubuntu:700";
a.type = "text/css";
document.body.append(a);
let b = document.createElement("script");
b.src =
"https://rawgit.com/kawanet/msgpack-lite/master/dist/msgpack.min.js";
document.body.append(b);
},
main: () => {
if (!c) {
return;
}
"use strict";
window.oncontextmenu = function () {
return false;
};
let a = window.config;
a.clientSendRate = 0;
a.serverUpdateRate = 9;
a.deathFadeout = 0;
a.isSandbox = window.location.hostname == "sandbox.moomoo.io";
a.skinColors = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec",
"#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#91b2db"];
a.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
}];
a.anotherVisual = false;
a.useWebGl = false;
a.resetRender = false;
function b(a) {
return new Promise(b => {
setTimeout(() => {
b();
}, a);
});
}
let d = false;
let g = [];
let i;
if (typeof Storage !== "undefined") {
i = true;
}
function k(a, b) {
if (i) {
localStorage.setItem(a, b);
}
}
function l(a) {
if (i) {
localStorage.removeItem(a);
}
}
function m(a) {
if (i) {
return localStorage.getItem(a);
}
return null;
}
function n(a) { }
let o = function (a, b) {
try {
let c = JSON.parse(m(a));
if (typeof c === "object") {
return b;
} else {
return c;
}
} catch (a) {
alert("dieskid");
return b;
}
};
function p() {
return {
help: {
desc: "Show Commands",
action: function (a) {
for (let b in r) {
Z("/" + b, r[b].desc, "lime", 1);
}
}
},
clear: {
desc: "Clear Chats",
action: function (a) {
_();
yd("Chat clear complete", "Done", "#99ee99", 1);
}
},
autop: {
desc: "autopushing",
action: function (a) {
n();
yd("autopush true", "Done", "#99ee99", 1);
}
},
debug: {
desc: "Debug Mod For Development",
action: function (a) {
ge(Ga);
yd("Debug Complete", "Done", "#99ee99", 1);
}
},
play: {
desc: "Play Music ( /play [link] )",
action: function (a) {
let b = a.split(" ");
if (b[1]) {
let a = new Audio(b[1]);
a.play();
} else {
Z("Warn", "Enter Link ( /play [link] )", "#99ee99",
1);
}
}
},
bye: {
desc: "Leave Game",
action: function (a) {
window.leave();
}
}
};
}
function q() {
return {
killChat: false,
autoBuy: false,
autoBuyEquip: true,
autoq: false,
autoPush: true,
revTick: false,
spikeTick: true,
predictTick: true,
autoPlace: true,
autoReplace: true,
antiTrap: true,
slowOT: false,
attackDir: false,
noDir: false,
showDir: true,
autoRespawn: false
};
}
let r = p();
let s = q();
window.removeConfigs = function () {
for (let a in s) {
l(a, s[a]);
}
};
for (let a in s) {
s[a] = o(a, s[a]);
}
window.changeMenu = function () { };
window.debug = function () { };
window.toggleNight = 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 = f ? 86 : 0;
class t {
constructor(a, b) {
this.inGame = false;
this.lover = a + b;
this.baby = "ae86";
this.isBlack = 0;
this.webSocket = undefined;
this.checkBaby = function () {
if (this.baby !== "ae86") {
this.isBlack++;
} else {
this.isBlack--;
}
if (this.isBlack >= 1) {
return "bl4cky";
}
return "noting for you";
};
this.x2 = 0;
this.y2 = 0;
this.chat = "Imagine playing this badass game XDDDDD";
this.summon = function (a) {
this.x2 = a.x;
this.y2 = a.y;
this.chat = a.name + " ur so bad XDDDD";
};
this.commands = function (a) {
if (a == "rv3link") {
window.open("https://florr.io/");
}
if (a == "woah") {
window.open("https://www.youtube.com/watch?
v=MO0AGukzj6M");
}
return a;
};
this.dayte = "11yearold";
this.memeganoob = "69yearold";
this.startDayteSpawn = function (a) {
let b = setInterval(() => {
this.x2 = a.x + 20;
this.y2 = a.y - 20;
this.chat = "UR SO BAD LOL";
if (a.name == "ae86") {
this.chat = "omg ae86 go run";
setTimeout(() => {
this.inGame = false;
clearInterval(b);
}, 1000);
}
}, 1234);
};
this.AntiChickenModV69420 = function (a) {
return "!c!dc user " + a.name;
};
}
}
;
class u {
constructor(a) {
this.element = a;
}
add(a) {
if (!this.element) {
return undefined;
}
this.element.innerHTML += a;
}
newLine(a) {
let b = "<br>";
if (a > 0) {
b = "";
for (let c = 0; c < a; c++) {
b += "<br>";
}
}
this.add(b);
}
checkBox(a) {
let b = "<input type = \"checkbox\"";
if (a.id) {
b += " id = " + a.id;
}
if (a.style) {
b += " style = " + a.style.replaceAll(" ", "");
}
if (a.class) {
b += " class = " + a.class;
}
if (a.checked) {
b += " checked";
}
if (a.onclick) {
b += " onclick = " + a.onclick;
}
b += ">";
this.add(b);
}
text(a) {
let b = "<input type = \"text\"";
if (a.id) {
b += " id = " + a.id;
}
if (a.style) {
b += " style = " + a.style.replaceAll(" ", "");
}
if (a.class) {
b += " class = " + a.class;
}
if (a.size) {
b += " size = " + a.size;
}
if (a.maxLength) {
b += " maxLength = " + a.maxLength;
}
if (a.value) {
b += " value = " + a.value;
}
if (a.placeHolder) {
b += " placeHolder = " + a.placeHolder.replaceAll(" ",
" ");
}
b += ">";
this.add(b);
}
select(a) {
let b = "<select";
if (a.id) {
b += " id = " + a.id;
}
if (a.style) {
b += " style = " + a.style.replaceAll(" ", "");
}
if (a.class) {
b += " class = " + a.class;
}
b += ">";
for (let c in a.option) {
b += "<option value = " + a.option[c].id;
if (a.option[c].selected) {
b += " selected";
}
b += ">" + c + "</option>";
}
b += "</select>";
this.add(b);
}
button(a) {
let b = "<button";
if (a.id) {
b += " id = " + a.id;
}
if (a.style) {
b += " style = " + a.style.replaceAll(" ", "");
}
if (a.class) {
b += " class = " + a.class;
}
if (a.onclick) {
b += " onclick = " + a.onclick;
}
b += ">";
if (a.innerHTML) {
b += a.innerHTML;
}
b += "</button>";
this.add(b);
}
selectMenu(a) {
let b = "<select";
if (!a.id) {
alert("please put id skid");
return;
}
window[a.id + "Func"] = function () { };
if (a.id) {
b += " id = " + a.id;
}
if (a.style) {
b += " style = " + a.style.replaceAll(" ", "");
}
if (a.class) {
b += " class = " + a.class;
}
b += " onchange = window." + (a.id + "Func") + "()";
b += ">";
let c;
let d = 0;
for (let c in a.menu) {
b += "<option value = " + ("option_" + c) + " id = " +
("O_" + c);
if (a.menu[c]) {
b += " checked";
}
b += " style = \"color: " + (a.menu[c] ? "#000" : "#fff") +
"; background: " + (a.menu[c] ? "#8ecc51" : "#cc5151") + ";\">" + c + "</option>";
d++;
}
b += "</select>";
this.add(b);
d = 0;
for (let b in a.menu) {
window[b + "Func"] = function () {
a.menu[b] = h("check_" + b).checked ? true : false;
k(b, a.menu[b]);
h("O_" + b).style.color = a.menu[b] ? "#000" : "#fff";
h("O_" + b).style.background = a.menu[b] ? "#8ecc51" :
"#cc5151";
};
this.checkBox({
id: "check_" + b,
style: "display: " + (d == 0 ? "inline-block" : "none")
+ ";",
class: "checkB",
onclick: "window." + (b + "Func") + "()",
checked: a.menu[b]
});
d++;
}
c = "check_" + h(a.id).value.split("_")[1];
window[a.id + "Func"] = function () {
h(c).style.display = "none";
c = "check_" + h(a.id).value.split("_")[1];
h(c).style.display = "inline-block";
};
}
}
;
let v = false;
class w {
static init() {
if (document.activeElement.id.toLowerCase() !== "chatbox") {
let a = document.createElement("div");
let b = [];
let c = 0;
function d() {
let d = document.createElement("div");
H = d;
d.style = "font-size: 12px; color: white; overflow-y:
scroll; height: 150px;";
a.appendChild(d);
b[c] = d;
}
function e(a) {
if (!b[c]) {
d();
}
b[c].appendChild(a);
}
return {
add: function (a) {
let b = document.createElement(a.tag || "div");
Object.keys(a).forEach(c => {
b[c == "html" ? "innerHTML" : c] = a[c];
});
e(b);
return b;
},
newline: function (a) {
if (!a) {
e(document.createElement("br"));
} else {
for (let b = 0; b < a; b++) {
e(document.createElement("br"));
}
}
},
prepend: function (b) {
b.appendChild(a);
},
writeStyle: function (b) {
a.style = b;
},
writeHTML: function (b) {
a.innerHTML += b;
},
hide: function () {
a.style.left = "-999px";
},
show: function () {
a.style.left = "20px";
},
configOptions: function (b) {
a.innerHTML += b;
},
addToggleHotkeys: function (b) {
addEventListener("keydown", function (c) {
if (c.keyCode == b) {
a.style.left = a.style.left == "20px" ? "-
999px" : "20px";
v = a.style.left != "20px" ? true : false;
}
});
},
addButton: function (a, b, c) {
a = Object.entries(a);
let d = 0;
function e() {
eval(a[d][1]);
}
e();
this.add({
tag: "onfg",
innerHTML: a[d][0] + " "
}).addEventListener("click", function () {
d = (d + 1) % a.length;
e();
this.innerHTML = a[d][0];
});
},
addConfigDropdown: function (b, c, d) {
let e = "<div style=\"margin-bottom: 10px;\">";
e += "<label for=\"" + c + "\">" + b + "</label>";
e += "<select id=\"" + c + "\" style=\"width:
100%;\">";
for (const a of d) {
e += "<option value=\"" + a.value + "\">" +
a.label + "</option>";
}
e += "</select>";
e += "</div>";
a.innerHTML += e;
},
configOptions: function (b, c) {
a.innerHTML += "\n <div>\n <input
type=\"checkbox\" id=\"" + c + "\" checked>\n <label for=\"" + c +
"\">Enable Config</label>\n </div>\n " + b + "\n ";
let d = document.getElementById(c);
d.addEventListener("change", function () {
let a = document.getElementById("configType");
a.disabled = !this.checked;
});
},
addEnableButton: function (a, b) {
function c() {
x.currentVal = x[b].enabled;
return x.currentVal;
}
;
function d(a) {
if (x[b].enabled == true) {
x[b].enabled = false;
} else {
x[b].enabled = true;
}
}
;
this.add({
tag: "span",
innerHTML: a + " "
});
this.add({
tag: "input",
type: "checkbox",
checked: c()
}).addEventListener("change", function () {
d(!c());
});
},
addTab: function (a) {
this.add({
tag: "span",
innerHTML: [...Array(a)].map(a =>
" ").join("")
});
}
};
}
}
}
let x = {
currentValue: "",
spikeSync: {
enabled: true
},
performanceMode: {
enabled: false
},
nativeGraphics: {
enabled: false
},
dmgText: {
enabled: true
},
buildingDmgText: {
enabled: true
},
useWasd: {
enabled: false
},
autoGrind: {
enabled: false
},
pvpMode: {
enabled: true
},
autoPush: {
enabled: true
},
placementIndicator: {
enabled: true
},
FPSBoostBeta: {
enabled: true
},
turretAssistance: {
enabled: true
},
resolutionValue: {
value: 0.9
},
autoQual: {
enabled: false
},
autoInsta: {
enabled: true
},
preplace: {
enabled: true
},
autoplace: {
enabled: true
},
autoreplace: {
enabled: true
},
bots: {
spawn: function () { },
spawned: false
},
autobreak: {
enabled: true
},
LAP: {
enabled: false
}
};
var y = true;
var z = false;
var A = 0;
var B = 0;
var C = Date.now();
let D = [];
let E = [];
let F = [];
let G = Date.now();
let H;
let I = w.init();
I.writeHTML("<h3 style=\"font-size: 20px; color: white;\"
class=\"indent\">GT86 Menu</h3>");
I.writeStyle("padding: 10px;\nbackground-color: rgba(0, 0, 0, 0.25);\
nborder-radius: 5px;\nposition: absolute;\nleft: 20px;\ntop: 20px;\nmin-width:
300px;\nmax-width: 300px;\nmin-height: 200;\nmax-height: 200;");
I.newline();
I.newline();
I.addEnableButton("dir", "autoInsta");
I.newline(2);
I.addEnableButton("sub to zf on yt", "nativeGraphics");
I.newline(2);
I.addEnableButton("autoq", "placementIndicator");
I.newline(3);
I.addEnableButton("autoplace: ", "autoplace");
I.newline();
I.addEnableButton("ab super beta:", "autobreak");
I.newline();
I.addEnableButton("replace: ", "autoreplace");
I.newline();
I.addEnableButton("auto grind: ", "autoGrind");
I.newline(2);
I.add({
tag: "span",
html: ""
});
I.addTab(2);
I.add({
tag: "select",
id: "autochats",
html: "\n <option selected
value=\"thetop\">Initial D - The Top</option>\n <option
value=\"gas\">Initial D - Gas Gas Gas</option>\n <option
value=\"dejavu\">Initial D - Deja Vu</option>\n <option
value=\"norival\">Alaina Cross - No Rival</option>\n<option
value=\"legendsNeverDie\">LoL (Worlds 2017) - Legends Never Die</option>\n
<option value=\"giants\">V O E - Giants</option>\n \n
"
});
I.newline();
I.prepend(document.body);
I.addToggleHotkeys(27);
let J = H.getElementsByTagName("input");
let K = document.getElementById("autochats");
K.addEventListener("change", () => {
K.blur();
});
for (let a = 0; a < J.length; a++) {
if (J[a].type == "checkbox") {
J[a].addEventListener("change", () => {
J[a].blur();
});
}
if (J[a].type == "range") {
J[a].addEventListener("change", () => {
J[a].blur();
});
}
}
function L(a) {
return a.replaceAll("&", "&").replaceAll("<",
"<").replaceAll(">", ">");
}
class M {
constructor() {
this.element = null;
this.action = null;
this.divElement = null;
this.startDiv = function (a, b) {
let c = document.createElement("div");
if (a.id) {
c.id = a.id;
}
if (a.style) {
c.style = a.style;
}
if (a.class) {
c.className = a.class;
}
this.element.appendChild(c);
this.divElement = c;
let d = new u(c);
if (typeof b == "function") {
b(d);
}
};
this.addDiv = function (a, b) {
let c = document.createElement("div");
if (a.id) {
c.id = a.id;
}
if (a.style) {
c.style = a.style;
}
if (a.class) {
c.className = a.class;
}
if (a.appendID) {
h(a.appendID).appendChild(c);
}
this.divElement = c;
let d = new u(c);
if (typeof b == "function") {
b(d);
}
};
}
set(a) {
this.element = h(a);
this.action = new u(this.element);
}
resetHTML(a) {
if (a) {
this.element.innerHTML = "";
} else {
this.element.innerHTML = "";
}
}
setStyle(a) {
this.element.style = a;
}
setCSS(a) {
this.action.add("<style>" + a + "</style>");
}
}
;
let N = new M();
let O = document.createElement("div");
O.id = "nightMode";
document.body.appendChild(O);
let P = document.createElement("div");
P.id = "menuDiv";
document.body.appendChild(P);
N.set("menuDiv");
N.setStyle("\n position: absolute;\n left: 20px;\
n top: 20px;\ndisplay: none;\n ");
N.resetHTML();
N.setCSS("\n .menuClass{\n color: #fff;\
ndisplay: none;\n font-size: 31px;\n text-align:
left;\n padding: 10px;\n padding-top: 7px;\n
padding-bottom: 5px;\n width: 300px;\n background-
color: rgba(0, 0, 0, 0.25);\n -webkit-border-radius: 4px;\n
-moz-border-radius: 4px;\n border-radius: 4px;\n }\n
.menuC {\n display: none;\n font-
family: \"Hammersmith One\";\n font-size: 12px;\n
max-height: 180px;\n overflow-y: scroll;\n -webkit-
touch-callout: none;\n -webkit-user-select: none;\n -
khtml-user-select: none;\n -moz-user-select: none;\n
-ms-user-select: none;\n user-select: none;\n }\n
.menuB {\n text-align: center;\n background-color:
rgb(25, 25, 25);\n color: #fff;\n -webkit-border-
radius: 4px;\n -moz-border-radius: 4px;\n border-
radius: 4px;\n border: 2px solid #000;\n cursor:
pointer;\n }\n .menuB:hover {\n border: 2px
solid #fff;\n }\n .menuB:active {\n color:
rgb(25, 25, 25);\n background-color: rgb(200, 200, 200);\n
}\n .customText {\n color: #000;\n -
webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n
border-radius: 4px;\n border: 2px solid #000;\n }\n
.customText:focus {\n background-color: yellow;\n }\n
.checkB {\n position: relative;\n top: 2px;\n
accent-color: #888;\n cursor: pointer;\n }\
n .Cselect {\n -webkit-border-radius: 4px;\n
-moz-border-radius: 4px;\n border-radius: 4px;\n
background-color: rgb(75, 75, 75);\n color: #fff;\n
border: 1px solid #000;\n }\n #menuChanger {\n
position: absolute;\n right: 10px;\ndisplay: none;\n
top: 10px;\n background-color: rgba(0, 0, 0, 0);\n
color: #fff;\n border: none;\n cursor: pointer;\n
}\n #menuChanger:hover {\n color: #000;\n }\n
::-webkit-scrollbar {\n width: 10px;\n }\n ::-
webkit-scrollbar-track {\n opacity: 0;\n }\
n ::-webkit-scrollbar-thumb {\n background-color: rgb(25,
25, 25);\n -webkit-border-radius: 4px;\n -moz-border-
radius: 4px;\n border-radius: 4px;\n }\n ::-
webkit-scrollbar-thumb:active {\n background-color: rgb(230, 230,
230);\n }\n ");
N.startDiv({
id: "menuHeadLine",
class: "menuClass"
}, a => {
a.add("Mod:");
a.button({
id: "menuChanger",
class: "material-icons",
innerHTML: "sync",
onclick: "window.changeMenu()"
});
N.addDiv({
id: "menuButtons",
style: "display: block; overflow-y: visible;",
class: "menuC",
appendID: "menuHeadLine"
}, a => {
a.button({
class: "menuB",
innerHTML: "Debug",
onclick: "window.debug()"
});
a.button({
class: "menuB",
innerHTML: "Night Mode",
onclick: "window.toggleNight()"
});
});
N.addDiv({
id: "menuMain",
style: "display: block",
class: "menuC",
appendID: "menuHeadLine"
}, a => {
a.button({
class: "menuB",
innerHTML: "Toggle Wasd Mode",
onclick: "window.wasdMode()"
});
a.newLine();
a.add("Weapon Grinder: ");
a.checkBox({
id: "weaponGrind",
class: "checkB",
onclick: "window.startGrind()"
});
a.newLine(2);
N.addDiv({
style: "font-size: 20px; color: #99ee99;",
appendID: "menuMain"
}, a => {
a.add("Developing Settings:");
});
a.add("New Healing Beta:");
a.checkBox({
id: "healingBeta",
class: "checkB",
checked: true
});
a.newLine();
});
N.addDiv({
id: "menuConfig",
class: "menuC",
appendID: "menuHeadLine"
}, a => {
a.add("AutoPlacer Placement Tick: ");
a.text({
id: "autoPlaceTick",
class: "customText",
value: "2",
size: "2em",
maxLength: "1"
});
a.newLine();
a.add("Configs: ");
a.selectMenu({
id: "configsChanger",
class: "Cselect",
menu: s
});
a.newLine();
a.add("InstaKill Type: ");
a.select({
id: "instaType",
class: "Cselect",
option: {
OneShot: {
id: "oneShot",
selected: true
},
Spammer: {
id: "spammer"
}
}
});
a.newLine();
a.add("AntiBull Type: ");
a.select({
id: "antiBullType",
class: "Cselect",
option: {
"Disable AntiBull": {
id: "noab",
selected: true
},
"When Reloaded": {
id: "abreload"
},
"Primary Reloaded": {
id: "abalway"
}
}
});
a.newLine();
a.add("Backup Nobull Insta: ");
a.checkBox({
id: "backupNobull",
class: "checkB",
checked: true
});
a.newLine();
a.add("Turret Gear Combat Assistance: ");
a.checkBox({
id: "turretCombat",
class: "checkB",
checked: true
});
a.newLine();
a.add("Safe AntiSpikeTick: ");
a.checkBox({
id: "safeAntiSpikeTick",
class: "checkB",
checked: true
});
a.newLine();
});
N.addDiv({
id: "menuOther",
class: "menuC",
appendID: "menuHeadLine"
}, a => {
a.button({
class: "menuB",
innerHTML: "Connect Bots",
onclick: "window.tryConnectBots()"
});
a.button({
class: "menuB",
innerHTML: "Disconnect Bots",
onclick: "window.destroyBots()"
});
a.newLine();
a.button({
class: "menuB",
innerHTML: "Connect FBots",
onclick: "window.connectFillBots()"
});
a.button({
class: "menuB",
innerHTML: "Disconnect FBots",
onclick: "window.destroyFillBots()"
});
a.newLine();
a.button({
class: "menuB",
innerHTML: "Reset Break Objects",
onclick: "window.resBuild()"
});
a.newLine();
a.add("Break Objects Range: ");
a.text({
id: "breakRange",
class: "customText",
value: "700",
size: "3em",
maxLength: "4"
});
a.newLine();
a.add("Predict Movement Type: ");
a.select({
id: "predictType",
class: "Cselect",
option: {
"Disable Render": {
id: "disableRender",
selected: true
},
"X/Y and 2": {
id: "pre2"
},
"X/Y and 3": {
id: "pre3"
}
}
});
a.newLine();
a.add("Render Placers: ");
a.checkBox({
id: "placeVis",
class: "checkB",
checked: false
});
a.newLine();
a.add("Visuals: ");
a.select({
id: "visualType",
class: "Cselect",
option: {
"Old Shit": {
id: "ueh1"
},
"New shit": {
id: "ueh2",
selected: true
}
}
});
a.newLine(2);
a.button({
class: "menuB",
innerHTML: "Toggle Fbots Circle",
onclick: "window.toggleBotsCircle()"
});
a.newLine();
a.add("Circle Rad: ");
a.text({
id: "circleRad",
class: "customText",
value: "200",
size: "3em",
maxLength: "4"
});
a.newLine();
a.add("Rad Speed: ");
a.text({
id: "radSpeed",
class: "customText",
value: "0.1",
size: "2em",
maxLength: "3"
});
a.newLine(2);
a.add("Cross World: ");
a.checkBox({
id: "funni",
class: "checkB"
});
a.newLine();
});
});
let Q = document.createElement("div");
Q.id = "menuChatDiv";
document.body.appendChild(Q);
N.set("menuChatDiv");
N.setStyle("\n position: absolute;\n display:
none;\n left: 0px;\n top: 0px;\n box-shadow: 0px
0px 10px rgba(0, 0, 0, 0.65);\n ");
N.resetHTML();
N.setCSS("\n .chDiv{\n color: #fff;\n
padding: 5px;\n width: 340px;\n height: 280px;\n
background-color: rgba(0, 0, 0, 0.35);\n }\n .chMainDiv{\n
font-family: \"Ubuntu\";\n font-size: 12px;\ndisplay: none;\n
max-height: 235px;\n overflow-y: scroll;\n -webkit-
touch-callout: none;\n -webkit-user-select: none;\n -
khtml-user-select: none;\n -moz-user-select: none;\n
-ms-user-select: none;\n user-select: none;\n }\n
.chMainBox{\n position: absolute;\ndisplay: none;\n
left: 5px;\n bottom: 10px;\n width: 335px;\n
height: 30px;\n background-color: rgb(128, 128, 128, 0.35);\n
-webkit-border-radius: 4px;\n -moz-border-radius: 4px;\n
border-radius: 4px;\n color: #fff;\n font-
family: \"Ubuntu\";\n font-size: 12px;\n border:
none;\n outline: none;\n }\n ");
N.startDiv({
id: "mChDiv",
class: "chDiv"
}, a => {
N.addDiv({
id: "mChMain",
class: "chMainDiv",
appendID: "mChDiv"
}, a => { });
a.text({
id: "mChBox",
class: "chMainBox",
placeHolder: "To chat click here or press \"Enter\" key"
});
});
let R = h("mChMain");
let S = h("mChBox");
let T = false;
let U = 0;
S.value = "";
S.addEventListener("focus", () => {
T = true;
});
S.addEventListener("blur", () => {
T = false;
});
let V = new Date();
let W = V.getMinutes();
let X = V.getHours();
let Y = X >= 12 ? "PM" : "AM";
function Z(a, b, c, d) {
N.set("menuChatDiv");
c = c || "white";
let e = "";
if (!d) {
e += "[" + (X % 12 + ":" + W + " " + Y) + "]";
}
if (a) {
e += "" + ((!d ? " - " : "") + a);
}
if (b) {
e += (a ? ": " : !d ? " - " : "") + b + "\n";
}
N.addDiv({
id: "menuChDisp" + U,
style: "color: " + c,
appendID: "mChMain"
}, a => {
a.add(e);
});
R.scrollTop = R.scrollHeight;
U++;
}
function _() {
R.innerHTML = "";
U = 0;
Z(null, "Chat '/help' for a list of chat commands.", "white", 1);
}
_();
let aa = 0;
let ba = ["menuMain", "menuConfig", "menuOther"];
window.changeMenu = function () {
h(ba[aa % ba.length]).style.display = "none";
aa++;
h(ba[aa % ba.length]).style.display = "block";
};
let ca = document.createElement("div");
ca.id = "status";
h("gameUI").appendChild(ca);
N.set("status");
N.setStyle("\n display: none;\n position:
absolute;\n color: #ddd;\n font: 15px Hammersmith One;\n
bottom: 215px;\n left: 20px;\n ");
N.resetHTML();
N.setCSS("\n .sizing {\n font-size: 15px;\n
}\n .mod {\n font-size: 15px;\n display:
inline-block;\n }\n ");
N.startDiv({
id: "uehmod",
class: "sizing"
}, a => {
a.add("Ping: ");
N.addDiv({
id: "pingFps",
class: "mod",
appendID: "uehmod"
}, a => {
a.add("None");
});
a.newLine();
a.add("Packet: ");
N.addDiv({
id: "packetStatus",
class: "mod",
appendID: "uehmod"
}, a => {
a.add("None");
});
});
let da = false;
let ea = undefined;
let fa = undefined;
let ga = false;
let ha = 0;
let ia = 110;
let ja = 1000;
let ka = {
sec: false
};
let la = {
tick: 0,
tickQueue: [],
tickBase: function (a, b) {
if (this.tickQueue[this.tick + b]) {
this.tickQueue[this.tick + b].push(a);
} else {
this.tickQueue[this.tick + b] = [a];
}
},
tickRate: 1000 / a.serverUpdateRate,
tickSpeed: 0,
lastTick: performance.now()
};
let ma = false;
let na = {
last: 0,
time: 0,
ltime: 0
};
let oa = undefined;
let pa = ["cc", 1, "__proto__"];
WebSocket.prototype.nsend = WebSocket.prototype.send;
WebSocket.prototype.send = function (a) {
if (!ea) {
ea = this;
ea.addEventListener("message", function (a) {
ta(a);
});
ea.addEventListener("close", a => {
if (a.code == 4001) {
window.location.reload();
}
});
}
if (ea == this) {
ma = false;
let b = new Uint8Array(a);
let c = window.msgpack.decode(b);
let d = c[0];
b = c[1];
if (d == "6") {
if (b[0]) {
let a = [];
let c;
a.forEach(a => {
if (b[0].indexOf(a) > -1) {
c = "";
for (let b = 0; b < a.length; ++b) {
if (b == 1) {
c += String.fromCharCode(0);
}
c += a[b];
}
let d = new RegExp(a, "g");
b[0] = b[0].replace(d, c);
}
});
b[0] = b[0].slice(0, 30);
}
} else if (d == "L") {
b[0] = b[0] + String.fromCharCode(0).repeat(7);
b[0] = b[0].slice(0, 7);
} else if (d == "M") {
b[0].name = b[0].name == "" ? "unknown" : b[0].name;
b[0].moofoll = true;
b[0].skin = b[0].skin == 10 ? "__proto__" : b[0].skin;
pa = [b[0].name, b[0].moofoll, b[0].skin];
} else if (d == "D") {
if (player.lastDir == b[0] || [null,
undefined].includes(b[0])) {
ma = true;
} else {
player.lastDir = b[0];
}
} else if (d == "d") {
if (!b[2]) {
ma = true;
} else if (![null, undefined].includes(b[1])) {
player.lastDir = b[1];
}
} else if (d == "K") {
if (!b[1]) {
ma = true;
}
} else if (d == "14") {
md.wait = !md.wait;
ma = true;
} else if (d == "a") {
if (b[1]) {
if (Ga.moveDir == b[0]) {
ma = true;
}
Ga.moveDir = b[0];
} else {
ma = true;
}
}
if (!ma) {
let a = window.msgpack.encode([d, b]);
this.nsend(a);
if (!ka.sec) {
ka.sec = true;
setTimeout(() => {
ka.sec = false;
ha = 0;
}, ja);
}
ha++;
}
} else {
this.nsend(a);
}
};
function packet(a) {
let b = Array.prototype.slice.call(arguments, 1);
let c = window.msgpack.encode([a, b]);
ea.send(c);
}
function ra(a) {
let b = Array.prototype.slice.call(arguments, 1);
let c = window.msgpack.encode([a, b]);
ea.nsend(c);
}
window.leave = function () {
ra("kys", {
"frvr is so bad": true,
"sidney is too good": true,
"dev are too weak": true
});
};
let sa = {
send: packet
};
function ta(a) {
let b = new Uint8Array(a.data);
let c = window.msgpack.decode(b);
let d = c[0];
b = c[1];
let e = {
A: he,
C: je,
D: ke,
E: le,
a: Ve,
G: We,
H: Xe,
I: Ye,
J: Ze,
K: _e,
L: af,
M: bf,
N: df,
O: re,
P: se,
Q: He,
R: Ie,
S: te,
T: ue,
U: ve,
V: ef,
X: ff,
Y: Je,
2: gf,
3: hf,
4: jf,
5: kf,
6: lf,
7: mf,
8: nf,
9: ng
};
console.log(player.point)
if (d == "io-init") {
fa = b[0];
} else if (e[d]) {
e[d].apply(undefined, b);
}
}
var ua = Math.PI;
var va = ua * 2;
var wa = ua * 3;
Math.lerpAngle = function (a, b, c) {
let d = Math.abs(b - a);
if (d > Math.PI) {
if (a > b) {
b += Math.PI * 2;
} else {
a += Math.PI * 2;
}
}
let e = b + (a - b) * c;
if (e >= 0 && e <= Math.PI * 2) {
return e;
}
return e % (Math.PI * 2);
};
CanvasRenderingContext2D.prototype.roundRect = function (a, b, c, d, e)
{
if (c < e * 2) {
e = c / 2;
}
if (d < e * 2) {
e = d / 2;
}
if (e < 0) {
e = 0;
}
this.beginPath();
this.moveTo(a + e, b);
this.arcTo(a + c, b, a + c, b + d, e);
this.arcTo(a + c, b + d, a, b + d, e);
this.arcTo(a, b + d, a, b, e);
this.arcTo(a, b, a + c, b, e);
this.closePath();
return this;
};
// global values
let xa = [];
let ya = [];
let za = [];
let Aa = [];
let Ba = [];
let Ca = [];
let Da = [];
let Ea = [];
let Fa = [];
let Ga;
let Ha;
let Ia = [];
let Ja;
let Ka = [];
let La = [];// enemy
let Ma;
let Na = [];
let Oa = []; // near
let player = { // my
reloaded: false,
waitHit: 0,
autoAim: false,
revAim: false,
ageInsta: true,
reSync: false,
bullTick: 0,
anti0Tick: 0,
antiSync: false,
safePrimary: function (a) {
return [0, 8].includes(a.primaryIndex);
},
safeSecondary: function (a) {
return [10, 11, 14].includes(a.secondaryIndex);
},
lastDir: 0,
autoPush: false,
pushData: {}
};
function Qa(a, b) {
return a.find(a => a.id == b);
}
function Ra(a, b) {
return a.find(a => a.sid == b);
}
function Sa(a) {
return Qa(za, a);
}
function Ta(a) {
return Ra(za, a);
}
function Ua(a) {
return Ra(ya, a);
}
function Va(a) {
return Ra(Ca, a);
}
function Wa(a) {
return Ra(Ca, a);
}
let Xa = h("gameName");
let Ya = h("adCard");
let Za = h("promoImgHolder");
Za.remove();
let $a = h("chatButton");
$a.remove();
let _a = h("gameCanvas");
let ab = _a.getContext("2d");
let bb = h("mapDisplay");
let cb = bb.getContext("2d");
bb.width = 300;
bb.height = 300;
let db = h("storeMenu");
let eb = h("storeHolder");
let fb = h("upgradeHolder");
let gb = h("upgradeCounter");
let hb = h("chatBox");
hb.autocomplete = "off";
hb.style.textAlign = "center";
hb.style.width = "18em";
let ib = h("chatHolder");
let jb = h("actionBar");
let kb = h("leaderboardData");
let lb = h("itemInfoHolder");
let mb = h("menuCardHolder");
let nb = h("mainMenu");
let ob = h("diedText");
let pb;
let qb;
let rb = a.maxScreenWidth;
let sb = a.maxScreenHeight;
let tb = 1;
let ub;
let vb;
let wb = performance.now();
let xb;
let yb;
var zb = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
};
let Ab = undefined;
let Bb;
let Cb = 0;
let Db = 0;
let Eb = h("allianceMenu");
let Fb = 1;
let Gb = 0;
let Hb = "#525252";
let Ib = "#3d3f42";
let Jb = 5.5;
let Kb = false;
let Lb = true;
let Mb = {};
let Nb = {
87: [0, -1],
38: [0, -1],
83: [0, 1],
40: [0, 1],
65: [-1, 0],
37: [-1, 0],
68: [1, 0],
39: [1, 0]
};
function Ob() {
Mb = {};
sa.send("e");
}
let Pb = 0;
let Qb = false;
let Rb = {};
let Sb = {
place: 0,
placeSpawnPads: 0
};
let Tb;
let Ub = [];
let Vb = true;
window.onblur = function () {
Vb = false;
};
window.onfocus = function () {
Vb = true;
if (Ga && Ga.alive) {
Ob();
}
};
let Wb = [];
let Xb = [];
class Yb {
constructor() {
let a = Math.abs;
let b = Math.cos;
let c = Math.sin;
let d = Math.pow;
let e = Math.sqrt;
let f = Math.atan2;
let g = Math.PI;
let h = this;
this.round = function (a, b) {
return Math.round(a * b) / b;
};
this.toRad = function (a) {
return a * (g / 180);
};
this.toAng = function (a) {
return a / (g / 180);
};
this.randInt = function (a, b) {
return Math.floor(Math.random() * (b - a + 1)) + a;
};
this.randFloat = function (a, b) {
return Math.random() * (b - a + 1) + a;
};
this.lerp = function (a, b, c) {
return a + (b - a) * c;
};
this.decel = function (a, b) {
if (a > 0) {
a = Math.max(0, a - b);
} else if (a < 0) {
a = Math.min(0, a + b);
}
return a;
};
this.getDistance = function (a, b, c, d) {
return e((c -= a) * c + (d -= b) * d);
};
this.getDist = function (a, b, c, d) {
let f = {
x: c == 0 ? a.x : c == 1 ? a.x1 : c == 2 ? a.x2 : c ==
3 && a.x3,
y: c == 0 ? a.y : c == 1 ? a.y1 : c == 2 ? a.y2 : c ==
3 && a.y3
};
let g = {
x: d == 0 ? b.x : d == 1 ? b.x1 : d == 2 ? b.x2 : d ==
3 && b.x3,
y: d == 0 ? b.y : d == 1 ? b.y1 : d == 2 ? b.y2 : d ==
3 && b.y3
};
return e((g.x -= f.x) * g.x + (g.y -= f.y) * g.y);
};
this.getDirection = function (a, b, c, d) {
return f(b - d, a - c);
};
this.getDirect = function (a, b, c, d) {
let e = {
x: c == 0 ? a.x : c == 1 ? a.x1 : c == 2 ? a.x2 : c ==
3 && a.x3,
y: c == 0 ? a.y : c == 1 ? a.y1 : c == 2 ? a.y2 : c ==
3 && a.y3
};
let g = {
x: d == 0 ? b.x : d == 1 ? b.x1 : d == 2 ? b.x2 : d ==
3 && b.x3,
y: d == 0 ? b.y : d == 1 ? b.y1 : d == 2 ? b.y2 : d ==
3 && b.y3
};
return f(e.y - g.y, e.x - g.x);
};
this.getAngleDist = function (b, c) {
let d = a(c - b) % (g * 2);
if (d > g) {
return g * 2 - d;
} else {
return d;
}
};
this.isNumber = function (a) {
return typeof a == "number" && !isNaN(a) && isFinite(a);
};
this.isString = function (a) {
return a && typeof a == "string";
};
this.kFormat = function (a) {
if (a > 999) {
return (a / 1000).toFixed(1) + "k";
} else {
return a;
}
};
this.sFormat = function (a) {
let b = [{
num: 1000,
string: "k"
}, {
num: 1000000,
string: "m"
}, {
num: 1000000000,
string: "b"
}, {
num: 1000000000000,
string: "q"
}].reverse();
let c = b.find(b => a >= b.num);
if (!c) {
return a;
}
return (a / c.num).toFixed(1) + c.string;
};
this.capitalizeFirst = function (a) {
return a.charAt(0).toUpperCase() + a.slice(1);
};
this.fixTo = function (a, b) {
return parseFloat(a.toFixed(b));
};
this.sortByPoints = function (a, b) {
return parseFloat(b.points) - parseFloat(a.points);
};
this.lineInRect = function (a, b, c, d, e, f, g, h) {
let i = e;
let j = g;
if (e > g) {
i = g;
j = e;
}
if (j > c) {
j = c;
}
if (i < a) {
i = a;
}
if (i > j) {
return false;
}
let k = f;
let l = h;
let m = g - e;
if (Math.abs(m) > 1e-7) {
let a = (h - f) / m;
let b = f - a * e;
k = a * i + b;
l = a * j + b;
}
if (k > l) {
let a = l;
l = k;
k = a;
}
if (l > d) {
l = d;
}
if (k < b) {
k = b;
}
if (k > l) {
return false;
}
return true;
};
this.containsPoint = function (a, b, c) {
let d = a.getBoundingClientRect();
let e = d.left + window.scrollX;
let f = d.top + window.scrollY;
let g = d.width;
let h = d.height;
let i = b > e && b < e + g;
let j = c > f && c < f + h;
return i && j;
};
this.mousifyTouchEvent = function (a) {
let b = a.changedTouches[0];
a.screenX = b.screenX;
a.screenY = b.screenY;
a.clientX = b.clientX;
a.clientY = b.clientY;
a.pageX = b.pageX;
a.pageY = b.pageY;
};
this.hookTouchEvents = function (a, b) {
let c = !b;
let d = false;
let e = false;
a.addEventListener("touchstart", this.checkTrusted(f), e);
a.addEventListener("touchmove", this.checkTrusted(g), e);
a.addEventListener("touchend", this.checkTrusted(i), e);
a.addEventListener("touchcancel", this.checkTrusted(i), e);
a.addEventListener("touchleave", this.checkTrusted(i), e);
function f(b) {
h.mousifyTouchEvent(b);
window.setUsingTouch(true);
if (c) {
b.preventDefault();
b.stopPropagation();
}
if (a.onmouseover) {
a.onmouseover(b);
}
d = true;
}
function g(b) {
h.mousifyTouchEvent(b);
window.setUsingTouch(true);
if (c) {
b.preventDefault();
b.stopPropagation();
}
if (h.containsPoint(a, b.pageX, b.pageY)) {
if (!d) {
if (a.onmouseover) {
a.onmouseover(b);
}
d = true;
}
} else if (d) {
if (a.onmouseout) {
a.onmouseout(b);
}
d = false;
}
}
function i(b) {
h.mousifyTouchEvent(b);
window.setUsingTouch(true);
if (c) {
b.preventDefault();
b.stopPropagation();
}
if (d) {
if (a.onclick) {
a.onclick(b);
}
if (a.onmouseout) {
a.onmouseout(b);
}
d = false;
}
}
};
this.removeAllChildren = function (a) {
while (a.hasChildNodes()) {
a.removeChild(a.lastChild);
}
};
this.generateElement = function (a) {
let b = document.createElement(a.tag || "div");
function c(c, d) {
if (a[c]) {
b[d] = a[c];
}
}
c("text", "textContent");
c("html", "innerHTML");
c("class", "className");
for (let c in a) {
switch (c) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue;
default:
break;
}
b[c] = a[c];
}
if (b.onclick) {
b.onclick = this.checkTrusted(b.onclick);
}
if (b.onmouseover) {
b.onmouseover = this.checkTrusted(b.onmouseover);
}
if (b.onmouseout) {
b.onmouseout = this.checkTrusted(b.onmouseout);
}
if (a.style) {
b.style.cssText = a.style;
}
if (a.hookTouch) {
this.hookTouchEvents(b);
}
if (a.parent) {
a.parent.appendChild(b);
}
if (a.children) {
for (let c = 0; c < a.children.length; c++) {
b.appendChild(a.children[c]);
}
}
return b;
};
this.checkTrusted = function (a) {
return function (b) {
if (b && b instanceof Event && (b && typeof b.isTrusted
== "boolean" ? b.isTrusted : true)) {
a(b);
} else { }
};
};
this.randomString = function (a) {
let b = "";
let c =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (let d = 0; d < a; d++) {
b += c.charAt(Math.floor(Math.random() * c.length));
}
return b;
};
this.countInArray = function (a, b) {
let c = 0;
for (let d = 0; d < a.length; d++) {
if (a[d] === b) {
c++;
}
}
return c;
};
this.hexToRgb = function (a) {
return a.slice(1).match(/.{1,2}/g).map(a => parseInt(a,
16));
};
this.getRgb = function (a, b, c) {
return [a / 255, b / 255, c / 255].join(", ");
};
}
}
;
class Zb {
constructor() {
this.init = function (a, b, c, d, e, f, g) {
this.x = a;
this.y = b;
this.color = g;
this.scale = c;
this.startScale = this.scale;
this.maxScale = c * 1.5;
this.scaleSpeed = 0.7;
this.speed = d;
this.life = e;
this.text = f;
this.acc = 1;
this.alpha = 0;
this.maxLife = e;
this.ranX = cd.randFloat(-1, 1);
};
this.update = function (b) {
if (this.life) {
this.life -= b;
if (a.anotherVisual) {
this.y -= this.speed * b * this.acc;
this.acc -= b / (this.maxLife / 2.5);
if (this.life <= 200) {
if (this.alpha > 0) {
this.alpha = Math.max(0, this.alpha - b /
300);
}
} else if (this.alpha < 1) {
this.alpha = Math.min(1, this.alpha + b / 100);
}
this.x += this.ranX;
} else {
this.y -= this.speed * b;
}
this.scale += this.scaleSpeed * b;
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 (a, b, c) {
a.lineWidth = 10;
a.fillStyle = this.color;
a.font = this.scale + "px Calibri";
a.strokeText(this.text, this.x - b, this.y - c);
a.fillText(this.text, this.x - b, this.y - c);
a.globalAlpha = 1;
};
}
}
;
class $b {
constructor() {
this.texts = [];
this.stack = [];
this.update = function (a, b, c, d) {
b.textBaseline = "middle";
b.textAlign = "center";
for (let e = 0; e < this.texts.length; ++e) {
if (this.texts[e].life) {
this.texts[e].update(a);
this.texts[e].render(b, c, d);
}
}
};
this.showText = function (a, b, c, d, e, f, g) {
let h;
for (let i = 0; i < this.texts.length; ++i) {
if (!this.texts[i].life) {
h = this.texts[i];
break;
}
}
if (!h) {
h = new Zb();
this.texts.push(h);
}
h.init(a, b, c, d, e, f, g);
};
}
}
class _b {
constructor() {
this.skyfall = {
audio: new
Audio("https://cdn.discordapp.com/attachments/1170751373374148690/11775092375098655
44/Adele_Adele_-_Skyfall.mp3"),
chats: [["This is the end", 33000], ["Hold your breath and
count to 10", 38000], ["Feel the Earth move and then", 44000], ["Hear my heart
burst again!", 50000], ["For this is the end", 58000], ["I've drowned and dreamt",
61200], ["this moment", 63000], ["So overdue, I owe them", 65400], ["Swept away,
I'm stolen", 69600], ["Let the skyfall", 73800], ["When it crumbles", 75600], ["We
will stand tall", 78000], ["Face it all together", 80300], ["Let the skyfall",
81720], ["When it crumbles", 83400], ["We will stand tall", 85200], ["Face it all
together", 87600], ["At skyfall", 89700], ["At skyfall", 93300], ["Skyfall is where
we start", 121200], ["thousand miles and poles apart", 124500], ["Where worlds
collide", 127900], ["and days are dark", 129300], ["You may have my number",
130200], ["You can take my name", 132000], ["But you'll never have my heart",
134100], ["Let the skyfall", 136750], ["When it crumbles", 138600], ["We will stand
tall", 140400], ["Face it all together", 142320], ["Let the skyfall", 144000],
["When it crumbles", 146520], ["We will stand tall", 148380], ["Face it all
together", 150120], ["At skyfall", 151200], ["Where you go, I go", 191400], ["What
you see, I see", 192600], ["I know I'd never be", 194400], ["me without the
security", 196800], ["Of your loving arms", 198600], ["Keeping me from harm",
201000], ["Put your hand in my hand", 202800], ["And we'll stand", 204600], ["Let
the skyfall", 206400], ["When it crumbles", 208200], ["We will stand tall",
210600], ["Face it all together", 211800], ["Let the skyfall", 214200], ["When it
crumbles", 240000], ["We will stand tall", 241800], ["Face it all together",
243900], ["At skyfall", 245400], ["let the skyfall", 246900], ["we will stand
tall", 250200], ["At skyfall", 252300], ["At skyfall", 252800], ["Oooh", 253400]]
};
this.staywithme = {
audio: new
Audio("https://cdn.discordapp.com/attachments/1013031910211063841/10295864811210711
45/1nonly_-_Stay_With_Me_Lyrics.mp3"),
chats: [["Stay with me", 1159], ["Stay with me", 20273],
["lil' bitch, yeah", 20907], ["you know that I'm your mans", 21691], ["You be
cappin' like a snitch", 22668], ["no thots won't stand", 23857], ["Two hoes, ten
toes", 25156], ["new guap, countin' bands", 26385], ["New whip, new chips", 27692],
["new kicks, Jackie Chan", 28888], ["And she bad", 30141], ["bad bitch throw it
back", 31527], ["I just hit another lick and", 32798], ["she be counting all my
racks", 33945], ["And I be feelin' hella rich", 35193], ["no Brian, hunnids
stacked", 36503], ["'Bouta make another hit", 37857], ["goth bitch on my lap",
39117], ["Stay with me, lil' bitch, yeah", 40220], ["you know that I'm your mans",
41496], ["You be cappin' like a snitch", 42952], ["no thots won't stand", 44358],
["Two hoes, ten toes", 45378], ["new guap, countin' bands", 46633], ["New whip, new
chips", 47962], ["new kicks, Jackie Chan", 49402], ["And she bad", 50500], ["bad
bitch throw it back", 51768], ["I just hit another lick and", 52993], ["she be
counting all my racks", 54091], ["And I be feelin' hella rich", 55483], ["no Brian,
hunnids stacked", 56741], ["'Bouta make another hit", 58088], ["goth bitch on my
lap", 59288], ["if she fucking with me", 60569], ["then you know I gotta get her",
61969], ["I be feelin' like Lil Uzi", 63413], ["got my mind up on the cheddar",
64329], ["Footloose getting groovy with", 65866], ["yo' ho, she like me better",
67130], ["I ain't talkin' Ash Kaashh", 68252], ["but that bitch", 69345], ["she be
my header", 70322], ["Ayy, I'm posted up with twin", 71289], ["Glocks and foreign
bitches", 72099], ["No fakes", 73271], ["all they want is guap", 73847], ["I burn
bridges", 74978], ["I be getting to the bag", 75874], ["you still cleaning",
77061], ["dirty dishes", 77775], ["Two mops send shots at", 78331], ["your spot
with no limit", 79634], ["Stay with me, lil' bitch, yeah", 80690], ["you know that
I'm your mans", 82227], ["You be cappin' like a snitch", 83277], ["no thots won't
stand", 84491], ["Two hoes, ten toes", 85727], ["new guap, countin' bands", 87152],
["New whip, new chips", 88356], ["new kicks, Jackie Chan", 89480], ["And she bad",
90797], ["bad bitch throw it back", 91851], ["I just hit another lick and", 93338],
["she be counting all my racks", 94752], ["And I be feelin' hella rich", 96045],
["no Brian, hunnids stacked", 97184], ["'Bouta make another hit", 98407], ["goth
bitch on my lap", 99713], ["Stay with me, lil' bitch, yeah", 100910], ["you know
that I'm your mans", 102385], ["You be cappin' like a snitch", 103510], ["no thots
won't stand", 104783], ["Two hoes, ten toes", 105945], ["new guap, countin' bands",
107235], ["New whip, new chips", 108497], ["new kicks, Jackie Chan", 109744], ["And
she bad", 110995], ["bad bitch throw it back", 112387], ["I just hit another lick
and", 113531], ["she be counting all my racks", 114939], ["And I be feelin' hella
rich", 116067], ["no Brian, hunnids stacked", 117268], ["'Bouta make another hit",
118726], ["goth bitch on my lap", 119972], ["Stay with me", 121136]]
};
this.legendsNeverDie = {
audio: new
Audio("https://cdn.discordapp.com/attachments/990882830210981920/991648349608493066
/Legends_Never_Die_Lyrics_Ft._Against_The_Current.mp3"),
chats: [["Legends Never Die", 12564], ["When the world is
calling you", 16471], ["Can you hear them", 19616], ["screaming out your-", 20958],
["name?", 24132], ["Legends Never Die", 25823], ["They become a part of you",
29522], ["Every time you bleed", 33833], ["for reaching greatness", 36142],
["Relentless you survive", 40086], ["They never lose hope", 44050], ["when
everything's cold", 45532], ["and the fighting's near", 46877], ["It's deep in
their bones", 50361], ["they'll run into smoke", 52331], ["when the fire is
fierce", 53631], ["Ohh pick yourself up cause,", 57260], ["Legends Never Die!",
60520], ["when the world is calling you", 64240], ["Can you hear them screaming",
67740], ["out your-", 69231], ["name?", 72521], ["Legends Never Die!", 74300],
["they become a part of you", 77900], ["Every time you bleed", 81620], ["for
reaching", 83532], ["greatness", 85252], ["Legends Never Die", 87880], ["They're
written", 91340], ["down in eternity", 92440], ["But you'll never see", 95140],
["the price it costs,", 97432], ["the scars collected", 100540], ["all their
lives", 101720], ["When everything's lost", 105580], ["They pick up their hearts",
107440], ["and avenge defeat", 109320], ["Before it all starts,", 112680], ["they
suffer through harm", 113980], ["just to touch a dream", 116020], ["Ohh pick
yourself up cause,", 118840], ["Legends Never Die!", 122200], ["when the world
is-", 126240], ["calling you", 127730], ["Can you hear them", 129760], ["screaming
out your-", 131320], ["name?", 133320], ["Legends Never Die!", 135640], ["They
become a part of you", 139500], ["Every time you bleed", 143180], ["for reaching-",
145320], ["greatness", 148100], ["Legends Never Die", 149440], ["When the world
is", 156060], ["calling out", 157620], ["your name", 158900], ["Begging you to
fight", 163320], ["Pick yourself up once more", 171160], ["Pick yourself up,
cause", 174560], ["Legends Never Die!", 176860], ["when the world is", 180820],
["calling you", 181500], ["Can you hear them", 184400], ["screaming out your-",
186600], ["name?", 188300], ["Legends Never Die", 190780], ["They become a part of
you", 194760], ["Every time you bleed", 197900], ["for reaching", 199300],
["greatness", 201500], ["Legends Never Die..", 204540]]
};
this.thetop = {
audio: new
Audio("https://cdn.discordapp.com/attachments/919188611214229524/974478982051405934
/Initial_D_5th_Stage_Soundtrack_-_The_Top.mp3"),
chats: [["Final lap", 39607], ["I'm on top of the world",
40293], ["And I will never rest", 41845], ["for second again", 43192], ["One more
time", 45303], ["I have beaten them out", 46438], ["The scent of gasoline", 47828],
["announces the end", 49351], ["They all said", 51320], ["I'd best give it up",
52316], ["What a fool", 53913], ["to believe their lies", 54752], ["Now they've
fall", 57207], ["and I'm at the top", 58373], ["Are you ready now to die?", 59879],
["I came up from the bottom", 62924], ["and into the top", 64572], ["For the first
time", 65813], ["I feel alive", 66962], ["I can fly like an eagle", 68956],
["strike like a hawk", 70748], ["Do you think you can survive?", 71946], ["The
top!", 74821], ["Final turn and", 87454], ["I'll settle the score", 88736], ["A
rubber fire", 89794], ["screams into the night", 90734], ["Crash and burn is",
93127], ["what you're gonna do", 94471], ["I am a master of", 95752], ["the asphalt
fight", 97250], ["They all said", 99128], ["I'd best give it up", 100438], ["What a
fool", 101743], ["to believe their lies", 102673], ["Now they've fall", 105251],
["and I'm at the top", 106445], ["Are you ready now to die?", 107891], ["I came up
from the bottom", 110878], ["and into the top", 112544], ["For the first time",
113953], ["I feel alive", 114967], ["I can fly like an eagle", 116928], ["strike
like a hawk", 118736], ["Do you think you can survive?", 119907], ["I came up from
the bottom", 122969], ["and into the top", 124635], ["For the first time", 125972],
["I feel alive", 126979], ["I can fly like an eagle", 128989], ["strike like a
hawk", 130755], ["Do you think you can survive?", 131906], ["The top!", 134941],
["I came up from the bottom", 171049], ["and into the top", 172624], ["For the
first time", 173790], ["I feel alive", 174999], ["I can fly like an eagle",
176880], ["strike like a hawk", 178657], ["Do you think you can survive?", 179859],
["I came up from the bottom", 183009], ["and into the top", 184534], ["For the
first time", 185837], ["I feel alive", 187606], ["I can fly like an eagle",
188853], ["strike like a hawk", 190569], ["Do you think you can survive?", 191750],
["The top!", 194704]]
};
this.gas = {
audio: new
Audio("https://cdn.discordapp.com/attachments/876683706381762560/981927132202672228
/e.mp3"),
chats: [["Ah", 16885], ["(gas, gas gas)", 20000], ["Ah",
24039], ["Do you like my car", 28341], ["my car", 31349], ["m y c a r", 33137],
["Guess you're ready'", 53875], ["Cause I'm waiting for you", 54746], ["It's gonna
be so exciting!", 56201], ["Got this feeling", 59363], ["Really deep in my soul",
60638], ["Let's get out I wanna go", 62462], ["come along get it on!", 64003],
["Gonna take my car", 65865], ["gonna sit in", 67463], ["Gonna drive alone",
69113], ["'till I get you", 70348], ["'Cause I'm crazy", 71831], ["hot and ready",
72635], ["but you'll like it!", 73624], ["I wanna race for you", 74930], ["shall I
go now?", 76885], ["Gas gas gas", 78234], ["I'm gonna step on the gas", 79868],
["Tonight I'll fly", 81582], ["and be your lover", 83111], ["Yeah yeah yeah",
84323], ["I'll be so quick as a flash", 86116], ["And I'll be your hero!", 87777],
["Gas gas gas", 90637], ["I'm gonna run as a flash", 92633], ["Tonight I'll fight",
94096], ["to be the winner", 95500], ["Yeah yeah yeah", 96824], ["I'm gonna step on
the gas", 98592], ["And you'll see the big show!", 100155], ["Don't be lazy",
115451], ["'Cause I'm burning for you", 116581], ["It's like a hot sensation!",
118681], ["Got this power", 121655], ["That is taking me out", 122845], ["Yes I've
got a crush on you", 124771], ["Ready now ready go!", 126452]]
};
this.dejavu = {
audio: new
Audio("https://cdn.discordapp.com/attachments/919188611214229524/974636785101582366
/DAVE_RODGERS___DEJA_VU_Official_Lyric_VideoD_INITIAL_D.mp3"),
chats: [["See your body", 46729], ["into the moonlight",
48320], ["Even if I try to cancel", 49803], ["All the pictures into the mind",
52998], ["There's a flashing in my eyes", 55715], ["Don't you see my condition",
58299], ["The fiction", 61009], ["is gonna run it again", 62601], ["Can't you see
now illusions", 64399], ["Right into your mind", 67186], ["Deja vu", 71102], ["I've
just been", 72205], ["in this place before", 72846], ["Higher on the street",
74070], ["And I know it's my time to go", 75226], ["Calling you and", 77414], ["the
search is a mystery", 78540], ["Standing on my feet", 80256], ["It's so hard when",
81402], ["I try to be me", 82361], ["UOOOHH", 83974], ["Deja vu", 85496], ["I've
just been in", 86224], ["this time before", 86992], ["Higher on the street",
88087], ["And I know it's a place to go", 89232], ["Calling you and", 91432], ["the
search is a mystery", 92534], ["Standing on my feet", 94184], ["It's so hard when",
95454], ["I try to be me", 96331], ["YEAHHH", 97862], ["See the future", 111909],
["into the present", 113614], ["See my past lives", 115335], ["in the distance",
116885], ["Try to guess now", 118423], ["what's going on", 120073], ["And the band
begins to play", 121129], ["Don't you see my condition", 123653], ["The fiction",
126436], ["is gonna run it again", 128002], ["Can't you see now illusions",
129709], ["Right into your mind", 132703], ["Deja vu", 136269], ["I've just been",
137353], ["in this place before", 138199], ["Higher on the street", 139454], ["And
I know", 140683], ["it's my time to go", 141457], ["Calling you", 142833], ["and
the search is a mystery", 143741], ["Standing on my feet", 145424], ["It's so hard
when", 146779], ["I try to be me", 147596], ["UOOOHH", 149231], ["Deja vu",
150890], ["I've just been in", 151580], ["this time before", 152301], ["Higher on
the beat", 153484], ["And I know it's", 154656], ["a place to go", 155631],
["Calling you", 156815], ["and the search is a mystery", 158038], ["Standing on my
feet", 159645], ["It's so hard when", 160557], ["I try to be me", 161571],
["YEAHHH", 163347]]
};
this.norival = {
audio: new
Audio("https://cdn.discordapp.com/attachments/784941059066167316/977724487283912735
/Nightcore_-_No_Rival_-_Lyrics.mp3"),
chats: [["Here and now", 11198], ["you're coming up to me",
12140], ["'Fore I'm lighting up the sky", 13500], ["Feel the ground", 16583],
["shaking underneath", 17638], ["Trying to take me alive", 18855], ["Oh-oh-ohhh",
21720], ["Get ready for the fallout", 24012], ["Oh-oh-ohhh", 26981], ["Can't stop
me now", 29312], ["I got no rival", 31419], ["I'ma find my way", 33196], ["Through
the blood and pain", 35172], ["Game of survival", 36491], ["Any time or place",
38528], ["Watch 'em run away", 40492], ["I got no", 41945], ["I'll be standing on
my own", 43651], ["Never gonna take my thrown", 45499], ["I got no rival", 47335],
["Watch 'em run away", 49108], ["I got no, no, no", 50943], ["I got no, no, no
rival", 52146], ["No rival", 63910], ["No rival", 69272], ["Tell them now what you
gon' do", 75032], ["We can do this face to face", 77157], ["Reckoning is coming in
soon", 80284], ["Doesn't matter what you say", 82523], ["Trying to tell you",
85098], ["listen to the moment", 86269], ["Can't take mine", 87544], ["'cause I own
it", 88213], ["Don't you know that", 90057], ["I'm locked and I'm loaded", 91775],
["You're out of focus", 93433], ["Oh-oh-ohhh", 96303], ["Get ready for the
fallout", 98299], ["Oh-oh-ohhh", 101475], ["Can't stop me now", 103533], ["I got no
rival", 105353], ["I'ma find my way", 107419], ["Through the blood and pain",
109215], ["Game of survival", 110747], ["Any time or place", 112730], ["Watch 'em
run away", 114664], ["I got no", 116031], ["I'll be standing on my own", 117862],
["Never gonna take my thrown", 119722], ["I got no rival", 121376], ["Watch 'em run
away", 123338], ["I got no, no, no", 125165], ["I got no, no, no rival", 126388],
["No rival", 132506], ["I got no, no, no", 136063], ["I got no, no, no rival",
137058], ["No rival", 143220], ["No rival", 159585]]
};
this.inv = {
audio: new
Audio("https://cdn.discordapp.com/attachments/975954604451831828/980059990356279316
/Crypt_x_Joey_Nato_-_Invincible_feat._soslesion_OFFICIAL_MUSIC_VIDEO.mp3"),
chats: [["Yeah, yeah, yeah", 3890], ["Get myself into the
game", 11624], ["I'ma run it up anyway", 13854], ["I get with the violence",
17898], ["I don't think you wanna try it", 19893], ["I'm so up", 22911], ["I feel
invincible", 23678], ["I don't know", 26102], ["if they get it though", 26784],
["I'm so up", 28401], ["I feel invincible", 29073], ["Fuck what you said", 31587],
["I'm invincible", 32639], ["Lookin' for a break", 34483], ["and now I think",
35417], ["I finally caught one", 36239], ["We're talkin'", 37281], ["legendary
status", 38092], ["when it's all done", 39193], ["I'm a star bitch", 40259], ["if
you ever saw one", 41257], ["Law and Order over here", 43408], ["and it's a Tommy
one", 44760], ["Meet me at the top", 45828], ["it's goin' down", 47841], ["They
tryna fit in my circle", 48355], ["I'm not around (Nah)", 49618], ["I was down
before", 50887], ["but not for the count", 52516], ["Shit was real heavy", 53741],
["now it's dollars", 55010], ["not the pound", 55590], ["Tell me what you smokin'",
56879], ["if you think that I'm a joke", 57801], ["Only time I'm trippin'", 59455],
["is when I'm out on a road", 60356], ["Only droppin' joints", 62286], ["if that is
fuckin' dope", 63270], ["Scary when you see me", 65141], ["got them meming me like
nope", 66211], ["(Nope, nope, nope, nope)", 67656], ["Hate to say it, but", 68886],
["you're runnin' out of time", 70326], ["I don't know 'bout you, but", 72052],
["I'ma make the most of mine", 72845], ["Lookin' clean until", 74738], ["a youngin'
in the dirt", 75742], ["Value through the roof", 77076], ["yeah, yeah", 78516], ["I
know my worth, Nato", 79436], ["Get myself into the game", 80575], ["I'ma run it up
anyway", 82594], ["I get with the violence", 85923], ["I don't think you wanna try
it", 88419], ["I'm so up", 91257], ["I feel invincible", 91995], ["I don't know if
they get it though", 94660], ["I'm so up", 96966], ["I feel invincible", 97642],
["Fuck what you said", 99967], ["I'm invincible", 101046], ["If you wanna try",
103308], ["to bring me down", 103971], ["you gotta reach me", 104685], ["I'm high
up in the clouds", 105864], ["while your're just", 107039], ["down in the
seaweeds", 107608], ["I see these little rappers", 108622], ["they all wanna be
me", 109897], ["But nobody wanna put the work in", 110826], ["'Cause they
thinkin'", 112134], ["that I got it easy", 112752], ["but that's sleezy", 113502],
["My path to the top was hard", 114485], ["but nothin' out there", 115575], ["could
me make stop", 116247], ["Every time I thought", 116981], ["it went one way",
117624], ["it turned out that it did not", 118407], ["I got so many", 119291],
["obstacles for my opps", 120297], ["so many prayin'", 121206], ["that I would
drop", 122096], ["I had to go around", 122774], ["the whole world", 123521], ["just
to get to", 124260], ["the end of my block", 124866], ["I built my skin so tough",
125523], ["achievin' all my desires", 126727], ["I could walk through", 128065],
["Hell without gettin'", 129449], ["burned by the fire", 130009], ["Oh, I admire
those", 130697], ["that are deniers", 132867], ["'Cause you messed around",
134285], ["turned me to a", 135069], ["cold blooded fighter", 135885], ["Im so up I
feel invincible", 137218], ["I hope my words", 140013], ["feel like insults",
141190], ["I'm up right now", 142979], ["you stuck right now", 144030], ["Stay down
there", 145496], ["on that ground", 146574], ["Get myself into the game", 147924],
["I'ma run it up anyway", 151037], ["I get with the violence", 154527], ["I don't
think you wanna try it", 156787], ["I'm so up", 160415], ["I feel invincible",
160990], ["I don't know", 163133], ["if they get it though", 163952], ["I'm so up",
165446], ["I feel invincible", 166148], ["Fuck what you said", 168516], ["I'm
invincible", 169519], ["Talk like I'm at the top now", 171475], ["If you hit me, I
can't fall down", 173836], ["Run up, I'm not second place and", 177162], ["I tell
'em that in runnin'", 178025], ["all my bases", 181206], ["I'm so up", 182808], ["I
feel invincible", 183340], ["I don't know if", 186082], ["they get it though",
186813], ["I'm so up", 188342], ["I feel invincible", 189013], ["Fuck what you
said", 192064], ["I'm invincible", 192606]]
};
this.giants = {
audio: new
Audio("https://cdn.discordapp.com/attachments/617560371913293827/102380798804729446
4/V_O_E_-_Giants_Lyrics.mp3"),
chats: [["Oh, where am I going now", 10213], ["just falling
over dreams?", 11952], ["Now I'm just so far gone", 15815], ["this isn't what it
seems..", 17563], ["It's taking me so damn long", 21274], ["it's fading from
believe", 23182], ["I need to slow this down", 26880], ["it's burning from
beneath", 28361], ["Come break this light", 32622], ["Before tomorrow dies",
35938], ["Holding on for what", 38578], ["is worth my life", 40752], ["I know in
time", 43714], ["I'll make it up the vine", 46797], ["Find my way to giants",
49458], ["in the sky", 51305], ["Tonight it comes to life", 53609], ["Tonight it
comes to life", 75604], ["Where am I going now,", 98364], ["just falling over
dreams?", 101623], ["Now I'm just so far gone,", 104059], ["this isn't what it
seems", 106393], ["It's taking me so damn long,", 109598], ["it's fading from
believe", 110995], ["I need to slow this down", 115074], ["it's burning from
beneath", 117293], ["Come break this light", 121103], ["Before tomorrow dies",
124000], ["Holding on for what", 126824], ["is worth my lifе", 128132], ["I know in
time", 132000], ["I'll make it up the vinе", 135098], ["Find my way to", 137797],
["giants in the sky", 139231], ["Tonight it comes to life", 141870], ["Tonight it
comes to life", 152722], ["Come break this light", 176157], ["Before tomorrow
dies", 179155], ["Holding on to what is", 181855], ["worth my life", 183000], ["I
know in time", 187145], ["I'll make it up the vine", 190330], ["Find my way to",
193014], ["giants in the sky", 195132], ["Tonight it comes to life", 197183]]
};
this.glorydays = {
audio: new
Audio("https://cdn.discordapp.com/attachments/990241234696167428/102377491006726159
0/FELLOWSHIP_-_Glory_Days_Official_Lyric_Video_192_kbps.mp3"),
chats: [["As the light within me falls", 47320], ["another
day departs", 49338], ["if only I could see", 52172], ["the dawn beyond", 54166],
["the shadows cast", 55214], ["An empire of doubt", 57561], ["a heart full of
clouds", 58671], ["befall the souls within her", 60113], ["the valley will weep",
62134], ["as a mirror of old", 63920], ["as hope is halfway damned", 65463], ["Oh,
to see our last day", 68481], ["with all these", 70021], ["shattered voices
raised", 71037], ["Oh say, will you fight?", 72920], ["To seek the glory days,",
77842], ["We'll fight the lion's way", 80642], ["Then let the rain", 83334], ["wash
all of our pride away", 85272], ["So if this victory", 88786], ["is our last
odyssey,", 91400], ["Then let the power", 94134], ["within us decide!", 96046],
["On the backs of giants", 117344], ["long deceased", 119252], ["are we still
standing", 120096], ["we measure our worth", 122557], ["by all the days", 123929],
["we wasted then.", 125403], ["All of our time", 127753], ["and all of our might",
128916], ["are fueled by", 130086], ["the heartache of winter.", 131045], ["Oh life
as we know", 132595], ["it is bitter and cold", 133924], ["but souls burn",
135278], ["best with spite.", 136334], ["Oh, to see our last day", 138568], ["with
all these", 140287], ["shattered voices raised", 141002], ["Oh say, will you
fight?", 142849], ["To seek the glory days,", 147919], ["We'll fight the lion's
way", 150668], ["Then let the rain", 153331], ["wash all of our pride away",
155055], ["So if this victory", 158747], ["is our last odyssey,", 161502], ["Then
let the power", 164244], ["within us decide!", 166385], ["If we have to choose our
fate,", 170992], ["It's still our choice to make", 175794], ["Oh, to see our last
day", 235540], ["with all these", 237420], ["shattered voices raised", 238154],
["Oh say, will you fight?", 239979], ["To seek the glory days,", 244971], ["We'll
fight the lion's way", 247863], ["Then let the rain", 250476], ["wash all of our
pride away", 252209], ["To seek the glory days,", 255934], ["We'll fight the lion's
way", 258458], ["Then let the rain", 261368], ["wash all of our pride away",
263131], ["So if this victory", 266838], ["is our last odyssey,", 269354], ["Let
the power within", 272733], ["ignite where we've been", 274332], ["let the power
within us decide", 277877]]
};
this.ipip = {
audio: new
Audio("https://cdn.discordapp.com/attachments/1008700151579295824/10232352610663997
44/Electro-Light_-_Symbolism_NCS_Release.mp3"),
chats: [["Turi, ip ip ip", 5416], ["Ip ip ip turi ik",
8978], ["Ip, tsha ip ik", 12132], ["Eugh turi", 13782], ["eugh turi isha ip
turisha", 15109], ["Turi, ip ip ip", 17597], ["Ip ip ip turi ik", 20042], ["Ip,
tsha ip ik", 23025], ["Eugh turi", 24480], ["eugh turi isha ip turisha", 26215],
["Turi, ip ip ip", 29205], ["Ip ip ip turi ik", 31504], ["Ip, tsha ip ik", 34192],
["Eugh turi", 36291], ["eugh turi isha ip turisha", 37558], ["Turi, ip ip ip",
40202], ["Ip ip ip turi ik", 42762], ["Ip, tsha ip ik", 45921], ["Eugh turi",
47710], ["eugh turi isha ip turisha", 48742], ["Turi, ip ip ip", 56435], ["Ip ip ip
turi ik", 58173], ["Ip, tsha ip ik", 59676], ["Eugh turi", 60421], ["eugh turi isha
ip turisha", 60952], ["Turi, ip ip ip", 62832], ["Ip ip ip turi ik", 65534], ["Ip,
tsha ip ik", 68072], ["Eugh turi", 69931], ["eugh turi isha ip turisha", 71160],
["Turi, ip ip ip", 74119], ["Ip ip ip turi ik", 76666], ["Ip, tsha ip ik", 79454],
["Eugh turi", 81186], ["eugh turi isha ip turisha", 82433], ["Turi, ip ip ip",
85346], ["Ip ip ip turi ik", 87963], ["Ip, tsha ip ik", 90757], ["Eugh turi",
92776], ["eugh turi isha ip turisha", 93914], ["Thsa", 98686], ["Ip ip", 100534],
["Thsa", 109780], ["Ip ip", 116890], ["Turi, ip ip ip", 119438], ["Ip ip ip turi
ik", 121839], ["Ip, tsha ip ik", 124701], ["Eugh turi", 126186], ["eugh turi isha
ip turisha", 127726], ["Turi, ip ip ip", 130610], ["Ip ip ip turi ik", 133162],
["Ip, tsha ip ik", 136083], ["Eugh turi", 138451], ["eugh turi isha ip turisha",
139431], ["Turi, ip ip ip", 141718], ["Ip ip ip turi ik", 171766], ["Ip, tsha ip
ik", 173608], ["Eugh turi", 174050], ["eugh turi isha ip turisha", 174714], ["Turi,
ip ip ip", 175754], ["Ip ip ip turi ik", 178427], ["Ip, tsha ip ik", 180996],
["Eugh turi", 182437], ["eugh turi isha ip turisha", 184070], ["Turi, ip ip ip",
186868], ["Ip ip ip turi ik", 189609], ["Ip, tsha ip ik", 192300], ["Eugh turi",
193692], ["eugh turi isha ip turisha", 195611], ["Turi, ip ip ip", 198298], ["Ip ip
ip turi ik", 201268], ["Ip, tsha ip ik", 203682], ["Eugh turi", 205139], ["eugh
turi isha ip turisha", 206782], ["Thsa", 211680], ["Ip ip", 219763], ["Thsa",
222759], ["Ip ip", 229811], ["Turi, ip ip ip", 232450], ["Ip ip ip turi ik",
234711], ["Ip, tsha ip ik", 237682], ["Eugh turi", 238925], ["eugh turi isha ip
turisha", 240651], ["Turi, ip ip ip", 243450], ["Ip ip ip turi ik", 246046], ["Ip,
tsha ip ik", 248938], ["Eugh turi", 250268], ["eugh turi isha ip turisha", 251933]]
};
this.livinglife = {
audio: new
Audio("https://cdn.discordapp.com/attachments/919188611214229524/981928418729934898
/1_ac_2_6_22.mp3"),
chats: [["Lord knows and I think", 15780], ["I know it too
sometimes", 17285], ["Every time and", 18961], ["they reachin' out for", 20223],
["what's mine", 21570], ["Lord knows and I think", 22570], ["I know it too
sometimes", 23781], ["Every time and", 25775], ["they reachin' out for", 26932],
["what's mine", 28198], ["I've been awake for days", 28955], ["So we out living
life", 29943], ["in the night", 31597], ["Pray to god", 32598], ["man I hope I
don't die", 33597], ["I've been awake for days", 35267], ["So we out living life",
36571], ["in the night", 38253], ["Pray to god", 39199], ["man I hope I don't die",
40032], ["in the night", 41702], ["Lord knows and I think", 42527], ["I know it too
sometimes", 43935], ["Every time and", 45937], ["they reachin' out for", 47036],
["what's mine", 48436], ["Lord knows and I think", 49263], ["I know it too
sometimes", 50589], ["Every time and", 52486], ["they reachin' out for", 53708],
["what's mine", 55117], ["Two bedrooms", 56000], ["seven little child", 57218],
["can't be right", 58532], ["Call my brother", 59452], ["he in prison doin' time",
60420], ["but we alright", 61855], ["Tried my best just to", 62799], ["catch a
fucking smile", 64059], ["But for now", 65327], ["I see myself ain't", 66109],
["hitting the 35", 67119], ["I've been awake for days", 69074], ["So we out living
life", 70173], ["in the night", 71817], ["Pray to god", 72875], ["man I hope I
don't die", 74031], ["I've been awake for days", 75399], ["So we out living life",
76931], ["in the night", 78639], ["Pray to god", 79393], ["man I hope I don't die",
80235], ["in the night", 81927], ["Lord knows and I think", 82788], ["I know it too
sometimes", 84179], ["Every time and", 86217], ["they reachin' out for", 87354],
["what's mine", 88685], ["Lord knows and I think", 89588], ["I know it too
sometimes", 90890], ["Every time and", 92840], ["they reachin' out", 93997], ["for
what's mine", 95011]]
};
this.takeover = {
audio: new
Audio("https://cdn.discordapp.com/attachments/1174992357767262238/11762177137277707
85/01._Take_Over.mp3"),
chats: [["We at the top again, now what?", 16900], ["Heavy
lay the crown, but", 18900], ["Count us", 20600], ["Higher than the mountain",
21380], ["And we be up here", 23300], ["for the long run", 24273], ["Strap in for a
long one", 25413], ["We got everybody on one", 27400], ["Now you're coming at the
king", 29740], ["so you better not miss", 30934], ["And we only get stronger",
33700], ["With everything I", 36163], ["carry up on my back", 37292], ["you should
paint it", 39360], ["up with a target", 40771], ["Why would you dare me", 46000],
["to do it again?", 46960], ["Come get your spoiler", 50800], ["up ahead", 51977],
["We're taking over,", 53800], ["We're Taking Over", 56832], ["Look at you come at
my name,", 61760], ["you 'oughta know by now,", 62866], ["That We're Taking Over,",
66300], ["We're Taking Over", 69411], ["Maybe you wonder what", 74500], ["your
futures gonna be but", 76300], ["I got it all locked up", 77780], ["Take a lap,
now", 93800], ["Don't be mad, now", 94933], ["Run it back, run it back", 97000],
["run it back, now", 98777], ["I got bodies lining up,", 100100], ["Think you're
dreaming", 101400], ["of greatness", 102663], [""], [""], [""], [""], [""], [""],
[""], [""], [""], [""], [""], [""]]
};
this.outtamind = {
audio: new
Audio("https://cdn.discordapp.com/attachments/919188611214229524/981933473709309982
/GENTRAMMEL_-_Out_Of_My_Mind__Lyrics_.mp3"),
chats: [["Remember the night that we met", 12576], ["Back
at the party", 13709], ["you sat on the bed", 14448], ["You said I’m talented",
15380], ["you said I’m next", 16065], ["My only talent", 16922], ["is making you
stressed", 17695], ["I know that I’m not in my best", 18510], ["lately I’m feeling
like less", 20254], ["I hope that I’ll see you again", 21815], ["if I don’t than",
23230], ["I’ll lay at the rest", 23823], ["It’s crazy how it goes", 24705], ["left
me all alone", 26020], ["I’ve been trying to move on", 28056], ["all I find are
holes", 29465], ["Searching for a pot of gold", 31159], ["don’t know if I’ll ever
know", 32572], ["How she left", 34156], ["me with no damn place to go", 34881],
["I’m okay, I’ll be fine", 37685], ["I’m just out of my mind", 40619], ["long
nights, with no sleep", 43802], ["thinking bout you and me", 46646], ["I’m okay,
I’ll be fine", 49703], ["I’m just out of my mind", 52687], ["Long nights, with no
sleep", 56105], ["thinking bout you and me", 59131], ["Spent five months", 61884],
["at your crib", 62780], ["and I ain’t pay no rent", 63749], ["We should’ve just
been friends", 64595], ["Cause I know you never meant", 66714], ["all the things
that", 67975], ["you said to me", 70217], ["Froze my heart in uncertainty", 70849],
["Go and hit the club in some", 74061], ["make sure that you drunk af", 75561],
["Find another man you love", 77207], ["imma show you what you lost", 78681],
["I'mma show you how it feels", 80210], ["to realize everything", 81740], ["you
ever knew", 82722], ["And everything you ever", 83692], ["had in love is gone",
84701], ["I’m okay, I’ll be fine", 86645], ["I’m just out of my mind", 88575],
["long nights, with no sleep", 93073], ["thinking bout you and me", 95794], ["I’m
okay, I’ll be fine", 98841], ["I’m just out of my mind", 102063], ["Long nights,
with no sleep", 105218], ["thinking bout you and me", 107967], ["I guess it’s here
for real", 110894], ["and If I had another chance", 112311], ["I don’t know if I’d
take", 113554], ["that bet against you", 114744], ["with another man", 115679],
["And if I ever saw your face", 116870], ["than I would probably", 118157], ["take
a glance", 119295], ["But I would never bat at night", 119966], ["because you hate
me", 121188], ["that’s a fact", 122158], ["I think that this is an epiphany",
123173], ["I don’t think that", 124724], ["you really listening", 125704], ["One
day you gonna", 126388], ["be missing me", 127116], ["I swear to God", 127850],
["that we’ll never be frenemies", 128440], ["Female dogs be tryna", 129331], ["to
be friends with me", 130191], ["I think they stealing my energy", 130907], ["in my
DMs and they tempting me", 131654], ["I know that you really", 133839], ["resenting
me now", 134709], ["I’m okay, I’ll be fine", 135602], ["I’m just out of my mind",
139010], ["long nights, with no sleep", 142174], ["thinking bout you and me",
144896], ["I’m okay, I’ll be fine", 148125], ["I’m just out of my mind", 151030],
["Long nights, with no sleep", 154548], ["thinking bout you and me", 157313]]
};
this.nobody = {
audio: new
Audio("https://cdn.discordapp.com/attachments/911557181353111595/100203609593820781
5/Zack_Merci_X_CRVN_-_Nobody_NCS_Release.mp3"),
chats: [["Children used to run and play", 16047], ["Look at
all the mess we made", 18834], ["Guess I'll never know", 21972], ["where it went
wrong", 23116], ["Sometimes I feel like", 27962], ["\"oh, that's sad\"", 28732],
["Goes viral then people forget", 30767], ["In this crazy world", 33943], ["I don't
belong", 35045], ["I see fire burning", 39164], ["but I close my eyes", 41249],
["(I'd rather deny that)", 43809], ["Everything is falling", 45250], ["out of
place", 47215], ["I see trees ripped", 50541], ["from the ground", 52212], ["But
nobody makes a sound", 54210], ["I see fire burning", 57003], ["but I'm fine",
59240], ["And I am nobody", 61475], ["And I am Nobody", 73778], ["The future feels
so", 99856], ["unsure we deserve more", 100949], ["The burden that you left",
106005], ["is way too heavy for me", 107306], ["Do you ever feel like", 111727],
["the world would die out", 113251], ["My anxiety is of", 114946], ["the roof I cry
out", 116239], ["We have gone too far", 117923], ["take me back right now",
118984], ["I see fire burning", 124198], ["but I close my eyes", 125314], ["(I'd
rather deny that)", 127683], ["Everything is falling", 129231], ["out of place",
131229], ["I see trees ripped", 134546], ["from the ground", 136762], ["But nobody
makes a sound", 138246], ["I see fire burning", 140946], ["but I'm fine", 142957],
["And I am nobody", 145167], ["And I am nobody", 170418]]
};
this.outerspace = {
audio: new
Audio("https://cdn.discordapp.com/attachments/919188611214229524/981935267155951646
/BEAUZ_-_Outerspace_Lyrics_feat._Dallas.mp3"),
chats: [["Falling in quickly", 2267], ["Tell me you feel
something too", 6056], ["Caught in the moment", 9720], ["I'm lost here without
you", 12072], ["Tangled up in your web", 15565], ["Holding on to", 18885], ["every
word you said", 20299], ["I'm ready I know", 22258], ["I'm hoping it shows",
23880], ["Would you say the same?", 25613], ["We're falling", 27374], ["from the
outer space", 28129], ["We're moving like a", 29969], ["full pace supernova",
30695], ["We're making all the", 33892], ["headlines now", 35003], ["And I just
wanna", 36829], ["seize the moment", 38230], ["'Cause we won't", 40572], ["ever
slow it down", 41372], ["Kissin' in the rain", 42947], ["Taste just like
champagne", 44601], ["Ballin' everyday", 46401], ["We're falling from outer space",
47649], ["Hopin' time won't change", 49656], ["Got love on my brain", 51442],
["Would you say the same", 53257], ["We're falling from outer space", 54647],
["We're falling from outer space", 60982], ["We're falling from outer space",
67811], ["We're falling from outer space", 74600], ["We're falling from outer
space", 81321], ["Falling in quickly", 86325], ["Tell me you feel something too",
90323], ["Caught in the moment", 94055], ["I'm lost here without you", 96170],
["Tangled up in your web", 99442], ["Holding on to", 103220], ["every word you
said", 104814], ["I'm ready I know", 106585], ["I'm hoping it shows", 108178],
["Would you say the same?", 110052], ["We're falling from the outer space",
111856], ["We're moving like a", 114382], ["full pace supernova", 115087], ["We're
making all the", 118063], ["headlines now", 119323], ["And I just wanna", 121048],
["seize the moment", 122684], ["'Cause we won't", 125220], ["ever slow it down",
125899], ["Kissin' in the rain", 127459], ["Taste just like champagne", 129015],
["Ballin' everyday", 130840], ["We're falling from outer space", 131919], ["Hopin'
time won't change", 134393], ["Got love on my brain", 135921], ["Would you say the
same?", 137671], ["We're falling from outer space (go)", 138737], ["We're falling
from outer space", 147417], ["We're falling from outer space", 153800], ["We're
falling from outer space", 160563], ["We're falling from outer space", 167204]]
};
this.playing = false;
this.doing = false;
this.current = null;
this.loadAudio = function (a) {
a.audio.load();
};
let a = this;
Object.getOwnPropertyNames(this).filter(a => !["playing",
"doing", "current", "loadAudio"].includes(a)).forEach(b => {
a.loadAudio(this[b]);
});
}
}
;
class ac {
constructor(b) {
this.sid = b;
this.init = function (b, c, d, e, f, g, h) {
g = g || {};
this.sentTo = {};
this.gridLocations = [];
this.active = true;
this.alive = true;
this.doUpdate = g.doUpdate;
this.x = b;
this.y = c;
if (a.anotherVisual) {
this.dir = d + Math.PI;
} else {
this.dir = d;
}
this.lastDir = d;
this.xWiggle = 0;
this.yWiggle = 0;
this.visScale = e;
this.scale = e;
this.type = f;
this.id = g.id;
this.owner = h;
this.name = g.name;
this.isItem = this.id != undefined;
this.group = g.group;
this.maxHealth = g.health;
this.health = this.maxHealth;
this.healthMov = 100;
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 = g.colDiv || 1;
this.blocker = g.blocker;
this.ignoreCollision = g.ignoreCollision;
this.dontGather = g.dontGather;
this.hideFromEnemy = g.hideFromEnemy;
this.friction = g.friction;
this.projDmg = g.projDmg;
this.dmg = g.dmg;
this.pDmg = g.pDmg;
this.pps = g.pps;
this.zIndex = g.zIndex || 0;
this.turnSpeed = g.turnSpeed;
this.req = g.req;
this.trap = g.trap;
this.healCol = g.healCol;
this.teleport = g.teleport;
this.boostSpeed = g.boostSpeed;
this.projectile = g.projectile;
this.shootRange = g.shootRange;
this.shootRate = g.shootRate;
this.shootCount = this.shootRate;
this.spawnPoint = g.spawnPoint;
this.onNear = 0;
this.breakObj = false;
this.alpha = g.alpha || 1;
this.maxAlpha = g.alpha || 1;
this.damaged = 0;
};
this.changeHealth = function (a, b) {
this.health += a;
return this.health <= 0;
};
this.getScale = function (a, b) {
a = a || 1;
return this.scale * (this.isItem || this.type == 2 ||
this.type == 3 || this.type == 4 ? 1 : a * 0.6) * (b ? 1 : this.colDiv);
};
this.visibleToPlayer = function (a) {
return !this.hideFromEnemy || this.owner && (this.owner ==
a || this.owner.team && a.team == this.owner.team);
};
this.update = function (b) {
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, b);
}
if (this.yWiggle) {
this.yWiggle *= Math.pow(0.99, b);
}
if (a.anotherVisual) {
let a = cd.getAngleDist(this.lastDir, this.dir);
if (a > 0.01) {
this.dir += a / 5;
} else {
this.dir = this.lastDir;
}
} else if (this.turnSpeed && this.dmg) {
this.dir += this.turnSpeed * b;
}
} else if (this.alive) {
this.alpha -= b / (200 / this.maxAlpha);
this.visScale += b / (this.scale / 2.5);
if (this.alpha <= 0) {
this.alpha = 0;
this.alive = false;
}
}
};
this.isTeamObject = function (a) {
if (this.owner == null) {
return true;
} else {
return this.owner && a.sid == this.owner.sid ||
a.findAllianceBySid(this.owner.sid);
}
};
}
}
class bc {
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: 100,
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: 100,
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: 100,
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 (a) {
return a.changeHealth(20, a);
},
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 (a) {
return a.changeHealth(40, a);
},
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 (a) {
if (a.changeHealth(30, a) || a.health < 100) {
a.dmgOverTime.dmg = -10;
a.dmgOverTime.doer = a;
a.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.003,
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.0016,
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.0025,
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.005,
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 (a, b) {
if ([0, 1, 2].includes(a)) {
return 0;
} else if ([3, 4, 5].includes(a)) {
return 1;
} else if ([6, 7, 8, 9].includes(a)) {
return 2;
} else if ([10, 11, 12].includes(a)) {
return 3;
} else if ([13, 14].includes(a)) {
return 5;
} else if ([15, 16].includes(a)) {
return 4;
} else if ([17, 18, 19, 21, 22].includes(a)) {
if ([13, 14].includes(b)) {
return 6;
} else {
return 5;
}
} else if (a == 20) {
if ([13, 14].includes(b)) {
return 7;
} else {
return 6;
}
} else {
return undefined;
}
}
};
for (let a = 0; a < this.list.length; ++a) {
this.list[a].id = a;
if (this.list[a].pre) {
this.list[a].pre = a - this.list[a].pre;
}
}
if (typeof window !== "undefined") {
function a(a) {
for (let b = a.length - 1; b > 0; b--) {
const c = Math.floor(Math.random() * (b + 1));
[a[b], a[c]] = [a[c], a[b]];
}
return a;
}
}
}
}
class cc {
constructor(a, b, c, d, e, f) {
let g = Math.floor;
let h = Math.abs;
let i = Math.cos;
let j = Math.sin;
let k = Math.pow;
let l = Math.sqrt;
this.ignoreAdd = false;
this.hitObj = [];
this.disableObj = function (a) {
a.active = false;
if (d.anotherVisual) { } else {
a.alive = false;
}
};
let m;
this.add = function (c, d, e, f, g, h, i, j, k) {
m = Va(c);
if (!m) {
m = b.find(a => !a.active);
if (!m) {
m = new a(c);
b.push(m);
}
}
if (j) {
m.sid = c;
}
m.init(d, e, f, g, h, i, k);
};
this.disableBySid = function (a) {
let b = Va(a);
if (b) {
this.disableObj(b);
}
};
this.removeAllItems = function (a, c) {
b.filter(b => b.active && b.owner && b.owner.sid ==
a).forEach(a => this.disableObj(a));
};
this.checkItemLocation = function (a, e, f, g, h, i, j) {
let k = b.find(b => b.active && c.getDistance(a, e, b.x,
b.y) < f + (b.blocker ? b.blocker : b.getScale(g, b.isItem)));
if (k) {
return false;
}
if (!i && h != 18 && e >= d.mapScale / 2 - d.riverWidth / 2
&& e <= d.mapScale / 2 + d.riverWidth / 2) {
return false;
}
return true;
};
}
}
class dc {
constructor(a, b, c, d, e, f, g) {
this.init = function (a, b, c, d, e, f, g, h, i) {
this.active = true;
this.tickActive = true;
this.indx = a;
this.x = b;
this.y = c;
this.x2 = b;
this.y2 = c;
this.dir = d;
this.skipMov = true;
this.speed = e;
this.dmg = f;
this.scale = h;
this.range = g;
this.r2 = g;
this.owner = i;
};
this.update = function (a) {
if (this.active) {
let b = this.speed * a;
if (!this.skipMov) {
this.x += b * Math.cos(this.dir);
this.y += b * Math.sin(this.dir);
this.range -= b;
if (this.range <= 0) {
this.x += this.range * Math.cos(this.dir);
this.y += this.range * Math.sin(this.dir);
b = 1;
this.range = 0;
this.active = false;
}
} else {
this.skipMov = false;
}
}
};
this.tickUpdate = function (a) {
if (this.tickActive) {
let b = this.speed * a;
if (!this.skipMov) {
this.x2 += b * Math.cos(this.dir);
this.y2 += b * Math.sin(this.dir);
this.r2 -= b;
if (this.r2 <= 0) {
this.x2 += this.r2 * Math.cos(this.dir);
this.y2 += this.r2 * Math.sin(this.dir);
b = 1;
this.r2 = 0;
this.tickActive = false;
}
} else {
this.skipMov = false;
}
}
};
}
}
;
class ec {
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: "Soldier Helmet",
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 fc {
constructor(a, b, c, d, e, f, g, h, i) {
this.addProjectile = function (j, k, l, m, n, o, p, q, r, s) {
let t = f.projectiles[o];
let u;
for (let a = 0; a < b.length; ++a) {
if (!b[a].active) {
u = b[a];
break;
}
}
if (!u) {
u = new a(c, d, e, f, g, h, i);
u.sid = b.length;
b.push(u);
}
u.init(o, j, k, l, n, t.dmg, m, t.scale, p);
u.ignoreObj = q;
u.layer = r || t.layer;
u.inWindow = s;
u.src = t.src;
return u;
};
}
}
;
class gc {
constructor(a, b, c, d, e, f, g, h, i) {
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 (j, k, l, m) {
let n = a.find(a => !a.active);
if (!n) {
n = new b(a.length, e, c, d, g, f, h, i);
a.push(n);
}
n.init(j, k, l, m, this.aiTypes[m]);
return n;
};
}
}
;
class hc {
constructor(a, b, c, d, e, f, g, h) {
this.sid = a;
this.isAI = true;
this.nameIndex = e.randInt(0, f.cowNames.length - 1);
this.init = function (a, b, c, d, e) {
this.x = a;
this.y = b;
this.startX = e.fixedSpawn ? a : null;
this.startY = e.fixedSpawn ? b : null;
this.xVel = 0;
this.yVel = 0;
this.zIndex = 0;
this.dir = c;
this.dirPlus = 0;
this.index = d;
this.src = e.src;
if (e.name) {
this.name = e.name;
}
this.weightM = e.weightM;
this.speed = e.speed;
this.killScore = e.killScore;
this.turnSpeed = e.turnSpeed;
this.scale = e.scale;
this.maxHealth = e.health;
this.leapForce = e.leapForce;
this.health = this.maxHealth;
this.chargePlayer = e.chargePlayer;
this.viewRange = e.viewRange;
this.drop = e.drop;
this.dmg = e.dmg;
this.hostile = e.hostile;
this.dontRun = e.dontRun;
this.hitRange = e.hitRange;
this.hitDelay = e.hitDelay;
this.hitScare = e.hitScare;
this.spriteMlt = e.spriteMlt;
this.nameScale = e.nameScale;
this.colDmg = e.colDmg;
this.noTrap = e.noTrap;
this.spawnDelay = e.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 i = 0;
let j = 0;
this.animate = function (a) {
if (this.animTime > 0) {
this.animTime -= a;
if (this.animTime <= 0) {
this.animTime = 0;
this.dirPlus = 0;
i = 0;
j = 0;
} else if (j == 0) {
i += a / (this.animSpeed * f.hitReturnRatio);
this.dirPlus = e.lerp(0, this.targetAngle,
Math.min(1, i));
if (i >= 1) {
i = 1;
j = 1;
}
} else {
i -= a / (this.animSpeed * (1 - f.hitReturnRatio));
this.dirPlus = e.lerp(0, this.targetAngle,
Math.max(0, i));
}
}
};
this.startAnim = function () {
this.animTime = this.animSpeed = 600;
this.targetAngle = Math.PI * 0.8;
i = 0;
j = 0;
};
}
}
;
class ic {
constructor(a, b, c, d) {
this.x = a;
this.y = b;
this.alpha = 0;
this.active = true;
this.alive = false;
this.chat = c;
this.owner = d;
}
}
;
class jc {
constructor(a, b, c, d, e, f, g, h, i, j) {
this.x = a;
this.y = b;
this.lastDir = c;
this.dir = c + Math.PI;
this.buildIndex = d;
this.weaponIndex = e;
this.weaponVariant = f;
this.accessories = hat(13, 1);
this.skinColor = 4;
this.scale = h;
this.visScale = 0;
this.name = i;
this.alpha = 1;
this.rotationSpeed = 0.1;
this.movementSpeed = -1;
this.active = false;
this.animate = function (a) {
let b = cd.getAngleDist(this.lastDir, this.dir);
if (b > 0.01) {
this.dir += b / 20;
} else {
this.dir = this.lastDir;
}
if (this.visScale < this.scale) {
this.visScale += a / (this.scale / 2);
if (this.visScale >= this.scale) {
this.visScale = this.scale;
}
}
this.alpha -= a / 30000;
if (this.alpha <= 0) {
this.alpha = 0;
this.active = false;
}
};
this.dir += this.rotationSpeed;
this.x += Math.cos(this.dir) * this.movementSpeed;
this.y += Math.sin(this.dir) * this.movementSpeed;
}
}
;
class kc {
constructor(a, b, c, d, e, f, g, i, j, k, l, m, n, o) {
this.id = a;
this.sid = b;
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.tails = {};
for (let h = 0; h < l.length; ++h) {
if (l[h].price <= 0) {
this.tails[l[h].id] = 1;
}
}
this.skins = {};
for (let h = 0; h < k.length; ++h) {
if (k[h].price <= 0) {
this.skins[k[h].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 (a) {
this.attacked = false;
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 = c.playerScale;
this.speed = c.playerSpeed;
this.resetMoveDir();
this.resetResources(a);
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 (a) {
for (let b = 0; b < c.resourceTypes.length; ++b) {
this[c.resourceTypes[b]] = a ? 100 : 0;
}
};
this.getItemType = function (a) {
let b = this.items.findIndex(b => b == a);
if (b != -1) {
return b;
} else {
return j.checkItem.index(a, this.items);
}
};
this.setData = function (a) {
this.id = a[0];
this.sid = a[1];
this.name = a[2];
this.x = a[3];
this.y = a[4];
this.dir = a[5];
this.health = a[6];
this.maxHealth = a[7];
this.scale = a[8];
this.skinColor = a[9];
};
this.updateTimer = function () {
this.bullTimer -= 1;
if (this.bullTimer <= 0) {
this.setBullTick = false;
this.bullTick = la.tick - 1;
this.bullTimer = c.serverUpdateRate;
}
this.poisonTimer -= 1;
if (this.poisonTimer <= 0) {
this.setPoisonTick = false;
this.poisonTick = la.tick - 1;
this.poisonTimer = c.serverUpdateRate;
}
};
this.update = function (a) {
if (this.alive) {
if (this.health != this.healthMov) {
if (this.health < this.healthMov) {
this.healthMov -= 2;
} else {
this.healthMov += 2;
}
if (Math.abs(this.health - this.healthMov) < 2) {
this.healthMov = this.health;
}
}
;
if (this.shameCount != this.shameMov) {
if (this.shameCount < this.shameMov) {
this.shameMov -= 0.1;
} else {
this.shameMov += 0.1;
}
if (Math.abs(this.shameCount - this.shameMov) <
0.1) {
this.shameMov = this.shameCount;
}
}
}
if (this.sid == Ha) {
this.circleRad = parseInt(h("circleRad").value) || 0;
this.circleRadSpd = parseFloat(h("radSpeed").value) ||
0;
this.cAngle += this.circleRadSpd;
}
if (this.active) {
let a = {
skin: Qa(k, this.skinIndex),
tail: Qa(l, this.tailIndex)
};
let b = (this.buildIndex >= 0 ? 0.5 : 1) *
(j.weapons[this.weaponIndex].spdMult || 1) * (a.skin ? a.skin.spdMult || 1 : 1) *
(a.tail ? a.tail.spdMult || 1 : 1) * (this.y <= c.snowBiomeTop ? a.skin &&
a.skin.coldM ? 1 : c.snowSpeed : 1) * this.slowMult;
this.maxSpeed = b;
}
};
let p = 0;
let q = 0;
this.animate = function (a) {
if (this.animTime > 0) {
this.animTime -= a;
if (this.animTime <= 0) {
this.animTime = 0;
this.dirPlus = 0;
p = 0;
q = 0;
} else if (q == 0) {
p += a / (this.animSpeed * c.hitReturnRatio);
this.dirPlus = d.lerp(0, this.targetAngle,
Math.min(1, p));
if (p >= 1) {
p = 1;
q = 1;
}
} else {
p -= a / (this.animSpeed * (1 - c.hitReturnRatio));
this.dirPlus = d.lerp(0, this.targetAngle,
Math.max(0, p));
}
}
};
this.startAnim = function (a, b) {
this.animTime = this.animSpeed = j.weapons[b].speed;
this.targetAngle = a ? -c.hitAngle : -Math.PI;
p = 0;
q = 0;
};
this.canSee = function (a) {
if (!a) {
return false;
}
let b = Math.abs(a.x - this.x) - a.scale;
let d = Math.abs(a.y - this.y) - a.scale;
return b <= c.maxScreenWidth / 2 * 1.3 && d <=
c.maxScreenHeight / 2 * 1.3;
};
this.judgeShame = function () {
if (this.oldHealth < this.health) {
if (this.hitTime) {
let a = Date.now() - this.hitTime;
this.lastHit = la.tick;
this.hitTime = 0;
if (a < 120) {
this.shameCount++;
} else {
this.shameCount = Math.max(0, this.shameCount -
2);
}
}
} else if (this.oldHealth > this.health) {
this.hitTime = Date.now();
}
};
this.addShameTimer = function () {
this.shameCount = 0;
this.shameTimer = 30;
let a = setInterval(() => {
this.shameTimer--;
if (this.shameTimer <= 0) {
clearInterval(a);
}
}, 1000);
};
this.isTeam = function (a) {
return this == a || this.team && this.team == a.team;
};
this.findAllianceBySid = function (a) {
if (this.team) {
return Ba.find(b => b === a);
} else {
return null;
}
};
}
let Vc = [];
// class traps
class Wc {
constructor(b, c) {
this.dist = 0;
this.aim = 0;
this.inTrap = false;
this.replaced = false;
this.antiTrapped = false;
this.info = {};
this.notFast = function () {
return Ga.weapons[1] == 10 && (this.info.health >
c.weapons[Ga.weapons[0]].dmg || Ga.weapons[0] == 5);
};
this.testCanPlace = function (d, e = undefined, f = undefined,
g = undefined, h, i, j) {
if (e === undefined) e = -(Math.PI / 2);
if (f === undefined) f = Math.PI / 2;
if (g === undefined) g = Math.PI / 18;
try {
let k = c.list[Ga.items[d]];
let l = Ga.scale + k.scale + (k.placeOffset || 0);
let m = {
attempts: 0,
placed: 0
};
let n = [];
Ca.forEach(a => {
n.push({
x: a.x,
y: a.y,
active: a.active,
blocker: a.blocker,
scale: a.scale,
isItem: a.isItem,
type: a.type,
colDiv: a.colDiv,
getScale: function (a, b) {
a = a || 1;
return this.scale * (this.isItem ||
this.type == 2 || this.type == 3 || this.type == 4 ? 1 : a * 0.6) * (b ? 1 :
this.colDiv);
}
});
});
for (let c = e; c < f; c += g) {
m.attempts++;
let e = h + c;
let f = Ga.x2 + l * Math.cos(e);
let g = Ga.y2 + l * Math.sin(e);
let o = n.find(a => a.active && b.getDistance(f, g,
a.x, a.y) < k.scale + (a.blocker ? a.blocker : a.getScale(0.6, a.isItem)));
if (o) {
continue;
}
if (k.id != 18 && g >= a.mapScale / 2 -
a.riverWidth / 2 && g <= a.mapScale / 2 + a.riverWidth / 2) {
continue;
}
if (!i && j || ga) {
if (ga ? false : j.inTrap) {
if (b.getAngleDist(Oa.aim2 + Math.PI, e +
Math.PI) <= Math.PI) {
uc(2, e, 1);
} else if (Ga.items[4] == 15) {
uc(4, e, 1);
}
} else if (b.getAngleDist(Oa.aim2, e) <=
a.gatherAngle / 1.5) {
uc(2, e, 1);
} else if (Ga.items[4] == 15) {
uc(4, e, 1);
}
} else {
uc(d, e, 1);
}
n.push({
x: f,
y: g,
active: true,
blocker: k.blocker,
scale: k.scale,
isItem: true,
type: null,
colDiv: k.colDiv,
getScale: function () {
return this.scale;
}
});
if (b.getAngleDist(Oa.aim2, e) <= 1) {
m.placed++;
}
}
if (m.placed > 0 && i && k.dmg) {
if (Oa.dist2 <= c.weapons[Ga.weapons[0]].range +
Ga.scale * 1.8 && s.spikeTick) {
md.canSpikeTick = true;
}
}
} catch (a) { }
};
this.checkSpikeTick = function () {
try {
if (![3, 4, 5].includes(Oa.primaryIndex)) {
return false;
}
if (h("safeAntiSpikeTick").checked || player.autoPush ?
false : Oa.primaryIndex == undefined ? true : Oa.reloads[Oa.primaryIndex] >
la.tickRate) {
return false;
}
if (Oa.dist2 <= c.weapons[Oa.primaryIndex || 5].range +
Oa.scale * 1.8) {
let d = c.list[9];
let e = Oa.scale + d.scale + (d.placeOffset || 0);
let f = 0;
let g = {
attempts: 0,
block: "unblocked"
};
for (let c = -1; c <= 1; c += 1 / 10) {
g.attempts++;
let h = b.getDirect(Ga, Oa, 2, 2) + c;
let i = Oa.x2 + e * Math.cos(h);
let j = Oa.y2 + e * Math.sin(h);
let k = Ca.find(a => a.active &&
b.getDistance(i, j, a.x, a.y) < d.scale + (a.blocker ? a.blocker : a.getScale(0.6,
a.isItem)));
if (k) {
continue;
}
if (j >= a.mapScale / 2 - a.riverWidth / 2 && j
<= a.mapScale / 2 + a.riverWidth / 2) {
continue;
}
f++;
g.block = "blocked";
break;
}
if (f) {
player.anti0Tick = 1;
Ga.chat.message = "Anti SpikeTick " + Oa.sid;
Ga.chat.count = 2000;
return true;
}
}
} catch (a) {
return null;
}
return false;
};
this.protect = function (a) {
if (!s.antiTrap) {
return;
}
if (Be(Oa, Ga) > Be(Oa, ld.info)) {
for (let a = -(Math.PI / 2); a < Math.PI / 2; a +=
Math.PI / 18) {
Dc(2, Oa.aim2 + a);
}
} else if (Be(Oa, ld.info) > Be(Oa, Ga)) {
for (let a = -(Math.PI / 2); a < Math.PI / 2; a +=
Math.PI / 18) {
Dc(4, Oa.aim2 + a);
}
}
if (Ga.items[4]) {
this.testCanPlace(4, -(Math.PI / 2), Math.PI / 2,
Math.PI / 18, a + Math.PI);
this.antiTrapped = true;
}
};
let d = new Set();
let e = new Set();
function toR(e) {
var n = (e * Math.PI / 180) % (2 * Math.PI);
return n > Math.PI ? Math.PI - n : n
}
function f(a, b, c, d) {
return Math.atan2(d - b, c - a);
}
function g(a) {
const b = 20;
return a.health < b;
}
this.autoPlace = function (p) {
try {
if (!player.autoPush) {
const a = Ca.filter(a => a.trap &&
a.active).sort((a, b) => cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa, 0, 2)).find(a
=> {
const b = Math.hypot(a.y - Oa.y2, a.x - Oa.x2);
return a !== Ga && (Ga.sid === a.owner.sid ||
Qc(a.owner.sid)) && b <= 50;
});
let b = dd.weapons[Ga.weaponIndex].range + 70;
if (La.length) {
let c = Ca.find(a => Be(Ga, a) <= 250 &&
a.buildHealth * 100 / a.health <= Math.max(De(Ga), De(Oa)) + 10);
if (La.length && c && !Ga.inTrap && Be(Ga, c)
<= dd.weapons[Ga.weapons[0]].range && Be(Oa, c) <= dd.weapons[Ga.weapons[0]].range)
{
let d =
Ga.buildItemPosition(dd.list[Ga.items[2]], Ce(Ga, c));
let e = {
x: d.x,
y: d.y,
scale: dd.list[Ga.items[2]].scale
};
if (La.length) {
Wb.add(d, 1, c, e.scale, true);
}
let f = cd.getDist(Ma, Ga, 0, 2);
let g = cd.getDirect(Ma, Ga, 0, 2);
function h(a) {
Fe(a, Ce(Ga, c));
Ia.filter(a => cd.getAngleDist(a,
Ce(Ga, c)) <= Math.PI / 2).forEach(function (b) {
Fe(a, b);
});
}
la.tickBase(() => {
if (Oa.skinIndex == 6 && Oa.dist2 <= b
&& Ma.health <= 272.58 && Ke(Ma, Ga) <= b || La.length &&
Oa.reloads[Oa.weaponIndex] <= a.tickRate * (window.pingTime >= 200 ? 2 : 1) ||
Ga.reloads[Ga.weaponIndex] * 1000 <= a.tickRate * (window.pingTime >= 200 ? 2 : 1))
{
uc(2, g);
h(4);
} else {
h(2);
}
}, 1);
}
}
if (a && Oa.dist2 <= 160) {
const b = a.x;
const c = a.y;
const e = 102;
const f = 64;
for (let a = 0; a < f; a++) {
const g = Math.PI * 2 * a / f;
const h = b + e * Math.cos(g);
const i = c + e * Math.sin(g);
const j = [h, i];
const k = Math.hypot(j[0] - Ga.x2, j[1] -
Ga.y2);
if (!d.has(JSON.stringify(j)) && Pc(j) && k
<= 87) {
const a = Math.atan2(j[1] - Ga.y2, j[0]
- Ga.x2);
Dc(2, a);
d.add(JSON.stringify(j));
}
}
} else if (!a && Oa.dist2 <= 406) {
d.clear();
const a = 3;
const b = 50;
const c = Rc(Ga.x2, Ga.y2, b);
let f = 0;
for (const b of c) {
if (f < a && !e.has(JSON.stringify(b)) &&
Pc(b)) {
Dc(4, ...b);
e.add(JSON.stringify(b));
f++;
}
}
}
}
} catch (e) { }
};
this.replacer = function (a) {
if (!a || !s.autoReplace) {
return;
}
if (!Qb) {
return;
}
if (this.antiTrapped) {
return;
}
la.tickBase(() => {
let d = b.getDirect(a, Ga, 0, 2);
let e = b.getDist(a, Ga, 0, 2);
let h = f(a.x, a.y, Ga.x, Ga.y);
if (x.autoGrind.enabled && e <=
c.weapons[Ga.weaponIndex].range + Ga.scale) {
return;
}
if (e <= 400 && Oa.dist2 <= 400) {
if (g(a)) {
let a = this.checkSpikeTick();
if (!a && Oa.dist2 <= c.weapons[Oa.primaryIndex
|| 5].range + Oa.scale * 1.8) {
this.testCanPlace(2, 0, Math.PI * 2,
Math.PI / 24, h, 1);
} else if (Ga.items[4] == 15) {
this.testCanPlace(4, 0, Math.PI * 2,
Math.PI / 24, h, 1);
}
this.replaced = true;
}
}
}, 1);
};
}
}
// class instakill
class Xc {
constructor() {
this.wait = false;
this.can = false;
this.isTrue = false;
this.nobull = false;
this.ticking = false;
this.canSpikeTick = false;
this.startTick = false;
this.readyTick = false;
this.canCounter = false;
this.revTick = false;
this.syncHit = false;
this.changeType = function (a) {
this.wait = false;
this.isTrue = true;
player.autoAim = true;
let b = [a];
let c = Oa.backupNobull;
Oa.backupNobull = false;
la.tickBase(() => {
b.push(Ga.skinIndex);
la.tickBase(() => {
if (Oa.skinIndex == 22 &&
h("backupNobull").checked) {
Oa.backupNobull = true;
}
b.push(Ga.skinIndex);
}, 1);
}, 1);
if (a == "rev") {
hat(18, 1);
weapon(Ga.weapons[1]);
hat(53, 0);
hat(18, 1);
autoattack();
la.tickBase(() => {
weapon(Ga.weapons[0]);
hat(7, 0);
hat(18, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}, 1);
} else if (a == "nobull") {
weapon(Ga.weapons[0]);
if (h("backupNobull").checked && c) {
hat(7, 0);
} else {
hat(6, 0);
}
hat(18, 1);
autoattack();
la.tickBase(() => {
if (Oa.skinIndex == 22) {
if (h("backupNobull").checked) {
Oa.backupNobull = true;
}
hat(6, 0);
} else {
hat(53, 0);
}
weapon(Ga.weapons[1]);
hat(18, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}, 1);
} else if (a == "normal") {
hat(18, 1);
hat(7, 0);
weapon(Ga.weapons[0]);
hat(18, 1);
autoattack();
la.tickBase(() => {
weapon(Ga.weapons[1]);
hat(Ga.reloads[53] == 0 ? 53 : 6, 0);
hat(18, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}, 1);
} else {
setTimeout(() => {
this.isTrue = false;
player.autoAim = false;
}, 50);
}
};
this.spikeTickType = function () {
this.isTrue = true;
player.autoAim = true;
hat(18, 1);
weapon(Ga.weapons[0]);
hat(7, 0);
hat(18, 1);
autoattack();
la.tickBase(() => {
hat(53, 0);
weapon(Ga.weapons[0]);
hat(53, 0);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
hat(6, 0);
}, 3);
}, 1);
};
this.counterType = function () {
this.isTrue = true;
player.autoAim = true;
weapon(Ga.weapons[0]);
hat(7, 0);
hat(18, 1);
autoattack();
la.tickBase(() => {
if (Ga.reloads[53] == 0 && h("turretCombat").checked) {
weapon(Ga.weapons[0]);
hat(53, 0);
hat(21, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
} else {
autoattack();
this.isTrue = false;
player.autoAim = false;
}
}, 1);
};
this.antiCounterType = function () {
player.autoAim = true;
this.isTrue = true;
weapon(Ga.weapons[0]);
hat(6, 0);
hat(18, 1);
sa.send("D", Oa.aim2);
autoattack();
la.tickBase(() => {
hat(Ga.reloads[53] == 0 ? Ga.skins[53] ? 53 : 6 : 6,
0);
hat(18, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}, 1);
};
this.rangeType = function (a) {
this.isTrue = true;
player.autoAim = true;
if (a == "ageInsta") {
player.ageInsta = false;
if (Ga.items[5] == 18) {
uc(5, Oa.aim2);
}
packet("a", undefined, 1);
hat(22, 0);
hat(21, 1);
la.tickBase(() => {
weapon(Ga.weapons[1]);
hat(53, 0);
hat(21, 1);
autoattack();
la.tickBase(() => {
lc(12);
weapon(Ga.weapons[1]);
hat(53, 0);
hat(21, 1);
la.tickBase(() => {
lc(15);
weapon(Ga.weapons[1]);
hat(53, 0);
hat(18, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}, 1);
}, 1);
}, 1);
} else {
weapon(Ga.weapons[1]);
if (Ga.reloads[53] == 0 && Oa.dist2 <= 700 &&
Oa.skinIndex != 22) {
hat(53, 0);
} else {
hat(20, 0);
}
hat(21, 1);
autoattack();
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
}, 1);
}
};
this.oneTickType = function () {
this.isTrue = true;
player.autoAim = true;
weapon(Ga.weapons[1]);
hat(53, 0);
hat(18, 1);
packet("a", Oa.aim2, 1);
if (Ga.weapons[1] == 15) {
player.revAim = true;
autoattack();
}
la.tickBase(() => {
const a = Ca.filter(a => a.trap && a.active).sort((a,
b) => cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa, 0, 2)).find(a => {
const b = Math.hypot(a.y - Oa.y2, a.x - Oa.x2);
return a !== Ga && (Ga.sid === a.owner.sid ||
findAllianceBySid(a.owner.sid)) && b <= 50;
});
if ([6, 22].includes(Oa.skinIndex) && a) {
sa.send("6", "");
}
player.revAim = false;
weapon(Ga.weapons[0]);
hat(7, 0);
hat(21, 1);
packet("a", Oa.aim2, 1);
if (Ga.weapons[1] != 15) {
autoattack();
}
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
packet("a", undefined, 1);
}, 1);
}, 1);
};
this.threeOneTickType = function () {
this.isTrue = true;
player.autoAim = true;
weapon(Ga.weapons[[10, 14].includes(Ga.weapons[1]) ? 1 :
0]);
biomeGear();
packet("a", Oa.aim2, 1);
la.tickBase(() => {
weapon(Ga.weapons[[10, 14].includes(Ga.weapons[1]) ?
1 : 0]);
hat(53, 0);
packet("a", Oa.aim2, 1);
la.tickBase(() => {
weapon(Ga.weapons[0]);
hat(7, 0);
autoattack();
packet("a", Oa.aim2, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
packet("a", undefined, 1);
}, 1);
}, 1);
}, 1);
};
this.kmTickType = function () {
this.isTrue = true;
player.autoAim = true;
player.revAim = true;
weapon(Ga.weapons[1]);
hat(53, 0);
hat(18, 1);
autoattack();
packet("a", Oa.aim2, 1);
la.tickBase(() => {
player.revAim = false;
weapon(Ga.weapons[0]);
hat(7, 0);
hat(0, 1);
packet("a", Oa.aim2, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
packet("a", undefined, 1);
}, 1);
}, 1);
};
this.boostTickType = function () {
this.isTrue = true;
player.autoAim = true;
biomeGear();
hat(18, 1);
packet("a", Oa.aim2, 1);
la.tickBase(() => {
if (Ga.weapons[1] == 15) {
player.revAim = true;
}
weapon(Ga.weapons[[9, 12, 13,
15].includes(Ga.weapons[1]) ? 1 : 0]);
hat(53, 0);
hat(18, 1);
if ([9, 12, 13, 15].includes(Ga.weapons[1])) {
autoattack();
}
packet("a", Oa.aim2, 1);
uc(4, Oa.aim2);
la.tickBase(() => {
player.revAim = false;
weapon(Ga.weapons[0]);
hat(7, 0);
hat(21, 1);
if (![9, 12, 13, 15].includes(Ga.weapons[1])) {
autoattack();
}
packet("a", Oa.aim2, 1);
la.tickBase(() => {
autoattack();
this.isTrue = false;
player.autoAim = false;
packet("a", undefined, 1);
}, 1);
}, 1);
}, 1);
};
this.gotoGoal = function (b, c) {
let d = b => b * a.playerScale;
let e = {
a: b - c,
b: b + c,
c: b - d(1),
d: b + d(1),
e: b - d(2),
f: b + d(2),
g: b - d(4),
h: b + d(4)
};
let f = function (b, c) {
if (Ga.y2 >= a.mapScale / 2 - a.riverWidth / 2 && Ga.y2
<= a.mapScale / 2 + a.riverWidth / 2 && c == 0) {
hat(31, 0);
} else {
hat(b, c);
}
};
if (La.length) {
let a = Oa.dist2;
this.ticking = true;
if (a >= e.a && a <= e.b) {
f(22, 0);
f(11, 1);
if (Ga.weaponIndex != Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
return {
dir: undefined,
action: 1
};
} else {
if (a < e.a) {
if (a >= e.g) {
if (a >= e.e) {
if (a >= e.c) {
f(40, 0);
f(10, 1);
if (s.slowOT) {
if (Ga.buildIndex !=
Ga.items[1]) {
pc(Ga.items[1]);
}
} else if (Ga.weaponIndex !=
Ga.weapons[[10, 14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
} else {
f(22, 0);
f(13, 1);
if (Ga.weaponIndex !=
Ga.weapons[[10, 14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
} else {
f(6, 0);
f(12, 1);
if (Ga.weaponIndex != Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
} else {
biomeGear();
f(11, 1);
if (Ga.weaponIndex != Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
return {
dir: Oa.aim2 + Math.PI,
action: 0
};
} else if (a > e.b) {
if (a <= e.h) {
if (a <= e.f) {
if (a <= e.d) {
f(40, 0);
f(9, 1);
if (s.slowOT) {
if (Ga.buildIndex !=
Ga.items[1]) {
pc(Ga.items[1]);
}
} else if (Ga.weaponIndex !=
Ga.weapons[[10, 14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
} else {
f(22, 0);
f(13, 1);
if (Ga.weaponIndex !=
Ga.weapons[[10, 14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
} else {
f(6, 0);
f(12, 1);
if (Ga.weaponIndex != Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
} else {
biomeGear();
f(11, 1);
if (Ga.weaponIndex != Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0] || Ga.buildIndex > -1) {
weapon(Ga.weapons[[10,
14].includes(Ga.weapons[1]) ? 1 : 0]);
}
}
return {
dir: Oa.aim2,
action: 0
};
}
return {
dir: undefined,
action: 0
};
}
} else {
this.ticking = false;
return {
dir: undefined,
action: 0
};
}
};
this.bowMovement = function () {
let a = this.gotoGoal(685, 3);
if (a.action) {
if (Ga.reloads[53] == 0 && !this.isTrue) {
this.rangeType("ageInsta");
} else {
packet("a", a.dir, 1);
}
} else {
packet("a", a.dir, 1);
}
};
this.tickMovement = function () {
const trap1 = Ca
.filter(e => e.trap && e.active)
.sort((a, b) => cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa,
0, 2))
.find(trap => {
const trapDist = Math.hypot(trap.y - Oa.y2, trap.x -
Oa.x2);
return trap !== Ga && (Ga.sid === trap.owner.sid ||
findAllianceBySid(trap.owner.sid)) && trapDist <= 50;
});
let c = this.gotoGoal(
[10, 14].includes(Ga.weapons[1]) && Ga.y2 >
a.snowBiomeTop ?
240 :
Ga.weapons[1] == 15 ?
250 :
Ga.y2 <= a.snowBiomeTop ? [10,
14].includes(Ga.weapons[1]) ?
265 :
255 :
270, 3
);
if (c.action) {
if ((![6, 22].includes(Oa.skinIndex) || ([6,
22].includes(Oa.skinIndex) && trap1)) && Ga.reloads[53] == 0 && !this.isTrue) {
([10, 14].includes(Ga.weapons[1]) && Ga.y2 >
a.snowBiomeTop) || Ga.weapons[1] == 15 ? this.threeOneTickType() : this.Snowtick();
} else {
packet('a', c.dir, 1);
}
} else {
packet('a', c.dir, 1);
}
}
this.kmTickMovement = function () {
let b = this.gotoGoal(240, 3);
if (b.action) {
if (Oa.skinIndex != 22 && Ga.reloads[53] == 0 && !
this.isTrue && (la.tick - Oa.poisonTick) % a.serverUpdateRate == 8) {
this.kmTickType();
} else {
packet("a", b.dir, 1);
}
} else {
packet("a", b.dir, 1);
}
};
this.boostTickMovement = function () {
let a = Ga.weapons[1] == 9 ? 365 : Ga.weapons[1] == 12 ?
380 : Ga.weapons[1] == 13 ? 390 : Ga.weapons[1] == 15 ? 365 : 370;
let b = Ga.weapons[1] == 9 ? 2 : Ga.weapons[1] == 12 ?
1.5 : Ga.weapons[1] == 13 ? 1.5 : Ga.weapons[1] == 15 ? 2 : 3;
let c = this.gotoGoal(a, b);
if (c.action) {
if (Ga.reloads[53] == 0 && !this.isTrue) {
this.boostTickType();
} else {
packet("a", c.dir, 1);
}
} else {
packet("a", c.dir, 1);
}
};
this.perfCheck = function (b, c) {
if (c.weaponIndex == 11 && cd.getAngleDist(c.aim2 +
Math.PI, c.d2) <= a.shieldAngle) {
return false;
}
if (![9, 12, 13, 15].includes(Ga.weapons[1])) {
return true;
}
let d = {
x: c.x2 + Math.cos(c.aim2 + Math.PI) * 70,
y: c.y2 + Math.sin(c.aim2 + Math.PI) * 70
};
if (cd.lineInRect(b.x2 - b.scale, b.y2 - b.scale, b.x2 +
b.scale, b.y2 + b.scale, d.x, d.y, d.x, d.y)) {
return true;
}
let e = ya.filter(a => a.visible).find(a => {
if (cd.lineInRect(a.x2 - a.scale, a.y2 - a.scale, a.x2
+ a.scale, a.y2 + a.scale, d.x, d.y, d.x, d.y)) {
return true;
}
});
if (e) {
return false;
}
e = Ca.filter(a => a.active).find(a => {
let b = a.getScale();
if (!a.ignoreCollision && cd.lineInRect(a.x - b, a.y -
b, a.x + b, a.y + b, d.x, d.y, d.x, d.y)) {
return true;
}
});
if (e) {
return false;
}
return true;
};
}
}
;
class Yc {
constructor(a, b) {
this.hat = function () {
a.forEach(a => {
let b = Qa(gd, a);
if (b && !Ga.skins[a] && Ga.points >= b.price) {
packet("c", 1, a, 0);
}
});
};
this.acc = function () {
b.forEach(a => {
let b = Qa(hd, a);
if (b && !Ga.tails[a] && Ga.points >= b.price) {
packet("c", 1, a, 1);
}
});
};
}
}
;
class Zc {
constructor() {
this.sb = function (a) {
a(3);
a(17);
a(31);
a(23);
a(9);
a(38);
};
this.kh = function (a) {
a(3);
a(17);
a(31);
a(23);
a(10);
a(38);
a(4);
a(25);
};
this.pb = function (a) {
a(5);
a(17);
a(32);
a(23);
a(9);
a(38);
};
this.ph = function (a) {
a(5);
a(17);
a(32);
a(23);
a(10);
a(38);
a(28);
a(25);
};
this.db = function (a) {
a(7);
a(17);
a(31);
a(23);
a(9);
a(34);
};
this.km = function (a) {
a(7);
a(17);
a(31);
a(23);
a(10);
a(38);
a(4);
a(15);
};
}
}
;
class $c {
constructor(a) {
this.calcDmg = function (a, b) {
return a * b;
};
this.getAllDamage = function (a) {
return [this.calcDmg(a, 0.75), a, this.calcDmg(a, 1.125),
this.calcDmg(a, 1.5)];
};
this.weapons = [];
for (let b = 0; b < a.weapons.length; b++) {
let c = a.weapons[b];
let d = c.name.split(" ").length <= 1 ? c.name :
c.name.split(" ")[0] + "_" + c.name.split(" ")[1];
this.weapons.push(this.getAllDamage(b > 8 ? c.Pdmg :
c.dmg));
this[d] = this.weapons[b];
}
}
}
let _c = false;
function ad() {
if (ha === 50 && !_c) {
_c = true;
const a = Object.assign(document.createElement("div"), {
innerHTML: "Warning: High Ping " + window.pingTime,
style: "\n position: fixed;\n top:
8%;\n left: 50%;\n transform: translate(-50%, -50%);\n
font-size: 1.5rem;\n color: #a12a22;\n text-shadow: -1px -1px
0 #333, 1px -1px 0 #333, -1px 1px 0 #333, 1px 1px 0 #333;\n z-index:
9999;"
});
document.body.appendChild(a);
setTimeout(function () {
a.remove();
_c = false;
}, 2000);
}
}
setInterval(ad, 100);
let bd = [];
let cd = new Yb();
let dd = new bc();
let ed = new cc(ac, Ca, cd, a);
let fd = new ec();
let gd = fd.hats;
let hd = fd.accessories;
let id = new fc(dc, Da, za, ya, ed, dd, a, cd);
let jd = new gc(ya, hc, za, dd, null, a, cd);
let kd = new $b();
let ld = new Wc(cd, dd);
let md = new Xc();
let nd = new Yc([15, 31, 6, 7, 22, 12, 53, 20, 40], [11, 13, 19, 18,
21]);
let od = new Zc();
let pd;
let qd;
let rd = {};
let sd = [];
let td;
let ud = [];
let vd = 0;
let wd = [];
let xd = {
active: false,
grid: 40,
scale: 1440,
x: 14400,
y: 14400,
chaseNear: false,
array: [],
lastX: this.grid / 2,
lastY: this.grid / 2
};
function yd(a) {
packet("6", a.slice(0, 30));
}
let zd = [];
function Ad(b, c, d, e, f, g, h, i) {
let j = g == 0 ? 9 : g == 2 ? 12 : g == 3 ? 13 : g == 5 && 15;
let k = a.playerScale * 2;
let l = {
x: g == 1 ? b : b - k * Math.cos(d),
y: g == 1 ? c : c - k * Math.sin(d)
};
let m = za.filter(a => a.visible && cd.getDist(l, a, 0, 2) <=
a.scale).sort(function (a, b) {
return cd.getDist(l, a, 0, 2) - cd.getDist(l, b, 0, 2);
})[0];
if (m) {
if (g == 1) {
m.shooting[53] = 1;
} else {
m.shootIndex = j;
m.shooting[1] = 1;
Cd(m, d, e, f, g, j);
}
}
}
let Bd = 0;
function Cd(a, b, c, d, e, f) {
if (!a.isTeam(Ga)) {
Bb = cd.getDirect(Ga, a, 2, 2);
if (cd.getAngleDist(Bb, b) <= 0.2) {
a.bowThreat[f]++;
if (e == 5) {
Bd++;
}
setTimeout(() => {
a.bowThreat[f]--;
if (e == 5) {
Bd--;
}
}, c / d);
if (a.bowThreat[9] >= 1 && (a.bowThreat[12] >= 1 ||
a.bowThreat[15] >= 1)) {
uc(1, a.aim2);
player.anti0Tick = 4;
if (!player.antiSync) {
Mc(4);
}
} else if (Bd >= 2) {
uc(1, a.aim2);
player.anti0Tick = 4;
if (!player.antiSync) {
Mc(4);
}
}
}
}
}
function Dd(b, c, d) {
if (Ga && b) {
cd.removeAllChildren(lb);
lb.classList.add("visible");
cd.generateElement({
id: "itemInfoName",
text: cd.capitalizeFirst(b.name),
parent: lb
});
cd.generateElement({
id: "itemInfoDesc",
text: b.desc,
parent: lb
});
if (d) { } else if (c) {
cd.generateElement({
class: "itemInfoReq",
text: !b.type ? "primary" : "secondary",
parent: lb
});
} else {
for (let a = 0; a < b.req.length; a += 2) {
cd.generateElement({
class: "itemInfoReq",
html: b.req[a] + "<span class='itemInfoReqVal'> x"
+ b.req[a + 1] + "</span>",
parent: lb
});
}
if (b.group.limit) {
cd.generateElement({
class: "itemInfoLmt",
text: (Ga.itemCounts[b.group.id] || 0) + "/" +
(a.isSandbox ? 99 : b.group.limit),
parent: lb
});
}
}
} else {
lb.classList.remove("visible");
}
}
window.addEventListener("resize", cd.checkTrusted(Ed));
function Ed() {
pb = window.innerWidth;
qb = window.innerHeight;
}
Ed();
var Fd;
const Gd = document.getElementById("touch-controls-fullscreen");
Gd.style.display = "block";
Gd.addEventListener("mousemove", Hd, false);
function Hd(a) {
Cb = a.clientX;
Db = a.clientY;
}
let Id = {
left: false,
middle: false,
right: false
};
Gd.addEventListener("mousedown", Jd, false);
function Jd(a) {
if (Pb != 1) {
Pb = 1;
if (a.button == 0) {
Id.left = true;
} else if (a.button == 1) {
Id.middle = true;
} else if (a.button == 2) {
Id.right = true;
}
}
}
Gd.addEventListener("mouseup", cd.checkTrusted(Kd));
function Kd(a) {
if (Pb != 0) {
Pb = 0;
if (a.button == 0) {
Id.left = false;
} else if (a.button == 1) {
Id.middle = false;
} else if (a.button == 2) {
Id.right = false;
}
}
}
Gd.addEventListener("wheel", Ld, false);
function Ld(a) {
if (a.deltaY < 0) {
player.reSync = true;
} else {
player.reSync = false;
}
}
function Md() {
let a = 0;
let b = 0;
for (let c in Nb) {
let d = Nb[c];
a += !!Mb[c] * d[0];
b += !!Mb[c] * d[1];
}
if (a == 0 && b == 0) {
return undefined;
} else {
return Math.atan2(b, a);
}
}
function Nd() {
if (!Ga) {
return 0;
}
if (!Ga.lockDir) {
Tb = Math.atan2(Db - qb / 2, Cb - pb / 2);
}
return Tb || 0;
}
function Od(a) {
if (a) {
if (!Ga) {
return "0";
}
if (player.autoAim || (Id.left || ga && Oa.dist2 <=
dd.weapons[Ga.weapons[0]].range + Oa.scale * 1.8 && !ld.inTrap) &&
Ga.reloads[Ga.weapons[0]] == 0) {
Tb = x.autoGrind.enabled ? "getSafeDir()" : La.length ?
player.revAim ? "(near.aim2 + Math.PI)" : "near.aim2" : "getSafeDir()";
} else if (Id.right && Ga.reloads[Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]] == 0) {
Tb = "getSafeDir()";
} else if (ld.inTrap && Ga.reloads[ld.notFast() ? Ga.weapons[1]
: Ga.weapons[0]] == 0) {
Tb = "traps.aim";
} else if (!Ga.lockDir) {
if (s.noDir) {
return "undefined";
}
Tb = "getSafeDir()";
}
return Tb;
} else {
if (!Ga) {
return 0;
}
if (player.autoAim || (Id.left || ga && Oa.dist2 <=
dd.weapons[Ga.weapons[0]].range + Oa.scale * 1.8 && !ld.inTrap) &&
Ga.reloads[Ga.weapons[0]] == 0) {
Tb = x.autoGrind.enabled ? Nd() : La.length ? player.revAim
? Oa.aim2 + Math.PI : Oa.aim2 : Nd();
} else if (Id.right && Ga.reloads[Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]] == 0) {
Tb = Nd();
} else if (ld.inTrap && Ga.reloads[ld.notFast() ? Ga.weapons[1]
: Ga.weapons[0]] == 0) {
Tb = ld.aim;
} else if (!Ga.lockDir) {
if (s.noDir) {
return undefined;
}
Tb = Nd();
}
return Tb || 0;
}
}
function Pd() {
if (!Ga) {
return 0;
}
if (player.autoAim || (Id.left || ga && Oa.dist2 <=
dd.weapons[Ga.weapons[0]].range + Oa.scale * 1.8 && !ld.inTrap) &&
Ga.reloads[Ga.weapons[0]] == 0) {
Tb = x.autoGrind.enabled ? Nd() : La.length ? player.revAim ?
Oa.aim2 + Math.PI : Oa.aim2 : Nd();
} else if (Id.right && Ga.reloads[Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]] == 0) {
Tb = Nd();
} else if (ld.inTrap && Ga.reloads[ld.notFast() ? Ga.weapons[1] :
Ga.weapons[0]] == 0) {
Tb = ld.aim;
} else if (!Ga.lockDir) {
Tb = Nd();
}
return Tb || 0;
}
function Qd() {
return Eb.style.display != "block" && ib.style.display != "block"
&& !T;
}
// Macro
function Sd(a) {
let b = a.which || a.keyCode || 0;
if (Ga && Ga.alive && Qd()) {
if (!Mb[b]) {
Mb[b] = 1;
Rb[a.key] = 1;
if (b == 27) {
da = !da;
$("#modMenu").toggle();
} else if (b == 69) {
autoattack();
} else if (b == 67) {
qe(document.getElementById("autochats").value);
document.getElementById("mscVolume").value =
pe[pe.current].audio.volume * 100;
og();
} else if (Ga.weapons[b - 49] != undefined) {
Ga.weaponCode = Ga.weapons[b - 49];
} else if (Nb[b]) {
Ud();
} else if (a.key == "m") {
Sb.placeSpawnPads = !Sb.placeSpawnPads;
} else if (a.key == "z") {
Sb.place = !Sb.place;
} else if (a.key == "Z") {
if (typeof window.debug == "function") {
window.debug();
}
} else if (b == 32) {
packet("d", 1, Nd(), 1);
packet("d", 0, Nd(), 1);
} else if (a.key == ",") {
Ga.sync = true;
}
}
}
}
addEventListener("keydown", cd.checkTrusted(Sd));
function Td(a) {
if (Ga && Ga.alive) {
let b = a.which || a.keyCode || 0;
if (b == 13) {
toggleMenuChat();
} else if (Qd()) {
if (Mb[b]) {
Mb[b] = 0;
Rb[a.key] = 0;
if (Nb[b]) {
Ud();
} else if (a.key == ",") {
Ga.sync = false;
}
}
}
}
}
window.addEventListener("keyup", cd.checkTrusted(Td));
function Ud() {
let a = Md();
if (oa == undefined || a == undefined || Math.abs(a - oa) > 0.3) {
if (!player.autoPush) {
packet("a", a, 1);
}
oa = a;
}
}
function Vd() { }
Vd();
function Wd(a) {
return (Ga.scale + a.getScale()) / (Ga.maxSpeed *
dd.weapons[Ga.weaponIndex].spdMult) + (a.dmg && !a.isTeamObject(Ga) ? 35 : 0);
if (a.colDiv == 0.5) {
return a.scale * a.colDiv;
} else if (!a.isTeamObject(Ga) && a.dmg) {
return a.scale + Ga.scale;
} else if (a.isTeamObject(Ga) && a.trap) {
return 0;
} else {
return a.scale;
}
}
function Xd() {
let a = Ca.filter(a => Ga.canSee(a) && a.active);
for (let b = 0; b < xd.grid; b++) {
wd[b] = [];
for (let c = 0; c < xd.grid; c++) {
let d = {
x: Ga.x2 - xd.scale / 2 + xd.scale / xd.grid * c,
y: Ga.y2 - xd.scale / 2 + xd.scale / xd.grid * b
};
if (cd.getDist(xd.chaseNear ? Oa : xd, d, xd.chaseNear ?
2 : 0, 0) <= (xd.chaseNear ? 35 : 60)) {
xd.lastX = c;
xd.lastY = b;
wd[b][c] = 0;
continue;
}
let e = a.find(a => cd.getDist(a, d, 0, 0) <= Wd(a));
if (e) {
if (e.trap) {
wd[b][c] = 0;
continue;
}
wd[b][c] = 1;
} else {
wd[b][c] = 0;
}
}
}
}
function Yd(a) {
let b = ~~(a % 3600 / 60);
let c = ~~a % 60;
if (c <= 9) {
c = "0" + c;
}
return b + ":" + c;
}
let Zd = {};
let $d = false;
let _d = "";
function ae() {
wd = [];
Xd();
}
function be() {
xd.scale = a.maxScreenWidth / 2 * 1.3;
if (!ld.inTrap && (xd.chaseNear ? La.length : true)) {
if (Oa.dist2 <= dd.weapons[Ga.weapons[0]].range) {
packet("a", undefined, 1);
} else {
ae();
j.setGrid(wd);
j.setAcceptableTiles([0]);
j.enableDiagonals();
j.findPath(wd[0].length / 2, wd.length / 2, xd.lastX,
xd.lastY, function (a) {
if (a === null) {
xd.array = [];
if (Oa.dist2 <= dd.weapons[Ga.weapons[0]].range) {
packet("a", undefined, 1);
} else {
packet("a", Oa.aim2, 1);
}
} else {
xd.array = a;
if (xd.array.length > 1) {
let b = {
x: Ga.x2 - xd.scale / 2 + xd.scale /
xd.grid * a[1].x,
y: Ga.y2 - xd.scale / 2 + xd.scale /
xd.grid * a[1].y
};
packet("a", cd.getDirect(b, Ga, 0, 2), 1);
}
}
});
j.calculate();
}
}
}
let ce = [];
function de(a = undefined) {
if (a === undefined) a = undefined;
for (let b = 0; b < dd.list.length; ++b) {
let c = dd.list[b].group.id;
let d = dd.weapons.length + b;
if (!ce[d]) {
ce[d] = document.createElement("div");
ce[d].id = "itemCount" + d;
document.getElementById("actionBarItem" +
d).appendChild(ce[d]);
ce[d].style = "\n display: block;\n
position: absolute;\n padding-left: 5px;\n
font-size: 2em;\n color: #fff;\n ";
if (b < 3) {
ce[d].innerHTML = Math.floor(Ga.food /
dd.list[b].req[1]);
} else {
ce[d].innerHTML = Ga.itemCounts[c] || 0;
}
} else {
if (a == c) {
ce[d].innerHTML = Ga.itemCounts[a] || 0;
}
if (a == undefined) {
if (b < 3) {
ce[d].innerHTML = Math.floor(Ga.food /
dd.list[b].req[1]);
}
}
}
}
}
// add timer
// SHAME SYSTEM:
class GameCharacter {
constructor() {
this.health = 100; // Example initial health
this.oldHealth = this.health;
this.hitTime = 0;
this.shameCount = 0;
this.shameTimer = 0;
}
judgeShame() {
this.lastshamecount = this.shameCount;
if (this.oldHealth < this.health) {
if (this.hitTime) {
let timeSinceHit = game.tick - this.hitTime;
this.lastHit = game.tick;
this.hitTime = 0;
if (timeSinceHit < 2) {
this.shameCount++;
} else {
this.shameCount = Math.max(0, this.shameCount - 2);
}
}
} else if (this.oldHealth > this.health) {
this.hitTime = game.tick;
}
this.oldHealth = this.health;
}
addShameTimer() {
this.shameCount = 0;
this.shameTimer = 30;
let interval = setInterval(() => {
this.shameTimer--;
if (this.shameTimer <= 0) {
clearInterval(interval);
}
}, 1000);
}
judgeShame() {
this.lastshamecount = this.shameCount;
if (this.oldHealth < this.health) {
if (this.hitTime) {
let timeSinceHit = game.tick - this.hitTime;
this.lastHit = game.tick;
this.hitTime = 0;
if (timeSinceHit < 2) {
this.shameCount++;
} else {
this.shameCount = Math.max(0, this.shameCount - 2);
}
}
} else if (this.oldHealth > this.health) {
this.hitTime = game.tick;
}
this.oldHealth = this.health;
}
addShameTimer() {
this.shameCount = 0;
this.shameTimer = 30;
let interval = setInterval(() => {
this.shameTimer--;
if (this.shameTimer <= 0) {
clearInterval(interval);
}
}, 1000);
}
}
// Usage example:
let game = {
tick: 0 // Initialize game tick
};
// Call methods
character.addShameTimer();
game.tick++; // Increment game tick
character.health -= 10; // Simulate health change
character.judgeShame();
// autopush func
function caf(e, t) {
try {
return Math.atan2((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x)
- (e.x2 || e.x));
} catch (e) {
return 0;
}
}
function ee() {
let a = Ca.filter(a => a.trap && a.active && a.isTeamObject(Ga) &&
cd.getDist(a, Oa, 0, 2) <= Oa.scale + a.getScale() + 5).sort(function (a, b) {
return cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa, 0, 2);
})[0];
if (a) {
let b = Ca.filter(b => b.dmg && b.active && b.isTeamObject(Ga)
&& cd.getDist(b, a, 0, 0) <= Oa.scale + a.scale + b.scale).sort(function (a, b) {
return cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa, 0, 2);
})[0];
if (b) {
let pos = {
x: b.x + (b.scale) * Math.cos(caf(Oa, b) - Math.PI),
y: b.y + (b.scale) * Math.sin(caf(Oa, b) - Math.PI),
x2: b.x + (cd.getDist(Oa, b, 2, 0) + Ga.scale) *
Math.cos(cd.getDirect(Oa, b, 2, 0)),
y2: b.y + (cd.getDist(Oa, b, 2, 0) + Ga.scale) *
Math.sin(cd.getDirect(Oa, b, 2, 0))
};
let c = Ca.filter(a => a.active).find(b => {
let c = b.getScale();
if (!b.ignoreCollision && cd.lineInRect(b.x - c, b.y -
c, b.x + c, b.y + c, Ga.x2, Ga.y2, a.x2, a.y2)) {
return true;
}
});
if (c) {
player.autoPush = false;
}
if (Oa.dist2 >= 450) {
player.autoPush = false;
} else {
player.autoPush = true;
player.pushData = {
x: b.x + Math.cos(30),
y: b.y + Math.sin(30),
x2: pos.x2 + Math.cos(60),
y2: pos.y2 + Math.sin(60)
};
let angle = Math.atan2(Oa.y2 - b.y, Oa.x2 - b.x);
let point = {
x: Oa.x2 + Math.cos(angle) * 53,
y: Oa.y2 + Math.sin(angle) * 53,
};
let num = cd.getDist(Oa, b, 2, 0);
let text = num.toString(10);
let scale = (Ga.scale / 10);
if (cd.getDist(Oa, b, 2, 0) >= 105) {
if (cd.lineInRect(Ga.x2 - scale, Ga.y2 - scale,
Ga.x2 + scale, Ga.y2 + scale, Oa.x2, Oa.y2, pos.x, pos.y)) {
packet("a", Oa.aim2, 1);
} else {
packet("a", cd.getDirect(pos, Ga, 2, 2), 1);
}
} else {
packet("a", Math.atan2(point.y - Ga.y2, point.x -
Ga.x2), 1);
}
}
} else {
if (player.autoPush) {
player.autoPush = false;
packet("a", oa || undefined, 1);
}
}
} else {
if (player.autoPush) {
player.autoPush = false;
packet("a", oa || undefined, 1);
}
}
}
function ge(a) {
Ea.push(new jc(a.x, a.y, a.dir, a.buildIndex, a.weaponIndex,
a.weaponVariant, a.skinColor, a.scale, a.name));
}
function he(a) {
Aa = a.teams;
}
var ie = false;
function je(a) {
Mb = {};
Rb = {};
Ha = a;
Pb = 0;
Qb = true;
ie = true;
packet("d", 0, Od(), 1);
player.ageInsta = true;
if (Lb) {
Lb = false;
Ca.length = 0;
}
}
function ke(b, c) {
let d = Sa(b[0]);
if (!d) {
d = new kc(b[0], b[1], a, cd, id, ed, za, ya, dd, gd, hd);
za.push(d);
if (b[1] != Ha) {
Z("System", "Found " + b[2] + " {" + b[1] + "}", "#fff");
}
} else if (b[1] != Ha) {
Z("Game", "Encount " + b[2] + " {" + b[1] + "}", "yellow");
}
d.spawn(c ? true : null);
d.visible = false;
d.oldPos = {
x2: undefined,
y2: undefined
};
d.x2 = undefined;
d.y2 = undefined;
d.x3 = undefined;
d.y3 = undefined;
d.setData(b);
if (c) {
if (!Ga) {
window.prepareUI(d);
}
Ga = d;
xb = Ga.x;
yb = Ga.y;
player.lastDir = 0;
ef();
ue();
if (Ga.skins[7]) {
player.reSync = true;
}
}
}
function le(a) {
for (let b = 0; b < za.length; b++) {
if (za[b].id == a) {
let a = za[b];
za.splice(b, 1);
break;
}
}
}
var me = [];
var ne = a => a.reduce((a, b, c, d) => d.filter(b => b === a).length >=
d.filter(a => a === b).length ? a : b, null);
class oe {
constructor(a, b) {
this.id = b;
this.oldhp = a;
this.dmgPromises = [];
this.list = [];
this.diesTo = [];
this.pings = [];
this.ping = 0;
this.text = "no information gathered";
}
isRealPing(a) {
return Math.abs(this.ping - a) < 40;
}
calculate() {
let a = [];
let b = [];
let c = [];
let d = 0;
let e = null;
let f = 0;
let g = false;
for (let h = 0, i; h < this.list.length; h++) {
i = this.list[h];
if (i.dmg < 45 && i.dmg >= 40 && i.type == "slow" &&
this.isRealPing(i.gap - 120) && !a.includes("nobull")) {
a.push("nobull");
} else if (i.dmg >= 45) {
if (e - i.delay2 < 400) {
if (i.type == "fast" && i.clown > f) {
f = i.clown;
d++;
} else if (i.type == "slow" && e - i.delay2 < 260)
{
g = true;
} else if (i.type == "slow") {
console.log(i.clown);
c.push(i.clown);
b.push(d);
d = 0;
}
}
e = i.delay2;
}
}
b.push(d);
if (b.length > 0) {
a.push(["bullspam", Math.max(b)]);
}
a.push(["shamePerInsta", g ? -2 : 1]);
if (c.length > 0) {
let b = ne(c);
a.push(["stopAntiAt", b]);
}
;
return a;
}
updateElem(a, b) {
let c = a.findIndex(a => a[0] == b[0]);
if (c === -1) {
a.push(b);
} else {
a[c] = b;
}
return a;
}
assign(a, b) {
for (let c = 0; c < b.length; c++) {
a = this.updateElem(a, b[c]);
}
return a;
}
track(a) {
this.list.push(a);
if (a.type == "slow") {
this.pings.push(a.gap - 120);
if (this.pings.length > 20) {
this.pings.shift();
}
this.ping = Math.round(this.pings.reduce((a, b) => a + b,
0) / this.pings.length);
}
;
if (this.list.length > 15) {
this.list.shift();
}
;
let b = this.calculate();
if (b.length > 0) {
this.diesTo = this.assign(this.diesTo, b);
try {
this.text = "dies to " + this.diesTo.map(a => a.join("
")).join(",");
} catch (a) {
this.text = "";
}
;
}
;
}
add(a, b) {
let c = this.healthType(a, this.oldhp);
let d = this.oldhp - a;
this.oldhp = a;
if (c === "damage") {
let a = this.dmgPromises.length;
let c = null;
let e = Date.now();
let f = me[this.id];
new Promise(function (a) {
f.dmgPromises.push(a);
setTimeout(a, 1000, false);
}).then(function (c) {
f.dmgPromises.splice(a, 1);
if (!c) {
return;
}
let g = Date.now() - e;
let h = {
delay1: e,
delay2: Date.now(),
gap: g,
dmg: d,
type: g < 120 ? "fast" : "slow",
clown: b
};
f.track(h);
});
me[this.id] = f;
} else if (this.dmgPromises.length) {
this.dmgPromises.forEach(a => a(true));
this.dmgPromises = [];
}
}
healthType(a, b) {
if (a < b) {
return "damage";
} else {
return "heal";
}
}
update(a, b) {
this.add(a, b);
}
}
let pe = new _b();
function qe(a) {
if (pe[a].audio.paused) {
G = Date.now();
if (pe.current == a && E) {
F = E;
} else {
pe[a].audio.currentTime = 0;
F = Array(...pe[a].chats);
}
pe.current = a;
pe[a].audio.play();
F.forEach((b, c) => {
D.push(setTimeout(() => {
F.splice(0, 1);
b[0] = b[0].replaceAll("’", "'");
sa.send("6", b[0]);
if (F.length == 0) {
F = Array(...pe[a].chats);
}
}, b[1]));
});
} else {
pe[pe.current].audio.pause();
E = F.map(a => [a[0], a[1] - (Date.now() - G)]);
D.forEach(a => clearTimeout(a));
}
}
function re(a, b) {
Ja = Ta(a);
if (Ja) {
Ja.oldHealth = Ja.health;
Ja.health = b;
Ja.judgeShame();
if (Ja.oldHealth > Ja.health) {
Ja.damaged = Ja.oldHealth - Ja.health;
Vc.push([a, b, Ja.damaged]);
} else { }
if (Ja.health <= 0) { }
}
}
function se() {
Qb = false;
pd = {
x: Ga.x,
y: Ga.y
};
if (s.autoRespawn) {
h("ot-sdk-btn-floating").style.display = "none";
packet("M", {
name: pa[0],
moofoll: pa[1],
skin: pa[2]
});
}
}
function te(a, b) {
if (Ga) {
Ga.itemCounts[a] = b;
}
}
function ue(a, b, c) {
if (a != undefined) {
Ga.XP = a;
}
if (b != undefined) {
Ga.maxXP = b;
}
if (c != undefined) {
Ga.age = c;
}
}
function ve(a, b) {
Ga.upgradePoints = a;
Ga.upgrAge = b;
if (a > 0) {
bd.length = 0;
cd.removeAllChildren(fb);
for (let a = 0; a < dd.weapons.length; ++a) {
if (dd.weapons[a].age == b && (e || dd.weapons[a].pre ==
undefined || Ga.weapons.indexOf(dd.weapons[a].pre) >= 0)) {
let b = cd.generateElement({
id: "upgradeItem" + a,
class: "actionBarItem",
onmouseout: function () {
Dd();
},
parent: fb
});
b.style.backgroundImage = h("actionBarItem" +
a).style.backgroundImage;
bd.push(a);
}
}
for (let a = 0; a < dd.list.length; ++a) {
if (dd.list[a].age == b && (e || dd.list[a].pre ==
undefined || Ga.items.indexOf(dd.list[a].pre) >= 0)) {
let b = dd.weapons.length + a;
let c = cd.generateElement({
id: "upgradeItem" + b,
class: "actionBarItem",
onmouseout: function () {
Dd();
},
parent: fb
});
c.style.backgroundImage = h("actionBarItem" +
b).style.backgroundImage;
bd.push(b);
}
}
for (let a = 0; a < bd.length; a++) {
(function (a) {
let b = h("upgradeItem" + a);
b.onmouseover = function () {
if (dd.weapons[a]) {
Dd(dd.weapons[a], true);
} else {
Dd(dd.list[a - dd.weapons.length]);
}
};
b.onclick = cd.checkTrusted(function () {
packet("H", a);
});
cd.hookTouchEvents(b);
})(bd[a]);
}
if (bd.length) {
fb.style.display = "block";
gb.style.display = "block";
gb.style.borderRadius = "4px";
gb.innerHTML = "SELECT ITEMS (" + a + ")";
} else {
fb.style.display = "none";
gb.style.display = "none";
Dd();
}
} else {
fb.style.display = "none";
gb.style.display = "none";
Dd();
}
}
function we(a, b) {
try {
return Math.hypot((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return Infinity;
}
}
function xe(a, b) {
try {
return Math.atan2((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return 0;
}
}
function ye(a = 0, b = 1, c, d = 1) {
let e = [];
for (let f = a; f < b; f += d) {
e.push(f);
if (typeof c == "function") {
c(f);
}
}
return e;
}
function ze(a) {
var b = a * Math.PI / 180 % (Math.PI * 2);
if (b > Math.PI) {
return Math.PI - b;
} else {
return b;
}
}
function Ae(a) {
var b = a / Math.PI * 360 % 360;
if (b >= 360) {
return b - 360;
} else {
return b;
}
}
function Be(a, b) {
try {
return Math.hypot((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return Infinity;
}
}
function Ce(a, b) {
try {
return Math.atan2((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return 0;
}
}
function De(a) {
return dd.weapons[Ga.weapons[Ga.weapons[1] ? Number(Ga.weapons[1]
== 10) : 0]].dmg / 4 * (Ga.skins[40] ? 3.3 : 1) *
(dd.weapons[Ga.weapons[Number(Ga.weapons[1] == 10)]].sDmg || 1);
}
function Ee() {
let b = dd.weapons[Ga.weaponIndex].range + 70;
if (La.length) {
let c = Ca.find(a => Be(Ga, a) <= 250 && a.buildHealth * 100 /
a.health <= Math.max(De(Ga), De(Oa)) + 10);
if (La.length && c && !Ga.inTrap && Be(Ga, c) <=
dd.weapons[Ga.weapons[0]].range && Be(Oa, c) <= dd.weapons[Ga.weapons[0]].range) {
let d = Ga.buildItemPosition(dd.list[Ga.items[2]], Ce(Ga,
c));
let e = {
x: d.x,
y: d.y,
scale: dd.list[Ga.items[2]].scale
};
if (La.length) {
Wb.add(d, 1, c, e.scale, true);
}
let f = cd.getDist(Ma, Ga, 0, 2);
let g = cd.getDirect(Ma, Ga, 0, 2);
function h(a) {
Fe(a, Ce(Ga, c));
Ia.filter(a => cd.getAngleDist(a, Ce(Ga, c)) <= Math.PI
/ 2).forEach(function (b) {
Fe(a, b);
});
}
la.tickBase(() => {
if (Oa.skinIndex == 6 && Oa.dist2 <= b && Ma.health <=
272.58 && Ke(Ma, Ga) <= b || La.length && Oa.reloads[Oa.weaponIndex] <= a.tickRate
* (window.pingTime >= 200 ? 2 : 1) || Ga.reloads[Ga.weaponIndex] * 1000 <=
a.tickRate * (window.pingTime >= 200 ? 2 : 1)) {
uc(2, g);
h(4);
} else {
h(2);
}
}, 1);
}
}
}
function Fe(a, b) {
var c = dd.list[Ga.items[a]];
if (Dc(a, b) && c.dmg) {
if (Ka.length && Ka.find(a => a.skinIndex != 6 &&
Be(Ga.buildItemPosition(dd.list[Ga.items[2]], b), a) <= 35 +
dd.list[Ga.items[2]].scale)) {
uc(a, Oa.aim);
}
}
}
// killobj
let Ge = false;
function He(a) {
let b = Va(a);
ed.disableBySid(a);
Ee();
if (b && vg(Ga, b) < 200 && Na.length > 0) {
if (Ge == false && Oa.dist <= 250) {
Ge = true;
}
let a = Oa;
let c = Ga;
let d = vg(c, a);
let e = Le(c, a);
let f = Le(Ga, e + 180);
let g = [0, 0];
let h = Math.atan2(b.y - Ga.y2, b.x - Ga.x2);
let i = Math.hypot(b.y - Ga.y2, b.x - Ga.x2);
let j = Ca.filter(a => a.trap && a.active && a.isTeamObject(Ga)
&& cd.getDist(a, Oa, 0, 2) <= Oa.scale + a.getScale() + 5);
let k = Ca.find(a => a.dmg && a.active && a.isTeamObject(Ga) &&
cd.getDist(a, Oa, 0, 2) < 87 && !j);
let l = k ? 4 : 2;
if (i <= 200 && Oa.dist2 <= 168 && Ja != Ga && l != 4) {
md.canSpikeTick = true;
md.syncHit = true;
}
if (Ga.alive) {
if (s.autoReplace && i <= 400) {
if (Oa.dist2 <= 300 && !ld.inTrap) {
let a = -1;
for (let b = 0; b < Math.PI * 8; b += Math.PI / 1)
{
a++;
if (a == 1 && i <= 200) {
uc(2, h);
uc(2, h + Math.PI);
Ge = false;
} else {
Dc(2, h + b);
Ge = false;
}
}
} else {
let a = -1;
for (let b = 0; b < Math.PI * 5.5; b += Math.PI /
2.2) {
if (Ga.items[4] == 15) {
a++;
if (a == 0 && i <= 200) {
uc(4, h);
uc(4, h + Math.PI);
Ge = false;
} else {
Dc(4, h + b + 2);
Ge = false;
}
}
}
}
}
ld.replacer(b);
}
}
}
function Ie(a) {
if (Ga) {
ed.removeAllItems(a);
}
}
function Je(a) {
if (!this?.player || !a.length) {
return;
}
let b = this.gameObjects?.filter(a => a.active &&
a.preplaceable).sort((a, b) => Yb.getDist(a, this.player, 0, 2) - Yb.getDist(b,
this.player, 0, 2));
let c = [];
for (let d = a.length; d--;) {
let e = a[d];
for (let a = b.length; a--;) {
let d = b[a];
if (e.dirPlus) {
c.push([d, e, Yb.getDist(d, e, 0, 2)]);
}
}
;
}
;
if (c.length) {
let a = Array.from(c, ([a, b, c]) => { });
}
;
}
;
function Ke(a, b) {
return Math.sqrt(Math.pow(b.y - a.y, 2) + Math.pow(b.x - a.x, 2));
}
function Le(a, b) {
try {
return Math.atan2((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return 0;
}
}
function Me(a, b) {
Dc(a, b);
console.log("success");
}
let Ne = {
tick: 0,
delay: 0,
time: [],
manage: []
};
function Oe(a, b) {
if (!Ne.manage[Ne.tick + b]) {
Ne.manage[Ne.tick + b] = [a];
} else {
Ne.manage[Ne.tick + b].push(a);
}
}
function Pe(a) {
Qe.push(a);
}
let Qe = [];
let Re;
let Se = [];
let Te = [];
let Ue = 0.35;
var PermaSoldier = false;
// updateplayer
function Ve(b) {
la.tick++;
La = [];
Na = [];
Oa = [];
la.tickSpeed = performance.now() - la.lastTick;
la.lastTick = performance.now();
Ne.tick++;
Ne.time.push(Date.now() - Ne.delay <= 50 || Date.now() - Ne.delay
>= 175 ? "lag" : 1);
if (Ne.tick % 10 === 0) {
Ne.time = [];
}
if (Ne.tick % 300 === 0) { }
Ne.delay = Date.now();
za.forEach(a => {
a.forcePos = !a.visible;
a.visible = false;
});
for (let a = 0; a < b.length;) {
Ja = Ta(b[a]);
if (Ja) {
Ja.t1 = Ja.t2 === undefined ? la.lastTick : Ja.t2;
Ja.t2 = la.lastTick;
Ja.oldPos.x2 = Ja.x2;
Ja.oldPos.y2 = Ja.y2;
Ja.x1 = Ja.x;
Ja.y1 = Ja.y;
Ja.x2 = b[a + 1];
Ja.y2 = b[a + 2];
Ja.x3 = Ja.x2 + (Ja.x2 - Ja.oldPos.x2);
Ja.y3 = Ja.y2 + (Ja.y2 - Ja.oldPos.y2);
Ja.d1 = Ja.d2 === undefined ? b[a + 3] : Ja.d2;
Ja.d2 = b[a + 3];
Ja.dt = 0;
Ja.buildIndex = b[a + 4];
Ja.weaponIndex = b[a + 5];
Ja.weaponVariant = b[a + 6];
Ja.team = b[a + 7];
Ja.isLeader = b[a + 8];
Ja.oldSkinIndex = Ja.skinIndex;
Ja.oldTailIndex = Ja.tailIndex;
Ja.skinIndex = b[a + 9];
Ja.tailIndex = b[a + 10];
Ja.iconIndex = b[a + 11];
Ja.zIndex = b[a + 12];
Ja.visible = true;
Ja.update(la.tickSpeed);
Ja.dist2 = cd.getDist(Ja, Ga, 2, 2);
Ja.aim2 = cd.getDirect(Ja, Ga, 2, 2);
Ja.dist3 = cd.getDist(Ja, Ga, 3, 3);
Ja.aim3 = cd.getDirect(Ja, Ga, 3, 3);
Ja.damageThreat = 0;
if (Ja.skinIndex == 45 && Ja.shameTimer <= 0) {
Ja.addShameTimer();
}
if (Ja.oldSkinIndex == 45 && Ja.skinIndex != 45) {
Ja.shameTimer = 0;
Ja.shameCount = 0;
if (Ja == Ga) {
Gc();
}
}
Re = Ja;
if (Ja == Ga) {
if (Ca.length) {
Ca.forEach(a => {
a.onNear = false;
if (a.active) {
if (!a.onNear && cd.getDist(a, Ja, 0, 2) <=
a.scale + dd.weapons[Ja.weapons[0]].range) {
a.onNear = true;
}
if (a.isItem && a.owner) {
if (!a.pps && Ja.sid == a.owner.sid &&
cd.getDist(a, Ja, 0, 2) > (parseInt(h("breakRange").value) || 0) && !a.breakObj
&& ![13, 14, 20].includes(a.id)) {
a.breakObj = true;
Fa.push({
x: a.x,
y: a.y,
sid: a.sid
});
}
}
}
});
// antipush
let a = Ca.filter(a => a.trap && a.active &&
cd.getDist(a, Ja, 0, 2) <= Ja.scale + a.getScale() + 5 && !
a.isTeamObject(Ja)).sort(function (a, b) {
return cd.getDist(a, Ja, 0, 2) - cd.getDist(b,
Ja, 0, 2);
})[0];
let b = Ca.filter(a => (a.name == "spikes" ||
a.name == "greater spikes" || a.name == "spinning spikes" || a.name == "poison
spikes") && Ke(Ga, a) < Ga.scale + a.scale + 22 && !a.isTeamObject(Ja) && a.active)
[0];
if (a) {
ld.dist = cd.getDist(a, Ja, 0, 2);
ld.aim = cd.getDirect(b ? b : a, Ja, 0, 2);
if (!ld.inTrap) {
Hc();
ld.protect(ld.aim);
}
ld.inTrap = true;
ld.info = a;
} else {
ld.inTrap = false;
ld.info = {};
}
} else {
ld.inTrap = false;
}
}
if (Ja.weaponIndex < 9) {
Ja.primaryIndex = Ja.weaponIndex;
Ja.primaryVariant = Ja.weaponVariant;
} else if (Ja.weaponIndex > 8) {
Ja.secondaryIndex = Ja.weaponIndex;
Ja.secondaryVariant = Ja.weaponVariant;
}
}
a += 13;
}
if (Qe.length) {
Qe.forEach(a => {
a();
});
Qe = [];
}
if (!Kb) {
Ue += 0.0001;
} else if (Kb) {
if (Ue < 0.35) {
Kb = false;
}
Ue -= 0.00015;
}
if (Ue > 0.55) {
Kb = true;
}
if (zd.length) {
zd.forEach(a => {
Ad(...a);
});
zd = [];
}
if (kd.stack.length) {
let a = 0;
let b = 0;
let c = {
x: null,
y: null
};
let d = {
x: null,
y: null
};
kd.stack.forEach(e => {
if (e.value >= 0) {
if (a == 0) {
c = {
x: e.x,
y: e.y
};
}
a += Math.abs(e.value);
} else {
if (b == 0) {
d = {
x: e.x,
y: e.y
};
}
b += Math.abs(e.value);
}
});
kd.stack = [];
}
if (zd.length) {
zd.forEach(a => {
Ad(...a);
});
zd = [];
}
for (let a = 0; a < b.length;) {
Ja = Ta(b[a]);
if (Ja) {
if (!Ja.isTeam(Ga)) {
La.push(Ja);
if (Ja.dist2 <= dd.weapons[Ja.primaryIndex == undefined
? 5 : Ja.primaryIndex].range + Ga.scale * 2) {
Na.push(Ja);
}
}
Ja.manageReload();
if (Ja != Ga) {
Ja.addDamageThreat(Ga);
}
}
a += 13;
}
if (Ga && Ga.alive) {
if (La.length) {
if (Ga && Ga.alive) {
Se = Ac(Ga, dd.list[Ga.items[2]]);
Te = Ga.items[4] == 15 ? Ac(Ga, dd.list[Ga.items[4]]) :
[];
}
Oa = La.sort(function (a, b) {
return a.dist2 - b.dist2;
})[0];
} else { }
if (x.placementIndicator.enabled && Oa.dist2 <= 255 &&
Ga.shameCount < 5) {
uc(0, Od());
}
if (la.tickQueue[la.tick]) {
la.tickQueue[la.tick].forEach(a => {
a();
});
la.tickQueue[la.tick] = null;
}
// Adv heal
if (Vc.length) {
Vc.forEach(a => {
let b = a[0];
let c = a[1];
let d = a[2];
Ja = Ta(b);
let e = false;
if (Ja && Ja.health <= 0) {
if (!Ja.death) {
Ja.death = true;
if (Ja != Ga) {
sa.send("6", "");
}
ge(Ja);
}
}
if (Ja == Ga) {
if (Ja.skinIndex == 7 && (d == 5 || Ja.latestTail
== 13 && d == 2)) {
if (player.reSync) {
player.reSync = false;
Ja.setBullTick = true;
}
e = true;
}
if (Qb) {
let a = Fc(d);
let b = [0.25, 0.45].map(a => a *
dd.weapons[Ga.weapons[0]].dmg * Ec());
let c = !e && b.includes(d);
let f = 140 - window.ping;
let g = function (a) {
setTimeout(() => {
Gc();
}, a);
};
if (d >= (c ? 8 : 20) && Ja.damageThreat >= 25
&& la.tick - Ja.antiTimer > 1) {
Ja.canEmpAnti = true;
Ja.antiTimer = la.tick;
let a = 5;
if (Ja.shameCount < a) {
Gc();
} else {
g(f);
}
} else {
g(f);
}
if (d >= 20 && Ga.skinIndex == 11) {
md.canCounter = true;
}
}
} else if (!Ja.setPoisonTick && (Ja.damaged == 5 ||
Ja.latestTail == 13 && Ja.damaged == 2)) {
Ja.setPoisonTick = true;
}
});
Vc = [];
}
za.forEach(a => {
if (!a.visible && Ga != a) {
a.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 (a.setBullTick) {
a.bullTimer = 0;
}
if (a.setPoisonTick) {
a.poisonTimer = 0;
}
a.updateTimer();
});
if (Qb) {
if (La.length) {
if (Ga.canEmpAnti) {
Ga.canEmpAnti = false;
if (Oa.dist2 <= 300 && !player.safePrimary(Oa) && !
player.safeSecondary(Oa)) {
if (Oa.reloads[53] == 0) {
Ga.empAnti = true;
Ga.soldierAnti = false;
} else {
Ga.empAnti = false;
Ga.soldierAnti = true;
}
}
}
let a = Ca.filter(a => a.dmg && a.active &&
a.isTeamObject(Ga) && cd.getDist(a, Oa, 0, 3) <= a.scale + Oa.scale).sort(function
(a, b) {
return cd.getDist(a, Oa, 0, 2) - cd.getDist(b, Oa,
0, 2);
})[0];
if (a) {
if (Oa.dist2 <= dd.weapons[Ga.weapons[0]].range +
Ga.scale * 1.8 && s.predictTick) {
md.canSpikeTick = true;
md.syncHit = true;
if (s.revTick && Ga.weapons[1] == 15 &&
Ga.reloads[53] == 0 && md.perfCheck(Ga, Oa)) {
md.revTick = true;
}
}
}
let b = Ca.filter(a => a.dmg && a.active && !
a.isTeamObject(Ga) && cd.getDist(a, Ga, 0, 3) < a.scale + Ga.scale).sort(function
(a, b) {
return cd.getDist(a, Ga, 0, 2) - cd.getDist(b, Ga,
0, 2);
})[0];
if (b) {
if (Oa.dist2 <= dd.weapons[5].range + Oa.scale *
1.8) {
player.anti0Tick = 1;
sa.send("6", "");
let d = b.getDirect(a, Ga, 0, 2);
let e = b.getDist(a, Ga, 0, 2);
let h = f(a.x, a.y, Ga.x, Ga.y);
if (x.autoGrind.enabled && e <=
c.weapons[Ga.weaponIndex].range + Ga.scale) {
return;
}
if (e <= 400 && Oa.dist2 <= 400) {
if (g(a)) {
let a = this.checkSpikeTick();
if (!a && Oa.dist2 <=
c.weapons[Oa.primaryIndex || 5].range + Oa.scale * 1.8) {
this.testCanPlace(2, 0, Math.PI *
2, Math.PI / 24, h, 1);
} else if (Ga.items[4] == 15) {
this.testCanPlace(4, 0, Math.PI *
2, Math.PI / 24, h, 1);
}
}
}
}
}
}
// insta logic
var yooooo = true;
if ((yooooo ? true : (Ga.checkCanInsta(true) >= 100 ?
Ga.checkCanInsta(true) : Ga.checkCanInsta(false)) >= (Ga.weapons[1] == 10 ? 95 :
100)) && Oa.dist2 <= dd.weapons[Ga.weapons[1] == 10 ? Ga.weapons[1] :
Ga.weapons[0]].range + Oa.scale * 1.8 && (md.wait || yooooo &&
Math.floor(Math.random() * 5) == 0) && !md.isTrue && !player.waitHit &&
Ga.reloads[Ga.weapons[0]] == 0 && Ga.reloads[Ga.weapons[1]] == 0 && (yooooo ?
true : h("instaType").value == "oneShot" ? Ga.reloads[53] <= (Ga.weapons[1] == 10 ?
0 : la.tickRate) : true) && md.perfCheck(Ga, Oa)) {
if (Ga.checkCanInsta(true) >= 100) {
md.nobull = yooooo ? false : md.canSpikeTick ?
false : true;
} else {
md.nobull = false;
}
md.can = true;
} else {
md.can = false;
}
if (Rb.q) {
uc(0, Od());
}
if (Rb.f) {
uc(4, Nd());
}
if (Rb.v) {
uc(2, Nd());
}
if (Rb.y) {
uc(5, Nd());
}
if (Rb.h) {
uc(Ga.getItemType(22), Nd());
}
if (Rb.n) {
uc(3, Nd());
}
if (la.tick % 3 == 0) {
if (Sb.place) {
let a = 1.25;
for (let b = -a; b <= a; b += a) {
Dc(3, cd.getDirect(Ga.oldPos, Ga, 2, 2) + b);
}
} else if (Sb.placeSpawnPads) {
for (let a = 0; a < Math.PI * 2; a += Math.PI / 2)
{
Dc(Ga.getItemType(20), cd.getDirect(Ga.oldPos,
Ga, 2, 2) + a);
}
}
}
if (md.can) {
md.changeType(Ga.weapons[1] == 10 ? "rev" : md.nobull ?
"nobull" : "normal");
}
if (md.canCounter) {
md.canCounter = false;
if (Ga.reloads[Ga.weapons[0]] == 0 && !md.isTrue) {
md.counterType();
}
}
if (md.canSpikeTick) {
md.canSpikeTick = false;
if (md.revTick) {
md.revTick = false;
if ([1, 2, 3, 4, 5, 6].includes(Ga.weapons[0]) &&
Ga.reloads[Ga.weapons[1]] == 0 && !md.isTrue) {
md.changeType("rev");
}
} else if ([1, 2, 3, 4, 5, 6].includes(Ga.weapons[0])
&& Ga.reloads[Ga.weapons[0]] == 0 && !md.isTrue) {
md.spikeTickType();
if (md.syncHit) { }
}
}
if (!Id.middle && (Id.left || Id.right) && !md.isTrue) {
if (Ga.weaponIndex != (Id.right && Ga.weapons[1] ==
10 ? Ga.weapons[1] : Ga.weapons[0]) || Ga.buildIndex > -1) {
weapon(Id.right && Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]);
}
if (Ga.reloads[Id.right && Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]] == 0 && !player.waitHit) {
autoattack();
player.waitHit = 1;
la.tickBase(() => {
autoattack();
player.waitHit = 0;
}, 1);
}
}
if (ga && !Id.left && !Id.right && !md.isTrue && Oa.dist2
<= dd.weapons[Ga.weapons[0]].range + Oa.scale * 1.8 && !ld.inTrap) {
if (Ga.weaponIndex != Ga.weapons[0] || Ga.buildIndex >
-1) {
weapon(Ga.weapons[0]);
}
if (Ga.reloads[Ga.weapons[0]] == 0 && !player.waitHit)
{
autoattack();
player.waitHit = 1;
la.tickBase(() => {
autoattack();
player.waitHit = 0;
}, 1);
}
}
if (ld.inTrap) {
if (!Id.left && !Id.right && !md.isTrue) {
if (Ga.weaponIndex != (ld.notFast() ? Ga.weapons[1]
: Ga.weapons[0]) || Ga.buildIndex > -1) {
weapon(ld.notFast() ? Ga.weapons[1] :
Ga.weapons[0]);
}
if (Ga.reloads[ld.notFast() ? Ga.weapons[1] :
Ga.weapons[0]] == 0 && !player.waitHit) {
autoattack();
player.waitHit = 1;
la.tickBase(() => {
autoattack();
player.waitHit = 0;
}, 1);
}
}
}
if (Id.middle && !ld.inTrap) {
if (!md.isTrue && Ga.reloads[Ga.weapons[1]] == 0) {
if (player.ageInsta && Ga.weapons[0] != 4 &&
Ga.weapons[1] == 9 && Ga.age >= 9 && La.length) {
md.bowMovement();
} else {
md.rangeType();
}
}
}
if (Rb.t && !ld.inTrap) {
if (!md.isTrue && Ga.reloads[Ga.weapons[0]] == 0 &&
(Ga.weapons[1] == 15 ? Ga.reloads[Ga.weapons[1]] == 0 : true) && (Ga.weapons[0] ==
5 || Ga.weapons[0] == 4 && Ga.weapons[1] == 15)) {
md[Ga.weapons[0] == 4 && Ga.weapons[1] == 15 ?
"kmTickMovement" : "tickMovement"]();
}
}
if (Rb["."] && !ld.inTrap) {
if (!md.isTrue && Ga.reloads[Ga.weapons[0]] == 0 &&
([9, 12, 13, 15].includes(Ga.weapons[1]) ? Ga.reloads[Ga.weapons[1]] == 0 : true))
{
md.boostTickMovement();
}
}
if (Ga.weapons[1] && !Id.left && !Id.right && !ld.inTrap &&
!md.isTrue && (!ga || Oa.dist2 > dd.weapons[Ga.weapons[0]].range + Oa.scale * 1.8))
{
if (Ga.reloads[Ga.weapons[0]] == 0 &&
Ga.reloads[Ga.weapons[1]] == 0) {
if (!player.reloaded) {
player.reloaded = true;
let a = dd.weapons[Ga.weapons[0]].spdMult <
dd.weapons[Ga.weapons[1]].spdMult ? 1 : 0;
if (Ga.weaponIndex != Ga.weapons[a] ||
Ga.buildIndex > -1) {
weapon(Ga.weapons[a]);
}
}
} else {
player.reloaded = false;
if (Ga.reloads[Ga.weapons[0]] > 0) {
if (Ga.weaponIndex != Ga.weapons[0] ||
Ga.buildIndex > -1) {
weapon(Ga.weapons[0]);
}
} else if (Ga.reloads[Ga.weapons[0]] == 0 &&
Ga.reloads[Ga.weapons[1]] > 0) {
if (Ga.weaponIndex != Ga.weapons[1] ||
Ga.buildIndex > -1) {
weapon(Ga.weapons[1]);
}
}
}
}
let bultect = false;
if((la.tick - Oa.bullTick) % 9 == 0 && Oa.skinIndex == 7) {
sa.send("6", "" + Oa.name);
player.anti0Tick = 1;
bultect = true;
la.tickBase(() => {
bultect = false;
}, 1)
}
if (!md.isTrue && !ld.inTrap && !ld.replaced) {
ld.autoPlace();
}
if (!Rb.q && !Rb.f && !Rb.v && !Rb.h && !Rb.n) {
packet("D", Od());
}
let b = false;
let c = false;
// hatchanger
let d = function () {
if (!player.anti0Tick == 0) {
hat(6, 0);
}
if (player.anti0Tick > 0 && !b) {
hat(6, 0);
} else if (Id.left || Id.right || b) {
if (Ga.shameCount > 0 && (la.tick - Ga.bullTick) %
a.serverUpdateRate === 0 && Ga.skinIndex != 45 || player.reSync) {
hat(7, 0);
} else if (Id.left) {
hat(Ga.reloads[Ga.weapons[0]] == 0 ?
x.autoGrind.enabled ? 40 : 7 : Ga.empAnti ? 6 : Ga.soldierAnti ? 6 : false &&
Oa.antiBull > 0 ? 11 : Oa.dist2 <= 300 ? false && Oa.reloads[Oa.primaryIndex] ==
0 ? 11 : 6 : biomeGear(1, 1), 0);
} else if (Id.right) {
hat(Ga.reloads[Id.right && Ga.weapons[1] ==
10 ? Ga.weapons[1] : Ga.weapons[0]] == 0 ? 40 : Ga.empAnti ? 6 : Ga.soldierAnti ? 6
: false && Oa.antiBull > 0 ? 11 : Oa.dist2 <= 300 ? false &&
Oa.reloads[Oa.primaryIndex] == 0 ? 11 : 6 : biomeGear(1, 1), 0);
} else if (b) {
if (c) {
hat(55, 0);
} else {
hat(7, 0);
}
}
} else if (ld.inTrap) {
if (ld.info.health <=
dd.weapons[Ga.weaponIndex].dmg ? false : Ga.reloads[Ga.weapons[1] == 10 ?
Ga.weapons[1] : Ga.weapons[0]] == 0) {
if (PermaSoldier) {
hat(6, 0);
} else {
hat(40, 0);
}
} else if (Ga.shameCount > 0 && (la.tick -
Ga.bullTick) % a.serverUpdateRate === 0 && Ga.skinIndex != 45 || player.reSync) {
hat(7, 0);
} else {
hat(Ga.empAnti || Oa.dist2 > 300 || !
La.length ? 6 : 6, 0);
}
} else if (Ga.empAnti || Ga.soldierAnti && !b) {
hat(Ga.empAnti ? 6 : 6, 0);
} else if (Ga.shameCount > 0 && (la.tick - Ga.bullTick)
% a.serverUpdateRate === 0 && Ga.skinIndex != 45 || player.reSync) {
hat(7, 0);
} else if (Oa.dist2 <= 300 && !b) {
hat(false && Oa.antiBull > 0 ? 11 : false &&
Oa.reloads[Oa.primaryIndex] == 0 ? 11 : 6, 0);
} else {
biomeGear(1);
}
};
//accchanger
let e = function () {
if (!ld.inTrap) {
if (Oa.dist2 <= 250) {
hat(11, 1);
} else if (Id.left || Id.right) {
hat(Id.right ? 11 : Ga.reloads[Ga.weapons[0]]
== 0 ? 21 : 21, 1);
} else if (ld.inTrap) {
hat(Oa.dist3 <=
dd.weapons[Ga.weaponIndex].range + Ga.scale * 1.8 && Ga.reloads[Ga.weaponIndex] ==
0 ? 21 : 21, 1);
} else if (((Ga.shameCount > 0 && (la.tick -
Ga.bullTick) % 7 == 0 && Ga.skinIndex != 45) || Ja.reSync)) {
hat(13, 1);
} else {
hat(11, 1);
}
} else if (ld.inTrap) {
if (Oa.antiBull > 0) {
hat(21, 1);
} else {
if (Oa.dist2 <= dd.weapons[Oa.primaryIndex ?
Oa.primaryIndex : 5].range + Ga.scale * 3) {
if (md.wait) {
hat(21, 1);
} else {
if ((la.tick - Ga.bullTick) %
d.serverUpdateRate === 0) {
hat(13, 1);
} else {
hat(11, 1);
}
}
} else {
hat(21, 1);
}
}
}
}
if (db.style.display != "block" && !md.isTrue && !
md.ticking) {
d();
e();
brainDead();
}
function f() {
let a = Ja.damageThreat;
if (Oa.dist2 < 230) {
if (a >= 95) {
Gc();
Gc();
}
}
}
if (s.autoPush && La.length && !ld.inTrap && !md.ticking) {
ee();
} else if (player.autoPush) {
player.autoPush = false;
packet("a", oa || undefined, 1);
}
if (!player.autoPush && xd.active) {
be();
}
md.ticking &&= false;
md.syncHit &&= false;
Ga.empAnti &&= false;
Ga.soldierAnti &&= false;
if (player.anti0Tick > 0) {
player.anti0Tick--;
}
ld.replaced &&= false;
ld.antiTrapped &&= false;
}
}
if (g.length) {
g.forEach(a => {
if (true) {
a[0].ssend("player", Ga, Oa, Bg);
}
});
}
}
function We(a) {
Ub = a;
return;
cd.removeAllChildren(kb);
let b = 1;
for (let c = 0; c < a.length; c += 3) {
(function (c) {
cd.generateElement({
class: "leaderHolder",
parent: kb,
children: [cd.generateElement({
class: "leaderboardItem",
style: "color:" + (a[c] == Ha ? "#fff" :
"rgba(255,255,255,0.6)"),
text: b + ". " + (a[c + 1] != "" ? a[c + 1] :
"unknown")
}), cd.generateElement({
class: "leaderScore",
text: cd.sFormat(a[c + 2]) || "0"
})]
});
})(c);
b++;
}
}
function Xe(a) {
for (let b = 0; b < a.length;) {
ed.add(a[b], a[b + 1], a[b + 2], a[b + 3], a[b + 4], a[b + 5],
dd.list[a[b + 6]], true, a[b + 7] >= 0 ? {
sid: a[b + 7]
} : null);
b += 8;
}
}
function Ye(b) {
for (let a = 0; a < ya.length; ++a) {
ya[a].forcePos = !ya[a].visible;
ya[a].visible = false;
}
if (b) {
let c = performance.now();
for (let d = 0; d < b.length;) {
Ja = Ua(b[d]);
if (Ja) {
Ja.index = b[d + 1];
Ja.t1 = Ja.t2 === undefined ? c : Ja.t2;
Ja.t2 = c;
Ja.x1 = Ja.x;
Ja.y1 = Ja.y;
Ja.x2 = b[d + 2];
Ja.y2 = b[d + 3];
Ja.d1 = Ja.d2 === undefined ? b[d + 4] : Ja.d2;
Ja.d2 = b[d + 4];
Ja.health = b[d + 5];
Ja.dt = 0;
Ja.visible = true;
} else {
Ja = jd.spawn(b[d + 2], b[d + 3], b[d + 4], b[d + 1]);
Ja.x2 = Ja.x;
Ja.y2 = Ja.y;
Ja.d2 = Ja.dir;
Ja.health = b[d + 5];
if (!jd.aiTypes[b[d + 1]].name) {
Ja.name = a.cowNames[b[d + 6]];
}
Ja.forcePos = true;
Ja.sid = b[d];
Ja.visible = true;
}
d += 7;
}
}
}
// permaSoldier
let brainDead = function () {
let inTrap = Ca.filter(a => a.trap && a.active && cd.getDist(a, Ja,
0, 2) <= Ja.scale + a.getScale() + 5 && !a.isTeamObject(Ja)).sort(function (a, b) {
return cd.getDist(a, Ja, 0, 2) - cd.getDist(b, Ja, 0, 2);
})[0];
let spikeNear = Ca.filter(a => (a.name == "spikes" || a.name ==
"greater spikes" || a.name == "spinning spikes" || a.name == "poison spikes") &&
Ke(Ga, a) < Ga.scale + a.scale + 22 && !a.isTeamObject(Ja) && a.active)[0];
let dist = Oa.dist2;
if (inTrap) {
if (dist <= 160) {
if (!spikeNear) {
PermaSoldier = true;
} else {
PermaSoldier = false;
}
} else {
PermaSoldier = false;
}
} else {
PermaSoldier = false;
}
}
function Ze(a) {
Ja = Ua(a);
if (Ja) {
Ja.startAnim();
}
}
var $e = false;
// gatheranim
function _e(b, c, d) {
Ja = Ta(b);
if (Ja) {
Ja.startAnim(c, d);
Ja.gatherIndex = d;
Ja.gathering = 1;
if (Ga.shameCount < 5 && player.anti0Tick > 0) {
uc(0, Od());
}
if (Na.filter(a => a.gathering).length > 1) {
$e = true;
la.tickBase(() => {
$e = false;
}, 2);
}
if (Oa.dist2 < 300) {
if (ha.count >= 80) {
return;
}
let b = "spammer";
let c = Ca.filter(a => (a.active || a.alive) && a.health <
a.maxHealth && a.group !== undefined && cd.getDist(a, Ja, 0, 2) <=
dd.weapons[Ja.weaponIndex].range + a.scale);
for (let e = 0; e < c.length; e++) {
let f = c[e];
console.log(f);
let g = dd.weapons[d].dmg * a.weaponVariants[Ja[(d <
9 ? "prima" : "seconda") + "ryVariant"]].val * (dd.weapons[d].sDmg || 1);
let h = g * 3.3;
if (f.health - g * 3.3 <= 0 && b == "spammer") {
uc(2, Le(f, Ga) + Math.PI);
} else {
la.tickBase(() => {
let a = h * (Ja.skinIndex === 40 ? 3.3 : 1);
if (f.health - a <= 0 && b === "smart") {
for (let a = -30; a < 30; a += 30) {
uc(Oa.dist2 < Oa.scale * 1.8 + 50 ? 4 :
2, Le(f, Ga) + Math.PI + a);
}
}
}, 1);
}
}
}
if (c) {
let c = ed.hitObj;
ed.hitObj = [];
let e = c;
if (e.health <= dd.weapons[Ja.weaponIndex].dmg * 2) {
la.tickBase(() => {
setTimeout(() => {
uc(2, Number.MAX_VALUE);
}, dd.weapons[Ja.weaponIndex].speed - 1000 / 9);
}, 2);
}
Oe(() => {
setTimeout(() => {
if (vc(Ga, La) <= 200) {
uc(2, wc(c, Ga));
} else {
uc(4, wc(c, Ga));
}
}, dd.weapons[d].speed - window.pingTime);
}, 2);
la.tickBase(() => {
Ja = Ta(b);
let e = dd.weapons[d].dmg * a.weaponVariants[Ja[(d <
9 ? "prima" : "seconda") + "ryVariant"]].val * (dd.weapons[d].sDmg || 1) *
(Ja.skinIndex == 40 ? 3.3 : 1);
c.forEach(a => {
a.healthMov = a.health - e / 2;
a.health -= e;
let b;
let c;
let d;
let f = (() => {
const a = (a, b) => {
return Math.floor(Math.random() * (b - a +
1)) + a;
};
b = a(0, 360);
c = a(42, 98);
d = a(40, 90);
})();
});
}, 1);
}
}
}
function findSID(tmpObj, tmp) {
return tmpObj.find((THIS) => THIS.sid == tmp);
}
function findObjectBySid(sid) {
return findSID(Ca, sid);
}
var wiggleDetect = false;
// wiggle xxd
function af(b, c, sid) {
wiggleDetect = true;
pPp();
Ja = Va(c);
let h = Math.atan2(b.y - Ga.y2, b.x - Ga.x2);
if (Ja) {
Ja.xWiggle += a.gatherWiggle * Math.cos(b);
Ja.yWiggle += a.gatherWiggle * Math.sin(b);
if (Ja.health) {
ed.hitObj.push(Ja);
}
}
}
// pre
function pPp() {
let enemy = Oa;
let player = Ga
let dist = enemy.dist2;
if (wiggleDetect) {
while (dist <= 300) {
if (!ha.count >= 50) {
uc(2, enemy.aim);
sa.send("6", "");
} else {
return;
}
if (!dist <= 300) {
wiggleDetect = false;
}
}
}
}
function bf(b, c) {
Ja = Va(b);
if (Ja) {
if (a.anotherVisual) {
Ja.lastDir = c;
} else {
Ja.dir = c;
}
Ja.xWiggle += a.gatherWiggle * Math.cos(c + Math.PI);
Ja.yWiggle += a.gatherWiggle * Math.sin(c + Math.PI);
}
}
function cf() {
const a = ["were slain...", "met their demise...", "life was
extinguished...", "perished...", "were overwhelmed...", "were defeated...", "were
vanquished...", "bit the dust...", "met a tragic end...", "were obliterated...",
"met a gruesome fate...", "were eradicated...", "were annihilated...", "were
crushed...", "were overwhelmed...", "were turned to ash...", "were reduced to
rubble...", "were shattered...", "were disintegrated...", "were torn apart...",
"were consumed by darkness...", "were consumed by the void...", "were consumed by
the abyss...", "were consumed by chaos...", "were consumed by despair...", "were
consumed by madness...", "were consumed by the unknown...", "were consumed by the
shadows..."];
return a[Math.floor(Math.random() * a.length)];
}
function df(a, b, c) {
if (Ga) {
Ga[a] = b;
if (a == "points") {
if (s.autoBuy) {
nd.hat();
nd.acc();
}
} else if (a == "kills") {
if (s.killChat) {
yd("GT86 AUTO GG");
}
}
}
}
function ef(a, b) {
if (a) {
if (b) {
Ga.weapons = a;
Ga.primaryIndex = Ga.weapons[0];
Ga.secondaryIndex = Ga.weapons[1];
if (!md.isTrue) {
weapon(Ga.weapons[0]);
}
} else {
Ga.items = a;
}
}
for (let c = 0; c < dd.list.length; c++) {
let a = dd.weapons.length + c;
h("actionBarItem" + a).style.display =
Ga.items.indexOf(dd.list[c].id) >= 0 ? "inline-block" : "none";
}
for (let c = 0; c < dd.weapons.length; c++) {
h("actionBarItem" + c).style.display =
Ga.weapons[dd.weapons[c].type] == dd.weapons[c].id ? "inline-block" : "none";
}
let c = Ga.weapons[0] == 3 && Ga.weapons[1] == 15;
if (c) {
h("actionBarItem3").style.display = "none";
h("actionBarItem4").style.display = "inline-block";
}
}
function ff(a, b, c, d, e, f, g, h) {
id.addProjectile(a, b, c, d, e, f, null, null, g, Vb).sid = h;
zd.push(Array.prototype.slice.call(arguments));
}
function gf(a, b) {
let c = Ra(of, a);
if (c) { }
}
function hf(a, b) {
if (Ga) {
Ga.team = a;
Ga.isOwner = b;
if (a == null) {
Ba = [];
}
}
}
function jf(a) {
Ba = a;
}
function kf(a, b, c) {
if (c) {
if (!a) {
Ga.tails[b] = 1;
} else {
Ga.latestTail = b;
}
} else if (!a) {
Ga.skins[b] = 1;
if (b == 7) {
player.reSync = true;
}
} else {
Ga.latestSkin = b;
}
}
function lf(b, c) {
c = L(c);
let d = Ta(b);
if (d) {
Z(d.name + " {" + d.sid + "}", c, "white");
if (a.anotherVisual) {
xa.push(new ic(d.x, d.y, c, d));
} else {
d.chatMessage = (a => {
let b;
Xb.forEach(c => {
if (a.indexOf(c) > -1) {
b = "";
for (var d = 0; d < c.length; ++d) {
b += b.length ? "o" : "M";
}
var e = new RegExp(c, "g");
a = a.replace(e, b);
}
});
return a;
})(c);
d.chatCountdown = a.chatCountdown;
}
} else {
Z("Anonymous {null}", c, "white");
}
}
function mf(a) {
qd = a;
}
function nf(b, c, d, e) {
if (a.anotherVisual) {
kd.stack.push({
x: b,
y: c,
value: d
});
} else {
kd.showText(b, c, 50, 0.18, ga ? 500 : 1500, Math.abs(d), d >=
0 ? "#fff" : "#8ecc51");
}
}
let of = [];
let pf = {
x: cd.randInt(35, 14365),
y: cd.randInt(35, 14365)
};
setInterval(() => {
pf = {
x: cd.randInt(35, 14365),
y: cd.randInt(35, 14365)
};
}, 60000);
class qf {
constructor(b, c, d, e) {
this.id = b;
this.sid = c;
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 a = 0; a < e.length; ++a) {
if (e[a].price <= 0) {
this.tails[e[a].id] = 1;
}
}
this.skins = {};
for (let a = 0; a < d.length; ++a) {
if (d[a].price <= 0) {
this.skins[d[a].id] = 1;
}
}
this.spawn = function (b) {
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 = a.playerScale;
this.speed = a.playerSpeed;
this.resetMoveDir();
this.resetResources(b);
this.items = [0, 3, 6, 10];
this.weapons = [0];
this.shootCount = 0;
this.weaponXP = [];
this.reloads = {};
this.whyDie = "";
};
this.resetMoveDir = function () {
this.moveDir = undefined;
};
this.resetResources = function (b) {
for (let c = 0; c < a.resourceTypes.length; ++c) {
this[a.resourceTypes[c]] = b ? 100 : 0;
}
};
this.setData = function (a) {
this.id = a[0];
this.sid = a[1];
this.name = a[2];
this.x = a[3];
this.y = a[4];
this.dir = a[5];
this.health = a[6];
this.maxHealth = a[7];
this.scale = a[8];
this.skinColor = a[9];
};
this.closeSockets = function (a) {
a.close();
};
this.whyDieChat = function (a, b) {
a.sendWS("6", "XDDD why die " + b);
};
}
}
;
class rf {
constructor(a) {
this.sid = a;
this.init = function (a, b, c, d, e, f, g) {
f = f || {};
this.active = true;
this.x = a;
this.y = b;
this.scale = d;
this.owner = g;
this.id = f.id;
this.dmg = f.dmg;
this.trap = f.trap;
this.teleport = f.teleport;
this.isItem = this.id != undefined;
};
}
}
;
class sf {
constructor(b, c) {
this.disableObj = function (b) {
b.active = false;
if (a.anotherVisual) { } else {
b.alive = false;
}
};
let d;
this.add = function (a, e, f, g, h, i, j, k, l) {
d = c(a);
if (!d) {
d = b.find(a => !a.active);
if (!d) {
d = new rf(a);
b.push(d);
}
}
if (k) {
d.sid = a;
}
d.init(e, f, g, h, i, j, l);
};
this.disableBySid = function (a) {
let b = c(a);
if (b) {
this.disableObj(b);
}
};
this.removeAllItems = function (a, c) {
b.filter(b => b.active && b.owner && b.owner.sid ==
a).forEach(a => this.disableObj(a));
};
}
}
;
function tf(b) {
let c;
if (e) {
return;
c = b && new WebSocket("wss://elon_musk_hentai.io/websocket");
} else {
c = b && new WebSocket(ea.url.split("&")[0] + "&token=" +
encodeURIComponent(b));
}
let d = new Map();
let f;
let g = [];
let h = [];
let i = {
x: 0,
y: 0,
inGame: false,
closeSocket: false,
whyDie: ""
};
let j = {
x: 0,
y: 0
};
let k = new sf(g, function (a) {
return Ra(g, a);
});
c.binaryType = "arraybuffer";
c.first = true;
c.sendWS = function (a) {
let b = Array.prototype.slice.call(arguments, 1);
let d = window.msgpack.encode([a, b]);
c.send(d);
};
c.spawn = function () {
c.sendWS("M", {
name: "AAAAAAAAAAAAAAA",
moofoll: 1,
skin: "__proto__"
});
};
c.sendUpgrade = function (a) {
c.sendWS("H", a);
};
c.place = function (b, e) {
try {
let f = dd.list[d.items[b]];
if (d.itemCounts[f.group.id] == undefined ? true :
d.itemCounts[f.group.id] < (a.isSandbox ? 99 : f.group.limit ? f.group.limit : 99))
{
c.sendWS("G", d.items[b]);
c.sendWS("d", 1, e);
c.sendWS("G", d.weaponIndex, true);
}
} catch (a) { }
};
c.buye = function (a, b) {
let e = 0;
if (d.alive && d.inGame) {
if (b == 0) {
if (d.skins[a]) {
if (d.latestSkin != a) {
c.sendWS("c", 0, a, 0);
}
} else {
let b = Qa(gd, a);
if (b) {
if (d.points >= b.price) {
c.sendWS("c", 1, a, 0);
c.sendWS("c", 0, a, 0);
} else if (d.latestSkin != e) {
c.sendWS("c", 0, e, 0);
}
} else if (d.latestSkin != e) {
c.sendWS("c", 0, e, 0);
}
}
} else if (b == 1) {
if (d.tails[a]) {
if (d.latestTail != a) {
c.sendWS("c", 0, a, 1);
}
} else {
let b = Qa(hd, a);
if (b) {
if (d.points >= b.price) {
c.sendWS("c", 1, a, 1);
c.sendWS("c", 0, a, 1);
} else if (d.latestTail != 0) {
c.sendWS("c", 0, 0, 1);
}
} else if (d.latestTail != 0) {
c.sendWS("c", 0, 0, 1);
}
}
}
}
};
c.fastGear = function () {
if (d.y2 >= a.mapScale / 2 - a.riverWidth / 2 && d.y2 <=
a.mapScale / 2 + a.riverWidth / 2) {
c.buye(31, 0);
} else if (d.moveDir == undefined) {
c.buye(22, 0);
} else if (d.y2 <= a.snowBiomeTop) {
c.buye(15, 0);
} else {
c.buye(12, 0);
}
};
let l = function () {
let a = function () {
if (d.health == 100) {
return 0;
}
if (d.skinIndex != 45 && d.skinIndex != 56) {
return Math.ceil((100 - d.health) /
dd.list[d.items[0]].healing);
}
return 0;
};
for (let b = 0; b < a(); b++) {
c.place(0, d.nDir);
}
};
c.onmessage = function (a) {
let b = new Uint8Array(a.data);
let e = window.msgpack.decode(b);
let m = e[0];
b = e[1];
if (m == "1") {
c.spawn();
}
if (m == "1") {
f = b[0];
}
if (m == "D") {
if (b[1]) {
d = new qf(b[0][0], b[0][1], gd, hd);
d.setData(b[0]);
d.inGame = true;
d.alive = true;
d.x2 = undefined;
d.y2 = undefined;
d.spawn(1);
j = {
x: b[0][3],
y: b[0][4]
};
i.inGame = true;
c.sendWS("K", 1);
if (c.first) {
c.first = false;
of.push(i);
}
}
}
if (m == "P") {
c.spawn();
d.inGame = false;
i.inGame = false;
}
if (m == "a") {
let a = b[0];
d.tick++;
d.enemy = [];
d.near = [];
h = [];
for (let b = 0; b < a.length;) {
if (a[b] == d.sid) {
d.x2 = a[b + 1];
d.y2 = a[b + 2];
d.d2 = a[b + 3];
d.buildIndex = a[b + 4];
d.weaponIndex = a[b + 5];
d.weaponVariant = a[b + 6];
d.team = a[b + 7];
d.isLeader = a[b + 8];
d.skinIndex = a[b + 9];
d.tailIndex = a[b + 10];
d.iconIndex = a[b + 11];
d.zIndex = a[b + 12];
d.visible = true;
i.x2 = d.x2;
i.y2 = d.y2;
}
b += 13;
}
if (i.closeSocket) {
d.closeSockets(c);
}
if (i.whyDie != "") {
d.whyDieChat(c, i.whyDie);
i.whyDie = "";
}
if (d.alive) {
if (Ga.team) {
if (d.team != Ga.team && d.tick % 9 === 0) {
if (d.team) {
c.sendWS("N");
}
c.sendWS("b", Ga.team);
}
}
if (d.inGame) {
if (g.length > 0) {
if (Fa.length > 0) {
let a = cd.getDist(Fa[0], d, 0, 2);
let b = cd.getDirect(Fa[0], d, 0, 2);
h = g.filter(a => a.active && (Ra(Fa,
a.sid) ? true : !a.trap || Ga.sid != a.owner.sid && !
Ga.findAllianceBySid(a.owner.sid)) && a.isItem && cd.getDist(a, d, 0, 2) <=
dd.weapons[d.weaponIndex].range + a.scale).sort(function (a, b) {
return cd.getDist(a, d, 0, 2) -
cd.getDist(b, d, 0, 2);
})[0];
if (h) {
let e = cd.getDist(Fa[0], h, 0, 0);
if (a - e > 0) {
if (Ra(Fa, h.sid) ? true : h.dmg ||
h.trap || h.teleport) {
if (d.moveDir != undefined) {
d.moveDir = undefined;
c.sendWS("a", d.moveDir);
}
} else {
d.moveDir = b;
c.sendWS("a", d.moveDir);
}
if (d.nDir != cd.getDirect(h, d, 0,
2)) {
d.nDir = cd.getDirect(h, d, 0,
2);
c.sendWS("D", d.nDir);
}
c.buye(40, 0);
c.buye(11, 1);
} else {
d.moveDir = b;
c.sendWS("a", d.moveDir);
c.fastGear();
c.buye(11, 1);
}
} else {
d.moveDir = b;
c.sendWS("a", d.moveDir);
c.fastGear();
c.buye(11, 1);
}
if (a > 300) {
if (cd.getDist(j, d, 0, 2) > 90) {
let a = cd.getDirect(j, d, 0, 2);
c.place(3, a + Math.PI / 2.3);
c.place(3, a - Math.PI / 2.3);
c.place(3, a);
j = {
x: d.x2,
y: d.y2
};
}
}
} else {
if (d.moveDir != undefined) {
d.moveDir = undefined;
c.sendWS("a", d.moveDir);
}
h = g.filter(a => a.active && (Ra(Fa,
a.sid) ? true : !a.trap || Ga.sid != a.owner.sid && !
Ga.findAllianceBySid(a.owner.sid)) && a.isItem && cd.getDist(a, d, 0, 2) <=
dd.weapons[d.weaponIndex].range + a.scale).sort(function (a, b) {
return cd.getDist(a, d, 0, 2) -
cd.getDist(b, d, 0, 2);
})[0];
if (h) {
if (d.nDir != cd.getDirect(h, d, 0, 2))
{
d.nDir = cd.getDirect(h, d, 0, 2);
c.sendWS("D", d.nDir);
}
c.buye(40, 0);
c.buye(11, 1);
} else {
c.fastGear();
c.buye(11, 1);
}
}
} else if (d.moveDir != undefined) {
d.moveDir = undefined;
c.sendWS("a", d.moveDir);
}
}
}
}
if (m == "H") {
let a = b[0];
for (let b = 0; b < a.length;) {
k.add(a[b], a[b + 1], a[b + 2], a[b + 3], a[b + 4], a[b
+ 5], dd.list[a[b + 6]], true, a[b + 7] >= 0 ? {
sid: a[b + 7]
} : null);
b += 8;
}
}
if (m == "N") {
let a = b[0];
let c = b[1];
if (d) {
d[a] = c;
}
}
if (m == "O") {
if (b[0] == f) {
d.oldHealth = d.health;
d.health = b[1];
d.judgeShame();
if (d.oldHealth > d.health) {
if (d.shameCount < 5) {
l();
} else {
setTimeout(() => {
l();
}, 70);
}
}
}
}
if (m == "Q") {
let a = b[0];
k.disableBySid(a);
}
if (m == "13") {
let a = b[0];
if (d.alive) {
k.removeAllItems(a);
}
}
if (m == "14") {
let a = b[0];
let c = b[1];
if (d) {
d.itemCounts[a] = c;
}
}
if (m == "16") {
if (b[0] > 0) {
if (d.upgraded == 0) {
c.sendUpgrade(3);
} else if (d.upgraded == 1) {
c.sendUpgrade(17);
} else if (d.upgraded == 2) {
c.sendUpgrade(31);
} else if (d.upgraded == 3) {
c.sendUpgrade(27);
} else if (d.upgraded == 4) {
c.sendUpgrade(9);
} else if (d.upgraded == 5) {
c.sendUpgrade(38);
} else if (d.upgraded == 6) {
c.sendUpgrade(4);
} else if (d.upgraded == 7) {
c.sendUpgrade(25);
}
d.upgraded++;
}
}
if (m == "17") {
let a = b[0];
let e = b[1];
if (a) {
if (e) {
d.weapons = a;
} else {
d.items = a;
}
}
c.sendWS("G", d.weapons[0], true);
}
if (m == "us") {
let a = b[0];
let c = b[1];
let e = b[2];
if (e) {
if (!a) {
d.tails[c] = 1;
} else {
d.latestTail = c;
}
} else if (!a) {
d.skins[c] = 1;
} else {
d.latestSkin = c;
}
}
};
c.onclose = function () {
d.inGame = false;
i.inGame = false;
};
}
function uf(a, b, c, d, e) {
let f = a + c * Math.cos(d);
let g = b + c * Math.sin(d);
let h = c * 0.4;
e.moveTo(a, b);
e.beginPath();
e.quadraticCurveTo((a + f) / 2 + h * Math.cos(d + Math.PI / 2), (b
+ g) / 2 + h * Math.sin(d + Math.PI / 2), f, g);
e.quadraticCurveTo((a + f) / 2 - h * Math.cos(d + Math.PI / 2), (b
+ g) / 2 - h * Math.sin(d + Math.PI / 2), a, b);
e.closePath();
e.fill();
e.stroke();
}
function vf(a, b, c, d, e, f) {
d = d || ab;
d.beginPath();
d.arc(a, b, c, 0, Math.PI * 2);
if (!f) {
d.fill();
}
if (!e) {
d.stroke();
}
}
function wf(a, b, c, d, e, f) {
d = d || ab;
d.beginPath();
d.arc(a, b, c, 0, Math.PI * 2);
if (!f) {
d.fill();
}
if (!e) {
d.stroke();
}
}
function xf(a, b, c, d) {
let e = Math.PI / 2 * 3;
let f;
let g;
let h = Math.PI / b;
a.beginPath();
a.moveTo(0, -c);
for (let i = 0; i < b; i++) {
f = Math.cos(e) * c;
g = Math.sin(e) * c;
a.lineTo(f, g);
e += h;
f = Math.cos(e) * d;
g = Math.sin(e) * d;
a.lineTo(f, g);
e += h;
}
a.lineTo(0, -c);
a.closePath();
}
function yf(a, b, c, d) {
let e = Math.PI / 2 * 3;
let f;
let g;
let h = Math.PI / b;
a.beginPath();
a.moveTo(0, -c);
for (let i = 0; i < b; i++) {
f = Math.cos(e) * c;
g = Math.sin(e) * c;
a.lineTo(f, g);
e += h;
f = Math.cos(e) * d;
g = Math.sin(e) * d;
a.lineTo(f, g);
e += h;
}
a.lineTo(0, -c);
a.closePath();
}
function zf(a, b, c, d, e, f, g) {
if (!g) {
e.fillRect(a - c / 2, b - d / 2, c, d);
}
if (!f) {
e.strokeRect(a - c / 2, b - d / 2, c, d);
}
}
function Af(a, b, c, d, e, f, g) {
if (!g) {
e.fillRect(a - c / 2, b - d / 2, c, d);
}
if (!f) {
e.strokeRect(a - c / 2, b - d / 2, c, d);
}
}
function Bf(a, b, c, d, e, f, g, h) {
f.save();
f.translate(a, b);
e = Math.ceil(e / 2);
for (let i = 0; i < e; i++) {
zf(0, 0, c * 2, d, f, g, h);
f.rotate(Math.PI / e);
}
f.restore();
}
function Cf(a, b, c, d) {
let e = Math.PI / 2 * 3;
let f;
let g;
let h = Math.PI / b;
let i;
a.beginPath();
a.moveTo(0, -d);
for (let f = 0; f < b; f++) {
i = cd.randInt(c + 0.9, c * 1.2);
a.quadraticCurveTo(Math.cos(e + h) * i, Math.sin(e + h) * i,
Math.cos(e + h * 2) * d, Math.sin(e + h * 2) * d);
e += h * 2;
}
a.lineTo(0, -d);
a.closePath();
}
function Df(a, b) {
b = b || ab;
let c = a * (Math.sqrt(3) / 2);
b.beginPath();
b.moveTo(0, -c / 2);
b.lineTo(-a / 2, c / 2);
b.lineTo(a / 2, c / 2);
b.lineTo(0, -c / 2);
b.fill();
b.closePath();
}
function Ef() {
var b = a.mapScale / 2;
ed.add(0, b, b + 200, 0, a.treeScales[3], 0);
ed.add(1, b, b - 480, 0, a.treeScales[3], 0);
ed.add(2, b + 300, b + 450, 0, a.treeScales[3], 0);
ed.add(3, b - 950, b - 130, 0, a.treeScales[2], 0);
ed.add(4, b - 750, b - 400, 0, a.treeScales[3], 0);
ed.add(5, b - 700, b + 400, 0, a.treeScales[2], 0);
ed.add(6, b + 800, b - 200, 0, a.treeScales[3], 0);
ed.add(7, b - 260, b + 340, 0, a.bushScales[3], 1);
ed.add(8, b + 760, b + 310, 0, a.bushScales[3], 1);
ed.add(9, b - 800, b + 100, 0, a.bushScales[3], 1);
ed.add(10, b - 800, b + 300, 0, dd.list[4].scale, dd.list[4].id,
dd.list[10]);
ed.add(11, b + 650, b - 390, 0, dd.list[4].scale, dd.list[4].id,
dd.list[10]);
ed.add(12, b - 400, b - 450, 0, a.rockScales[2], 2);
}
const Ff = 35;
function Gf(a, b) {
ab.fillStyle = "#91b2db";
Ea.filter(a => a.active).forEach(c => {
c.animate(ub);
ab.globalAlpha = c.alpha;
ab.strokeStyle = Hb;
ab.save();
ab.translate(c.x - a, c.y - b);
ab.rotate(c.dir);
ab.scale(c.visScale / c.scale, c.visScale / c.scale);
If(c, ab);
ab.restore();
ab.font = "20px Ubuntu";
let d = ab.measureText("R.I.P");
let e = 60;
let f = d.width + 10;
ab.textBaseline = "middle";
ab.textAlign = "center";
ab.fillStyle = "#fff";
ab.strokeStyle = "#000";
ab.strokeText(c.name, c.x - a, c.y + c.scale * 1.5 + 20 - b);
ab.fillText(c.name, c.x - a, c.y + c.scale * 1.5 + 20 - b);
ab.strokeText("Died at " + X + ":" + W + Y, c.x - a, c.y +
c.scale * 1.5 - b);
ab.fillText("Died at " + X + ":" + W + Y, c.x - a, c.y +
c.scale * 1.5 - b);
ab.fillStyle = "#91b2db";
});
}
function Hf(a, b, c) {
ab.globalAlpha = 1;
ab.fillStyle = "#91b2db";
for (var d = 0; d < za.length; ++d) {
Ja = za[d];
if (Ja.zIndex == c) {
Ja.animate(ub);
if (Ja.visible) {
Ja.skinRot += ub * 0.002;
Bb = !x.autoInsta.enabled && !ga && Ja == Ga ?
s.attackDir ? Pd() : Nd() : Ja.dir || 0;
ab.save();
ab.translate(Ja.x - a, Ja.y - b);
ab.rotate(Bb + Ja.dirPlus);
Jf(Ja, ab);
ab.restore();
}
}
}
}
function If(b, c) {
c = c || ab;
c.lineWidth = Jb;
c.lineJoin = "miter";
let d = Math.PI / 4 * (dd.weapons[b.weaponIndex].armS || 1);
let e = b.buildIndex < 0 ? dd.weapons[b.weaponIndex].hndS || 1 : 1;
let f = b.buildIndex < 0 ? dd.weapons[b.weaponIndex].hndD || 1 : 1;
b.skinIndex = 48;
b.tailIndex = 13;
Qf(13, c, b);
if (b.buildIndex < 0 && !dd.weapons[b.weaponIndex].aboveHand) {
_f(dd.weapons[10], a.weaponVariants[b.weaponVariant].src,
b.scale, 0, c);
if (dd.weapons[b.weaponIndex].projectile != undefined && !
dd.weapons[b.weaponIndex].hideProjectile) {
Xf(b.scale, 0,
dd.projectiles[dd.weapons[b.weaponIndex].projectile], ab);
}
}
c.fillStyle = "#ececec";
vf(b.scale * Math.cos(d), b.scale * Math.sin(d), 14);
vf(b.scale * f * Math.cos(-d * e), b.scale * f * Math.sin(-d * e),
14);
if (b.buildIndex < 0 && dd.weapons[b.weaponIndex].aboveHand) {
_f(dd.weapons[10], a.weaponVariants[b.weaponVariant].src,
b.scale, 0, c);
}
if (b.buildIndex >= 0) {
_f(dd.weapons[10], a.weaponVariants[b.weaponVariant].src,
b.scale, 0, c);
}
vf(0, 0, b.scale, c);
Nf(48, c, null, b);
}
function Jf(b, c) {
c = c || ab;
c.lineWidth = Jb;
c.lineJoin = "miter";
let d = Math.PI / 4 * (dd.weapons[b.weaponIndex].armS || 1);
let e = b.buildIndex < 0 ? dd.weapons[b.weaponIndex].hndS || 1 : 1;
let f = b.buildIndex < 0 ? dd.weapons[b.weaponIndex].hndD || 1 : 1;
let g = b == Ga && b.weapons[0] == 3 && b.weapons[1] == 15;
if (b.tailIndex > 0) {
Qf(b.tailIndex, c, b);
}
if (b.buildIndex < 0 && !dd.weapons[b.weaponIndex].aboveHand) {
_f(dd.weapons[g ? 4 : b.weaponIndex],
a.weaponVariants[b.weaponVariant].src, b.scale, 0, c);
if (dd.weapons[b.weaponIndex].projectile != undefined && !
dd.weapons[b.weaponIndex].hideProjectile) {
Xf(b.scale, 0,
dd.projectiles[dd.weapons[b.weaponIndex].projectile], ab);
}
}
c.fillStyle = a.skinColors[b.skinColor];
vf(b.scale * Math.cos(d), b.scale * Math.sin(d), 14);
vf(b.scale * f * Math.cos(-d * e), b.scale * f * Math.sin(-d * e),
14);
if (b.buildIndex < 0 && dd.weapons[b.weaponIndex].aboveHand) {
_f(dd.weapons[b.weaponIndex],
a.weaponVariants[b.weaponVariant].src, b.scale, 0, c);
if (dd.weapons[b.weaponIndex].projectile != undefined && !
dd.weapons[b.weaponIndex].hideProjectile) {
Xf(b.scale, 0,
dd.projectiles[dd.weapons[b.weaponIndex].projectile], ab);
}
}
if (b.buildIndex >= 0) {
var h = eg(dd.list[b.buildIndex]);
c.drawImage(h, b.scale - dd.list[b.buildIndex].holdOffset, -
h.width / 2);
}
vf(0, 0, b.scale, c);
if (b.skinIndex > 0) {
c.rotate(Math.PI / 2);
Nf(b.skinIndex, c, null, b);
}
}
let Kf = {};
let Lf = {};
let Mf;
function Nf(a, b, c, d) {
Mf = Kf[a];
if (!Mf) {
let b = new Image();
b.onload = function () {
this.isLoaded = true;
this.onload = null;
};
b.src = "https://moomoo.io/img/hats/hat_" + a + ".png";
Kf[a] = b;
Mf = b;
}
let e = c || Lf[a];
if (!e) {
for (let b = 0; b < gd.length; ++b) {
if (gd[b].id == a) {
e = gd[b];
break;
}
}
Lf[a] = e;
}
if (Mf.isLoaded) {
b.drawImage(Mf, -e.scale / 2, -e.scale / 2, e.scale, e.scale);
}
if (!c && e.topSprite) {
b.save();
b.rotate(d.skinRot);
Nf(a + "_top", b, e, d);
b.restore();
}
}
let Of = {};
let Pf = {};
function Qf(a, b, c) {
Mf = Of[a];
if (!Mf) {
let b = new Image();
b.onload = function () {
this.isLoaded = true;
this.onload = null;
};
b.src = "https://moomoo.io/img/accessories/access_" + a +
".png";
Of[a] = b;
Mf = b;
}
let d = Pf[a];
if (!d) {
for (let b = 0; b < hd.length; ++b) {
if (hd[b].id == a) {
d = hd[b];
break;
}
}
Pf[a] = d;
}
if (Mf.isLoaded) {
b.save();
b.translate(-20 - (d.xOff || 0), 0);
if (d.spin) {
b.rotate(c.skinRot);
}
b.drawImage(Mf, -(d.scale / 2), -(d.scale / 2), d.scale,
d.scale);
b.restore();
}
}
var Rf = {};
var Sf = {};
function Tf(a, b, c) {
Mf = Rf[a];
if (!Mf) {
var d = new Image();
d.onload = function () {
this.isLoaded = true;
this.onload = null;
};
d.src = "https://moomoo.io/img/accessories/access_" + a +
".png";
Rf[a] = d;
Mf = d;
}
var e = Sf[a];
if (!e) {
for (var f = 0; f < hd.length; ++f) {
if (hd[f].id == a) {
e = hd[f];
break;
}
}
Sf[a] = e;
}
if (Mf.isLoaded) {
b.save();
b.translate(-20 - (e.xOff || 0), 0);
if (e.spin) {
b.rotate(c.skinRot);
}
b.drawImage(Mf, -(e.scale / 2), -(e.scale / 2), e.scale,
e.scale);
b.restore();
}
}
let Uf = {};
function Vf(a, b, c) {
for (let d = 0; d < Da.length; d++) {
Ja = Da[d];
if (Ja.active && Ja.layer == a && Ja.inWindow) {
Ja.update(ub);
if (Ja.active && jg(Ja.x - b, Ja.y - c, Ja.scale)) {
ab.save();
ab.translate(Ja.x - b, Ja.y - c);
ab.rotate(Ja.dir);
Xf(0, 0, Ja, ab, 1);
ab.restore();
}
}
}
;
}
let Wf = {};
function Xf(a, b, c, d, e) {
if (c.src) {
let e = dd.projectiles[c.indx].src;
let f = Wf[e];
if (!f) {
f = new Image();
f.onload = function () {
this.isLoaded = true;
};
f.src = "https://moomoo.io/img/weapons/" + e + ".png";
Wf[e] = f;
}
if (f.isLoaded) {
d.drawImage(f, a - c.scale / 2, b - c.scale / 2, c.scale,
c.scale);
}
} else if (c.indx == 1) {
d.fillStyle = "#939393";
vf(a, b, c.scale, d);
}
}
let Yf = {};
function Zf(a, b) {
let c = a.index;
let d = Yf[c];
if (!d) {
let b = new Image();
b.onload = function () {
this.isLoaded = true;
this.onload = null;
};
b.src = "https://moomoo.io/img/animals/" + a.src + ".png";
d = b;
Yf[c] = d;
}
if (d.isLoaded) {
let c = a.scale * 1.2 * (a.spriteMlt || 1);
b.drawImage(d, -c, -c, c * 2, c * 2);
}
}
function $f(b, c, d, e) {
let f = a.riverWidth + e;
let g = a.mapScale / 2 - c - f / 2;
if (g < sb && g + f > 0) {
d.fillRect(0, g, rb, f);
}
}
function _f(a, b, c, d, e) {
var f = a.src + (b || "");
var g = Uf[f];
if (!g) {
g = new Image();
g.onload = function () {
this.isLoaded = true;
};
g.src = ".././img/weapons/" + f + ".png";
Uf[f] = g;
}
if (g.isLoaded) {
e.drawImage(g, c + a.xOff - a.length / 2, d + a.yOff -
a.width / 2, a.length, a.width);
}
}
var ag = {};
let bg = {};
function cg(b) {
var c = b.y >= a.mapScale - a.snowBiomeTop ? 2 : b.y <=
a.snowBiomeTop ? 1 : 0;
var d = b.type + "_" + b.scale + "_" + c;
var e = bg[d];
if (!e) {
var f = document.createElement("canvas");
f.width = f.height = b.scale * 2.1 + Jb;
var g = f.getContext("2d");
g.translate(f.width / 2, f.height / 2);
g.rotate(cd.randFloat(0, Math.PI));
g.strokeStyle = Hb;
g.lineWidth = Jb;
let a = [["#b1d959", "#95b946"], ["#bade6e", "#aac76b"],
["#a7d544", "#86a63f"], ["#b4db62", "#9ebf57"]];
let m = a[Math.floor(Math.random() * a.length)];
if (b.type == 0) {
var h;
for (var i = 0; i < 2; ++i) {
h = Ja.scale * (!i ? 1 : 0.5);
xf(g, 7, h, h * 0.7);
g.fillStyle = !c ? !i ? "#9ebf57" : "#b4db62" : !i ?
"#e3f1f4" : "#fff";
g.fill();
if (!i) {
g.stroke();
}
}
} else if (b.type == 1) {
if (c == 2) {
g.fillStyle = "#606060";
xf(g, 6, b.scale * 0.3, b.scale * 0.71);
g.fill();
g.stroke();
g.fillStyle = "#89a54c";
vf(0, 0, b.scale * 0.55, g);
g.fillStyle = "#a5c65b";
vf(0, 0, b.scale * 0.3, g, true);
} else {
Cf(g, 6, Ja.scale, Ja.scale * 0.7);
g.fillStyle = c ? "#e3f1f4" : "#89a54c";
g.fill();
g.stroke();
g.fillStyle = c ? "#6a64af" : "#c15555";
var j;
var k = 4;
var l = va / k;
for (var i = 0; i < k; ++i) {
j = cd.randInt(Ja.scale / 3.5, Ja.scale / 2.3);
vf(j * Math.cos(l * i), j * Math.sin(l * i),
cd.randInt(10, 12), g);
}
}
} else if (b.type == 2 || b.type == 3) {
g.fillStyle = b.type == 2 ? c == 2 ? "#938d77" :
"#939393" : "#e0c655";
xf(g, 3, b.scale, b.scale);
g.fill();
g.stroke();
g.fillStyle = b.type == 2 ? c == 2 ? "#b2ab90" :
"#bcbcbc" : "#ebdca3";
xf(g, 3, b.scale * 0.55, b.scale * 0.65);
g.fill();
}
e = f;
bg[d] = e;
}
return e;
}
let dg = [];
function eg(a, b) {
var c = dg[a.id];
if (!c || b) {
var d = document.createElement("canvas");
d.width = d.height = a.scale * 2.5 + Jb +
(dd.list[a.id].spritePadding || 0);
var e = d.getContext("2d");
e.translate(d.width / 2, d.height / 2);
e.rotate(b ? 0 : Math.PI / 2);
e.strokeStyle = Hb;
e.lineWidth = Jb * (b ? d.width / 81 : 1);
if (a.name == "apple") {
e.fillStyle = "#c15555";
vf(0, 0, a.scale, e);
e.fillStyle = "#89a54c";
var f = -(Math.PI / 2);
uf(a.scale * Math.cos(f), a.scale * Math.sin(f), 25, f +
Math.PI / 2, e);
} else if (a.name == "cookie") {
e.fillStyle = "#cca861";
vf(0, 0, a.scale, e);
e.fillStyle = "#937c4b";
var g = 4;
var h = va / g;
var i;
for (var j = 0; j < g; ++j) {
i = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(i * Math.cos(h * j), i * Math.sin(h * j),
cd.randInt(4, 5), e, true);
}
} else if (a.name == "cheese") {
e.fillStyle = "#f4f3ac";
vf(0, 0, a.scale, e);
e.fillStyle = "#c3c28b";
var g = 4;
var h = va / g;
var i;
for (var j = 0; j < g; ++j) {
i = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(i * Math.cos(h * j), i * Math.sin(h * j),
cd.randInt(4, 5), e, true);
}
} else if (a.name == "wood wall" || a.name == "stone wall" ||
a.name == "castle wall") {
e.fillStyle = a.name == "castle wall" ? "#83898e" : a.name
== "wood wall" ? "#a5974c" : "#939393";
var k = a.name == "castle wall" ? 4 : 3;
xf(e, k, a.scale * 1.1, a.scale * 1.1);
e.fill();
e.stroke();
e.fillStyle = a.name == "castle wall" ? "#9da4aa" : a.name
== "wood wall" ? "#c9b758" : "#bcbcbc";
xf(e, k, a.scale * 0.65, a.scale * 0.65);
e.fill();
} else if (a.name == "spikes" || a.name == "greater spikes" ||
a.name == "poison spikes" || a.name == "spinning spikes") {
e.fillStyle = a.name == "poison spikes" ? "#7b935d" :
"#939393";
var l = a.scale * 0.6;
xf(e, a.name == "spikes" ? 5 : 6, a.scale, l);
e.fill();
e.stroke();
e.fillStyle = "#a5974c";
vf(0, 0, l, e);
e.fillStyle = "#c9b758";
vf(0, 0, l / 2, e, true);
} else if (a.name == "windmill" || a.name == "faster windmill"
|| a.name == "power mill") {
e.fillStyle = "#a5974c";
vf(0, 0, a.scale, e);
e.fillStyle = "#c9b758";
Bf(0, 0, a.scale * 1.5, 29, 4, e);
e.fillStyle = "#a5974c";
vf(0, 0, a.scale * 0.5, e);
} else if (a.name == "mine") {
e.fillStyle = "#939393";
xf(e, 3, a.scale, a.scale);
e.fill();
e.stroke();
e.fillStyle = "#bcbcbc";
xf(e, 3, a.scale * 0.55, a.scale * 0.65);
e.fill();
} else if (a.name == "sapling") {
for (var j = 0; j < 2; ++j) {
var l = a.scale * (!j ? 1 : 0.5);
xf(e, 7, l, l * 0.7);
e.fillStyle = !j ? "#9ebf57" : "#b4db62";
e.fill();
if (!j) {
e.stroke();
}
}
} else if (a.name == "pit trap") {
e.fillStyle = "#a5974c";
xf(e, 3, a.scale * 1.1, a.scale * 1.1);
e.fill();
e.stroke();
e.fillStyle = Hb;
xf(e, 3, a.scale * 0.65, a.scale * 0.65);
e.fill();
} else if (a.name == "boost pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#dbd97d";
Df(a.scale * 1, e);
} else if (a.name == "turret") {
e.fillStyle = "#a5974c";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.fillStyle = "#939393";
var m = 50;
zf(0, -m / 2, a.scale * 0.9, m, e);
vf(0, 0, a.scale * 0.6, e);
e.fill();
e.stroke();
} else if (a.name == "platform") {
e.fillStyle = "#cebd5f";
var n = 4;
var o = a.scale * 2;
var p = o / n;
var q = -(a.scale / 2);
for (var j = 0; j < n; ++j) {
zf(q - p / 2, 0, p, a.scale * 2, e);
e.fill();
e.stroke();
q += o / n;
}
} else if (a.name == "healing pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, e, true);
} else if (a.name == "spawn pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#71aad6";
vf(0, 0, a.scale * 0.6, e);
} else if (a.name == "blocker") {
e.fillStyle = "#7e7f82";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.rotate(Math.PI / 4);
e.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, e, true);
} else if (a.name == "teleporter") {
e.fillStyle = "#7e7f82";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.rotate(Math.PI / 4);
e.fillStyle = "#d76edb";
vf(0, 0, a.scale * 0.5, e, true);
}
c = d;
if (!b) {
dg[a.id] = c;
}
}
return c;
}
function fg(a, b, c) {
let d = ab;
let e = a.name == "windmill" ? dd.list[4].scale : a.scale;
d.save();
d.translate(b, c);
d.rotate(a.dir);
d.strokeStyle = Hb;
d.lineWidth = Jb;
if (a.name == "apple") {
d.fillStyle = "#c15555";
vf(0, 0, a.scale, d);
d.fillStyle = "#89a54c";
let b = -(Math.PI / 2);
uf(a.scale * Math.cos(b), a.scale * Math.sin(b), 25, b +
Math.PI / 2, d);
} else if (a.name == "cookie") {
d.fillStyle = "#cca861";
vf(0, 0, a.scale, d);
d.fillStyle = "#937c4b";
let b = 4;
let c = Math.PI * 2 / b;
let e;
for (let f = 0; f < b; ++f) {
e = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(e * Math.cos(c * f), e * Math.sin(c * f), cd.randInt(4,
5), d, true);
}
} else if (a.name == "cheese") {
d.fillStyle = "#f4f3ac";
vf(0, 0, a.scale, d);
d.fillStyle = "#c3c28b";
let b = 4;
let c = Math.PI * 2 / b;
let e;
for (let f = 0; f < b; ++f) {
e = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(e * Math.cos(c * f), e * Math.sin(c * f), cd.randInt(4,
5), d, true);
}
} else if (a.name == "wood wall" || a.name == "stone wall" ||
a.name == "castle wall") {
d.fillStyle = a.name == "castle wall" ? "#83898e" : a.name ==
"wood wall" ? "#a5974c" : "#939393";
let b = a.name == "castle wall" ? 4 : 3;
xf(d, b, a.scale * 1.1, a.scale * 1.1);
d.fill();
d.stroke();
d.fillStyle = a.name == "castle wall" ? "#9da4aa" : a.name ==
"wood wall" ? "#c9b758" : "#bcbcbc";
xf(d, b, a.scale * 0.65, a.scale * 0.65);
d.fill();
} else if (a.name == "spikes" || a.name == "greater spikes" ||
a.name == "poison spikes" || a.name == "spinning spikes") {
d.fillStyle = a.name == "poison spikes" ? "#7b935d" :
"#939393";
let b = a.scale * 0.6;
xf(d, a.name == "spikes" ? 5 : 6, a.scale, b);
d.fill();
d.stroke();
d.fillStyle = "#a5974c";
vf(0, 0, b, d);
d.fillStyle = "#c9b758";
vf(0, 0, b / 2, d, true);
} else if (a.name == "windmill" || a.name == "faster windmill" ||
a.name == "power mill") {
d.fillStyle = "#a5974c";
vf(0, 0, e, d);
d.fillStyle = "#c9b758";
Bf(0, 0, e * 1.5, 29, 4, d);
d.fillStyle = "#a5974c";
vf(0, 0, e * 0.5, d);
} else if (a.name == "mine") {
d.fillStyle = "#939393";
xf(d, 3, a.scale, a.scale);
d.fill();
d.stroke();
d.fillStyle = "#bcbcbc";
xf(d, 3, a.scale * 0.55, a.scale * 0.65);
d.fill();
} else if (a.name == "sapling") {
for (let b = 0; b < 2; ++b) {
let c = a.scale * (!b ? 1 : 0.5);
xf(d, 7, c, c * 0.7);
d.fillStyle = !b ? "#9ebf57" : "#b4db62";
d.fill();
if (!b) {
d.stroke();
}
}
} else if (a.name == "pit trap") {
d.fillStyle = "#a5974c";
xf(d, 3, a.scale * 1.1, a.scale * 1.1);
d.fill();
d.stroke();
d.fillStyle = Hb;
xf(d, 3, a.scale * 0.65, a.scale * 0.65);
d.fill();
} else if (a.name == "boost pad") {
d.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, d);
d.fill();
d.stroke();
d.fillStyle = "#dbd97d";
Df(a.scale * 1, d);
} else if (a.name == "turret") {
d.fillStyle = "#a5974c";
vf(0, 0, a.scale, d);
d.fill();
d.stroke();
d.fillStyle = "#939393";
let b = 50;
zf(0, -b / 2, a.scale * 0.9, b, d);
vf(0, 0, a.scale * 0.6, d);
d.fill();
d.stroke();
} else if (a.name == "platform") {
d.fillStyle = "#cebd5f";
let b = 4;
let c = a.scale * 2;
let e = c / b;
let f = -(a.scale / 2);
for (let g = 0; g < b; ++g) {
zf(f - e / 2, 0, e, a.scale * 2, d);
d.fill();
d.stroke();
f += c / b;
}
} else if (a.name == "healing pad") {
d.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, d);
d.fill();
d.stroke();
d.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, d, true);
} else if (a.name == "spawn pad") {
d.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, d);
d.fill();
d.stroke();
d.fillStyle = "#71aad6";
vf(0, 0, a.scale * 0.6, d);
} else if (a.name == "blocker") {
d.fillStyle = "#7e7f82";
vf(0, 0, a.scale, d);
d.fill();
d.stroke();
d.rotate(Math.PI / 4);
d.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, d, true);
} else if (a.name == "teleporter") {
d.fillStyle = "#7e7f82";
vf(0, 0, a.scale, d);
d.fill();
d.stroke();
d.rotate(Math.PI / 4);
d.fillStyle = "#d76edb";
vf(0, 0, a.scale * 0.5, d, true);
}
d.restore();
}
let gg = [];
function hg(a, b) {
var c = dg[a.id + (Ga && a.owner && a.owner.sid == Ga.sid ? 0 : Ga
&& Ga.team && a.owner && findAllianceBySid(a.owner.sid) ? 0 : 50)];
if (!c || b) {
var d = document.createElement("canvas");
d.width = d.height = a.scale * 2.5 + Jb +
(dd.list[a.id].spritePadding || 0);
var e = d.getContext("2d");
e.translate(d.width / 2, d.height / 2);
e.rotate(b ? 0 : Math.PI / 2);
e.strokeStyle = Hb;
e.lineWidth = Jb * (b ? d.width / 81 : 1);
if (a.name == "apple") {
e.fillStyle = "#c15555";
vf(0, 0, a.scale, e);
e.fillStyle = "#89a54c";
var f = -(Math.PI / 2);
uf(a.scale * Math.cos(f), a.scale * Math.sin(f), 25, f +
Math.PI / 2, e);
} else if (a.name == "cookie") {
e.fillStyle = "#cca861";
vf(0, 0, a.scale, e);
e.fillStyle = "#937c4b";
var g = 4;
var h = va / g;
var i;
for (var j = 0; j < g; ++j) {
i = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(i * Math.cos(h * j), i * Math.sin(h * j),
cd.randInt(4, 5), e, true);
}
} else if (a.name == "cheese") {
e.fillStyle = "#f4f3ac";
vf(0, 0, a.scale, e);
e.fillStyle = "#c3c28b";
var g = 4;
var h = va / g;
var i;
for (var j = 0; j < g; ++j) {
i = cd.randInt(a.scale / 2.5, a.scale / 1.7);
vf(i * Math.cos(h * j), i * Math.sin(h * j),
cd.randInt(4, 5), e, true);
}
} else if (a.name == "wood wall" || a.name == "stone wall" ||
a.name == "castle wall") {
e.fillStyle = a.name == "castle wall" ? "#83898e" : a.name
== "wood wall" ? "#a5974c" : "#939393";
var k = a.name == "castle wall" ? 4 : 3;
xf(e, k, a.scale * 1.1, a.scale * 1.1);
e.fill();
e.stroke();
e.fillStyle = a.name == "castle wall" ? "#9da4aa" : a.name
== "wood wall" ? "#c9b758" : "#bcbcbc";
xf(e, k, a.scale * 0.65, a.scale * 0.65);
e.fill();
} else if (a.name == "spikes" || a.name == "greater spikes" ||
a.name == "poison spikes" || a.name == "spinning spikes") {
e.fillStyle = a.name == "poison spikes" ? "#7b935d" :
"#939393";
var l = a.scale * 0.6;
xf(e, a.name == "spikes" ? 5 : 6, a.scale, l);
e.fill();
e.stroke();
e.fillStyle = "#a5974c";
vf(0, 0, l, e);
e.fillStyle = Ga && a.owner && a.owner.sid == Ga.sid ?
"#c9b758" : Ga && Ga.team && a.owner && findAllianceBySid(a.owner.sid) ?
"#c9b758" : "#A52A2A";
e.globalAlpha = 1;
vf(0, 0, a.scale, e, 10, 100);
vf(0, 0, l / 2, e, true);
} else if (a.name == "windmill" || a.name == "faster windmill"
|| a.name == "power mill") {
e.fillStyle = "#a5974c";
vf(0, 0, a.scale, e);
e.fillStyle = "#c9b758";
Bf(0, 0, a.scale * 1.5, 29, 4, e);
e.fillStyle = "#a5974c";
vf(0, 0, a.scale * 0.5, e);
} else if (a.name == "mine") {
e.fillStyle = "#939393";
xf(e, 3, a.scale, a.scale);
e.fill();
e.stroke();
e.fillStyle = "#bcbcbc";
xf(e, 3, a.scale * 0.55, a.scale * 0.65);
e.fill();
} else if (a.name == "sapling") {
for (var j = 0; j < 2; ++j) {
var l = a.scale * (!j ? 1 : 0.5);
xf(e, 7, l, l * 0.7);
e.fillStyle = !j ? "#9ebf57" : "#b4db62";
e.fill();
if (!j) {
e.stroke();
}
}
} else if (a.name == "pit trap") {
e.fillStyle = "#a5974c";
xf(e, 3, a.scale * 1.1, a.scale * 1.1);
e.fill();
e.stroke();
e.fillStyle = Ga && a.owner && a.owner.sid == Ga.sid ? Hb :
Ga && Ga.team && a.owner && findAllianceBySid(a.owner.sid) ? Hb : "#AD1E0090";
e.globalAlpha = 1;
vf(0, 0, a.scale, e, 10, 100);
xf(e, 3, a.scale * 0.65, a.scale * 0.65);
e.fill();
} else if (a.name == "boost pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#dbd97d";
Df(a.scale * 1, e);
} else if (a.name == "turret") {
e.fillStyle = "#a5974c";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.fillStyle = "#939393";
var m = 50;
zf(0, -m / 2, a.scale * 0.9, m, e);
vf(0, 0, a.scale * 0.6, e);
e.fill();
e.stroke();
} else if (a.name == "platform") {
e.fillStyle = "#cebd5f";
var n = 4;
var o = a.scale * 2;
var p = o / n;
var q = -(a.scale / 2);
for (var j = 0; j < n; ++j) {
zf(q - p / 2, 0, p, a.scale * 2, e);
e.fill();
e.stroke();
q += o / n;
}
} else if (a.name == "healing pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, e, true);
} else if (a.name == "spawn pad") {
e.fillStyle = "#7e7f82";
zf(0, 0, a.scale * 2, a.scale * 2, e);
e.fill();
e.stroke();
e.fillStyle = "#71aad6";
vf(0, 0, a.scale * 0.6, e);
} else if (a.name == "blocker") {
e.fillStyle = "#7e7f82";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.rotate(Math.PI / 4);
e.fillStyle = "#db6e6e";
Bf(0, 0, a.scale * 0.65, 20, 4, e, true);
} else if (a.name == "teleporter") {
e.fillStyle = "#7e7f82";
vf(0, 0, a.scale, e);
e.fill();
e.stroke();
e.rotate(Math.PI / 4);
e.fillStyle = "#d76edb";
vf(0, 0, a.scale * 0.5, e, true);
}
c = d;
if (!b) {
dg[a.id + (Ga && a.owner && a.owner.sid == Ga.sid ? 0 : Ga
&& Ga.team && a.owner && findAllianceBySid(a.owner.sid) ? 0 : 50)] = c;
}
}
return c;
}
function ig(a, b, c, d) {
b.lineWidth = Jb;
b.globalAlpha = 1;
b.strokeStyle = Hb;
b.save();
b.translate(c, d);
b.rotate(a.dir);
if (a.name == "wood wall" || a.name == "stone wall" || a.name ==
"castle wall") {
let c = a.name == "castle wall" ? 4 : 3;
yf(b, c, a.scale * 1.1, a.scale * 1.1);
b.stroke();
} else if (a.name == "spikes" || a.name == "greater spikes" ||
a.name == "poison spikes" || a.name == "spinning spikes") {
let c = a.scale * 0.6;
yf(b, a.name == "spikes" ? 5 : 6, a.scale, c);
b.stroke();
} else if (a.name == "windmill" || a.name == "faster windmill" ||
a.name == "power mill") {
wf(0, 0, a.scale, b, false, true);
} else if (a.name == "mine") {
yf(b, 3, a.scale, a.scale);
b.stroke();
} else if (a.name == "sapling") {
let c = a.scale * 0.7;
yf(b, 7, a.scale, c);
b.stroke();
} else if (a.name == "pit trap") {
yf(b, 3, a.scale * 1.1, a.scale * 1.1);
b.stroke();
} else if (a.name == "boost pad") {
Af(0, 0, a.scale * 2, a.scale * 2, b, false, true);
} else if (a.name == "turret") {
wf(0, 0, a.scale, b, false, true);
} else if (a.name == "platform") {
Af(0, 0, a.scale * 2, a.scale * 2, b, false, true);
} else if (a.name == "healing pad") {
Af(0, 0, a.scale * 2, a.scale * 2, b, false, true);
} else if (a.name == "spawn pad") {
Af(0, 0, a.scale * 2, a.scale * 2, b, false, true);
} else if (a.name == "blocker") {
wf(0, 0, a.scale, b, false, true);
} else if (a.name == "teleporter") {
wf(0, 0, a.scale, b, false, true);
}
b.fillStyle = "rgba(0, 0, 0, 0.5)";
b.fill();
b.restore();
}
function jg(a, b, c) {
return a + c >= 0 && a - c <= rb && b + c >= 0 && (b, c, sb);
}
function kg(a, b, c) {
const d = h("predic");
const e = d.value;
if (e === "zod") {
lg(ab, b, c);
} else if (e === "kite") {
ig(a, ab, b, c);
}
}
function lg(a, b, c) {
a.fillStyle = "rgba(0, 255, 255, 0)";
a.beginPath();
a.arc(b, c, 55, 0, Math.PI * 2);
a.fill();
a.closePath();
a.globalAlpha = 1;
}
class mg {
constructor(b, c) {
this.init = function (a, b) {
this.scale = 0;
this.x = a;
this.y = b;
this.active = true;
};
this.update = function (b, d) {
if (this.active) {
this.scale += d * 0.05;
if (this.scale >= c) {
this.active = false;
} else {
b.globalAlpha = 1 - Math.max(0, this.scale / c);
b.beginPath();
b.arc(this.x / a.mapScale * bb.width, this.y /
a.mapScale * bb.width, this.scale, 0, Math.PI * 2);
b.stroke();
}
}
};
this.color = b;
}
}
function ng(b, c) {
td = sd.find(a => !a.active);
if (!td) {
td = new mg("#fff", a.mmapPingscale);
sd.push(td);
}
td.init(b, c);
}
function og() {
rd.x = Ga.x;
rd.y = Ga.y;
}
function pg(b) {
if (Ga && Ga.alive) {
cb.clearRect(0, 0, bb.width, bb.height);
cb.lineWidth = 4;
for (let a = 0; a < sd.length; ++a) {
td = sd[a];
cb.strokeStyle = td.color;
td.update(cb, b);
}
cb.globalAlpha = 1;
cb.fillStyle = "#ff0000";
if (ud.length) {
cb.fillStyle = "#abcdef";
cb.font = "34px Hammersmith One";
cb.textBaseline = "middle";
cb.textAlign = "center";
for (let b = 0; b < ud.length;) {
cb.fillText("!", ud[b].x / a.mapScale * bb.width,
ud[b].y / a.mapScale * bb.height);
b += 2;
}
}
cb.globalAlpha = 1;
cb.fillStyle = "#fff";
vf(Ga.x / a.mapScale * bb.width, Ga.y / a.mapScale * bb.height,
7, cb, true);
cb.fillStyle = "rgba(255,255,255,0.35)";
if (Ga.team && qd) {
for (let b = 0; b < qd.length;) {
vf(qd[b] / a.mapScale * bb.width, qd[b + 1] /
a.mapScale * bb.height, 7, cb, true);
b += 2;
}
}
if (of.length) {
of.forEach(b => {
if (b.inGame) {
cb.globalAlpha = 1;
cb.strokeStyle = "#cc5151";
vf(b.x2 / a.mapScale * bb.width, b.y2 / a.mapScale
* bb.height, 7, cb, false, true);
}
});
}
if (pd) {
cb.fillStyle = "#fc5553";
cb.font = "34px Hammersmith One";
cb.textBaseline = "middle";
cb.textAlign = "center";
cb.fillText("x", pd.x / a.mapScale * bb.width, pd.y /
a.mapScale * bb.height);
}
if (rd) {
cb.fillStyle = "#fff";
cb.font = "34px Hammersmith One";
cb.textBaseline = "middle";
cb.textAlign = "center";
cb.fillText("x", rd.x / a.mapScale * bb.width, rd.y /
a.mapScale * bb.height);
}
}
}
let qg =
["https://cdn.discordapp.com/attachments/1001384433078779927/1149285738412769300/
newawwddd.png",
"https://cdn.discordapp.com/attachments/1001384433078779927/1149285168780165170/100
px-Crosshairs_Red.png"];
let rg = {};
let sg = {};
let tg = ["crown", "skull"];
function ug() {
for (let a = 0; a < tg.length; ++a) {
let b = new Image();
b.onload = function () {
this.isLoaded = true;
};
b.src = "./../img/icons/" + tg[a] + ".png";
sg[tg[a]] = b;
}
for (let a = 0; a < qg.length; ++a) {
let b = new Image();
b.onload = function () {
this.isLoaded = true;
};
b.src = qg[a];
rg[a] = b;
}
}
ug();
function vg(a, b) {
try {
return Math.hypot((b.y2 || b.y) - (a.y2 || a.y), (b.x2 || b.x)
- (a.x2 || a.x));
} catch (a) {
return Infinity;
}
}
function wg() {
if (a.resetRender) {
ab.clearRect(0, 0, _a.width, _a.height);
ab.beginPath();
}
if (true) {
function k(a) {
let b = 0;
for (let c = 0; c < a.length; c++) {
b += a[c];
}
return b / a.length;
}
if (Ga) {
let a = Ga.x;
let b = Ga.y;
if (Oa.dist) {
let c = [];
let d = [];
for (let a = 0; a < Oa.enemy.length; a++) {
c.push(Oa.enemy[a].x);
d.push(Oa.enemy[a].y);
}
let e = k(c);
let f = k(d);
a = (Ga.x * 6 + e) / 7;
b = (Ga.y * 6 + f) / 7;
}
let c = cd.getDistance(xb, yb, a, b);
let d = cd.getDirection(a, b, xb, yb);
let e = Math.min(c * 0.005 * ub, c);
if (c > 0.05) {
xb += e * Math.cos(d);
yb += e * Math.sin(d);
} else {
xb = a;
yb = b;
}
} else {
xb = a.mapScale / 2;
yb = a.mapScale / 2;
}
var b = vb - 1000 / a.serverUpdateRate;
var c;
for (var d = 0; d < za.length + ya.length; ++d) {
Ja = za[d] || ya[d - za.length];
if (Ja && Ja.visible) {
if (Ja.forcePos) {
Ja.x = Ja.x2;
Ja.y = Ja.y2;
Ja.dir = Ja.d2;
} else {
var e = Ja.t2 - Ja.t1;
var f = b - Ja.t1;
var g = f / e;
var i = 170;
Ja.dt += ub;
var j = Math.min(1.7, Ja.dt / i);
var c = Ja.x2 - Ja.x1;
Ja.x = Ja.x1 + c * j;
c = Ja.y2 - Ja.y1;
Ja.y = Ja.y1 + c * j;
Ja.dir = Math.lerpAngle(Ja.d2, Ja.d1, Math.min(1.2,
g));
}
}
}
let l = xb - rb / 2;
let m = yb - sb / 2;
if (a.snowBiomeTop - m <= 0 && a.mapScale - a.snowBiomeTop - m
>= sb) {
ab.fillStyle = "#b6db66";
ab.fillRect(0, 0, rb, sb);
} else if (a.mapScale - a.snowBiomeTop - m <= 0) {
ab.fillStyle = "#dbc666";
ab.fillRect(0, 0, rb, sb);
} else if (a.snowBiomeTop - m >= sb) {
ab.fillStyle = "#fff";
ab.fillRect(0, 0, rb, sb);
} else if (a.snowBiomeTop - m >= 0) {
ab.fillStyle = "#fff";
ab.fillRect(0, 0, rb, a.snowBiomeTop - m);
ab.fillStyle = "#b6db66";
ab.fillRect(0, a.snowBiomeTop - m, rb, sb - (a.snowBiomeTop
- m));
} else {
ab.fillStyle = "#b6db66";
ab.fillRect(0, 0, rb, a.mapScale - a.snowBiomeTop - m);
ab.fillStyle = "#dbc666";
ab.fillRect(0, a.mapScale - a.snowBiomeTop - m, rb, sb -
(a.mapScale - a.snowBiomeTop - m));
}
if (!Lb) {
Fb += Gb * a.waveSpeed * ub;
if (Fb >= a.waveMax) {
Fb = a.waveMax;
Gb = -1;
} else if (Fb <= 1) {
Fb = Gb = 1;
}
ab.globalAlpha = 1;
ab.fillStyle = "#dbc666";
$f(l, m, ab, a.riverPadding);
ab.fillStyle = "#91b2db";
$f(l, m, ab, (Fb - 1) * 250);
}
if (Ga) {
if (pd) {
ab.globalAlpha = 1;
ab.fillStyle = "#fc5553";
ab.font = "100px Hammersmith One";
ab.textBaseline = "middle";
ab.textAlign = "center";
ab.fillText("", pd.x - l, pd.y - m);
}
if (xd.active) {
if (xd.array && (xd.chaseNear ? La.length : true)) {
ab.lineWidth = Ga.scale / 5;
ab.globalAlpha = 1;
ab.strokeStyle = "red";
ab.beginPath();
xd.array.forEach((a, b) => {
let c = {
x: xd.scale / xd.grid * a.x,
y: xd.scale / xd.grid * a.y
};
let d = {
x: Ga.x2 - xd.scale / 2 + c.x - l,
y: Ga.y2 - xd.scale / 2 + c.y - m
};
if (b == 0) {
ab.moveTo(d.x, d.y);
} else {
ab.lineTo(d.x, d.y);
}
});
ab.stroke();
}
}
}
if (Vb && ie) {
ab.globalAlpha = 1;
ab.strokeStyle = Hb;
Gf(l, m, Math.random() * Math.PI * 2);
}
ab.globalAlpha = 1;
ab.strokeStyle = Hb;
o(-1, l, m);
ab.globalAlpha = 1;
ab.lineWidth = Jb;
Vf(0, l, m);
Hf(l, m, 0);
ab.globalAlpha = 1;
for (let a = 0; a < ya.length; ++a) {
Ja = ya[a];
if (Ja.active && Ja.visible) {
Ja.animate(ub);
ab.save();
ab.translate(Ja.x - l, Ja.y - m);
ab.rotate(Ja.dir + Ja.dirPlus - Math.PI / 2);
Zf(Ja, ab);
ab.restore();
}
}
o(0, l, m);
Vf(1, l, m);
o(1, l, m);
Hf(l, m, 1);
o(2, l, m);
o(3, l, m);
ab.fillStyle = "#000";
ab.globalAlpha = 0.2;
if (l <= 0) {
ab.fillRect(0, 0, -l, sb);
}
if (a.mapScale - l <= rb) {
let b = Math.max(0, -m);
ab.fillRect(a.mapScale - l, b, rb - (a.mapScale - l), sb -
b);
}
if (m <= 0) {
ab.fillRect(-l, 0, rb + l, -m);
}
if (a.mapScale - m <= sb) {
let b = Math.max(0, -l);
let c = 0;
if (a.mapScale - l <= rb) {
c = rb - (a.mapScale - l);
}
ab.fillRect(b, a.mapScale - m, rb - b - c, sb - (a.mapScale
- m));
}
let n = false;
ab.globalAlpha = 1;
ab.fillStyle = "rgba(0, 0, 70, 0.40)";
ab.fillRect(0, 0, rb, sb);
ab.strokeStyle = Ib;
ab.globalAlpha = 1;
for (let b = 0; b < za.length + ya.length; ++b) {
Ja = za[b] || ya[b - za.length];
if (Ja.visible) {
ab.strokeStyle = Ib;
let b = new Image();
b.src = "";
if (Ja.skinIndex != 10 || Ja == Ga || Ja.team &&
Ja.team == Ga.team) {
let b = (Ja.team ? "[" + Ja.team + "] " : "") +
(Ja.name || "") + (Ja.isPlayer ? " " : "");
if (b != "") {
ab.font = (Ja.nameScale || 30) + "px
Hammersmith One";
ab.fillStyle = "#fff";
ab.textBaseline = "middle";
ab.textAlign = "center";
ab.lineWidth = Ja.nameScale ? 11 : 8;
ab.lineJoin = "round";
ab.strokeText(b, Ja.x - l, Ja.y - m - Ja.scale
- a.nameY);
ab.fillText(b, Ja.x - l, Ja.y - m - Ja.scale -
a.nameY);
if (Ja.isLeader && sg.crown.isLoaded) {
let c = a.crownIconScale;
let d = Ja.x - l - c / 2 -
ab.measureText(b).width / 2 - a.crownPad;
ab.drawImage(sg.crown, d, Ja.y - m -
Ja.scale - a.nameY - c / 2 - 5, c, c);
}
if (Ja.iconIndex == 1 && sg.skull.isLoaded) {
let c = a.crownIconScale;
let d = Ja.x - l - c / 2 +
ab.measureText(b).width / 2 + a.crownPad;
ab.drawImage(sg.skull, d, Ja.y - m -
Ja.scale - a.nameY - c / 2 - 5, c, c);
}
if (Ja.isPlayer && md.wait && Oa == Ja &&
(Ja.backupNobull ? rg[1].isLoaded : rg[0].isLoaded) && La.length && !ga) {
let a = Ja.scale * 2.2;
ab.drawImage(Ja.backupNobull ? rg[1] :
rg[0], Ja.x - l - a / 2, Ja.y - m - a / 2, a, a);
}
}
if (Ja.health > 0) {
ab.fillStyle = Ib;
ab.roundRect(Ja.x - l - a.healthBarWidth -
a.healthBarPad, Ja.y - m + Ja.scale + a.nameY, a.healthBarWidth * 2 +
a.healthBarPad * 2, 17, 8);
ab.fill();
ab.fillStyle = Ja == Ga || Ja.team && Ja.team
== Ga.team ? "#8ecc51" : "#cc5151";
ab.roundRect(Ja.x - l - a.healthBarWidth, Ja.y
- m + Ja.scale + a.nameY + a.healthBarPad, a.healthBarWidth * 2 * (Ja.health /
Ja.maxHealth), 17 - a.healthBarPad * 2, 7);
ab.fill();
if (Ja.isPlayer) {
if (Ja == Ga) { }
ab.globalAlpha = 1;
ab.font = "20px Hammersmith One";
ab.fillStyle = "#fff";
ab.strokeStyle = Ib;
ab.textBaseline = "middle";
ab.textAlign = "center";
ab.lineWidth = 8;
ab.lineJoin = "round";
if (h("predictType").value == "pre2") {
ab.lineWidth = 3;
ab.strokeStyle = "#cc5151";
ab.globalAlpha = 1;
ab.beginPath();
let a = {
x: Ja.x2 - l,
y: Ja.y2 - m
};
ab.moveTo(Ja.x - l, Ja.y - m);
ab.lineTo(a.x, a.y);
ab.stroke();
} else if (h("predictType").value ==
"pre3") {
ab.lineWidth = 3;
ab.strokeStyle = "#cc5151";
ab.globalAlpha = 1;
ab.beginPath();
let a = {
x: Ja.x3 - l,
y: Ja.y3 - m
};
ab.moveTo(Ja.x - l, Ja.y - m);
ab.lineTo(a.x, a.y);
ab.stroke();
}
}
}
}
}
}
function o(a, b, c) {
let d;
let e;
let f;
Ca.forEach(g => {
Ja = g;
if (Ja.alive) {
e = Ja.x + Ja.xWiggle - b;
f = Ja.y + Ja.yWiggle - c;
if (a == 0) {
Ja.update(ub);
}
ab.globalAlpha = Ja.alpha;
if (Ja.layer == a && jg(e, f, Ja.scale +
(Ja.blocker || 0))) {
if (Ja.isItem) {
if ((Ja.dmg || Ja.trap) && !
Ja.isTeamObject(Ga)) {
d = hg(Ja);
} else {
d = eg(Ja);
}
ab.save();
ab.translate(e, f);
ab.rotate(Ja.dir);
if (!Ja.active) {
ab.scale(Ja.visScale / Ja.scale,
Ja.visScale / Ja.scale);
}
ab.drawImage(d, -(d.width / 2), -
(d.height / 2));
if (Ja.blocker) {
ab.strokeStyle = "#db6e6e";
ab.globalAlpha = 0.3;
ab.lineWidth = 6;
vf(0, 0, Ja.blocker, ab, false, true);
}
ab.restore();
} else {
d = cg(Ja);
ab.drawImage(d, e - d.width / 2, f -
d.height / 2);
}
}
}
});
if (a == 0) {
if (Wb.length) {
Wb.forEach(a => {
e = a.x - b;
f = a.y - c;
p(a, e, f);
});
}
}
}
function p(a, b, c) {
ig(a, ab, b, c);
}
function q(a, b, c) {
a.fillStyle = "rgb(255, 0, 0, 0.5)";
a.globalAlpha = 0.5;
a.beginPath();
a.stroke();
a.strokeStyle = "red";
a.arc(b, c, 40, 0, Math.PI * 2);
a.fill();
a.stroke();
a.strokeStyle = "red";
a.closePath();
a.globalAlpha = 0.5;
}
if (player.autoPush) {
ab.lineWidth = 5;
ab.globalAlpha = 1;
ab.beginPath();
ab.fillStyle = Ib;
ab.strokeStyle = "white";
ab.moveTo(Ga.x - l, Ga.y - m);
ab.lineTo(player.pushData.x2 - l, player.pushData.y2 - m);
ab.lineTo(player.pushData.x - l, player.pushData.y - m);
ab.stroke();
}
ab.globalAlpha = 1;
kd.update(ub, ab, l, m);
for (let a = 0; a < za.length; ++a) {
Ja = za[a];
if (Ja.visible) {
if (Ja.chatCountdown > 0) {
Ja.chatCountdown -= ub;
if (Ja.chatCountdown <= 0) {
Ja.chatCountdown = 0;
}
ab.font = "32px Hammersmith One";
let a = ab.measureText(Ja.chatMessage);
ab.textBaseline = "middle";
ab.textAlign = "center";
let b = Ja.x - l;
let c = Ja.y - Ja.scale - m - 90;
let d = 47;
let e = a.width + 17;
ab.fillStyle = "rgba(0,0,0,0.2)";
ab.roundRect(b - e / 2, c - d / 2, e, d, 6);
ab.fill();
ab.fillStyle = "#fff";
ab.fillText(Ja.chatMessage, b, c);
}
if (Ja.chat.count > 0) {
if (!ga) {
Ja.chat.count -= ub;
if (Ja.chat.count <= 0) {
Ja.chat.count = 0;
}
ab.font = "32px Hammersmith One";
let a = ab.measureText(Ja.chat.message);
ab.textBaseline = "middle";
ab.textAlign = "center";
let b = Ja.x - l;
let c = Ja.y - Ja.scale - m + 180;
let d = 47;
let e = a.width + 17;
ab.fillStyle = "rgba(0,0,0,0.2)";
ab.roundRect(b - e / 2, c - d / 2, e, d, 6);
ab.fill();
ab.fillStyle = "#ffffff99";
ab.fillText(Ja.chat.message, b, c);
} else {
Ja.chat.count = 0;
}
}
}
}
if (xa.length) {
xa.filter(a => a.active).forEach(a => {
if (!a.alive) {
if (a.alpha <= 1) {
a.alpha += ub / 250;
if (a.alpha >= 1) {
a.alpha = 1;
a.alive = true;
}
}
} else {
a.alpha -= ub / 5000;
if (a.alpha <= 0) {
a.alpha = 0;
a.active = false;
}
}
if (a.active) {
ab.font = "20px Hammersmith One";
let b = ab.measureText(a.chat);
ab.textBaseline = "middle";
ab.textAlign = "center";
let c = a.owner.x - l;
let d = a.owner.y - a.owner.scale - m - 90;
let e = 47;
let f = b.width + 17;
ab.globalAlpha = a.alpha;
ab.fillStyle = a.owner.isTeam(Ga) ?
"rgba(255,215,0,1)" : "#cc5151";
ab.strokeStyle = "rgb(25, 25, 25)";
ab.lineWidth = 5;
ab.fillStyle = "rgba(0,0,0,0.4)";
ab.strokeStyle = "rgba(0,0,0,0.0)";
ab.roundRect(c - f / 2, d - e / 2, f, e, 6);
ab.stroke();
ab.fill();
ab.fillStyle = "#fff";
ab.strokeStyle = "#000";
ab.strokeText(a.chat, c, d);
ab.fillText(a.chat, c, d);
a.y -= ub / 100;
}
});
}
}
ab.globalAlpha = 1;
pg(ub);
}
window.requestAnimFrame = function () {
return null;
};
window.rAF = function () {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function
(a) {
window.setTimeout(a, 1000 / 240);
};
}();
function xg() {
vb = performance.now();
ub = vb - wb;
wb = vb;
let a = performance.now();
let b = a - na.last;
if (b >= 1000) {
na.ltime = na.time * (1000 / b);
na.last = a;
na.time = 0;
}
na.time++;
h("pingFps").innerHTML = window.pingTime + "ms | Frames: " +
cd.round(na.ltime, 10);
h("packetStatus").innerHTML = ha;
wg();
rAF(xg);
}
Ef();
xg();
function yg(a) {
h("instaType").disabled = a;
h("antiBullType").disabled = a;
h("predictType").disabled = a;
h("visualType").disabled = a;
}
yg(ga);
let zg = {};
window.debug = function () {
player.waitHit = 0;
player.autoAim = false;
md.isTrue = false;
ld.inTrap = false;
dg = [];
gg = [];
bg = [];
};
window.wasdMode = function () {
ga = !ga;
yg(ga);
};
window.startGrind = function () {
if (x.autoGrind.enabled) {
for (let a = 0; a < Math.PI * 2; a += Math.PI / 2) {
Dc(Ga.getItemType(22), a);
}
}
};
let Ag = [];
let Bg = 0;
window.connectFillBots = function () {
g = [];
Bg = 0;
for (let a = 0; a < Ag.length; a++) {
let b = new WebSocket("wss://" + Ag[a] + ".glitch.me");
b.binaryType = "arraybuffer";
b.onopen = function () {
b.ssend = function (a) {
let c = Array.prototype.slice.call(arguments, 1);
let d = window.msgpack.encode([a, c]);
b.send(d);
};
for (let a = 0; a < 4; a++) {
window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then(function (a) {
b.ssend("bots", ea.url.split("&")[0] + "&token=" +
encodeURIComponent(a), Bg);
g.push([b]);
Bg++;
});
}
};
b.onmessage = function (a) {
let b = new Uint8Array(a.data);
let c = window.msgpack.decode(b);
let d = c[0];
b = c[1];
};
}
};
window.destroyFillBots = function () {
g.forEach(a => {
a[0].close();
});
g = [];
};
window.tryConnectBots = function () {
for (let a = 0; a < (of.length < 3 ? 3 : 4); a++) {
window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then(function (a) {
tf(a);
});
}
};
window.destroyBots = function () {
of.forEach(a => {
a.closeSocket = true;
});
of = [];
};
window.resBuild = function () {
if (Ca.length) {
Ca.forEach(a => {
a.breakObj = false;
});
Fa = [];
}
};
window.toggleBotsCircle = function () {
Ga.circle = !Ga.circle;
};
window.toggleVisual = function () {
a.anotherVisual = !a.anotherVisual;
Ca.forEach(a => {
if (a.active) {
a.dir = a.lastDir;
}
});
};
window.prepareUI = function (b) {
Ed();
function c() {
hb.value = "";
ib.style.display = "none";
}
cd.removeAllChildren(jb);
for (let a = 0; a < dd.weapons.length + dd.list.length; ++a) {
(function (a) {
cd.generateElement({
id: "actionBarItem" + a,
class: "actionBarItem",
style: "display:none",
onmouseout: function () {
Dd();
},
parent: jb
});
})(a);
}
for (let c = 0; c < dd.list.length + dd.weapons.length; ++c) {
(function (c) {
let d = document.createElement("canvas");
d.width = d.height = 66;
let e = d.getContext("2d");
e.translate(d.width / 2, d.height / 2);
e.imageSmoothingEnabled = false;
e.webkitImageSmoothingEnabled = false;
e.mozImageSmoothingEnabled = false;
if (dd.weapons[c]) {
e.rotate(Math.PI / 4 + Math.PI);
let f = new Image();
Uf[dd.weapons[c].src] = f;
f.onload = function () {
this.isLoaded = true;
let b = 1 / (this.height / this.width);
let f = dd.weapons[c].iPad || 1;
e.drawImage(this, -(d.width * f * a.iconPad * b) /
2, -(d.height * f * a.iconPad) / 2, d.width * f * b * a.iconPad, d.height * f *
a.iconPad);
e.fillStyle = "rgba(0, 0, 70, 0.1)";
e.globalCompositeOperation = "source-atop";
e.fillRect(-d.width / 2, -d.height / 2, d.width,
d.height);
h("actionBarItem" + c).style.backgroundImage =
"url(" + d.toDataURL() + ")";
};
f.src = "./../img/weapons/" + dd.weapons[c].src +
".png";
let g = h("actionBarItem" + c);
g.onmouseover = cd.checkTrusted(function () {
Dd(dd.weapons[c], true);
});
g.onclick = cd.checkTrusted(function () {
weapon(b.weapons[dd.weapons[c].type]);
});
cd.hookTouchEvents(g);
} else {
let f = eg(dd.list[c - dd.weapons.length], true);
let g = Math.min(d.width - a.iconPadding, f.width);
e.globalAlpha = 1;
e.drawImage(f, -g / 2, -g / 2, g, g);
e.fillStyle = "rgba(0, 0, 70, 0.1)";
e.globalCompositeOperation = "source-atop";
e.fillRect(-g / 2, -g / 2, g, g);
h("actionBarItem" + c).style.backgroundImage = "url(" +
d.toDataURL() + ")";
let i = h("actionBarItem" + c);
i.onmouseover = cd.checkTrusted(function () {
Dd(dd.list[c - dd.weapons.length]);
});
i.onclick = cd.checkTrusted(function () {
pc(b.items[b.getItemType(c - dd.weapons.length)]);
});
cd.hookTouchEvents(i);
}
})(c);
}
};
window.profineTest = function (b) {
if (b) {
let c = "unknown";
let d = b + "";
d = d.slice(0, a.maxNameLength);
d = d.replace(/[^\w:\(\)\/? -]+/gmi, " ");
d = d.replace(/[^\x00-\x7F]/g, " ");
d = d.trim();
let e = {
list: [],
exclude: [],
placeHolder: "*",
regex: {},
replaceRegex: {}
};
let f = false;
let g = d.toLowerCase().replace(/\s/g, "").replace(/1/g,
"i").replace(/0/g, "o").replace(/5/g, "s");
for (let a of e.list) {
if (g.indexOf(a) != -1) {
f = true;
break;
}
}
if (d.length > 0 && !f) {
c = d;
}
return c;
}
};
window.toggleNight();
},
webgl_test: () => {
return;
let a = document.createElement("canvas");
a.id = "WEBGL";
a.width = a.height = 300;
a.style = "\n position: relative;\n bottom: 70%;\
n left: 70%;\n pointer-events: none;\n ";
let b = document.createElement("div");
b.id = "faku";
b.width = b.height = 300;
b.style = "\n position: relative;\n bottom: 70%;\
n left: 70%;\n pointer-events: none;\n font-size:
20px;\n ";
b.innerHTML = "Webgl Test Rendering";
let c = a.getContext("webgl");
if (!c) {
alert("urbad");
return;
}
document.body.append(a);
document.body.append(b);
d(c);
c.clearColor(0, 0, 0, 0.2);
c.clear(c.COLOR_BUFFER_BIT);
let e = c.createBuffer();
c.bindBuffer(c.ARRAY_BUFFER, e);
function f(a, b, d, e) {
let f = c.createShader(c.VERTEX_SHADER);
c.shaderSource(f, a);
c.compileShader(f);
c.getShaderParameter(f, c.COMPILE_STATUS);
let g = c.createShader(c.FRAGMENT_SHADER);
c.shaderSource(g, b);
c.compileShader(g);
c.getShaderParameter(g, c.COMPILE_STATUS);
let h = c.createProgram();
c.attachShader(h, f);
c.attachShader(h, g);
c.linkProgram(h);
c.getProgramParameter(h, c.LINK_STATUS);
c.useProgram(h);
let i = c.getAttribLocation(h, "vertex");
c.enableVertexAttribArray(i);
c.vertexAttribPointer(i, 2, c.FLOAT, false, 0, 0);
let j = d.length / 2;
c.bufferData(c.ARRAY_BUFFER, new Float32Array(d), c.DYNAMIC_DRAW);
c.drawArrays(e, 0, j);
}
function g(a) {
return a.slice(1).match(/.{1,2}/g).map(a => parseInt(a, 16));
}
function h(a, b, c) {
return [a / 255, b / 255, c / 255].join(", ");
}
let i = 50;
for (let a = 0; a < i; a++) {
let b = Math.PI * (a / (i / 2));
f("\n precision mediump float;\n
attribute vec2 vertex;\n void main(void) {\n
gl_Position = vec4(vertex, 0, 1);\n }\n ", "\n
precision mediump float;\n void main(void) {\n
gl_FragColor = vec4(" + h(...g("#cc5151")) + ", 1);\n }\n
", [0 + Math.cos(b) * 0.5, 0 + Math.sin(b) * 0.5, 0, 0], c.LINE_LOOP);
}
}
};
if (b) {
for (let a in b) {
let c = b[a];
if (typeof c === "function") {
c();
}
}
window.enableHack = function () {
if (!c) {
c = true;
b.main();
}
};
}
})(1);