don't use this for sandbox unless you wanna get clapped
// ==UserScript==
// @name blackpill mod
// @namespace bl4ckpill
// @version 1.1
// @description don't use this for sandbox unless you wanna get clapped
// @match *://moomoo.io/*
// @match *://*.moomoo.io/*
// @run-at document-start
// @grant none
// @license MIT
// ==/UserScript==
// ══════════════════════════════════════════════
// BEST CLASSIC MOOMOO MOD
// ══════════════════════════════════════════════
//
// KEYBINDS
// ────────────────────────────────────────────
// - Auto Spike Tick(1/0) T One-Tick
// G Bull + AutoBull
// J AntiBull B AutoMill
// N Mill F Trap
// V Spike H 2 Turrets
// Z Tank R Instakill
//
// FEATURES
// ────────────────────────────────────────────
// • No spam auto-placing
// • Auto Spike Tick
// • Anti-Insta
// • AutoBreak
//
// DISCORD
// ────────────────────────────────────────────
// 'feature.' — for bugs or questions
// Katana+hammer or polearm+hammer recommended (sword + musket also works)
// minifier degraded the quality A LOT sorry
// ══════════════════════════════════════════════
(() => {
"use strict";
const t = {
0: 300,
1: 400,
2: 400,
3: 300,
4: 300,
5: 700,
6: 300,
7: 300,
8: 400,
9: 600,
10: 400,
11: 1,
12: 700,
13: 230,
14: 700,
15: 1500
};
let e = !1,
n = !1,
r = !1,
i = null;
let o = !1,
a = null,
s = !1,
l = !1,
u = !1,
c = -1,
f = -1,
d = !1,
y = !1,
m = null;
setTimeout(() => {
document.getElementById("gameName").innerText = "success"
}, 1e3);
let g = 0,
h = -1,
w = !1,
p = !1,
b = !1;
const A = window.WebSocket,
I = A.prototype.send,
v = new WeakMap;
let M = null,
U = innerWidth / 2,
E = innerHeight / 2;
const k = new Map,
T = new TextEncoder,
x = new TextDecoder,
D = ["M", "D", "9", "e", "F", "z", "H", "K", "L", "N", "b", "P", "Q", "c", "6", "S", "0"],
F = ["A", "B", "C", "D", "E", "a", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "Z", "g", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"],
N = 64,
S = new Uint32Array([1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]),
C = new Map;
let L = 1;
function z(t) {
c !== t && (c = t, X("c", 0, t, 0))
}
let K = 12,
B = 22,
O = 6;
const P = new Set(["KeyW", "KeyA", "KeyS", "KeyD", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"]),
H = new Set,
V = new Map;
window.MOO_PLAYERS = V, document.addEventListener("keydown", t => {
if (! function() {
const t = document.activeElement;
return t && ("INPUT" === t.tagName || "TEXTAREA" === t.tagName || t.isContentEditable)
}()) switch (t.key) {
case "z":
z(40);
break;
case "g":
z(7);
break;
case "Shift":
z(12);
break;
case "c":
z(6)
}
}), document.addEventListener("keydown", t => {
P.has(t.code) && (H.add(t.code), ct())
}), document.addEventListener("keyup", t => {
P.has(t.code) && (H.delete(t.code), ct())
});
const W = t => {
const e = t.reduce((t, e) => t + e.length, 0),
n = new Uint8Array(e);
let r = 0;
for (const e of t) n.set(e, r), r += e.length;
return n
},
R = t => {
if (null == t) return Uint8Array.of(192);
if (!1 === t) return Uint8Array.of(194);
if (!0 === t) return Uint8Array.of(195);
if ("number" == typeof t) {
if (Number.isInteger(t)) {
if (t >= 0 && t < 128) return Uint8Array.of(t);
if (t >= -32 && t < 0) return Uint8Array.of(256 + t);
if (t >= 0 && t <= 255) return Uint8Array.of(204, t);
if (t >= 0 && t <= 65535) return Uint8Array.of(205, t >>> 8, t);
if (t >= -128 && t < 0) return Uint8Array.of(208, t);
if (t >= -32768 && t < 0) return Uint8Array.of(209, t >>> 8, t);
const e = new Uint8Array(5),
n = new DataView(e.buffer);
return e[0] = t >= 0 ? 206 : 210, t >= 0 ? n.setUint32(1, t) : n.setInt32(1, t), e
}
const e = new Uint8Array(9);
return e[0] = 203, new DataView(e.buffer).setFloat64(1, t), e
}
if ("string" == typeof t) {
const e = T.encode(t);
return e.length < 32 ? W([Uint8Array.of(160 | e.length), e]) : e.length <= 255 ? W([Uint8Array.of(217, e.length), e]) : W([Uint8Array.of(218, e.length >>> 8, e.length), e])
}
if (t instanceof Uint8Array) return t.length <= 255 ? W([Uint8Array.of(196, t.length), t]) : W([Uint8Array.of(197, t.length >>> 8, t.length), t]);
if (Array.isArray(t)) {
const e = t.length < 16 ? Uint8Array.of(144 | t.length) : Uint8Array.of(220, t.length >>> 8, t.length);
return W([e, ...t.map(R)])
}
const e = Object.entries(t),
n = e.length < 16 ? Uint8Array.of(128 | e.length) : Uint8Array.of(222, e.length >>> 8, e.length);
return W([n, ...e.flatMap(([t, e]) => [R(t), R(e)])])
},
j = t => {
const e = t instanceof Uint8Array ? t : new Uint8Array(t),
n = new DataView(e.buffer, e.byteOffset, e.byteLength);
let r = 0;
const i = () => {
const t = e[r++];
if (t <= 127) return t;
if (t >= 224) return t - 256;
if (160 == (224 & t)) return l(31 & t);
if (144 == (240 & t)) return c(15 & t);
if (128 == (240 & t)) return f(15 & t);
if (192 === t) return null;
if (194 === t) return !1;
if (195 === t) return !0;
if (196 === t) return u(e[r++]);
if (197 === t) return u(a());
if (198 === t) return u(s());
if (202 === t) return o(4, t => n.getFloat32(t));
if (203 === t) return o(8, t => n.getFloat64(t));
if (204 === t) return e[r++];
if (205 === t) return a();
if (206 === t) return s();
if (208 === t) return o(1, t => n.getInt8(t));
if (209 === t) return o(2, t => n.getInt16(t));
if (210 === t) return o(4, t => n.getInt32(t));
if (217 === t) return l(e[r++]);
if (218 === t) return l(a());
if (219 === t) return l(s());
if (220 === t) return c(a());
if (221 === t) return c(s());
if (222 === t) return f(a());
if (223 === t) return f(s());
throw new Error("Unsupported packet")
},
o = (t, e) => {
const n = r;
return r += t, e(n)
},
a = () => o(2, t => n.getUint16(t)),
s = () => o(4, t => n.getUint32(t)),
l = t => x.decode(e.subarray(r, r += t)),
u = t => e.slice(r, r += t),
c = t => Array.from({
length: t
}, i),
f = t => {
const e = {};
for (let n = 0; n < t; n++) e[i()] = i();
return e
};
return i()
};
! function t(e) {
window.config && window.config.maxScreenWidth ? e() : setTimeout(() => t(e), 100)
}(() => {
const t = window.config.maxScreenWidth,
e = window.config.maxScreenHeight;
let n = null;
const r = CanvasRenderingContext2D.prototype.moveTo,
i = CanvasRenderingContext2D.prototype.lineTo;
CanvasRenderingContext2D.prototype.moveTo = function(t, e) {
return n = [t, e], r.call(this, t, e)
}, CanvasRenderingContext2D.prototype.lineTo = function(r, o) {
if (!window.TRASHMOD_VISUALS?.grid && n) {
const [i, a] = n, s = t => t % 50 <= 1.5 || 50 - t % 50 <= 1.5;
if ((i === r || a === o) && (s(i) || s(a)) && r >= 0 && r <= t && o >= 0 && o <= e) return this
}
return i.call(this, r, o)
}
});
const G = (t, e) => t >>> e | t << 32 - e,
_ = t => {
const e = new Uint32Array([1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]),
n = t.length,
r = new Uint8Array(64 * Math.ceil((n + 9) / 64));
r.set(t), r[n] = 128;
const i = new DataView(r.buffer);
i.setUint32(r.length - 4, 8 * n >>> 0), i.setUint32(r.length - 8, Math.floor(8 * n / 4294967296));
const o = new Uint32Array(64);
for (let t = 0; t < r.length; t += 64) {
for (let e = 0; e < 16; e++) o[e] = i.getUint32(t + 4 * e);
for (let t = 16; t < 64; t++) {
const e = G(o[t - 15], 7) ^ G(o[t - 15], 18) ^ o[t - 15] >>> 3,
n = G(o[t - 2], 17) ^ G(o[t - 2], 19) ^ o[t - 2] >>> 10;
o[t] = o[t - 16] + e + o[t - 7] + n | 0
}
let n = e[0],
r = e[1],
a = e[2],
s = e[3],
l = e[4],
u = e[5],
c = e[6],
f = e[7];
for (let t = 0; t < 64; t++) {
const e = f + (G(l, 6) ^ G(l, 11) ^ G(l, 25)) + (l & u ^ ~l & c) + S[t] + o[t] | 0,
i = (G(n, 2) ^ G(n, 13) ^ G(n, 22)) + (n & r ^ n & a ^ r & a) | 0;
f = c, c = u, u = l, l = s + e | 0, s = a, a = r, r = n, n = e + i | 0
}
e[0] = e[0] + n | 0, e[1] = e[1] + r | 0, e[2] = e[2] + a | 0, e[3] = e[3] + s | 0, e[4] = e[4] + l | 0, e[5] = e[5] + u | 0, e[6] = e[6] + c | 0, e[7] = e[7] + f | 0
}
const a = new Uint8Array(32),
s = new DataView(a.buffer);
for (let t = 0; t < 8; t++) s.setUint32(4 * t, e[t]);
return a
},
q = (t, e) => {
const n = t.length > N ? _(t) : t,
r = new Uint8Array(N);
r.set(n);
const i = new Uint8Array(N + e.length),
o = new Uint8Array(96);
for (let t = 0; t < N; t++) i[t] = 54 ^ r[t], o[t] = 92 ^ r[t];
return i.set(e, N), o.set(_(i), N), _(o).subarray(0, 6)
},
Q = t => {
let e = 0 | t;
return () => {
e = e + 1831565813 | 0;
let t = Math.imul(e ^ e >>> 15, 1 | e);
return t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t, ((t ^ t >>> 14) >>> 0) / 4294967296
}
},
X = (t, ...e) => {
"D" === t && ut && null !== a && !l && (e = [a]);
const n = M,
r = n && v.get(n);
if (!n || n.readyState !== A.OPEN || !r || !r.ready) return !1;
const i = ((t, e, n, r) => {
if (!t.key) return R([e, n]);
const i = t.c2s[e];
if (void 0 === i) return null;
const o = R([i, n, r]);
return W([q(t.key, o), o])
})(r, t, e, r.key ? ++r.seq : 0);
return !!i && (I.call(n, i), !0)
};
function Y(...c) {
const f = new A(...c),
I = {
ready: !1,
key: null,
c2s: null,
s2c: null,
seq: 0
};
return v.set(f, I), f.addEventListener("message", c => {
var A;
if (c.data instanceof ArrayBuffer) try {
const v = j(new Uint8Array(c.data));
if (!Array.isArray(v)) return;
let U = v[0];
const E = v[1];
if ("io-init" === U) {
if (I.ready = !0, I.seq = 0, 1 === E[3] && "string" == typeof E[2]) {
const t = (E[1] ^ Math.imul(1, 2654435761)) >>> 0;
I.key = (A = E[2], Uint8Array.from({
length: A.length / 2
}, (t, e) => parseInt(A.slice(2 * e, 2 * e + 2), 16))), I.c2s = ((t, e) => {
const n = t.map((t, e) => e),
r = Q(e >>> 0);
for (let t = n.length - 1; t > 0; t--) {
const e = Math.floor(r() * (t + 1));
[n[t], n[e]] = [n[e], n[t]]
}
return Object.fromEntries(t.map((t, e) => [t, n[e]]))
})(D, t), I.s2c = ((t, e) => {
const n = t.map((t, e) => e),
r = Q(e >>> 0);
for (let t = n.length - 1; t > 0; t--) {
const e = Math.floor(r() * (t + 1));
[n[t], n[e]] = [n[e], n[t]]
}
return Object.fromEntries(n.map((e, n) => [e, t[n]]))
})(F, (2246822507 ^ t) >>> 0)
}
return void(M = f)
}
if ("number" == typeof U && I.s2c && (U = I.s2c[U]), "C" === U) Bt = E[0], Kt = 100, qt = 0, Qt = 0, Xt = 0, re = !1, null !== Ht && (clearTimeout(Ht), Ht = null);
else if ("Q" === U) {
const t = C.get(E[0]);
t && (! function(t) {
if (!t || dt) return;
const n = V.get(Bt);
if (!n) return;
const r = xt();
if (!r || r.distance > 250) return;
const i = t.x - n.x,
o = t.y - n.y;
if (Math.hypot(i, o) > 120) return;
dt = !0;
const a = Math.atan2(o, i),
s = $(et.spike),
l = [a - .55, a - .28, a, a + .28, a + .55];
let u = 0;
const c = () => {
if (u >= l.length) {
if (d && !ut) {
const t = xt();
t && t.distance <= 130 && (w = !0, e = !0, X("z", pt, !0), z(7), setTimeout(() => {
X("F", 1), setTimeout(() => {
X("F", 0, null), setTimeout(() => {
X("z", tt(), !0), z(6), w = !1, e = !1
}, 150)
}, 40)
}, 40))
}
return void setTimeout(() => {
dt = !1
}, 20)
}
const t = l[u++];
X("z", s, !1), X("D", t), X("F", 1), X("F", 0, null), X("z", pt, !0), c()
};
c()
}(t), C.delete(E[0]))
} else if ("R" === U) {
E[0]
} else if ("O" === U && E[0] === Bt) {
const t = V.get(E[0]);
t && (t.health = E[1], t.lastUpdate = Date.now(), E[1] <= 0 && (t.dead = !0));
const e = Number(E[1]);
if (Ot && void 0 !== Kt && e < Kt) {
const t = Kt - e;
Rt = Date.now(), p && (m = e, function(t) {
if (!p || !n) return;
if (o) return;
const e = xt();
if (!e || e.distance > 250) return void st();
if (!r) return;
if (null !== i && t >= i) return;
r = !1, o = !0, z(7), w = !0, X("z", tt(), !0), setTimeout(() => {
if (!p || !n) return;
const t = xt();
!t || t.distance > 250 ? st() : (X("F", 1), setTimeout(() => {
if (!p || !n) return;
const t = xt();
if (!t || t.distance > 250) return st(), X("F", 0, null), void(w = !1);
setTimeout(() => {
if (!p || !n) return;
const t = xt();
if (!t || t.distance > 250) return st(), X("F", 0, null), void z(6);
t.distance < 250 ? z(11) : z(6), i = Kt, r = !0, o = !1
}, 80)
}, 120))
}, 45)
}(e)),
function(t, e) {
const n = xt();
if (n && n.distance <= 300 && 5 === n.weaponIndex && (12 === n.weaponVariant || 13 === n.weaponVariant || 15 === n.weaponVariant)) return s = !0, z(6), void _t(100 - e, t >= 25);
s = !1, _t(100 - e, t >= 38)
}(t, e)
}
Kt = e
} else if ("H" === U && Array.isArray(E) && Array.isArray(E[0])) {
const t = E[0];
for (let e = 0; e < t.length; e += 8) {
const n = t[e + 0],
r = t[e + 1],
i = t[e + 2],
o = t[e + 3],
a = t[e + 4],
s = t[e + 6],
l = t[e + 7];
C.set(n, {
id: n,
x: r,
y: i,
angle: o,
scale: a,
type: s,
ownerID: l
})
}
} else if ("a" === U && null !== Bt && Array.isArray(E) && Array.isArray(E[0])) {
const e = E[0];
for (let t = 0; t + 13 <= e.length; t += 13)
if (e[t] === Bt) {
const n = e[t + 1],
r = e[t + 2];
re ? (Zt = Yt, $t = Jt, te = n, ee = r) : (Yt = Zt = te = n, Jt = $t = ee = r, ie = n, oe = r), ne = 0, re = !0;
break
} const n = 13;
for (let t = 0; t + n - 1 < e.length; t += n) {
const n = e[t],
r = Number(e[t + 1]),
i = Number(e[t + 2]),
o = Number(e[t + 3]);
if (!Number.isFinite(r) || !Number.isFinite(i)) continue;
let a = V.get(n);
a || (a = {
sid: n,
name: "Unknown",
health: 100,
maxHealth: 100,
isMe: n === Bt
}, V.set(n, a)), a.x = r, a.y = i, a.dir = o, a.buildIndex = e[t + 4], a.weaponIndex = e[t + 5], a.weaponVariant = e[t + 6], a.team = e[t + 7], a.isLeader = e[t + 8], a.skinIndex = e[t + 9], a.tailIndex = e[t + 10], a.iconIndex = e[t + 11], a.zIndex = e[t + 12], a.dead = !1, a.lastUpdate = Date.now(), n === Bt && (Yt = r, Jt = i)
}
const r = xt();
b = !!r && r.distance < 300, ct(),
function() {
if (u) return void lt();
const t = V.get(Bt),
e = function() {
const t = V.get(Bt);
if (!t) return null;
let e = null,
n = 1 / 0;
for (const r of C.values()) {
if (15 !== r.type) continue;
if (r.ownerID === Bt) continue;
const i = V.get(r.ownerID);
if (i && null != t.team && null != i.team && i.team === t.team) continue;
const o = r.x - t.x,
a = r.y - t.y,
s = Math.hypot(o, a);
s < n && (n = s, e = r)
}
return e ? {
...e,
distance: n
} : null
}();
if (!t || !e) return void lt();
if (e.distance > 70) return void lt();
if (l) return void lt();
a = Math.atan2(e.y - t.y, e.x - t.x), ut ? (X("F", 1), X("D", a)) : (ut = !0, X("F", 1), X("z", tt(), !0), X("D", a))
}(),
function() {
if (!y) return void ct();
if (l || ut) return;
const t = xt();
if (!t || t.distance >= 180) return X("F", 0, null), ct(), void z(6);
z(7), X("D", t.angle), X("z", pt, !0), X("F", 1)
}(),
function() {
if (!w || ut) return;
const t = xt(),
e = V.get(Bt);
if (!(t && e && Number.isFinite(t.x) && Number.isFinite(t.y))) return;
const n = Math.atan2(t.y - e.y, t.x - e.x);
X("D", n)
}(),
function() {
if (s) return;
if (!ut) return;
const e = tt(),
n = t[e] || 300;
e !== h && (h = e, g = 0);
const r = performance.now();
if (r >= g) {
z(40);
const t = Math.max(15, .85 * n);
setTimeout(() => {
if (ut) {
const t = xt();
t && t.distance < 250 && (4 === t.weaponIndex || 3 === t.weaponIndex || 6 === t.weaponIndex) && z(26), z(6)
}
}, t), g = r + n
}
}(), ut || l || X("z", tt(), !0)
} else if ("D" === U) {
const t = E[0],
e = !0 === E[1],
n = {
id: t[0],
sid: t[1],
name: t[2] ?? "Unknown",
x: Number(t[3]) || 0,
y: Number(t[4]) || 0,
dir: Number(t[5]) || 0,
health: Number(t[6]) || 100,
maxHealth: Number(t[7]) || 100,
scale: Number(t[8]) || 35,
skinColor: t[9],
isMe: e,
lastUpdate: Date.now()
};
V.set(n.sid, n)
} else if ("5" === U && Array.isArray(E) && 0 === E[0] && void 0 !== E[1] && void 0 !== E[2]) {
const t = E[2] + ":" + E[1];
se.add(t), le.delete(t)
}! function() {
for (let t = 0; t < 9; t++) wt(document.getElementById("actionBarItem" + t.toString())) && (pt = t);
for (let t = 9; t < 16; t++) wt(document.getElementById("actionBarItem" + t.toString())) && (bt = t);
for (let t = 16; t < 19; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 19; t < 22; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 22; t < 26; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 26; t < 29; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 29; t < 31; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 31; t < 33; t++) wt(document.getElementById("actionBarItem" + t.toString())) && t - 16;
for (let t = 33; t < 39; t++) wt(document.getElementById("actionBarItem" + t.toString())) && 36 != t && (At = t - 16);
0
}()
} catch {}
}), f.addEventListener("close", () => {
M === f && (M = null)
}), f
}
A.prototype.send = function(t) {
const e = v.get(this);
if (!(e && e.ready && e.key && (t instanceof ArrayBuffer || ArrayBuffer.isView(t)))) return I.call(this, t);
try {
const n = t instanceof ArrayBuffer ? new Uint8Array(t) : new Uint8Array(t.buffer, t.byteOffset, t.byteLength),
r = j(n.subarray(6));
if (Array.isArray(r) && 3 === r.length) {
const t = R([r[0], r[1], ++e.seq]);
return I.call(this, W([q(e.key, t), t]))
}
} catch {}
return I.call(this, t)
}, Y.prototype = A.prototype, Object.defineProperties(Y, {
CONNECTING: {
value: A.CONNECTING
},
OPEN: {
value: A.OPEN
},
CLOSING: {
value: A.CLOSING
},
CLOSED: {
value: A.CLOSED
}
}), window.WebSocket = Y;
for (const t of ["__gmMonkey", "GM_info", "GM", "unsafeWindow"]) try {
Object.defineProperty(window, t, {
configurable: !1,
enumerable: !1,
get: () => {},
set: () => {}
})
} catch {}
const J = window.setInterval;
window.setInterval = function(t, e, ...n) {
return "function" == typeof t && /\bdebugger\b/.test(Function.prototype.toString.call(t)) ? 0 : J.call(this, t, e, ...n)
};
try {
const t = Object.getOwnPropertyDescriptor(HTMLImageElement.prototype, "src");
t && t.get && t.set && Object.defineProperty(HTMLImageElement.prototype, "src", {
configurable: t.configurable,
enumerable: t.enumerable,
get() {
return t.get.call(this)
},
set(e) {
"string" == typeof e && e.startsWith("chrome-extension://") || t.set.call(this, e)
}
})
} catch {}
const Z = t => t && "none" !== getComputedStyle(t).display,
$ = t => t.find(t => Z(document.getElementById("actionBarItem" + (16 + t)))) ?? t[0],
tt = () => L,
et = {
spike: [6, 7, 8, 9],
trap: [15],
windmill: [10, 11, 12]
},
nt = {
KeyV: "spike",
KeyF: "trap",
KeyN: "windmill"
},
rt = (t, e) => {
X("z", t, !1), X("D", e), X("F", 1, e), X("F", 0, e), X("z", tt(), !0)
},
it = () => {
const t = V.get(Bt);
return t && Number.isFinite(t.dir) ? t.dir : null
},
ot = () => {
const t = it();
if (null === t) return;
const e = $(et.trap);
rt(e, t), rt(e, t + Math.PI / 2), rt(e, t - Math.PI / 2), rt(e, t + Math.PI)
};
function at(t) {
f !== t && (f = t, X("c", 0, t, 1))
}
function st() {
n = !1, r = !1, o = !1, i = Kt, z(6), ct()
}
function lt() {
ut ? (ut = !1, a = null, X("F", 0, null), X("z", tt(), !0), setTimeout(() => {
z(6)
}, 200), ct()) : a = null
}
let ut = !1;
function ct() {
const t = xt();
if (!s)
if (ut) at(21);
else {
if (t) {
if (y && t.distance < 250) return;
if (n && t.distance < 250) return;
if (d && t.distance < 150) return;
if (p && t.distance < 250) return
}!(r && t.distance < 300) || ut || l || e ? l || e || (t && t.distance < 250 && (p || y) ? at(21) : (at(19), b ? z(O) : H.size > 0 ? z(K) : z(B))) : z(11)
}
}
let ft = !1;
setInterval(() => {
! function() {
const t = xt();
t && t.distance < 100 && !ut && !ft && (ft = !0, ot(), setTimeout(() => {
X("z", tt(), !0)
}, 50), setTimeout(() => {
ft = !1
}, 1e4))
}(), X("K", 0)
}, 250);
let dt = !1;
let yt = null;
function mt() {
let t = 0,
e = 0;
for (const n of H) {
const r = Dt[n];
r && (t += r[0], e += r[1])
}
return 0 === t && 0 === e ? null : Math.atan2(e, t)
}
function gt() {
const t = V.get(Bt);
if (!t) return null;
const e = xt();
if (!e || e.distance > 200) return null;
for (const n of C.values()) {
if (15 !== n.type) continue;
if (n.ownerID === Bt) continue;
const r = V.get(n.ownerID);
if (r && null != t.team && null != r.team && r.team === t.team) continue;
const i = e.x - n.x,
o = e.y - n.y;
if (Math.hypot(i, o) <= 65) return e
}
return null
}
function ht() {
const t = V.get(Bt),
e = gt();
if (ut) return;
if (!t || !e) return;
const n = mt();
if (null === n) return;
const r = $(et.spike);
if (null == r) return;
const i = tt(),
o = Math.atan2(t.y - e.y, t.x - e.x),
a = n + Math.PI,
s = a + .65 * Math.atan2(Math.sin(o - a), Math.cos(o - a)),
l = [s - .45, s, s + .45];
for (const t of l) X("z", r, !1), X("D", t), X("F", 1), X("F", 0, null);
X("z", i, !0)
}
function wt(t) {
return null !== t.offsetParent
}
var pt, bt, At;
setInterval(function() {
const t = gt();
!t || t.distance > 200 || null === mt() ? null !== yt && (clearInterval(yt), yt = null) : null === yt && (ht(), yt = setInterval(ht, 120))
}, 75);
let It = !1,
vt = !1,
Mt = !1;
const Ut = 500;
function Et() {
It = !1, vt = !1,
function() {
for (const t of [...Ft]) window.dispatchEvent(new KeyboardEvent("keyup", {
key: t.replace("Key", "").toLowerCase(),
code: t,
bubbles: !0
}));
Ft.clear()
}(), w = !1, l = !1, X("F", 0, null), X("9", null, 0), z(6)
}
function kt() {
if (!It || Mt) return;
const t = xt(),
e = V.get(Bt);
if (t && e && !(t.distance > Ut)) {
if (t.distance > 250) {
const e = t.angle;
let n;
X("9", e, 1);
const r = Math.cos(e),
i = Math.sin(e);
return n = Math.abs(r) > Math.abs(i) ? r > 0 ? "KeyD" : "KeyA" : i > 0 ? "KeyS" : "KeyW", void(Ft.has(n) || window.dispatchEvent(new KeyboardEvent("keydown", {
key: n.replace("Key", "").toLowerCase(),
code: n,
bubbles: !0
})))
}
t.distance < 200 || function() {
if (!It || vt || Mt) return;
const t = xt();
if (!t || t.distance > Ut) return;
vt = !0, w = !0, l = !0, X("z", tt(), !0), z(53), kt(), setTimeout(() => {
if (!It || Mt) return void Et();
const t = xt();
!t || t.distance > Ut ? Et() : (z(7), X("z", pt, !0), X("F", 1), setTimeout(() => {
It && !Mt ? (X("F", 0, null), z(6), X("z", tt(), !0), w = !1, l = !1, Mt = !0, vt = !1) : Et()
}, 45))
}, 100)
}()
}
}
function Tt(t) {
X("6", t)
}
function xt() {
if (null == Bt) return null;
const t = V.get(Bt);
if (!t) return null;
const e = Date.now();
let n = null,
r = 1 / 0;
for (const i of V.values()) {
if (i.sid === Bt || i.dead || i.health <= 0 || !Number.isFinite(i.x) || !Number.isFinite(i.y) || !Number.isFinite(i.lastUpdate) || e - i.lastUpdate > 500) continue;
if (null != t.team && null != i.team && t.team === i.team) continue;
const o = i.x - t.x,
a = i.y - t.y,
s = Math.hypot(o, a);
s < r && (r = s, n = i)
}
return n ? {
...n,
distance: r,
angle: Math.atan2(n.y - t.y, n.x - t.x)
} : null
}
window.addEventListener("mousemove", t => {
U = t.clientX, E = t.clientY
}, !0);
const Dt = {
KeyW: [0, -1],
KeyS: [0, 1],
KeyA: [-1, 0],
KeyD: [1, 0],
ArrowUp: [0, -1],
ArrowDown: [0, 1],
ArrowLeft: [-1, 0],
ArrowRight: [1, 0]
},
Ft = new Set,
Nt = (t, e, n) => {
X("z", t, !1), X("F", 1, e), X("F", 0, e), X("z", n, !0)
},
St = () => {
const t = (() => {
let t = 0,
e = 0;
for (const n of Ft) {
const r = Dt[n];
t += r[0], e += r[1]
}
return t || e ? Math.atan2(e, t) : null
})();
if (null === t) return;
const e = $(et.windmill),
n = tt(),
r = t + Math.PI,
i = 78 * Math.PI / 180;
Nt(e, r + i, n), Nt(e, r - i, n), Nt(e, r, n), X("D", Math.atan2(E - innerHeight / 2, U - innerWidth / 2))
};
let Ct = null,
Lt = !1;
const zt = {
0: 20,
1: 40,
2: 30
};
let Kt, Bt = null,
Ot = !0,
Pt = !1,
Ht = null,
Vt = 0,
Wt = 0,
Rt = 0,
jt = 0;
const Gt = () => {
if (Vt <= 0) return;
const t = Vt;
Vt = 0, (() => {
const t = Date.now();
if (!Rt) return;
const e = t - Rt;
e < 70 ? Wt = Math.min(3, Wt + 1) : e >= 130 && (Wt = Math.max(0, Wt - 1)), jt = t
})();
const e = $([0, 1, 2]);
if (null == e || e < 0) return;
const n = zt[e] || 20;
for (let r = 0; r < t; r += n) X("z", e, !1), X("F", 1, null), X("F", 0, null), X("z", tt(), !0)
},
_t = (t, e = !1) => {
if (Number.isFinite(t) && !(t <= 0)) {
if (Vt = Math.max(Vt, t), e) return null !== Ht && (clearTimeout(Ht), Ht = null), void Gt();
null === Ht && (Ht = setTimeout(() => {
Ht = null, Gt()
}, (() => {
const t = Number(window.pingTime);
let e;
return e = Number.isFinite(t) ? t <= 70 ? 125 : t >= 200 ? 115 : t >= 80 ? 120 : 130 : 130, Wt >= 3 ? e : Wt >= 2 || Wt >= 1 ? 0 : e
})()))
}
};
let qt = 0,
Qt = 0,
Xt = 0;
let Yt = 0,
Jt = 0,
Zt = 0,
$t = 0,
te = 0,
ee = 0,
ne = 0,
re = !1,
ie = 0,
oe = 0;
const ae = [{
id: 6,
type: 0,
cost: 4e3
}, {
id: 40,
type: 0,
cost: 15e3
}, {
id: 7,
type: 0,
cost: 6e3
}, {
id: 12,
type: 0,
cost: 6e3
}, {
id: 22,
type: 0,
cost: 6e3
}, {
id: 53,
type: 0,
cost: 1e4
}, {
id: 11,
type: 0,
cost: 1e4
}, {
id: 19,
type: 1,
cost: 15e3
}, {
id: 21,
type: 0,
cost: 2e4
}],
se = new Set,
le = new Set;
setInterval(() => {
if (null === Bt) return;
const t = (() => {
const t = document.getElementById("scoreDisplay");
if (!t) return 0;
const e = (t.innerText || "").trim(),
n = parseFloat(e);
return isNaN(n) ? 0 : /k$/i.test(e) ? Math.round(1e3 * n) : Math.round(n)
})();
for (const e of ae) {
const n = e.type + ":" + e.id;
if (!se.has(n) && !le.has(n)) return void(t >= e.cost && (X("c", 1, e.id, e.type), le.add(n)))
}
}, 200);
const ue = t => t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement || t instanceof HTMLSelectElement || t instanceof HTMLElement && t.isContentEditable,
ce = t => {
Ft.delete(t), "KeyB" !== t || (Lt = !1)
};
let fe;
document.addEventListener("keydown", t => {
if (90 === t.keyCode && z(40), 69 === t.keyCode) {
if (!ut || !l || !d) return;
t.preventDefault(), X("F", 1)
}
}), window.addEventListener("keydown", t => {
const e = t.target;
if (ue(e)) return;
if (Dt[t.code] && Ft.add(t.code), t.ctrlKey || t.altKey || t.metaKey) return;
if ("KeyB" === t.code) {
if (Lt) return;
return Lt = !0, void(() => {
if (null !== Ct) return clearInterval(Ct), void(Ct = null);
St(), Ct = setInterval(St, 1e3 / 3)
})()
}
if ("KeyH" === t.code) return t.preventDefault(), void(() => {
const t = it();
if (null === t || void 0 === At) return;
const e = Math.PI / 4;
rt(At, t + e), rt(At, t - e)
})();
if ("KeyI" === t.code) return t.preventDefault(), void ot();
"KeyM" === t.code && X("N");
const n = nt[t.code] ?? null;
null !== n && (t => {
const e = $(et[t]),
n = Math.round(100 * Math.atan2(E - innerHeight / 2, U - innerWidth / 2)) / 100;
setTimeout(() => {
X("z", e, !1), X("D", n), X("F", 1, n), X("F", 0, n), X("z", tt(), !0)
}, 20)
})(n)
}), document.addEventListener("keydown", t => {
const e = t.target;
if (!ue(e)) {
if ("1" === t.key && (L = 0), "2" === t.key && (L = 1), 82 === t.keyCode && (ut && (u = !0, Tt("test"), lt()), function() {
const t = xt();
t && (t && t.distance > 300 || (w = !0, l = !0, X("z", pt, !0), z(7), setTimeout(() => {
X("F", 1), setTimeout(() => {
z(53), X("z", bt, !0), setTimeout(() => {
ut ? X("z", pt, !0) : setTimeout(() => {
X("z", pt, !0)
}, 1300)
}, 80), setTimeout(() => {
w = !1, l = !1, z(6), X("F", 0, null), u = !1
}, 150)
}, 120)
}, 40)))
}()), 188 === t.keyCode) {
V.get(Bt);
ut = !1, X("F", 0, null), ct()
}
if (84 === t.keyCode) {
if (t.preventDefault(), It) return;
It = !0, Mt = !1, vt = !1, w = !0, l = !0,
function() {
if (!It || Mt) return;
const t = xt();
!t || t.distance > Ut || kt()
}()
}
74 === t.keyCode && (ut || (p = !p, p ? function() {
if (!p) return;
const t = xt();
!t || t.distance > 250 ? st() : (n = !0, r = !0, o = !1, i = Kt, z(11), setTimeout(() => {
at(21)
}, 120))
}() : st(), Tt("anb " + p))), 189 === t.keyCode && (d = !d, Tt("stachel takt " + (d ? "1" : "0"))), 187 === t.keyCode && (y = !y, Tt("ab " + y))
}
}), window.addEventListener("keyup", t => {
if ("KeyT" === t.code) return Et(), void(Mt = !1);
ce(t.code)
}, !0), window.addEventListener("blur", () => {
for (const t of k.keys()) ce(t);
Ft.clear(), null !== Ct && (clearInterval(Ct), Ct = null), Lt = !1, Pt = !1
}, !0);
let de = 0;
setInterval(() => {
fe = parseInt(document.getElementById("killCounter").innerText), fe > de && (Tt(fe + " kills"), setTimeout(() => {
Tt("get better")
}, 800)), de = fe
}, 200)
})();
!function(){"use strict";function e(e,t=3e3){const o=document.createElement("div");o.textContent=e,o.style.position="fixed",o.style.bottom="20px",o.style.right="20px",o.style.backgroundColor="#323232",o.style.color="#fff",o.style.padding="10px 20px",o.style.borderRadius="5px",o.style.boxShadow="0px 0px 10px rgba(0,0,0,0.5)",o.style.zIndex="1000",o.style.fontSize="24px",o.style.opacity="0",o.style.transition="opacity 0.5s",document.body.appendChild(o),setTimeout(()=>{o.style.opacity="1"},100),setTimeout(()=>{o.style.opacity="0",setTimeout(()=>{document.body.removeChild(o)},500)},t)}window.addEventListener("load",()=>{e("Please support me by Subscribing.",3e3),setTimeout(()=>{e("Youtube: Feature69_",3e3)},4e3),setTimeout(()=>{e("Thanks.",3e3)},8e3)})}();
(window, document);