AppleScript UserScript for Moomoo.io
AppleScript UserScript for Moomoo.io
// @name AppleScript
// @author $0PH!4
// @description Mystery of me
// @version Beta
// @match *://*.[Link]/*
// @run-at document_idle
// @grant none
// ==/UserScript==
var RainbowCycle = 0;
var cycle = 0;
var HPBarColor = "black";
var NameBarColor = "black";
setInterval(() => {
if (RainbowCycle > 359) {
// If Rainbow Reached Maximum
RainbowCycle = 0; // Restart ();
} else {
/*for(let i = 0; i< 30; i++)*/ RainbowCycle++;
//RainbowCycle++;
HPBarColor = `hsla(${RainbowCycle}, 100%, 50%, 30)`;
}
}, 20);
//[Link]
function getEl(id) {
return [Link](id);
}
function r(t) {
if (o[t]) return o[t].exports;
var n = o[t] = {
i: t,
l: !1,
exports: {}
};
return e[t].call([Link], n, [Link], r), n.l = !0, [Link]
}
return r.m = e, r.c = o, r.d = function(t, n, e) {
r.o(t, n) || [Link](t, n, {
enumerable: !0,
get: e
})
}, r.r = function(t) {
"undefined" != typeof Symbol && [Link] &&
[Link](t, [Link], {
value: "Module"
}), [Link](t, "__esModule", {
value: !0
})
}, r.t = function(n, t) {
if (1 & t && (n = r(n)), 8 & t) return n;
if (4 & t && "object" == typeof n && n && n.__esModule) return n;
var e = [Link](null);
if (r.r(e), [Link](e, "default", {
enumerable: !0,
value: n
}), 2 & t && "string" != typeof n)
for (var o in n) r.d(e, o, function(t) {
return n[t]
}.bind(null, o));
return e
}, r.n = function(t) {
var n = t && t.__esModule ? function() {
return [Link]
} : function() {
return t
};
return r.d(n, "a", n), n
}, r.o = function(t, n) {
return [Link](t, n)
}, r.p = "/bin/", r(r.s = 0)
}([function(t, n, e) {
var P = {},
M = e(1),
_ = e(2),
A = e(3);
[Link] = P;
var E = 1;
[Link] = function() {
var c, i, f, s = 1.4,
p = !1,
u = {},
o = {},
r = {},
l = {},
a = !0,
h = {},
d = [],
y = Number.MAX_VALUE,
v = !1;
[Link] = function(t) {
t instanceof Array ? f = t : !isNaN(parseFloat(t)) && isFinite(t) && (f
= [t])
}, [Link] = function() {
p = !0
}, [Link] = function() {
p = !1
}, [Link] = function() {
v = !0
}, [Link] = function() {
v = !1
}, [Link] = function(t) {
c = t;
for (var n = 0; n < [Link]; n++)
for (var e = 0; e < c[0].length; e++) o[c[n][e]] || (o[c[n][e]] =
1)
}, [Link] = function(t, n) {
o[t] = n
}, [Link] = function(t, n, e) {
void 0 === r[n] && (r[n] = {}), r[n][t] = e
}, [Link] = function(t, n) {
void 0 !== r[n] && delete r[n][t]
}, [Link] = function() {
r = {}
}, [Link] = function(t, n, e) {
void 0 === l[n] && (l[n] = {}), l[n][t] = e
}, [Link] = function() {
l = {}
}, [Link] = function(t) {
y = t
}, [Link] = function(t, n) {
void 0 === u[n] && (u[n] = {}), u[n][t] = 1
}, [Link] = function(t, n) {
void 0 !== u[n] && delete u[n][t]
}, [Link] = function() {
a = !0
}, [Link] = function() {
a = !1
}, [Link] = function() {
u = {}
}, [Link] = function(t, n, e, o, r) {
function i(t) {
p ? r(t) : setTimeout(function() {
r(t)
})
}
if (void 0 === f) throw new Error("You can't set a path without first
calling setAcceptableTiles() on EasyStar.");
if (void 0 === c) throw new Error("You can't set a path without first
calling setGrid() on EasyStar.");
if (t < 0 || n < 0 || e < 0 || o < 0 || t > c[0].length - 1 || n >
[Link] - 1 || e > c[0].length - 1 || o > [Link] - 1) throw new Error("Your
start or end point is outside the scope of your grid.");
if (t !== e || n !== o) {
for (var s = c[o][e], u = !1, l = 0; l < [Link]; l++)
if (s === f[l]) {
u = !0;
break
} if (!1 !== u) {
var a = new M;
[Link] = new A(function(t, n) {
return [Link]() - [Link]()
}), [Link] = !1, [Link] = {}, [Link] =
t, [Link] = n, [Link] = e, [Link] = o, [Link] = i, [Link](O(a,
[Link], [Link], null, 1));
o = E++;
return h[o] = a, [Link](o), o
}
i(null)
} else i([])
}, [Link] = function(t) {
return t in h && (delete h[t], !0)
}, [Link] = function() {
if (0 !== [Link] && void 0 !== c && void 0 !== f)
for (i = 0; i < y; i++) {
if (0 === [Link]) return;
p && (i = 0);
var t = d[0],
n = h[t];
if (void 0 !== n)
if (0 !== [Link]()) {
var e = [Link]();
if ([Link] !== e.x || [Link] !== e.y)([Link] = 0) < e.y
&& T(n, e, 0, -1, +b(e.x, e.y - 1)), e.x < c[0].length - 1 && T(n, e, 1, 0, +b(e.x
+ 1, e.y)), e.y < [Link] - 1 && T(n, e, 0, 1, +b(e.x, e.y + 1)), 0 < e.x && T(n,
e, -1, 0, +b(e.x - 1, e.y)), v && (0 < e.x && 0 < e.y && (a || g(c, f, e.x, e.y -
1, e) && g(c, f, e.x - 1, e.y, e)) && T(n, e, -1, -1, s * b(e.x - 1, e.y - 1)), e.x
< c[0].length - 1 && e.y < [Link] - 1 && (a || g(c, f, e.x, e.y + 1, e) && g(c,
f, e.x + 1, e.y, e)) && T(n, e, 1, 1, s * b(e.x + 1, e.y + 1)), e.x < c[0].length -
1 && 0 < e.y && (a || g(c, f, e.x, e.y - 1, e) && g(c, f, e.x + 1, e.y, e)) && T(n,
e, 1, -1, s * b(e.x + 1, e.y - 1)), 0 < e.x && e.y < [Link] - 1 && (a || g(c, f,
e.x, e.y + 1, e) && g(c, f, e.x - 1, e.y, e)) && T(n, e, -1, 1, s * b(e.x - 1, e.y
+ 1)));
else {
var o = [];
[Link]({
x: e.x,
y: e.y
});
for (var r = [Link]; null != r;) [Link]({
x: r.x,
y: r.y
}), r = [Link];
[Link](), [Link](o), delete h[t], [Link]()
}
} else [Link](null), delete h[t], [Link]();
else [Link]()
}
};
var T = function(t, n, e, o, r) {
e = n.x + e, o = n.y + o;
void 0 !== u[o] && void 0 !== u[o][e] || !g(c, f, e, o, n) || (void 0
=== (o = O(t, e, o, n, r)).list ? ([Link] = 1, [Link](o)) : [Link] +
r < [Link] && ([Link] = [Link] + r, [Link] = n,
[Link](o)))
},
g = function(t, n, e, o, r) {
var i = l[o] && l[o][e];
if (i) {
var s = x(r.x - e, r.y - o);
if (! function() {
for (var t = 0; t < [Link]; t++)
if (i[t] === s) return !0;
return !1
}()) return !1
}
for (var u = 0; u < [Link]; u++)
if (t[o][e] === n[u]) return !0;
return !1
},
x = function(t, n) {
if (0 === t && -1 === n) return [Link];
if (1 === t && -1 === n) return P.TOP_RIGHT;
if (1 === t && 0 === n) return [Link];
if (1 === t && 1 === n) return P.BOTTOM_RIGHT;
if (0 === t && 1 === n) return [Link];
if (-1 === t && 1 === n) return P.BOTTOM_LEFT;
if (-1 === t && 0 === n) return [Link];
if (-1 === t && -1 === n) return P.TOP_LEFT;
throw new Error("These differences are not valid: " + t + ", " + n)
},
b = function(t, n) {
return r[n] && r[n][t] || o[c[n][t]]
},
O = function(t, n, e, o, r) {
if (void 0 !== [Link][e]) {
if (void 0 !== [Link][e][n]) return [Link][e][n]
} else [Link][e] = {};
var i = m(n, e, [Link], [Link]),
r = null !== o ? [Link] + r : 0,
i = new _(o, n, e, r, i);
return [Link][e][n] = i
},
m = function(t, n, e, o) {
var r, i;
return v ? (r = [Link](t - e)) < (i = [Link](n - o)) ? s * r +
i : s * i + r : (r = [Link](t - e)) + (i = [Link](n - o))
}
}, [Link] = "TOP", P.TOP_RIGHT = "TOP_RIGHT", [Link] = "RIGHT",
P.BOTTOM_RIGHT = "BOTTOM_RIGHT", [Link] = "BOTTOM", P.BOTTOM_LEFT =
"BOTTOM_LEFT", [Link] = "LEFT", P.TOP_LEFT = "TOP_LEFT"
}, function(t, n) {
[Link] = function() {
[Link] = {}, [Link], [Link], [Link],
[Link], [Link], [Link] = {}, [Link]
}
}, function(t, n) {
[Link] = function(t, n, e, o, r) {
[Link] = t, this.x = n, this.y = e, [Link] = o,
[Link] = r, [Link] = function() {
return [Link] + [Link]
}
}
}, function(t, n, e) {
[Link] = e(4)
}, function(u, T, t) {
var g, x;
(function() {
var t, p, l, h, d, n, a, e, y, v, o, r, i, c, f;
function s(t) {
[Link] = null != t ? t : p, [Link] = []
}
l = [Link], v = [Link], p = function(t, n) {
return t < n ? -1 : n < t ? 1 : 0
}, y = function(t, n, e, o, r) {
var i;
if (null == e && (e = 0), null == r && (r = p), e < 0) throw new
Error("lo must be non-negative");
for (null == o && (o = [Link]); e < o;) r(n, t[i = l((e + o) / 2)]) <
0 ? o = i : e = i + 1;
return [].[Link](t, [e, e - e].concat(n)), n
}, n = function(t, n, e) {
return null == e && (e = p), [Link](n), c(t, 0, [Link] - 1, e)
}, d = function(t, n) {
var e, o;
return null == n && (n = p), e = [Link](), [Link] ? (o = t[0], t[0] =
e, f(t, 0, n)) : o = e, o
}, e = function(t, n, e) {
var o;
return null == e && (e = p), o = t[0], t[0] = n, f(t, 0, e), o
}, a = function(t, n, e) {
var o;
return null == e && (e = p), [Link] && e(t[0], n) < 0 && (n = (o =
[t[0], n])[0], t[0] = o[1], f(t, 0, e)), n
}, h = function(e, t) {
var n, o, r, i, s, u;
for (null == t && (t = p), s = [], o = 0, r = (i = function() {
u = [];
for (var t = 0, n = l([Link] / 2); 0 <= n ? t < n : n < t; 0 <= n
? t++ : t--) [Link](t);
return u
}.apply(this).reverse()).length; o < r; o++) n = i[o], [Link](f(e, n,
t));
return s
}, i = function(t, n, e) {
if (null == e && (e = p), -1 !== (n = [Link](n))) return c(t, 0, n,
e), f(t, n, e)
}, o = function(t, n, e) {
var o, r, i, s, u;
if (null == e && (e = p), !(r = [Link](0, n)).length) return r;
for (h(r, e), i = 0, s = (u = [Link](n)).length; i < s; i++) o = u[i],
a(r, o, e);
return [Link](e).reverse()
}, r = function(t, n, e) {
var o, r, i, s, u, l, a, c, f;
if (null == e && (e = p), 10 * n <= [Link]) {
if (!(i = [Link](0, n).sort(e)).length) return i;
for (r = i[[Link] - 1], s = 0, l = (a = [Link](n)).length; s <
l; s++) e(o = a[s], r) < 0 && (y(i, o, 0, null, e), [Link](), r = i[[Link] - 1]);
return i
}
for (h(t, e), f = [], u = 0, c = v(n, [Link]); 0 <= c ? u < c : c <
u; 0 <= c ? ++u : --u) [Link](d(t, e));
return f
}, c = function(t, n, e, o) {
var r, i, s;
for (null == o && (o = p), r = t[e]; n < e && o(r, i = t[s = e - 1 >>
1]) < 0;) t[e] = i, e = s;
return t[e] = r
}, f = function(t, n, e) {
var o, r, i, s, u;
for (null == e && (e = p), r = [Link], i = t[u = n], o = 2 * n + 1; o
< r;)(s = o + 1) < r && !(e(t[o], t[s]) < 0) && (o = s), t[n] = t[o], o = 2 * (n =
o) + 1;
return t[n] = i, c(t, u, n, e)
}, [Link] = n, [Link] = d, [Link] = e, [Link] = a, [Link] = h,
[Link] = i, [Link] = o, [Link] = r, [Link] = function(t) {
return n([Link], t, [Link])
}, [Link] = function() {
return d([Link], [Link])
}, [Link] = function() {
return [Link][0]
}, [Link] = function(t) {
return -1 !== [Link](t)
}, [Link] = function(t) {
return e([Link], t, [Link])
}, [Link] = function(t) {
return a([Link], t, [Link])
}, [Link] = function() {
return h([Link], [Link])
}, [Link] = function(t) {
return i([Link], t, [Link])
}, [Link] = function() {
return [Link] = []
}, [Link] = function() {
return 0 === [Link]
}, [Link] = function() {
return [Link]
}, [Link] = function() {
var t = new s;
return [Link] = [Link](0), t
}, [Link] = function() {
return [Link](0)
}, [Link] = [Link], [Link] =
[Link], [Link] = [Link], [Link] =
[Link], [Link] = [Link], t = s, g = [], void 0
=== (x = "function" == typeof(x = function() {
return t
}) ? [Link](T, g) : x) || ([Link] = x)
}).call(this)
}]);
let easystar = new [Link]();
! function(run) {
if (!run) return;
let codes = {
setup: () => {
"use strict";
if (!useHack) {
return;
}
"use strict";
[Link] = function() {
return false;
};
// CLIENT:
[Link] = 0; // Aim Packet Send Rate
[Link] = 9;
// UI:
[Link] = 0;
// CHECK IN SANDBOX:
[Link] = [Link] == "[Link]";
// CUSTOMIZATION:
[Link] = ["#bf8f54", "#cbb091", "#896c4b",
"#fadadc", "#ececec", "#c37373", "#4c4c4c",
"#ecaff7", "#738cc3",
"#8bc373", "#91b2db"
];
[Link] = [{
id: 0,
src: "",
xp: 0,
val: 1,
}, {
id: 1,
src: "_g",
xp: 3000,
val: 1.1,
}, {
id: 2,
src: "_d",
xp: 7000,
val: 1.18,
}, {
id: 3,
src: "_r",
poison: true,
xp: 12000,
val: 1.18,
}, {
id: 4,
src: "_e",
poison: true,
heal: true,
xp: 24000,
val: 1.18,
}];
// VISUAL:
[Link] = true;
[Link] = false;
[Link] = false;
function waitTime(timeout) {
return new Promise((done) => {
setTimeout(() => {
done();
}, timeout);
});
}
// STORAGE:
let canStore;
if (typeof(Storage) !== "undefined") {
canStore = true;
}
function deleteVal(name) {
if (canStore)
[Link](name);
}
function getSavedVal(name) {
if (canStore)
return [Link](name);
return null;
}
// CONFIGS:
let gC = function(a, b) {
try {
let res = [Link](getSavedVal(a));
if (typeof res === "object") {
return b;
} else {
return res;
}
} catch (e) {
alert("dieskid");
return b;
}
};
function setCommands() {
return {
"help": {
desc: "Show Commands",
action: function(message) {
for (let cmds in commands) {
addMenuChText("/" + cmds, commands[cmds].desc,
"lime", 1);
}
}
},
"clear": {
desc: "Clear Chats",
action: function(message) {
resetMenuChText();
}
},
"debug": {
desc: "Debug Mod For Development",
action: function(message) {
addDeadPlayer(player);
addMenuChText("Debug", "Done", "#99ee99", 1);
}
},
"play": {
desc: "Play Music ( /play [link] )",
action: function(message) {
let link = [Link](" ");
if (link[1]) {
let audio = new Audio(link[1]);
[Link]();
} else {
addMenuChText("Warn", "Enter Link ( /play
[link] )", "#99ee99", 1);
}
}
},
"bye": {
desc: "Leave Game",
action: function(message) {
[Link]();
}
},
};
}
function setConfigs() {
return {
killChat: false,
autoBuy: true,
autoBuyEquip: true,
autoPush: true,
revTick: true,
spikeTick: true,
predictTick: true,
autoPlace: true,
autoReplace: true,
antiTrap: true,
slowOT: false,
attackDir: true,
ae86_Remake: false,
ae86: false,
tracers: false,
fpsBoost: true,
autoRespawn: false
};
}
let commands = setCommands();
let configs = setConfigs();
[Link] = function() {
for (let cF in configs) {
deleteVal(cF, configs[cF]);
}
};
// MENU FUNCTIONS:
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
// PAGE 1:
[Link] = function() {};
// PAGE 3:
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
[Link] = function() {};
// SOME FUNCTIONS:
[Link] = function() {};
[Link] = function() {};
class deadfuturechickenmodrevival {
constructor(flarez, lore) {
[Link] = false;
[Link] = flarez + lore;
[Link] = "ae86";
[Link] = 0;
[Link] = undefined;
[Link] = function() {
[Link] !== "ae86" ? [Link]++ : [Link]--;
if ([Link] >= 1) return "bl4cky";
return "noting for you";
};
this.x2 = 0;
this.y2 = 0;
[Link] = "Imagine playing this badass game XDDDDD";
[Link] = function(tmpObj) {
this.x2 = tmpObj.x;
this.y2 = tmpObj.y;
[Link] = [Link] + " ur so bad XDDDD";
};
[Link] = function(cmd) {
cmd == "rv3link" && [Link]("[Link]
cmd == "woah" &&
[Link]("[Link]
return cmd;
};
[Link] = "11yearold";
[Link] = "69yearold";
[Link] = function(tmpObj) {
let ratio = setInterval(() => {
this.x2 = tmpObj.x + 20;
this.y2 = tmpObj.y - 20;
[Link] = "UR SO BAD LOL";
if ([Link] == "ae86") {
[Link] = "omg ae86 go run";
setTimeout(() => {
[Link] = false;
clearInterval(ratio);
}, 1000);
}
}, 1234);
};
this.AntiChickenModV69420 = function(tmpObj) {
return "!c!dc user " + [Link];
};
}
};
class HtmlAction {
constructor(element) {
[Link] = element;
};
add(code) {
if (![Link]) return undefined;
[Link] += code;
};
newLine(amount) {
let result = `<br>`;
if (amount > 0) {
result = ``;
for (let i = 0; i < amount; i++) {
result += `<br>`;
}
}
[Link](result);
};
checkBox(setting) {
let newCheck = `<input type = "checkbox"`;
[Link] && (newCheck += ` id = ${[Link]}`);
[Link] && (newCheck += ` style = $
{[Link](" ", "")}`);
[Link] && (newCheck += ` class = ${[Link]}`);
[Link] && (newCheck += ` checked`);
[Link] && (newCheck += ` onclick = $
{[Link]}`);
newCheck += `>`;
[Link](newCheck);
};
text(setting) {
let newText = `<input type = "text"`;
[Link] && (newText += ` id = ${[Link]}`);
[Link] && (newText += ` style = $
{[Link](" ", "")}`);
[Link] && (newText += ` class = ${[Link]}`);
[Link] && (newText += ` size = ${[Link]}`);
[Link] && (newText += ` maxLength = $
{[Link]}`);
[Link] && (newText += ` value = ${[Link]}`);
[Link] && (newText += ` placeHolder = $
{[Link](" ", " ")}`);
newText += `>`;
[Link](newText);
};
select(setting) {
let newSelect = `<select`;
[Link] && (newSelect += ` id = ${[Link]}`);
[Link] && (newSelect += ` style = $
{[Link](" ", "")}`);
[Link] && (newSelect += ` class = ${[Link]}`);
newSelect += `>`;
for (let options in [Link]) {
newSelect += `<option value = $
{[Link][options].id}`
[Link][options].selected && (newSelect += `
selected`);
newSelect += `>${options}</option>`;
}
newSelect += `</select>`;
[Link](newSelect);
};
button(setting) {
let newButton = `<button`;
[Link] && (newButton += ` id = ${[Link]}`);
[Link] && (newButton += ` style = $
{[Link](" ", "")}`);
[Link] && (newButton += ` class = ${[Link]}`);
[Link] && (newButton += ` onclick = $
{[Link]}`);
newButton += `>`;
[Link] && (newButton += [Link]);
newButton += `</button>`;
[Link](newButton);
};
selectMenu(setting) {
let newSelect = `<select`;
if (![Link]) {
alert("please put id skid");
return;
}
window[[Link] + "Func"] = function() {};
[Link] && (newSelect += ` id = ${[Link]}`);
[Link] && (newSelect += ` style = $
{[Link](" ", "")}`);
[Link] && (newSelect += ` class = ${[Link]}`);
newSelect += ` onchange = window.${[Link] + "Func"}()`;
newSelect += `>`;
let last;
let i = 0;
for (let options in [Link]) {
newSelect += `<option value = ${"option_" + options} id = $
{"O_" + options}`;
[Link][options] && (newSelect += ` checked`);
newSelect += ` style = "color: ${[Link][options] ?
"#000" : "#fff"}; background: ${[Link][options] ? "#8ecc51" : "#cc5151"};">$
{options}</option>`;
i++;
}
newSelect += `</select>`;
[Link](newSelect);
i = 0;
for (let options in [Link]) {
window[options + "Func"] = function() {
[Link][options] = getEl("check_" +
options).checked ? true : false;
saveVal(options, [Link][options]);
getEl("O_" + options).[Link] =
[Link][options] ? "#000" : "#fff";
getEl("O_" + options).[Link] =
[Link][options] ? "#8ecc51" : "#cc5151";
//getEl([Link]).[Link] = [Link][options]
? "#8ecc51" : "#cc5151";
};
[Link]({
id: "check_" + options,
style: `display: ${i == 0 ? "inline-block" : "none"};`,
class: "checkB",
onclick: `window.${options + "Func"}()`,
checked: [Link][options]
});
i++;
}
//getEl([Link]).[Link] =
[Link][[Link]("_")[1]] ? "#8ecc51" : "#fff";
};
};
};
class Html {
constructor() {
[Link] = null;
[Link] = null;
[Link] = null;
[Link] = function(setting, func) {
};
[Link] = function(setting, func) {
};
};
set(id) {
[Link] = getEl(id);
[Link] = new HtmlAction([Link]);
};
resetHTML(text) {
if (text) {
[Link] = ``;
} else {
[Link] = ``;
}
};
setStyle(style) {
[Link] = style;
};
setCSS(style) {
[Link](`<style>` + style + `</style>`);
};
};
},
'Camera 2': {
id: 'Cam2',
},
'Camera 3': {
id: 'Cam3',
}
}
});
[Link]();
[Link](`AntiBull Type: `);
[Link]({
id: "antiBullType",
class: "Cselect",
option: {
"Disable AntiBull": {
id: "noab",
selected: true
},
"When Reloaded": {
id: "abreload",
},
"Primary Reloaded": {
id: "abalway"
}
}
});
[Link]();
[Link](`Backup Nobull Insta: `);
[Link]({
id: "backupNobull",
class: "checkB",
checked: true
});
[Link]();
[Link](`Turret Gear Combat Assistance: `);
[Link]({
id: "turretCombat",
class: "checkB"
});
[Link]();
[Link](`Safe AntiSpikeTick: `);
[Link]({
id: "safeAntiSpikeTick",
class: "checkB",
checked: true
});
[Link]();
});
[Link]({
id: "menuOther",
class: "menuC",
appendID: "menuHeadLine"
}, (html) => {
[Link]({
class: "menuB",
innerHTML: "Connect Bots",
onclick: "[Link]()"
});
[Link]({
class: "menuB",
innerHTML: "Disconnect Bots",
onclick: "[Link]()"
});
[Link]();
[Link]({
class: "menuB",
innerHTML: "Connect FBots",
onclick: "[Link]()"
});
[Link]({
class: "menuB",
innerHTML: "Disconnect FBots",
onclick: "[Link]()"
});
[Link]();
[Link]({
class: "menuB",
innerHTML: "Reset Break Objects",
onclick: "[Link]()"
});
[Link]();
[Link](`Break Objects Range: `);
[Link]({
id: "breakRange",
class: "customText",
value: "700",
size: "3em",
maxLength: "4"
});
[Link]();
[Link](`Predict Movement Type: `);
[Link]({
id: "predictType",
class: "Cselect",
option: {
"Disable Render": {
id: "disableRender",
selected: true
},
"X/Y and 2": {
id: "pre2",
},
"X/Y and 3": {
id: "pre3"
}
}
});
[Link]();
[Link](`Render Placers: `);
[Link]({
id: "placeVis",
class: "checkB",
checked: true
});
[Link]();
[Link](`Visuals: `);
[Link]({
id: "visualType",
class: "Cselect",
option: {
"Old Shit": {
id: "ueh1",
},
"New shit": {
id: "ueh2",
selected: true
},
}
});
[Link](2);
[Link]({
class: "menuB",
innerHTML: "Toggle Fbots Circle",
onclick: "[Link]()"
});
[Link]();
[Link](`Circle Rad: `);
[Link]({
id: "circleRad",
class: "customText",
value: "200",
size: "3em",
maxLength: "4"
});
[Link]();
[Link](`Rad Speed: `);
[Link]({
id: "radSpeed",
class: "customText",
value: "0.1",
size: "2em",
maxLength: "3"
});
[Link](2);
[Link](`Cross World: `);
[Link]({
id: "funni",
class: "checkB"
});
[Link]();
[Link]({
class: "menuB",
innerHTML: "Toggle Another Visual",
onclick: "[Link]()"
});
[Link]();
});
});
[Link] = "";
[Link]("focus", () => {
menuCBFocus = true;
});
[Link]("blur", () => {
menuCBFocus = false;
});
[Link]({
id: "menuChDisp" + menuChCounts,
style: `color: ${color}`,
appendID: "mChMain"
}, (html) => {
[Link](text);
});
[Link] = [Link];
menuChCounts++;
}
function resetMenuChText() {
[Link] = ``;
menuChCounts = 0;
addMenuChText(null, "Chat '/help' for a list of chat commands.",
"white", 1)
}
resetMenuChText();
let menuIndex = 0;
let menus = ["menuMain", "menuConfig", "menuOther"];
[Link] = function() {
getEl(menus[menuIndex % [Link]]).[Link] = "none";
menuIndex++;
getEl(menus[menuIndex % [Link]]).[Link] = "block";
};
/*function modLog() {
let logs = [];
for (let i = 0; i < [Link]; i++) {
[Link](arguments[i]);
}
getEl("modLog").innerHTML = logs;
}*/
let WS = undefined;
let socketID = undefined;
[Link] = [Link];
[Link] = function(message) {
if (!WS) {
WS = this;
[Link]("message", function(msg) {
getMessage(msg);
});
[Link]("close", (event) => {
if ([Link] == 4001) {
[Link]();
}
});
}
if (WS == this) {
dontSend = false;
// SEND MESSAGE:
if (type == "6") {
if (data[0]) {
// ANTI PROFANITY:
let profanity = ["cunt", "whore", "fuck", "shit",
"faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum",
"sex", "tits", "penis", "clit", "pussy", "meatcurtain", "jizz", "prune", "douche",
"wanker", "damn", "bitch", "dick", "fag", "bastard", ];
let tmpString;
[Link]((profany) => {
if (data[0].indexOf(profany) > -1) {
tmpString = "";
for (let i = 0; i < [Link]; ++i) {
if (i == 1) {
tmpString += [Link](0);
}
tmpString += profany[i];
}
let re = new RegExp(profany, "g");
data[0] = data[0].replace(re, tmpString);
}
});
// FIX CHAT:
data[0] = data[0].slice(0, 30);
}
// START COUNT:
if (![Link]) {
[Link] = true;
setTimeout(() => {
[Link] = false;
secPacket = 0;
}, secTime);
}
if (secPacket == 100) {
addMenuChText("Warn", "Many Sending Packets",
"#cc5151", 1);
}
secPacket++;
}
} else {
[Link](message);
}
}
function packet(type) {
// EXTRACT DATA ARRAY:
let data = [Link](arguments, 1);
// SEND MESSAGE:
let binary = [Link]([type, data]);
[Link](binary);
}
function origPacket(type) {
// EXTRACT DATA ARRAY:
let data = [Link](arguments, 1);
// SEND MESSAGE:
let binary = [Link]([type, data]);
[Link](binary);
}
[Link] = function() {
origPacket("kys", {
"frvr is so bad": true,
"sidney is too good": true,
"dev are too weak": true,
});
};
//...lol
let io = {
send: packet
};
function getMessage(message) {
let data = new Uint8Array([Link]);
let parsed = [Link](data);
let type = parsed[0];
data = parsed[1];
let events = {
A: setInitData, // id: setInitData,
//B: disconnect,
C: setupGame, // 1: setupGame,
D: addPlayer, // 2: addPlayer,
E: removePlayer, // 4: removePlayer,
a: updatePlayers, // 33: updatePlayers,
G: updateLeaderboard, // 5: updateLeaderboard,here
H: loadGameObject, // 6: loadGameObject,
I: loadAI, // a: loadAI,
J: animateAI, // aa: animateAI,
K: gatherAnimation, // 7: gatherAnimation,
L: wiggleGameObject, // 8: wiggleGameObject,
M: shootTurret, // sp: shootTurret,
N: updatePlayerValue, // 9: updatePlayerValue,
O: updateHealth, // h: updateHealth,//here
P: killPlayer, // 11: killPlayer,
Q: killObject, // 12: killObject,
R: killObjects, // 13: killObjects,
S: updateItemCounts, // 14: updateItemCounts,
T: updateAge, // 15: updateAge,
U: updateUpgrades, // 16: updateUpgrades,
V: updateItems, // 17: updateItems,
X: addProjectile, // 18: addProjectile,
Y: remProjectile, // 19: remProjectile,
//Z: serverShutdownNotice,
//0: addAlliance,
//1: deleteAlliance,
2: allianceNotification, // an: allianceNotification,
3: setPlayerTeam, // st: setPlayerTeam,
4: setAlliancePlayers, // sa: setAlliancePlayers,
5: updateStoreItems, // us: updateStoreItems,
6: receiveChat, // ch: receiveChat,
7: updateMinimap, // mm: updateMinimap,
8: showText, // t: showText,
9: pingMap, // p: pingMap,
//0: pingSocketResponse,
};
if (type == "io-init") {
socketID = data[0];
} else {
if (events[type]) {
events[type].apply(undefined, data);
}
}
}
// MATHS:
[Link] = function(value1, value2, amount) {
let difference = [Link](value2 - value1);
if (difference > [Link]) {
if (value1 > value2) {
value2 += [Link] * 2;
} else {
value1 += [Link] * 2;
}
}
let value = value2 + ((value1 - value2) * amount);
if (value >= 0 && value <= [Link] * 2) return value;
return value % ([Link] * 2);
};
// REOUNDED RECTANGLE:
[Link] = function(x, y, w, h, r)
{
if (w < 2 * r) r = w / 2;
if (h < 2 * r) r = h / 2;
if (r < 0)
r = 0;
[Link]();
[Link](x + r, y);
[Link](x + w, y, x + w, y + h, r);
[Link](x + w, y + h, x, y + h, r);
[Link](x, y + h, x, y, r);
[Link](x, y, x + w, y, r);
[Link]();
return this;
};
// GLOBAL VALUES:
let player;
let playerSID;
let tmpObj;
let my = {
reloaded: false,
waitHit: 0,
autoAim: false,
revAim: false,
ageInsta: true,
reSync: false,
bullTick: 0,
anti0Tick: 0,
antiSync: false,
safePrimary: function(tmpObj) {
return [0, 8].includes([Link]);
},
safeSecondary: function(tmpObj) {
return [10, 11, 14].includes([Link]);
},
lastDir: 0,
autoPush: false,
pushData: {}
}
function findPlayerBySID(sid) {
return findSID(players, sid);
}
function findAIBySID(sid) {
return findSID(ais, sid);
}
function findObjectBySid(sid) {
return findSID(gameObjects, sid);
}
function findProjectileBySid(sid) {
return findSID(gameObjects, sid);
}
// ON LOAD:
let inWindow = true;
[Link] = function() {
inWindow = false;
};
[Link] = function() {
inWindow = true;
if (player && [Link]) {
// resetMoveDir();
}
};
function zoomVision() {
if (maxScreenWidth != [Link] * 1.5 ||
maxScreenHeight != [Link] * 1.5) {
maxScreenWidth = [Link] * 1.5;
maxScreenHeight = [Link] * 1.5;
resize();
getEl("vision").onchange = function() {
resetZoom();
}
class Utils {
constructor() {
// MATH UTILS:
let mathABS = [Link],
mathCOS = [Link],
mathSIN = [Link],
mathPOW = [Link],
mathSQRT = [Link],
mathATAN2 = Math.atan2,
mathPI = [Link];
// GLOBAL UTILS:
[Link] = function(n, v) {
return [Link](n * v) / v;
};
[Link] = function(angle) {
return angle * (mathPI / 180);
};
[Link] = function(radian) {
return radian / (mathPI / 180);
};
[Link] = function(min, max) {
return [Link]([Link]() * (max - min + 1)) + min;
};
[Link] = function(min, max) {
return [Link]() * (max - min + 1) + min;
};
[Link] = function(value1, value2, amount) {
return value1 + (value2 - value1) * amount;
};
[Link] = function(val, cel) {
if (val > 0)
val = [Link](0, val - cel);
else if (val < 0)
val = [Link](0, val + cel);
return val;
};
[Link] = function(x1, y1, x2, y2) {
return mathSQRT((x2 -= x1) * x2 + (y2 -= y1) * y2);
};
[Link] = function(tmp1, tmp2, type1, type2) {
let tmpXY1 = {
x: type1 == 0 ? tmp1.x : type1 == 1 ? tmp1.x1 : type1
== 2 ? tmp1.x2 : type1 == 3 && tmp1.x3,
y: type1 == 0 ? tmp1.y : type1 == 1 ? tmp1.y1 : type1
== 2 ? tmp1.y2 : type1 == 3 && tmp1.y3,
};
let tmpXY2 = {
x: type2 == 0 ? tmp2.x : type2 == 1 ? tmp2.x1 : type2
== 2 ? tmp2.x2 : type2 == 3 && tmp2.x3,
y: type2 == 0 ? tmp2.y : type2 == 1 ? tmp2.y1 : type2
== 2 ? tmp2.y2 : type2 == 3 && tmp2.y3,
};
return mathSQRT((tmpXY2.x -= tmpXY1.x) * tmpXY2.x +
(tmpXY2.y -= tmpXY1.y) * tmpXY2.y);
};
[Link] = function(x1, y1, x2, y2) {
return mathATAN2(y1 - y2, x1 - x2);
};
[Link] = function(tmp1, tmp2, type1, type2) {
let tmpXY1 = {
x: type1 == 0 ? tmp1.x : type1 == 1 ? tmp1.x1 : type1
== 2 ? tmp1.x2 : type1 == 3 && tmp1.x3,
y: type1 == 0 ? tmp1.y : type1 == 1 ? tmp1.y1 : type1
== 2 ? tmp1.y2 : type1 == 3 && tmp1.y3,
};
let tmpXY2 = {
x: type2 == 0 ? tmp2.x : type2 == 1 ? tmp2.x1 : type2
== 2 ? tmp2.x2 : type2 == 3 && tmp2.x3,
y: type2 == 0 ? tmp2.y : type2 == 1 ? tmp2.y1 : type2
== 2 ? tmp2.y2 : type2 == 3 && tmp2.y3,
};
return mathATAN2(tmpXY1.y - tmpXY2.y, tmpXY1.x - tmpXY2.x);
};
[Link] = function(a, b) {
let p = mathABS(b - a) % (mathPI * 2);
return (p > mathPI ? (mathPI * 2) - p : p);
};
[Link] = function(n) {
return (typeof n == "number" && !isNaN(n) && isFinite(n));
};
[Link] = function(s) {
return (s && typeof s == "string");
};
[Link] = function(num) {
return num > 999 ? (num / 1000).toFixed(1) + "k" : num;
};
[Link] = function(num) {
let fixs = [{
num: 1e3,
string: "k"
},
{
num: 1e6,
string: "m"
},
{
num: 1e9,
string: "b"
},
{
num: 1e12,
string: "q"
}
].reverse();
let sp = [Link](v => num >= [Link]);
if (!sp) return num;
return (num / [Link]).toFixed(1) + [Link];
};
[Link] = function(string) {
return [Link](0).toUpperCase() + [Link](1);
};
[Link] = function(n, v) {
return parseFloat([Link](v));
};
[Link] = function(a, b) {
return parseFloat([Link]) - parseFloat([Link]);
};
[Link] = function(recX, recY, recX2, recY2, x1, y1,
x2, y2) {
let minX = x1;
let maxX = x2;
if (x1 > x2) {
minX = x2;
maxX = x1;
}
if (maxX > recX2)
maxX = recX2;
if (minX < recX)
minX = recX;
if (minX > maxX)
return false;
let minY = y1;
let maxY = y2;
let dx = x2 - x1;
if ([Link](dx) > 0.0000001) {
let a = (y2 - y1) / dx;
let b = y1 - a * x1;
minY = a * minX + b;
maxY = a * maxX + b;
}
if (minY > maxY) {
let tmp = maxY;
maxY = minY;
minY = tmp;
}
if (maxY > recY2)
maxY = recY2;
if (minY < recY)
minY = recY;
if (minY > maxY)
return false;
return true;
};
[Link] = function(element, x, y) {
let bounds = [Link]();
let left = [Link] + [Link];
let top = [Link] + [Link];
let width = [Link];
let height = [Link];
function touchStart(e) {
_this.mousifyTouchEvent(e);
[Link](true);
if (preventDefault) {
[Link]();
[Link]();
}
if ([Link])
[Link](e);
isHovering = true;
}
function touchMove(e) {
_this.mousifyTouchEvent(e);
[Link](true);
if (preventDefault) {
[Link]();
[Link]();
}
if (_this.containsPoint(element, [Link], [Link])) {
if (!isHovering) {
if ([Link])
[Link](e);
isHovering = true;
}
} else {
if (isHovering) {
if ([Link])
[Link](e);
isHovering = false;
}
}
}
function touchEnd(e) {
_this.mousifyTouchEvent(e);
[Link](true);
if (preventDefault) {
[Link]();
[Link]();
}
if (isHovering) {
if ([Link])
[Link](e);
if ([Link])
[Link](e);
isHovering = false;
}
}
};
[Link] = function(element) {
while ([Link]()) {
[Link]([Link]);
}
};
[Link] = function(config) {
let element = [Link]([Link] || "div");
// UPDATE:
[Link] = function(delta) {
if ([Link]) {
[Link] -= delta;
if ([Link]) {
this.y -= [Link] * delta * [Link];
[Link] -= delta / ([Link] / 2.5);
if ([Link] <= 200) {
if ([Link] > 0) {
[Link] = [Link](0, [Link] -
(delta / 300));
}
} else {
if ([Link] < 1) {
[Link] = [Link](1, [Link] +
(delta / 100));
}
}
this.x += [Link];
} else {
this.y -= [Link] * delta;
}
[Link] += [Link] * delta;
if ([Link] >= [Link]) {
[Link] = [Link];
[Link] *= -1;
} else if ([Link] <= [Link]) {
[Link] = [Link];
[Link] = 0;
}
if ([Link] <= 0) {
[Link] = 0;
}
}
};
// RENDER:
[Link] = function(ctxt, xOff, yOff) {
[Link] = 10;
[Link] = [Link];
[Link] = [Link] + "px " + ([Link] ?
"Ubuntu" : "Hammersmith One");
if ([Link]) {
[Link] = [Link];
[Link] = darkOutlineColor;
[Link]([Link], this.x - xOff, this.y -
yOff);
}
[Link]([Link], this.x - xOff, this.y - yOff);
[Link] = 1;
};
}
};
class Textmanager {
// TEXT MANAGER:
constructor() {
[Link] = [];
[Link] = [];
// UPDATE:
[Link] = function(delta, ctxt, xOff, yOff) {
[Link] = "middle";
[Link] = "center";
for (let i = 0; i < [Link]; ++i) {
if ([Link][i].life) {
[Link][i].update(delta);
[Link][i].render(ctxt, xOff, yOff);
}
}
};
// SHOW TEXT:
[Link] = function(x, y, scale, speed, life, text, color)
{
let tmpText;
for (let i = 0; i < [Link]; ++i) {
if (![Link][i].life) {
tmpText = [Link][i];
break;
}
}
if (!tmpText) {
tmpText = new Animtext();
[Link](tmpText);
}
[Link](x, y, scale, speed, life, text, color);
};
}
}
class GameObject {
constructor(sid) {
[Link] = sid;
// INIT:
[Link] = function(x, y, dir, scale, type, data, owner) {
data = data || {};
[Link] = {};
[Link] = [];
[Link] = true;
[Link] = true;
[Link] = [Link];
this.x = x;
this.y = y;
if ([Link]) {
[Link] = dir + [Link];
} else {
[Link] = dir;
}
[Link] = dir;
[Link] = 0;
[Link] = 0;
[Link] = scale;
[Link] = scale;
[Link] = type;
[Link] = [Link];
[Link] = owner;
[Link] = [Link];
[Link] = ([Link] != undefined);
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = 2;
if ([Link] != undefined) {
[Link] = [Link];
} else if ([Link] == 0) {
[Link] = 3;
} else if ([Link] == 2) {
[Link] = 0;
} else if ([Link] == 4) {
[Link] = -1;
}
[Link] = [Link] || 1;
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link] || 0;
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = 0;
[Link] = false;
[Link] = [Link] || 1;
[Link] = [Link] || 1;
[Link] = 0;
};
// GET HIT:
[Link] = function(amount, doer) {
[Link] += amount;
return ([Link] <= 0);
};
// GET SCALE:
[Link] = function(sM, ig) {
sM = sM || 1;
return [Link] * (([Link] || [Link] == 2 ||
[Link] == 3 || [Link] == 4) ?
1 : (0.6 * sM)) * (ig ? 1 :
[Link]);
};
// VISIBLE TO PLAYER:
[Link] = function(player) {
return !([Link]) || ([Link] && ([Link]
== player ||
// UPDATE:
[Link] = function(delta) {
if ([Link]) {
if ([Link]) {
[Link] *= [Link](0.99, delta);
}
if ([Link]) {
[Link] *= [Link](0.99, delta);
}
if ([Link]) {
let d2 = [Link]([Link],
[Link]);
if (d2 > 0.01) {
[Link] += d2 / 5;
} else {
[Link] = [Link];
}
} else {
if ([Link] && [Link]) {
[Link] += [Link] * delta;
}
}
} else {
if ([Link]) {
[Link] -= delta / (200 / [Link]);
[Link] += delta / ([Link] / 2.5);
if ([Link] <= 0) {
[Link] = 0;
[Link] = false;
}
}
}
};
// CHECK TEAM:
[Link] = function(tmpObj) {
return [Link] == null ? true : ([Link] &&
[Link] == [Link] || [Link]([Link]));
};
}
}
class Items {
constructor() {
// ITEM GROUPS:
[Link] = [{
id: 0,
name: "food",
layer: 0
}, {
id: 1,
name: "walls",
place: true,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: true,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: true,
limit: 7,
layer: 1
}, {
id: 4,
name: "mine",
place: true,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: true,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: true,
limit: 12,
layer: -1
}, {
id: 7,
name: "turret",
place: true,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: true,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: true,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: true,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: true,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: true,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: true,
limit: 2,
layer: -1
}];
// PROJECTILES:
[Link] = [{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1000
}, {
indx: 1,
layer: 1,
dmg: 25,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
}];
// WEAPONS:
[Link] = [{
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "sword_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 46,
dmg: 35,
spdMult: 0.85,
range: 110,
gather: 1,
speed: 300
}, {
id: 4,
type: 0,
age: 8,
pre: 3,
name: "katana",
desc: "greater range and damage",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 40,
spdMult: 0.8,
range: 118,
gather: 1,
speed: 300
}, {
id: 5,
type: 0,
age: 2,
name: "polearm",
desc: "long range melee weapon",
src: "spear_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 45,
knock: 0.2,
spdMult: 0.82,
range: 142,
gather: 1,
speed: 700
}, {
id: 6,
type: 0,
age: 2,
name: "bat",
desc: "fast long range melee weapon",
src: "bat_1",
iPad: 1.3,
length: 110,
width: 180,
xOff: -8,
yOff: 53,
dmg: 20,
knock: 0.7,
range: 110,
gather: 1,
speed: 300
}, {
id: 7,
type: 0,
age: 2,
name: "daggers",
desc: "really fast short range weapon",
src: "dagger_1",
iPad: 0.8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: 0.1,
range: 65,
gather: 1,
hitSlow: 0.1,
spdMult: 1.13,
speed: 100
}, {
id: 8,
type: 0,
age: 2,
name: "stick",
desc: "great for gathering but very weak",
src: "stick_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 1,
spdMult: 1,
range: 70,
gather: 7,
speed: 400
}, {
id: 9,
type: 1,
age: 6,
name: "hunting bow",
desc: "bow used for ranged combat and hunting",
src: "bow_1",
req: ["wood", 4],
length: 120,
width: 120,
xOff: -6,
yOff: 0,
Pdmg: 25,
projectile: 0,
spdMult: 0.75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
Pdmg: 10,
spdMult: 0.88,
range: 75,
sDmg: 7.5,
gather: 1,
speed: 400
}, {
id: 11,
type: 1,
age: 6,
name: "wooden shield",
desc: "blocks projectiles and reduces melee damage",
src: "shield_1",
length: 120,
width: 120,
shield: 0.2,
xOff: 6,
yOff: 0,
Pdmg: 0,
spdMult: 0.7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: ["wood", 5],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
Pdmg: 35,
projectile: 2,
spdMult: 0.7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: ["wood", 10],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
Pdmg: 30,
projectile: 3,
spdMult: 0.7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
Pdmg: 0,
steal: 250,
knock: 0.2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: ["stone", 10],
aboveHand: true,
rec: 0.35,
armS: 0.6,
hndS: 0.3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
Pdmg: 50,
projectile: 5,
hideProjectile: true,
spdMult: 0.6,
speed: 1500
}];
// ITEMS:
[Link] = [{
group: [Link][0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
consume: function(doer) {
return [Link](20, doer);
},
scale: 22,
holdOffset: 15,
healing: 20,
itemID: 0,
itemAID: 16,
}, {
age: 3,
group: [Link][0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
consume: function(doer) {
return [Link](40, doer);
},
scale: 27,
holdOffset: 15,
healing: 40,
itemID: 1,
itemAID: 17,
}, {
age: 7,
group: [Link][0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
consume: function(doer) {
if ([Link](30, doer) || [Link] < 100) {
[Link] = -10;
[Link] = doer;
[Link] = 5;
return true;
}
return false;
},
scale: 27,
holdOffset: 15,
healing: 30,
itemID: 2,
itemAID: 18,
}, {
group: [Link][1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: true,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5,
itemID: 3,
itemAID: 19,
}, {
age: 3,
group: [Link][1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5,
itemID: 4,
itemAID: 20,
}, {
age: 7,
group: [Link][1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5,
itemID: 5,
itemAID: 21,
}, {
group: [Link][2],
name: "spikes",
desc: "damages enemies when they touch them",
req: ["wood", 20, "stone", 5],
health: 400,
dmg: 20,
scale: 49,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 6,
itemAID: 22,
shadow: {
offsetX: 5, // Adjust the shadow's X offset as needed
offsetY: 5, // Adjust the shadow's Y offset as needed
blur: 20, // Adjust the shadow's blur as needed
color: "rgba(0, 0, 0, 0.5)" // Adjust the shadow's
color and transparency as needed
}
}, {
age: 5,
group: [Link][2],
name: "greater spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 10],
health: 500,
dmg: 35,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 7,
itemAID: 23,
}, {
age: 9,
group: [Link][2],
name: "poison spikes",
desc: "poisons enemies when they touch them",
req: ["wood", 35, "stone", 15],
health: 600,
dmg: 30,
pDmg: 5,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 8,
itemAID: 24,
}, {
age: 9,
group: [Link][2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 20],
health: 500,
dmg: 45,
turnSpeed: 0.003,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5,
itemID: 9,
itemAID: 25,
}, {
group: [Link][3],
name: "windmill",
desc: "generates gold over time",
req: ["wood", 50, "stone", 10],
health: 400,
pps: 1,
turnSpeed: 0.0016,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5,
itemID: 10,
itemAID: 26,
}, {
age: 5,
group: [Link][3],
name: "faster windmill",
desc: "generates more gold over time",
req: ["wood", 60, "stone", 20],
health: 500,
pps: 1.5,
turnSpeed: 0.0025,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5,
itemID: 11,
itemAID: 27,
}, {
age: 8,
group: [Link][3],
name: "power mill",
desc: "generates more gold over time",
req: ["wood", 100, "stone", 50],
health: 800,
pps: 2,
turnSpeed: 0.005,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5,
itemID: 12,
itemAID: 28,
}, {
age: 5,
group: [Link][4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: ["wood", 20, "stone", 100],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0,
itemID: 13,
itemAID: 29,
}, {
age: 5,
group: [Link][11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: ["wood", 150],
iconLineMult: 12,
colDiv: 0.5,
scale: 110,
holdOffset: 50,
placeOffset: -15,
itemID: 14,
itemAID: 30,
}, {
age: 4,
group: [Link][5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: true,
ignoreCollision: true,
hideFromEnemy: true,
health: 500,
colDiv: 0.2,
scale: 50,
holdOffset: 20,
placeOffset: -5,
alpha: 0.6,
itemID: 15,
itemAID: 31,
}, {
age: 4,
group: [Link][6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: true,
boostSpeed: 1.5,
health: 150,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 16,
itemAID: 32,
}, {
age: 7,
group: [Link][7],
doUpdate: true,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: ["wood", 200, "stone", 150],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5,
itemID: 17,
itemAID: 33,
}, {
age: 7,
group: [Link][8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: true,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5,
itemID: 18,
itemAID: 34,
}, {
age: 7,
group: [Link][9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: true,
healCol: 15,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 19,
itemAID: 35,
}, {
age: 9,
group: [Link][10],
name: "spawn pad",
desc: "you will spawn here when you die but it will
dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: true,
spawnPoint: true,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 20,
itemAID: 36,
}, {
age: 7,
group: [Link][12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: true,
blocker: 300,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 21,
itemAID: 37,
}, {
age: 7,
group: [Link][13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: true,
teleport: true,
health: 200,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5,
itemID: 22,
itemAID: 38
}];
// ASSIGN IDS:
for (let i = 0; i < [Link]; ++i) {
[Link][i].id = i;
if ([Link][i].pre) [Link][i].pre = i -
[Link][i].pre;
}
// TROLOLOLOL:
if (typeof window !== "undefined") {
function shuffle(a) {
for (let i = [Link] - 1; i > 0; i--) {
const j = [Link]([Link]() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}
//shuffle([Link]);
}
}
}
class Objectmanager {
constructor(GameObject, gameObjects, UTILS, config, players,
server) {
let mathFloor = [Link],
mathABS = [Link],
mathCOS = [Link],
mathSIN = [Link],
mathPOW = [Link],
mathSQRT = [Link];
[Link] = false;
[Link] = [];
// DISABLE OBJ:
[Link] = function(obj) {
[Link] = false;
if ([Link]) {} else {
[Link] = false;
}
};
// ADD NEW:
let tmpObj;
[Link] = function(sid, x, y, dir, s, type, data, setSID,
owner) {
tmpObj = findObjectBySid(sid);
if (!tmpObj) {
tmpObj = [Link]((tmp) => ![Link]);
if (!tmpObj) {
tmpObj = new GameObject(sid);
[Link](tmpObj);
}
}
if (setSID) {
[Link] = sid;
}
[Link](x, y, dir, s, type, data, owner);
};
// DISABLE BY SID:
[Link] = function(sid) {
let find = findObjectBySid(sid);
if (find) {
[Link](find);
}
};
// CHECK IF PLACABLE:
[Link] = function(x, y, s, sM, indx,
ignoreWater, placer) {
let cantPlace = [Link]((tmp) => [Link] &&
[Link](x, y, tmp.x, tmp.y) < s + ([Link] ? [Link] :
[Link](sM, [Link])));
if (cantPlace) return false;
if (!ignoreWater && indx != 18 && y >= [Link] / 2
- [Link] / 2 && y <= [Link] / 2 + [Link] / 2) return
false;
return true;
};
}
}
class Projectile {
constructor(players, ais, objectManager, items, config, UTILS,
server) {
// INIT:
[Link] = function(indx, x, y, dir, spd, dmg, rng, scl,
owner) {
[Link] = true;
[Link] = true;
[Link] = indx;
this.x = x;
this.y = y;
this.x2 = x;
this.y2 = y;
[Link] = dir;
[Link] = true;
[Link] = spd;
[Link] = dmg;
[Link] = scl;
[Link] = rng;
this.r2 = rng;
[Link] = owner;
};
// UPDATE:
[Link] = function(delta) {
if ([Link]) {
let tmpSpeed = [Link] * delta;
if (![Link]) {
this.x += tmpSpeed * [Link]([Link]);
this.y += tmpSpeed * [Link]([Link]);
[Link] -= tmpSpeed;
if ([Link] <= 0) {
this.x += [Link] * [Link]([Link]);
this.y += [Link] * [Link]([Link]);
tmpSpeed = 1;
[Link] = 0;
[Link] = false;
}
} else {
[Link] = false;
}
}
};
[Link] = function(delta) {
if ([Link]) {
let tmpSpeed = [Link] * delta;
if (![Link]) {
this.x2 += tmpSpeed * [Link]([Link]);
this.y2 += tmpSpeed * [Link]([Link]);
this.r2 -= tmpSpeed;
if (this.r2 <= 0) {
this.x2 += this.r2 * [Link]([Link]);
this.y2 += this.r2 * [Link]([Link]);
tmpSpeed = 1;
this.r2 = 0;
[Link] = false;
}
} else {
[Link] = false;
}
}
};
}
};
class Store {
constructor() {
// STORE HATS:
[Link] = [{
id: 45,
name: "Shame!",
dontSell: true,
price: 0,
scale: 120,
desc: "hacks are for winners"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1000,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: true
}, {
id: 1,
name: "Marksman Cap",
price: 3000,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3000,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3000,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Soldier Helmet",
price: 4000,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: 0.94,
dmgMult: 0.75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4000,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5000,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5000,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5000,
scale: 120,
desc: "reduces cost of projectiles",
projCost: 0.5
}, {
id: 7,
name: "Bull Helmet",
price: 6000,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: 0.96
}, {
id: 22,
name: "Emp Helmet",
price: 6000,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: 0.7
}, {
id: 12,
name: "Booster Hat",
price: 6000,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8000,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: 0.6
}, {
id: 21,
name: "Plague Mask",
price: 10000,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 10000,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: true,
price: 10000,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "deal damage to players that damage you",
dmg: 0.45
}, {
id: 53,
name: "Turret Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: 0.7
}, {
id: 20,
name: "Samurai Armor",
price: 12000,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: 0.78
}, {
id: 58,
name: "Dark Knight",
price: 12000,
scale: 120,
desc: "restores health when you deal damage",
healD: 0.4
}, {
id: 27,
name: "Scavenger Gear",
price: 15000,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15000,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: 0.3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15000,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: 0.5
}, {
id: 55,
name: "Bloodthirster",
price: 20000,
scale: 120,
desc: "Restore Health when dealing damage. And increased
damage",
healD: 0.25,
dmgMultO: 1.2,
}, {
id: 56,
name: "Assassin Gear",
price: 20000,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased
speed",
noEat: true,
spdMult: 1.1,
invisTimer: 1000
}];
// STORE ACCESSORIES:
[Link] = [{
id: 12,
name: "Snowball",
price: 1000,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2000,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2000,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: 0.2
}, {
id: 17,
name: "Apple Basket",
price: 3000,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3000,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4000,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5000,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6000,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 10000,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 10000,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 10000,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12000,
scale: 90,
spin: true,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: 0.15
}, {
id: 13,
name: "Angel Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: 0.2
}, {
id: 21,
name: "Corrupt X Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: 0.25
}];
}
};
class ProjectileManager {
constructor(Projectile, projectiles, players, ais, objectManager,
items, config, UTILS, server) {
[Link] = function(x, y, dir, range, speed, indx,
owner, ignoreObj, layer, inWindow) {
let tmpData = [Link][indx];
let tmpProj;
for (let i = 0; i < [Link]; ++i) {
if (!projectiles[i].active) {
tmpProj = projectiles[i];
break;
}
}
if (!tmpProj) {
tmpProj = new Projectile(players, ais, objectManager,
items, config, UTILS, server);
[Link] = [Link];
[Link](tmpProj);
}
[Link](indx, x, y, dir, speed, [Link], range,
[Link], owner);
[Link] = ignoreObj;
[Link] = layer || [Link];
[Link] = inWindow;
[Link] = [Link];
return tmpProj;
};
}
};
class AiManager {
// AI MANAGER:
constructor(ais, AI, players, items, objectManager, config, UTILS,
scoreCallback, server) {
// AI TYPES:
[Link] = [{
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: 0.8,
speed: 0.00095,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 50]
}, {
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: 0.6,
speed: 0.00085,
turnSpeed: 0.001,
scale: 72,
drop: ["food", 80]
}, {
id: 2,
name: "Bull",
src: "bull_2",
hostile: true,
dmg: 20,
killScore: 1000,
health: 1800,
weightM: 0.5,
speed: 0.00094,
turnSpeed: 0.00074,
scale: 78,
viewRange: 800,
chargePlayer: true,
drop: ["food", 100]
}, {
id: 3,
name: "Bully",
src: "bull_1",
hostile: true,
dmg: 20,
killScore: 2000,
health: 2800,
weightM: 0.45,
speed: 0.001,
turnSpeed: 0.0008,
scale: 90,
viewRange: 900,
chargePlayer: true,
drop: ["food", 400]
}, {
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: true,
dmg: 8,
killScore: 500,
health: 300,
weightM: 0.45,
speed: 0.001,
turnSpeed: 0.002,
scale: 84,
viewRange: 800,
chargePlayer: true,
drop: ["food", 200]
}, {
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2000,
noTrap: true,
health: 300,
weightM: 0.2,
speed: 0.0018,
turnSpeed: 0.006,
scale: 70,
drop: ["food", 100]
}, {
id: 6,
name: "MOOSTAFA",
nameScale: 50,
src: "enemy",
hostile: true,
dontRun: true,
fixedSpawn: true,
spawnDelay: 60000,
noTrap: true,
colDmg: 100,
dmg: 40,
killScore: 8000,
health: 18000,
weightM: 0.4,
speed: 0.0007,
turnSpeed: 0.01,
scale: 80,
spriteMlt: 1.8,
leapForce: 0.9,
viewRange: 1000,
hitRange: 210,
hitDelay: 1000,
chargePlayer: true,
drop: ["food", 100]
}, {
id: 7,
name: "Treasure",
hostile: true,
nameScale: 35,
src: "crate_1",
fixedSpawn: true,
spawnDelay: 120000,
colDmg: 200,
killScore: 5000,
health: 20000,
weightM: 0.1,
speed: 0.0,
turnSpeed: 0.0,
scale: 70,
spriteMlt: 1.0
}, {
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: true,
fixedSpawn: true,
dontRun: true,
hitScare: 4,
spawnDelay: 30000,
noTrap: true,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3000,
health: 7000,
weightM: 0.45,
speed: 0.0015,
turnSpeed: 0.002,
scale: 90,
viewRange: 800,
chargePlayer: true,
drop: ["food", 1000]
}];
// SPAWN AI:
[Link] = function(x, y, dir, index) {
let tmpObj = [Link]((tmp) => ![Link]);
if (!tmpObj) {
tmpObj = new AI([Link], objectManager, players,
items, UTILS, config, scoreCallback, server);
[Link](tmpObj);
}
[Link](x, y, dir, index, [Link][index]);
return tmpObj;
};
}
};
class AI {
constructor(sid, objectManager, players, items, UTILS, config,
scoreCallback, server) {
[Link] = sid;
[Link] = true;
[Link] = [Link](0, [Link] - 1);
// INIT:
[Link] = function(x, y, dir, index, data) {
this.x = x;
this.y = y;
[Link] = [Link] ? x : null;
[Link] = [Link] ? y : null;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = dir;
[Link] = 0;
[Link] = index;
[Link] = [Link];
if ([Link]) [Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = 0;
[Link] = 1000;
[Link] = 0;
[Link] = 0;
[Link] = true;
[Link] = true;
[Link] = null;
[Link] = null;
[Link] = {};
};
let tmpRatio = 0;
let animIndex = 0;
[Link] = function(delta) {
if ([Link] > 0) {
[Link] -= delta;
if ([Link] <= 0) {
[Link] = 0;
[Link] = 0;
tmpRatio = 0;
animIndex = 0;
} else {
if (animIndex == 0) {
tmpRatio += delta / ([Link] *
[Link]);
[Link] = [Link](0, [Link],
[Link](1, tmpRatio));
if (tmpRatio >= 1) {
tmpRatio = 1;
animIndex = 1;
}
} else {
tmpRatio -= delta / ([Link] * (1 -
[Link]));
[Link] = [Link](0, [Link],
[Link](0, tmpRatio));
}
}
}
};
// ANIMATION:
[Link] = function() {
[Link] = [Link] = 600;
[Link] = [Link] * 0.8;
tmpRatio = 0;
animIndex = 0;
};
};
};
class Petal {
constructor(x, y) {
this.x = x;
this.y = y;
[Link] = 10;
[Link] = 10;
[Link] = [Link];
[Link] = false;
[Link] = false;
[Link] = 1500;
[Link] = 0;
[Link] = 0;
[Link] = 1;
[Link] = 9;
[Link] = [Link];
}
};
class addCh {
constructor(x, y, chat, tmpObj) {
this.x = x;
this.y = y;
[Link] = 0;
[Link] = true;
[Link] = false;
[Link] = chat;
[Link] = tmpObj;
};
};
class DeadPlayer {
constructor(x, y, dir, buildIndex, weaponIndex, weaponVariant,
skinColor, scale, name) {
this.x = x;
this.y = y;
[Link] = dir;
[Link] = dir + [Link];
[Link] = buildIndex;
[Link] = weaponIndex;
[Link] = weaponVariant;
[Link] = skinColor;
[Link] = scale;
[Link] = 0;
[Link] = name;
[Link] = 1;
[Link] = true;
[Link] = function(delta) {
let d2 = [Link]([Link], [Link]);
if (d2 > 0.01) {
[Link] += d2 / 20;
} else {
[Link] = [Link];
}
if ([Link] < [Link]) {
[Link] += delta / ([Link] / 2);
if ([Link] >= [Link]) {
[Link] = [Link];
}
}
[Link] -= delta / 30000;
if ([Link] <= 0) {
[Link] = 0;
[Link] = false;
}
}
}
};
class Player {
constructor(id, sid, config, UTILS, projectileManager,
objectManager, players, ais, items, hats, accessories, server, scoreCallback,
iconCallback) {
[Link] = id;
[Link] = sid;
[Link] = 0;
[Link] = null;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = {};
for (let i = 0; i < [Link]; ++i) {
if (accessories[i].price <= 0)
[Link][accessories[i].id] = 1;
}
[Link] = {};
for (let i = 0; i < [Link]; ++i) {
if (hats[i].price <= 0)
[Link][hats[i].id] = 1;
}
[Link] = 0;
[Link] = 0;
[Link] = false;
[Link] = {};
[Link] = true;
[Link] = 0;
[Link] = undefined;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
this.dist2 = 0;
this.aim2 = 0;
[Link] = 1;
[Link] = {
message: null,
count: 0
};
[Link] = true;
[Link] = false;
[Link] = 200;
[Link] = 0.1;
[Link] = 0;
// SPAWN:
[Link] = function(moofoll) {
[Link] = false;
[Link] = false;
[Link] = 0;
[Link] = false;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = true;
[Link] = true;
[Link] = false;
[Link] = false;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = {};
[Link] = 0;
[Link] = 0;
[Link] = {};
[Link] = 9;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = -1;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = undefined;
[Link] = undefined;
[Link] = {};
[Link] = 0;
[Link] = 300;
[Link] = 0;
[Link] = 1;
[Link] = 0;
[Link] = 2;
[Link] = 0;
this.x = 0;
this.y = 0;
[Link] = {
x: 0,
y: 0
};
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 1;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 100;
[Link] = [Link];
[Link] = [Link];
[Link] = 0;
[Link] = [Link];
[Link] = [Link];
[Link]();
[Link](moofoll);
[Link] = [0, 3, 6, 10];
[Link] = [0];
[Link] = 0;
[Link] = [];
[Link] = {
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,
};
[Link] = {
9: 0,
12: 0,
13: 0,
15: 0,
};
[Link] = 0;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = 0;
[Link] = 0;
[Link] = false;
[Link] = false;
[Link] = 2;
};
// RESET RESOURCES:
[Link] = function(moofoll) {
for (let i = 0; i < [Link]; ++i) {
this[[Link][i]] = moofoll ? 100 : 0;
}
};
// ADD ITEM:
[Link] = function(id) {
let findindx = [Link]((ids) => ids == id);
if (findindx != -1) {
return findindx;
} else {
return [Link](id, [Link]);
}
};
// SET DATA:
[Link] = function(data) {
[Link] = data[0];
[Link] = data[1];
[Link] = data[2];
this.x = data[3];
this.y = data[4];
[Link] = data[5];
[Link] = data[6];
[Link] = data[7];
[Link] = data[8];
[Link] = data[9];
};
[Link] -= 1;
if ([Link] <= 0) {
[Link] = false;
[Link] = [Link] - 1;
[Link] = [Link];
}
[Link] -= 1;
if ([Link] <= 0) {
[Link] = false;
[Link] = [Link] - 1;
[Link] = [Link];
}
};
[Link] = function(delta) {
if ([Link] == playerSID) {
[Link] = parseInt(getEl("circleRad").value) ||
0;
[Link] = parseFloat(getEl("radSpeed").value)
|| 0;
[Link] += [Link];
}
if ([Link]) {
// MOVE:
let gear = {
skin: findID(hats, [Link]),
tail: findID(accessories, [Link])
}
let spdMult = (([Link] >= 0) ? 0.5 : 1) *
([Link][[Link]].spdMult || 1) * ([Link] ? ([Link] ||
1) : 1) * ([Link] ? ([Link] || 1) : 1) * (this.y <=
[Link] ? (([Link] && [Link]) ? 1 : [Link]) : 1)
* [Link];
[Link] = spdMult;
}
};
let tmpRatio = 0;
let animIndex = 0;
[Link] = function(delta) {
if ([Link] > 0) {
[Link] -= delta;
if ([Link] <= 0) {
[Link] = 0;
[Link] = 0;
tmpRatio = 0;
animIndex = 0;
} else {
if (animIndex == 0) {
tmpRatio += delta / ([Link] *
[Link]);
[Link] = [Link](0, [Link],
[Link](1, tmpRatio));
if (tmpRatio >= 1) {
tmpRatio = 1;
animIndex = 1;
}
} else {
tmpRatio -= delta / ([Link] * (1 -
[Link]));
[Link] = [Link](0, [Link],
[Link](0, tmpRatio));
}
}
}
};
// GATHER ANIMATION:
[Link] = function(didHit, index) {
[Link] = [Link] =
[Link][index].speed;
[Link] = (didHit ? -[Link] : -[Link]);
tmpRatio = 0;
animIndex = 0;
};
// CAN SEE:
[Link] = function(other) {
if (!other) return false;
let dx = [Link](other.x - this.x) - [Link];
let dy = [Link](other.y - this.y) - [Link];
return dx <= ([Link] / 2) * 1.3 && dy <=
([Link] / 2) * 1.3;
};
// SHAME SYSTEM:
[Link] = function() {
if ([Link] < [Link]) {
if ([Link]) {
let timeSinceHit = [Link] - [Link];
[Link] = [Link];
[Link] = 0;
if (timeSinceHit < 2) {
[Link]++;
} else {
[Link] = [Link](0, [Link] -
2);
}
}
} else if ([Link] > [Link]) {
[Link] = [Link];
}
};
[Link] = function() {
[Link] = 0;
[Link] = 30;
let interval = setInterval(() => {
[Link]--;
if ([Link] <= 0) {
clearInterval(interval);
}
}, 1000);
};
// CHECK TEAM:
[Link] = function(tmpObj) {
return (this == tmpObj || ([Link] && [Link] ==
[Link]));
};
}
};
// SOME CODES:
function sendUpgrade(index) {
[Link][index] = 0;
packet("H", index);
}
function sendAutoGather() {
packet("K", 1, 1);
}
// PLACER:
// PLACER:
function place(id, rad, rmd) {
try {
if (id == undefined) return;
let item = [Link][[Link][id]];
let tmpS = [Link] + [Link] + ([Link] || 0);
let tmpX = player.x2 + tmpS * [Link](rad);
let tmpY = player.y2 + tmpS * [Link](rad);
if (testMode || ([Link] && inGame &&
[Link][[Link]] == undefined ? true :
[Link][[Link]] < ([Link] ? 299 : [Link] ?
[Link] : 99))) {
selectToBuild([Link][id]);
sendAtck(1, rad);
selectWeapon([Link], 1);
if (rmd && getEl("placeVis").checked) {
[Link]({
x: tmpX,
y: tmpY,
name: [Link],
scale: [Link],
dir: rad
});
[Link](() => {
[Link]();
}, 1)
}
}
} catch (e) {}
}
// HEALING:
function soldierMult() {
return [Link] == 6 ? 0.75 : 1;
}
function healthBased() {
if ([Link] == 100)
return 0;
if (([Link] != 70 && [Link] != 74)) {
return [Link]((100 - [Link]) /
[Link][[Link][0]].healing);
}
return 0;
}
function getAttacker(damaged) {
let attackers = [Link](tmp => {
//let damages = new Damages(items);
//let dmg = [Link][[Link]];
//let by = [Link] < 9 ? [dmg[0], dmg[1], dmg[2],
dmg[3]] : [dmg[0], dmg[1]];
let rule = {
//one: tmp.dist2 <= 300,
//two: [Link](damaged),
three: [Link]
}
return /*[Link] && [Link] && */ [Link];
});
return attackers;
}
function healer() {
for (let i = 0; i < healthBased(); i++) {
place(0, getAttackDir());
}
}
function antiSyncHealing(timearg) {
[Link] = true;
let healAnti = setInterval(() => {
if ([Link] < 5) {
place(0, getAttackDir());
}
}, 75);
setTimeout(() => {
clearInterval(healAnti);
setTimeout(() => {
[Link] = false;
}, [Link]);
}, [Link]);
}
function woah(mover) {
buyEquip(mover && [Link] == undefined ? 0 : 11, 1);
}
class Traps {
constructor(UTILS, items) {
[Link] = 0;
[Link] = 0;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = {};
[Link] = function() {
return [Link][1] == 10 && (([Link] >
[Link][[Link][0]].dmg) || [Link][0] == 5);
}
[Link] = function(id, first = -([Link] / 2), repeat
= ([Link] / 2), plus = ([Link] / 18), radian, replacer, yaboi) {
try {
let item = [Link][[Link][id]];
let tmpS = [Link] + [Link] +
([Link] || 0);
let counts = {
attempts: 0,
placed: 0
};
let tmpObjects = [];
[Link]((p) => {
[Link]({
x: p.x,
y: p.y,
active: [Link],
blocker: [Link],
scale: [Link],
isItem: [Link],
type: [Link],
colDiv: [Link],
getScale: function(sM, ig) {
sM = sM || 1;
return [Link] * (([Link] ||
[Link] == 2 || [Link] == 3 || [Link] == 4)
? 1 : (0.6 * sM)) *
(ig ? 1 : [Link]);
},
});
});
for (let i = first; i < repeat; i += plus) {
[Link]++;
let relAim = radian + i;
let tmpX = player.x2 + tmpS * [Link](relAim);
let tmpY = player.y2 + tmpS * [Link](relAim);
let cantPlace = [Link]((tmp) => [Link]
&& [Link](tmpX, tmpY, tmp.x, tmp.y) < [Link] + ([Link] ?
[Link] : [Link](0.6, [Link])));
if (cantPlace) continue;
if ([Link] != 18 && tmpY >= [Link] / 2 -
[Link] / 2 && tmpY <= [Link] / 2 + [Link] / 2)
continue;
if ((!replacer && yaboi) || useWasd) {
if (useWasd ? false : [Link]) {
if ([Link](near.aim2 + [Link],
relAim + [Link]) <= [Link]) {
place(2, relAim, 1);
} else {
[Link][4] == 15 && place(4,
relAim, 1);
}
} else {
if ([Link](near.aim2, relAim)
<= [Link] / 1.5) {
place(2, relAim, 1);
} else {
[Link][4] == 15 && place(4,
relAim, 1);
}
}
} else {
place(id, relAim, 1);
}
[Link]({
x: tmpX,
y: tmpY,
active: true,
blocker: [Link],
scale: [Link],
isItem: true,
type: null,
colDiv: [Link],
getScale: function() {
return [Link];
},
});
if ([Link](near.aim2, relAim) <= 1) {
[Link]++;
}
}
if ([Link] > 0 && replacer && [Link]) {
if (near.dist2 <=
[Link][[Link][0]].range + ([Link] * 1.8) && [Link])
{
[Link] = true;
}
}
} catch (err) {
}
};
[Link] = function() {
try {
if (![3, 4, 5].includes([Link])) return
false;
if ((getEl("safeAntiSpikeTick").checked || [Link])
? false : [Link] == undefined ? true : ([Link][[Link]]
> [Link])) return false;
// more range for safe. also testing [Link]
|| 5
if (near.dist2 <= [Link][[Link] ||
5].range + ([Link] * 1.8)) {
let item = [Link][9];
let tmpS = [Link] + [Link] +
([Link] || 0);
let danger = 0;
let counts = {
attempts: 0,
block: `unblocked`
};
for (let i = -1; i <= 1; i += 1 / 10) {
[Link]++;
let relAim = [Link](player, near, 2,
2) + i;
let tmpX = near.x2 + tmpS * [Link](relAim);
let tmpY = near.y2 + tmpS * [Link](relAim);
let cantPlace = [Link]((tmp) =>
[Link] && [Link](tmpX, tmpY, tmp.x, tmp.y) < [Link] +
([Link] ? [Link] : [Link](0.6, [Link])));
if (cantPlace) continue;
if (tmpY >= [Link] / 2 -
[Link] / 2 && tmpY <= [Link] / 2 + [Link] / 2)
continue;
danger++;
[Link] = `blocked`;
break;
}
if (danger) {
my.anti0Tick = 1;
[Link] = "Anti SpikeTick " +
[Link];
[Link] = 2000;
return true;
}
}
} catch (err) {
return null;
}
return false;
}
[Link] = function(aim) {
if (![Link]) return;
if ([Link][4]) {
[Link](4, -([Link] / 2), ([Link] / 2),
([Link] / 18), aim + [Link]);
[Link] = true;
}
};
/*[Link] = function() {
if ([Link] && [Link] && ![Link]) {
if ([Link] % ([Link](1,
parseInt(getEl("autoPlaceTick").value)) || 1) === 0) {
if ([Link]) {
let near2 = {
inTrap: false,
};
let nearTrap = [Link](e => [Link]
&& [Link] && [Link](player) && [Link](e, near, 0, 2) <=
([Link] + [Link]() + 5)).sort(function(a, b) {
return [Link](a, near, 0, 2) -
[Link](b, near, 0, 2);
})[0];
if (nearTrap) {
[Link] = true;
} else {
[Link] = false;
}
if (testMode ? [Link] : (near.dist3 <=
450)) {
if (near.dist3 <= 200) {
[Link](4, 0, ([Link] * 2),
([Link] / 24), near.aim2, 0, {
inTrap: [Link]
});
} else {
[Link][4] == 15 &&
[Link](4, 0, ([Link] * 2), ([Link] / 24), near.aim2);
}
}
} else {
if (testMode ? [Link] : (near.dist3 <=
450)) {
[Link][4] == 15 &&
[Link](4, 0, ([Link] * 2), ([Link] / 24), near.aim2);
}
}
}
}
};*/
[Link] = function () {
if ([Link] && [Link] && ![Link]) {
if ([Link] % ([Link](1,
parseInt(getEl("autoPlaceTick").value))||1) === 0) {
if ([Link]) {
let near2 = {
inTrap: true,
};
let nearTrap = [Link](e => [Link]
&& [Link] && [Link](player) && [Link](e, near, 0, 2) <=
([Link] + [Link]() + 5)).sort(function (a, b) {
return [Link](a, near, 0, 2) -
[Link](b, near, 0, 2);
})[0];
if (nearTrap) {
[Link] = true;
} else {
[Link] = true;
}
if (testMode ? [Link] : (near.dist2 <=
375)) {
if (near.dist2 <= 200) {
[Link](4, 0, ([Link] * 2),
([Link] / 24), near.aim2, 0, {inTrap: [Link]});
} else {
[Link][4] == 15 &&
[Link](4, 0, ([Link] * 2), ([Link] / 24), near.aim2);
}
}
} else {
if (testMode ? [Link] : (near.dist2 <=
1000)) {
[Link][4] == 15 &&
[Link](4, 0, ([Link] * 2), ([Link] / 24), near.aim2);
}
}
}
}
};
[Link] = function (findObj) {
if (!findObj || ![Link]) return;
if (!inGame) return;
if ([Link]) return;
[Link](() => {
let objAim = [Link](findObj, player, 0, 2);
let objDst = [Link](findObj, player, 0, 2);
if (getEl("weaponGrind").checked && objDst <=
[Link][[Link]].range + [Link]) return;
if (objDst <= 400 && near.dist2 <= 400) {
let danger = [Link]();
if (!danger && near.dist2 <=
[Link][[Link] || 5].range + ([Link] * 1.8)) {
//[Link](2, -([Link] / 2), ([Link]
/ 2), ([Link] / 18), objAim, 1);
[Link](2, 0, ([Link] * 2), ([Link]
/ 24), objAim, 1);
} else {
[Link][4] == 15 && [Link](4,
0, ([Link] * 2), ([Link] / 24), objAim, 1);
}
[Link] = true;
}
}, 1);
};
}
};
/* [Link] = function(findObj) {
if (!findObj || ![Link]) return;
if (!inGame) return;
if ([Link]) return;
[Link](() => {
let objAim = [Link](findObj, player, 0, 2);
let objDst = [Link](findObj, player, 0, 2);
class Instakill {
constructor() {
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = function(type) {
[Link] = false;
[Link] = true;
[Link] = true;
let instaLog = [type];
let backupNobull = [Link];
[Link] = false;
[Link](() => {
[Link]([Link]);
[Link](() => {
if ([Link] == 22 &&
getEl("backupNobull").checked) {
[Link] = true;
}
[Link]([Link]);
}, 1);
}, 1);
if (type == "rev") {
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(21, 1);
sendAutoGather();
[Link](()=> {
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(18, 1);
[Link](()=> {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}, 1);
} else if (type == "nobull") {
selectWeapon([Link][0]);
if (getEl("backupNobull").checked && backupNobull) {
buyEquip(7, 0);
buyEquip(18, 1);
} else {
buyEquip(6, 0);
buyEquip(21, 1);
}
sendAutoGather();
[Link](() => {
if ([Link] == 22) {
if (getEl("backupNobull").checked) {
[Link] = true;
}
buyEquip(6, 0);
buyEquip(21, 1);
} else {
buyEquip(53, 0);
}
selectWeapon([Link][1]);
buyEquip(21, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}, 1);
} else if (type == "normal") {
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(18, 1);
sendAutoGather();
[Link](() => {
buyEquip([Link][53] == 0 ? 53 : 6, 0);
selectWeapon([Link][1]);
buyEquip(21, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}, 1);
} else {
setTimeout(() => {
[Link] = false;
[Link] = false;
}, 50);
}
};
[Link] = function() {
[Link] = true;
[Link] = true;
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(21, 1);
sendAutoGather();
[Link](() => {
if ([Link][53] == 0 &&
getEl("turretCombat").checked) {
selectWeapon([Link][0]);
buyEquip(53, 0);
buyEquip(21, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
} else {
sendAutoGather();
[Link] = false;
[Link] = false;
}
}, 1);
};
[Link] = function() {
[Link] = true;
[Link] = true;
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(21, 1);
sendAutoGather();
[Link](() => {
if ([Link][53] == 0 &&
getEl("turretCombat").checked) {
selectWeapon([Link][0]);
buyEquip(53, 0);
buyEquip(21, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
} else {
sendAutoGather();
[Link] = false;
[Link] = false;
}
}, 1);
};
[Link] = function(type) {
[Link] = true;
[Link] = true;
if (type == "ageInsta") {
[Link] = false;
if ([Link][5] == 18) {
place(5, near.aim2);
}
packet("a", undefined, 1);
buyEquip(22, 0);
buyEquip(21, 1);
[Link](() => {
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(21, 1);
sendAutoGather();
[Link](() => {
sendUpgrade(12);
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(21, 1);
[Link](() => {
sendUpgrade(15);
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(21, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}, 1);
}, 1);
}, 1);
} else {
selectWeapon([Link][1]);
if ([Link][53] == 0 && near.dist2 <= 700 &&
[Link] != 22) {
buyEquip(53, 0);
} else {
buyEquip(20, 0);
}
buyEquip(11, 1);
sendAutoGather();
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}
};
[Link] = function() {
[Link] = true;
[Link] = true;
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(11, 1);
packet("a", near.aim2, 1);
if ([Link][1] == 15) {
[Link] = true;
sendAutoGather();
}
[Link](() => {
[Link] = false;
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(19, 1);
packet("a", near.aim2, 1);
if ([Link][1] != 15) {
sendAutoGather();
}
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
packet("a", undefined, 1);
}, 1);
}, 1);
};
[Link] = function() {
[Link] = true;
[Link] = true;
selectWeapon([Link][[10,
14].includes([Link][1]) ? 1 : 0]);
biomeGear();
buyEquip(11, 1);
packet("a", near.aim2, 1);
[Link](() => {
selectWeapon([Link][[10,
14].includes([Link][1]) ? 1 : 0]);
buyEquip(53, 0);
buyEquip(11, 1);
packet("a", near.aim2, 1);
[Link](() => {
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(19, 1);
sendAutoGather();
packet("a", near.aim2, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
packet("a", undefined, 1);
}, 1);
}, 1);
}, 1);
};
[Link] = function() {
[Link] = true;
[Link] = true;
[Link] = true;
selectWeapon([Link][1]);
buyEquip(53, 0);
buyEquip(11, 1);
sendAutoGather();
packet("a", near.aim2, 1);
[Link](() => {
[Link] = false;
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(19, 1);
packet("a", near.aim2, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
packet("a", undefined, 1);
}, 1);
}, 1);
};
[Link] = function() {
/*[Link] = true;
[Link] = true;
selectWeapon([Link][0]);
buyEquip(53, 0);
buyEquip(11, 1);
packet("a", near.aim2);
[Link](() => {
place(4, near.aim2);
selectWeapon([Link][1]);
biomeGear();
buyEquip(11, 1);
sendAutoGather();
packet("a", near.aim2);
[Link](() => {
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(19, 1);
packet("a", near.aim2);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
packet("a", undefined);
}, 1);
}, 1);
}, 1);*/
[Link] = true;
[Link] = true;
biomeGear();
buyEquip(11, 1);
packet("a", near.aim2, 1);
[Link](() => {
if ([Link][1] == 15) {
[Link] = true;
}
selectWeapon([Link][[9, 12, 13,
15].includes([Link][1]) ? 1 : 0]);
buyEquip(53, 0);
buyEquip(11, 1);
if ([9, 12, 13, 15].includes([Link][1])) {
sendAutoGather();
}
packet("a", near.aim2, 1);
place(4, near.aim2);
[Link](() => {
[Link] = false;
selectWeapon([Link][0]);
buyEquip(7, 0);
buyEquip(19, 1);
if (![9, 12, 13, 15].includes([Link][1])) {
sendAutoGather();
}
packet("a", near.aim2, 1);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
packet("a", undefined, 1);
}, 1);
}, 1);
}, 1);
};
[Link] = function(goto, OT) {
let slowDists = (weeeee) => weeeee * [Link];
let goal = {
a: goto - OT,
b: goto + OT,
c: goto - slowDists(1),
d: goto + slowDists(1),
e: goto - slowDists(2),
f: goto + slowDists(2),
g: goto - slowDists(4),
h: goto + slowDists(4)
};
let bQ = function(wwww, awwww) {
if (player.y2 >= [Link] / 2 -
[Link] / 2 && player.y2 <= [Link] / 2 + [Link] / 2
&& awwww == 0) {
buyEquip(31, 0);
} else {
buyEquip(wwww, awwww);
}
}
if ([Link]) {
let dst = near.dist2;
[Link] = true;
if (dst >= goal.a && dst <= goal.b) {
bQ(22, 0);
bQ(11, 1);
if ([Link] != [Link][[10,
14].includes([Link][1]) ? 1 : 0] || [Link] > -1) {
selectWeapon([Link][[10,
14].includes([Link][1]) ? 1 : 0]);
}
return {
dir: undefined,
action: 1
};
} else {
if (dst < goal.a) {
if (dst >= goal.g) {
if (dst >= goal.e) {
if (dst >= goal.c) {
bQ(40, 0);
bQ(10, 1);
if ([Link]) {
[Link] !=
[Link][1] && selectToBuild([Link][1]);
} else {
if (([Link] !=
[Link][[10, 14].includes([Link][1]) ? 1 : 0]) || [Link]
> -1) {
class Autobuy {
constructor(buyHat, buyAcc) {
[Link] = function() {
[Link]((id) => {
let find = findID(hats, id);
if (find && ![Link][id] && [Link] >=
[Link]) packet("c", 1, id, 0);
});
};
[Link] = function() {
[Link]((id) => {
let find = findID(accessories, id);
if (find && ![Link][id] && [Link] >=
[Link]) packet("c", 1, id, 1);
});
};
}
};
class Autoupgrade {
constructor() {
[Link] = function(upg) {
upg(3);
upg(17);
upg(31);
upg(23);
upg(9);
upg(38);
};
[Link] = function(upg) {
upg(3);
upg(17);
upg(31);
upg(23);
upg(10);
upg(38);
upg(4);
upg(25);
};
[Link] = function(upg) {
upg(5);
upg(17);
upg(32);
upg(23);
upg(9);
upg(38);
};
[Link] = function(upg) {
upg(5);
upg(17);
upg(32);
upg(23);
upg(10);
upg(38);
upg(28);
upg(25);
};
[Link] = function(upg) {
upg(7);
upg(17);
upg(31);
upg(23);
upg(9);
upg(34);
};
/* old functions */
[Link] = function(upg) {
upg(7);
upg(17);
upg(31);
upg(23);
upg(10);
upg(38);
upg(4);
upg(15);
};
};
};
class Damages {
constructor(items) {
// 0.75 1 1.125 1.5
[Link] = function(dmg, val) {
return dmg * val;
};
[Link] = function(dmg) {
return [[Link](dmg, 0.75), dmg, [Link](dmg,
1.125), [Link](dmg, 1.5)];
};
[Link] = [];
for (let i = 0; i < [Link]; i++) {
let wp = [Link][i];
let name = [Link](" ").length <= 1 ? [Link] :
([Link](" ")[0] + "_" + [Link](" ")[1]);
[Link]([Link](i > 8 ? [Link] :
[Link]));
this[name] = [Link][i];
}
}
}
// LOADING:
let UTILS = new Utils();
let items = new Items();
let objectManager = new Objectmanager(GameObject, gameObjects, UTILS,
config);
let store = new Store();
let hats = [Link];
let accessories = [Link];
let projectileManager = new ProjectileManager(Projectile, projectiles,
players, ais, objectManager, items, config, UTILS);
let aiManager = new AiManager(ais, AI, players, items, null, config,
UTILS);
let textManager = new Textmanager();
let lastDeath;
let minimapData;
let mapMarker = {};
let mapPings = [];
let tmpPing;
let pathFindTest = 0;
let grid = [];
let pathFind = {
active: false,
grid: 40,
scale: 1440,
x: 14400,
y: 14400,
chaseNear: false,
array: [],
lastX: [Link] / 2,
lastY: [Link] / 2
};
function sendChat(message) {
packet("6", [Link](0, 30));
}
} else if (isWeapon) {
[Link]({
class: "itemInfoReq",
text: ![Link] ? "primary" : "secondary",
parent: itemInfoHolder
});
} else {
for (let i = 0; i < [Link]; i += 2) {
[Link]({
class: "itemInfoReq",
html: [Link][i] + "<span class='itemInfoReqVal'>
x" + [Link][i + 1] + "</span>",
parent: itemInfoHolder
});
}
if ([Link]) {
[Link]({
class: "itemInfoLmt",
text: ([Link][[Link]] || 0) + "/"
+ ([Link] ? 99 : [Link]),
parent: itemInfoHolder
});
}
}
} else {
[Link]("visible");
}
}
// RESIZE:
[Link]("resize", [Link](resize));
function resize() {
screenWidth = [Link];
screenHeight = [Link];
let scaleFillNative = [Link](screenWidth / maxScreenWidth,
screenHeight / maxScreenHeight) * pixelDensity;
[Link] = screenWidth * pixelDensity;
[Link] = screenHeight * pixelDensity;
[Link] = screenWidth + "px";
[Link] = screenHeight + "px";
[Link](
scaleFillNative, 0,
0, scaleFillNative,
(screenWidth * pixelDensity - (maxScreenWidth *
scaleFillNative)) / 2,
(screenHeight * pixelDensity - (maxScreenHeight *
scaleFillNative)) / 2
);
}
resize();
// MOUSE INPUT:
const mals = [Link]('touch-controls-fullscreen');
[Link] = 'block';
[Link]("mousemove", gameInput, false);
function gameInput(e) {
mouseX = [Link];
mouseY = [Link];
}
let clicks = {
left: false,
middle: false,
right: false,
};
[Link]("mousedown", mouseDown, false);
function mouseDown(e) {
if (attackState != 1) {
attackState = 1;
if ([Link] == 0) {
[Link] = true;
} else if ([Link] == 1) {
[Link] = true;
} else if ([Link] == 2) {
[Link] = true;
}
}
}
[Link]("mouseup", [Link](mouseUp));
function mouseUp(e) {
if (attackState != 0) {
attackState = 0;
if ([Link] == 0) {
[Link] = false;
} else if ([Link] == 1) {
[Link] = false;
} else if ([Link] == 2) {
[Link] = false;
}
}
}
[Link]("wheel", wheel, false);
function wheel(e) {
if ([Link] < 0) {
[Link] = true;
} else {
[Link] = false;
}
}
// INPUT UTILS:
function getMoveDir() {
let dx = 0;
let dy = 0;
for (let key in moveKeys) {
let tmpDir = moveKeys[key];
dx += !!keys[key] * tmpDir[0];
dy += !!keys[key] * tmpDir[1];
}
return dx == 0 && dy == 0 ? undefined : Math.atan2(dy, dx);
}
function getSafeDir() {
if (!player)
return 0;
if (![Link]) {
lastDir = Math.atan2(mouseY - (screenHeight / 2), mouseX -
(screenWidth / 2));
}
return lastDir || 0;
}
function getAttackDir(debug) {
if (debug) {
if (!player)
return "0";
if ([Link] || (([Link] || (useWasd && near.dist2 <=
[Link][[Link][0]].range + [Link] * 1.8 && ![Link])) &&
[Link][[Link][0]] == 0))
lastDir = getEl("weaponGrind").checked ? "getSafeDir()" :
[Link] ? [Link] ? "(near.aim2 + [Link])" : "near.aim2" : "getSafeDir()";
else
if ([Link] && [Link][[Link][1] ==
10 ? [Link][1] : [Link][0]] == 0)
lastDir = "getSafeDir()";
else
if ([Link] && [Link][[Link]() ?
[Link][1] : [Link][0]] == 0)
lastDir = "[Link]";
else
if (![Link]) {
if ([Link]) return "undefined";
lastDir = "getSafeDir()";
}
return lastDir;
} else {
if (!player)
return 0;
if ([Link] || (([Link] || (useWasd && near.dist2 <=
[Link][[Link][0]].range + [Link] * 1.8 && ![Link])) &&
[Link][[Link][0]] == 0))
lastDir = getEl("weaponGrind").checked ? getSafeDir() :
[Link] ? [Link] ? (near.aim2 + [Link]) : near.aim2 : getSafeDir();
else
if ([Link] && [Link][[Link][1] ==
10 ? [Link][1] : [Link][0]] == 0)
lastDir = getSafeDir();
else
if ([Link] && [Link][[Link]() ?
[Link][1] : [Link][0]] == 0)
lastDir = [Link];
else
if (![Link]) {
if ([Link]) return undefined;
lastDir = getSafeDir();
}
return lastDir || 0;
}
}
function getVisualDir() {
if (!player)
return 0;
if ([Link] || (([Link] || (useWasd && near.dist2 <=
[Link][[Link][0]].range + [Link] * 1.8 && ![Link])) &&
[Link][[Link][0]] == 0))
lastDir = getEl("weaponGrind").checked ? getSafeDir() :
[Link] ? [Link] ? (near.aim2 + [Link]) : near.aim2 : getSafeDir();
else
if ([Link] && [Link][[Link][1] == 10 ?
[Link][1] : [Link][0]] == 0)
lastDir = getSafeDir();
else
if ([Link] && [Link][[Link]() ?
[Link][1] : [Link][0]] == 0)
lastDir = [Link];
else
if (![Link]) {
lastDir = getSafeDir();
}
return lastDir || 0;
}
// KEYS:
function keysActive() {
return ([Link] != "block" &&
[Link] != "block" &&
!menuCBFocus);
}
function toggleMenuChat() {
if ([Link] != "none") {
[Link] = "none";
if ([Link] != "") {
//commands[[Link](1)]
let cmd = function(command) {
return {
found: [Link]("/") &&
commands[[Link](1).split(" ")[0]],
fv: commands[[Link](1).split(" ")[0]]
}
}
let command = cmd([Link]);
if ([Link]) {
if (typeof [Link] === "function") {
[Link]([Link]);
}
} else {
sendChat([Link]);
}
[Link] = "";
[Link]();
} else {
if (menuCBFocus) {
[Link]();
} else {
[Link]();
}
}
}
}
function keyDown(event) {
let keyNum = [Link] || [Link] || 0;
if (player && [Link] && keysActive()) {
if (!keys[keyNum]) {
keys[keyNum] = 1;
macro[[Link]] = 1;
if (keyNum == 27) {
openMenu = !openMenu;
$("#menuDiv").toggle();
$("#menuChatDiv").toggle();
} else if (keyNum == 69) {
sendAutoGather();
} else if (keyNum == 67) {
updateMapMarker();
} else if ([Link][keyNum - 49] != undefined) {
[Link] = [Link][keyNum - 49];
} else if (moveKeys[keyNum]) {
sendMoveDir();
} else if ([Link] == "m") {
[Link] = ![Link];
} else if (keyNum == 85) {
packet("6", 'ml. 324/3%3|2');
} else if ([Link] == "z") {
[Link] = ![Link];
} else if ([Link] == "Z") {
typeof [Link] == "function" && [Link]();
} else if (keyNum == 32) {
packet("d", 1, getSafeDir(), 1);
packet("d", 0, getSafeDir(), 1);
} else if ([Link] == ",") {
[Link] = true;
}
}
}
}
addEventListener("keydown", [Link](keyDown));
function keyUp(event) {
if (player && [Link]) {
let keyNum = [Link] || [Link] || 0;
if (keyNum == 13) {
toggleMenuChat();
} else if (keysActive()) {
if (keys[keyNum]) {
keys[keyNum] = 0;
macro[[Link]] = 0;
if (moveKeys[keyNum]) {
sendMoveDir();
} else if ([Link] == ",") {
[Link] = false;
}
}
}
}
}
[Link]("keyup", [Link](keyUp));
function sendMoveDir() {
let newMoveDir = getMoveDir();
if (lastMoveDir == undefined || newMoveDir == undefined ||
[Link](newMoveDir - lastMoveDir) > 0.3) {
if (![Link]) {
packet("a", newMoveDir, 1);
}
lastMoveDir = newMoveDir;
}
}
// BUTTON EVENTS:
function bindEvents() {}
bindEvents();
function checkObject() {
let checkColl = [Link](tmp => [Link](tmp) &&
[Link]);
for (let y = 0; y < [Link]; y++) {
grid[y] = [];
for (let x = 0; x < [Link]; x++) {
let tmpXY = {
x: (player.x2 - ([Link] / 2)) +
(([Link] / [Link]) * x),
y: (player.y2 - ([Link] / 2)) +
(([Link] / [Link]) * y)
}
if ([Link]([Link] ? near : pathFind,
tmpXY, [Link] ? 2 : 0, 0) <= ([Link] ? 35 : 60)) {
[Link] = x;
[Link] = y;
grid[y][x] = 0;
continue;
}
let find = [Link](tmp => [Link](tmp, tmpXY,
0, 0) <= chechPathColl(tmp));
if (find) {
if ([Link]) {
grid[y][x] = 0;
continue;
}
grid[y][x] = 1;
} else {
grid[y][x] = 0;
}
}
}
}
function createPath() {
grid = [];
checkObject();
}
function Pathfinder() {
[Link] = ([Link] / 2) * 1.3;
if (![Link] && ([Link] ? [Link] : true)) {
if (near.dist2 <= [Link][[Link][0]].range) {
packet("a", undefined, 1);
} else {
createPath();
[Link](grid);
[Link]([0]);
[Link]();
[Link]((grid[0].length / 2), ([Link] / 2),
[Link], [Link], function(path) {
if (path === null) {
[Link] = [];
if (near.dist2 <=
[Link][[Link][0]].range) {
packet("a", undefined, 1);
} else {
packet("a", near.aim2, 1);
}
} else {
[Link] = path;
if ([Link] > 1) {
let tmpXY = {
x: (player.x2 - ([Link] / 2)) +
(([Link] / [Link]) * path[1].x),
y: (player.y2 - ([Link] / 2)) +
(([Link] / [Link]) * path[1].y)
}
packet("a", [Link](tmpXY, player, 0,
2), 1);
}
}
});
[Link]();
}
}
}
/** PATHFIND TEST */
// AUTOPUSH:
function autoPush() {
let nearTrap = [Link](tmp => [Link] && [Link] &&
[Link](player) && [Link](tmp, near, 0, 2) <= ([Link] +
[Link]() + 5)).sort(function(a, b) {
return [Link](a, near, 0, 2) - [Link](b, near, 0,
2);
})[0];
if (nearTrap) {
let spike = [Link](tmp => [Link] && [Link] &&
[Link](player) && [Link](tmp, nearTrap, 0, 0) <= ([Link] +
[Link] + [Link])).sort(function(a, b) {
return [Link](a, near, 0, 2) - [Link](b,
near, 0, 2);
})[0];
if (spike) {
let pos = {
x: spike.x + (250 * [Link]([Link](near,
spike, 2, 0))),
y: spike.y + (250 * [Link]([Link](near,
spike, 2, 0))),
x2: spike.x + (([Link](near, spike, 2, 0) +
[Link]) * [Link]([Link](near, spike, 2, 0))),
y2: spike.y + (([Link](near, spike, 2, 0) +
[Link]) * [Link]([Link](near, spike, 2, 0)))
};
let finds = [Link](tmp =>
[Link]).find((tmp) => {
let tmpScale = [Link]();
if (![Link] && [Link](tmp.x -
tmpScale, tmp.y - tmpScale, tmp.x + tmpScale, tmp.y + tmpScale, player.x2,
player.y2, pos.x2, pos.y2)) {
return true;
}
});
if (finds) {
if ([Link]) {
[Link] = false;
packet("a", lastMoveDir || undefined, 1);
}
} else {
[Link] = true;
[Link] = {
x: spike.x,
y: spike.y,
x2: pos.x2,
y2: pos.y2
};
let scale = ([Link] / 10);
if ([Link](player.x2 - scale, player.y2 -
scale, player.x2 + scale, player.y2 + scale, near.x2, near.y2, pos.x, pos.y)) {
packet("a", near.aim2, 1);
} else {
packet("a", [Link](pos, player, 2, 2), 1);
}
}
} else {
if ([Link]) {
[Link] = false;
packet("a", lastMoveDir || undefined, 1);
}
}
} else {
if ([Link]) {
[Link] = false;
packet("a", lastMoveDir || undefined, 1);
}
}
}
// SETUP GAME:
function setupGame(yourSID) {
keys = {};
macro = {};
playerSID = yourSID;
attackState = 0;
inGame = true;
packet("d", 0, getAttackDir(), 1);
[Link] = true;
if (firstSetup) {
firstSetup = false;
[Link] = 0;
}
}
// REMOVE PLAYER:
function removePlayer(id) {
for (let i = 0; i < [Link]; i++) {
if (players[i].id == id) {
// addMenuChText("Game", players[i].name + " left the
game", "yellow");
[Link](i, 1);
break;
}
}
}
// UPDATE HEALTH:
function updateHealth(sid, value) {
tmpObj = findPlayerBySID(sid);
if (tmpObj) {
[Link] = [Link];
[Link] = value;
[Link]();
if ([Link] > [Link]) {
[Link] = [Link] - [Link];
[Link]([sid, value, [Link]]);
} else {}
if ([Link] <= 0) {
/*[Link]((hmm) => {
[Link] = [Link];
});*/
}
}
}
// KILL PLAYER:
function killPlayer() {
petals = [];
inGame = false;
lastDeath = {
x: player.x,
y: player.y,
};
/*[Link] = "block";
[Link] = "block";
[Link] = "none";*/
if ([Link]) {
getEl("ot-sdk-btn-floating").[Link] = "none";
packet("M", {
name: lastsp[0],
moofoll: lastsp[1],
skin: lastsp[2]
});
}
}
// UPDATE AGE:
function updateAge(xp, mxp, age) {
if (xp != undefined)
[Link] = xp;
if (mxp != undefined)
[Link] = mxp;
if (age != undefined)
[Link] = age;
}
// UPDATE UPGRADES:
function updateUpgrades(points, age) {
[Link] = points;
[Link] = age;
if (points > 0) {
[Link] = 0;
[Link](upgradeHolder);
for (let i = 0; i < [Link]; ++i) {
if ([Link][i].age == age && (testMode ||
[Link][i].pre == undefined || [Link]([Link][i].pre)
>= 0)) {
let e = [Link]({
id: "upgradeItem" + i,
class: "actionBarItem",
onmouseout: function() {
showItemInfo();
},
parent: upgradeHolder
});
[Link] = getEl("actionBarItem" +
i).[Link];
[Link](i);
}
}
for (let i = 0; i < [Link]; ++i) {
if ([Link][i].age == age && (testMode ||
[Link][i].pre == undefined || [Link]([Link][i].pre) >= 0)) {
let tmpI = ([Link] + i);
let e = [Link]({
id: "upgradeItem" + tmpI,
class: "actionBarItem",
onmouseout: function() {
showItemInfo();
},
parent: upgradeHolder
});
[Link] = getEl("actionBarItem" +
tmpI).[Link];
[Link](tmpI);
}
}
for (let i = 0; i < [Link]; i++) {
(function(i) {
let tmpItem = getEl('upgradeItem' + i);
[Link] = function() {
if ([Link][i]) {
showItemInfo([Link][i], true);
} else {
showItemInfo([Link][i -
[Link]]);
}
};
[Link] = [Link](function() {
packet("H", i);
});
[Link](tmpItem);
})(tmpList[i]);
}
if ([Link]) {
[Link] = "block";
[Link] = "block";
[Link] = "SELECT ITEMS (" + points + ")";
} else {
[Link] = "none";
[Link] = "none";
showItemInfo();
}
} else {
[Link] = "none";
[Link] = "none";
showItemInfo();
}
}
function getDist(e, t) {
try {
return [Link]((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x)
- (e.x2 || e.x));
} catch (e) {
return Infinity;
}
}
function cdf(e, t) {
try {
return [Link]((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x)
- (e.x2 || e.x));
} catch (e) {
return Infinity;
}
}
function caf(e, t) {
try {
return Math.atan2((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x)
- (e.x2 || e.x));
} catch (e) {
return 0;
}
}
// KILL OBJECT:
function killObject(sid) {
let findObj = findObjectBySid(sid);
[Link](sid);
let n = findObj;
if ([Link]) {
let enemy = near;
let A = player;
let dist = cdf(A, enemy);
let dir = caf(A, enemy);
//code of bianos
let objAim = Math.atan2(findObj.y-player.y2, findObj.x-
player.x2);
let objDist = [Link](findObj.y-player.y2, findObj.x-
player.x2);
//
let ignore = [0, 0];
let place = function(t, f) {
checkPlace(t, f);
}
if (objDist <= 200 && getDist(player, tmpObj) <= 168 &&
tmpObj != player && [Link][[Link][0]] == 0) {
// BianosTick
bianosSpTick();
}
if ([Link]) {
// REPLACER:
if ([Link] && objDist <= 400) {
if ([Link] <= 0) {
if (![Link]) {
[Link] = true;
if (tmpObj != player) {
// addMenuChText("Game",
`${[Link]} {${[Link]}} Is Dead`, "yellow");
}
addDeadPlayer(tmpObj);
}
}
if (tmpObj == player) {
if ([Link] == 7 && (damaged == 5 ||
([Link] == 13 && damaged == 2))) {
if ([Link]) {
[Link] = false;
[Link] = true;
}
bullTicked = true;
}
if (inGame) {
let attackers = getAttacker(damaged);
let gearDmgs = [0.25, 0.45].map((val) => val *
[Link][[Link][0]].dmg * soldierMult());
let includeSpikeDmgs = !bullTicked &&
[Link](damaged);
let healTimeout = 140 - [Link];
let slowHeal = function(timer) {
setTimeout(() => {
healer();
}, timer);
}
if (getEl("healingBeta").checked) {
if ([Link]) {
let by = [Link]((tmp) => {
if (tmp.dist2 <= ([Link] <
9 ? 300 : 700)) {
tmpDir =
[Link](player, tmp, 2, 2);
if ([Link](tmpDir,
tmp.d2) <= [Link]) {
return tmp;
}
}
});
if ([Link]) {
let maxDamage = (includeSpikeDmgs ?
10 : 10);
if (damaged > maxDamage &&
([Link] - [Link]) > 1) {
[Link] = true;
[Link] = [Link];
let shame = 5;
if ([Link] < shame)
{
healer();
} else {
slowHeal(healTimeout);
}
} else {
slowHeal(healTimeout);
}
} else {
slowHeal(healTimeout);
}
} else {
slowHeal(healTimeout);
}
} else {
if (damaged >= (includeSpikeDmgs ? 8 : 20)
&& [Link] >= 25 && ([Link] - [Link]) > 1) {
[Link] = true;
[Link] = [Link];
let shame = 5;
if ([Link] < shame) {
healer();
} else {
slowHeal(healTimeout);
}
} else {
slowHeal(healTimeout);
}
}
if (damaged >= 20 && [Link] == 11)
[Link] = true;
}
} else {
if (![Link] && ([Link] == 5
|| ([Link] == 13 && [Link] == 2))) {
[Link] = true;
}
}
});
advHeal = [];
}
[Link]((tmp) => {
if (![Link] && player != tmp) {
[Link] = {
0: 0,
1: 0,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
10: 0,
11: 0,
12: 0,
13: 0,
14: 0,
15: 0,
53: 0,
};
}
if ([Link]) {
[Link] = 0;
}
if ([Link]) {
[Link] = 0;
}
[Link]();
});
if (inGame) {
if ([Link]) {
if ([Link]) {
[Link] = false;
if (near.dist2 <= 300 &&  && !
[Link](near)) {
if ([Link][53] == 0) {
[Link] = true;
[Link] = false;
//modLog("EmpAnti");
} else {
[Link] = false;
[Link] = true;
//modLog("SoldierAnti");
}
}
}
let prehit = [Link](tmp => [Link] &&
[Link] && [Link](player) && [Link](tmp, near, 0, 3) <=
([Link] + [Link])).sort(function(a, b) {
return [Link](a, near, 0, 2) -
[Link](b, near, 0, 2);
})[0];
if (prehit) {
if (near.dist3 <=
[Link][[Link][0]].range + [Link] * 1.8 && [Link])
{
[Link] = true;
[Link] = true;
if ([Link] && [Link][1] == 15
&& [Link][53] == 0 && [Link](player, near)) {
[Link] = true;
}
}
}
let antiSpikeTick = [Link](tmp => [Link]
&& [Link] &&  && [Link](tmp, player, 0, 3) <
([Link] + [Link])).sort(function(a, b) {
return [Link](a, player, 0, 2) -
[Link](b, player, 0, 2);
})[0];
if (antiSpikeTick && ![Link]) {
if (near.dist3 <= [Link][5].range +
[Link] * 1.8) {
my.anti0Tick = 1;
[Link] = "Anti Vel SpikeTick " +
[Link];
[Link] = 2000;
}
}
}
if (
(!useWasd
? true
: (([Link](true) >= 100
? [Link](true)
: [Link](false)) >=
([Link][1] == 10 ? 95 : 100)
)) &&
near.dist2 <=
[Link][[Link][1] == 10
? [Link][1]
: [Link][0]].range +
[Link] * 1.8 &&
([Link] || (!useWasd && [Link]([Link]() *
5) == 0)) &&
![Link] &&
![Link] &&
[Link][[Link][0]] == 0 &&
[Link][[Link][1]] == 0 &&
(!useWasd
? true
: getEl("instaType").value == "oneShot"
? [Link][53] <=
([Link][1] == 10 ? 0 : [Link])
: true) &&
[Link](player, near)
) {
buyEquip([Link][[Link][0]] == 0 ? getEl("weaponGrind").checked ? 40
: 7 : [Link] ? 6 : [Link] ? 26 : (getEl("antiBullType").value
== "abreload" && [Link] > 0) ? 11 : near.dist2 <= 300 ?
(getEl("antiBullType").value == "abalway" && [Link][[Link]] ==
0) ? 11 : 6 : biomeGear(1, 1), 0);
} else if ([Link]) {
buyEquip([Link][[Link] &&
[Link][1] == 10 ? [Link][1] : [Link][0]] == 0 ? 40 :
[Link] ? 6 : [Link] ? 26 : (getEl("antiBullType").value ==
"abreload" && [Link] > 0) ? 11 : near.dist2 <= 300 ?
(getEl("antiBullType").value == "abalway" && [Link][[Link]] ==
0) ? 11 : 6 : biomeGear(1, 1), 0);
}
}
} else if ([Link]) {
if ([Link] <=
[Link][[Link]].dmg ? false : ([Link][[Link][1]
== 10 ? [Link][1] : [Link][0]] == 0)) {
buyEquip(40, 0);
// Barbarian hat
if (near.dist2 > 300 && (!
[Link][[Link][1] == 10 ? [Link][1] : [Link][0]] ==
0)) {
buyEquip(26, 0);
}
}
else {
if (([Link] > 0 && ([Link] -
[Link]) % [Link] === 0 && [Link] != 45) ||
[Link]) {
buyEquip(7, 0);
} else {
buyEquip(([Link] || near.dist2
> 300 || ![Link]) ? 6 : 26, 0);
}
}
} else {
if ([Link] || [Link]) {
buyEquip([Link] ? 6 : 26, 0);
} else {
if (([Link] > 0 && ([Link] -
[Link]) % [Link] === 0 && [Link] != 45) ||
[Link]) {
buyEquip(7, 0);
} else {
if (near.dist2 <= 300) {
buyEquip([Link][[Link][0]] == 0 ? getEl("weaponGrind").checked ? 40
: 7 : [Link] ? 22 : 6, 0);
} else if ([Link]) {
buyEquip([Link][[Link] &&
[Link][1] == 10 ? [Link][1] : [Link][0]] == 0 ? 40 :
[Link] ? 22 : 6, 0);
}
}
} else if (near.dist2 <=
[Link][[Link][0]].range + [Link] * 1.8 && ![Link]) {
if (([Link] > 4320 && ([Link] -
[Link]) % [Link] === 0 && [Link] != 45) ||
[Link]) {
buyEquip(7, 0);
} else {
buyEquip([Link][[Link][0]]
== 0 ? 7 : [Link] ? 22 : 6, 0);
}
} else if ([Link]) {
if ([Link] <=
[Link][[Link]].dmg ? false : ([Link][[Link][1]
== 10 ? [Link][1] : [Link][0]] == 0)) {
buyEquip(40, 0);
} else {
if (([Link] > 4320 && ([Link]
- [Link]) % [Link] === 0 && [Link] != 45) ||
[Link]) {
buyEquip(7, 0);
} else {
buyEquip([Link] ? 22 : 6, 0);
}
}
} else {
if ([Link]) {
buyEquip(22, 0);
} else {
if (([Link] > 4320 && ([Link]
- [Link]) % [Link] === 0 && [Link] != 45) ||
[Link]) {
buyEquip(7, 0);
} else {
buyEquip(6, 0);
}
}
}
}
if ([Link] || [Link]) {
if ([Link]) {
buyEquip(0, 1);
} else if ([Link]) {
buyEquip(11, 1);
}
} else if (near.dist2 <=
[Link][[Link][0]].range + [Link] * 1.8 && ![Link]) {
buyEquip(0, 1);
} else if ([Link]) {
buyEquip(0, 1);
} else {
buyEquip(11, 1);
}
}
if ([Link] != "block" && ![Link] &&
![Link]) {
if (useWasd) {
wasdGears();
} else {
hatChanger();
accChanger();
}
}
//lastMoveDir = getSafeDir();
//packet("a", lastMoveDir, 1);
if ([Link] && [Link] && ![Link] && !
[Link]) {
autoPush();
} else {
if ([Link]) {
[Link] = false;
packet("a", lastMoveDir || undefined, 1);
}
}
if ([Link]) {
setTimeout(() => {
clearConsole()
}, 50)
}
if (![Link] && [Link]) {
Pathfinder();
}
if ([Link]) {
[Link] = false;
}
if ([Link]) {
[Link] = false;
}
if ([Link]) {
[Link] = false;
}
if ([Link]) {
[Link] = false;
}
if (my.anti0Tick > 0) {
my.anti0Tick--;
}
if ([Link]) {
[Link] = false;
}
if ([Link]) {
[Link] = false;
}
}
}
if ([Link]) {
[Link]((bots) => {
if (true) {
bots[0].ssend("player", player, near, botIDS);
}
});
}
}
for(var i1 = 0; i1 < [Link]; i1++) {
if (gameObjects[i1].active && gameObjects[i1].health > 0 &&
[Link](gameObjects[i1], player, 0, 2) < 130 && getEl("antipush").checked)
{ // || gameObjects[i1].buildHealth <= [Link][[Link]].dmg)
// ADD AI:
function loadAI(data) {
for (let i = 0; i < [Link]; ++i) {
ais[i].forcePos = !ais[i].visible;
ais[i].visible = false;
}
if (data) {
let tmpTime = [Link]();
for (let i = 0; i < [Link];) {
tmpObj = findAIBySID(data[i]);
if (tmpObj) {
[Link] = data[i + 1];
tmpObj.t1 = (tmpObj.t2 === undefined) ? tmpTime :
tmpObj.t2;
tmpObj.t2 = tmpTime;
tmpObj.x1 = tmpObj.x;
tmpObj.y1 = tmpObj.y;
tmpObj.x2 = data[i + 2];
tmpObj.y2 = data[i + 3];
tmpObj.d1 = (tmpObj.d2 === undefined) ? data[i + 4] :
tmpObj.d2;
tmpObj.d2 = data[i + 4];
[Link] = data[i + 5];
[Link] = 0;
[Link] = true;
} else {
tmpObj = [Link](data[i + 2], data[i + 3],
data[i + 4], data[i + 1]);
tmpObj.x2 = tmpObj.x;
tmpObj.y2 = tmpObj.y;
tmpObj.d2 = [Link];
[Link] = data[i + 5];
if (![Link][data[i + 1]].name)
[Link] = [Link][data[i + 6]];
[Link] = true;
[Link] = data[i];
[Link] = true;
}
i += 7;
}
}
}
// ANIMATE AI:
function animateAI(sid) {
tmpObj = findAIBySID(sid);
if (tmpObj) [Link]();
}
// GATHER ANIMATION:
function gatherAnimation(sid, didHit, index) {
tmpObj = findPlayerBySID(sid);
if (tmpObj) {
[Link](didHit, index);
[Link] = index;
[Link] = 1;
if (didHit) {
let tmpObjects = [Link];
[Link] = [];
[Link](() => {
// refind
tmpObj = findPlayerBySID(sid);
let val = [Link][index].dmg *
([Link][tmpObj[(index < 9 ? "prima" : "seconda") +
"ryVariant"]].val) * ([Link][index].sDmg || 1) * ([Link] == 40 ?
3.3 : 1);
[Link]((healthy) => {
[Link] -= val;
});
}, 1);
}
}
}
// SHOOT TURRET:
function shootTurret(sid, dir) {
tmpObj = findObjectBySid(sid);
if (tmpObj) {
if ([Link]) {
[Link] = dir;
} else {
[Link] = dir;
}
[Link] += [Link] * [Link](dir +
[Link]);
[Link] += [Link] * [Link](dir +
[Link]);
}
}
// ADD PROJECTILE:
function addProjectile(x, y, dir, range, speed, indx, layer, sid) {
[Link](x, y, dir, range, speed, indx,
null, null, layer, inWindow).sid = sid;
[Link]([Link](arguments));
}
// REMOVE PROJECTILE:
function remProjectile(sid, range) {
for (let i = 0; i < [Link]; ++i) {
if (projectiles[i].sid == sid) {
projectiles[i].range = range;
let tmpObjects = [Link];
[Link] = [];
[Link](() => {
let val = projectiles[i].dmg;
[Link]((healthy) => {
if ([Link]) {
[Link] -= val;
}
});
}, 1);
}
}
}
function setAlliancePlayers(data) {
alliancePlayers = data;
}
// STORE MENU:
function updateStoreItems(type, id, index) {
if (index) {
if (!type)
[Link][id] = 1;
else {
[Link] = id;
}
} else {
if (!type)
[Link][id] = 1,
id == 7 && ([Link] = true); // testing perfect
bulltick...
else {
[Link] = id;
}
}
}
// SEND MESSAGE:
function receiveChat(sid, message) {
if (message === 'zatuzatu -o-' && [Link][[Link][0]]
== 0 && [Link][[Link][1]] == 0) {
packet("6", "");
[Link] = true;
selectWeapon([Link][0]);
buyEquip(7, 0);
sendAutoGather();
[Link](() => {
selectWeapon([Link][1]);
buyEquip([Link][53] == 0 ? 53 : 6, 0);
[Link](() => {
sendAutoGather();
[Link] = false;
[Link] = false;
}, 1);
}, 1);
}
// SEND MESSAGE:
let tmpPlayer = findPlayerBySID(sid);
if (tmpPlayer) {
addMenuChText(`${[Link]} {${[Link]}}`, message,
"white");
if ([Link]) {
[Link](new addCh(tmpPlayer.x, tmpPlayer.y, message,
tmpPlayer));
} else {
[Link] = ((text) => {
let tmpString;
[Link]((list) => {
if ([Link](list) > -1) {
tmpString = "";
for (var y = 0; y < [Link]; ++y) {
tmpString += [Link] ? "o" : "M";
}
var re = new RegExp(list, 'g');
text = [Link](re, tmpString);
}
});
return text;
})(message);
[Link] = [Link];
}
} else {
addMenuChText(`${"Anonymous"} {null}`, message, "white");
}
}
// MINIMAP:
function updateMinimap(data) {
minimapData = data;
}
// BOT:
let bots = [];
let ranLocation = {
x: [Link](35, 14365),
y: [Link](35, 14365)
};
setInterval(() => {
ranLocation = {
x: [Link](35, 14365),
y: [Link](35, 14365)
};
}, 60000);
class Bot {
constructor(id, sid, hats, accessories) {
[Link] = id;
[Link] = sid;
[Link] = null;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = [];
[Link] = [];
this.dist2 = 0;
this.aim2 = 0;
[Link] = 0;
[Link] = {};
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = {};
for (let i = 0; i < [Link]; ++i) {
if (accessories[i].price <= 0)
[Link][accessories[i].id] = 1;
}
[Link] = {};
for (let i = 0; i < [Link]; ++i) {
if (hats[i].price <= 0)
[Link][hats[i].id] = 1;
}
[Link] = function(moofoll) {
[Link] = 0;
[Link] = [];
[Link] = [];
[Link] = true;
[Link] = true;
[Link] = false;
[Link] = false;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = {};
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = -1;
[Link] = 0;
[Link] = {};
[Link] = 0;
[Link] = 300;
[Link] = 0;
[Link] = 1;
[Link] = 0;
[Link] = 2;
[Link] = 0;
this.x = 0;
this.y = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 1;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 0;
[Link] = 100;
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link]();
[Link](moofoll);
[Link] = [0, 3, 6, 10];
[Link] = [0];
[Link] = 0;
[Link] = [];
[Link] = {};
[Link] = "";
};
// RESET RESOURCES:
[Link] = function(moofoll) {
for (let i = 0; i < [Link]; ++i) {
this[[Link][i]] = moofoll ? 100 : 0;
}
};
// SET DATA:
[Link] = function(data) {
[Link] = data[0];
[Link] = data[1];
[Link] = data[2];
this.x = data[3];
this.y = data[4];
[Link] = data[5];
[Link] = data[6];
[Link] = data[7];
[Link] = data[8];
[Link] = data[9];
};
// SHAME SYSTEM:
[Link] = function() {
if ([Link] < [Link]) {
if ([Link]) {
let timeSinceHit = [Link] - [Link];
[Link] = 0;
if (timeSinceHit < 2) {
[Link]++;
} else {
[Link] = [Link](0, [Link] -
2);
}
}
} else if ([Link] > [Link]) {
[Link] = [Link];
}
};
[Link] = function(websc) {
[Link]();
};
class BotObject {
constructor(sid) {
[Link] = sid;
// INIT:
[Link] = function(x, y, dir, scale, type, data, owner) {
data = data || {};
[Link] = true;
this.x = x;
this.y = y;
[Link] = scale;
[Link] = owner;
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link];
[Link] = [Link] != undefined;
};
}
};
class BotObjManager {
constructor(botObj, fOS) {
// DISABLE OBJ:
[Link] = function(obj) {
[Link] = false;
if ([Link]) {} else {
[Link] = false;
}
};
// ADD NEW:
let tmpObj;
[Link] = function(sid, x, y, dir, s, type, data, setSID,
owner) {
tmpObj = fOS(sid);
if (!tmpObj) {
tmpObj = [Link]((tmp) => ![Link]);
if (!tmpObj) {
tmpObj = new BotObject(sid);
[Link](tmpObj);
}
}
if (setSID) {
[Link] = sid;
}
[Link](x, y, dir, s, type, data, owner);
};
// DISABLE BY SID:
[Link] = function(sid) {
let find = fOS(sid);
if (find) {
[Link](find);
}
};
function botSpawn(id) {
let bot;
if (testMode) {
return;
bot = id && new
WebSocket(`[Link]
} else {
bot = id && new WebSocket([Link]("&")[0] + "&token=" +
encodeURIComponent(id));
}
let botPlayer = new Map();
let botSID;
let botObj = [];
let nearObj = [];
let bD = {
x: 0,
y: 0,
inGame: false,
closeSocket: false,
whyDie: ""
};
let oldXY = {
x: 0,
y: 0,
};
[Link] = "arraybuffer";
[Link] = true;
[Link] = function(type) {
// EXTRACT DATA ARRAY:
let data = [Link](arguments, 1);
// SEND MESSAGE:
let binary = [Link]([type, data]);
[Link](binary);
};
[Link] = function() {
[Link]("M", {
name: "AAAAAAAAAAAAAAA",
moofoll: 1,
skin: "__proto__"
});
};
[Link] = function(index) {
[Link]("H", index);
};
[Link] = function(id, a) {
try {
let item = [Link][[Link][id]];
if ([Link][[Link]] == undefined ? true
: [Link][[Link]] < ([Link] ? 99 : [Link] ?
[Link] : 99)) {
[Link]("G", [Link][id]);
[Link]("c", 1, a);
[Link]("G", [Link], true);
}
} catch (e) {
}
};
[Link] = function(id, index) {
let nID = 0;
if ([Link] && [Link]) {
if (index == 0) {
if ([Link][id]) {
if ([Link] != id) {
[Link]("c", 0, id, 0);
}
} else {
let find = findID(hats, id);
if (find) {
if ([Link] >= [Link]) {
[Link]("c", 1, id, 0);
[Link]("c", 0, id, 0);
} else {
if ([Link] != nID) {
[Link]("c", 0, nID, 0);
}
}
} else {
if ([Link] != nID) {
[Link]("c", 0, nID, 0);
}
}
}
} else if (index == 1) {
if ([Link][id]) {
if ([Link] != id) {
[Link]("c", 0, id, 1);
}
} else {
let find = findID(accessories, id);
if (find) {
if ([Link] >= [Link]) {
[Link]("c", 1, id, 1);
[Link]("c", 0, id, 1);
} else {
if ([Link] != 0) {
[Link]("c", 0, 0, 1);
}
}
} else {
if ([Link] != 0) {
[Link]("c", 0, 0, 1);
}
}
}
}
}
};
[Link] = function() {
if (botPlayer.y2 >= [Link] / 2 - [Link] / 2
&& botPlayer.y2 <= [Link] / 2 + [Link] / 2) {
[Link](31, 0);
} else {
if ([Link] == undefined) {
[Link](22, 0);
} else {
if (botPlayer.y2 <= [Link]) {
[Link](15, 0);
} else {
[Link](12, 0);
}
}
}
};
let heal = function() {
let healthBased = function() {
if ([Link] == 100)
return 0;
if ([Link] != 45 && [Link] != 56)
{
return [Link]((100 - [Link]) /
[Link][[Link][0]].healing);
}
return 0;
};
for (let i = 0; i < healthBased(); i++) {
[Link](0, [Link]);
}
};
[Link] = function(message) {
let data = new Uint8Array([Link]);
let parsed = [Link](data);
let type = parsed[0];
data = parsed[1];
if (type == "io-init") {
[Link]();
}
if (type == "C") {
botSID = data[0];
}
if (type == "D") {
if (data[1]) {
botPlayer = new Bot(data[0][0], data[0][1], hats,
accessories);
[Link](data[0]);
[Link] = true;
[Link] = true;
botPlayer.x2 = undefined;
botPlayer.y2 = undefined;
[Link](1);
oldXY = {
x: data[0][3],
y: data[0][4]
}
[Link] = true;
[Link]("K", 1);
if ([Link]) {
[Link] = false;
[Link](bD);
}
}
}
if (type == "P") {
[Link]();
[Link] = false;
[Link] = false;
}
if (type == "a") {
let tmpData = data[0];
[Link]++;
[Link] = [];
[Link] = [];
nearObj = [];
for (let i = 0; i < [Link];) {
if (tmpData[i] == [Link]) {
botPlayer.x2 = tmpData[i + 1];
botPlayer.y2 = tmpData[i + 2];
botPlayer.d2 = tmpData[i + 3];
[Link] = tmpData[i + 4];
[Link] = tmpData[i + 5];
[Link] = tmpData[i + 6];
[Link] = tmpData[i + 7];
[Link] = tmpData[i + 8];
[Link] = tmpData[i + 9];
[Link] = tmpData[i + 10];
[Link] = tmpData[i + 11];
[Link] = tmpData[i + 12];
[Link] = true;
bD.x2 = botPlayer.x2;
bD.y2 = botPlayer.y2;
}
i += 13;
}
if ([Link]) {
[Link](bot);
}
if ([Link] != "") {
[Link](bot, [Link]);
[Link] = "";
}
if ([Link]) {
if ([Link]) {
if ([Link] != [Link] &&
([Link] % 9 === 0)) {
[Link] && ([Link]("N"));
[Link]("10", [Link]);
}
}
if ([Link]) {
if ([Link] > 0) {
if ([Link] > 0) {
let gotoDist =
[Link](breakObjects[0], botPlayer, 0, 2);
let gotoAim =
[Link](breakObjects[0], botPlayer, 0, 2);
nearObj = [Link]((e) => [Link] &&
(findSID(breakObjects, [Link]) ? true : !([Link] && ([Link] == [Link] ||
[Link]([Link])))) && [Link] && [Link](e, botPlayer,
0, 2) <= ([Link][[Link]].range + [Link])).sort(function(a,
b) {
return [Link](a, botPlayer, 0,
2) - [Link](b, botPlayer, 0, 2);
})[0];
if (nearObj) {
let isPassed =
[Link](breakObjects[0], nearObj, 0, 0);
if ((gotoDist - isPassed) > 0) {
if (findSID(breakObjects,
[Link]) ? true : ([Link] || [Link] || [Link])) {
if ([Link] !=
undefined) {
[Link] =
undefined;
[Link]("a",
[Link]);
}
} else {
[Link] = gotoAim;
[Link]("a",
[Link]);
}
if ([Link] !=
[Link](nearObj, botPlayer, 0, 2)) {
[Link] =
[Link](nearObj, botPlayer, 0, 2);
[Link]("D",
[Link]);
}
[Link](40, 0);
[Link](11, 1);
} else {
[Link] = gotoAim;
[Link]("a", [Link]);
[Link]();
[Link](11, 1);
}
} else {
[Link] = gotoAim;
[Link]("a", [Link]);
[Link]();
[Link](11, 1);
}
if (gotoDist > 300) {
if ([Link](oldXY, botPlayer, 0,
2) > 90) {
let aim = [Link](oldXY,
botPlayer, 0, 2);
[Link](3, aim + ([Link] /
2.3));
[Link](3, aim - ([Link] /
2.3));
[Link](3, aim);
oldXY = {
x: botPlayer.x2,
y: botPlayer.y2
};
}
}
} else {
if ([Link] != undefined) {
[Link] = undefined;
[Link]("a", [Link]);
}
nearObj = [Link]((e) => [Link] &&
(findSID(breakObjects, [Link]) ? true : !([Link] && ([Link] == [Link] ||
[Link]([Link])))) && [Link] && [Link](e, botPlayer,
0, 2) <= ([Link][[Link]].range + [Link])).sort(function(a,
b) {
return [Link](a, botPlayer, 0,
2) - [Link](b, botPlayer, 0, 2);
})[0];
if (nearObj) {
if ([Link] !=
[Link](nearObj, botPlayer, 0, 2)) {
[Link] =
[Link](nearObj, botPlayer, 0, 2);
[Link]("D", [Link]);
}
[Link](40, 0);
[Link](11, 1);
} else {
[Link]();
[Link](11, 1);
}
}
} else {
if ([Link] != undefined) {
[Link] = undefined;
[Link]("a", [Link]);
}
}
}
}
}
if (type == "H") {
let tmpData = data[0];
for (let i = 0; i < [Link];) {
[Link](tmpData[i], tmpData[i + 1], tmpData[i
+ 2], tmpData[i + 3], tmpData[i + 4],
tmpData[i + 5], [Link][tmpData[i
+ 6]], true, (tmpData[i + 7] >= 0 ? {
sid: tmpData[i + 7]
} : null));
i += 8;
}
}
if (type == "N") {
let index = data[0];
let value = data[1];
if (botPlayer) {
botPlayer[index] = value;
}
}
if (type == "O") {
if (data[0] == botSID) {
[Link] = [Link];
[Link] = data[1];
[Link]();
if ([Link] > [Link]) {
if ([Link] < 5) {
heal();
} else {
setTimeout(() => {
heal();
}, 70);
}
}
}
}
if (type == "Q") {
let sid = data[0];
[Link](sid);
}
if (type == "R") {
let sid = data[0];
if ([Link]) [Link](sid);
}
if (type == "S") {
let index = data[0];
let value = data[1];
if (botPlayer) {
[Link][index] = value;
}
}
if (type == "U") {
if (data[0] > 0) {
if ([Link] == 0) {
[Link](3);
} else if ([Link] == 1) {
[Link](17);
} else if ([Link] == 2) {
[Link](31);
} else if ([Link] == 3) {
[Link](27);
} else if ([Link] == 4) {
[Link](9);
} else if ([Link] == 5) {
[Link](38);
} else if ([Link] == 6) {
[Link](4);
} else if ([Link] == 7) {
[Link](25);
}
[Link]++;
}
}
if (type == "V") {
let tmpData = data[0];
let wpn = data[1];
if (tmpData) {
if (wpn) [Link] = tmpData;
else [Link] = tmpData;
}
[Link]("G", [Link][0], true);
}
if (type == "5") {
let type = data[0];
let id = data[1];
let index = data[2];
if (index) {
if (!type)
[Link][id] = 1;
else
[Link] = id;
} else {
if (!type)
[Link][id] = 1;
else
[Link] = id;
}
}
};
[Link] = function() {
[Link] = false;
[Link] = false;
};
}
// RENDER LEAF:
function renderLeaf(x, y, l, r, ctxt) {
let endX = x + (l * [Link](r));
let endY = y + (l * [Link](r));
let width = l * 0.4;
[Link](x, y);
[Link]();
[Link](((x + endX) / 2) + (width * [Link](r +
[Link] / 2)),
((y + endY) / 2) + (width * [Link](r +
[Link] / 2)), endX, endY);
[Link](((x + endX) / 2) - (width * [Link](r +
[Link] / 2)),
((y + endY) / 2) - (width * [Link](r +
[Link] / 2)), x, y);
[Link]();
[Link]();
[Link]();
}
// RENDER CIRCLE:
function renderCircle(x, y, scale, tmpContext, dontStroke, dontFill) {
tmpContext = tmpContext || mainContext;
[Link]();
[Link](x, y, scale, 0, 2 * [Link]);
if (!dontFill) [Link]();
if (!dontStroke) [Link]();
}
function renderHealthCircle(x, y, scale, tmpContext, dontStroke,
dontFill) {
tmpContext = tmpContext || mainContext;
[Link]();
[Link](x, y, scale, 0, 2 * [Link]);
if (!dontFill) [Link]();
if (!dontStroke) [Link]();
}
// RENDER RECTANGLE:
function renderRect(x, y, w, h, ctxt, dontStroke, dontFill) {
if (!dontFill) [Link](x - (w / 2), y - (h / 2), w, h);
if (!dontStroke) [Link](x - (w / 2), y - (h / 2), w, h);
}
// RENDER RECTCIRCLE:
function renderRectCircle(x, y, s, sw, seg, ctxt, dontStroke, dontFill)
{
[Link]();
[Link](x, y);
seg = [Link](seg / 2);
for (let i = 0; i < seg; i++) {
renderRect(0, 0, s * 2, sw, ctxt, dontStroke, dontFill);
[Link]([Link] / seg);
}
[Link]();
}
// RENDER BLOB:
function renderBlob(ctxt, spikes, outer, inner) {
let rot = [Link] / 2 * 3;
let x, y;
let step = [Link] / spikes;
let tmpOuter;
[Link]();
[Link](0, -inner);
for (let i = 0; i < spikes; i++) {
tmpOuter = [Link](outer + 0.9, outer * 1.2);
[Link]([Link](rot + step) * tmpOuter,
[Link](rot + step) * tmpOuter,
[Link](rot + (step * 2)) * inner,
[Link](rot + (step * 2)) * inner);
rot += step * 2;
}
[Link](0, -inner);
[Link]();
}
// RENDER TRIANGLE:
function renderTriangle(s, ctx) {
ctx = ctx || mainContext;
let h = s * ([Link](3) / 2);
[Link]();
[Link](0, -h / 2);
[Link](-s / 2, h / 2);
[Link](s / 2, h / 2);
[Link](0, -h / 2);
[Link]();
[Link]();
}
// RENDER PLAYERS:
function renderDeadPlayers(xOffset, yOffset) {
[Link] = "#91b2db";
[Link](dead => [Link]).forEach((dead) => {
[Link](delta);
[Link] = [Link];
[Link] = outlineColor;
[Link]();
[Link](dead.x - xOffset, dead.y - yOffset);
// RENDER PLAYER:
[Link]([Link]);
[Link]([Link] / [Link], [Link] /
[Link]);
renderDeadPlayer(dead, mainContext);
[Link]();
//[Link] = "#ccc";
//[Link] = "#999";
[Link](dead.x - xOffset - (tmpW / 2), dead.y -
yOffset - (tmpH / 2) + ([Link] * 1.5), tmpW, tmpH, 6);
[Link]();
[Link]();
*/
// same color in bundle
//aaaaaaaaaa [Link] =
"#91b2db";
});
}
// RENDER PLAYERS:
function renderPlayers(xOffset, yOffset, zIndex) {
[Link] = 1;
[Link] = "#91b2db";
for (var i = 0; i < [Link]; ++i) {
tmpObj = players[i];
if ([Link] == zIndex) {
[Link](delta);
if ([Link]) {
[Link] += (0.002 * delta);
tmpDir = (![Link] && !useWasd && tmpObj ==
player) ? [Link] ? getVisualDir() : getSafeDir() : ([Link] || 0);
[Link]();
[Link](tmpObj.x - xOffset, tmpObj.y -
yOffset);
// RENDER PLAYER:
[Link](tmpDir + [Link]);
renderPlayer(tmpObj, mainContext);
[Link]();
}
}
}
}
// TAIL/CAPE:
if ([Link] > 0) {
renderTail([Link], ctxt, obj);
}
[Link][[Link][[Link]].projectile], mainContext);
}
}
// HANDS:
[Link] = [Link][[Link]];
renderCircle([Link] * [Link](handAngle), ([Link] *
[Link](handAngle)), 14);
renderCircle(([Link] * oHandDist) * [Link](-handAngle *
oHandAngle),
([Link] * oHandDist) * [Link](-handAngle *
oHandAngle), 14);
[Link][[Link][[Link]].projectile], mainContext);
}
}
// BUILD ITEM:
if ([Link] >= 0) {
var tmpSprite = getItemSprite([Link][[Link]]);
[Link](tmpSprite, [Link] -
[Link][[Link]].holdOffset, -[Link] / 2);
}
// BODY:
renderCircle(0, 0, [Link], ctxt);
// SKIN:
if ([Link] > 0) {
[Link]([Link] / 2);
renderSkin([Link], ctxt, null, obj);
}
}
// RENDER SKIN:
function renderTextureSkin(index, ctxt, parentSkin, owner) {
if (!(tmpSkin = skinSprites[index + (txt ? "lol" : 0)])) {
var tmpImage = new Image();
[Link] = function() {
[Link] = true,
[Link] = null
}
,
[Link] = setSkinTextureImage(index, "hat", index),
skinSprites[index + (txt ? "lol" : 0)] = tmpImage,
tmpSkin = tmpImage
}
var tmpObj = parentSkin||skinPointers[index];
if (!tmpObj) {
for (var i = 0; i < [Link]; ++i) {
if (hats[i].id == index) {
tmpObj = hats[i];
break;
}
}
skinPointers[index] = tmpObj;
}
if ([Link])
[Link](tmpSkin, -[Link]/2, -[Link]/2,
[Link], [Link]);
if (!parentSkin && [Link]) {
[Link]();
[Link]([Link]);
renderSkin(index + "_top", ctxt, tmpObj, owner);
[Link]();
}
}
var FlareZHat = {
7: "[Link]
15: "[Link]
40: "[Link]
26: "[Link]
55: "[Link]
20: "[Link]
};
// RENDER PLAYER:
function renderPlayer(obj, ctxt) {
ctxt = ctxt || mainContext;
[Link] = outlineWidth;
[Link] = "miter";
let handAngle = ([Link] / 4) *
([Link][[Link]].armS || 1);
let oHandAngle = ([Link] < 0) ?
([Link][[Link]].hndS || 1) : 1;
let oHandDist = ([Link] < 0) ?
([Link][[Link]].hndD || 1) : 1;
// TAIL/CAPE:
if ([Link] > 0) {
renderTail([Link], ctxt, obj);
}
[Link][[Link][[Link]].projectile], mainContext);
}
}
// HANDS:
[Link] = [Link][[Link]];
renderCircle([Link] * [Link](handAngle), ([Link] *
[Link](handAngle)), 14);
renderCircle(([Link] * oHandDist) * [Link](-handAngle *
oHandAngle),
([Link] * oHandDist) * [Link](-handAngle *
oHandAngle), 14);
[Link][[Link][[Link]].projectile], mainContext);
}
}
// BUILD ITEM:
if ([Link] >= 0) {
var tmpSprite = getItemSprite([Link][[Link]]);
[Link](tmpSprite, [Link] -
[Link][[Link]].holdOffset, -[Link] / 2);
}
// BODY:
renderCircle(0, 0, [Link], ctxt);
// SKIN:
if ([Link] > 0) {
[Link]([Link] / 2);
renderSkin([Link], ctxt, null, obj);
}
// RENDER SKINS:
let skinSprites = {};
let skinPointers = {};
let tmpSkin;
function renderSkin(index, ctxt, parentSkin, owner) {
tmpSkin = skinSprites[index];
if (!tmpSkin) {
let tmpImage = new Image();
[Link] = function() {
[Link] = true;
[Link] = null;
};
[Link] = "[Link] + index +
".png";
skinSprites[index] = tmpImage;
tmpSkin = tmpImage;
}
let tmpObj = parentSkin || skinPointers[index];
if (!tmpObj) {
for (let i = 0; i < [Link]; ++i) {
if (hats[i].id == index) {
tmpObj = hats[i];
break;
}
}
skinPointers[index] = tmpObj;
}
if ([Link])
[Link](tmpSkin, -[Link] / 2, -[Link] / 2,
[Link], [Link]);
if (!parentSkin && [Link]) {
[Link]();
[Link]([Link]);
renderSkin(index + "_top", ctxt, tmpObj, owner);
[Link]();
}
}
// RENDER TAIL:
let accessSprites = {};
let accessPointers = {};
// RENDER TOOL:
let toolSprites = {};
// RENDER PROJECTILES:
function renderProjectiles(layer, xOffset, yOffset) {
for (let i = 0; i < [Link]; i++) {
tmpObj = projectiles[i];
if ([Link] && [Link] == layer && [Link])
{
[Link](delta);
if ([Link] && isOnScreen(tmpObj.x - xOffset,
tmpObj.y - yOffset, [Link])) {
[Link]();
[Link](tmpObj.x - xOffset, tmpObj.y -
yOffset);
[Link]([Link]);
renderProjectile(0, 0, tmpObj, mainContext, 1);
[Link]();
}
}
};
}
// RENDER PROJECTILE:
let projectileSprites = {};
// RENDER AI:
let aiSprites = {};
// MIDDLE RIVER:
let tmpW = [Link] + padding;
let tmpY = ([Link] / 2) - yOffset - (tmpW / 2);
if (tmpY < maxScreenHeight && tmpY + tmpW > 0) {
[Link](0, tmpY, maxScreenWidth, tmpW);
}
}
function getResSprite(obj) {
let biomeID = (obj.y >= [Link] - [Link]) ?
2 : ((obj.y <= [Link]) ? 1 : 0);
let tmpIndex = ([Link] + "_" + [Link] + "_" + biomeID);
let tmpSprite = gameObjectSprites[tmpIndex];
if (!tmpSprite) {
let blurScale = 6;
let tmpCanvas = [Link]("canvas");
[Link] = [Link] = ([Link] * 2.1) +
outlineWidth;
let tmpContext = [Link]('2d');
[Link](([Link] / 2), ([Link] /
2));
[Link]([Link](0, [Link]));
[Link] = outlineColor;
[Link] = outlineWidth;
if (isNight) {
[Link] = blurScale;
[Link] = `rgba(0, 0, 0, ${[Link]})`;
}
if ([Link] == 0) {
let tmpScale;
let tmpCount = [Link](5, 7);
[Link] = isNight ? 0.8 : 0.8;
for (let i = 0; i < 2; ++i) {
tmpScale = [Link] * (!i ? 1 : 0.5);
renderStar(tmpContext, tmpCount, tmpScale, tmpScale *
0.7);
[Link] = !biomeID ? (!i ? "#9ebf57" :
"#b4db62") : (!i ? "#e3f1f4" : "#fff");
[Link]();
if (!i) {
[Link]();
[Link] = null;
[Link] = null;
[Link] = 1;
}
}
} else if ([Link] == 1) {
if (biomeID == 2) {
[Link] = "#606060";
renderStar(tmpContext, 6, [Link] * 0.3, [Link] *
0.71);
[Link]();
[Link]();
//[Link] = null;
//[Link] = null;
[Link] = "#89a54c";
renderCircle(0, 0, [Link] * 0.55, tmpContext);
[Link] = "#a5c65b";
renderCircle(0, 0, [Link] * 0.3, tmpContext, true);
} else {
renderBlob(tmpContext, 6, [Link], [Link] *
0.7);
[Link] = biomeID ? "#e3f1f4" : "#89a54c";
[Link]();
[Link]();
//[Link] = null;
//[Link] = null;
[Link] = null;
[Link] = null;
function hexToRgb(hex) {
return [Link](1).match(/.{1,2}/g).map(g =>
parseInt(g, 16));
}
function getRgb(r, g, b) {
return [r / 255, g / 255, b / 255].join(", ");
}
if ([Link] == "apple") {
[Link] = "#c15555";
renderCircle(0, 0, [Link], tmpContext);
[Link] = "#89a54c";
let leafDir = -([Link] / 2);
renderLeaf([Link] * [Link](leafDir), [Link] *
[Link](leafDir),
25, leafDir + [Link] / 2, tmpContext);
} else if ([Link] == "cookie") {
[Link] = "#cca861";
renderCircle(0, 0, [Link], tmpContext);
[Link] = "#937c4b";
let chips = 4;
let rotVal = ([Link] * 2) / chips;
let tmpRange;
for (let i = 0; i < chips; ++i) {
tmpRange = [Link]([Link] / 2.5, [Link]
/ 1.7);
renderCircle(tmpRange * [Link](rotVal * i),
tmpRange * [Link](rotVal * i),
[Link](4, 5), tmpContext,
true);
}
} else if ([Link] == "cheese") {
[Link] = "#f4f3ac";
renderCircle(0, 0, [Link], tmpContext);
[Link] = "#c3c28b";
let chips = 4;
let rotVal = ([Link] * 2) / chips;
let tmpRange;
for (let i = 0; i < chips; ++i) {
tmpRange = [Link]([Link] / 2.5, [Link]
/ 1.7);
renderCircle(tmpRange * [Link](rotVal * i),
tmpRange * [Link](rotVal * i),
[Link](4, 5), tmpContext,
true);
}
} else if ([Link] == "wood wall" || [Link] == "stone
wall" || [Link] == "castle wall") {
[Link] = ([Link] == "castle wall") ?
"#83898e" : ([Link] == "wood wall") ?
"#a5974c" : "#939393";
let sides = ([Link] == "castle wall") ? 4 : 3;
renderStar(tmpContext, sides, [Link] * 1.1,
[Link] * 1.1);
[Link]();
[Link]();
[Link] = ([Link] == "castle wall") ?
"#9da4aa" : ([Link] == "wood wall") ?
"#c9b758" : "#bcbcbc";
renderStar(tmpContext, sides, [Link] * 0.65,
[Link] * 0.65);
[Link]();
} else if ([Link] == "spikes" || [Link] == "greater
spikes" || [Link] == "poison spikes" ||
[Link] == "spinning spikes") {
[Link] = ([Link] == "poison spikes") ?
"#7b935d" : "#939393";
let tmpScale = ([Link] * 0.6);
renderStar(tmpContext, ([Link] == "spikes") ? 5 : 6,
[Link], tmpScale);
[Link]();
[Link]();
[Link] = "#a5974c";
renderCircle(0, 0, tmpScale, tmpContext);
[Link] = "#c9b758";
renderCircle(0, 0, tmpScale / 2, tmpContext, true);
} else if ([Link] == "windmill" || [Link] == "faster
windmill" || [Link] == "power mill") {
[Link] = "#a5974c";
renderCircle(0, 0, reScale, tmpContext);
[Link] = "#c9b758";
renderRectCircle(0, 0, reScale * 1.5, 29, 4,
tmpContext);
[Link] = "#a5974c";
renderCircle(0, 0, reScale * 0.5, tmpContext);
} else if ([Link] == "mine") {
[Link] = "#939393";
renderStar(tmpContext, 3, [Link], [Link]);
[Link]();
[Link]();
[Link] = "#bcbcbc";
renderStar(tmpContext, 3, [Link] * 0.55, [Link] *
0.65);
[Link]();
} else if ([Link] == "sapling") {
for (let i = 0; i < 2; ++i) {
let tmpScale = [Link] * (!i ? 1 : 0.5);
renderStar(tmpContext, 7, tmpScale, tmpScale *
0.7);
[Link] = (!i ? "#9ebf57" :
"#b4db62");
[Link]();
if (!i) [Link]();
}
} else if ([Link] == "pit trap") {
[Link] = "#a5974c";
renderStar(tmpContext, 3, [Link] * 1.1, [Link] *
1.1);
[Link]();
[Link]();
[Link] = outlineColor;
renderStar(tmpContext, 3, [Link] * 0.65, [Link] *
0.65);
[Link]();
} else if ([Link] == "boost pad") {
[Link] = "#7e7f82";
renderRect(0, 0, [Link] * 2, [Link] * 2,
tmpContext);
[Link]();
[Link]();
[Link] = "#dbd97d";
renderTriangle([Link] * 1, tmpContext);
} else if ([Link] == "turret") {
[Link] = "#a5974c";
renderCircle(0, 0, [Link], tmpContext);
[Link]();
[Link]();
[Link] = "#939393";
let tmpLen = 50;
renderRect(0, -tmpLen / 2, [Link] * 0.9, tmpLen,
tmpContext);
renderCircle(0, 0, [Link] * 0.6, tmpContext);
[Link]();
[Link]();
} else if ([Link] == "platform") {
[Link] = "#cebd5f";
let tmpCount = 4;
let tmpS = [Link] * 2;
let tmpW = tmpS / tmpCount;
let tmpX = -([Link] / 2);
for (let i = 0; i < tmpCount; ++i) {
renderRect(tmpX - (tmpW / 2), 0, tmpW, [Link] *
2, tmpContext);
[Link]();
[Link]();
tmpX += tmpS / tmpCount;
}
} else if ([Link] == "healing pad") {
[Link] = "#7e7f82";
renderRect(0, 0, [Link] * 2, [Link] * 2,
tmpContext);
[Link]();
[Link]();
[Link] = "#db6e6e";
renderRectCircle(0, 0, [Link] * 0.65, 20, 4,
tmpContext, true);
} else if ([Link] == "spawn pad") {
[Link] = "#7e7f82";
renderRect(0, 0, [Link] * 2, [Link] * 2,
tmpContext);
[Link]();
[Link]();
[Link] = "#71aad6";
renderCircle(0, 0, [Link] * 0.6, tmpContext);
} else if ([Link] == "blocker") {
[Link] = "#7e7f82";
renderCircle(0, 0, [Link], tmpContext);
[Link]();
[Link]();
[Link]([Link] / 4);
[Link] = "#db6e6e";
renderRectCircle(0, 0, [Link] * 0.65, 20, 4,
tmpContext, true);
} else if ([Link] == "teleporter") {
[Link] = "#7e7f82";
renderCircle(0, 0, [Link], tmpContext);
[Link]();
[Link]();
[Link]([Link] / 4);
[Link] = "#d76edb";
renderCircle(0, 0, [Link] * 0.5, tmpContext, true);
}
}
tmpSprite = tmpCanvas;
if (!asIcon)
itemSprites[[Link]] = tmpSprite;
}
return tmpSprite;
}
function getObjSprite(obj) {
let tmpSprite = objSprites[[Link]];
if (!tmpSprite) {
let blurScale = isNight ? 20 : 0;
let tmpCanvas = [Link]("canvas");
[Link] = [Link] = [Link] * 2.5 +
outlineWidth + ([Link][[Link]].spritePadding || 0) + blurScale;
let tmpContext = [Link]("2d");
[Link]([Link] / 2, [Link] /
2);
[Link]([Link] / 2);
[Link] = outlineColor;
[Link] = outlineWidth;
if (isNight) {
[Link] = 20;
[Link] = `rgba(0, 0, 0, ${[Link](0.3,
[Link])})`;
}
if ([Link] == "spikes" || [Link] == "greater spikes" ||
[Link] == "poison spikes" || [Link] == "spinning spikes") {
[Link] = [Link] == "poison spikes" ?
"#7b935d" : "#939393";
let tmpScale = [Link] * 0.6;
renderStar(tmpContext, [Link] == "spikes" ? 5 : 6,
[Link], tmpScale);
[Link]();
[Link]();
[Link] = "#a5974c";
renderCircle(0, 0, tmpScale, tmpContext);
[Link] = "#cc5151";
renderCircle(0, 0, tmpScale / 2, tmpContext, true);
} else if ([Link] == "pit trap") {
[Link] = "#a5974c";
renderStar(tmpContext, 3, [Link] * 1.1, [Link] *
1.1);
[Link]();
[Link]();
[Link] = "#cc5151";
renderStar(tmpContext, 3, [Link] * 0.65, [Link] *
0.65);
[Link]();
}
tmpSprite = tmpCanvas;
objSprites[[Link]] = tmpSprite;
}
return tmpSprite;
}
// OBJECT ON SCREEN:
function isOnScreen(x, y, s) {
return (x + s >= 0 && x - s <= maxScreenWidth && y + s >= 0 && (y,
s,
maxScreenHeight));
}
[Link]();
[Link](tmpX, tmpY);
[Link]([Link]);
if (![Link]) {
[Link]([Link] /
[Link], [Link] / [Link]);
}
[Link](tmpSprite, -
([Link] / 2), -([Link] / 2));
if ([Link]) {
[Link] = "#db6e6e";
[Link] = 0.3;
[Link] = 6;
renderCircle(0, 0, [Link], mainContext,
false, true);
}
[Link]();
} else {
tmpSprite = getResSprite(tmpObj);
[Link](tmpSprite, tmpX -
([Link] / 2), tmpY - ([Link] / 2));
}
}
if (layer == 3 && !useWasd) {
if ([Link] < [Link]) {
// HEALTH HOLDER:
[Link] = darkOutlineColor;
[Link](tmpX -
[Link] / 2 - [Link], tmpY - [Link],
[Link] + [Link] * 2, 17, 8);
[Link]();
// HEALTH BAR:
[Link] = [Link](player)
? "#8ecc51" : "#cc5151";
[Link](tmpX -
[Link] / 2, tmpY, [Link] * ([Link] /
[Link]), 17 - [Link] * 2, 7);
[Link]();
}
}
}
});
// PLACE VISIBLE:
if (layer == 0) {
if ([Link]) {
[Link]((places) => {
tmpX = places.x - xOffset;
tmpY = places.y - yOffset;
markObject(places, tmpX, tmpY);
});
}
}
}
/* function markObject(tmpObj, tmpX, tmpY) {
getMarkSprite(tmpObj, mainContext, tmpX, tmpY);
}*/
function markObject(tmpObj, tmpX, tmpY) {
yen(mainContext, tmpX, tmpY);
}
function yen(context, x, y) {
[Link] = "rgb(234,182,118)";
[Link]();
[Link](x, y, 55, 0, [Link] * 2); // Adjust the circle size
[Link]();
[Link]();
[Link] = 1;
}
function ppyen(context, x, y) {
[Link] = "red";
[Link]();
[Link](x, y, 55, 0, [Link] * 2); // Adjust the circle size
[Link]();
[Link]();
[Link] = 1;
}
// RENDER MINIMAP:
class MapPing {
constructor(color, scale) {
[Link] = function(x, y) {
[Link] = 0;
this.x = x;
this.y = y;
[Link] = true;
};
[Link] = function(ctxt, delta) {
if ([Link]) {
[Link] += 0.05 * delta;
if ([Link] >= scale) {
[Link] = false;
} else {
[Link] = (1 - [Link](0, [Link] /
scale));
[Link]();
[Link]((this.x / [Link]) *
[Link], (this.y / [Link]) *
[Link], [Link], 0, 2 *
[Link]);
[Link]();
}
}
};
[Link] = color;
}
}
function pingMap(x, y) {
tmpPing = [Link](pings => ![Link]);
if (!tmpPing) {
tmpPing = new MapPing("#fff", [Link]);
[Link](tmpPing);
}
[Link](x, y);
}
function updateMapMarker() {
mapMarker.x = player.x;
mapMarker.y = player.y;
}
function renderMinimap(delta) {
if (player && [Link]) {
[Link](0, 0, [Link],
[Link]);
// RENDER PINGS:
[Link] = 4;
for (let i = 0; i < [Link]; ++i) {
tmpPing = mapPings[i];
[Link] = [Link];
[Link](mapContext, delta);
}
// RENDER PLAYERS:
[Link] = 1;
[Link] = "#fff";
renderCircle((player.x / [Link]) * [Link],
(player.y / [Link]) * [Link],
7, mapContext, true);
[Link] = "rgba(255,255,255,0.35)";
if ([Link] && minimapData) {
for (let i = 0; i < [Link];) {
renderCircle((minimapData[i] / [Link]) *
[Link],
(minimapData[i + 1] / [Link]) *
[Link], 7, mapContext, true);
i += 2;
}
}
// RENDER BOTS:
if ([Link]) {
[Link]((tmp) => {
if ([Link]) {
[Link] = 1;
[Link] = "#cc5151";
renderCircle((tmp.x2 / [Link]) *
[Link],
(tmp.y2 / [Link]) *
[Link], 7, mapContext, false, true);
}
});
}
// DEATH LOCATION:
if (lastDeath) {
[Link] = "#fc5553";
[Link] = "34px Hammersmith One";
[Link] = "middle";
[Link] = "center";
[Link]("x", (lastDeath.x / [Link]) *
[Link],
(lastDeath.y / [Link]) *
[Link]);
}
// MAP MARKER:
if (mapMarker) {
[Link] = "#fff";
[Link] = "34px Hammersmith One";
[Link] = "middle";
[Link] = "center";
[Link]("x", (mapMarker.x / [Link]) *
[Link],
(mapMarker.y / [Link]) *
[Link]);
}
}
}
// ICONS:
let crossHairs =
["[Link]
[Link]",
"[Link]
px-Crosshairs_Red.png"];
let crossHairSprites = {};
let iconSprites = {};
let icons = ["crown", "skull"];
function loadIcons() {
for (let i = 0; i < [Link]; ++i) {
let tmpSprite = new Image();
[Link] = function() {
[Link] = true;
};
[Link] = "./../img/icons/" + icons[i] + ".png";
iconSprites[icons[i]] = tmpSprite;
}
for (let i = 0; i < [Link]; ++i) {
let tmpSprite = new Image();
[Link] = function() {
[Link] = true;
};
[Link] = crossHairs[i];
crossHairSprites[i] = tmpSprite;
}
}
loadIcons();
// UPDATE GAME:
function updateGame() {
if ([Link]) {
[Link](0, 0, [Link],
[Link]);
[Link]();
}
if (true) {
function updateCamera() {
let selectedCamera =
[Link]("visualType").value;
let damping = 0.35;
let scalingFactor = 20;
if (player) {
if (selectedCamera === 'Cam1') {
let targetCamX = player.x + ((mouseX - 1920 / 2) /
scalingFactor);
let targetCamY = player.y + ((mouseY - 1920 / 2) /
scalingFactor);
camX += (targetCamX - camX) * damping;
camY += (targetCamY - camY) * damping;
} else if (selectedCamera === 'Cam0') {
let damping = 0.15;
let targetCamX = player.x + ((1920 / 2) / 30);
let targetCamY = player.y + ((1920 / 2) / 30);
camX += (targetCamX - camX) * damping;
camY += (targetCamY - camY) * damping;
} else if (selectedCamera === 'Cam2' || selectedCamera
=== 'Cam3') {
let damping2 = 0.016;
if (player) {
let targetCamX = player.x + ((1920 / 2) / 30);
let targetCamY = player.y + ((1920 / 2) / 30);
camX = lerp(camX, targetCamX, damping2);
camY = lerp(camY, targetCamY, damping2);
} else {
camX = [Link] / 2;
camY = [Link] / 2;
}
}
} else {
camX = [Link] / 2;
camY = [Link] / 2;
}
}
updateCamera()
[Link]("visualType").addEventListener("change", updateCamera);
function lerp(start, end, amt) {
return (1 - amt) * start + amt * end;
}
// RENDER CORDS:
let xOffset = camX - (maxScreenWidth / 2);
let yOffset = camY - (maxScreenHeight / 2);
// RENDER BACKGROUND:
if ([Link] - yOffset <= 0 && [Link] -
[Link] - yOffset >= maxScreenHeight) {
[Link] = "#b6db66";
[Link](0, 0, maxScreenWidth,
maxScreenHeight);
} else if ([Link] - [Link] - yOffset <=
0) {
[Link] = "#dbc666";
[Link](0, 0, maxScreenWidth,
maxScreenHeight);
} else if ([Link] - yOffset >= maxScreenHeight) {
[Link] = "#fff";
[Link](0, 0, maxScreenWidth,
maxScreenHeight);
} else if ([Link] - yOffset >= 0) {
[Link] = "#fff";
[Link](0, 0, maxScreenWidth,
[Link] - yOffset);
[Link] = "#b6db66";
[Link](0, [Link] - yOffset,
maxScreenWidth,
maxScreenHeight - ([Link]
- yOffset));
} else {
[Link] = "#b6db66";
[Link](0, 0, maxScreenWidth,
([Link] - [Link]
- yOffset));
[Link] = "#dbc666";
[Link](0, ([Link] -
[Link] - yOffset), maxScreenWidth,
maxScreenHeight - ([Link] -
[Link] - yOffset));
}
if (getEl("visualType").value != "ueh1") {
// RENDER GRID:
[Link] = 4;
[Link] = "#000";
[Link] = 0.06;
[Link]();
for (let x = -camX; x < maxScreenWidth; x += useWasd ? 60 :
120) {
if (x > 0) {
[Link](x, 0);
[Link](x, maxScreenHeight);
}
}
for (let y = -camY; y < maxScreenHeight; y += useWasd ?
60 : 120) {
if (y > 0) {
[Link](0, y);
[Link](maxScreenWidth, y);
}
}
[Link]();
}
if (player) {
// DEATH LOCATION:
if (lastDeath) {
[Link] = 1;
[Link] = "#fc5553";
[Link] = "100px Hammersmith One";
[Link] = "middle";
[Link] = "center";
[Link]("x", lastDeath.x - xOffset,
lastDeath.y - yOffset);
}
// PATHFINDER LINE:
if ([Link]) {
if ([Link] && ([Link] ?
[Link] : true)) {
[Link] = [Link] / 5;
[Link] = 1;
[Link] = "red";
[Link]();
[Link]((path, i) => {
let pathXY = {
x: ([Link] / [Link]) *
path.x,
y: ([Link] / [Link]) *
path.y
}
let render = {
x: ((player.x2 - ([Link] / 2)) +
pathXY.x) - xOffset,
y: ((player.y2 - ([Link] / 2)) +
pathXY.y) - yOffset
}
if (i == 0) {
[Link](render.x, render.y);
} else {
[Link](render.x, render.y);
}
});
[Link]();
}
}
// RENDER PROJECTILES:
[Link] = 1;
[Link] = outlineWidth;
renderProjectiles(0, xOffset, yOffset);
// RENDER PLAYERS:
renderPlayers(xOffset, yOffset, 0);
// RENDER AI:
[Link] = 1;
for (let i = 0; i < [Link]; ++i) {
tmpObj = ais[i];
if ([Link] && [Link]) {
[Link](delta);
[Link]();
[Link](tmpObj.x - xOffset, tmpObj.y -
yOffset);
[Link]([Link] + [Link] -
([Link] / 2));
renderAI(tmpObj, mainContext);
[Link]();
}
}
// MAP BOUNDARIES:
[Link] = "#000";
[Link] = 0.09;
if (xOffset <= 0) {
[Link](0, 0, -xOffset, maxScreenHeight);
}
if ([Link] - xOffset <= maxScreenWidth) {
let tmpY = [Link](0, -yOffset);
[Link]([Link] - xOffset, tmpY,
maxScreenWidth - ([Link] - xOffset), maxScreenHeight - tmpY);
}
if (yOffset <= 0) {
[Link](-xOffset, 0, maxScreenWidth + xOffset,
-yOffset);
}
if ([Link] - yOffset <= maxScreenHeight) {
let tmpX = [Link](0, -xOffset);
let tmpMin = 0;
if ([Link] - xOffset <= maxScreenWidth)
tmpMin = maxScreenWidth - ([Link] - xOffset);
[Link](tmpX, [Link] - yOffset,
(maxScreenWidth - tmpX) - tmpMin,
maxScreenHeight - ([Link] - yOffset));
}
[Link](([Link] ? crossHairSprites[1] :
crossHairSprites[0]), tmpObj.x - xOffset - tmpS / 2, tmpObj.y - yOffset - tmpS / 2,
tmpS, tmpS);
}
}
if ([Link] > 0) {
// HEALTH HOLDER:
[Link] = darkOutlineColor;
[Link](tmpObj.x - xOffset -
[Link] - [Link],
(tmpObj.y - yOffset +
[Link]) + [Link], ([Link] * 2) +
([Link] *
2), 17, 8);
[Link]();
// HEALTH BAR:
[Link] = (tmpObj == player ||
([Link] && [Link] == [Link])) ? "#8ecc51" : "#cc5151";
[Link](tmpObj.x - xOffset -
[Link],
(tmpObj.y - yOffset +
[Link]) + [Link] + [Link],
(([Link] *
2) * ([Link] / [Link])), 17 - [Link] * 2, 7);
[Link]();
if ([Link]) {
[Link] = 1;
const RGBBarColor = HPBarColor;
let targetReloads = {
primary: ([Link] ==
undefined ? 1 : (([Link][[Link]].speed -
[Link][[Link]]) / [Link][[Link]].speed)),
secondary: ([Link] ==
undefined ? 1 : (([Link][[Link]].speed -
[Link][[Link]]) /
[Link][[Link]].speed)),
turret: (2500 - [Link][53]) /
2500
};
if (![Link]) {
[Link] = { // Initialize
currentReloads if not already set
primary: [Link],
secondary: [Link],
turret: [Link]
};
}
const lerpFactor = 0.4;
[Link] = (1 -
lerpFactor) * [Link] + lerpFactor * [Link];
[Link] = (1 -
lerpFactor) * [Link] + lerpFactor *
[Link];
[Link] = (1 -
lerpFactor) * [Link] + lerpFactor * [Link];
let primaryReloadProgress =
[Link] !== undefined ? (([Link][[Link]].speed -
[Link][[Link]]) / [Link][[Link]].speed) :
1;
let secondaryReloadProgress =
[Link] !== undefined ? (([Link][[Link]].speed
- [Link][[Link]]) /
[Link][[Link]].speed) : 1;
const centerX = tmpObj.x - xOffset;
const centerY = tmpObj.y - yOffset;
const barRadius = 28;
const barWidth = 15;
const totalAngle = ([Link]*2)/3; // Half
circle
const secondaryStartAngle = -[Link] / 2 +
[Link] / 3;
const secondaryEndAngle =
secondaryStartAngle + (totalAngle * [Link]);
const primaryStartAngle = [Link] / 2;
const primaryEndAngle = primaryStartAngle +
(totalAngle * [Link]);
[Link]();
if ([Link] < 0.999)
{
[Link]();
// [Link] = 'round';
[Link](centerX, centerY,
barRadius, primaryStartAngle, primaryEndAngle);
[Link] = 4;
[Link] =
darkOutlineColor;
[Link]();
[Link]();
// [Link] = 'round';
[Link](centerX, centerY,
barRadius, primaryStartAngle, primaryEndAngle);
[Link] = 4;
[Link] =
returncoolcolor([Link] * 200);
[Link]();
}
if ([Link] <
0.999) {
[Link]();
// [Link] = 'round';
[Link](centerX, centerY,
barRadius, secondaryStartAngle, secondaryEndAngle);
[Link] = 4;
[Link] =
darkOutlineColor;
[Link]();
[Link]();
// [Link] = 'round';
[Link](centerX, centerY,
barRadius, secondaryStartAngle, secondaryEndAngle);
[Link] = 4;
[Link] =
returncoolcolor([Link] * 200);
[Link]();
}
if ([Link] < 0.999) {
[Link]();
// [Link] = 'round';
[Link](centerX, centerY,
barRadius, turretStartAngle, turretEndAngle);
[Link] = 4;
[Link] =
darkOutlineColor;
[Link]();
[Link]();
//[Link] = 'round';
[Link](centerX, centerY,
barRadius, turretStartAngle, turretEndAngle);
[Link] = 4;
[Link] =
returncoolcolor([Link] * 200);
[Link]();
}
[Link]();
// SHAME COUNT:
[Link] = 1;
[Link] = "30px Hammersmith One";
[Link] = "#fff";
[Link] = darkOutlineColor;
[Link] = "middle";
[Link] = "center";
[Link] = 8;
[Link] = "round";
let tmpS = [Link];
let tmpX = tmpObj.x - xOffset - tmpS / 2 +
[Link](tmpText).width / 2 + [Link] + ([Link] ==
1 ? 30 * 2.75 : 30);
[Link]([Link] ==
45 && [Link] > 0 ? [Link] : [Link], tmpX, tmpObj.y
- yOffset - [Link] - [Link]);
[Link]([Link] == 45
&& [Link] > 0 ? [Link] : [Link], tmpX, tmpObj.y -
yOffset - [Link] - [Link]);
[Link] = "white";
[Link] = "bold 12px
Arial";
[Link]();
[Link](midX, midY);
const dx = tmpObj.x - player.x;
const dy = tmpObj.y - player.y;
const angle = Math.atan2(dy, dx);
[Link](angle -
[Link] / 2);
[Link](-[Link] / 2);
[Link](playerName, 0,
0);
[Link]();
[Link] =
"transparent";
[Link] = 1;
}
let playerTracerImage = new Image();
[Link] =
'[Link]
[Link]?
ex=658b1256&is=65789d56&hm=8bacd22e5ab9f53a080ae758b3bc5e34068a99c5c26420c90014f450
20698c38&';
if ( && !
[Link]) {
const angle = Math.atan2(tmpObj.y -
player.y, tmpObj.x - player.x);
const distance =
[Link](tmpObj.y - player.y, tmpObj.x - player.x);
const offset = [Link](distance -
[Link], [Link] * 2);
const arrowPos = {
x: player.x + offset *
[Link](angle),
y: player.y + offset *
[Link](angle)
}
drawArrow(xOffset, yOffset,
arrowPos.x, arrowPos.y, 4, darkOutlineColor, angle, 15);
drawArrow(xOffset, yOffset,
arrowPos.x, arrowPos.y, 4, "#fff", angle, 8);
}
}
function drawArrow(xOffset, yOffset, x, y,
arrowWidth, color, angle, lineWidth) {
[Link]()
[Link](x - xOffset, y -
yOffset)
[Link]([Link] / 4)
[Link](angle)
[Link] = 1
[Link] = color
[Link] = "round"
[Link] = lineWidth
[Link]()
[Link](-arrowWidth, -
arrowWidth)
[Link](arrowWidth, -
arrowWidth)
[Link](arrowWidth,
arrowWidth)
[Link]()
[Link]()
[Link]()
}
if (getEl("predictType").value == "pre2") {
[Link] = 3;
[Link] = "#cc5151";
[Link] = 1;
[Link]();
let render = {
x: tmpObj.x2 - xOffset,
y: tmpObj.y2 - yOffset
};
[Link](tmpObj.x - xOffset,
tmpObj.y - yOffset);
[Link](render.x, render.y);
[Link]();
} else if (getEl("predictType").value ==
"pre3") {
[Link] = 3;
[Link] = "#cc5151";
[Link] = 1;
[Link]();
let render = {
x: tmpObj.x3 - xOffset,
y: tmpObj.y3 - yOffset
};
[Link](tmpObj.x - xOffset,
tmpObj.y - yOffset);
[Link](render.x, render.y);
[Link]();
}
}
}
}
}
}
if (player) {
// AUTOPUSH LINE:
if ([Link]) {
[Link] = 5;
[Link] = 1;
[Link]();
[Link] = "blue";
[Link](player.x - xOffset, player.y -
yOffset);
[Link]([Link].x2 - xOffset,
[Link].y2 - yOffset);
[Link]([Link].x - xOffset,
[Link].y - yOffset);
[Link]();
}
// FUNNY:
if ([Link] && getEl("funni").checked) {
[Link]((petal, i) => {
if ([Link]) {
let petalRad = ([Link] * (i / ([Link] /
2)));
let pl = {
x: player.x + (maxRad *
[Link]([Link] + petalRad)),
y: player.y + (maxRad *
[Link]([Link] + petalRad))
};
let angle = [Link](pl, petal, 0, 0);
let dist = [Link](pl, petal, 0, 0);
petal.x += (dist / 7) * [Link](angle);
petal.y += (dist / 7) * [Link](angle);
} else {
[Link] += delta;
if ([Link]) {
[Link] -= delta / 200;
[Link] += delta / ([Link] *
2);
if ([Link] <= 0) {
[Link] = 0;
[Link] = false;
}
}
if ([Link]) {
[Link] = [Link];
[Link] = 3;
[Link] = cD(255, 255, 255,
[Link]);
[Link] = cD(200, 200, 200,
[Link]);
[Link]();
[Link](petal.x - xOffset, petal.y -
yOffset, [Link], 0, [Link] * 2);
[Link]();
[Link]();
});
}
}
[Link] = 1;
[Link] = [Link];
[Link] = [Link](player) ?
"#8ecc51" : "#cc5151";
[Link] = "rgb(25, 25, 25)";
[Link]([Link], tmpX, tmpY -
45);
[Link]([Link], tmpX, tmpY -
45);
[Link] = 5;
[Link] = "#ccc";
[Link] = "rgb(25, 25, 25)";
[Link] = "#fff";
[Link] = "#000";
[Link]([Link], tmpX, tmpY);
[Link]([Link], tmpX, tmpY);
ch.y -= delta / 100;
}
});
}
}
[Link] = 1;
// RENDER MINIMAP:
renderMinimap(delta);
}
function doUpdate() {
now = [Link]();
delta = now - lastUpdate;
lastUpdate = now;
[Link] = timer;
[Link] = 0;
}
[Link]++;
function toggleUseless(boolean) {
getEl("instaType").disabled = boolean;
getEl("antiBullType").disabled = boolean;
getEl("predictType").disabled = boolean;
getEl("visualType").disabled = boolean;
}
toggleUseless(useWasd);
[Link] = function() {
[Link] = function(type) {
let data = [Link](arguments, 1);
let binary = [Link]([type, data]);
[Link](binary);
};
for (let i = 0; i < 4; i++) {
[Link]("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then(function(token) {
[Link]("bots", [Link]("&")[0] + "&token="
+ encodeURIComponent(token), botIDS);
[Link]([test]);
botIDS++;
});
}
};
[Link] = function(message) {
let data = new Uint8Array([Link]);
let parsed = [Link](data);
let type = parsed[0];
data = parsed[1];
};
}
};
[Link] = function() {
[Link]((socket) => {
socket[0].close();
});
botSkts = [];
};
[Link] = function() {
for (let i = 0; i < ([Link] < 3 ? 3 : 4); i++) {
[Link]("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then(function(token) {
// CONNECT SOCKET:
botSpawn(token);
});
}
};
[Link] = function() {
[Link]((botyyyyy) => {
[Link] = true;
});
bots = [];
};
[Link] = function() {
if ([Link]) {
[Link]((tmp) => {
[Link] = false;
});
breakObjects = [];
}
};
[Link] = function() {
[Link] = ![Link];
};
[Link] = function() {
[Link] = ![Link];
[Link]((tmp) => {
if ([Link]) {
[Link] = [Link];
}
});
};
[Link] = function(tmpObj) {
resize();
// ACTION BAR:
[Link](actionBar);
if ([Link][i]) {
[Link](([Link] / 4) + [Link]);
let tmpSprite = new Image();
toolSprites[[Link][i].src] = tmpSprite;
[Link] = function () {
[Link] = true;
let tmpPad = 1 / ([Link] / [Link]);
let tmpMlt = ([Link][i].iPad || 1);
[Link](this, -([Link] *
tmpMlt * [Link] * tmpPad) / 2, -([Link] * tmpMlt *
[Link]) / 2,
[Link] * tmpMlt *
tmpPad * [Link], [Link] * tmpMlt * [Link]);
[Link] = "rgba(0, 0, 70, 0.1)";
[Link] = "source-
atop";
[Link](-[Link] / 2, -
[Link] / 2, [Link], [Link]);
getEl('actionBarItem' + i).[Link] =
"url(" + [Link]() + ")";
};
[Link] = "./../img/weapons/" +
[Link][i].src + ".png";
let tmpUnit = getEl('actionBarItem' + i);
[Link] = [Link](function () {
showItemInfo([Link][i], true);
});
[Link] = [Link](function () {
selectWeapon([Link][[Link][i].type]);
});
[Link](tmpUnit);
} else {
let tmpSprite = getItemSprite([Link][i -
[Link]], true);
let tmpScale = [Link]([Link] -
[Link], [Link]);
[Link] = 1;
[Link](tmpSprite, -tmpScale / 2, -
tmpScale / 2, tmpScale, tmpScale);
[Link] = "rgba(0, 0, 70, 0.1)";
[Link] = "source-atop";
[Link](-tmpScale / 2, -tmpScale / 2,
tmpScale, tmpScale);
getEl('actionBarItem' + i).[Link] =
"url(" + [Link]() + ")";
let tmpUnit = getEl('actionBarItem' + i);
[Link] = [Link](function () {
showItemInfo([Link][i - [Link]]);
});
[Link] = [Link](function () {
selectToBuild([Link][[Link](i -
[Link])]);
});
[Link](tmpUnit);
}
})(i);
}
};
[Link] = function(data) {
if (data) {
// SET INITIAL NAME:
let noname = "unknown";
// VALIDATE NAME:
let name = data + "";
name = [Link](0, [Link]);
name = [Link](/[^\w:\(\)\/? -]+/gmi, " "); // USE SPACE
SO WE CAN CHECK PROFANITY
name = [Link](/[^\x00-\x7F]/g, " ");
name = [Link]();
let langFilter = {
"list": [
"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",
"queer",
"queers",
"queerz",
"qweers",
"qweerz",
"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",
"lesbian",
"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",
"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",
"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",
"[Link]",
"sidney",
"sid",
"senpaio",
"vries",
"asa"
],
"exclude": [],
"placeHolder": "*",
"regex": {},
"replaceRegex": {}
};
return noname;
}
};
[Link]();
},
webgl_test: () => {
return;
let canvas = [Link]("canvas");
[Link] = "WEBGL";
[Link] = [Link] = 300;
[Link] = `
position: relative;
bottom: 70%;
left: 70%;
pointer-events: none;
`;
let gl = [Link]("webgl");
if (!gl) {
alert("urbad");
return;
}
[Link](canvas);
[Link](fat);
log(gl);
[Link](0, 0, 0, 0.2);
[Link](gl.COLOR_BUFFER_BIT);
function hexToRgb(hex) {
return [Link](1).match(/.{1,2}/g).map(g => parseInt(g, 16));
}
function getRgb(r, g, b) {
return [r / 255, g / 255, b / 255].join(", ");
}