Message
Message
* // ==UserScript==
* // @name NVR
* // @namespace http://tampermonkey.net/
* // @version 0.2
* // @description try to take over the world!
* // @author You
* // @include /^http[s]?:\/\/((sandbox|dev)\.)?moomoo\.io\/?(\?server=\d+:\
d+:\d+)?$/
* // @icon
https://media.discordapp.net/attachments/1026024421925855302/1058027305764667452/
UMrA0xrKmPkAAAAASUVORK5CYII.png
* // @grant none
* // @run-at document-start
* // ==/UserScript==
*/
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./frontend/src/core/Action.ts":
/*!*************************************!*\
!*** ./frontend/src/core/Action.ts ***!
\*************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Action": () => (/* binding */ Action)
/* harmony export */ });
class Action {
constructor(id, type, priority, executeTick, data, force) {
this.id = id;
this.type = type;
this.priority = priority;
this.executeTick = executeTick;
this.data = data;
this.force = force;
}
}
/***/ }),
/***/ "./frontend/src/core/ActionType.ts":
/*!*****************************************!*\
!*** ./frontend/src/core/ActionType.ts ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ActionPriority": () => (/* binding */ ActionPriority),
/* harmony export */ "ActionType": () => (/* binding */ ActionType)
/* harmony export */ });
// top = lowest priority
// bottom = highest priority
// (because enums starts indexing from 0 and for us, higher index = higher
priority)
var ActionPriority;
(function (ActionPriority) {
ActionPriority[ActionPriority["COMPATIBILITY"] = 0] = "COMPATIBILITY";
ActionPriority[ActionPriority["BIOMEHAT"] = 1] = "BIOMEHAT";
ActionPriority[ActionPriority["ANTITRAP"] = 2] = "ANTITRAP";
ActionPriority[ActionPriority["AUTOBREAK"] = 3] = "AUTOBREAK";
ActionPriority[ActionPriority["ANTIBULL"] = 4] = "ANTIBULL";
ActionPriority[ActionPriority["SPIKESYNC"] = 5] = "SPIKESYNC";
ActionPriority[ActionPriority["ANTIINSTA"] = 6] = "ANTIINSTA";
ActionPriority[ActionPriority["FORCED"] = 7] = "FORCED";
})(ActionPriority || (ActionPriority = {}));
var ActionType;
(function (ActionType) {
ActionType[ActionType["HAT"] = 0] = "HAT";
ActionType[ActionType["TAIL"] = 1] = "TAIL";
ActionType[ActionType["ATTACK"] = 2] = "ATTACK";
ActionType[ActionType["WEAPON"] = 3] = "WEAPON";
})(ActionType || (ActionType = {}));
/***/ }),
/***/ "./frontend/src/core/Core.ts":
/*!***********************************!*\
!*** ./frontend/src/core/Core.ts ***!
\***********************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Core": () => (/* binding */ Core),
/* harmony export */ "setTarget": () => (/* binding */ setTarget),
/* harmony export */ "sym": () => (/* binding */ sym),
/* harmony export */ "target": () => (/* binding */ target)
/* harmony export */ });
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_PacketHandler__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../socket/PacketHandler */
"./frontend/src/socket/PacketHandler.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
/* harmony import */ var _util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../util/engine/TickEngine */
"./frontend/src/util/engine/TickEngine.ts");
/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ./Action */ "./frontend/src/core/Action.ts");
/* harmony import */ var _ActionType__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ./ActionType */ "./frontend/src/core/ActionType.ts");
/* harmony import */ var
_util_engine_PacketCountEngine__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../util/engine/PacketCountEngine */
"./frontend/src/util/engine/PacketCountEngine.ts");
/* harmony import */ var _manager_ObjectManager__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../manager/ObjectManager */
"./frontend/src/manager/ObjectManager.ts");
/* harmony import */ var _render_RenderManager__WEBPACK_IMPORTED_MODULE_11__ =
__webpack_require__(/*! ../render/RenderManager */
"./frontend/src/render/RenderManager.ts");
/* harmony import */ var
_render_interface_PacketCountModule__WEBPACK_IMPORTED_MODULE_12__ =
__webpack_require__(/*! ../render/interface/PacketCountModule */
"./frontend/src/render/interface/PacketCountModule.ts");
/* harmony import */ var _features_ModuleManager__WEBPACK_IMPORTED_MODULE_13__ =
__webpack_require__(/*! ../features/ModuleManager */
"./frontend/src/features/ModuleManager.ts");
/* harmony import */ var
_util_engine_InteractionEngine__WEBPACK_IMPORTED_MODULE_14__ =
__webpack_require__(/*! ../util/engine/InteractionEngine */
"./frontend/src/util/engine/InteractionEngine.ts");
/* harmony import */ var _injector_BundleProxy__WEBPACK_IMPORTED_MODULE_15__ =
__webpack_require__(/*! ../injector/BundleProxy */
"./frontend/src/injector/BundleProxy.ts");
/* harmony import */ var _injector_api_API__WEBPACK_IMPORTED_MODULE_16__ =
__webpack_require__(/*! ../injector/api/API */
"./frontend/src/injector/api/API.ts");
/* harmony import */ var
_render_interface_PacketGraphModule__WEBPACK_IMPORTED_MODULE_17__ =
__webpack_require__(/*! ../render/interface/PacketGraphModule */
"./frontend/src/render/interface/PacketGraphModule.ts");
/* harmony import */ var _manager_PlayerManager__WEBPACK_IMPORTED_MODULE_18__ =
__webpack_require__(/*! ../manager/PlayerManager */
"./frontend/src/manager/PlayerManager.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_19__ =
__webpack_require__(/*! ../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_20__ =
__webpack_require__(/*! ../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _loader_NVRLoader__WEBPACK_IMPORTED_MODULE_21__ =
__webpack_require__(/*! ../loader/NVRLoader */
"./frontend/src/loader/NVRLoader.ts");
/* harmony import */ var
_render_BuildingVisualisationModule__WEBPACK_IMPORTED_MODULE_22__ =
__webpack_require__(/*! ../render/BuildingVisualisationModule */
"./frontend/src/render/BuildingVisualisationModule.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_23__ =
__webpack_require__(/*! ../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _manager_ProjectileManager__WEBPACK_IMPORTED_MODULE_24__ =
__webpack_require__(/*! ../manager/ProjectileManager */
"./frontend/src/manager/ProjectileManager.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_socket_PacketHandler__WEBPACK_IMPORTED_MODU
LE_2__, _manager_ObjectManager__WEBPACK_IMPORTED_MODULE_10__,
_features_ModuleManager__WEBPACK_IMPORTED_MODULE_13__,
_util_engine_InteractionEngine__WEBPACK_IMPORTED_MODULE_14__,
_injector_BundleProxy__WEBPACK_IMPORTED_MODULE_15__,
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_21__,
_render_BuildingVisualisationModule__WEBPACK_IMPORTED_MODULE_22__]);
([_socket_PacketHandler__WEBPACK_IMPORTED_MODULE_2__,
_manager_ObjectManager__WEBPACK_IMPORTED_MODULE_10__,
_features_ModuleManager__WEBPACK_IMPORTED_MODULE_13__,
_util_engine_InteractionEngine__WEBPACK_IMPORTED_MODULE_14__,
_injector_BundleProxy__WEBPACK_IMPORTED_MODULE_15__,
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_21__,
_render_BuildingVisualisationModule__WEBPACK_IMPORTED_MODULE_22__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
/*
const pathfinder = new Pathfinder();
function setTarget(player) {
target = player;
}
class Core extends (events__WEBPACK_IMPORTED_MODULE_0___default()) {
static get ENDPOINT() {
return "https://pleasingringedexpertise.gg69gamer.repl.co";
}
static get VER() {
return new class extends String {
uformat() {
return this.replace(/\./g, "_");
}
}("1.0.0");
}
static get AUTHORS() {
return ["Zaary", "Splex"];
}
actionIdCounter = 0;
packetBlockIdCounter = 0;
constructor() {
super();
Object.defineProperty(window, "core", {
value: this
});
logger.info(`launched StarLit core version ${Core.VER} by $
{Core.AUTHORS.join(", ")}`);
this.bundleAPI = new _injector_api_API__WEBPACK_IMPORTED_MODULE_16__["default"]
(this);
this.loaded = false;
this.mstate = {
mouseHeld: false
};
this.lastUpdate = Date.now();
this.scheduledActions = [];
this.lastActionState = {
hat: 0,
tail: 0,
attack: 0,
aim: 0,
weapon: [0, true]
};
this.packetBlocks = {};
this.moduleManager = new
_features_ModuleManager__WEBPACK_IMPORTED_MODULE_13__["default"](); // initialize
modules first so engines can hook into them
this.objectManager = new
_manager_ObjectManager__WEBPACK_IMPORTED_MODULE_10__["default"](this);
this.playerManager = new
_manager_PlayerManager__WEBPACK_IMPORTED_MODULE_18__["default"]();
this.projectileManager = new
_manager_ProjectileManager__WEBPACK_IMPORTED_MODULE_24__["default"](this);
this.renderManager = null;
this.tickEngine = new
_util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_6__.TickEngine(this);
this.packetEngine = new
_util_engine_PacketCountEngine__WEBPACK_IMPORTED_MODULE_9__.PacketCountEngine(this)
;
this.interactionEngine = new
_util_engine_InteractionEngine__WEBPACK_IMPORTED_MODULE_14__["default"](this);
this.mouseAngle = 0;
this.bundleDir = null;
}
lockBundleDirection(priority, dir) {
if (this.bundleDir === null || priority >= this.bundleDir[0]) {
this.bundleDir = [priority, dir];
this.bundleAPI.values.set("attackdir", dir);
}
}
unlockBundleDirection(priority) {
if (this.bundleDir !== null && priority >= this.bundleDir[0]) {
this.bundleDir = null;
this.bundleAPI.values.delete("attackdir");
}
}
onApiCallback(name, args, callback) {
switch (name) {
case "iosend":
{
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.bundleSend(args[0],
args[1]);
break;
}
}
}
removePacketInterceptor489() {
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_21__["default"].stop();
}
// the name is just a disguise, its actually a function which initializes the
core
removePacketInterceptor164() {
this.lastUpdate = Date.now();
/*this.scheduledActions = [];
this.lastActionState = {
hat: 0,
tail: 0,
attack: 0,
aim: 0,
weapon: 0
}
this.packetBlocks = {};
this.objectManager = new ObjectManager(this);
this.playerManager = new PlayerManager();
this.renderManager = null;
this.moduleManager = new ModuleManager();
this.tickEngine = new TickEngine(this);
this.packetEngine = new PacketCountEngine(this);
this.interactionEngine = new InteractionEngine(this);*/
this.tickEngine.once("ping",
this.packetEngine.handlePing.bind(this.packetEngine));
this.tickEngine.on("pretick", tick => {
this.scheduledActions = []; // since modules use actions, we can clear right
before calling them
this.moduleManager.onPreTick(tick);
this.runUppermostActions(_ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.HAT,
tick);
this.runUppermostActions(_ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.TAIL,
tick);
this.runUppermostActions(_ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.WEAPON
, tick); // important to switch weapon before attack
this.runUppermostActions(_ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.ATTACK
, tick);
});
this.tickEngine.on("posttick", tick => {
this.moduleManager.onPostTick(tick);
});
this.tickEngine.on("tick", this.moduleManager.onTick.bind(this.moduleManager));
this.mouseAngle = 0;
document.addEventListener("keydown", event => {
this.emit("keydown", event);
this.moduleManager.onKeydown(event.keyCode);
});
document.addEventListener("keyup", event => {
this.emit("keyup", event);
this.moduleManager.onKeyup(event.keyCode);
});
_socket_PacketHandler__WEBPACK_IMPORTED_MODULE_2__.PacketHandler.processOut(event,
meta);
this.moduleManager.onPacketSend(event);
});
// listen for received packets (always process the packet before passing it to
modules)
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.on("packetreceive",
event => {
_socket_PacketHandler__WEBPACK_IMPORTED_MODULE_2__.PacketHandler.processIn(event.ge
tPacket());
this.moduleManager.onPacketReceive(event);
});
setInterval(this.update.bind(this), 1);
this.loaded = true;
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_21__["default"].stop();
}
patchBundle(src, promise) {
_injector_BundleProxy__WEBPACK_IMPORTED_MODULE_15__["default"].loadBundle(src,
this.bundleAPI, promise);
}
async initializeRenderer(canvas) {
this.renderManager = new
_render_RenderManager__WEBPACK_IMPORTED_MODULE_11__["default"](this, canvas, 1920,
1080);
//console.log(final);
// remove action from the list (not needed since we clear all actions on tick
begin)
/*const index = this.scheduledActions.indexOf(action);
if (index > -1) {
this.scheduledActions.splice(index, 1);
}*/
}
}
runAction(action) {
switch (action.type) {
case _ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.HAT:
if (action.data[0] === this.lastActionState.hat) return;
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_3__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_4__.PacketType.BUY_AND_EQUIP, [0, action.data[0], 0]));
this.lastActionState.hat = action.data[0];
break;
case _ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.TAIL:
if (action.data[0] === this.lastActionState.tail) return;
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_3__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_4__.PacketType.BUY_AND_EQUIP, [0, action.data[0], 1]));
this.lastActionState.tail = action.data[0];
break;
case _ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.ATTACK:
if (action.data[0] === this.lastActionState.attack && action.data[1] ===
this.lastActionState.aim) return;
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_3__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_4__.PacketType.ATTACK, action.data), action.force);
this.lastActionState.attack = action.data[0];
this.lastActionState.aim = action.data[1];
break;
case _ActionType__WEBPACK_IMPORTED_MODULE_8__.ActionType.WEAPON:
if (action.data[0] === this.lastActionState.weapon[0] && action.data[1] ===
this.lastActionState.weapon[1]) return;
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_3__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_4__.PacketType.SELECT_ITEM, [action.data[0],
action.data[1]]));
this.lastActionState.weapon = [action.data[0], action.data[1]];
default:
return;
}
this.moduleManager.onActionRun(action);
}
scheduleAction(action, priority, tick = this.tickEngine.tickIndex + 1, data,
force) {
const ac = new
_Action__WEBPACK_IMPORTED_MODULE_7__.Action(this.actionIdCounter++, action,
priority, tick, data, force ? true : false);
this.scheduledActions.push(ac);
return ac.id;
}
cleanActions(priority, action, tick) {
this.scheduledActions = this.scheduledActions.filter(x => x.priority ===
priority && (action === undefined || x.type === action) && (tick === undefined ||
tick === x.executeTick));
}
isHighestPriority(priority, tick) {
return this.scheduledActions.filter(x => x.priority > priority && x.executeTick
=== tick).length === 0;
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/data/moomoo/accessories.ts":
/*!*************************************************!*\
!*** ./frontend/src/data/moomoo/accessories.ts ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
const accessories = [{
id: 12,
name: "Snowball",
price: 1000,
scale: 105,
xOff: 18,
desc: "no effect"
}, {
id: 9,
name: "Tree Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 10,
name: "Stone Cape",
price: 1000,
scale: 90,
desc: "no effect"
}, {
id: 3,
name: "Cookie Cape",
price: 1500,
scale: 90,
desc: "no effect"
}, {
id: 8,
name: "Cow Cape",
price: 2000,
scale: 90,
desc: "no effect"
}, {
id: 11,
name: "Monkey Tail",
price: 2000,
scale: 97,
xOff: 25,
desc: "Super speed but reduced damage",
spdMult: 1.35,
dmgMultO: 0.2
}, {
id: 17,
name: "Apple Basket",
price: 3000,
scale: 80,
xOff: 12,
desc: "slowly regenerates health over time",
healthRegen: 1
}, {
id: 6,
name: "Winter Cape",
price: 3000,
scale: 90,
desc: "no effect"
}, {
id: 4,
name: "Skull Cape",
price: 4000,
scale: 90,
desc: "no effect"
}, {
id: 5,
name: "Dash Cape",
price: 5000,
scale: 90,
desc: "no effect"
}, {
id: 2,
name: "Dragon Cape",
price: 6000,
scale: 90,
desc: "no effect"
}, {
id: 1,
name: "Super Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 7,
name: "Troll Cape",
price: 8000,
scale: 90,
desc: "no effect"
}, {
id: 14,
name: "Thorns",
price: 10000,
scale: 115,
xOff: 20,
desc: "no effect"
}, {
id: 15,
name: "Blockades",
price: 10000,
scale: 95,
xOff: 15,
desc: "no effect"
}, {
id: 20,
name: "Devils Tail",
price: 10000,
scale: 95,
xOff: 20,
desc: "no effect"
}, {
id: 16,
name: "Sawblade",
price: 12000,
scale: 90,
spin: true,
xOff: 0,
desc: "deal damage to players that damage you",
dmg: 0.15
}, {
id: 13,
name: "Angel Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 19,
name: "Shadow Wings",
price: 15000,
scale: 138,
xOff: 22,
desc: "increased movement speed",
spdMult: 1.1
}, {
id: 18,
name: "Blood Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "restores health when you deal damage",
healD: 0.2
}, {
id: 21,
name: "Corrupt X Wings",
price: 20000,
scale: 178,
xOff: 26,
desc: "deal damage to players that damage you",
dmg: 0.25
}];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (accessories);
/***/ }),
/***/ "./frontend/src/data/moomoo/config.ts":
/*!********************************************!*\
!*** ./frontend/src/data/moomoo/config.ts ***!
\********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* module decorator */ module = __webpack_require__.hmd(module);
const config = {
maxScreenWidth: 1920,
maxScreenHeight: 1080,
serverUpdateRate: 9,
maxPlayers: 40,
maxPlayersHard: 50,
collisionDepth: 6,
minimapRate: 3000,
colGrid: 10,
clientSendRate: 5,
healthBarWidth: 50,
iconPadding: 15,
iconPad: 0.9,
deathFadeout: 3000,
crownIconScale: 60,
crownPad: 35,
chatCountdown: 3000,
chatCooldown: 500,
inSandbox: window.location.origin.indexOf("sandbox") != -1,
maxAge: 100,
gatherAngle: Math.PI / 2.6,
gatherWiggle: 10,
hitReturnRatio: 0.25,
hitAngle: Math.PI / 2,
playerScale: 35,
playerSpeed: 0.0016,
playerDecel: 0.993,
nameY: 34,
skinColors: ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373",
"#4c4c4c", "#ecaff7", "#738cc3", "#8bc373"],
animalCount: 7,
aiTurnRandom: 0.06,
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"],
shieldAngle: Math.PI / 3,
weaponVariants: [{
id: 0,
src: "",
xp: 0,
val: 1
}, {
id: 1,
src: "_g",
xp: 3000,
val: 1.1
}, {
id: 2,
src: "_d",
xp: 7000,
val: 1.18
}, {
id: 3,
src: "_r",
poison: true,
xp: 12000,
val: 1.18
}],
fetchVariant: function (player) {
var tmpXP = player.weaponXP[player.weaponIndex] || 0;
for (var i = module.exports.weaponVariants.length - 1; i >= 0; --i) {
if (tmpXP >= module.exports.weaponVariants[i].xp) return
config.weaponVariants[i];
}
},
resourceTypes: ["wood", "food", "stone", "points"],
areaCount: 7,
treesPerArea: 9,
bushesPerArea: 3,
totalRocks: 32,
goldOres: 7,
riverWidth: 724,
riverPadding: 114,
waterCurrent: 0.0011,
waveSpeed: 0.0001,
waveMax: 1.3,
treeScales: [150, 160, 165, 175],
bushScales: [80, 85, 95],
rockScales: [80, 85, 90],
snowBiomeTop: 2400,
snowSpeed: 0.75,
maxNameLength: 15,
mapScale: 14400,
mapPingScale: 40,
mapPingTime: 2200
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (config);
/***/ }),
/***/ "./frontend/src/data/moomoo/hats.ts":
/*!******************************************!*\
!*** ./frontend/src/data/moomoo/hats.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
const hats = [{
id: 45,
name: "Shame!",
dontSell: true,
price: 0,
scale: 120,
desc: "hacks are for losers"
}, {
id: 51,
name: "Moo Cap",
price: 0,
scale: 120,
desc: "coolest mooer around"
}, {
id: 50,
name: "Apple Cap",
price: 0,
scale: 120,
desc: "apple farms remembers"
}, {
id: 28,
name: "Moo Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 29,
name: "Pig Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 30,
name: "Fluff Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 36,
name: "Pandou Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 37,
name: "Bear Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 38,
name: "Monkey Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 44,
name: "Polar Head",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 35,
name: "Fez Hat",
price: 0,
scale: 120,
desc: "no effect"
}, {
id: 42,
name: "Enigma Hat",
price: 0,
scale: 120,
desc: "join the enigma army"
}, {
id: 43,
name: "Blitz Hat",
price: 0,
scale: 120,
desc: "hey everybody i'm blitz"
}, {
id: 49,
name: "Bob XIII Hat",
price: 0,
scale: 120,
desc: "like and subscribe"
}, {
id: 57,
name: "Pumpkin",
price: 50,
scale: 120,
desc: "Spooooky"
}, {
id: 8,
name: "Bummle Hat",
price: 100,
scale: 120,
desc: "no effect"
}, {
id: 2,
name: "Straw Hat",
price: 500,
scale: 120,
desc: "no effect"
}, {
id: 15,
name: "Winter Cap",
price: 600,
scale: 120,
desc: "allows you to move at normal speed in snow",
coldM: 1
}, {
id: 5,
name: "Cowboy Hat",
price: 1000,
scale: 120,
desc: "no effect"
}, {
id: 4,
name: "Ranger Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 18,
name: "Explorer Hat",
price: 2000,
scale: 120,
desc: "no effect"
}, {
id: 31,
name: "Flipper Hat",
price: 2500,
scale: 120,
desc: "have more control while in water",
watrImm: true
}, {
id: 1,
name: "Marksman Cap",
price: 3000,
scale: 120,
desc: "increases arrow speed and range",
aMlt: 1.3
}, {
id: 10,
name: "Bush Gear",
price: 3000,
scale: 160,
desc: "allows you to disguise yourself as a bush"
}, {
id: 48,
name: "Halo",
price: 3000,
scale: 120,
desc: "no effect"
}, {
id: 6,
name: "Soldier Helmet",
price: 4000,
scale: 120,
desc: "reduces damage taken but slows movement",
spdMult: 0.94,
dmgMult: 0.75
}, {
id: 23,
name: "Anti Venom Gear",
price: 4000,
scale: 120,
desc: "makes you immune to poison",
poisonRes: 1
}, {
id: 13,
name: "Medic Gear",
price: 5000,
scale: 110,
desc: "slowly regenerates health over time",
healthRegen: 3
}, {
id: 9,
name: "Miners Helmet",
price: 5000,
scale: 120,
desc: "earn 1 extra gold per resource",
extraGold: 1
}, {
id: 32,
name: "Musketeer Hat",
price: 5000,
scale: 120,
desc: "reduces cost of projectiles",
projCost: 0.5
}, {
id: 7,
name: "Bull Helmet",
price: 6000,
scale: 120,
desc: "increases damage done but drains health",
healthRegen: -5,
dmgMultO: 1.5,
spdMult: 0.96
}, {
id: 22,
name: "Emp Helmet",
price: 6000,
scale: 120,
desc: "turrets won't attack but you move slower",
antiTurret: 1,
spdMult: 0.7
}, {
id: 12,
name: "Booster Hat",
price: 6000,
scale: 120,
desc: "increases your movement speed",
spdMult: 1.16
}, {
id: 26,
name: "Barbarian Armor",
price: 8000,
scale: 120,
desc: "knocks back enemies that attack you",
dmgK: 0.6
}, {
id: 21,
name: "Plague Mask",
price: 10000,
scale: 120,
desc: "melee attacks deal poison damage",
poisonDmg: 5,
poisonTime: 6
}, {
id: 46,
name: "Bull Mask",
price: 10000,
scale: 120,
desc: "bulls won't target you unless you attack them",
bullRepel: 1
}, {
id: 14,
name: "Windmill Hat",
topSprite: true,
price: 10000,
scale: 120,
desc: "generates points while worn",
pps: 1.5
}, {
id: 11,
name: "Spike Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "deal damage to players that damage you",
dmg: 0.45
}, {
id: 53,
name: "Turret Gear",
topSprite: true,
price: 10000,
scale: 120,
desc: "you become a walking turret",
turret: {
proj: 1,
range: 700,
rate: 2500
},
spdMult: 0.7
}, {
id: 20,
name: "Samurai Armor",
price: 12000,
scale: 120,
desc: "increased attack speed and fire rate",
atkSpd: 0.78
}, {
id: 58,
name: "Dark Knight",
price: 12000,
scale: 120,
desc: "restores health when you deal damage",
healD: 0.4
}, {
id: 27,
name: "Scavenger Gear",
price: 15000,
scale: 120,
desc: "earn double points for each kill",
kScrM: 2
}, {
id: 40,
name: "Tank Gear",
price: 15000,
scale: 120,
desc: "increased damage to buildings but slower movement",
spdMult: 0.3,
bDmg: 3.3
}, {
id: 52,
name: "Thief Gear",
price: 15000,
scale: 120,
desc: "steal half of a players gold when you kill them",
goldSteal: 0.5
}, {
id: 55,
name: "Bloodthirster",
price: 20000,
scale: 120,
desc: "Restore Health when dealing damage. And increased damage",
healD: 0.25,
dmgMultO: 1.2
}, {
id: 56,
name: "Assassin Gear",
price: 20000,
scale: 120,
desc: "Go invisible when not moving. Can't eat. Increased speed",
noEat: true,
spdMult: 1.1,
invisTimer: 1000
}];
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hats);
/***/ }),
/***/ "./frontend/src/data/moomoo/items.ts":
/*!*******************************************!*\
!*** ./frontend/src/data/moomoo/items.ts ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "items": () => (/* binding */ items)
/* harmony export */ });
const groups = [{
id: 0,
name: "food",
place: false,
limit: -1,
layer: 0
}, {
id: 1,
name: "walls",
place: true,
limit: 30,
layer: 0
}, {
id: 2,
name: "spikes",
place: true,
limit: 15,
layer: 0
}, {
id: 3,
name: "mill",
place: true,
limit: 7,
layer: 1
}, {
id: 4,
name: "mine",
place: true,
limit: 1,
layer: 0
}, {
id: 5,
name: "trap",
place: true,
limit: 6,
layer: -1
}, {
id: 6,
name: "booster",
place: true,
limit: 12,
layer: -1
}, {
id: 7,
name: "turret",
place: true,
limit: 2,
layer: 1
}, {
id: 8,
name: "watchtower",
place: true,
limit: 12,
layer: 1
}, {
id: 9,
name: "buff",
place: true,
limit: 4,
layer: -1
}, {
id: 10,
name: "spawn",
place: true,
limit: 1,
layer: -1
}, {
id: 11,
name: "sapling",
place: true,
limit: 2,
layer: 0
}, {
id: 12,
name: "blocker",
place: true,
limit: 3,
layer: -1
}, {
id: 13,
name: "teleporter",
place: true,
limit: 2,
layer: -1
}];
const projectiles = [{
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 25,
speed: 1.6,
scale: 103,
range: 1000
}, {
indx: 1,
layer: 1,
dmg: 25,
scale: 20
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 35,
speed: 2.5,
scale: 103,
range: 1200
}, {
indx: 0,
layer: 0,
src: "arrow_1",
dmg: 30,
speed: 2,
scale: 103,
range: 1200
}, {
indx: 1,
layer: 1,
dmg: 16,
scale: 20
}, {
indx: 0,
layer: 0,
src: "bullet_1",
dmg: 50,
speed: 3.6,
scale: 160,
range: 1400
}];
const list = [{
id: -1,
group: groups[0],
name: "apple",
desc: "restores 20 health when consumed",
req: ["food", 10],
healAmount: 20,
/*consume: function(doer: Player) {
return doer.changeHealth(20, doer);
},*/
scale: 22,
holdOffset: 15
}, {
id: -1,
age: 3,
group: groups[0],
name: "cookie",
desc: "restores 40 health when consumed",
req: ["food", 15],
healAmount: 40,
/*consume: function(doer: Player) {
return doer.changeHealth(40, doer);
},*/
scale: 27,
holdOffset: 15
}, {
id: -1,
age: 7,
group: groups[0],
name: "cheese",
desc: "restores 30 health and another 50 over 5 seconds",
req: ["food", 25],
healAmount: 30,
/*consume: function(doer: Player) {
if (doer.changeHealth(30, doer) || doer.health < 100) {
doer.dmgOverTime.dmg = -10;
doer.dmgOverTime.doer = doer;
doer.dmgOverTime.time = 5;
return true;
}
return false;
},*/
scale: 27,
holdOffset: 15
}, {
id: -1,
group: groups[1],
name: "wood wall",
desc: "provides protection for your village",
req: ["wood", 10],
projDmg: true,
health: 380,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 3,
group: groups[1],
name: "stone wall",
desc: "provides improved protection for your village",
req: ["stone", 25],
health: 900,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
pre: 1,
group: groups[1],
name: "castle wall",
desc: "provides powerful protection for your village",
req: ["stone", 35],
health: 1500,
scale: 52,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
group: 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
}, {
id: -1,
age: 5,
group: 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
}, {
id: -1,
age: 9,
pre: 1,
group: 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
}, {
id: -1,
age: 9,
pre: 2,
group: groups[2],
name: "spinning spikes",
desc: "damages enemies when they touch them",
req: ["wood", 30, "stone", 20],
health: 500,
dmg: 45,
turnSpeed: 0.003,
scale: 52,
spritePadding: -23,
holdOffset: 8,
placeOffset: -5
}, {
id: -1,
group: groups[3],
name: "windmill",
desc: "generates gold over time",
req: ["wood", 50, "stone", 10],
health: 400,
pps: 1,
turnSpeed: 0.0016,
spritePadding: 25,
iconLineMult: 12,
scale: 45,
holdOffset: 20,
placeOffset: 5
}, {
id: -1,
age: 5,
pre: 1,
group: groups[3],
name: "faster windmill",
desc: "generates more gold over time",
req: ["wood", 60, "stone", 20],
health: 500,
pps: 1.5,
turnSpeed: 0.0025,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
id: -1,
age: 8,
pre: 1,
group: groups[3],
name: "power mill",
desc: "generates more gold over time",
req: ["wood", 100, "stone", 50],
health: 800,
pps: 2,
turnSpeed: 0.005,
spritePadding: 25,
iconLineMult: 12,
scale: 47,
holdOffset: 20,
placeOffset: 5
}, {
id: -1,
age: 5,
group: 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
}, {
id: -1,
age: 5,
group: groups[11],
type: 0,
name: "sapling",
desc: "allows you to farm wood",
req: ["wood", 150],
iconLineMult: 12,
colDiv: 0.5,
scale: 110,
holdOffset: 50,
placeOffset: -15
}, {
id: -1,
age: 4,
group: groups[5],
name: "pit trap",
desc: "pit that traps enemies if they walk over it",
req: ["wood", 30, "stone", 30],
trap: true,
ignoreCollision: true,
hideFromEnemy: true,
health: 500,
colDiv: 0.2,
scale: 50,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 4,
group: groups[6],
name: "boost pad",
desc: "provides boost when stepped on",
req: ["stone", 20, "wood", 5],
ignoreCollision: true,
boostSpeed: 1.5,
health: 150,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
group: groups[7],
doUpdate: true,
name: "turret",
desc: "defensive structure that shoots at enemies",
req: ["wood", 200, "stone", 150],
health: 800,
projectile: 1,
shootRange: 700,
shootRate: 2200,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
group: groups[8],
name: "platform",
desc: "platform to shoot over walls and cross over water",
req: ["wood", 20],
ignoreCollision: true,
zIndex: 1,
health: 300,
scale: 43,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
group: groups[9],
name: "healing pad",
desc: "standing on it will slowly heal you",
req: ["wood", 30, "food", 10],
ignoreCollision: true,
healCol: 15,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 9,
group: groups[10],
name: "spawn pad",
desc: "you will spawn here when you die but it will dissapear",
req: ["wood", 100, "stone", 100],
health: 400,
ignoreCollision: true,
spawnPoint: true,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
group: groups[12],
name: "blocker",
desc: "blocks building in radius",
req: ["wood", 30, "stone", 25],
ignoreCollision: true,
blocker: 300,
health: 400,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}, {
id: -1,
age: 7,
group: groups[13],
name: "teleporter",
desc: "teleports you to a random point on the map",
req: ["wood", 60, "stone", 60],
ignoreCollision: true,
teleport: true,
health: 200,
colDiv: 0.7,
scale: 45,
holdOffset: 20,
placeOffset: -5
}];
for (var i = 0; i < list.length; ++i) {
Object.defineProperty(list[i], "id", {
value: i
});
// @ts-ignore
if (list[i].pre) list[i].pre = i - list[i].pre;
}
const items = {
groups,
projectiles,
list
};
/***/ }),
/***/ "./frontend/src/data/type/GameObject.ts":
/*!**********************************************!*\
!*** ./frontend/src/data/type/GameObject.ts ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "GameObject": () => (/* binding */ GameObject),
/* harmony export */ "NaturalObject": () => (/* binding */ NaturalObject),
/* harmony export */ "PlayerBuilding": () => (/* binding */ PlayerBuilding)
/* harmony export */ });
/* harmony import */ var _util_type_SidArray__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../util/type/SidArray */
"./frontend/src/util/type/SidArray.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _moomoo_items__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../moomoo/items */ "./frontend/src/data/moomoo/items.ts");
class GameObject {
// base properties
dir = 0;
scale = 0;
// for object manager
wiggles = [];
gridLocations = [];
constructor(sid, type, position, dir, scale) {
this.sid = sid;
this.type = type;
this.position = position;
this.dir = dir;
this.scale = scale;
this.wiggle = new _util_type_Vector__WEBPACK_IMPORTED_MODULE_1__["default"](0,
0);
}
update(delta) {
if (!this.wiggle.isNull()) {
this.wiggle.multiply(Math.pow(0.99, delta));
}
}
getScale(fullScale = false) {
return this instanceof NaturalObject ? this.type === 0 || this.type === 1 ?
this.scale * 0.36 : this.scale : this.scale * (fullScale ? 1 :
_moomoo_items__WEBPACK_IMPORTED_MODULE_2__.items.list[this.type].colDiv ?? 1);
}
getPlaceColScale() {
return this instanceof NaturalObject && (this.type === 0 || this.type === 1) ?
this.scale * 0.36 : this.scale;
}
}
class NaturalObject extends GameObject {
constructor(sid, position, dir, scale, type) {
super(sid, type, position, dir, scale);
this.type = type;
}
}
class PlayerBuilding extends GameObject {
constructor(sid, position, dir, scale, type, owner, placementSighted) {
super(sid, type, position, dir, scale);
this.stats = _moomoo_items__WEBPACK_IMPORTED_MODULE_2__.items.list[type];
this.owner = {
sid: owner
};
this.meta = {
wasPlacementSighted: placementSighted,
shouldUpdate: this.stats.group.id === 3 // group 3 is windmills
};
this.health = this.stats.health ?? 1;
this.ownedProjectiles = new
_util_type_SidArray__WEBPACK_IMPORTED_MODULE_0__.SidArray();
}
update(delta) {
super.update(delta);
if (this.stats.turnSpeed) {
this.dir += this.stats.turnSpeed * delta;
}
}
}
/***/ }),
/***/ "./frontend/src/data/type/MoomooUtil.ts":
/*!**********************************************!*\
!*** ./frontend/src/data/type/MoomooUtil.ts ***!
\**********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "util": () => (/* binding */ util)
/* harmony export */ });
/* module decorator */ module = __webpack_require__.hmd(module);
const randInt = function (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
};
const randFloat = function (min, max) {
return Math.random() * (max - min + 1) + min;
};
const lerp = function (value1, value2, amount) {
return value1 + (value2 - value1) * amount;
};
const decel = function (val, cel) {
if (val > 0) val = Math.max(0, val - cel);else if (val < 0) val = Math.min(0, val
+ cel);
return val;
};
const getDistance = function (x1, y1, x2, y2) {
return Math.sqrt((x2 -= x1) * x2 + (y2 -= y1) * y2);
};
const getDirection = function (x1, y1, x2, y2) {
return Math.atan2(y1 - y2, x1 - x2);
};
const getAngleDist = function (a, b) {
var p = Math.abs(b - a) % (Math.PI * 2);
return p > Math.PI ? Math.PI * 2 - p : p;
};
const isNumber = function (n) {
return typeof n == "number" && !isNaN(n) && isFinite(n);
};
const isString = function (s) {
return s && typeof s == "string";
};
const kFormat = function (num) {
return num > 999 ? (num / 1000).toFixed(1) + 'k' : num;
};
const capitalizeFirst = function (string) {
return string.charAt(0).toUpperCase() + string.slice(1);
};
const fixTo = function (n, v) {
return parseFloat(n.toFixed(v));
};
const sortByPoints = function (a, b) {
return parseFloat(b.points) - parseFloat(a.points);
};
const lineInRect = function (recX, recY, recX2, recY2, x1, y1, x2, y2) {
var minX = x1;
var maxX = x2;
if (x1 > x2) {
minX = x2;
maxX = x1;
}
if (maxX > recX2) maxX = recX2;
if (minX < recX) minX = recX;
if (minX > maxX) return false;
var minY = y1;
var maxY = y2;
var dx = x2 - x1;
if (Math.abs(dx) > 0.0000001) {
var a = (y2 - y1) / dx;
var b = y1 - a * x1;
minY = a * minX + b;
maxY = a * maxX + b;
}
if (minY > maxY) {
var tmp = maxY;
maxY = minY;
minY = tmp;
}
if (maxY > recY2) maxY = recY2;
if (minY < recY) minY = recY;
if (minY > maxY) return false;
return true;
};
const containsPoint = function (element, x, y) {
var bounds = element.getBoundingClientRect();
var left = bounds.left + window.scrollX;
var top = bounds.top + window.scrollY;
var width = bounds.width;
var height = bounds.height;
var insideHorizontal = x > left && x < left + width;
var insideVertical = y > top && y < top + height;
return insideHorizontal && insideVertical;
};
const mousifyTouchEvent = function (event) {
var touch = event.changedTouches[0];
event.screenX = touch.screenX;
event.screenY = touch.screenY;
event.clientX = touch.clientX;
event.clientY = touch.clientY;
event.pageX = touch.pageX;
event.pageY = touch.pageY;
};
const removeAllChildren = function (element) {
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
};
const generateElement = function (config) {
var element = document.createElement(config.tag || "div");
function bind(configValue, elementValue) {
if (config[configValue]) element[elementValue] = config[configValue];
}
bind("text", "textContent");
bind("html", "innerHTML");
bind("class", "className");
for (var key in config) {
switch (key) {
case "tag":
case "text":
case "html":
case "class":
case "style":
case "hookTouch":
case "parent":
case "children":
continue;
default:
break;
}
element[key] = config[key];
}
if (element.onclick) element.onclick =
module.exports.checkTrusted(element.onclick);
if (element.onmouseover) element.onmouseover =
module.exports.checkTrusted(element.onmouseover);
if (element.onmouseout) element.onmouseout =
module.exports.checkTrusted(element.onmouseout);
if (config.style) {
element.style.cssText = config.style;
}
if (config.hookTouch) {
module.exports.hookTouchEvents(element);
}
if (config.parent) {
config.parent.appendChild(element);
}
if (config.children) {
for (var i = 0; i < config.children.length; i++) {
element.appendChild(config.children[i]);
}
}
return element;
};
const eventIsTrusted = function (ev) {
if (ev && typeof ev.isTrusted == "boolean") {
return ev.isTrusted;
} else {
return true;
}
};
const checkTrusted = function (callback) {
return function (ev) {
if (ev && ev instanceof Event && module.exports.eventIsTrusted(ev)) {
callback(ev);
} else {
//console.error("Event is not trusted.", ev);
}
};
};
const randomString = function (length) {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
};
const countInArray = function (array, val) {
var count = 0;
for (var i = 0; i < array.length; i++) {
if (array[i] === val) count++;
}
return count;
};
const util = {
randInt,
randFloat,
lerp,
decel,
getDistance,
getDirection,
getAngleDist,
isNumber,
isString,
kFormat,
capitalizeFirst,
fixTo,
sortByPoints,
lineInRect,
containsPoint,
mousifyTouchEvent,
removeAllChildren,
generateElement,
eventIsTrusted,
checkTrusted,
randomString,
countInArray
};
/***/ }),
/***/ "./frontend/src/data/type/Player.ts":
/*!******************************************!*\
!*** ./frontend/src/data/type/Player.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "ClientPlayer": () => (/* binding */ ClientPlayer),
/* harmony export */ "Inventory": () => (/* binding */ Inventory),
/* harmony export */ "Player": () => (/* binding */ Player)
/* harmony export */ });
/* harmony import */ var _moomoo_accessories__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../moomoo/accessories */
"./frontend/src/data/moomoo/accessories.ts");
/* harmony import */ var _moomoo_config__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _moomoo_hats__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../moomoo/hats */ "./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _moomoo_items__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../moomoo/items */ "./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _Weapon__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./Weapon */ "./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
/* harmony import */ var
_util_processor_MovementProcessor__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../util/processor/MovementProcessor */
"./frontend/src/util/processor/MovementProcessor.ts");
/* harmony import */ var _GameObject__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ./GameObject */ "./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _util_type_SidArray__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../../util/type/SidArray */
"./frontend/src/util/type/SidArray.ts");
var WeaponFinder;
(function (WeaponFinder) {
WeaponFinder[WeaponFinder["BUILDING_BREAK"] = 0] = "BUILDING_BREAK";
WeaponFinder[WeaponFinder["MOVEMENT_SPEED"] = 1] = "MOVEMENT_SPEED";
WeaponFinder[WeaponFinder["DAMAGE"] = 2] = "DAMAGE";
})(WeaponFinder || (WeaponFinder = {}));
class Inventory {
static WeaponFinders = WeaponFinder;
constructor(player) {
this.player = player;
this.weapons = [_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER,
null];
this.weaponVariants = [0, null];
this.reloads = Object.fromEntries(new
Array(_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList.length).fill(undefined).map((
_x, i) => [i, 0]));
this.items = [0, 3, 6, 10];
this.heldItem = _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER;
this.weaponSelected = _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER;
this.turretGearReload = 0;
}
reset() {
this.weapons = [_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER,
null];
this.weaponVariants = [0, null];
this.reloads = Object.fromEntries(new
Array(_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList.length).fill(undefined).map((
_x, i) => [i, 0]));
;
this.items = [0, 3, 6, 10];
this.heldItem = _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER;
this.weaponSelected = _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.TOOL_HAMMER;
}
setWeapons(weapons) {
this.weapons = [_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList[weapons[0]],
_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList[weapons[1]]];
}
setItems(items) {
this.items = items;
}
resetReload(item) {
this.reloads[item.id] = item.stats.reloadTime;
}
resetAllRangedReloads() {
this.reloads[_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.HUNTING_BOW.id] =
_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.HUNTING_BOW.stats.reloadTime;
this.reloads[_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.CROSSBOW.id] =
_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.CROSSBOW.stats.reloadTime;
this.reloads[_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.REPEATER_CROSSBOW.id]
= _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.REPEATER_CROSSBOW.stats.reloadTime;
this.reloads[_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.MUSKET.id] =
_Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapons.MUSKET.stats.reloadTime;
}
updateReloads(delta) {
if (!(this.heldItem instanceof _Weapon__WEBPACK_IMPORTED_MODULE_5__.Weapon))
return;
const id = this.heldItem.id;
if (this.reloads[id] > 0) {
this.reloads[id] -= delta;
if (this.reloads[id] <= 0) this.reloads[id] = 0;
}
this.turretGearReload -= delta;
}
remainingReloadTime(slot) {
return this.reloads[this.weapons[slot]?.id];
}
findBestWeapon(finder) {
switch (finder) {
case WeaponFinder.BUILDING_BREAK:
return this.weapons.flat(1).filter(x => x !== null && x instanceof
_Weapon__WEBPACK_IMPORTED_MODULE_5__.MeleeWeapon).sort((a, b) => b.stats.dmg *
b.stats.buildingDmgMultiplier - a.stats.dmg * a.stats.buildingDmgMultiplier)[0];
case WeaponFinder.MOVEMENT_SPEED:
return this.weapons.flat(1).filter(x => x !== null).sort((a, b) =>
b.stats.speedMultiplier - a.stats.speedMultiplier)[0];
case WeaponFinder.DAMAGE:
return this.weapons[0];
}
}
getWeapon(slot) {
return this.weapons[slot];
}
getWeaponVariant(slot) {
return this.weaponVariants[slot];
}
hasWeapon(weapon) {
const wep = typeof weapon === "number" ?
_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList[weapon] : weapon;
return this.weapons[0].id === wep.id || this.weapons[1] && this.weapons[1].id
=== wep.id;
}
fireTurretGear(pingDelta) {
this.turretGearReload = 3000 - pingDelta;
}
}
class ShameTracker {
constructor() {
this.points = 0;
this.timer = 0;
this.isClowned = false;
this.lastDamage = -1;
}
isSafeHeal(ping) {
return Date.now() + ping - this.lastDamage > 120;
}
whenSafeHeal(ping) {
return 120 - (Date.now() + ping - this.lastDamage);
}
}
class Player {
/*public hat: Hat;
public tail: Accessory;*/
dir = 0;
maxHealth = 100;
health = this.maxHealth;
scale = _moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].playerScale;
speed = _moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].playerSpeed;
visible = false;
constructor(id, sid, name, position, dir, health, maxHealth, scale, skinColor) {
this.id = id;
this.sid = sid;
this.name = name;
this.serverPos = new _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"]
();
this.lastTickServerPos = new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"]();
this.renderPos = position;
this.lerpPos = new _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"]();
this.velocity = new _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"]
();
this.serverDir = dir;
this.dir = dir;
this.health = health;
this.maxHealth = maxHealth;
this.shame = new ShameTracker();
this.scale = scale;
this.skinColor = skinColor;
this.skinIndex = 0;
this.tailIndex = 0;
this.team = null;
this.lastTickPosX = 0;
this.lastTickPosY = 0;
this.inventory = new Inventory(this);
this.movementProcessor = new
_util_processor_MovementProcessor__WEBPACK_IMPORTED_MODULE_7__["default"](this);
this.hasAttackedThisTick = false;
this._attackedThisTickTempVariable = false;
this.hasFiredProjectileThisTick = false;
this._firedThisTickTempVariable = false;
this.lastProjectileFired = null;
this.state = {
isTrapped: false,
buildIndex: -1,
data: {
trap: undefined
}
};
this.nextAttack = 0;
this.swingStreak = 0;
this.seenHats = new Set();
this.seenTails = new Set();
this.ownedProjectiles = new
_util_type_SidArray__WEBPACK_IMPORTED_MODULE_9__.SidArray();
this.lastUpdate = 0;
}
updatePlayer(core, x, y, dir, buildIndex, weaponIndex, _weaponVariant, _team,
_isLeader, _skinIndex, _tailIndex, _iconIndex, _zIndex) {
this.lerpPos = this.renderPos.clone();
this.lastTickServerPos = this.serverPos.clone();
this.serverPos = new _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"]
(x, y);
this.velocity = this.serverPos.clone().subtract(this.lastTickServerPos);
//this.dir = dir;
this.serverDir = this.dir = dir;
this.state.buildIndex = buildIndex;
this.skinIndex = _skinIndex;
this.tailIndex = _tailIndex;
this.seenHats.add(_skinIndex);
this.seenTails.add(_tailIndex);
const holdsWeapon = buildIndex === -1;
this.inventory.weaponSelected =
_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList[weaponIndex];
if (this.sid !== core.playerManager.myPlayer.sid) {
this.inventory.heldItem = holdsWeapon ?
_Weapon__WEBPACK_IMPORTED_MODULE_5__.weaponList[weaponIndex] :
_moomoo_items__WEBPACK_IMPORTED_MODULE_3__.items.list[buildIndex];
if (holdsWeapon) {
this.inventory.weapons[this.inventory.weaponSelected.id < 9 ?
_Weapon__WEBPACK_IMPORTED_MODULE_5__.WeaponSlot.PRIMARY :
_Weapon__WEBPACK_IMPORTED_MODULE_5__.WeaponSlot.SECONDARY] =
this.inventory.weaponSelected;
}
}
if (holdsWeapon) {
this.inventory.weaponVariants[this.inventory.weaponSelected.id < 9 ?
_Weapon__WEBPACK_IMPORTED_MODULE_5__.WeaponSlot.PRIMARY :
_Weapon__WEBPACK_IMPORTED_MODULE_5__.WeaponSlot.SECONDARY] = _weaponVariant;
}
/*player.buildIndex = playerData[4];
player.weaponIndex = playerData[5];
player.weaponVariant = playerData[6];
player.team = playerData[7];
player.isLeader = playerData[8];
player.skinIndex = playerData[9];
player.tailIndex = playerData[10];
player.iconIndex = playerData[11];
player.zIndex = playerData[12];*/
//player.visible = true;
//this.movementProcessor.update(this.dt);
this.dt = 0;
this.state.isTrapped = false;
this.state.data.trap = undefined;
// damage objects
const weapon = this.inventory.weaponSelected;
const hittableObjects = core.objectManager.getGridArrays(x, y,
weapon.stats.range);
for (let i = 0; i < hittableObjects.length; i++) {
const object = hittableObjects[i];
// use object.scale because .getScale returns collision box while .scale is
hitbox
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(object.position
, this.serverPos) - object.scale <= weapon.stats.range) {
for (const wiggle of object.wiggles) {
const gatherAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDirection(this.serverPos,
object.position);
if (object instanceof
_GameObject__WEBPACK_IMPORTED_MODULE_8__.PlayerBuilding &&
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getAngleDist(wiggle[0],
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].roundTo(gatherAngle, 1)) ===
0) {
// damage the building depending on the player's weapon damage
// objects
const grids = core.objectManager.getGridArrays(this.serverPos.x,
this.serverPos.y, this.scale + this.velocity.length() * 2);
for (let i = 0; i < grids.length; i++) {
const object = grids[i];
if (object instanceof _GameObject__WEBPACK_IMPORTED_MODULE_8__.NaturalObject)
continue;
const isCollision =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(this.serverPos,
object.position) < this.scale + object.getScale();
if (object.type === 15 && isCollision && object.owner.sid !== this.sid)
this.state.isTrapped = true, this.state.data.trap = object;
}
}
updateData(id, sid, name, position, dir, health, maxHealth, scale, skinColor) {
this.id = id;
this.sid = sid;
this.name = name;
this.serverPos = position;
//this.dir = dir;
this.serverDir = this.dir = dir;
this.health = health;
this.maxHealth = maxHealth;
this.scale = scale;
this.skinColor = skinColor;
}
}
class ClientPlayer extends Player {
constructor(id, sid, name, position, dir, health, maxHealth, scale, skinColor) {
super(id, sid, name, position, dir, health, maxHealth, scale, skinColor);
this.alive = false;
this.packetHealth = this.maxHealth;
this.isAttacking = false;
this.isAutoAttacking = false;
this.justStartedAttacking = false;
this.ownedHats = _moomoo_hats__WEBPACK_IMPORTED_MODULE_2__["default"].filter(x
=> x.price === 0).map(x => x.id);
this.ownedTails =
_moomoo_accessories__WEBPACK_IMPORTED_MODULE_0__["default"].filter(x => x.price ===
0).map(x => x.id);
this.ownedHats.push(0);
this.ownedTails.push(0);
}
updateData(id, sid, name, position, dir, health, maxHealth, scale, skinColor) {
super.updateData(id, sid, name, position, dir, health, maxHealth, scale,
skinColor);
this.packetHealth = maxHealth;
this.isAutoAttacking = false;
this.isAttacking = false;
}
}
/***/ }),
/***/ "./frontend/src/data/type/Projectile.ts":
/*!**********************************************!*\
!*** ./frontend/src/data/type/Projectile.ts ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Projectile": () => (/* binding */ Projectile),
/* harmony export */ "ProjectileItem": () => (/* binding */ ProjectileItem),
/* harmony export */ "Projectiles": () => (/* binding */ Projectiles),
/* harmony export */ "projectileList": () => (/* binding */ projectileList)
/* harmony export */ });
/* harmony import */ var _util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../util/engine/TickEngine */
"./frontend/src/util/engine/TickEngine.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
class ProjectileItem {
constructor(type, stats) {
this.type = type;
this.stats = stats;
}
}
const Projectiles = {
BOW_ARROW: new ProjectileItem(0, {
scale: 103,
range: 1000,
speed: 1.6,
dmg: 25
}),
TURRET_BULLET: new ProjectileItem(1, {
scale: 20,
range: 700,
speed: 2,
dmg: 25
}),
CROSSBOW_ARROW: new ProjectileItem(2, {
scale: 103,
range: 1200,
speed: 2.5,
dmg: 35
}),
REPEATER_CROSSBOW_ARROW: new ProjectileItem(3, {
scale: 103,
range: 1200,
speed: 2,
dmg: 30
}),
UNKNOWN_PROJECTILE: new ProjectileItem(4, {
scale: 20,
range: 700,
speed: 2,
dmg: 16
}),
MUSKET_BULLET: new ProjectileItem(5, {
scale: 160,
range: 1400,
speed: 3.6,
dmg: 50
})
};
const projectileList = Object.values(Projectiles);
class Projectile {
constructor(type, sid, spawnPosition, spawnTick, dir, range, speed, layer, scale,
owner) {
this.type = type;
this.sid = sid;
this.spawnPos = spawnPosition;
this.spawnTick = spawnTick;
this.dir = dir;
this.range = range;
this.speed = speed;
this.layer = layer;
this.scale = scale;
this.owner = owner;
/***/ }),
/***/ "./frontend/src/data/type/Weapon.ts":
/*!******************************************!*\
!*** ./frontend/src/data/type/Weapon.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "MeleeWeapon": () => (/* binding */ MeleeWeapon),
/* harmony export */ "RangedWeapon": () => (/* binding */ RangedWeapon),
/* harmony export */ "Weapon": () => (/* binding */ Weapon),
/* harmony export */ "WeaponSlot": () => (/* binding */ WeaponSlot),
/* harmony export */ "Weapons": () => (/* binding */ Weapons),
/* harmony export */ "weaponList": () => (/* binding */ weaponList),
/* harmony export */ "weaponPreMap": () => (/* binding */ weaponPreMap)
/* harmony export */ });
/* harmony import */ var _Projectile__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ./Projectile */ "./frontend/src/data/type/Projectile.ts");
var WeaponType;
(function (WeaponType) {
WeaponType[WeaponType["TOOL_HAMMER"] = 0] = "TOOL_HAMMER";
WeaponType[WeaponType["HAND_AXE"] = 1] = "HAND_AXE";
WeaponType[WeaponType["GREAT_AXE"] = 2] = "GREAT_AXE";
WeaponType[WeaponType["SHORT_SWORD"] = 3] = "SHORT_SWORD";
WeaponType[WeaponType["KATANA"] = 4] = "KATANA";
WeaponType[WeaponType["POLEARM"] = 5] = "POLEARM";
WeaponType[WeaponType["BAT"] = 6] = "BAT";
WeaponType[WeaponType["DAGGERS"] = 7] = "DAGGERS";
WeaponType[WeaponType["STICK"] = 8] = "STICK";
WeaponType[WeaponType["HUNTING_BOW"] = 9] = "HUNTING_BOW";
WeaponType[WeaponType["GREAT_HAMMER"] = 10] = "GREAT_HAMMER";
WeaponType[WeaponType["SHIELD"] = 11] = "SHIELD";
WeaponType[WeaponType["CROSSBOW"] = 12] = "CROSSBOW";
WeaponType[WeaponType["REPEATER_CROSSBOW"] = 13] = "REPEATER_CROSSBOW";
WeaponType[WeaponType["MC_GRABBY"] = 14] = "MC_GRABBY";
WeaponType[WeaponType["MUSKET"] = 15] = "MUSKET";
})(WeaponType || (WeaponType = {}));
var WeaponSlot;
(function (WeaponSlot) {
WeaponSlot[WeaponSlot["PRIMARY"] = 0] = "PRIMARY";
WeaponSlot[WeaponSlot["SECONDARY"] = 1] = "SECONDARY";
})(WeaponSlot || (WeaponSlot = {}));
class Weapon {
constructor(id, slot, type, stats) {
this.id = id;
this.slot = slot;
this.type = type;
this.stats = stats;
}
}
class MeleeWeapon extends Weapon {
constructor(id, slot, type, stats) {
super(id, slot, type, stats);
this.stats = stats;
}
}
class RangedWeapon extends Weapon {
constructor(id, slot, type, projectile, stats) {
super(id, slot, type, stats);
this.projectile = projectile;
this.stats = stats;
}
}
const weaponPreMap = new Map([[0, null], [1, null], [2, null], [3, null], [4, 3],
// sword => katana
[5, null], [6, null], [7, null], [8, null], [9, null], [10, null], [11, null], [12,
9],
// bow => crossbow
[13, 12],
// crossbow => repeater crossbow
[14, null], [15, 12] // crossbow => musket
]);
const Weapons = {
// important: keep the order to access weapon objects using their IDs
TOOL_HAMMER: new MeleeWeapon(0, WeaponSlot.PRIMARY, WeaponType.TOOL_HAMMER, {
dmg: 25,
buildingDmgMultiplier: 1,
range: 65,
reloadTime: 300,
speedMultiplier: 1,
knockback: 0
}),
HAND_AXE: new MeleeWeapon(1, WeaponSlot.PRIMARY, WeaponType.HAND_AXE, {
dmg: 30,
buildingDmgMultiplier: 1,
range: 70,
reloadTime: 400,
speedMultiplier: 1,
knockback: 0
}),
GREAT_AXE: new MeleeWeapon(2, WeaponSlot.PRIMARY, WeaponType.GREAT_AXE, {
dmg: 35,
buildingDmgMultiplier: 1,
range: 75,
reloadTime: 400,
speedMultiplier: 1,
knockback: 0
}),
SHORT_SWORD: new MeleeWeapon(3, WeaponSlot.PRIMARY, WeaponType.SHORT_SWORD, {
dmg: 35,
buildingDmgMultiplier: 1,
range: 110,
reloadTime: 300,
speedMultiplier: 0.85,
knockback: 0
}),
KATANA: new MeleeWeapon(4, WeaponSlot.PRIMARY, WeaponType.KATANA, {
dmg: 40,
buildingDmgMultiplier: 1,
range: 118,
reloadTime: 300,
speedMultiplier: 0.8,
knockback: 0
}),
POLEARM: new MeleeWeapon(5, WeaponSlot.PRIMARY, WeaponType.POLEARM, {
dmg: 45,
buildingDmgMultiplier: 1,
range: 142,
reloadTime: 700,
speedMultiplier: 0.82,
knockback: 0.2
}),
BAT: new MeleeWeapon(6, WeaponSlot.PRIMARY, WeaponType.BAT, {
dmg: 20,
buildingDmgMultiplier: 1,
range: 110,
reloadTime: 300,
speedMultiplier: 1,
knockback: 0.7
}),
DAGGERS: new MeleeWeapon(7, WeaponSlot.PRIMARY, WeaponType.DAGGERS, {
dmg: 20,
buildingDmgMultiplier: 1,
range: 65,
reloadTime: 100,
speedMultiplier: 1.13,
knockback: 0.1
}),
STICK: new MeleeWeapon(8, WeaponSlot.PRIMARY, WeaponType.STICK, {
dmg: 1,
buildingDmgMultiplier: 1,
range: 70,
reloadTime: 400,
speedMultiplier: 1,
knockback: 0
}),
HUNTING_BOW: new RangedWeapon(9, WeaponSlot.SECONDARY, WeaponType.HUNTING_BOW,
_Projectile__WEBPACK_IMPORTED_MODULE_0__.Projectiles.BOW_ARROW, {
range: 1000,
speedMultiplier: 0.75,
reloadTime: 600,
dmg: 25
}),
GREAT_HAMMER: new MeleeWeapon(10, WeaponSlot.SECONDARY, WeaponType.GREAT_HAMMER,
{
dmg: 10,
buildingDmgMultiplier: 7.5,
range: 75,
reloadTime: 400,
speedMultiplier: 1,
knockback: 0
}),
SHIELD: new MeleeWeapon(11, WeaponSlot.SECONDARY, WeaponType.SHIELD, {
dmg: 0,
buildingDmgMultiplier: 1,
range: 0,
reloadTime: 0,
speedMultiplier: 0.7,
knockback: 0
}),
CROSSBOW: new RangedWeapon(12, WeaponSlot.SECONDARY, WeaponType.CROSSBOW,
_Projectile__WEBPACK_IMPORTED_MODULE_0__.Projectiles.CROSSBOW_ARROW, {
range: 1200,
speedMultiplier: 0.7,
reloadTime: 700,
dmg: 30
}),
REPEATER_CROSSBOW: new RangedWeapon(13, WeaponSlot.SECONDARY,
WeaponType.REPEATER_CROSSBOW,
_Projectile__WEBPACK_IMPORTED_MODULE_0__.Projectiles.REPEATER_CROSSBOW_ARROW, {
range: 1200,
speedMultiplier: 0.7,
reloadTime: 230,
dmg: 25
}),
MC_GRABBY: new MeleeWeapon(14, WeaponSlot.SECONDARY, WeaponType.MC_GRABBY, {
dmg: 0,
buildingDmgMultiplier: 1,
range: 125,
reloadTime: 700,
speedMultiplier: 1.05,
knockback: 0.2
}),
MUSKET: new RangedWeapon(15, WeaponSlot.SECONDARY, WeaponType.MUSKET,
_Projectile__WEBPACK_IMPORTED_MODULE_0__.Projectiles.MUSKET_BULLET, {
range: 1400,
speedMultiplier: 0.6,
reloadTime: 1500,
dmg: 50
})
};
const weaponList = Object.values(Weapons);
const wpdata = [{
id: 0,
type: 0,
name: "tool hammer",
desc: "tool for gathering all resources",
src: "hammer_1",
length: 140,
width: 140,
xOff: -3,
yOff: 18,
dmg: 25,
range: 65,
gather: 1,
speed: 300
}, {
id: 1,
type: 0,
age: 2,
name: "hand axe",
desc: "gathers resources at a higher rate",
src: "axe_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 30,
spdMult: 1,
range: 70,
gather: 2,
speed: 400
}, {
id: 2,
type: 0,
age: 8,
pre: 1,
name: "great axe",
desc: "deal more damage and gather more resources",
src: "great_axe_1",
length: 140,
width: 140,
xOff: -8,
yOff: 25,
dmg: 35,
spdMult: 1,
range: 75,
gather: 4,
speed: 400
}, {
id: 3,
type: 0,
age: 2,
name: "short sword",
desc: "increased attack power but slower move speed",
src: "sword_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 46,
dmg: 35,
spdMult: 0.85,
range: 110,
gather: 1,
speed: 300
}, {
id: 4,
type: 0,
age: 8,
pre: 3,
name: "katana",
desc: "greater range and damage",
src: "samurai_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 59,
dmg: 40,
spdMult: 0.8,
range: 118,
gather: 1,
speed: 300
}, {
id: 5,
type: 0,
age: 2,
name: "polearm",
desc: "long range melee weapon",
src: "spear_1",
iPad: 1.3,
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 45,
knock: 0.2,
spdMult: 0.82,
range: 142,
gather: 1,
speed: 700
}, {
id: 6,
type: 0,
age: 2,
name: "bat",
desc: "fast long range melee weapon",
src: "bat_1",
iPad: 1.3,
length: 110,
width: 180,
xOff: -8,
yOff: 53,
dmg: 20,
knock: 0.7,
range: 110,
gather: 1,
speed: 300
}, {
id: 7,
type: 0,
age: 2,
name: "daggers",
desc: "really fast short range weapon",
src: "dagger_1",
iPad: 0.8,
length: 110,
width: 110,
xOff: 18,
yOff: 0,
dmg: 20,
knock: 0.1,
range: 65,
gather: 1,
hitSlow: 0.1,
spdMult: 1.13,
speed: 100
}, {
id: 8,
type: 0,
age: 2,
name: "stick",
desc: "great for gathering but very weak",
src: "stick_1",
length: 140,
width: 140,
xOff: 3,
yOff: 24,
dmg: 1,
spdMult: 1,
range: 70,
gather: 7,
speed: 400
}, {
id: 9,
type: 1,
age: 6,
name: "hunting bow",
desc: "bow used for ranged combat and hunting",
src: "bow_1",
req: ["wood", 4],
length: 120,
width: 120,
xOff: -6,
yOff: 0,
projectile: 0,
spdMult: 0.75,
speed: 600
}, {
id: 10,
type: 1,
age: 6,
name: "great hammer",
desc: "hammer used for destroying structures",
src: "great_hammer_1",
length: 140,
width: 140,
xOff: -9,
yOff: 25,
dmg: 10,
spdMult: 0.88,
range: 75,
sDmg: 7.5,
gather: 1,
speed: 400
}, {
id: 11,
type: 1,
age: 6,
name: "wooden shield",
desc: "blocks projectiles and reduces melee damage",
src: "shield_1",
length: 120,
width: 120,
shield: 0.2,
xOff: 6,
yOff: 0,
spdMult: 0.7
}, {
id: 12,
type: 1,
age: 8,
pre: 9,
name: "crossbow",
desc: "deals more damage and has greater range",
src: "crossbow_1",
req: ["wood", 5],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 2,
spdMult: 0.7,
speed: 700
}, {
id: 13,
type: 1,
age: 9,
pre: 12,
name: "repeater crossbow",
desc: "high firerate crossbow with reduced damage",
src: "crossbow_2",
req: ["wood", 10],
aboveHand: true,
armS: 0.75,
length: 120,
width: 120,
xOff: -4,
yOff: 0,
projectile: 3,
spdMult: 0.7,
speed: 230
}, {
id: 14,
type: 1,
age: 6,
name: "mc grabby",
desc: "steals resources from enemies",
src: "grab_1",
length: 130,
width: 210,
xOff: -8,
yOff: 53,
dmg: 0,
steal: 250,
knock: 0.2,
spdMult: 1.05,
range: 125,
gather: 0,
speed: 700
}, {
id: 15,
type: 1,
age: 9,
pre: 12,
name: "musket",
desc: "slow firerate but high damage and range",
src: "musket_1",
req: ["stone", 10],
aboveHand: true,
rec: 0.35,
armS: 0.6,
hndS: 0.3,
hndD: 1.6,
length: 205,
width: 205,
xOff: 25,
yOff: 0,
projectile: 5,
hideProjectile: true,
spdMult: 0.6,
speed: 1500
}];
/***/ }),
/***/ "./frontend/src/event/Event.ts":
/*!*************************************!*\
!*** ./frontend/src/event/Event.ts ***!
\*************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Event)
/* harmony export */ });
class Event {
constructor() {
this.canceled = false;
}
cancel() {
this.canceled = true;
}
isCanceled() {
return this.canceled;
}
}
/***/ }),
/***/ "./frontend/src/event/EventPacket.ts":
/*!*******************************************!*\
!*** ./frontend/src/event/EventPacket.ts ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ EventPacket)
/* harmony export */ });
/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ./Event */ "./frontend/src/event/Event.ts");
/***/ }),
/***/ "./frontend/src/features/ModuleManager.ts":
/*!************************************************!*\
!*** ./frontend/src/features/ModuleManager.ts ***!
\************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ ModuleManager)
/* harmony export */ });
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
/* harmony import */ var _modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ./modules/building/AntiTrap */
"./frontend/src/features/modules/building/AntiTrap.ts");
/* harmony import */ var _modules_building_AutoPlacer__WEBPACK_IMPORTED_MODULE_2__
= __webpack_require__(/*! ./modules/building/AutoPlacer */
"./frontend/src/features/modules/building/AutoPlacer.ts");
/* harmony import */ var _modules_building_AutoReplace__WEBPACK_IMPORTED_MODULE_3__
= __webpack_require__(/*! ./modules/building/AutoReplace */
"./frontend/src/features/modules/building/AutoReplace.ts");
/* harmony import */ var _modules_building_ItemPlacer__WEBPACK_IMPORTED_MODULE_4__
= __webpack_require__(/*! ./modules/building/ItemPlacer */
"./frontend/src/features/modules/building/ItemPlacer.ts");
/* harmony import */ var _modules_combat_AntiBull__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./modules/combat/AntiBull */
"./frontend/src/features/modules/combat/AntiBull.ts");
/* harmony import */ var _modules_combat_AntiInsta__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ./modules/combat/AntiInsta */
"./frontend/src/features/modules/combat/AntiInsta.ts");
/* harmony import */ var _modules_combat_Autoheal__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ./modules/combat/Autoheal */
"./frontend/src/features/modules/combat/Autoheal.ts");
/* harmony import */ var _modules_combat_SpikeSync__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ./modules/combat/SpikeSync */
"./frontend/src/features/modules/combat/SpikeSync.ts");
/* harmony import */ var _modules_misc_NoToxic__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ./modules/misc/NoToxic */
"./frontend/src/features/modules/misc/NoToxic.ts");
/* harmony import */ var _modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ./modules/player/AutoHat */
"./frontend/src/features/modules/player/AutoHat.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_modules_building_AntiTrap__WEBPACK_IMPORTED
_MODULE_1__, _modules_building_AutoPlacer__WEBPACK_IMPORTED_MODULE_2__,
_modules_building_AutoReplace__WEBPACK_IMPORTED_MODULE_3__,
_modules_building_ItemPlacer__WEBPACK_IMPORTED_MODULE_4__,
_modules_combat_AntiBull__WEBPACK_IMPORTED_MODULE_5__,
_modules_combat_AntiInsta__WEBPACK_IMPORTED_MODULE_6__,
_modules_combat_Autoheal__WEBPACK_IMPORTED_MODULE_7__,
_modules_combat_SpikeSync__WEBPACK_IMPORTED_MODULE_8__,
_modules_misc_NoToxic__WEBPACK_IMPORTED_MODULE_9__,
_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_10__]);
([_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_1__,
_modules_building_AutoPlacer__WEBPACK_IMPORTED_MODULE_2__,
_modules_building_AutoReplace__WEBPACK_IMPORTED_MODULE_3__,
_modules_building_ItemPlacer__WEBPACK_IMPORTED_MODULE_4__,
_modules_combat_AntiBull__WEBPACK_IMPORTED_MODULE_5__,
_modules_combat_AntiInsta__WEBPACK_IMPORTED_MODULE_6__,
_modules_combat_Autoheal__WEBPACK_IMPORTED_MODULE_7__,
_modules_combat_SpikeSync__WEBPACK_IMPORTED_MODULE_8__,
_modules_misc_NoToxic__WEBPACK_IMPORTED_MODULE_9__,
_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_10__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
_modules_misc_NoToxic__WEBPACK_IMPORTED_MODULE_9__["default"],
_modules_combat_SpikeSync__WEBPACK_IMPORTED_MODULE_8__["default"],
// run before autotrap since autotrap also checks if it has highest priority in
tick
_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_1__["default"],
_modules_combat_AntiBull__WEBPACK_IMPORTED_MODULE_5__["default"],
_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_10__["default"]];
modules = [];
constructor() {
for (const clazz of ModuleManager.classes) {
this.modules.push(Reflect.construct(clazz, []));
}
logger.info(`loaded ${this.modules.length} modules`);
}
onUpdate(delta) {
for (const module of this.modules) {
module.onUpdate(delta);
}
}
onPreTick(tickIndex) {
for (const module of this.modules) {
module.onPreTick(tickIndex);
}
}
onTick(tickIndex) {
for (const module of this.modules) {
module.onTick(tickIndex);
}
}
onPostTick(tickIndex) {
for (const module of this.modules) {
module.onPostTick(tickIndex);
}
}
onKeydown(keyCode) {
for (const module of this.modules) {
module.onKeydown(keyCode);
}
}
onKeyup(keyCode) {
for (const module of this.modules) {
module.onKeyup(keyCode);
}
}
onPacketReceive(event) {
for (const module of this.modules) {
if (!event.isCanceled()) module.onPacketReceive(event);
}
}
onPacketSend(event) {
for (const module of this.modules) {
if (!event.isCanceled()) module.onPacketSend(event);
}
}
onRender(delta) {
for (const module of this.modules) {
module.onRender(delta);
}
}
onActionRun(action) {
for (const module of this.modules) {
module.onActionRun(action);
}
}
onPreBuildingHit(player, building, tickIndex, potentialBreak) {
for (const module of this.modules) {
module.onPreBuildingHit(player, building, tickIndex, potentialBreak);
}
}
onBuildingBreak(building) {
for (const module of this.modules) {
module.onBuildingBreak(building);
}
}
onPlayerUpdate(player) {
for (const module of this.modules) {
module.onPlayerUpdate(player);
}
}
onProjectileEarlyDespawn(projectileItem, spawnPosition, direction) {
for (const module of this.modules) {
module.onProjectileEarlyDespawn(projectileItem, spawnPosition, direction);
}
}
getModule(clazz) {
for (const module of this.modules) {
if (module instanceof clazz) return module;
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/Module.ts":
/*!*************************************************!*\
!*** ./frontend/src/features/modules/Module.ts ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Module)
/* harmony export */ });
class Module {
onUpdate(delta) {}
onPreTick(tickIndex) {}
onTick(tickIndex) {}
onPostTick(tickIndex) {}
onKeydown(keyCode) {}
onKeyup(keyCode) {}
onPacketReceive(event) {}
onPacketSend(event) {}
onRender(delta) {}
onActionRun(action) {}
onPreBuildingHit(player, building, tickIndex, potentialBreak) {}
onBuildingBreak(building) {}
onPlayerUpdate(player) {}
onProjectileEarlyDespawn(projectileItem, spawnPosition, direction) {}
}
/***/ }),
/***/ "./frontend/src/features/modules/building/AntiTrap.ts":
/*!************************************************************!*\
!*** ./frontend/src/features/modules/building/AntiTrap.ts ***!
\************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AntiTrap)
/* harmony export */ });
/* harmony import */ var _core_ActionType__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../core/ActionType */
"./frontend/src/core/ActionType.ts");
/* harmony import */ var _data_moomoo_hats__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/hats */
"./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_Player__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../data/type/Player */
"./frontend/src/data/type/Player.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_5__]);
_main__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
class AntiTrap extends _Module__WEBPACK_IMPORTED_MODULE_10__["default"] {
constructor() {
super();
this.currentTrap = null;
this.willTrapBreakNextTick = false;
this.aimPacketsBlocker = -1;
this.lastWeapon = null;
}
onPreTick(tickIndex) {
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_5__.core.playerManager.myPlayer;
if (!myPlayer.alive) return;
if (myPlayer.state.isTrapped && this.trap === null) {
this.initializeTrap(myPlayer.state.data.trap);
} else if (!myPlayer.state.isTrapped && this.trap !== null ||
this.willTrapBreakNextTick) {
this.setTrapBroken();
} else if (this.currentTrap !== null) {
const tankGear =
_data_moomoo_hats__WEBPACK_IMPORTED_MODULE_1__["default"].find(x => x.id === 40);
const angle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getDirection(myPlayer.server
Pos, this.currentTrap.position);
const primaryWeapon =
myPlayer.inventory.getWeapon(_data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__.WeaponS
lot.PRIMARY);
let bestWeapon =
myPlayer.inventory.findBestWeapon(_data_type_Player__WEBPACK_IMPORTED_MODULE_3__.In
ventory.WeaponFinders.BUILDING_BREAK);
let usePrimaryAttack = false;
if (!this.willTrapBreakNextTick && this.currentTrap.health > 0 &&
myPlayer.inventory.reloads[primaryWeapon.id] === 0 && this.currentTrap.health <=
primaryWeapon.stats.dmg * primaryWeapon.stats.buildingDmgMultiplier *
(myPlayer.ownedHats.includes(40) ? tankGear.bDmg : 1)) {
bestWeapon = primaryWeapon;
usePrimaryAttack = true;
this.willTrapBreakNextTick = true;
//console.log("hitting with retarded wep!!");
}
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK, tickIndex,
[40]);
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.WEAPON,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK, tickIndex,
[bestWeapon.id, true]);
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK, tickIndex,
[1, angle]);
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK, tickIndex,
[0, null]);
//core.scheduleAction(ActionType.ATTACK, ActionPriority.AUTOBREAK,
tickIndex + 1, [0, null]);
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.WEAPON,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK, tickIndex,
[bestWeapon.id, true]);
}
initializeTrap(trap) {
this.currentTrap = trap;
this.willTrapBreakNextTick = false;
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_5__.core.playerManager.myPlayer;
this.lastWeapon = myPlayer.inventory.heldItem.id;
const tankGear =
_data_moomoo_hats__WEBPACK_IMPORTED_MODULE_1__["default"].find(x => x.id === 40);
const angle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getDirection(myPlayer.server
Pos, trap.position);
const antiAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getDirection(this.currentTra
p.position, myPlayer.serverPos);
const cartAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].polarToCartesian(antiAngle);
const spikeItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_2__.items.list[myPlayer.inventory.items
[2]];
const arcs =
_main__WEBPACK_IMPORTED_MODULE_5__.core.objectManager.findPlacementArcs([myPlayer.s
erverPos, myPlayer.scale], spikeItem);
if (arcs.length > 0) {
const closestAllowArc = arcs.sort((a, b) =>
Math.min(_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getAngleDist(a[0],
antiAngle),
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getAngleDist(a[1],
antiAngle)) -
Math.min(_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getAngleDist(b[0],
antiAngle),
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].getAngleDist(b[1],
antiAngle)))[0];
const [arcStart, arcEnd] =
[_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].polarToCartesian(closestAll
owArc[0]),
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].polarToCartesian(closestAllo
wArc[1])];
if (cartAngle > arcStart && cartAngle < arcEnd) {
_main__WEBPACK_IMPORTED_MODULE_5__.core.interactionEngine.safePlacement(spikeItem,
antiAngle);
} else {
_main__WEBPACK_IMPORTED_MODULE_5__.core.interactionEngine.safePlacement(spikeItem,
_util_MathUtil__WEBPACK_IMPORTED_MODULE_9__["default"].cartesianToPolar(_util_MathU
til__WEBPACK_IMPORTED_MODULE_9__["default"].middleOfCartesianArc([arcStart,
arcEnd])));
}
}
const bestWeapon =
myPlayer.inventory.findBestWeapon(_data_type_Player__WEBPACK_IMPORTED_MODULE_3__.In
ventory.WeaponFinders.BUILDING_BREAK);
const currentWeapon = myPlayer.inventory.heldItem;
const lastHeldItemId = currentWeapon.id;
if (this.aimPacketsBlocker === -1) this.aimPacketsBlocker =
_main__WEBPACK_IMPORTED_MODULE_5__.core.createPacketBlock(_socket_packets_PacketTyp
e__WEBPACK_IMPORTED_MODULE_8__.PacketType.SET_ANGLE);
if (myPlayer.inventory.reloads[bestWeapon.id] <= (currentWeapon ===
bestWeapon ? _main__WEBPACK_IMPORTED_MODULE_5__.core.tickEngine.timeToNextTick :
0)) {
if
(_main__WEBPACK_IMPORTED_MODULE_5__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK,
_main__WEBPACK_IMPORTED_MODULE_5__.core.tickEngine.tickIndex + 1)) {
if (!(myPlayer.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__.Weapon) || bestWeapon.id !==
myPlayer.inventory.heldItem.id)
_socket_Connection__WEBPACK_IMPORTED_MODULE_6__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_8__.PacketType.SELECT_ITEM, [bestWeapon.id, true]));
if (myPlayer.ownedHats.includes(40) &&
_main__WEBPACK_IMPORTED_MODULE_5__.core.lastActionState.hat !== 40)
_socket_Connection__WEBPACK_IMPORTED_MODULE_6__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_8__.PacketType.BUY_AND_EQUIP, [0, 40, 0]));
if (!myPlayer.isAttacking)
_socket_Connection__WEBPACK_IMPORTED_MODULE_6__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_8__.PacketType.ATTACK, [1, angle]));
}
}
}
setTrapBroken() {
if (this.currentTrap === null) return;
this.currentTrap = null;
this.willTrapBreakNextTick = false;
if (this.aimPacketsBlocker > -1)
_main__WEBPACK_IMPORTED_MODULE_5__.core.removePacketBlock(_socket_packets_PacketTyp
e__WEBPACK_IMPORTED_MODULE_8__.PacketType.SET_ANGLE, this.aimPacketsBlocker);
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_5__.core.playerManager.myPlayer;
if (!_main__WEBPACK_IMPORTED_MODULE_5__.core.mstate.mouseHeld)
_socket_Connection__WEBPACK_IMPORTED_MODULE_6__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_8__.PacketType.ATTACK, [0, null]));
if
(_main__WEBPACK_IMPORTED_MODULE_5__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_0__.ActionPriority.AUTOBREAK,
_main__WEBPACK_IMPORTED_MODULE_5__.core.tickEngine.tickIndex + 1)) {
if (this.lastWeapon && (!(myPlayer.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__.Weapon) || this.lastWeapon !==
myPlayer.inventory.heldItem.id))
_socket_Connection__WEBPACK_IMPORTED_MODULE_6__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_7__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_8__.PacketType.SELECT_ITEM, [this.lastWeapon, true]));
}
}
get isBreaking() {
return this.currentTrap != null;
}
get trap() {
return this.currentTrap;
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/building/AutoPlacer.ts":
/*!**************************************************************!*\
!*** ./frontend/src/features/modules/building/AutoPlacer.ts ***!
\**************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AutoPlacer)
/* harmony export */ });
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_MoomooUtil__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/type/MoomooUtil */
"./frontend/src/data/type/MoomooUtil.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
/* harmony import */ var _AntiTrap__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./AntiTrap */
"./frontend/src/features/modules/building/AntiTrap.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_2__,
_AntiTrap__WEBPACK_IMPORTED_MODULE_5__]);
([_main__WEBPACK_IMPORTED_MODULE_2__, _AntiTrap__WEBPACK_IMPORTED_MODULE_5__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
var State;
(function (State) {
State[State["IDLE"] = 0] = "IDLE";
State[State["WINDMILLS"] = 1] = "WINDMILLS";
State[State["TRAP_ENEMY"] = 2] = "TRAP_ENEMY";
State[State["SPIKE_TRAPPED"] = 3] = "SPIKE_TRAPPED";
})(State || (State = {}));
function combineAllowAngles(angles1, angles2) {
const longer = angles1.length > angles2.length ? angles1 : angles2;
const shorter = longer === angles1 ? angles2 : angles1;
const result = [];
if (shorter.length === 0) return longer;
let comparedAgainist;
for (let i = 0; i < longer.length; i++) {
const currentItem = longer[i];
comparedAgainist = shorter.shift();
if (comparedAgainist) {
result.push([comparedAgainist[0] > currentItem[0] ? comparedAgainist[0] :
currentItem[0], comparedAgainist[1] < currentItem[1] ? comparedAgainist[1] :
currentItem[1]]);
} else {
result.push([currentItem[0], currentItem[1]]);
}
}
return result;
}
function translateAllowAngles(placeableAngles, stepDeg) {
let singleAngles = [];
for (let i = 0; i < 360; i += stepDeg) {
const rad = i * (Math.PI / 180);
for (let allow of placeableAngles) {
if (rad > allow[0] && rad < allow[1]) {
singleAngles.push(rad);
continue;
}
}
}
return singleAngles;
}
class AutoPlacer extends _Module__WEBPACK_IMPORTED_MODULE_4__["default"] {
debugAngles = [];
constructor() {
super();
this.state = State.WINDMILLS;
this.toggled = true;
this.targetsTrappable = new Set();
this.targetsTrapSpikable = new Set();
}
calcState() {
this.targetsTrappable.clear();
this.targetsTrapSpikable.clear();
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer;
const enemies =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.playerList.slice(1).filter(x
=> x.visible);
const trapItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[15];
const spikeItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[myPlayer.inventory.items
[2]];
if (enemies.length === 0) this.state = State.IDLE;
for (let i = 0; i < enemies.length; i++) {
const enemy = enemies[i];
const distance =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDistance(enemy.serverPos,
myPlayer.serverPos);
const nextDistance =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDistance(enemy.serverPos.
clone().add(enemy.velocity), myPlayer.serverPos);
const trappingDistance = myPlayer.scale + enemy.scale + trapItem.scale +
trapItem.scale * trapItem.colDiv + trapItem.placeOffset;
if (distance <= trappingDistance && nextDistance <= trappingDistance && !
enemy.state.isTrapped) {
this.state = State.TRAP_ENEMY;
this.targetsTrappable.add(enemy);
}
if (enemy.state.isTrapped) {
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDistance(enemy.state.dat
a.trap.position, myPlayer.serverPos) - myPlayer.scale - trapItem.scale -
spikeItem.scale * 2 - (spikeItem.placeOffset ?? 0) <= 0) {
this.state = State.SPIKE_TRAPPED;
this.targetsTrapSpikable.add(enemy);
}
}
}
if (this.state === State.IDLE) this.state = State.WINDMILLS;
}
onUpdate(tickIndex) {
if (!this.toggled) return;
const antiTrap =
_main__WEBPACK_IMPORTED_MODULE_2__.core.moduleManager.getModule(_AntiTrap__WEBPACK_
IMPORTED_MODULE_5__["default"]);
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer;
if (!myPlayer.alive /* || antiTrap.isBreaking*/) return;
this.calcState();
switch (this.state) {
case State.WINDMILLS:
{
return;
const windmillItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[_main__WEBPACK_IMPORTED_
MODULE_2__.core.playerManager.myPlayer.inventory.items[3]];
const placeableangles =
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.findPlacementArcs([_main__WEB
PACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.serverPos,
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.scale],
windmillItem);
const backdir =
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDirection(_main__WEBPACK
_IMPORTED_MODULE_2__.core.playerManager.myPlayer.lerpPos,
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.serverPos) +
Math.PI) % (Math.PI * 2);
const singleAngles = translateAllowAngles(placeableangles, 3);
const angles = singleAngles.filter(angle =>
_data_type_MoomooUtil__WEBPACK_IMPORTED_MODULE_1__.util.getAngleDist(backdir,
angle) <= Math.PI / 2.8);
for (let i = 0; i < angles.length; i++) {
_main__WEBPACK_IMPORTED_MODULE_2__.core.interactionEngine.safePlacement(windmillIte
m, angles[i]);
//InteractUtil.place(<number> inventory.get(InventoryItem.WINDMILL),
angles[i], true);
}
break;
}
case State.TRAP_ENEMY:
{
// TODO: use ping & tick based predicted position instead of last
received positions (sometimes causes it to place trap on old enemy position)
const trapItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[15];
for (let iterator = this.targetsTrappable.values(), iteration = null,
value = (iteration = iterator.next()).value; !iteration.done; value = (iteration =
iterator.next()).value) {
const target = value;
const targetDir =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDirection(myPlayer.server
Pos, target.serverPos);
const trappingDistance = myPlayer.scale + target.scale + trapItem.scale
+ trapItem.scale * trapItem.colDiv + trapItem.placeOffset;
const angles =
translateAllowAngles(_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.findPlac
ementArcs([_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.serverPos
, _main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.scale], trapItem),
3);
const placeAngles = angles.filter(angle =>
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getAngleDist(angle,
targetDir) <= Math.sin(trappingDistance / (target.scale + trapItem.scale *
trapItem.colDiv)));
_main__WEBPACK_IMPORTED_MODULE_2__.core.interactionEngine.safePlacement(trapItem,
targetDir);
for (let i = 0; i < placeAngles.length; i++) {
_main__WEBPACK_IMPORTED_MODULE_2__.core.interactionEngine.safePlacement(trapItem,
placeAngles[i]);
}
}
break;
}
case State.SPIKE_TRAPPED:
{
const trapItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[15];
const spikeItem =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[_main__WEBPACK_IMPORTED_
MODULE_2__.core.playerManager.myPlayer.inventory.items[2]];
for (let iterator = this.targetsTrapSpikable.values(), iteration = null,
value = (iteration = iterator.next()).value; !iteration.done; value = (iteration =
iterator.next()).value) {
const target = value;
const trap = target.state.data.trap;
if (trap) {
const tangentAngle =
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.findPlacementTangent([myPlaye
r.serverPos, myPlayer.scale], trap, spikeItem, 5);
const straightAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDirection(myPlayer.server
Pos, trap.position);
const targetAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getDirection(myPlayer.server
Pos, target.serverPos);
const angle1 = straightAngle + tangentAngle;
const angle2 = straightAngle - tangentAngle;
const closestAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getAngleDist(angle1,
targetAngle) >
_util_MathUtil__WEBPACK_IMPORTED_MODULE_3__["default"].getAngleDist(angle2,
targetAngle) ? angle2 : angle1;
_main__WEBPACK_IMPORTED_MODULE_2__.core.interactionEngine.safePlacement(spikeItem,
closestAngle);
}
}
break;
}
}
}
onKeydown(keyCode) {
/*if (keyCode == 82) {
this.toggled = !this.toggled;
}*/
}
onKeyup(keyCode) {}
/***/ }),
/***/ "./frontend/src/features/modules/building/AutoReplace.ts":
/*!***************************************************************!*\
!*** ./frontend/src/features/modules/building/AutoReplace.ts ***!
\***************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AutoReplace)
/* harmony export */ });
/* harmony import */ var _data_moomoo_hats__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../data/moomoo/hats */
"./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_3__]);
_main__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
// calculate angle
const arcs =
_main__WEBPACK_IMPORTED_MODULE_3__.core.objectManager.findPlacementArcs([myPlayer.s
erverPos, myPlayer.scale], item, [building]);
if (arcs.length === 0) return;
const closestAllowArc = arcs.sort((a, b) =>
Math.min(_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].getAngleDist(a[0],
buildingAngle),
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].getAngleDist(a[1],
buildingAngle)) -
Math.min(_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].getAngleDist(b[0],
buildingAngle),
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].getAngleDist(b[1],
buildingAngle)))[0];
const splitTangent =
_main__WEBPACK_IMPORTED_MODULE_3__.core.objectManager.findSplitTangent(myPlayer.sca
le, item) + 0.25;
const start =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].polarToCartesian(closestAllo
wArc[0]);
const end =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].polarToCartesian(closestAllo
wArc[1]);
const arcSpan = start > end ? end + Math.PI * 2 - start : end - start;
const buildingCount = Math.min(Math.floor((arcSpan + splitTangent) /
splitTangent), 3);
const enemyAngleCart =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].polarToCartesian(_util_MathU
til__WEBPACK_IMPORTED_MODULE_4__["default"].getDirection(myPlayer.serverPos,
enemyPlayer.serverPos));
if (buildingCount === 1 || start + end === Math.PI * 2 || forceSingle) {
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m, enemyAngleCart >= start && enemyAngleCart <= end ?
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(enemyAngleC
art) : buildingAngle, building);
} else {
const middle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].middleOfCartesianArc([start,
end]);
if (buildingCount % 2 === 0) {
for (let i = 0; i < buildingCount / 2; i++) {
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m,
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(_util_MathU
til__WEBPACK_IMPORTED_MODULE_4__["default"].clampCartesian(middle + splitTangent /
2 + splitTangent * i)), building);
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m,
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(_util_MathU
til__WEBPACK_IMPORTED_MODULE_4__["default"].clampCartesian(middle - splitTangent /
2 - splitTangent * i)), building);
}
} else {
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m, _util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(middle),
building);
for (let i = 0; i < (buildingCount - 1) / 2; i++) {
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m,
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(_util_MathU
til__WEBPACK_IMPORTED_MODULE_4__["default"].clampCartesian(middle + splitTangent *
(i + 1))), building);
_main__WEBPACK_IMPORTED_MODULE_3__.core.interactionEngine.safePlacementIgnoring(ite
m,
_util_MathUtil__WEBPACK_IMPORTED_MODULE_4__["default"].cartesianToPolar(_util_MathU
til__WEBPACK_IMPORTED_MODULE_4__["default"].clampCartesian(middle - splitTangent *
(i + 1))), building);
}
}
}
}
}
onPostTick(tickIndex) {
let i = this.shouldReplace.length;
while (i-- > 0) {
const [building, timestamp, tick] = this.shouldReplace[i];
if (tick + 1 === tickIndex) {
this.replace(building, false);
this.shouldReplace.splice(i, 1);
}
}
}
onPlayerUpdate(player) {
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_3__.core.playerManager.myPlayer;
const tickIndex = _main__WEBPACK_IMPORTED_MODULE_3__.core.tickEngine.tickIndex
+ 1;
// check for players which weapon will attack at the next tick
//const players = core.playerManager.getNearby(myPlayer.serverPos, 800, false);
_main__WEBPACK_IMPORTED_MODULE_3__.core.moduleManager.onPreBuildingHit(player,
object, tickIndex, !object.meta.wasPlacementSighted || object.health -
weapon.stats.dmg * weapon.stats.buildingDmgMultiplier * hatBuildingDmgBoost <= 0);
}
}
}
}
}
/*onPreTick(tickIndex: number): void {
const myPlayer = core.playerManager.myPlayer;
const spikeItem = items.list[myPlayer.inventory.items[2]];
const trapItem = items.list[15];
// check for players which weapon will attack at the next tick
const players = core.playerManager.getNearby(myPlayer.serverPos, 800, false);
for (let i = 0; i < players.length; i++) {
const player = players[i];
if (player.nextAttack === tickIndex) {
const weapon = <MeleeWeapon> player.inventory.weaponSelected;
const hatBuildingDmgBoost = hats.find(x => x.id ===
player.skinIndex)?.bDmg ?? 1;
const grids = core.objectManager.getGridArrays(player.serverPos.x +
player.velocity.x, player.serverPos.y + player.velocity.y, weapon.stats.range);
for (let i = 0; i < grids.length; i++) {
const object = grids[i];
if (object instanceof PlayerBuilding &&
object.meta.wasPlacementSighted && object.health - (weapon.stats.dmg *
weapon.stats.buildingDmgMultiplier * hatBuildingDmgBoost) <= 0) {
if (MathUtil.getDistance(object.position,
player.serverPos.clone().add(player.velocity)) - object.scale <= weapon.stats.range
+ player.scale) {
this.shouldReplace.push([object, Date.now() +
core.tickEngine.timeToNextTick - core.tickEngine.ping, tickIndex]);
core.moduleManager.onPreBuildingHit(player, object,
tickIndex, !object.meta.wasPlacementSighted || (object.health - (weapon.stats.dmg *
weapon.stats.buildingDmgMultiplier * hatBuildingDmgBoost) <= 0));
}
}
}
}
}
}*/
onBuildingBreak(building) {
if (!building.meta.wasPlacementSighted) {
this.replace(building, true);
} else {
this.replace(building, false);
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/building/ItemPlacer.ts":
/*!**************************************************************!*\
!*** ./frontend/src/features/modules/building/ItemPlacer.ts ***!
\**************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ ItemPlacer)
/* harmony export */ });
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_1__]);
_main__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
var PlacerType;
(function (PlacerType) {
PlacerType[PlacerType["SPIKE"] = 0] = "SPIKE";
PlacerType[PlacerType["TRAP"] = 1] = "TRAP";
PlacerType[PlacerType["WINDMILL"] = 2] = "WINDMILL";
})(PlacerType || (PlacerType = {}));
class Placer {
constructor(type) {
this.active = false;
this.type = type;
switch (type) {
case PlacerType.SPIKE:
this.placingObjectGroup = 2;
break;
case PlacerType.TRAP:
this.placingObjectGroup = 4;
break;
case PlacerType.WINDMILL:
this.placingObjectGroup = 3;
break;
}
}
setStatus(active) {
this.active = active;
}
isActive() {
return this.active;
}
run(tickIndex) {
const item =
_data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[_main__WEBPACK_IMPORTED_
MODULE_1__.core.playerManager.myPlayer.inventory.items[this.placingObjectGroup]];
if (!item) return;
_main__WEBPACK_IMPORTED_MODULE_1__.core.interactionEngine.safePlacement(item,
_main__WEBPACK_IMPORTED_MODULE_1__.core.mouseAngle);
}
}
class ItemPlacer extends _Module__WEBPACK_IMPORTED_MODULE_2__["default"] {
constructor() {
super();
this.placers = new Map();
this.activePlacer = null;
this.placers.set(86, new Placer(PlacerType.SPIKE));
this.placers.set(70, new Placer(PlacerType.TRAP));
this.placers.set(78, new Placer(PlacerType.WINDMILL));
}
onUpdate(delta) {
if (this.activePlacer &&
_main__WEBPACK_IMPORTED_MODULE_1__.core.playerManager.myPlayer.alive)
this.activePlacer.run(0);
}
onKeydown(keyCode) {
const placer = this.placers.get(keyCode);
placer?.setStatus(true);
if (!this.activePlacer && placer) {
this.activePlacer = placer;
}
}
onKeyup(keyCode) {
this.placers.get(keyCode)?.setStatus(false);
this.activePlacer = null;
for (const placer of this.placers.values()) {
if (placer.isActive()) {
this.activePlacer = placer;
break;
}
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/combat/AntiBull.ts":
/*!**********************************************************!*\
!*** ./frontend/src/features/modules/combat/AntiBull.ts ***!
\**********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AntiBull)
/* harmony export */ });
/* harmony import */ var _data_moomoo_config__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../data/moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _data_moomoo_hats__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/hats */
"./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _data_moomoo_accessories__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/moomoo/accessories */
"./frontend/src/data/moomoo/accessories.ts");
/* harmony import */ var _data_type_Player__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../data/type/Player */
"./frontend/src/data/type/Player.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _core_ActionType__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../../core/ActionType */
"./frontend/src/core/ActionType.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_11__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_5__]);
_main__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_6__.ActionType.TAIL,
_core_ActionType__WEBPACK_IMPORTED_MODULE_6__.ActionPriority.ANTIBULL, attackTick,
[0]);
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_6__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_6__.ActionPriority.ANTIBULL, attackTick,
[1, angleToEnemy]);
} else if
(_main__WEBPACK_IMPORTED_MODULE_5__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_6__.ActionPriority.ANTIBULL, attackTick)) {
if (myPlayer.inventory.heldItem !== myWeapon)
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.SELECT_ITEM, [myWeapon.id, true]));
if (myPlayer.ownedHats.includes(7))
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.BUY_AND_EQUIP, [0, 7, 0]));
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.BUY_AND_EQUIP, [0, 0, 1]));
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.ATTACK, [1, angleToEnemy]));
}
}
}
}
_main__WEBPACK_IMPORTED_MODULE_5__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_6__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_6__.ActionPriority.ANTIBULL, attackTick,
[0, null]);
} else if
(_main__WEBPACK_IMPORTED_MODULE_5__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_6__.ActionPriority.ANTIBULL, attackTick)) {
if (myPlayer.ownedHats.includes(11))
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.BUY_AND_EQUIP, [0, 11, 0]));
if (myPlayer.ownedTails.includes(21))
_socket_Connection__WEBPACK_IMPORTED_MODULE_9__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_10__.Packet(_socket_packets_PacketT
ype__WEBPACK_IMPORTED_MODULE_11__.PacketType.BUY_AND_EQUIP, [0, 21, 1]));
}
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/combat/AntiInsta.ts":
/*!***********************************************************!*\
!*** ./frontend/src/features/modules/combat/AntiInsta.ts ***!
\***********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AntiInsta)
/* harmony export */ });
/* harmony import */ var _core_ActionType__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../core/ActionType */
"./frontend/src/core/ActionType.ts");
/* harmony import */ var _data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _data_moomoo_hats__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/moomoo/hats */
"./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _data_type_Projectile__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../../data/type/Projectile */
"./frontend/src/data/type/Projectile.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_11__ =
__webpack_require__(/*! ../../../util/engine/TickEngine */
"./frontend/src/util/engine/TickEngine.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_12__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_RecognitionUtil__WEBPACK_IMPORTED_MODULE_13__ =
__webpack_require__(/*! ../../../util/RecognitionUtil */
"./frontend/src/util/RecognitionUtil.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_14__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_7__]);
_main__WEBPACK_IMPORTED_MODULE_7__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
_main__WEBPACK_IMPORTED_MODULE_7__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.ANTIINSTA, tickIndex,
[6]);
} else {
_socket_Connection__WEBPACK_IMPORTED_MODULE_8__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_10__.PacketType.BUY_AND_EQUIP, [0, 6, 0]));
}
}
}
}
onPacketReceive(event) {
const packet = event.getPacket();
if (packet.type ===
_socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_10__.PacketType.PLAYER_UPDATE)
{
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_7__.core.playerManager.myPlayer;
const projectiles =
_main__WEBPACK_IMPORTED_MODULE_7__.core.projectileManager.getDangerousProjectiles(_
main__WEBPACK_IMPORTED_MODULE_7__.core.tickEngine.tickIndex + 1);
const projectileDamage = projectiles.length <= 2 ? projectiles.reduce((ac,
val) => ac +
_data_type_Projectile__WEBPACK_IMPORTED_MODULE_5__.projectileList[val.type].stats.d
mg, 0) : 0;
const potentialDamage = this.meleePlayersCount > 1 ?
this.totalPotentialDamage + this.totalPotentialTurretGearDamage :
this.totalPotentialDamage + this.totalPotentialRangedDamage +
this.totalPotentialTurretGearDamage + projectileDamage;
const currentDamageReduction = (myPlayer.skinIndex === 6 ? 0.75 : 0) + 0;
_main__WEBPACK_IMPORTED_MODULE_7__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.ANTIINSTA, tick,
[22]);
} else {
_socket_Connection__WEBPACK_IMPORTED_MODULE_8__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_10__.PacketType.BUY_AND_EQUIP, [0, 22, 0]), true);
_main__WEBPACK_IMPORTED_MODULE_7__.core.lastActionState.hat = 22;
}
} else if (newHealth - potentialDamage * 0.75 > 0 &&
myPlayer.ownedHats.includes(6)) {
// soldier will save us
if
(_main__WEBPACK_IMPORTED_MODULE_7__.core.tickEngine.isTickPredictable(tick)) {
_main__WEBPACK_IMPORTED_MODULE_7__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.ANTIINSTA, tick, [6]);
} else {
_socket_Connection__WEBPACK_IMPORTED_MODULE_8__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_10__.PacketType.BUY_AND_EQUIP, [0, 6, 0]));
//core.lastActionState.hat = 6;
}
} else {
// healing to full will save us
const foodType =
_main__WEBPACK_IMPORTED_MODULE_7__.core.playerManager.myPlayer.inventory.items[0];
const healsUp = foodType == 0 ? 20 : 40;
const times = Math.ceil((myPlayer.maxHealth - myPlayer.health) /
healsUp);
for (let i = 0; i < times; i++) {
_main__WEBPACK_IMPORTED_MODULE_7__.core.interactionEngine.vanillaUseFoodItem(_data_
moomoo_items__WEBPACK_IMPORTED_MODULE_3__.items.list[foodType], i === times - 1);
}
if (myPlayer.maxHealth - potentialDamage +
this.totalPotentialTurretGearDamage > 0 && myPlayer.ownedHats.includes(22)) {
// healing to full and emp helmet will save us
if
(_main__WEBPACK_IMPORTED_MODULE_7__.core.tickEngine.isTickPredictable(tick)) {
_main__WEBPACK_IMPORTED_MODULE_7__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.ANTIINSTA, tick,
[22]);
} else {
_socket_Connection__WEBPACK_IMPORTED_MODULE_8__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_10__.PacketType.BUY_AND_EQUIP, [0, 22, 0]));
//core.lastActionState.hat = 22;
}
} else if ((this.meleePlayersCount > 1 || myPlayer.maxHealth -
potentialDamage < 0) && myPlayer.ownedHats.includes(6)) {
// equip soldier because even healing to full wont save us
if
(_main__WEBPACK_IMPORTED_MODULE_7__.core.tickEngine.isTickPredictable(tick)) {
_main__WEBPACK_IMPORTED_MODULE_7__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.ANTIINSTA, tick, [6]);
} else {
_socket_Connection__WEBPACK_IMPORTED_MODULE_8__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_9__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_10__.PacketType.BUY_AND_EQUIP, [0, 6, 0]));
//core.lastActionState.hat = 6;
}
}
}
}
this.meleePlayersCount = 0;
this.totalDamageDealt = 0;
this.totalPotentialDamage = 0;
this.totalPotentialRangedDamage = 0;
this.totalPotentialTurretGearDamage = 0;
this.hasCountedTurretGear = false;
this.hasCountedRanged = false;
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/combat/Autoheal.ts":
/*!**********************************************************!*\
!*** ./frontend/src/features/modules/combat/Autoheal.ts ***!
\**********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Autoheal)
/* harmony export */ });
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_1__]);
_main__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
_main__WEBPACK_IMPORTED_MODULE_1__.core.interactionEngine.vanillaUseFoodItem(_data_
moomoo_items__WEBPACK_IMPORTED_MODULE_0__.items.list[foodType], i === times - 1);
}
}
}
onPacketReceive(event) {
/*const packet = event.getPacket();
if (packet.type === PacketType.HEALTH_UPDATE) {
const [sid, health] = packet.data;
if (sid === core.playerManager.myPlayer.sid) {
// if (health < this.lastHealth) this.damageTime = Date.now() -
core.tickEngine.ping;
}
}*/
}
// ...
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/combat/SpikeSync.ts":
/*!***********************************************************!*\
!*** ./frontend/src/features/modules/combat/SpikeSync.ts ***!
\***********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ SpikeSync)
/* harmony export */ });
/* harmony import */ var _core_ActionType__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../core/ActionType */
"./frontend/src/core/ActionType.ts");
/* harmony import */ var _data_moomoo_hats__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/hats */
"./frontend/src/data/moomoo/hats.ts");
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _data_type_Player__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../data/type/Player */
"./frontend/src/data/type/Player.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../../../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_4__]);
_main__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.TAIL,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.SPIKESYNC, attackTick,
[0]);
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.SPIKESYNC, attackTick,
[1, straightAngle]);
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.ATTACK,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.SPIKESYNC, attackTick,
[0, straightAngle]);
} else if
(_main__WEBPACK_IMPORTED_MODULE_4__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_0__.ActionPriority.SPIKESYNC, attackTick)) {
if (myPlayer.inventory.heldItem !== bestWeapon)
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.SELECT_ITEM, [bestWeapon.id, true]));
if (myPlayer.ownedHats.includes(7))
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.BUY_AND_EQUIP, [0, 7, 0]));
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.BUY_AND_EQUIP, [0, 0, 1]));
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.ATTACK, [1, straightAngle]));
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.ATTACK, [0, straightAngle]));
}
break;
}
}
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/features/modules/misc/NoToxic.ts":
/*!*******************************************************!*\
!*** ./frontend/src/features/modules/misc/NoToxic.ts ***!
\*******************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ NoToxic)
/* harmony export */ });
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_0__]);
_main__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
/***/ }),
/***/ "./frontend/src/features/modules/player/AutoHat.ts":
/*!*********************************************************!*\
!*** ./frontend/src/features/modules/player/AutoHat.ts ***!
\*********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ AutoHat)
/* harmony export */ });
/* harmony import */ var _core_ActionType__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../../core/ActionType */
"./frontend/src/core/ActionType.ts");
/* harmony import */ var _data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../../data/moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../../main */ "./frontend/src/main.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../../../util/MathUtil */
"./frontend/src/util/MathUtil.ts");
/* harmony import */ var _building_AntiTrap__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../building/AntiTrap */
"./frontend/src/features/modules/building/AntiTrap.ts");
/* harmony import */ var _Module__WEBPACK_IMPORTED_MODULE_10__ =
__webpack_require__(/*! ../Module */ "./frontend/src/features/modules/Module.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_4__,
_building_AntiTrap__WEBPACK_IMPORTED_MODULE_9__]);
([_main__WEBPACK_IMPORTED_MODULE_4__,
_building_AntiTrap__WEBPACK_IMPORTED_MODULE_9__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
//console.log(tickIndex);
if (shouldAutobull) {
let playersHit = 0;
let objectsHit = 0;
const weapon = myPlayer.inventory.weaponSelected;
const grids =
_main__WEBPACK_IMPORTED_MODULE_4__.core.objectManager.getGridArrays(myPlayer.server
Pos.x + myPlayer.velocity.x, myPlayer.serverPos.y + myPlayer.velocity.y,
weapon.stats.range);
for (let i = 0; i < grids.length; i++) {
const object = grids[i];
// use object.scale because .getScale returns collision box while .scale is
hitbox
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].getDistance(object.position
, myPlayer.serverPos.clone().add(myPlayer.velocity.clone().multiply(1.1))) -
object.scale <= weapon.stats.range + myPlayer.scale) {
const gatherAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].roundTo(_util_MathUtil__WEBP
ACK_IMPORTED_MODULE_8__["default"].getDirection(myPlayer.serverPos.clone().add(myPl
ayer.velocity.clone().multiply(1.1)), object.position), 1);
//const safeSpan = MathUtil.lineSpan(object.position.clone(),
myPlayer.serverPos.clone(), myPlayer.serverPos.clone().add(myPlayer.velocity));
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].getAngleDist(_main__WEBPACK
_IMPORTED_MODULE_4__.core.mouseAngle, gatherAngle) <=
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].gatherAngle +
Number.EPSILON) {
if (object instanceof
_data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__.PlayerBuilding) {
objectsHit++;
}
}
}
}
const players =
_main__WEBPACK_IMPORTED_MODULE_4__.core.playerManager.getVisibleEnemies();
for (let i = 0; i < players.length; i++) {
const player = players[i];
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].getDistance(player.serverPo
s.clone().add(player.velocity.clone().multiply(1.1)),
myPlayer.serverPos.clone().add(myPlayer.velocity.clone().multiply(1.1))) -
player.scale <= weapon.stats.range + myPlayer.scale) {
const gatherAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].roundTo(_util_MathUtil__WEBP
ACK_IMPORTED_MODULE_8__["default"].getDirection(myPlayer.serverPos,
player.serverPos), 1);
//console.log(MathUtil.getAngleDist(core.mouseAngle, gatherAngle),
config.gatherAngle + Number.EPSILON);
if
(_util_MathUtil__WEBPACK_IMPORTED_MODULE_8__["default"].getAngleDist(_main__WEBPACK
_IMPORTED_MODULE_4__.core.mouseAngle, gatherAngle) <=
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].gatherAngle +
Number.EPSILON) {
playersHit++;
}
}
}
if (weapon !==
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.Weapons.GREAT_HAMMER && playersHit >
0) {
hat = 7;
tail = 0;
} else if (antiTrap.isBreaking || objectsHit > 0) {
//console.log("autohat: TANK");
hat = 40;
}
//hat = 7;
//tail = 0;
//console.log("autobull" );
} /* else if (myPlayer.justStartedAttacking) {
hat = 7;
tail = 0;
}*/
if (!myPlayer.ownedHats.includes(hat)) {
hat = myPlayer.serverPos.y <=
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].snowBiomeTop ? 15 :
myPlayer.serverPos.y >=
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].mapScale / 2 -
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].riverWidth / 2 &&
myPlayer.serverPos.y <=
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].mapScale / 2 +
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].riverWidth / 2 ? 31 :
12;
}
if (!myPlayer.ownedTails.includes(tail)) {
tail = 11;
}
/*if (this.doAttackNextTick) {
this.doAttackNextTick = false;
this.doAttack();
}*/
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_4__.core.playerManager.myPlayer;
const shouldAutobull = !this.isPlacing && this.bundleAttackState &&
(myPlayer.isAutoAttacking || myPlayer.isAttacking) && myPlayer.inventory.heldItem
instanceof _data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.MeleeWeapon &&
myPlayer.nextAttack === tickIndex - 1;
const [hat, tail] = this.getHat(shouldAutobull);
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.BIOMEHAT, tickIndex,
[hat]);
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.TAIL,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.BIOMEHAT, tickIndex,
[tail]);
}
onPacketSend(event) {
const packet = event.getPacket();
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_4__.core.playerManager.myPlayer;
if (event.isBundle && packet.type ===
_socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_7__.PacketType.ATTACK) {
this.bundleAttackState = packet.data[0] === 1;
if (!this.isPlacing && myPlayer.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.MeleeWeapon) {
if (packet.data[0] && myPlayer.justStartedAttacking) {
const [hat, tail] = this.getHat(true);
const attackArriveTick =
_main__WEBPACK_IMPORTED_MODULE_4__.core.tickEngine.tickIndex + 1;
//console.log("first hit autohat activated");
if
(_main__WEBPACK_IMPORTED_MODULE_4__.core.tickEngine.isTickPredictable(attackArriveT
ick)) {
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.HAT,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.BIOMEHAT,
attackArriveTick, [hat]);
_main__WEBPACK_IMPORTED_MODULE_4__.core.scheduleAction(_core_ActionType__WEBPACK_IM
PORTED_MODULE_0__.ActionType.TAIL,
_core_ActionType__WEBPACK_IMPORTED_MODULE_0__.ActionPriority.BIOMEHAT,
attackArriveTick, [tail]);
} else if
(_main__WEBPACK_IMPORTED_MODULE_4__.core.isHighestPriority(_core_ActionType__WEBPAC
K_IMPORTED_MODULE_0__.ActionPriority.BIOMEHAT, attackArriveTick) /* && !
antiTrap.isTrapped()*/) {
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.BUY_AND_EQUIP, [0, hat, 0]), true);
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.BUY_AND_EQUIP, [0, tail, 1]), true);
_main__WEBPACK_IMPORTED_MODULE_4__.core.lastActionState.hat = hat;
_main__WEBPACK_IMPORTED_MODULE_4__.core.lastActionState.tail = tail;
_main__WEBPACK_IMPORTED_MODULE_4__.core.lastActionState.attack = 1;
_main__WEBPACK_IMPORTED_MODULE_4__.core.lastActionState.aim =
packet.data[1];
_socket_Connection__WEBPACK_IMPORTED_MODULE_5__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_6__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_7__.PacketType.ATTACK, [1, packet.data[1]]), true);
this.skipNextTick = true;
//console.log("REWRITING HIT SUYPER OMG SUCK MY DICK");
event.cancel();
}
}
}
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/injector/BundleProxy.ts":
/*!**********************************************!*\
!*** ./frontend/src/injector/BundleProxy.ts ***!
\**********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _loader_NVRLoader__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../loader/NVRLoader */
"./frontend/src/loader/NVRLoader.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
/* harmony import */ var _util_StringUtil__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../util/StringUtil */ "./frontend/src/util/StringUtil.ts");
/* harmony import */ var
_transformations_GetAttackDirTransformer__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ./transformations/GetAttackDirTransformer */
"./frontend/src/injector/transformations/GetAttackDirTransformer.ts");
/* harmony import */ var
_transformations_IOClientTransformer__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ./transformations/IOClientTransformer */
"./frontend/src/injector/transformations/IOClientTransformer.ts");
/* harmony import */ var
_transformations_ObjectSpriteLoaderTransformer__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./transformations/ObjectSpriteLoaderTransformer */
"./frontend/src/injector/transformations/ObjectSpriteLoaderTransformer.ts");
/* harmony import */ var
_transformations_SourceMappingTransformer__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ./transformations/SourceMappingTransformer */
"./frontend/src/injector/transformations/SourceMappingTransformer.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_0
__]);
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_0__ =
(__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__)[0];
/***/ }),
/***/ "./frontend/src/injector/Transformation.ts":
/*!*************************************************!*\
!*** ./frontend/src/injector/Transformation.ts ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Transformation)
/* harmony export */ });
class Transformation {}
/***/ }),
/***/ "./frontend/src/injector/api/API.ts":
/*!******************************************!*\
!*** ./frontend/src/injector/api/API.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ API)
/* harmony export */ });
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! tsee */ "./node_modules/tsee/lib/index.js");
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(tsee__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../util/Logger */ "./frontend/src/util/Logger.ts");
/**
* TODO: use this: <https://stackoverflow.com/a/21487151>
*/
linkPrimitive(initialValue) {
let object = [initialValue];
object.toString = () => object[0];
return object;
}
callbackIntercept(name, data, callback) {
this.core.onApiCallback(name, data, callback);
}
getValue(name, defaultValue) {
if (this.values.has(name)) {
return this.values.get(name);
} else {
return defaultValue;
}
}
createProxyFor(name, object) {
switch (typeof object) {
case "object":
return this.createObjectProxy(name, object);
default:
return object;
}
}
createObjectProxy(name, object) {
const _ = this;
return new Proxy(object, {
set(target, p, newValue, receiver) {
_.emit("refPropertySet", name, p, newValue);
return Reflect.set(target, p, newValue, receiver);
}
});
}
}
/***/ }),
/***/ "./frontend/src/injector/transformations/GetAttackDirTransformer.ts":
/*!**************************************************************************!*\
!*** ./frontend/src/injector/transformations/GetAttackDirTransformer.ts ***!
\**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ GetAttackDirTransformer)
/* harmony export */ });
/* harmony import */ var _Transformation__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../Transformation */
"./frontend/src/injector/Transformation.ts");
/***/ }),
/***/ "./frontend/src/injector/transformations/IOClientTransformer.ts":
/*!**********************************************************************!*\
!*** ./frontend/src/injector/transformations/IOClientTransformer.ts ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ IOClientTransformer)
/* harmony export */ });
/* harmony import */ var _Transformation__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../Transformation */
"./frontend/src/injector/Transformation.ts");
/***/ }),
/***/ "./frontend/src/injector/transformations/ObjectSpriteLoaderTransformer.ts":
/*!
********************************************************************************!*\
!*** ./frontend/src/injector/transformations/ObjectSpriteLoaderTransformer.ts
***!
\
********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */
ObjectSpriteLoaderTransformer)
/* harmony export */ });
/* harmony import */ var _util_StringUtil__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../util/StringUtil */
"./frontend/src/util/StringUtil.ts");
/* harmony import */ var _Transformation__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../Transformation */
"./frontend/src/injector/Transformation.ts");
/***/ }),
/***/ "./frontend/src/injector/transformations/SourceMappingTransformer.ts":
/*!***************************************************************************!*\
!*** ./frontend/src/injector/transformations/SourceMappingTransformer.ts ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ TSourceMappingTransformer)
/* harmony export */ });
/* harmony import */ var _Transformation__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../Transformation */
"./frontend/src/injector/Transformation.ts");
/***/ }),
/***/ "./frontend/src/loader/FingerprintJS.ts":
/*!**********************************************!*\
!*** ./frontend/src/loader/FingerprintJS.ts ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ FingerprintJS)
/* harmony export */ });
// fingerprintjs api compatible with obfuscation, all rights go to fingerprintjs
owners!!!
class FingerprintJS {
static import(apiKey) {
const script = document.createElement("script");
script.src = "https://fpnpmcdn.net/v3/" + apiKey + "/loader_v3.8.1.js";
document.head.appendChild(script);
return window["__fpjs_p_l_b"] !== undefined ?
Promise.resolve(window["__fpjs_p_l_b"]) : new Promise(resolve => {
let interval = setInterval(() => {
if (window["__fpjs_p_l_b"] !== undefined) {
clearInterval(interval);
resolve(window["__fpjs_p_l_b"]);
}
}, 50);
});
}
}
/***/ }),
/***/ "./frontend/src/loader/NVRLoader.ts":
/*!******************************************!*\
!*** ./frontend/src/loader/NVRLoader.ts ***!
\******************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _SecurityManager__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ./SecurityManager */
"./frontend/src/loader/SecurityManager.ts");
/* harmony import */ var _loader_html__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ./loader.html */ "./frontend/src/loader/loader.html");
/* harmony import */ var _raw_loader_NVRWorker_js__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! !!raw-loader!./NVRWorker.js */
"./node_modules/raw-loader/dist/cjs.js!./frontend/src/loader/NVRWorker.js");
/* harmony import */ var _util_StringUtil__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../util/StringUtil */ "./frontend/src/util/StringUtil.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
/* harmony import */ var _core_Core__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../core/Core */ "./frontend/src/core/Core.ts");
/* harmony import */ var _FingerprintJS__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ./FingerprintJS */
"./frontend/src/loader/FingerprintJS.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_core_Core__WEBPACK_IMPORTED_MODULE_5__]);
_core_Core__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ?
(await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
/***/ }),
/***/ "./frontend/src/loader/SecurityManager.ts":
/*!************************************************!*\
!*** ./frontend/src/loader/SecurityManager.ts ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ SecurityManager)
/* harmony export */ });
class SecurityManager {
constructor() {}
checkHref() {
const loc = window.location;
if (!(loc instanceof Location)) return false;
if (location[Symbol.toStringTag] != "Location") return false;
if (loc.host !== "sandbox.moomoo.io") return false;
return true;
}
createVM(byteCode, config, references) {
// referenes indexes: 0 = symbol, 2 = fingerprint getter, 5 = success function,
3 = failure
//const byteCode =
"DgEADxMFAQ4BQA8TBQIOAQAVEgwRRRAAEUUDbXlmcAAAFg4BQBMFABQQFxMFAxg=";
/***/ }),
/***/ "./frontend/src/main.ts":
/*!******************************!*\
!*** ./frontend/src/main.ts ***!
\******************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "core": () => (/* binding */ core)
/* harmony export */ });
/* harmony import */ var _style_main_scss__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../style/main.scss */ "./frontend/style/main.scss");
/* harmony import */ var _style_moomoo_scss__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../style/moomoo.scss */ "./frontend/style/moomoo.scss");
/* harmony import */ var _core_Core__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ./core/Core */ "./frontend/src/core/Core.ts");
/* harmony import */ var _loader_NVRLoader__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ./loader/NVRLoader */
"./frontend/src/loader/NVRLoader.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ./socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./util/Logger */ "./frontend/src/util/Logger.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_core_Core__WEBPACK_IMPORTED_MODULE_2__,
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_3__]);
([_core_Core__WEBPACK_IMPORTED_MODULE_2__,
_loader_NVRLoader__WEBPACK_IMPORTED_MODULE_3__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
// @ts-ignore
await _loader_NVRLoader__WEBPACK_IMPORTED_MODULE_3__["default"].createWebWorker();
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } }, 1);
/***/ }),
/***/ "./frontend/src/manager/ObjectManager.ts":
/*!***********************************************!*\
!*** ./frontend/src/manager/ObjectManager.ts ***!
\***********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PredictedPlacement": () => (/* binding */
PredictedPlacement),
/* harmony export */ "default": () => (/* binding */ ObjectManager)
/* harmony export */ });
/* harmony import */ var _data_moomoo_config__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var
_features_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../features/modules/building/AntiTrap */
"./frontend/src/features/modules/building/AntiTrap.ts");
/* harmony import */ var _util_AlghoritmUtil__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../util/AlghoritmUtil */
"./frontend/src/util/AlghoritmUtil.ts");
/* harmony import */ var _util_ArrayUtil__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../util/ArrayUtil */ "./frontend/src/util/ArrayUtil.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_type_GridSet__WEBPACK_IMPORTED_MODULE_7__ =
__webpack_require__(/*! ../util/type/GridSet */
"./frontend/src/util/type/GridSet.ts");
/* harmony import */ var _util_type_SidArray__WEBPACK_IMPORTED_MODULE_8__ =
__webpack_require__(/*! ../util/type/SidArray */
"./frontend/src/util/type/SidArray.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_9__ =
__webpack_require__(/*! ../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_features_modules_building_AntiTrap__WEBPACK
_IMPORTED_MODULE_3__]);
_features_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_3__ =
(__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__)[0];
/**
* @param source[0] position from where the item is placed
* @param source[1] scale of placing entity
* @param source[2] angle at which is the item being placed at
*/
addPlacementAttempt(source, item, timestamp = Date.now()) {
const [position, scale, angle] = source;
const placeOffset = scale + item.scale + (item.placeOffset ?? 0);
const targetPosition = position.clone().directionMove(angle, placeOffset);
if (this.isPositionFree(targetPosition, item.scale)) {
this.predictedPlacements.push(new PredictedPlacement(targetPosition, angle,
item.scale, item.id, timestamp));
}
}
findPlacementArcs(source, item, ignore = []) {
const [position, scale] = source;
const placeOffset = scale + item.scale + (item.placeOffset ?? 0);
const blockingBuildings = this.getGridArrays(position.x, position.y,
placeOffset).filter(x => ignore.indexOf(x) === -1 &&
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(x.position,
position) - x.getPlaceColScale() <= placeOffset + item.scale);
const blockingAngles = [];
for (const building of blockingBuildings) {
const tangentAngle = this.findPlacementTangent(source, building, item, 0);
const buildingAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].polarToCartesian(_util_MathU
til__WEBPACK_IMPORTED_MODULE_6__["default"].getDirection(source[0],
building.position));
const startAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].clampCartesian(buildingAngle
- tangentAngle);
const endAngle =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].clampCartesian(buildingAngle
+ tangentAngle);
blockingAngles.push([startAngle, endAngle]);
}
const allowsCartesian =
_util_AlghoritmUtil__WEBPACK_IMPORTED_MODULE_4__["default"].allowedAnglesFromBlocke
d(blockingAngles);
const mergedCartesian =
_util_AlghoritmUtil__WEBPACK_IMPORTED_MODULE_4__["default"].mergeArcsCartesian(allo
wsCartesian);
return mergedCartesian.length > 0 && mergedCartesian[0] !== undefined ?
_util_ArrayUtil__WEBPACK_IMPORTED_MODULE_5__["default"].mapTupleArray(mergedCartesi
an, _util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].cartesianToPolar) : [];
}
splitPlacement(playerScale, item, angle) {
const splitTangent = this.findSplitTangent(playerScale, item);
return [angle - splitTangent, angle + splitTangent];
}
tryToSplitPlacement(source, angle, item, ignore = []) {
const split = this.splitPlacement(source[1], item, angle);
const ignoredMapped = ignore.map(x => x.sid);
return this.canPlaceObject([...source, split[0]], item, false, ignoredMapped)
&& this.canPlaceObject([...source, split[1]], item, false, ignoredMapped) ? split :
null;
}
findSplitTangent(playerScale, item) {
/*const t = (playerScale + item.scale + (item.placeOffset ?? 0)) ** 2;
return Math.acos((item.scale ** 2 - t * 2 + 5) / (-2 * t));*/
if (obj instanceof
_data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__.PlayerBuilding) {
const predictIndex =
this.predictedPlacements.indexOf(this.predictedPlacements.find(o => o.sid ===
obj.sid));
if (predictIndex > -1) {
this.predictedPlacements.splice(predictIndex, 1);
}
var tmpIndx = this.updateObjects.indexOf(obj);
if (tmpIndx >= 0) {
this.updateObjects.splice(tmpIndx, 1);
}
if (obj.owner.sid !== -1 && !
this.core.playerManager.checkTeam(obj.owner.sid)) {
const myPlayer = this.core.playerManager.myPlayer;
const isCollision =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(myPlayer.serverP
os, obj.position) < myPlayer.scale + obj.getPlaceColScale();
if (obj.type === 15 && isCollision && obj.owner.sid !== myPlayer.sid &&
myPlayer.state.data.trap === obj) {
myPlayer.state.isTrapped = false;
myPlayer.state.data.trap = undefined;
const antiTrap =
this.core.moduleManager.getModule(_features_modules_building_AntiTrap__WEBPACK_IMPO
RTED_MODULE_3__["default"]);
antiTrap.setTrapBroken();
}
}
this.core.moduleManager.onBuildingBreak(obj);
}
/*}*/
}
// HIT OBJECT:
/*hitObj(tmpObj: any, tmpDir: number) {
for (var p = 0; p < players.length; ++p) {
if (players[p].active) {
if (tmpObj.sentTo[players[p].id]) {*/
/*if (!tmpObj.active) server.send(players[p].id, "12", tmpObj.sid);
else if (players[p].canSee(tmpObj))
server.send(players[p].id, "8", UTILS.fixTo(tmpDir, 1), tmpObj.sid);*/
/*} if (!tmpObj.active && tmpObj.owner == players[p])
players[p].changeItemCount(tmpObj.group.id, -1);
}
}
};*/
// ADD NEW:
add(sid, x, y, dir, s, type, data, owner) {
let tmpObj;
if (owner !== -1) {
const predicted = this.predictedPlacements.find(obj =>
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(obj.position,
new _util_type_Vector__WEBPACK_IMPORTED_MODULE_9__["default"](x, y)) < 8 &&
obj.stats.id === data);
if (predicted) {
// building prediction succeeded, remove item from predictions
this.predictedPlacements.splice(this.predictedPlacements.indexOf(predicted), 1);
}
}
/*tmpObj.sid = sid;
tmpObj.init(x, y, dir, s, type, data, owner);*/
// server function
this.setObjectGrids(tmpObj);
this.updateObjects.push(tmpObj);
if (owner !== -1 && !this.core.playerManager.checkTeam(owner)) {
const myPlayer = this.core.playerManager.myPlayer;
const isCollision =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_6__["default"].getDistance(myPlayer.serverP
os, tmpObj.position) < myPlayer.scale + tmpObj.getPlaceColScale();
const antiTrap =
this.core.moduleManager.getModule(_features_modules_building_AntiTrap__WEBPACK_IMPO
RTED_MODULE_3__["default"]);
if (tmpObj.type === 15 && isCollision && tmpObj.owner.sid !== myPlayer.sid &&
myPlayer.state.data.trap !== tmpObj) {
myPlayer.state.isTrapped = true;
myPlayer.state.data.trap = tmpObj;
antiTrap.initializeTrap(tmpObj);
}
}
}
// DISABLE BY SID:
disableBySid(sid) {
for (var i = 0; i < this.gameObjects.length; ++i) {
if (this.gameObjects[i].sid === sid) {
this.disableObj(this.gameObjects[i]);
break;
}
}
}
// REMOVE ALL FROM PLAYER:
removeAllItems(sid) {
for (var i = 0; i < this.gameObjects.length; ++i) {
const object = this.gameObjects[i];
if (object instanceof
_data_type_GameObject__WEBPACK_IMPORTED_MODULE_2__.PlayerBuilding &&
object.owner.sid === sid) {
this.disableObj(object);
}
}
/*if (server) {
server.broadcast("13", sid);
}*/
}
return tmpLoc;
}
// CHECK IF PLACABLE:
checkItemLocation(x, y, s, sM, indx, ignoreWater, placer) {
/*for (var i = 0; i < this.gameObjects.length; ++i) {
var blockS = (this.gameObjects[i].blocker?
this.gameObjects[i].blocker:this.gameObjects[i].getScale(sM,
this.gameObjects[i].isItem));
if (this.gameObjects[i].active && util.getDistance(x, y,
this.gameObjects[i].x,
this.gameObjects[i].y) < (s + blockS))
return false;
}
for (const object of this.getGridArrays(x, y, 500).flat(1)) {
const block = object.blocker ? object.blocker : object.getScale(sM,
object.isItem);
}
player.dmgOverTime.dmg = other.pDmg;
player.dmgOverTime.time = 5;
player.dmgOverTime.doer = other.owner;
}*/
/*if (player.colDmg && other.health) {
if (other.changeHealth(-player.colDmg)) this.disableObj(other);
this.hitObj(other, UTILS.getDirection(player.x, player.y, other.x, other.y));
}*/
/*}
} else if (other.trap/* && !player.noTrap*/ /* && other.owner != player && !
(other.owner &&
other.owner.team && other.owner.team
== player.team)) {
player.lockMove = true;
other.hideFromEnemy = false;
} else if (other.boostSpeed) {
player.xVel += (delta *
other.boostSpeed * (other.weightM||1)) * Math.cos(other.dir);
player.yVel += (delta *
other.boostSpeed * (other.weightM||1)) * Math.sin(other.dir);
} else if (other.healCol) {
player.healCol = other.healCol;
} else if (other.teleport) {
player.x = util.randInt(0,
config.mapScale);
player.y = util.randInt(0,
config.mapScale);
}
if (other.zIndex > player.zIndex)
player.zIndex = other.zIndex;
return true;
}
}
return false;
}*/
/***/ }),
/***/ "./frontend/src/manager/PlayerManager.ts":
/*!***********************************************!*\
!*** ./frontend/src/manager/PlayerManager.ts ***!
\***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ PlayerManager)
/* harmony export */ });
/* harmony import */ var _data_type_Player__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/type/Player */
"./frontend/src/data/type/Player.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_type_SidArray__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../util/type/SidArray */
"./frontend/src/util/type/SidArray.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
class PlayerManager {
constructor() {
this.playerList = new
_util_type_SidArray__WEBPACK_IMPORTED_MODULE_3__.SidArray();
this.myClan = new _util_type_SidArray__WEBPACK_IMPORTED_MODULE_3__.SidArray();
this.myPlayer = new
_data_type_Player__WEBPACK_IMPORTED_MODULE_0__.ClientPlayer("", -1, "", new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_4__["default"](), 0, 0, 0, 0, 0);
}
spawnPlayer(id, sid, name, position, dir, health, maxHealth, scale, skinColor,
isMyPlayer) {
let player = this.playerList.findBySid(sid);
if (player) {
player.updateData(id, sid, name, position, dir, health, maxHealth, scale,
skinColor);
} else {
if (isMyPlayer) {
player = new
_data_type_Player__WEBPACK_IMPORTED_MODULE_0__.ClientPlayer(id, sid, name,
position, dir, health, maxHealth, scale, skinColor);
this.playerList.unshift(player);
} else {
player = new _data_type_Player__WEBPACK_IMPORTED_MODULE_0__.Player(id, sid,
name, position, dir, health, maxHealth, scale, skinColor);
this.playerList.push(player);
}
}
if (isMyPlayer) {
this.myPlayer = player;
this.myPlayer.alive = true;
this.myPlayer.visible = true;
}
return player;
}
update(delta) {
for (let i = 0; i < this.playerList.length; i++) {
this.playerList[i].inventory.updateReloads(delta);
}
}
tickReset(tickIndex) {
for (let i = 0; i < this.playerList.length; i++) {
const player = this.playerList[i];
if (player.nextAttack + 1 === tickIndex) {
player.nextAttack = 0;
player.swingStreak = 0;
}
player.hasFiredProjectileThisTick = false;
}
}
checkTeam(sid, forSid) {
return false;
}
findTarget() {
return this.playerList.slice(1).sort((a, b) =>
a.serverPos.clone().subtract(this.myPlayer.serverPos).length() -
b.serverPos.clone().subtract(this.myPlayer.serverPos).length())[0];
}
getNearby(positon, distance, ignoreTeam = false) {
return this.playerList.filter((player, index) => /*index !== 0 &&
*/player.visible && (!ignoreTeam || player.team !== this.myPlayer.team) &&
player.serverPos.clone().subtract(positon).length() <= distance);
}
getMeleeThreats() {
return this.playerList.filter((player, index) => index !== 0 && player.visible
&&
_util_MathUtil__WEBPACK_IMPORTED_MODULE_2__["default"].getDistance(player.serverPos
.clone().add(player.velocity),
this.myPlayer.serverPos.clone().add(this.myPlayer.velocity)) <=
Math.max(...player.inventory.weapons.filter(x => x instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__.MeleeWeapon && x !== null).map(x =>
x.stats.range)));
}
getRangedThreats() {
return this.playerList.filter((player, index) => index !== 0 && player.visible
&&
_util_MathUtil__WEBPACK_IMPORTED_MODULE_2__["default"].getDistance(player.serverPos
.clone().add(player.velocity),
this.myPlayer.serverPos.clone().add(this.myPlayer.velocity)) <=
Math.max(...player.inventory.weapons.filter(x => x instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__.RangedWeapon && x !== null).map(x =>
x.stats.range)));
}
getVisible() {
return this.playerList.filter((player, index) => index !== 0 &&
player.visible);
}
getAllVisible() {
return this.playerList.filter(player => player.visible);
}
getVisibleEnemies() {
return this.playerList.filter((player, index) => index !== 0 && player.visible
&& (!player.team || player.team !== this.myPlayer.team));
}
isAnyoneInSight() {
return this.getVisible().length > 0;
}
getEnemiesInRadius(radius) {
return this.getVisible().filter((player, index) => index !== 0 &&
player.visible &&
_util_MathUtil__WEBPACK_IMPORTED_MODULE_2__["default"].getDistance(this.myPlayer.se
rverPos, player.serverPos) <= radius && (!player.team || player.team !==
this.myPlayer.team));
}
isEnemyInRadius(radius) {
return this.getEnemiesInRadius(radius).length > 0;
}
getThreats() {
return this.getMeleeThreats().concat(this.getRangedThreats());
}
}
/***/ }),
/***/ "./frontend/src/manager/ProjectileManager.ts":
/*!***************************************************!*\
!*** ./frontend/src/manager/ProjectileManager.ts ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ ProjectileManager)
/* harmony export */ });
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _data_type_Player__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../data/type/Player */
"./frontend/src/data/type/Player.ts");
/* harmony import */ var _data_type_Projectile__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../data/type/Projectile */
"./frontend/src/data/type/Projectile.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _util_type_SidArray__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../util/type/SidArray */
"./frontend/src/util/type/SidArray.ts");
class ProjectileManager {
constructor(core) {
this.core = core;
this.projectileList = new
_util_type_SidArray__WEBPACK_IMPORTED_MODULE_4__.SidArray();
this.scheduledSpawns = [];
}
scheduleSpawn(position, direction, range, speed, type, layer, sid) {
this.scheduledSpawns.push([position, direction, range, speed, type, layer, sid,
false]);
}
tickSpawnAllScheduled(tick) {
let i = this.scheduledSpawns.length - 1;
while (i >= 0) {
const data = this.scheduledSpawns[i];
this.add(tick, ...data);
this.scheduledSpawns.splice(i, 1);
i--;
}
}
add(spawnTick, position, direction, range, speed, type, layer, sid, despawned) {
let tmpObj;
if ((tmpObj = this.projectileList.findBySid(sid)) !== null) {
this.projectileList.remove(tmpObj);
tmpObj = null;
}
if (!tmpObj) {
const item =
_data_type_Projectile__WEBPACK_IMPORTED_MODULE_2__.projectileList[type];
let owner = null;
let bestDistance = Infinity;
this.core.moduleManager.onProjectileEarlyDespawn(_data_type_Projectile__WEBPACK_IMP
ORTED_MODULE_2__.projectileList[type], position, direction);
}
if (owner instanceof _data_type_Player__WEBPACK_IMPORTED_MODULE_1__.Player)
{
if (tmpObj.type ===
_data_type_Projectile__WEBPACK_IMPORTED_MODULE_2__.Projectiles.TURRET_BULLET.type)
{
owner.inventory.fireTurretGear(this.core.tickEngine.ping);
} else {
const weapon =
owner.inventory.getWeapon(_data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.WeaponSlot
.SECONDARY) ?? owner.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.RangedWeapon ?
owner.inventory.heldItem : null;
if (weapon instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_3__.RangedWeapon && weapon !== null) {
owner.inventory.resetReload(weapon);
} else {
owner.inventory.resetAllRangedReloads();
}
}
owner.hasFiredProjectileThisTick = true;
owner._firedThisTickTempVariable = true;
owner.lastProjectileFired = tmpObj;
}
}
//const enemy = this.core.playerManager.getVisibleEnemies()[0];
//console.log("projectile spawned, will hit enemy in " +
tmpObj.getTimeToHitTarget(enemy.serverPos, enemy.scale));
}
}
remove(sid, range) {
if (this.projectileList.hasSid(sid)) {
//console.log("projectile removed naturally");
const projectile = this.projectileList.findBySid(sid);
if (projectile.owner) projectile.owner.ownedProjectiles.remove(projectile);
this.projectileList.remove(projectile);
} else {
//console.log("projectile removed after spawning");
let i = this.scheduledSpawns.length - 1;
while (i >= 0) {
const projectile = this.scheduledSpawns[i];
if (projectile[6] === sid) {
projectile[7] = true;
//this.scheduledSpawns.splice(i, 1);
break;
}
i--;
}
}
}
getDangerousProjectiles(tickIndex) {
const myPlayer = this.core.playerManager.myPlayer;
let projectiles = [];
for (let i = 0; i < this.projectileList.length; i++) {
const projectile = this.projectileList[i];
if (projectile.owner && this.core.playerManager.checkTeam(projectile.owner
instanceof _data_type_Player__WEBPACK_IMPORTED_MODULE_1__.Player ?
projectile.owner.sid : projectile.owner.owner.sid)) continue;
const hitTime = projectile.getTicksToHitTarget(myPlayer.serverPos,
myPlayer.scale);
if (projectile.canHit(myPlayer.serverPos, myPlayer.scale) && hitTime -
projectile.getTicksExisted(tickIndex) === 0) {
projectiles.push( /*[hitTime, */projectile /*]*/);
}
}
return projectiles;
}
}
/***/ }),
/***/ "./frontend/src/render/BuildingVisualisationModule.ts":
/*!************************************************************!*\
!*** ./frontend/src/render/BuildingVisualisationModule.ts ***!
\************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ BuildingVisualisationModule)
/* harmony export */ });
/* harmony import */ var _data_type_GameObject__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/type/GameObject */
"./frontend/src/data/type/GameObject.ts");
/* harmony import */ var _manager_ObjectManager__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../manager/ObjectManager */
"./frontend/src/manager/ObjectManager.ts");
/* harmony import */ var _RenderManager__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ./RenderManager */
"./frontend/src/render/RenderManager.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_manager_ObjectManager__WEBPACK_IMPORTED_MOD
ULE_1__]);
_manager_ObjectManager__WEBPACK_IMPORTED_MODULE_1__ =
(__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__)[0];
//this.shadows = {};
//this.mouse = new Vector();
load() {
return Promise.resolve();
}
render(delta) {
const camera = this.renderManager.cameraPosition;
const myPlayer = this.core.playerManager.myPlayer;
const objects = this.core.objectManager.getVisibleBuildings(myPlayer.renderPos,
camera).concat(this.core.objectManager.predictedPlacements);
for (let i = 0; i < objects.length; i++) {
const object = objects[i];
const objectRenderPosition =
this.renderManager.mapToContext(this.renderManager.cameraPosition,
object.position).add(object.wiggle);
const isPredicted = object instanceof
_manager_ObjectManager__WEBPACK_IMPORTED_MODULE_1__.PredictedPlacement;
const isNaturalObject = object instanceof
_data_type_GameObject__WEBPACK_IMPORTED_MODULE_0__.NaturalObject;
const isTeamBuilding = object instanceof
_data_type_GameObject__WEBPACK_IMPORTED_MODULE_0__.PlayerBuilding &&
this.core.playerManager.checkTeam(object.owner.sid);
//this.renderManager.context.save();
this.renderManager.context.moveTo(objectRenderPosition.x,
objectRenderPosition.y);
this.renderManager.context.beginPath();
this.renderManager.context.arc(objectRenderPosition.x,
objectRenderPosition.y, object.getScale(), 0, Math.PI * 2);
this.renderManager.context.fillStyle = isPredicted ? "rgba(20, 251, 255,
0.3)" : isNaturalObject ? "rgba(37, 14, 18, 0.3)" : isTeamBuilding ? "rgba(92, 129,
50, 0.3)" : "rgba(129, 53, 50, 0.3)";
this.renderManager.context.fill();
//this.renderManager.context.restore();
/*this.renderManager.context.save();
this.renderManager.context.translate(objectRenderPosition.x,
objectRenderPosition.y);
this.renderManager.context.rotate(object.dir);
this.renderManager.context.drawImage(sprite, sprite.width / -2, sprite.height
/ -2);
this.renderManager.context.restore();*/
}
}
}
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/render/InterfaceModule.ts":
/*!************************************************!*\
!*** ./frontend/src/render/InterfaceModule.ts ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ InterfaceModule)
/* harmony export */ });
class InterfaceModule {
constructor(core, renderManager, position, dimensions) {
this.core = core;
this.renderManager = renderManager;
this.position = position;
this.dimensions = dimensions;
}
}
/***/ }),
/***/ "./frontend/src/render/RenderManager.ts":
/*!**********************************************!*\
!*** ./frontend/src/render/RenderManager.ts ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Renderer": () => (/* binding */ Renderer),
/* harmony export */ "default": () => (/* binding */ RenderManager)
/* harmony export */ });
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! tsee */ "./node_modules/tsee/lib/index.js");
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(tsee__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _data_type_MoomooUtil__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../data/type/MoomooUtil */
"./frontend/src/data/type/MoomooUtil.ts");
/* harmony import */ var _util_MathUtil__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../util/MathUtil */ "./frontend/src/util/MathUtil.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
class Renderer {
constructor(renderManager, core) {
this.renderManager = renderManager;
this.core = core;
}
}
class RenderManager extends tsee__WEBPACK_IMPORTED_MODULE_0__.EventEmitter {
canvasVertices = [new _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"]
(), new _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"]()];
constructor(core, canvas, width, height) {
super();
this.core = core;
this.canvas = canvas;
this.context = canvas.getContext("2d");
this.transformMatrix = new DOMMatrix([1, 0, 0, 1, 0, 0]);
this.defaultMatrix = new DOMMatrixReadOnly([1, 0, 0, 1, 0, 0]);
this.viewport = {
width,
height
};
this.cameraPosition = new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"](14400 / 2, 14400 / 2);
this.staticCamera = new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"](14400 / 2, 14400 / 2);
this.renderers = new Map();
this.interfaceRenderers = new Map();
this.lastRender = 0;
const resizeListener = () => {
//canvas.width = window.innerWidth;
//canvas.height = window.innerHeight;
this.updateTransformMatrix();
//this.context.setTransform(this.transformMatrix);
this.canvasVertices = [this.canvasToContext(this.cameraPosition, 0, 0),
this.canvasToContext(this.cameraPosition, window.innerWidth, window.innerHeight)];
};
resizeListener();
window.addEventListener("resize", resizeListener);
canvas.addEventListener("mousemove", e => this.emit("mousemove", e));
canvas.addEventListener("mousedown", e => this.emit("mousedown", e));
canvas.addEventListener("mouseup", e => this.emit("mouseup", e));
}
updateCamera(delta, targetPosition) {
const distance =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_2__["default"].getDistance(this.cameraPosit
ion, targetPosition);
const direction =
_util_MathUtil__WEBPACK_IMPORTED_MODULE_2__["default"].getDirection(this.cameraPosi
tion, targetPosition);
const speed = distance * 0.01 * delta;
if (distance > 0.05) {
this.cameraPosition.directionMove(direction, speed);
} else {
this.cameraPosition.set(targetPosition);
}
this.staticCamera.set(targetPosition);
this.core.playerManager.playerList.forEach(player => {
if (player.visible) {
if (player.forcePos && !player.renderPos.isNaN()) {
player.renderPos.set(player.serverPos);
} else {
// lerp position
player.dt += delta;
const overTick = Math.min(1.7, player.dt / 170);
/*player.renderPosition.set(
util.lerp(player.clientPosition.x, player.serverPosition.x,
overTick),
util.lerp(player.clientPosition.y, player.serverPosition.y, overTick)
);*/
if (player.lerpPos.isNaN()) player.lerpPos.set(player.serverPos);
player.renderPos = new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"]();
player.renderPos.x =
_data_type_MoomooUtil__WEBPACK_IMPORTED_MODULE_1__.util.lerp(player.lerpPos.x,
player.serverPos.x, overTick);
player.renderPos.y =
_data_type_MoomooUtil__WEBPACK_IMPORTED_MODULE_1__.util.lerp(player.lerpPos.y,
player.serverPos.y, overTick);
//console.log(player.renderPosition.toString(true));
// lerp direction
/*const positionDelta = player.positionTimestamp -
player.lastPositionTimestamp;
const tickDelta = lastTime - player.lastPositionTimestamp;
const ratio = tickDelta / positionDelta;
player.dir = MathHelper.lerpAngle(player.serverDir, player.lastDir,
Math.min(1.2, ratio));*/
}
}
});
}
updateTransformMatrix() {
const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
let scale = Math.max(windowWidth / this.viewport.width, windowHeight /
this.viewport.height);
this.transformMatrix.a = this.transformMatrix.d = scale;
this.transformMatrix.e = (windowWidth - this.viewport.width * scale) / 2;
this.transformMatrix.f = (windowHeight - this.viewport.height * scale) / 2;
}
clear() {
this.context.clearRect(this.canvasVertices[0].x, this.canvasVertices[0].y,
this.canvasVertices[1].x - this.canvasVertices[0].x, this.canvasVertices[1].y -
this.canvasVertices[0].y);
}
render() {
if (!this.core.loaded) return;
const currentMs = Date.now();
const delta = currentMs - this.lastRender;
this.lastRender = currentMs;
const myPlayer = this.core.playerManager.myPlayer;
if (myPlayer && myPlayer.renderPos) {
this.updateCamera(delta, /*new Vector(myPlayer.renderPos.x,
myPlayer.renderPos.y)*/myPlayer.renderPos);
//console.log(myPlayer.renderPos);
}
//this.clear();
this.renderers.forEach(renderer => {
renderer.render(delta);
});
this.interfaceRenderers.forEach(renderer => {
renderer.render(delta);
});
this.core.moduleManager.onRender(delta);
}
async createRenderer(id, rendererClass, core) {
const instance = new rendererClass(this, core);
await instance.load();
this.renderers.set(id, instance);
}
async createInterfaceRenderer(id, rendererClass, core) {
this.interfaceRenderers.set(id, new rendererClass(core, this));
}
createRenderHook() {
this.lastRender = Date.now();
const _ = this;
const originalAnimFrame = window.requestAnimationFrame;
window.requestAnimFrame = window.requestAnimationFrame = function (callback) {
// call moomoo's renderer
const result = originalAnimFrame.call(this, callback);
// then call our renderer
_.render();
// and finally return result from moomoo's renderer
return result;
};
originalAnimFrame(() => this.render());
}
getCameraOffset(camera) {
return camera.clone().subtract(this.viewport.width / 2, this.viewport.height /
2);
}
/**
* Projects given position from the map onto the canvas
*/
mapToContext(camera, param1, param2) {
const offset = this.getCameraOffset(camera);
if (typeof param1 === "object") {
return param1.clone().subtract(offset);
} else {
return new _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"](param1 -
offset.x, param2 - offset.y);
}
}
/**
* Gives mouse map position from the mouse position on canvas
*/
canvasToMap(camera, param1, param2) {
const offset = this.getCameraOffset(camera);
if (typeof param1 === "object") {
return param1.clone().subtract(this.transformMatrix.e,
this.transformMatrix.f).divide(this.transformMatrix.a,
this.transformMatrix.d).add(offset);
} else {
return new _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"]((param1
- this.transformMatrix.e) / this.transformMatrix.a + offset.x, (param2 -
this.transformMatrix.f) / this.transformMatrix.d + offset.y);
}
}
canvasToContext(camera, param1, param2) {
if (typeof param1 === "object") {
return this.mapToContext(camera, this.canvasToMap(camera, param1));
} else {
return this.mapToContext(camera, this.canvasToMap(camera, param1, param2));
}
}
}
/***/ }),
/***/ "./frontend/src/render/interface/PacketCountModule.ts":
/*!************************************************************!*\
!*** ./frontend/src/render/interface/PacketCountModule.ts ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ PacketCountModule)
/* harmony export */ });
/* harmony import */ var _util_DrawUtil__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../util/DrawUtil */ "./frontend/src/util/DrawUtil.ts");
/* harmony import */ var
_util_engine_PacketCountEngine__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../util/engine/PacketCountEngine */
"./frontend/src/util/engine/PacketCountEngine.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _InterfaceModule__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../InterfaceModule */
"./frontend/src/render/InterfaceModule.ts");
_util_DrawUtil__WEBPACK_IMPORTED_MODULE_0__["default"].progressBar(this.renderManag
er.context, packetPercent, position.x, position.y, this.dimensions.x,
this.dimensions.y, "#ff0004", "#474232", Math.round(packetPercent * 100) + "%",
"#ffffff", "18px Hammersmith One");
}
}
/***/ }),
/***/ "./frontend/src/render/interface/PacketGraphModule.ts":
/*!************************************************************!*\
!*** ./frontend/src/render/interface/PacketGraphModule.ts ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ PacketGraphModule)
/* harmony export */ });
/* harmony import */ var _util_DrawUtil__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../util/DrawUtil */ "./frontend/src/util/DrawUtil.ts");
/* harmony import */ var
_util_engine_PacketCountEngine__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../util/engine/PacketCountEngine */
"./frontend/src/util/engine/PacketCountEngine.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _InterfaceModule__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../InterfaceModule */
"./frontend/src/render/InterfaceModule.ts");
_util_DrawUtil__WEBPACK_IMPORTED_MODULE_0__["default"].graph(this.renderManager.con
text, position.x, position.y, this.dimensions.x, this.dimensions.y,
this.graphValues,
_util_engine_PacketCountEngine__WEBPACK_IMPORTED_MODULE_1__.PacketCountEngine.PACKE
T_LIMIT, 20, "#ffffff", 2, "#ffffff", 4, this.core.packetEngine.stats_pps_graph,
"16px Hammersmith One", 16, true);
}
}
/***/ }),
/***/ "./frontend/src/socket/Connection.ts":
/*!*******************************************!*\
!*** ./frontend/src/socket/Connection.ts ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "connection": () => (/* binding */ connection),
/* harmony export */ "inject": () => (/* binding */ inject)
/* harmony export */ });
/* harmony import */ var error_stack_parser__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! error-stack-parser */
"./node_modules/error-stack-parser/error-stack-parser.js");
/* harmony import */ var error_stack_parser__WEBPACK_IMPORTED_MODULE_0___default
=
/*#__PURE__*/__webpack_require__.n(error_stack_parser__WEBPACK_IMPORTED_MODULE_0__)
;
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _event_EventPacket__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../event/EventPacket */
"./frontend/src/event/EventPacket.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
/* harmony import */ var _packets_Packet__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ./packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _packets_PacketFactory__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ./packets/PacketFactory */
"./frontend/src/socket/packets/PacketFactory.ts");
/***/ "./frontend/src/socket/PacketHandler.ts":
/*!**********************************************!*\
!*** ./frontend/src/socket/PacketHandler.ts ***!
\**********************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PacketHandler": () => (/* binding */ PacketHandler)
/* harmony export */ });
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ./packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../main */ "./frontend/src/main.ts");
/* harmony import */ var _util_type_Vector__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../util/type/Vector */
"./frontend/src/util/type/Vector.ts");
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../util/engine/TickEngine */
"./frontend/src/util/engine/TickEngine.ts");
/* harmony import */ var _util_Logger__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../util/Logger */ "./frontend/src/util/Logger.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_main__WEBPACK_IMPORTED_MODULE_2__]);
_main__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await
__webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.spawnPlayer(playerData[0],
playerData[1], playerData[2], new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"](playerData[3],
playerData[4]), playerData[5], playerData[6], playerData[7], playerData[8],
playerData[9], packet.data[1]);
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.PLAYER_UPDATE:
for (let i = 0; i <
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.playerList.length; i++) {
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.playerList[i].visible
= false;
}
//console.log("tick");
player.inventory.updateReloads(_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.p
ing);
player.nextAttack =
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.getTickIndex(Date.now() -
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.ping * 2 +
player.inventory.weaponSelected.stats.reloadTime) /* + 1*/;
player.swingStreak++;
console.log("swing at tick:",
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.tickIndex, "scheduled next:",
player.nextAttack);
}
if (player._firedThisTickTempVariable) {
player.hasFiredProjectileThisTick = true;
player._firedThisTickTempVariable = false;
}
if (player ===
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer) {
//player.lastTickPosX = player.serverPosX;
//player.lastTickPosY = player.serverPosY;
//player.serverPosX = playerData[1]; // x2
//player.serverPosY = playerData[2]; // y2
//player.serverDir = info[3]; // d2
//player.dt = 0; // dt
//player.dir = playerData[3];
/*player.buildIndex = playerData[4];
player.weaponIndex = playerData[5];
player.weaponVariant = playerData[6];
player.team = playerData[7];
player.isLeader = playerData[8];
player.skinIndex = playerData[9];
player.tailIndex = playerData[10];
player.iconIndex = playerData[11];
player.zIndex = playerData[12];*/
player.visible = true;
playersUpdated.push(player);
}
}
for (let i = 0; i < playersUpdated.length; i++) {
_main__WEBPACK_IMPORTED_MODULE_2__.core.moduleManager.onPlayerUpdate(playersUpdated
[i]);
}
/*setTarget(playerUtil.findTarget(players));
if (target && currentPlayer && Date.now() - lastPath > 500) {
lastPath = Date.now();
pathfinder.path({ x: currentPlayer.x, y: currentPlayer.y }, { x:
currentPlayer.x, y: currentPlayer.y }, { x: target.x, y: target.y});
// @ts-ignore
//if (window.path) connection.send(new Packet(PacketType.CHAT,
[`pathing:vertx=${window.path.length},thr=$
{Math.floor(Math.random()*16).toString(16).slice(1,3)},t=${target.sid}`]));
}*/
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.LOAD_GAME_OBJ:
for (let i = 0; i < packet.data[0].length / 8; i++) {
const data = packet.data[0].slice(i * 8, i * 8 + 8);
// type (data[5]) is null for player buildings but set for natural objects
// id (data[6]) is null for natural objects but is set for player buildings
// owner sid (data[7]) is -1 for natural objects otherwise is set.
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.add(...data);
}
break;
case
_packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.REMOVE_GAME_OBJ:
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.disableBySid(packet.data[0]);
break;
case
_packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.REMOVE_ALL_OBJ:
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.removeAllItems(packet.data[0]
);
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.WIGGLE:
// first argument is ID and second argument is direction
// however packet content is [direction, ID]
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.wiggleObject(packet.data[1],
packet.data[0], _main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.tickIndex + 1);
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.UPDATE_ITEMS:
if (packet.data[1]) {
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.inventory.setWeapons
(packet.data[0]);
} else {
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.inventory.setItems(p
acket.data[0]);
}
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.DEATH:
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.alive = false;
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.inventory.reset();
break;
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.UPDATE_STORE:
{
if (!packet.data[2]) {
if (!packet.data[0])
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.ownedHats.push(packe
t.data[1]);
} else {
if (!packet.data[0])
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.ownedTails.push(pack
et.data[1]);
}
break;
}
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.GATHER_ANIM:
{
const player =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.playerList.findBySid(packet.d
ata[0]);
if (!player) return;
if (player ===
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer) {
//console.log("hit!: skin=" + player.skinIndex + ", tail=" +
player.tailIndex);
}
player._attackedThisTickTempVariable = true;
if (player ===
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer)
player.justStartedAttacking = false;
break;
}
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.HEALTH_UPDATE:
{
const player =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.playerList.findBySid(packet.d
ata[0]);
const newHealth = packet.data[1];
const delta = newHealth - player.health;
const tracker = player.shame;
if (delta < 0) {
tracker.lastDamage =
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.roundToTick(Date.now() -
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.ping,
_util_engine_TickEngine__WEBPACK_IMPORTED_MODULE_5__.TickRoundType.ROUND);
if (Date.now() + _main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.ping
- tracker.lastDamage <= 120) {
if (tracker.points++ >= 8) {
tracker.isClowned = true;
tracker.timer = 30 * 1000;
tracker.points = 0;
}
}
}
if (player ===
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer) {
const player =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer;
const lastPacketHealth = player.packetHealth;
player.packetHealth = newHealth;
if (newHealth < lastPacketHealth) {
player.health -= lastPacketHealth - player.packetHealth;
}
if (player.packetHealth > player.health) {
logger.warn(_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer.health,
"health was not in sync: " + player.health + " -> " + newHealth + ", packet-health:
" + player.packetHealth);
player.health = player.packetHealth;
}
} else {
player.health = newHealth;
if (newHealth <= 0) player.visible = false;
}
break;
}
case
_packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.ADD_PROJECTILE:
{
const data = packet.data;
// 2 ticks because:
// first tick is incremented on tick (projectiles are sent before players)
// second tick is because projectile will actually spawn on the next tick
_main__WEBPACK_IMPORTED_MODULE_2__.core.projectileManager.scheduleSpawn(new
_util_type_Vector__WEBPACK_IMPORTED_MODULE_3__["default"](data[0], data[1]),
data[2], data[3], data[4], data[5], data[6], data[7]);
break;
}
case
_packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.REMOVE_PROJECTILE:
{
_main__WEBPACK_IMPORTED_MODULE_2__.core.projectileManager.remove(packet.data[0],
packet.data[1]);
break;
}
}
}
function processOut(event, meta) {
const packet = event.getPacket();
switch (packet.type) {
case _packets_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType.ATTACK:
{
const myPlayer =
_main__WEBPACK_IMPORTED_MODULE_2__.core.playerManager.myPlayer;
const nextPredictableTick =
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.getNextPredictableTick();
let wasPlace = false;
if (packet.data[0] === 1) {
//console.log("attack");
const heldItem = myPlayer.inventory.heldItem;
if (!(heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_4__.Weapon)) {
wasPlace = true;
if (heldItem.group.id === 0) {
if (myPlayer.health < 100) {
myPlayer.shame.lastDamage = -1;
myPlayer.health = Math.min(myPlayer.health + heldItem.healAmount,
100);
myPlayer.inventory.heldItem = myPlayer.inventory.weaponSelected;
}
return;
}
const blocking =
_main__WEBPACK_IMPORTED_MODULE_2__.core.objectManager.getBlockingBuildings([myPlaye
r.serverPos, myPlayer.scale, packet.data[1] ?? myPlayer.serverDir], heldItem,
packet.data[2] ?? []);
if (blocking.length === 0) {
myPlayer.inventory.heldItem = myPlayer.inventory.weaponSelected;
//console.log("placed item. new held:", myPlayer.inventory.heldItem);
if (meta) {
event.callback = () => {
meta[1](false);
};
}
} else {
//console.log("blocked", meta);
if (meta) {
event.callback = () => {
meta[1](true);
};
}
}
//myPlayer.nextAttack = core.tickEngine.getTickIndex(Date.now() -
core.tickEngine.ping +
myPlayer.inventory.reloads[myPlayer.inventory.weaponSelected.id]);
/*if (!core.tickEngine.isTickPredictable(core.tickEngine.tickIndex +
1)) {
core.scheduleAction(ActionType.ATTACK, ActionPriority.BIOMEHAT,
nextPredictableTick, [1, packet.data[1]], true);
isAttackScheduled = nextPredictableTick;
}*/
myPlayer.justStartedAttacking = true;
myPlayer.inventory.resetReload(myPlayer.inventory.heldItem);
//return false;
}
}
} else {
if (!
_main__WEBPACK_IMPORTED_MODULE_2__.core.tickEngine.isTickPredictable(_main__WEBPACK
_IMPORTED_MODULE_2__.core.tickEngine.getTickIndex(Date.now() +
myPlayer.inventory.reloads[myPlayer.inventory.weaponSelected.id]))) {
myPlayer.swingStreak = 0;
}
myPlayer.isAttacking = false;
//console.log("stopped attacking");
/*if (isAttackScheduled > -1) {
core.scheduleAction(ActionType.ATTACK, ActionPriority.BIOMEHAT,
isAttackScheduled + 1, [0, packet.data[1]], true);
isAttackScheduled = -1;
}*/
}
/*
var tmpSpeed = UTILS.getDistance(0, 0, this.xVel * delta, this.yVel * delta);
var depth = Math.min(4, Math.max(1, Math.round(tmpSpeed / 40)));
var tMlt = 1 / depth;
for (var i = 0; i < depth; ++i) {
if (this.xVel)
this.x += (this.xVel * delta) * tMlt;
if (this.yVel)
this.y += (this.yVel * delta) * tMlt;
tmpList = objectManager.getGridArrays(this.x, this.y,
this.scale);
for (var x = 0; x < tmpList.length; ++x) {
for (var y = 0; y < tmpList[x].length; ++y) {
if (tmpList[x][y].active)
objectManager.checkCollision(this, tmpList[x][y],
tMlt);
}
}
}
*/
__webpack_async_result__();
} catch(e) { __webpack_async_result__(e); } });
/***/ }),
/***/ "./frontend/src/socket/packets/Packet.ts":
/*!***********************************************!*\
!*** ./frontend/src/socket/packets/Packet.ts ***!
\***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Packet": () => (/* binding */ Packet),
/* harmony export */ "Side": () => (/* binding */ Side)
/* harmony export */ });
/**
* A type alias representing the data contained within a packet
*/
/**
* An enumeration containing the different sides of communication (for conflicting
packets)
*/
var Side;
/**
* A packet of data recieved from or sent to the server
*/
(function (Side) {
Side[Side["ServerBound"] = 0] = "ServerBound";
Side[Side["ClientBound"] = 1] = "ClientBound";
Side[Side["BiDirectional"] = 2] = "BiDirectional";
})(Side || (Side = {}));
class Packet {
constructor(type, data, time = 0) {
this.type = type;
this.data = data;
this.time = time;
}
}
/***/ }),
/***/ "./frontend/src/socket/packets/PacketFactory.ts":
/*!******************************************************!*\
!*** ./frontend/src/socket/packets/PacketFactory.ts ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PacketFactory": () => (/* binding */ PacketFactory),
/* harmony export */ "Side": () => (/* reexport safe */
_Packet__WEBPACK_IMPORTED_MODULE_0__.Side),
/* harmony export */ "packetTypeMapping": () => (/* binding */
packetTypeMapping),
/* harmony export */ "reversePacketTypeMapping": () => (/* binding */
reversePacketTypeMapping)
/* harmony export */ });
/* harmony import */ var _Packet__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ./Packet */ "./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _PacketType__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ./PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var msgpack_lite__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! msgpack-lite */
"./node_modules/msgpack-lite/lib/browser.js");
/**
* A mapping of PacketTypes to their serialized counterparts
*/
/**
* Controls serialization of packets in preparation for exchange, and
deserialization on the destination
*/
class PacketFactory {
/**
* Get an instance of PacketFactory
* @returns {PacketFactory} An instance of PacketFactory
*/
static getInstance() {
return PacketFactory.instance ? PacketFactory.instance : PacketFactory.instance
= new PacketFactory();
}
constructor() {}
/**
* Serializes a Packet to an ArrayBuffer suitable for transmission
* @param packet the packet to serialize
*/
serializePacket(packet) {
if (!
Object.values(_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType).includes(packet.
type)) throw new Error("Packet is missing a type.");
let type;
if (Object.keys(packetTypeMapping).includes(packet.type.toString())) {
type = packetTypeMapping[packet.type].value;
} else {
throw new Error(`Packet type invalid or not implemented: $
{_PacketType__WEBPACK_IMPORTED_MODULE_1__.PacketType[packet.type]}`);
}
try {
return msgpack_lite__WEBPACK_IMPORTED_MODULE_2__.encode([type, packet.data]);
} catch (error) {
throw new Error(`msgpack encountered an error: ${error}`);
}
}
/**
* Deserializes packets for reading
* @param buffer an ArrayBuffer to deserialize
* @param side the recieving side of the packet
*/
deserializePacket(buffer, side, timeStamp = 0) {
let array;
try {
array = msgpack_lite__WEBPACK_IMPORTED_MODULE_2__.decode(new
Uint8Array(buffer));
} catch (error) {
throw new Error("Invalid packet");
}
//if (side === Side.Client && array[0] !== "33" && array[0] !== "5" && array[0]
!== "pp" && array[0] !== "a" && array[0] !== "mm" && array[0] !== "6")
console.log(array);
let packetType;
let mapping = reversePacketTypeMapping.find(mapping => (mapping.side === side
|| mapping.side === _Packet__WEBPACK_IMPORTED_MODULE_0__.Side.BiDirectional) &&
mapping.value === array[0]);
if (mapping) {
return new _Packet__WEBPACK_IMPORTED_MODULE_0__.Packet(mapping.type,
array[1], timeStamp);
} else {
throw new Error(`Failed to deserialize packet because of invalid packet type:
${array[0]}`);
}
}
}
/***/ }),
/***/ "./frontend/src/socket/packets/PacketType.ts":
/*!***************************************************!*\
!*** ./frontend/src/socket/packets/PacketType.ts ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PacketType": () => (/* binding */ PacketType)
/* harmony export */ });
var PacketType;
(function (PacketType) {
PacketType[PacketType["PING"] = 0] = "PING";
PacketType[PacketType["PLAYER_UPDATE"] = 1] = "PLAYER_UPDATE";
PacketType[PacketType["PLAYER_MOVE"] = 2] = "PLAYER_MOVE";
PacketType[PacketType["HEALTH_UPDATE"] = 3] = "HEALTH_UPDATE";
PacketType[PacketType["UPGRADES"] = 4] = "UPGRADES";
PacketType[PacketType["SELECT_ITEM"] = 5] = "SELECT_ITEM";
PacketType[PacketType["LEADERBOARD_UPDATE"] = 6] = "LEADERBOARD_UPDATE";
PacketType[PacketType["ATTACK"] = 7] = "ATTACK";
PacketType[PacketType["UPDATE_STATS"] = 8] = "UPDATE_STATS";
PacketType[PacketType["LOAD_GAME_OBJ"] = 9] = "LOAD_GAME_OBJ";
PacketType[PacketType["PLAYER_START"] = 10] = "PLAYER_START";
PacketType[PacketType["SET_ANGLE"] = 11] = "SET_ANGLE";
PacketType[PacketType["PLAYER_REMOVE"] = 12] = "PLAYER_REMOVE";
PacketType[PacketType["SELECT_UPGRADE"] = 13] = "SELECT_UPGRADE";
PacketType[PacketType["GATHER_ANIM"] = 14] = "GATHER_ANIM";
PacketType[PacketType["AUTO_ATK"] = 15] = "AUTO_ATK";
PacketType[PacketType["WIGGLE"] = 16] = "WIGGLE";
PacketType[PacketType["CLAN_CREATE"] = 17] = "CLAN_CREATE";
PacketType[PacketType["LEAVE_CLAN"] = 18] = "LEAVE_CLAN";
PacketType[PacketType["CLAN_REQ_JOIN"] = 19] = "CLAN_REQ_JOIN";
PacketType[PacketType["CLAN_ACC_JOIN"] = 20] = "CLAN_ACC_JOIN";
PacketType[PacketType["CLAN_KICK"] = 21] = "CLAN_KICK";
PacketType[PacketType["ITEM_BUY"] = 22] = "ITEM_BUY";
PacketType[PacketType["UPDATE_AGE"] = 23] = "UPDATE_AGE";
PacketType[PacketType["UPDATE_ITEMS"] = 24] = "UPDATE_ITEMS";
PacketType[PacketType["CHAT"] = 25] = "CHAT";
PacketType[PacketType["CLAN_DEL"] = 26] = "CLAN_DEL";
PacketType[PacketType["PLAYER_SET_CLAN"] = 27] = "PLAYER_SET_CLAN";
PacketType[PacketType["SET_CLAN_PLAYERS"] = 28] = "SET_CLAN_PLAYERS";
PacketType[PacketType["CLAN_ADD"] = 29] = "CLAN_ADD";
PacketType[PacketType["MINIMAP"] = 30] = "MINIMAP";
PacketType[PacketType["UPDATE_STORE"] = 31] = "UPDATE_STORE";
PacketType[PacketType["DISCONN"] = 32] = "DISCONN";
PacketType[PacketType["WINDOW_FOCUS"] = 33] = "WINDOW_FOCUS";
PacketType[PacketType["PLAYER_ADD"] = 34] = "PLAYER_ADD";
PacketType[PacketType["SPAWN"] = 35] = "SPAWN";
PacketType[PacketType["IO_INIT"] = 36] = "IO_INIT";
PacketType[PacketType["ANIMALS_UPDATE"] = 37] = "ANIMALS_UPDATE";
PacketType[PacketType["CLAN_LIST"] = 38] = "CLAN_LIST";
PacketType[PacketType["BUY_AND_EQUIP"] = 39] = "BUY_AND_EQUIP";
PacketType[PacketType["DEATH"] = 40] = "DEATH";
PacketType[PacketType["CLAN_NOTIFY_SERVER"] = 41] = "CLAN_NOTIFY_SERVER";
PacketType[PacketType["CLAN_NOTIFY_CLIENT"] = 42] = "CLAN_NOTIFY_CLIENT";
PacketType[PacketType["DAMAGE_TEXT"] = 43] = "DAMAGE_TEXT";
PacketType[PacketType["JOIN_REQUEST"] = 44] = "JOIN_REQUEST";
PacketType[PacketType["REMOVE_GAME_OBJ"] = 45] = "REMOVE_GAME_OBJ";
PacketType[PacketType["REMOVE_ALL_OBJ"] = 46] = "REMOVE_ALL_OBJ";
PacketType[PacketType["UPDATE_PLACE_LIMIT"] = 47] = "UPDATE_PLACE_LIMIT";
PacketType[PacketType["ADD_PROJECTILE"] = 48] = "ADD_PROJECTILE";
PacketType[PacketType["REMOVE_PROJECTILE"] = 49] = "REMOVE_PROJECTILE";
PacketType[PacketType["TURRET_SHOOT"] = 50] = "TURRET_SHOOT";
PacketType[PacketType["ANIMAL_ANIMATION"] = 51] = "ANIMAL_ANIMATION";
})(PacketType || (PacketType = {}));
/***/ }),
/***/ "./frontend/src/util/AlghoritmUtil.ts":
/*!********************************************!*\
!*** ./frontend/src/util/AlghoritmUtil.ts ***!
\********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/**
* Credits: ChatGPT with Zaary's assistance
* https://sharegpt.com/c/3b3zXhq
*/
function allowedAnglesFromBlocked(blocked) {
const allowed = [];
const n = blocked.length;
let start = 0;
let end = 2 * Math.PI;
let blockStart, blockEnd;
/**
* Credits: Base by ChatGPT, 2 * PI wrapping added by Zaary
*/
function mergeArcsCartesian(arcs) {
// sort arcs by starting angle in ascending order
arcs.sort((a, b) => a[0] - b[0]);
// initialize merged arcs with the first arc in the sorted array
let mergedArcs = [arcs[0]];
// check if the current arc overlaps with the last merged arc
if (arcs[i][0] <= lastArc[1]) {
// update the end angle of the last merged arc to be the maximum of the two
end angles
lastArc[1] = Math.max(lastArc[1], arcs[i][1]);
/***/ }),
/***/ "./frontend/src/util/ArrayUtil.ts":
/*!****************************************!*\
!*** ./frontend/src/util/ArrayUtil.ts ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
function mapTupleArray(array, mapFunc) {
return array.map(value => [mapFunc(value[0]), mapFunc(value[1])]);
}
/*
UNFINISHED!
*/
/***/ }),
/***/ "./frontend/src/util/DrawUtil.ts":
/*!***************************************!*\
!*** ./frontend/src/util/DrawUtil.ts ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _MathUtil__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ./MathUtil */ "./frontend/src/util/MathUtil.ts");
/***/ }),
/***/ "./frontend/src/util/Logger.ts":
/*!*************************************!*\
!*** ./frontend/src/util/Logger.ts ***!
\*************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
var Level;
(function (Level) {
Level[Level["LOG"] = 0] = "LOG";
Level[Level["INFO"] = 1] = "INFO";
Level[Level["WARN"] = 2] = "WARN";
Level[Level["ERROR"] = 3] = "ERROR";
Level[Level["TRACE"] = 4] = "TRACE";
})(Level || (Level = {}));
const LogLevel = new Map();
LogLevel.set(Level.LOG, "LOG");
LogLevel.set(Level.INFO, "INFO");
LogLevel.set(Level.WARN, "WARN");
LogLevel.set(Level.ERROR, "ERROR");
LogLevel.set(Level.TRACE, "TRACE");
function format(loggerId, level, ...msg) {
return [`NVR | ${loggerId}: [${LogLevel.get(level)}] ->`].concat(msg);
}
class Logger {
constructor(arg0, arg1) {
this.id = typeof arg0 == "string" ? arg0 : arg1;
this.profilers = new Map();
this.console = typeof arg0 == "object" ? arg0 : window.console;
}
log(...message) {
this.console.log(...format(this.id, Level.LOG, ...message));
}
info(...message) {
this.console.info(...format(this.id, Level.INFO, ...message));
}
warn(...message) {
this.console.warn(...format(this.id, Level.WARN, ...message));
}
error(...message) {
this.console.error(...format(this.id, Level.ERROR, ...message));
}
trace(...message) {
this.console.trace(...format(this.id, Level.TRACE, ...message));
}
profile(profileId, ...message) {
if (this.profilers.has(profileId)) {
this.console.log(...format(this.id, Level.LOG, ...message, `(took $
{Date.now() - this.profilers.get(profileId)} ms)`));
this.profilers.delete(profileId);
} else {
this.profilers.set(profileId, Date.now());
}
}
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Logger);
/***/ }),
/***/ "./frontend/src/util/MathUtil.ts":
/*!***************************************!*\
!*** ./frontend/src/util/MathUtil.ts ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
function randInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function randFloat(min, max) {
return Math.random() * (max - min) + min;
}
function lerp(value1, value2, amount) {
return value1 + (value2 - value1) * amount;
}
function decel(val, cel) {
if (val > 0) val = Math.max(0, val - cel);else if (val < 0) val = Math.min(0, val
+ cel);
return val;
}
function getDistance(pos1, pos2) {
return pos1.clone().subtract(pos2).length();
}
function getDirection(from, to) {
return Math.atan2(to.y - from.y, to.x - from.x);
}
function getAngleDist(a, b) {
var p = Math.abs(b - a) % (Math.PI * 2);
return p > Math.PI ? Math.PI * 2 - p : p;
}
function lerpAngle(value1, value2, amount) {
var difference = Math.abs(value2 - value1);
if (difference > Math.PI) {
if (value1 > value2) {
value2 += Math.PI * 2;
} else {
value1 += Math.PI * 2;
}
}
var value = value2 + (value1 - value2) * amount;
if (value >= 0 && value <= Math.PI * 2) return value;
return value % Math.PI * 2;
}
function combineColors(base, added) {
let mix = [];
mix[3] = 1 - (1 - added[3]) * (1 - base[3]); // alpha
mix[0] = Math.round(added[0] * added[3] / mix[3] + base[0] * base[3] * (1 -
added[3]) / mix[3]); // red
mix[1] = Math.round(added[1] * added[3] / mix[3] + base[1] * base[3] * (1 -
added[3]) / mix[3]); // green
mix[2] = Math.round(added[2] * added[3] / mix[3] + base[2] * base[3] * (1 -
added[3]) / mix[3]); // blue
return mix;
}
function averageOfArray(array) {
return sumArray(array) / array.length;
}
function sumArray(array) {
let a = 0;
for (let i = 0; i < array.length; i++) a += array[i];
return a;
}
function roundTo(value, places) {
const placesMlt = places * 10;
return Math.round(value * placesMlt) / placesMlt;
}
function lineSpan(origin, p1, p2) {
var AB = Math.sqrt(Math.pow(origin.x - p1.x, 2) + Math.pow(origin.y - p1.y, 2));
var BC = Math.sqrt(Math.pow(origin.x - p2.x, 2) + Math.pow(origin.y - p2.y, 2));
var AC = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
return Math.acos((BC * BC + AB * AB - AC * AC) / (2 * BC * AB));
}
function lineInRectMooMoo(recX, recY, recX2, recY2, x1, y1, x2, y2) {
var minX = x1;
var maxX = x2;
if (x1 > x2) {
minX = x2;
maxX = x1;
}
if (maxX > recX2) maxX = recX2;
if (minX < recX) minX = recX;
if (minX > maxX) return false;
var minY = y1;
var maxY = y2;
var dx = x2 - x1;
if (Math.abs(dx) > 0.0000001) {
var a = (y2 - y1) / dx;
var b = y1 - a * x1;
minY = a * minX + b;
maxY = a * maxX + b;
}
if (minY > maxY) {
var tmp = maxY;
maxY = minY;
minY = tmp;
}
if (maxY > recY2) maxY = recY2;
if (minY < recY) minY = recY;
if (minY > maxY) return false;
return true;
}
function getTangentSpanIntersectionRadius(distanceToTarget, targetScale,
intersectionRadius) {
return Math.acos((targetScale ** 2 - distanceToTarget ** 2 - intersectionRadius
** 2) / (-2 * distanceToTarget * intersectionRadius));
}
function getTangentSpanSimple(distanceToTarget, targetScale) {
const tangentDistance = Math.sqrt(Math.pow(distanceToTarget, 2) -
Math.pow(targetScale, 2));
return Math.atan(targetScale / tangentDistance);
}
function willTargetBeHit(source, targetPosition, targetSize, shotAngle) {
// Calculate the distance from the observer to the target
const distanceToTarget = getDistance(source, targetPosition);
// Calculate the difference between the shot angle and the angle to the target
const angleDifference = getAngleDist(angleToTarget, shotAngle);
// Check if the shot angle is within the tangent span of the target
return angleDifference <= tangentSpan;
}
// no one knows how much these functions mean to me me (i literally spent several
hours figuring this shit out and raging multiple times)
function polarToCartesian(angle) {
return angle < 0 && angle > -Math.PI ? -angle : Math.PI * 2 - angle;
}
function cartesianToPolar(angle) {
return angle > Math.PI ? Math.PI * 2 - angle : -angle;
}
function clampPolar(angle) {
return angle >= -Math.PI && angle <= Math.PI ? angle : angle < -Math.PI ? angle +
2 * Math.PI : angle - 2 * Math.PI;
}
function clampCartesian(angle) {
return angle >= 0 && angle <= 2 * Math.PI ? angle : angle < 0 ? angle + 2 *
Math.PI : angle - 2 * Math.PI;
}
function middleOfCartesianArc(angles) {
let startAngle = angles[0];
let endAngle = angles[1];
if (endAngle < startAngle) {
endAngle += 2 * Math.PI;
}
return (startAngle + (endAngle - startAngle) / 2) % (Math.PI * 2);
}
/*
function angleToUnitCircle(angle: number) {
var unitAngle;
if (angle >= 0 && angle <= Math.PI) {
unitAngle = angle;
} else {
unitAngle = Math.PI * -2 + angle;
}
return unitAngle;
}
/***/ }),
/***/ "./frontend/src/util/RecognitionUtil.ts":
/*!**********************************************!*\
!*** ./frontend/src/util/RecognitionUtil.ts ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
function isLegit(player) {
return false;
}
function canInstakill(player) {
return true;
/*const primary = player.inventory.getWeapon(WeaponSlot.PRIMARY)!;
const secondary = player.inventory.getWeapon(WeaponSlot.SECONDARY) ?? (primary
=== Weapons.SHORT_SWORD || primary === Weapons.POLEARM ? Weapons.MUSKET :
Weapons.GREAT_HAMMER);
return (isLegit(player) || (player.seenHats.has(12) &&
player.seenTails.has(11))) && primary.stats.dmg * 1.5 + secondary.stats.dmg + 25 >=
100;*/
}
/***/ }),
/***/ "./frontend/src/util/StringUtil.ts":
/*!*****************************************!*\
!*** ./frontend/src/util/StringUtil.ts ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
//const validVariableCharRegex = "[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\
u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\
u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\
u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\
u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\
u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\
u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\
u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\
u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\
u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\
u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\
u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\
u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\
u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\
u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\
u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\
u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\
u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\
u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\
u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\
u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\
u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\
u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\
u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\
u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\
u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\
u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\
u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\
u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\
u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\
u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\
u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\
u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\
u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\
u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\
u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\
u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\
u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\
u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\
u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\
u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\
u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\
ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\
ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\
ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\
ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\
uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\
uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\
uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\
ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\
ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\
ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\
uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-
Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\
u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\
u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\
u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\
u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\
u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\
u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\
u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\
u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\
u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\
u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\
u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\
u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\
u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\
u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\
u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\
u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\
u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\
u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\
u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\
u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\
u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\
u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\
u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\
u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\
u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\
u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\
u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\
u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\
u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\
u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\
u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\
u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\
u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\
u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\
u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\
u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\
u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\
u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\
u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\
u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\
ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\
ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\
ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\
ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\
uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\
uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\
uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\
ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\
ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\
ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\
ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\
uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\
u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\
u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\
u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\
u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\
u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\
u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\
u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\
u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\
u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\
u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\
u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\
u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\
u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\
u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\
u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\
u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\
u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\
u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\
u17b4-\u17d3\u17dd\u17e0-\u17e9\
u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\
u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\
u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\
u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\
u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\
u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\
u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\
ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\
ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\
uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\
uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\
ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]";
function randomString(length) {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (var i = 0; i < length; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
function escapeRegex(string) {
return string.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&');
}
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
randomString,
escapeRegex
//validVariableCharRegex
});
/***/ }),
/***/ "./frontend/src/util/engine/InteractionEngine.ts":
/*!*******************************************************!*\
!*** ./frontend/src/util/engine/InteractionEngine.ts ***!
\*******************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__,
__webpack_async_result__) => { try {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ InteractionEngine)
/* harmony export */ });
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! tsee */ "./node_modules/tsee/lib/index.js");
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(tsee__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var
_features_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../features/modules/building/AntiTrap */
"./frontend/src/features/modules/building/AntiTrap.ts");
/* harmony import */ var
_features_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../features/modules/player/AutoHat */
"./frontend/src/features/modules/player/AutoHat.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../../socket/packets/Packet */
"./frontend/src/socket/packets/Packet.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(/*! ../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
var __webpack_async_dependencies__ =
__webpack_handle_async_dependencies__([_features_modules_building_AntiTrap__WEBPACK
_IMPORTED_MODULE_2__,
_features_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_3__]);
([_features_modules_building_AntiTrap__WEBPACK_IMPORTED_MODULE_2__,
_features_modules_player_AutoHat__WEBPACK_IMPORTED_MODULE_3__] =
__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() :
__webpack_async_dependencies__);
class InteractionEngine extends tsee__WEBPACK_IMPORTED_MODULE_0__.EventEmitter {
constructor(core) {
super();
this.core = core;
this.autoHatModule =
core.moduleManager.getModule(_features_modules_player_AutoHat__WEBPACK_IMPORTED_MOD
ULE_3__["default"]);
this.antiTrapModule =
core.moduleManager.getModule(_features_modules_building_AntiTrap__WEBPACK_IMPORTED_
MODULE_2__["default"]);
}
safePlacement(item, angle) {
const canPlace =
this.core.objectManager.canPlaceObject([this.core.playerManager.myPlayer.serverPos,
35, angle], item, true);
if (canPlace) {
this.core.objectManager.addPlacementAttempt([this.core.playerManager.myPlayer.serve
rPos, 35, angle], item);
this.vanillaPlaceItem(item, angle);
}
}
safePlacementIgnoring(item, angle, ignore) {
const canPlace =
this.core.objectManager.canPlaceObject([this.core.playerManager.myPlayer.serverPos,
35, angle], item, true, [ignore.sid]);
if (canPlace) {
this.core.objectManager.addPlacementAttempt([this.core.playerManager.myPlayer.serve
rPos, 35, angle], item);
this.vanillaPlaceItem(item, angle, [ignore.sid]);
}
}
vanillaPlacementAddingPrediction(item, angle) {
this.core.objectManager.addPlacementAttempt([this.core.playerManager.myPlayer.serve
rPos, 35, angle], item);
this.vanillaPlaceItem(item, angle);
}
vanillaUseFoodItem(item, isLastHeal) {
const myPlayer = this.core.playerManager.myPlayer;
const wasAttacking = myPlayer.isAttacking;
const oldAngle = myPlayer.dir;
const lastHeldWasWeapon = myPlayer.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__.Weapon;
const lastHeldItem = myPlayer.inventory.heldItem.id;
if (lastHeldWasWeapon || lastHeldItem !== item.id) {
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.SELECT_ITEM, [item.id, false]));
}
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.ATTACK, [1, null]));
if (isLastHeal && (wasAttacking || this.core.mstate.mouseHeld) ||
this.antiTrapModule.isBreaking)
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.ATTACK, [1, oldAngle]));
}
vanillaPlaceItem(item, angle, ignoredSids) {
const myPlayer = this.core.playerManager.myPlayer;
const wasAttacking = myPlayer.isAttacking;
const oldAngle = myPlayer.dir;
const lastHeld = myPlayer.inventory.heldItem.id;
const lastHeldWasWeapon = myPlayer.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_1__.Weapon;
this.autoHatModule.isPlacing = true;
if (lastHeldWasWeapon || lastHeld !== item.id) {
//console.log(lastHeld, lastHeldWasWeapon);
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.SELECT_ITEM, [item.id, false]));
}
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.sendWMeta(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.ATTACK, [1, angle]), [[], wasBlocked =>
{
//if (wasBlocked) {
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.SELECT_ITEM, [lastHeld,
lastHeldWasWeapon]));
this.autoHatModule.isPlacing = false;
//}
//console.log(wasAttacking, this.core.mstate.mouseHeld);
if (wasAttacking || this.core.mstate.mouseHeld ||
this.antiTrapModule.isBreaking) {
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.ATTACK, [1, oldAngle]));
} else if (this.core.lastActionState.attack === 1) {
_socket_Connection__WEBPACK_IMPORTED_MODULE_4__.connection.send(new
_socket_packets_Packet__WEBPACK_IMPORTED_MODULE_5__.Packet(_socket_packets_PacketTy
pe__WEBPACK_IMPORTED_MODULE_6__.PacketType.ATTACK, [0, oldAngle]));
}
}]);
/***/ }),
/***/ "./frontend/src/util/engine/PacketCountEngine.ts":
/*!*******************************************************!*\
!*** ./frontend/src/util/engine/PacketCountEngine.ts ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "PacketCountEngine": () => (/* binding */ PacketCountEngine)
/* harmony export */ });
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! tsee */ "./node_modules/tsee/lib/index.js");
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(tsee__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _Logger__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../Logger */ "./frontend/src/util/Logger.ts");
constructor(core) {
super();
this.started = false;
this.timer = PacketCountEngine.TIMER_MAX;
this.packetCount = 1;
this.s60Counter = 0;
this.packetCount2 = 1;
this.stats_pps_graph = [];
const start = () => {
this.timer = PacketCountEngine.TIMER_MAX;
this.packetCount = 1;
this.s60Counter = 0;
this.packetCount2 = 1;
core.on("update", delta => {
if (this.timer - delta <= PacketCountEngine.TIMER_MAX * -0.5) {
this.packetCount = 0;
this.timer = PacketCountEngine.TIMER_MAX - delta %
PacketCountEngine.TIMER_MAX;
logger.log(`compensated for delta excession (${delta} ms)`);
this.s60Counter += Math.floor(delta / 1000);
} else {
this.timer -= delta;
}
if (this.timer <= -PacketCountEngine.SAFETY) {
const excession = this.timer * -1 % PacketCountEngine.TIMER_MAX -
PacketCountEngine.SAFETY;
this.timer = PacketCountEngine.TIMER_MAX - excession;
this.stats_pps_graph.push(this.packetCount);
if (this.stats_pps_graph.length > 60) this.stats_pps_graph.shift();
this.packetCount = 0;
this.s60Counter++;
}
if (this.s60Counter >= 60) {
this.s60Counter -= 60;
this.packetCount2 = 0;
}
});
};
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.on("packetsend",
event => {
if (!this.started) this.started = true, start();
//if (event.getPacket().type != PacketType.SPAWN) return event.cancel();
this.packetCount++;
this.packetCount2++;
});
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.on("ready", (
/*event: EventPacket*/
) => {
/*if (event.getPacket().type === PacketType.IO_INIT) */ //start();
});
_socket_Connection__WEBPACK_IMPORTED_MODULE_1__.connection.on("close", () => {
console.log("diconnected with pps:", this.packetCount, "ppm:",
this.packetCount2);
});
}
handlePing(ping) {
if (ping > PacketCountEngine.SAFETY && ping - PacketCountEngine.SAFETY < 10 &&
ping < 1e3) {
PacketCountEngine.SAFETY = ping;
}
}
get availableTotal() {
return Math.max(PacketCountEngine.PACKET_LIMIT - this.packetCount, 0);
}
}
/***/ }),
/***/ "./frontend/src/util/engine/TickEngine.ts":
/*!************************************************!*\
!*** ./frontend/src/util/engine/TickEngine.ts ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "TickEngine": () => (/* binding */ TickEngine),
/* harmony export */ "TickRoundType": () => (/* binding */ TickRoundType)
/* harmony export */ });
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! tsee */ "./node_modules/tsee/lib/index.js");
/* harmony import */ var tsee__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(tsee__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../data/moomoo/config */
"./frontend/src/data/moomoo/config.ts");
/* harmony import */ var _data_moomoo_items__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(/*! ../../data/moomoo/items */
"./frontend/src/data/moomoo/items.ts");
/* harmony import */ var _socket_Connection__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(/*! ../../socket/Connection */
"./frontend/src/socket/Connection.ts");
/* harmony import */ var _socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(/*! ../../socket/packets/PacketType */
"./frontend/src/socket/packets/PacketType.ts");
/* harmony import */ var _MathUtil__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(/*! ../MathUtil */ "./frontend/src/util/MathUtil.ts");
let TickRoundType;
(function (TickRoundType) {
TickRoundType[TickRoundType["ROUND"] = 0] = "ROUND";
TickRoundType[TickRoundType["FLOOR"] = 1] = "FLOOR";
TickRoundType[TickRoundType["CEIL"] = 2] = "CEIL";
})(TickRoundType || (TickRoundType = {}));
function getStandardDeviation(array) {
const n = array.length;
const mean = array.reduce((a, b) => a + b, 0) / n;
return Math.sqrt(array.map(x => Math.pow(x - mean, 2)).reduce((a, b) => a + b, 0)
/ n);
}
const roundArray = [Math.round, Math.floor, Math.ceil];
class TickEngine extends tsee__WEBPACK_IMPORTED_MODULE_0__.EventEmitter {
static TICK_DELTA = 1000 /
_data_moomoo_config__WEBPACK_IMPORTED_MODULE_1__["default"].serverUpdateRate;
static HAT_LOOP = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49];
constructor(core) {
super();
this.tickIndex = -1;
this.pingQueue = [];
this.lastPing = 0;
this.ping = 0;
this.pingStd = 0;
this.firstPinged = false;
this.firstPonged = false;
this.lastTick = 0;
this.predictionTick = -1;
this.nextPreTick = 0;
this.nextPostTick = 0;
this.futureProgress = 0;
this.lastPredictedPre = -1;
this.lastPredictedPost = -1;
this.pings = [];
this.deltas = [];
let canReceivePing = false;
_socket_Connection__WEBPACK_IMPORTED_MODULE_3__.connection.on("packetsend",
event => {
if (event.getPacket().type ==
_socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_4__.PacketType.PING) {
if (!canReceivePing) return;
this.pingQueue.push(Date.now());
this.lastPing = Date.now();
}
});
_socket_Connection__WEBPACK_IMPORTED_MODULE_3__.connection.on("packetreceive",
event => {
const packet = event.getPacket();
if (packet.type ==
_socket_packets_PacketType__WEBPACK_IMPORTED_MODULE_4__.PacketType.PING) {
//if (!this.firstPonged) this.firstPonged = true;
this.nextPreTick++; /*Math.ceil(futureProgress);*/
}
}
// post tick
const postOffset = deltaStd / TickEngine.TICK_DELTA;
if (futureProgress - postOffset >= this.nextPostTick) {
if (futureProgress - postOffset - this.nextPostTick >= 1) return
this.nextPostTick = Math.ceil(futureProgress);
if (this.nextPostTick > this.lastPredictedPost) {
const predictedTickIndex = this.nextPostTick;
this.lastPredictedPost = predictedTickIndex;
this.emit("posttick", predictedTickIndex);
this.nextPostTick++;
}
}
/***/ }),
/***/ "./frontend/src/util/processor/MovementProcessor.ts":
/*!**********************************************************!*\
!*** ./frontend/src/util/processor/MovementProcessor.ts ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ MovementProcessor)
/* harmony export */ });
/* harmony import */ var _data_type_Weapon__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(/*! ../../data/type/Weapon */
"./frontend/src/data/type/Weapon.ts");
/* harmony import */ var _MathUtil__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../MathUtil */ "./frontend/src/util/MathUtil.ts");
// dont use this, its just copy paste from my very old mod, needs veeery big
adjustments
class MovementProcessor {
static CONFIG = {
playerDecel: 0.993,
snowBiomeTop: 2400,
snowSpeed: 0.75,
mapScale: 14400,
riverHeight: 724,
waterPush: 0.0011,
playerSpeed: 0.0016
};
constructor(player) {
this.player = player;
this.lockMove = false;
this.slowMult = 1;
}
possibleMoveDirectionsKeyboard() {
return [0, 45, 90, 135, 180, 225, 270, 315].map( /*MathHelper.degToRad*/x => x
* (Math.PI / 180));
}
update(delta) {
this.predict(delta, undefined, this.player.serverPos);
}
// slower
if (this.slowMult < 1) {
this.slowMult += 0.0008 * delta;
if (this.slowMult > 1) {
this.slowMult = 1;
}
}
// move
if (this.lockMove) {
velocity.set(0, 0);
} else {
// base speed multiplier
let speedMult = (this.player.inventory.heldItem instanceof
_data_type_Weapon__WEBPACK_IMPORTED_MODULE_0__.Weapon ? 1 : 0.5) *
this.player.inventory.weaponSelected.stats.speedMultiplier /* *
(this.player.hat.spdMult || 1) * (this.player.tail.spdMult || 1) * (this.isInSnow()
? (this.player.hat.coldM || MovementProcessor.snowSpeed) : 1)*/ * this.slowMult;
// decel
velocity.multiply(Math.pow(MovementProcessor.CONFIG.playerDecel, delta));
position.add(velocity);
console.log(position);
return {
position,
velocity
};
}
/*gather() {
this.slowMult -= this.player.weapons.primary.hitSlow || .3;
if (this.slowMult < 0) {
this.slowMult = 0;
}
}*/
isInSnow() {
return this.player.serverPos.y <= MovementProcessor.CONFIG.snowBiomeTop;
}
isInWater() {
return this.player.serverPos.y >= MovementProcessor.CONFIG.mapScale / 2 -
MovementProcessor.CONFIG.riverHeight / 2 && this.player.serverPos.y <=
MovementProcessor.CONFIG.mapScale / 2 + MovementProcessor.CONFIG.riverHeight / 2;
}
}
/***/ }),
/***/ "./frontend/src/util/type/GridSet.ts":
/*!*******************************************!*\
!*** ./frontend/src/util/type/GridSet.ts ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ GridSet)
/* harmony export */ });
class GridSet extends Set {
constructor(values) {
super(values);
}
addGrid(grid) {
for (let i = 0; i < grid.length; i++) this.add(grid[i]);
}
}
/***/ }),
/***/ "./frontend/src/util/type/SidArray.ts":
/*!********************************************!*\
!*** ./frontend/src/util/type/SidArray.ts ***!
\********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "SidArray": () => (/* binding */ SidArray)
/* harmony export */ });
class SidArray extends Array {
constructor(size = 0) {
super(size);
}
hasSid(sid) {
for (let i = 0, length = this.length; i < length; i++) {
const item = this[i];
if (item.sid === sid) {
return true;
}
}
return false;
}
findBySid(sid) {
for (let i = 0, length = this.length; i < length; i++) {
const item = this[i];
if (item.sid === sid) {
return item;
}
}
return null;
}
remove(item) {
const index = this.indexOf(item);
if (index > -1) {
return this.splice(index, 1)[0];
}
return null;
}
removeBySid(sid) {
this.remove(this.findBySid(sid));
}
clear() {
this.length = 0;
}
}
/***/ }),
/***/ "./frontend/src/util/type/Vector.ts":
/*!******************************************!*\
!*** ./frontend/src/util/type/Vector.ts ***!
\******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ Vector)
/* harmony export */ });
class Vector {
constructor(x, y) {
this.x = x ?? 0;
this.y = y ?? 0;
}
isNull() {
return this.x == 0 && this.y == 0;
}
isNaN() {
return isNaN(this.x) || isNaN(this.y);
}
add(param1, param2) {
if (typeof param1 === "object") {
this.x += param1.x;
this.y += param1.y;
} else if (typeof param2 === "number") {
this.x += param1;
this.y += param2;
} else {
this.x += param1;
this.y += param1;
}
return this;
}
subtract(param1, param2) {
if (typeof param1 === "object") {
this.x -= param1.x;
this.y -= param1.y;
} else if (typeof param2 === "number") {
this.x -= param1;
this.y -= param2;
} else {
this.x -= param1;
this.y -= param1;
}
return this;
}
multiply(param1, param2) {
if (typeof param1 === "object") {
this.x *= param1.x;
this.y *= param1.y;
} else if (typeof param2 === "number") {
this.x *= param1;
this.y *= param2;
} else {
this.x *= param1;
this.y *= param1;
}
return this;
}
divide(param1, param2) {
if (typeof param1 === "object") {
this.x /= param1.x;
this.y /= param1.y;
} else if (typeof param2 === "number") {
this.x /= param1;
this.y /= param2;
} else {
this.x /= param1;
this.y /= param1;
}
return this;
}
set(param1, param2) {
if (typeof param1 === "object") {
this.x = param1.x;
this.y = param1.y;
} else if (typeof param2 === "number") {
this.x = param1;
this.y = param2;
} else {
this.x = param1;
this.y = param1;
}
return this;
}
directionMove(direction, amount) {
this.x += Math.cos(direction) * amount;
this.y += Math.sin(direction) * amount;
return this;
}
clone() {
return new Vector(this.x, this.y);
}
length() {
return Math.hypot(this.x, this.y);
}
toString(round) {
return "[" + (round ? Math.round(this.x) : this.x) + ", " + (round ?
Math.round(this.y) : this.y) + "]";
}
}
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/
cjs.js!./frontend/style/main.scss":
/*!
***********************************************************************************
****************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/
cjs.js!./frontend/style/main.scss ***!
\
***********************************************************************************
****************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var
_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__
= __webpack_require__(/*!
../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-
loader/dist/runtime/noSourceMaps.js");
/* harmony import */ var
_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___
default =
/*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMa
ps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */
"./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WE
BPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ =
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()
((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0_
__default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, "* {\n box-sizing: border-box;\n}\n\nbody
{\n margin: 0;\n overflow: hidden;\n}\n\n#loader-wrapper {\n position: fixed;\n
top: 50%;\n left: 50%;\n width: 500px;\n height: auto;\n padding: 0px;\n
transform: translate(-50%, -50%);\n z-index: 99999;\n}\n\n#loader {\n position:
relative;\n margin: 0px;\n width: 500px;\n height: auto;\n color: white;\n
padding: 30px;\n border-radius: 40px;\n z-index: 99999;\n text-shadow: -3px -3px
0 black, -3px -2px 0 black, -3px -1px 0 black, -3px 0px 0 black, -3px 1px 0 black,
-3px 2px 0 black, -3px 3px 0 black, -2px -3px 0 black, -2px -2px 0 black, -2px -1px
0 black, -2px 0px 0 black, -2px 1px 0 black, -2px 2px 0 black, -2px 3px 0 black, -
1px -3px 0 black, -1px -2px 0 black, -1px -1px 0 black, -1px 0px 0 black, -1px 1px
0 black, -1px 2px 0 black, -1px 3px 0 black, 0px -3px 0 black, 0px -2px 0 black,
0px -1px 0 black, 0px 0px 0 black, 0px 1px 0 black, 0px 2px 0 black, 0px 3px 0
black, 1px -3px 0 black, 1px -2px 0 black, 1px -1px 0 black, 1px 0px 0 black, 1px
1px 0 black, 1px 2px 0 black, 1px 3px 0 black, 2px -3px 0 black, 2px -2px 0 black,
2px -1px 0 black, 2px 0px 0 black, 2px 1px 0 black, 2px 2px 0 black, 2px 3px 0
black, 3px -3px 0 black, 3px -2px 0 black, 3px -1px 0 black, 3px 0px 0 black, 3px
1px 0 black, 3px 2px 0 black, 3px 3px 0 black;\n}\n\n#loader::after {\n
content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n background: linear-
gradient(105deg, rgb(91, 0, 0) 0%, rgb(101, 0, 78) 24%, rgb(0, 67, 94) 48%, rgb(7,
85, 0) 73%, rgb(0, 9, 88) 100%);\n width: 100%;\n height: 100%;\n transform:
scale(1.02);\n z-index: -1;\n background-size: 500%;\n animation: animate 20s
infinite;\n}\n\n#loader::after {\n filter: blur(7px);\n}\n\n@keyframes animate {\n
0% {\n background-position: 0 0;\n }\n 50% {\n background-position: 100%
0;\n }\n 100% {\n background-position: 0 0;\n }\n}\n#loader #header {\n
text-align: center;\n font-size: 35px;\n}\n\n#loader #info {\n text-align:
center;\n font-size: 22px;\n}\n\n#loader #details {\n text-align: center;\n
font-size: 18px;\n}\n\n#loader .mark-error {\n color: rgb(245, 55, 55);\n}\n\
n#loader .mark-success {\n color: rgb(81, 247, 59);\n}\n\n#loader input[type=text]
{\n background: transparent;\n backdrop-filter: saturate(50%);\n width: 90%;\n
padding: 6px 10px;\n margin: auto;\n box-sizing: border-box;\n border: 2px solid
white;\n border-radius: 4px;\n color: white;\n text-transform: uppercase;\n}\
n#loader input[type=text]:focus {\n outline: none;\n}", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ =
(___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/
cjs.js!./frontend/style/moomoo.scss":
/*!
***********************************************************************************
******************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/
cjs.js!./frontend/style/moomoo.scss ***!
\
***********************************************************************************
******************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var
_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__
= __webpack_require__(/*!
../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-
loader/dist/runtime/noSourceMaps.js");
/* harmony import */ var
_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___
default =
/*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMa
ps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */
"./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WE
BPACK_IMPORTED_MODULE_1__);
// Imports
var ___CSS_LOADER_EXPORT___ =
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()
((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0_
__default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, "/*#mainMenu {\n opacity: 0;\n}*/",
""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ =
(___CSS_LOADER_EXPORT___);
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
\*****************************************************/
/***/ ((module) => {
"use strict";
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
module.exports = function (cssWithMappingToString) {
var list = [];
/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js":
/*!**************************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***!
\**************************************************************/
/***/ ((module) => {
"use strict";
/***/ }),
/***/ "./node_modules/error-stack-parser/error-stack-parser.js":
/*!***************************************************************!*\
!*** ./node_modules/error-stack-parser/error-stack-parser.js ***!
\***************************************************************/
/***/ (function(module, exports, __webpack_require__) {
return {
/**
* Given an Error object, extract the most information from it.
*
* @param {Error} error object
* @return {Array} of StackFrames
*/
parse: function ErrorStackParser$$parse(error) {
if (typeof error.stacktrace !== 'undefined' || typeof
error['opera#sourceloc'] !== 'undefined') {
return this.parseOpera(error);
} else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {
return this.parseV8OrIE(error);
} else if (error.stack) {
return this.parseFFOrSafari(error);
} else {
throw new Error('Cannot parse given Error object');
}
},
return filtered.map(function(line) {
if (line.indexOf('(eval ') > -1) {
// Throw away eval information until we implement
stacktrace.js/stackframe#8
line = line.replace(/eval code/g, 'eval').replace(/(\(eval at
[^()]*)|(,.*$)/g, '');
}
var sanitizedLine = line.replace(/^\s+/, '').replace(/\(eval
code/g, '(').replace(/^.*?\s+/, '');
return filtered.map(function(line) {
// Throw away eval information until we implement
stacktrace.js/stackframe#8
if (line.indexOf(' > eval') > -1) {
line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\
d+:\d+/g, ':$1');
}
return result;
},
return result;
},
return filtered.map(function(line) {
var tokens = line.split('@');
var locationParts = this.extractLocation(tokens.pop());
var functionCall = (tokens.shift() || '');
var functionName = functionCall
.replace(/<anonymous function(: (\w+))?>/, '$2')
.replace(/\([^)]*\)/g, '') || undefined;
var argsRaw;
if (functionCall.match(/\(([^)]*)\)/)) {
argsRaw = functionCall.replace(/^[^(]+\(([^)]*)\)$/, '$1');
}
var args = (argsRaw === undefined || argsRaw === '[arguments not
available]') ?
undefined : argsRaw.split(',');
return new StackFrame({
functionName: functionName,
args: args,
fileName: locationParts[0],
lineNumber: locationParts[1],
columnNumber: locationParts[2],
source: line
});
}, this);
}
};
}));
/***/ }),
/***/ "./node_modules/event-lite/event-lite.js":
/*!***********************************************!*\
!*** ./node_modules/event-lite/event-lite.js ***!
\***********************************************/
/***/ ((module) => {
/**
* 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 EventLite() {
if (!(this instanceof EventLite)) return new EventLite();
}
(function(EventLite) {
// export the class for node.js
if (true) module.exports = EventLite;
// methods to export
var methods = {
on: on,
once: once,
off: off,
emit: emit
};
// mixin to self
mixin(EventLite.prototype);
/**
* Import on(), once(), off() and emit() methods into target object.
*
* @function EventLite.mixin
* @param target {Prototype}
*/
function mixin(target) {
for (var key in methods) {
target[key] = methods[key];
}
return target;
}
/**
* Add an event listener.
*
* @function EventLite.prototype.on
* @param type {string}
* @param func {Function}
* @returns {EventLite} Self for method chaining
*/
/**
* Add one-time event listener.
*
* @function EventLite.prototype.once
* @param type {string}
* @param func {Function}
* @returns {EventLite} Self for method chaining
*/
function wrap() {
off.call(that, type, wrap);
func.apply(this, arguments);
}
}
/**
* Remove an event listener.
*
* @function EventLite.prototype.off
* @param [type] {string}
* @param [func] {Function}
* @returns {EventLite} Self for method chaining
*/
function ne(test) {
return test !== func && test.originalListener !== func;
}
}
/**
* Dispatch (trigger) an event.
*
* @function EventLite.prototype.emit
* @param type {string}
* @param [value] {*}
* @returns {boolean} True when a listener received the event
*/
function zeroarg(func) {
func.call(that);
}
function onearg(func) {
func.call(that, value);
}
function moreargs(func) {
func.apply(that, args);
}
}
/**
* @ignore
*/
})(EventLite);
/***/ }),
/***/ "./node_modules/events/events.js":
/*!***************************************!*\
!*** ./node_modules/events/events.js ***!
\***************************************/
/***/ ((module) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function'
? R.apply
: function ReflectApply(target, receiver, args) {
return Function.prototype.apply.call(target, receiver, args);
}
var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target)
.concat(Object.getOwnPropertySymbols(target));
};
} else {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target);
};
}
function ProcessEmitWarning(warning) {
if (console && console.warn) console.warn(warning);
}
function EventEmitter() {
EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;
function checkListener(listener) {
if (typeof listener !== 'function') {
throw new TypeError('The "listener" argument must be of type Function. Received
type ' + typeof listener);
}
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
enumerable: true,
get: function() {
return defaultMaxListeners;
},
set: function(arg) {
if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
throw new RangeError('The value of "defaultMaxListeners" is out of range. It
must be a non-negative number. Received ' + arg + '.');
}
defaultMaxListeners = arg;
}
});
EventEmitter.init = function() {
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
throw new RangeError('The value of "n" is out of range. It must be a non-
negative number. Received ' + n + '.');
}
this._maxListeners = n;
return this;
};
function _getMaxListeners(that) {
if (that._maxListeners === undefined)
return EventEmitter.defaultMaxListeners;
return that._maxListeners;
}
return true;
};
checkListener(listener);
events = target._events;
if (events === undefined) {
events = target._events = Object.create(null);
target._eventsCount = 0;
} else {
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (events.newListener !== undefined) {
target.emit('newListener', type,
listener.listener ? listener.listener : listener);
return target;
}
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
function prependListener(type, listener) {
return _addListener(this, type, listener, true);
};
function onceWrapper() {
if (!this.fired) {
this.target.removeListener(this.type, this.wrapFn);
this.fired = true;
if (arguments.length === 0)
return this.listener.call(this.target);
return this.listener.apply(this.target, arguments);
}
}
EventEmitter.prototype.prependOnceListener =
function prependOnceListener(type, listener) {
checkListener(listener);
this.prependListener(type, _onceWrap(this, type, listener));
return this;
};
checkListener(listener);
events = this._events;
if (events === undefined)
return this;
list = events[type];
if (list === undefined)
return this;
if (position < 0)
return this;
if (position === 0)
list.shift();
else {
spliceOne(list, position);
}
if (list.length === 1)
events[type] = list[0];
if (events.removeListener !== undefined)
this.emit('removeListener', type, originalListener || listener);
}
return this;
};
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners =
function removeAllListeners(type) {
var listeners, events, i;
events = this._events;
if (events === undefined)
return this;
listeners = events[type];
return this;
};
function _listeners(target, type, unwrap) {
var events = target._events;
return unwrap ?
unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
var events = this._events;
return 0;
}
function arrayClone(arr, n) {
var copy = new Array(n);
for (var i = 0; i < n; ++i)
copy[i] = arr[i];
return copy;
}
function unwrapListeners(arr) {
var ret = new Array(arr.length);
for (var i = 0; i < ret.length; ++i) {
ret[i] = arr[i].listener || arr[i];
}
return ret;
}
function resolver() {
if (typeof emitter.removeListener === 'function') {
emitter.removeListener('error', errorListener);
}
resolve([].slice.call(arguments));
};
/***/ }),
/***/ "./frontend/src/loader/loader.html":
/*!*****************************************!*\
!*** ./frontend/src/loader/loader.html ***!
\*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
// Module
var code = "<div id=\"loader-wrapper\"> <div id=\"loader\" class=\"nvr\"> <h1
id=\"header\"></h1> <p id=\"info\"></p> <p id=\"details\"></p> <input
id=\"activation-key\" type=\"text\" style=\"display:none\" placeholder=\"Your
Activation Key\" autocomplete=\"off\"> </div> </div>";
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (code);
/***/ }),
/***/ "./node_modules/ieee754/index.js":
/*!***************************************!*\
!*** ./node_modules/ieee754/index.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports) => {
i += d
if (e === 0) {
e = 1 - eBias
} else if (e === eMax) {
return m ? NaN : ((s ? -1 : 1) * Infinity)
} else {
m = m + Math.pow(2, mLen)
e = e - eBias
}
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}
value = Math.abs(value)
buffer[offset + i - d] |= s * 128
}
/***/ }),
/***/ "./node_modules/int64-buffer/int64-buffer.js":
/*!***************************************************!*\
!*** ./node_modules/int64-buffer/int64-buffer.js ***!
\***************************************************/
/***/ (function(__unused_webpack_module, exports) {
// int64-buffer.js
!function(exports) {
// constants
// storage class
// generate classes
// class factory
// properties
proto.buffer = void 0;
proto.offset = 0;
proto[_isInt64] = true;
// methods
proto.toNumber = toNumber;
proto.toString = toString;
proto.toJSON = toNumber;
proto.toArray = toArray;
// isUint64BE, isInt64BE
Int64[isName] = isInt64;
// CommonJS
exports[name] = Int64;
return Int64;
// constructor
function Int64(buffer, offset, value, raddix) {
if (!(this instanceof Int64)) return new Int64(buffer, offset, value,
raddix);
return init(this, buffer, offset, value, raddix);
}
// isUint64BE, isInt64BE
function isInt64(b) {
return !!(b && b[_isInt64]);
}
// initializer
function init(that, buffer, offset, value, raddix) {
if (UINT8ARRAY && ARRAYBUFFER) {
if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer);
if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value);
}
// Int64BE() style
if (!buffer && !offset && !value && !storage) {
// shortcut to initialize with zero
that.buffer = newArray(ZERO, 0);
return;
}
that.buffer = buffer;
that.offset = offset |= 0;
function toNumber() {
var buffer = this.buffer;
var offset = this.offset;
var high = readInt32(buffer, offset + posH);
var low = readInt32(buffer, offset + posL);
if (!unsigned) high |= 0; // a trick to get signed
return high ? (high * BIT32 + low) : low;
}
function toString(radix) {
var buffer = this.buffer;
var offset = this.offset;
var high = readInt32(buffer, offset + posH);
var low = readInt32(buffer, offset + posL);
var str = "";
var sign = !unsigned && (high & 0x80000000);
if (sign) {
high = ~high;
low = BIT32 - low;
}
radix = radix || 10;
while (1) {
var mod = (high % radix) * BIT32 + low;
high = Math.floor(high / radix);
low = Math.floor(mod / radix);
str = (mod % radix).toString(radix) + str;
if (!high && !low) break;
}
if (sign) {
str = "-" + str;
}
return str;
}
function toArray(raw) {
var buffer = this.buffer;
var offset = this.offset;
storage = null; // Array
if (raw !== false && offset === 0 && buffer.length === 8 && isArray(buffer))
return buffer;
return newArray(buffer, offset);
}
function toBuffer(raw) {
var buffer = this.buffer;
var offset = this.offset;
storage = BUFFER;
if (raw !== false && offset === 0 && buffer.length === 8 &&
Buffer.isBuffer(buffer)) return buffer;
var dest = new BUFFER(8);
fromArray(dest, 0, buffer, offset);
return dest;
}
function toArrayBuffer(raw) {
var buffer = this.buffer;
var offset = this.offset;
var arrbuf = buffer.buffer;
storage = UINT8ARRAY;
if (raw !== false && offset === 0 && (arrbuf instanceof ARRAYBUFFER) &&
arrbuf.byteLength === 8) return arrbuf;
var dest = new UINT8ARRAY(8);
fromArray(dest, 0, buffer, offset);
return dest.buffer;
}
// https://github.com/retrofox/is-array
function _isArray(val) {
return !!val && "[object Array]" == Object.prototype.toString.call(val);
}
/***/ }),
/***/ "./node_modules/isarray/index.js":
/*!***************************************!*\
!*** ./node_modules/isarray/index.js ***!
\***************************************/
/***/ ((module) => {
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/browser.js":
/*!**************************************************!*\
!*** ./node_modules/msgpack-lite/lib/browser.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// browser.js
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/buffer-global.js":
/*!********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/buffer-global.js ***!
\********************************************************/
/***/ (function(module) {
/* globals Buffer */
module.exports =
c(("undefined" !== typeof Buffer) && Buffer) ||
c(this.Buffer) ||
c(("undefined" !== typeof window) && window.Buffer) ||
this.Buffer;
function c(B) {
return B && B.isBuffer && B;
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/buffer-lite.js":
/*!******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/buffer-lite.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports) => {
// buffer-lite.js
exports.copy = copy;
exports.toString = toString;
exports.write = write;
/**
* Buffer.prototype.write()
*
* @param string {String}
* @param [offset] {Number}
* @returns {Number}
*/
/**
* Buffer.prototype.toString()
*
* @param [encoding] {String} ignored
* @param [start] {Number}
* @param [end] {Number}
* @returns {String}
*/
return string;
}
/**
* Buffer.prototype.copy()
*
* @param target {Buffer}
* @param [targetStart] {Number}
* @param [start] {Number}
* @param [end] {Number}
* @returns {number}
*/
if (target === this && start < targetStart && targetStart < end) {
// descending
for (i = len - 1; i >= 0; i--) {
target[i + targetStart] = this[i + start];
}
} else {
// ascending
for (i = 0; i < len; i++) {
target[i + targetStart] = this[i + start];
}
}
return len;
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/bufferish-array.js":
/*!**********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/bufferish-array.js ***!
\**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// bufferish-array.js
var Bufferish = __webpack_require__(/*! ./bufferish */ "./node_modules/msgpack-
lite/lib/bufferish.js");
exports.alloc = alloc;
exports.concat = Bufferish.concat;
exports.from = from;
/**
* @param size {Number}
* @returns {Buffer|Uint8Array|Array}
*/
function alloc(size) {
return new Array(size);
}
/**
* @param value {Array|ArrayBuffer|Buffer|String}
* @returns {Array}
*/
function from(value) {
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
// TypedArray to Uint8Array
value = Bufferish.Uint8Array.from(value);
} else if (Bufferish.isArrayBuffer(value)) {
// ArrayBuffer to Uint8Array
value = new Uint8Array(value);
} else if (typeof value === "string") {
// String to Array
return Bufferish.from.call(exports, value);
} else if (typeof value === "number") {
throw new TypeError('"value" argument must not be a number');
}
// Array-like to Array
return Array.prototype.slice.call(value);
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/bufferish-buffer.js":
/*!***********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/bufferish-buffer.js ***!
\***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// bufferish-buffer.js
/**
* @param size {Number}
* @returns {Buffer|Uint8Array|Array}
*/
function alloc(size) {
return new Buffer(size);
}
/**
* @param value {Array|ArrayBuffer|Buffer|String}
* @returns {Buffer}
*/
function from(value) {
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
// TypedArray to Uint8Array
value = Bufferish.Uint8Array.from(value);
} else if (Bufferish.isArrayBuffer(value)) {
// ArrayBuffer to Uint8Array
value = new Uint8Array(value);
} else if (typeof value === "string") {
// String to Buffer
return Bufferish.from.call(exports, value);
} else if (typeof value === "number") {
throw new TypeError('"value" argument must not be a number');
}
// Array-like to Buffer
if (Buffer.from && Buffer.from.length !== 1) {
return Buffer.from(value); // node v6+
} else {
return new Buffer(value); // node v4
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/bufferish-proto.js":
/*!**********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/bufferish-proto.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// bufferish-proto.js
/* jshint eqnull:true */
exports.copy = copy;
exports.slice = slice;
exports.toString = toString;
exports.write = gen("write");
/**
* @param target {Buffer|Uint8Array|Array}
* @param [targetStart] {Number}
* @param [start] {Number}
* @param [end] {Number}
* @returns {Buffer|Uint8Array|Array}
*/
/**
* @param [start] {Number}
* @param [end] {Number}
* @returns {Buffer|Uint8Array|Array}
*/
/**
* Buffer.prototype.toString()
*
* @param [encoding] {String} ignored
* @param [start] {Number}
* @param [end] {Number}
* @returns {String}
*/
/**
* @private
*/
function gen(method) {
return wrap;
function wrap() {
var f = this[method] || BufferLite[method];
return f.apply(this, arguments);
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/bufferish-uint8array.js":
/*!***************************************************************!*\
!*** ./node_modules/msgpack-lite/lib/bufferish-uint8array.js ***!
\***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// bufferish-uint8array.js
exports.alloc = alloc;
exports.concat = Bufferish.concat;
exports.from = from;
/**
* @param size {Number}
* @returns {Buffer|Uint8Array|Array}
*/
function alloc(size) {
return new Uint8Array(size);
}
/**
* @param value {Array|ArrayBuffer|Buffer|String}
* @returns {Uint8Array}
*/
function from(value) {
if (Bufferish.isView(value)) {
// TypedArray to ArrayBuffer
var byteOffset = value.byteOffset;
var byteLength = value.byteLength;
value = value.buffer;
if (value.byteLength !== byteLength) {
if (value.slice) {
value = value.slice(byteOffset, byteOffset + byteLength);
} else {
// Android 4.1 does not have ArrayBuffer.prototype.slice
value = new Uint8Array(value);
if (value.byteLength !== byteLength) {
// TypedArray to ArrayBuffer to Uint8Array to Array
value = Array.prototype.slice.call(value, byteOffset, byteOffset +
byteLength);
}
}
}
} else if (typeof value === "string") {
// String to Uint8Array
return Bufferish.from.call(exports, value);
} else if (typeof value === "number") {
throw new TypeError('"value" argument must not be a number');
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/bufferish.js":
/*!****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/bufferish.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// bufferish.js
exports.alloc = alloc;
exports.concat = concat;
exports.from = from;
/**
* @param value {Array|ArrayBuffer|Buffer|String}
* @returns {Buffer|Uint8Array|Array}
*/
function from(value) {
if (typeof value === "string") {
return fromString.call(this, value);
} else {
return auto(this).from(value);
}
}
/**
* @param size {Number}
* @returns {Buffer|Uint8Array|Array}
*/
function alloc(size) {
return auto(this).alloc(size);
}
/**
* @param list {Array} array of (Buffer|Uint8Array|Array)s
* @param [length]
* @returns {Buffer|Uint8Array|Array}
*/
function dryrun(buffer) {
length += buffer.length;
}
function append(buffer) {
offset += BufferProto.copy.call(buffer, result, offset);
}
}
function isArrayBuffer(value) {
return (value instanceof ArrayBuffer) || _isArrayBuffer(value);
}
/**
* @private
*/
function fromString(value) {
var expected = value.length * 3;
var that = alloc.call(this, expected);
var actual = BufferProto.write.call(that, value);
if (expected !== actual) {
that = BufferProto.slice.call(that, 0, actual);
}
return that;
}
function auto(that) {
return isBuffer(that) ? BufferBuffer
: isView(that) ? BufferUint8Array
: isArray(that) ? BufferArray
: hasBuffer ? BufferBuffer
: hasArrayBuffer ? BufferUint8Array
: BufferArray;
}
function _false() {
return false;
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/codec-base.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/codec-base.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// codec-base.js
exports.createCodec = createCodec;
exports.install = install;
exports.filter = filter;
function Codec(options) {
if (!(this instanceof Codec)) return new Codec(options);
this.options = options;
this.init();
}
Codec.prototype.init = function() {
var options = this.options;
return this;
};
function install(props) {
for (var key in props) {
Codec.prototype[key] = add(Codec.prototype[key], props[key]);
}
}
function add(a, b) {
return (a && b) ? ab : (a || b);
function ab() {
a.apply(this, arguments);
return b.apply(this, arguments);
}
}
function join(filters) {
filters = filters.slice();
return function(value) {
return filters.reduce(iterator, value);
};
function filter(filter) {
return IS_ARRAY(filter) ? join(filter) : filter;
}
// @public
// msgpack.createCodec()
function createCodec(options) {
return new Codec(options);
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/codec.js":
/*!************************************************!*\
!*** ./node_modules/msgpack-lite/lib/codec.js ***!
\************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// codec.js
// @public
// msgpack.codec.preset
exports.codec = {
preset: (__webpack_require__(/*! ./codec-base */
"./node_modules/msgpack-lite/lib/codec-base.js").preset)
};
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/decode-buffer.js":
/*!********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/decode-buffer.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// decode-buffer.js
exports.DecodeBuffer = DecodeBuffer;
FlexDecoder.mixin(DecodeBuffer.prototype);
function DecodeBuffer(options) {
if (!(this instanceof DecodeBuffer)) return new DecodeBuffer(options);
if (options) {
this.options = options;
if (options.codec) {
var codec = this.codec = options.codec;
if (codec.bufferish) this.bufferish = codec.bufferish;
}
}
}
DecodeBuffer.prototype.codec = preset;
DecodeBuffer.prototype.fetch = function() {
return this.codec.decode(this);
};
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/decode.js":
/*!*************************************************!*\
!*** ./node_modules/msgpack-lite/lib/decode.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// decode.js
exports.decode = decode;
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/decoder.js":
/*!**************************************************!*\
!*** ./node_modules/msgpack-lite/lib/decoder.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// decoder.js
exports.Decoder = Decoder;
function Decoder(options) {
if (!(this instanceof Decoder)) return new Decoder(options);
DecodeBuffer.call(this, options);
}
EventLite.mixin(Decoder.prototype);
Decoder.prototype.decode = function(chunk) {
if (arguments.length) this.write(chunk);
this.flush();
};
Decoder.prototype.push = function(chunk) {
this.emit("data", chunk);
};
Decoder.prototype.end = function(chunk) {
this.decode(chunk);
this.emit("end");
};
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/encode-buffer.js":
/*!********************************************************!*\
!*** ./node_modules/msgpack-lite/lib/encode-buffer.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// encode-buffer.js
exports.EncodeBuffer = EncodeBuffer;
FlexEncoder.mixin(EncodeBuffer.prototype);
function EncodeBuffer(options) {
if (!(this instanceof EncodeBuffer)) return new EncodeBuffer(options);
if (options) {
this.options = options;
if (options.codec) {
var codec = this.codec = options.codec;
if (codec.bufferish) this.bufferish = codec.bufferish;
}
}
}
EncodeBuffer.prototype.codec = preset;
EncodeBuffer.prototype.write = function(input) {
this.codec.encode(this, input);
};
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/encode.js":
/*!*************************************************!*\
!*** ./node_modules/msgpack-lite/lib/encode.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// encode.js
exports.encode = encode;
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/encoder.js":
/*!**************************************************!*\
!*** ./node_modules/msgpack-lite/lib/encoder.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// encoder.js
exports.Encoder = Encoder;
function Encoder(options) {
if (!(this instanceof Encoder)) return new Encoder(options);
EncodeBuffer.call(this, options);
}
EventLite.mixin(Encoder.prototype);
Encoder.prototype.encode = function(chunk) {
this.write(chunk);
this.emit("data", this.read());
};
Encoder.prototype.end = function(chunk) {
if (arguments.length) this.encode(chunk);
this.flush();
this.emit("end");
};
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/ext-buffer.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/ext-buffer.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// ext-buffer.js
exports.ExtBuffer = ExtBuffer;
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/ext-packer.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/ext-packer.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// ext-packer.js
exports.setExtPackers = setExtPackers;
function setExtPackers(codec) {
codec.addExtPacker(0x0E, Error, [packError, encode]);
codec.addExtPacker(0x01, EvalError, [packError, encode]);
codec.addExtPacker(0x02, RangeError, [packError, encode]);
codec.addExtPacker(0x03, ReferenceError, [packError, encode]);
codec.addExtPacker(0x04, SyntaxError, [packError, encode]);
codec.addExtPacker(0x05, TypeError, [packError, encode]);
codec.addExtPacker(0x06, URIError, [packError, encode]);
if (Bufferish.hasBuffer) {
codec.addExtPacker(0x1B, Buffer, Bufferish.from);
}
}
function encode(input) {
if (!_encode) _encode = (__webpack_require__(/*! ./encode */
"./node_modules/msgpack-lite/lib/encode.js").encode); // lazy load
return _encode(input);
}
function packValueOf(value) {
return (value).valueOf();
}
function packRegExp(value) {
value = RegExp.prototype.toString.call(value).split("/");
value.shift();
var out = [value.pop()];
out.unshift(value.join("/"));
return out;
}
function packError(value) {
var out = {};
for (var key in ERROR_COLUMNS) {
out[key] = value[key];
}
return out;
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/ext-unpacker.js":
/*!*******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/ext-unpacker.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// ext-unpacker.js
exports.setExtUnpackers = setExtUnpackers;
function setExtUnpackers(codec) {
codec.addExtUnpacker(0x0E, [decode, unpackError(Error)]);
codec.addExtUnpacker(0x01, [decode, unpackError(EvalError)]);
codec.addExtUnpacker(0x02, [decode, unpackError(RangeError)]);
codec.addExtUnpacker(0x03, [decode, unpackError(ReferenceError)]);
codec.addExtUnpacker(0x04, [decode, unpackError(SyntaxError)]);
codec.addExtUnpacker(0x05, [decode, unpackError(TypeError)]);
codec.addExtUnpacker(0x06, [decode, unpackError(URIError)]);
codec.addExtUnpacker(0x1A, unpackArrayBuffer);
codec.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
}
if (Bufferish.hasBuffer) {
codec.addExtUnpacker(0x1B, unpackClass(Buffer));
}
}
function decode(input) {
if (!_decode) _decode = (__webpack_require__(/*! ./decode */
"./node_modules/msgpack-lite/lib/decode.js").decode); // lazy load
return _decode(input);
}
function unpackRegExp(value) {
return RegExp.apply(null, value);
}
function unpackError(Class) {
return function(value) {
var out = new Class();
for (var key in ERROR_COLUMNS) {
out[key] = value[key];
}
return out;
};
}
function unpackClass(Class) {
return function(value) {
return new Class(value);
};
}
function unpackArrayBuffer(value) {
return (new Uint8Array(value)).buffer;
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/ext.js":
/*!**********************************************!*\
!*** ./node_modules/msgpack-lite/lib/ext.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// ext.js
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/flex-buffer.js":
/*!******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/flex-buffer.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// flex-buffer.js
exports.FlexDecoder = FlexDecoder;
exports.FlexEncoder = FlexEncoder;
function FlexDecoder() {
if (!(this instanceof FlexDecoder)) return new FlexDecoder();
}
function FlexEncoder() {
if (!(this instanceof FlexEncoder)) return new FlexEncoder();
}
FlexDecoder.mixin = mixinFactory(getDecoderMethods());
FlexDecoder.mixin(FlexDecoder.prototype);
FlexEncoder.mixin = mixinFactory(getEncoderMethods());
FlexEncoder.mixin(FlexEncoder.prototype);
function getDecoderMethods() {
return {
bufferish: Bufferish,
write: write,
fetch: fetch,
flush: flush,
push: push,
pull: pull,
read: read,
reserve: reserve,
offset: 0
};
function write(chunk) {
var prev = this.offset ? Bufferish.prototype.slice.call(this.buffer,
this.offset) : this.buffer;
this.buffer = prev ? (chunk ? this.bufferish.concat([prev, chunk]) : prev) :
chunk;
this.offset = 0;
}
function flush() {
while (this.offset < this.buffer.length) {
var start = this.offset;
var value;
try {
value = this.fetch();
} catch (e) {
if (e && e.message != BUFFER_SHORTAGE) throw e;
// rollback
this.offset = start;
break;
}
this.push(value);
}
}
function reserve(length) {
var start = this.offset;
var end = start + length;
if (end > this.buffer.length) throw new Error(BUFFER_SHORTAGE);
this.offset = end;
return start;
}
}
function getEncoderMethods() {
return {
bufferish: Bufferish,
write: write,
fetch: fetch,
flush: flush,
push: push,
pull: pull,
read: read,
reserve: reserve,
send: send,
maxBufferSize: MAX_BUFFER_SIZE,
minBufferSize: MIN_BUFFER_SIZE,
offset: 0,
start: 0
};
function fetch() {
var start = this.start;
if (start < this.offset) {
var end = this.start = this.offset;
return Bufferish.prototype.slice.call(this.buffer, start, end);
}
}
function flush() {
while (this.start < this.offset) {
var value = this.fetch();
if (value) this.push(value);
}
}
function pull() {
var buffers = this.buffers || (this.buffers = []);
var chunk = buffers.length > 1 ? this.bufferish.concat(buffers) : buffers[0];
buffers.length = 0; // buffer exhausted
return chunk;
}
function reserve(length) {
var req = length | 0;
if (this.buffer) {
var size = this.buffer.length;
var start = this.offset | 0;
var end = start + req;
// is it long enough?
if (end < size) {
this.offset = end;
return start;
}
function send(buffer) {
var length = buffer.length;
if (length > this.minBufferSize) {
this.flush();
this.push(buffer);
} else {
var offset = this.reserve(length);
Bufferish.prototype.copy.call(buffer, this.buffer, offset);
}
}
}
// common methods
function write() {
throw new Error("method not implemented: write()");
}
function fetch() {
throw new Error("method not implemented: fetch()");
}
function read() {
var length = this.buffers && this.buffers.length;
function push(chunk) {
var buffers = this.buffers || (this.buffers = []);
buffers.push(chunk);
}
function pull() {
var buffers = this.buffers || (this.buffers = []);
return buffers.shift();
}
function mixinFactory(source) {
return mixin;
function mixin(target) {
for (var key in source) {
target[key] = source[key];
}
return target;
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/read-core.js":
/*!****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/read-core.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// read-core.js
CodecBase.install({
addExtUnpacker: addExtUnpacker,
getExtUnpacker: getExtUnpacker,
init: init
});
exports.preset = init.call(CodecBase.preset);
function getDecoder(options) {
var readToken = ReadToken.getReadToken(options);
return decode;
function decode(decoder) {
var type = readUint8(decoder);
var func = readToken[type];
if (!func) throw new Error("Invalid type: " + (type ? ("0x" +
type.toString(16)) : type));
return func(decoder);
}
}
function init() {
var options = this.options;
this.decode = getDecoder(options);
return this;
}
function getExtUnpacker(type) {
var unpackers = this.extUnpackers || (this.extUnpackers = []);
return unpackers[type] || extUnpacker;
function extUnpacker(buffer) {
return new ExtBuffer(buffer, type);
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/read-format.js":
/*!******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/read-format.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// read-format.js
exports.getReadFormat = getReadFormat;
exports.readUint8 = uint8;
function getReadFormat(options) {
var binarraybuffer = Bufferish.hasArrayBuffer && options &&
options.binarraybuffer;
var int64 = options && options.int64;
var usemap = HAS_MAP && options && options.usemap;
var readFormat = {
map: (usemap ? map_to_map : map_to_obj),
array: array,
str: str,
bin: (binarraybuffer ? bin_arraybuffer : bin_buffer),
ext: ext,
uint8: uint8,
uint16: uint16,
uint32: uint32,
uint64: read(8, int64 ? readUInt64BE_int64 : readUInt64BE),
int8: int8,
int16: int16,
int32: int32,
int64: read(8, int64 ? readInt64BE_int64 : readInt64BE),
float32: read(4, readFloatBE),
float64: read(8, readDoubleBE)
};
return readFormat;
}
function uint8(decoder) {
var start = decoder.reserve(1);
return decoder.buffer[start];
}
function int8(decoder) {
var start = decoder.reserve(1);
var value = decoder.buffer[start];
return (value & 0x80) ? value - 0x100 : value;
}
function uint16(decoder) {
var start = decoder.reserve(2);
var buffer = decoder.buffer;
return (buffer[start++] << 8) | buffer[start];
}
function int16(decoder) {
var start = decoder.reserve(2);
var buffer = decoder.buffer;
var value = (buffer[start++] << 8) | buffer[start];
return (value & 0x8000) ? value - 0x10000 : value;
}
function uint32(decoder) {
var start = decoder.reserve(4);
var buffer = decoder.buffer;
return (buffer[start++] * 16777216) + (buffer[start++] << 16) + (buffer[start++]
<< 8) + buffer[start];
}
function int32(decoder) {
var start = decoder.reserve(4);
var buffer = decoder.buffer;
return (buffer[start++] << 24) | (buffer[start++] << 16) | (buffer[start++] << 8)
| buffer[start];
}
function readUInt64BE(start) {
return new Uint64BE(this, start).toNumber();
}
function readInt64BE(start) {
return new Int64BE(this, start).toNumber();
}
function readUInt64BE_int64(start) {
return new Uint64BE(this, start);
}
function readInt64BE_int64(start) {
return new Int64BE(this, start);
}
function readFloatBE(start) {
return ieee754.read(this, start, false, 23, 4);
}
function readDoubleBE(start) {
return ieee754.read(this, start, false, 52, 8);
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/read-token.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/read-token.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// read-token.js
exports.getReadToken = getReadToken;
function getReadToken(options) {
var format = ReadFormat.getReadFormat(options);
function init_token(format) {
var i;
var token = new Array(256);
// nil -- 0xc0
token[0xc0] = constant(null);
// false -- 0xc2
// true -- 0xc3
token[0xc2] = constant(false);
token[0xc3] = constant(true);
// bin 8 -- 0xc4
// bin 16 -- 0xc5
// bin 32 -- 0xc6
token[0xc4] = flex(format.uint8, format.bin);
token[0xc5] = flex(format.uint16, format.bin);
token[0xc6] = flex(format.uint32, format.bin);
// ext 8 -- 0xc7
// ext 16 -- 0xc8
// ext 32 -- 0xc9
token[0xc7] = flex(format.uint8, format.ext);
token[0xc8] = flex(format.uint16, format.ext);
token[0xc9] = flex(format.uint32, format.ext);
// float 32 -- 0xca
// float 64 -- 0xcb
token[0xca] = format.float32;
token[0xcb] = format.float64;
// uint 8 -- 0xcc
// uint 16 -- 0xcd
// uint 32 -- 0xce
// uint 64 -- 0xcf
token[0xcc] = format.uint8;
token[0xcd] = format.uint16;
token[0xce] = format.uint32;
token[0xcf] = format.uint64;
// int 8 -- 0xd0
// int 16 -- 0xd1
// int 32 -- 0xd2
// int 64 -- 0xd3
token[0xd0] = format.int8;
token[0xd1] = format.int16;
token[0xd2] = format.int32;
token[0xd3] = format.int64;
// fixext 1 -- 0xd4
// fixext 2 -- 0xd5
// fixext 4 -- 0xd6
// fixext 8 -- 0xd7
// fixext 16 -- 0xd8
token[0xd4] = fix(1, format.ext);
token[0xd5] = fix(2, format.ext);
token[0xd6] = fix(4, format.ext);
token[0xd7] = fix(8, format.ext);
token[0xd8] = fix(16, format.ext);
// str 8 -- 0xd9
// str 16 -- 0xda
// str 32 -- 0xdb
token[0xd9] = flex(format.uint8, format.str);
token[0xda] = flex(format.uint16, format.str);
token[0xdb] = flex(format.uint32, format.str);
// array 16 -- 0xdc
// array 32 -- 0xdd
token[0xdc] = flex(format.uint16, format.array);
token[0xdd] = flex(format.uint32, format.array);
// map 16 -- 0xde
// map 32 -- 0xdf
token[0xde] = flex(format.uint16, format.map);
token[0xdf] = flex(format.uint32, format.map);
return token;
}
function init_useraw(format) {
var i;
var token = init_token(format).slice();
// raw 8 -- 0xd9
// raw 16 -- 0xda
// raw 32 -- 0xdb
token[0xd9] = token[0xc4];
token[0xda] = token[0xc5];
token[0xdb] = token[0xc6];
// fixraw -- 0xa0 - 0xbf
for (i = 0xa0; i <= 0xbf; i++) {
token[i] = fix(i - 0xa0, format.bin);
}
return token;
}
function constant(value) {
return function() {
return value;
};
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/write-core.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/write-core.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// write-core.js
CodecBase.install({
addExtPacker: addExtPacker,
getExtPacker: getExtPacker,
init: init
});
exports.preset = init.call(CodecBase.preset);
function getEncoder(options) {
var writeType = WriteType.getWriteType(options);
return encode;
function encode(encoder, value) {
var func = writeType[typeof value];
if (!func) throw new Error("Unsupported type \"" + (typeof value) + "\": " +
value);
func(encoder, value);
}
}
function init() {
var options = this.options;
this.encode = getEncoder(options);
return this;
}
function extPacker(value) {
if (packer) value = packer(value);
return new ExtBuffer(value, etype);
}
}
function getExtPacker(value) {
var packers = this.extPackers || (this.extPackers = {});
var c = value.constructor;
var e = c && c.name && packers[c.name];
if (e) return e;
// fallback for IE
var list = this.extEncoderList || (this.extEncoderList = []);
var len = list.length;
for (var i = 0; i < len; i++) {
var pair = list[i];
if (c === pair[0]) return pair[1];
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/write-token.js":
/*!******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/write-token.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// write-token.js
exports.getWriteToken = getWriteToken;
function getWriteToken(options) {
if (options && options.uint8array) {
return init_uint8array();
} else if (NO_TYPED_ARRAY || (Bufferish.hasBuffer && options && options.safe)) {
return init_safe();
} else {
return init_token();
}
}
function init_uint8array() {
var token = init_token();
// float 32 -- 0xca
// float 64 -- 0xcb
token[0xca] = writeN(0xca, 4, writeFloatBE);
token[0xcb] = writeN(0xcb, 8, writeDoubleBE);
return token;
}
function init_token() {
// (immediate values)
// positive fixint -- 0x00 - 0x7f
// nil -- 0xc0
// false -- 0xc2
// true -- 0xc3
// negative fixint -- 0xe0 - 0xff
var token = uint8.slice();
// bin 8 -- 0xc4
// bin 16 -- 0xc5
// bin 32 -- 0xc6
token[0xc4] = write1(0xc4);
token[0xc5] = write2(0xc5);
token[0xc6] = write4(0xc6);
// ext 8 -- 0xc7
// ext 16 -- 0xc8
// ext 32 -- 0xc9
token[0xc7] = write1(0xc7);
token[0xc8] = write2(0xc8);
token[0xc9] = write4(0xc9);
// float 32 -- 0xca
// float 64 -- 0xcb
token[0xca] = writeN(0xca, 4, (Buffer_prototype.writeFloatBE || writeFloatBE),
true);
token[0xcb] = writeN(0xcb, 8, (Buffer_prototype.writeDoubleBE || writeDoubleBE),
true);
// uint 8 -- 0xcc
// uint 16 -- 0xcd
// uint 32 -- 0xce
// uint 64 -- 0xcf
token[0xcc] = write1(0xcc);
token[0xcd] = write2(0xcd);
token[0xce] = write4(0xce);
token[0xcf] = writeN(0xcf, 8, writeUInt64BE);
// int 8 -- 0xd0
// int 16 -- 0xd1
// int 32 -- 0xd2
// int 64 -- 0xd3
token[0xd0] = write1(0xd0);
token[0xd1] = write2(0xd1);
token[0xd2] = write4(0xd2);
token[0xd3] = writeN(0xd3, 8, writeInt64BE);
// str 8 -- 0xd9
// str 16 -- 0xda
// str 32 -- 0xdb
token[0xd9] = write1(0xd9);
token[0xda] = write2(0xda);
token[0xdb] = write4(0xdb);
// array 16 -- 0xdc
// array 32 -- 0xdd
token[0xdc] = write2(0xdc);
token[0xdd] = write4(0xdd);
// map 16 -- 0xde
// map 32 -- 0xdf
token[0xde] = write2(0xde);
token[0xdf] = write4(0xdf);
return token;
}
function init_safe() {
// (immediate values)
// positive fixint -- 0x00 - 0x7f
// nil -- 0xc0
// false -- 0xc2
// true -- 0xc3
// negative fixint -- 0xe0 - 0xff
var token = uint8.slice();
// bin 8 -- 0xc4
// bin 16 -- 0xc5
// bin 32 -- 0xc6
token[0xc4] = writeN(0xc4, 1, Buffer.prototype.writeUInt8);
token[0xc5] = writeN(0xc5, 2, Buffer.prototype.writeUInt16BE);
token[0xc6] = writeN(0xc6, 4, Buffer.prototype.writeUInt32BE);
// ext 8 -- 0xc7
// ext 16 -- 0xc8
// ext 32 -- 0xc9
token[0xc7] = writeN(0xc7, 1, Buffer.prototype.writeUInt8);
token[0xc8] = writeN(0xc8, 2, Buffer.prototype.writeUInt16BE);
token[0xc9] = writeN(0xc9, 4, Buffer.prototype.writeUInt32BE);
// float 32 -- 0xca
// float 64 -- 0xcb
token[0xca] = writeN(0xca, 4, Buffer.prototype.writeFloatBE);
token[0xcb] = writeN(0xcb, 8, Buffer.prototype.writeDoubleBE);
// uint 8 -- 0xcc
// uint 16 -- 0xcd
// uint 32 -- 0xce
// uint 64 -- 0xcf
token[0xcc] = writeN(0xcc, 1, Buffer.prototype.writeUInt8);
token[0xcd] = writeN(0xcd, 2, Buffer.prototype.writeUInt16BE);
token[0xce] = writeN(0xce, 4, Buffer.prototype.writeUInt32BE);
token[0xcf] = writeN(0xcf, 8, writeUInt64BE);
// int 8 -- 0xd0
// int 16 -- 0xd1
// int 32 -- 0xd2
// int 64 -- 0xd3
token[0xd0] = writeN(0xd0, 1, Buffer.prototype.writeInt8);
token[0xd1] = writeN(0xd1, 2, Buffer.prototype.writeInt16BE);
token[0xd2] = writeN(0xd2, 4, Buffer.prototype.writeInt32BE);
token[0xd3] = writeN(0xd3, 8, writeInt64BE);
// str 8 -- 0xd9
// str 16 -- 0xda
// str 32 -- 0xdb
token[0xd9] = writeN(0xd9, 1, Buffer.prototype.writeUInt8);
token[0xda] = writeN(0xda, 2, Buffer.prototype.writeUInt16BE);
token[0xdb] = writeN(0xdb, 4, Buffer.prototype.writeUInt32BE);
// array 16 -- 0xdc
// array 32 -- 0xdd
token[0xdc] = writeN(0xdc, 2, Buffer.prototype.writeUInt16BE);
token[0xdd] = writeN(0xdd, 4, Buffer.prototype.writeUInt32BE);
// map 16 -- 0xde
// map 32 -- 0xdf
token[0xde] = writeN(0xde, 2, Buffer.prototype.writeUInt16BE);
token[0xdf] = writeN(0xdf, 4, Buffer.prototype.writeUInt32BE);
return token;
}
function write1(type) {
return function(encoder, value) {
var offset = encoder.reserve(2);
var buffer = encoder.buffer;
buffer[offset++] = type;
buffer[offset] = value;
};
}
function write2(type) {
return function(encoder, value) {
var offset = encoder.reserve(3);
var buffer = encoder.buffer;
buffer[offset++] = type;
buffer[offset++] = value >>> 8;
buffer[offset] = value;
};
}
function write4(type) {
return function(encoder, value) {
var offset = encoder.reserve(5);
var buffer = encoder.buffer;
buffer[offset++] = type;
buffer[offset++] = value >>> 24;
buffer[offset++] = value >>> 16;
buffer[offset++] = value >>> 8;
buffer[offset] = value;
};
}
/***/ "./node_modules/msgpack-lite/lib/write-type.js":
/*!*****************************************************!*\
!*** ./node_modules/msgpack-lite/lib/write-type.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// write-type.js
exports.getWriteType = getWriteType;
function getWriteType(options) {
var token = WriteToken.getWriteToken(options);
var useraw = options && options.useraw;
var binarraybuffer = HAS_UINT8ARRAY && options && options.binarraybuffer;
var isBuffer = binarraybuffer ? Bufferish.isArrayBuffer : Bufferish.isBuffer;
var bin = binarraybuffer ? bin_arraybuffer : bin_buffer;
var usemap = HAS_MAP && options && options.usemap;
var map = usemap ? map_to_map : obj_to_map;
var writeType = {
"boolean": bool,
"function": nil,
"number": number,
"object": (useraw ? object_raw : object),
"string": _string(useraw ? raw_head_size : str_head_size),
"symbol": nil,
"undefined": nil
};
return writeType;
// false -- 0xc2
// true -- 0xc3
function bool(encoder, value) {
var type = value ? 0xc3 : 0xc2;
token[type](encoder, value);
}
// uint 64 -- 0xcf
function uint64(encoder, value) {
var type = 0xcf;
token[type](encoder, value.toArray());
}
// int 64 -- 0xd3
function int64(encoder, value) {
var type = 0xd3;
token[type](encoder, value.toArray());
}
// str 8 -- 0xd9
// str 16 -- 0xda
// str 32 -- 0xdb
// fixstr -- 0xa0 - 0xbf
function str_head_size(length) {
return (length < 32) ? 1 : (length <= 0xFF) ? 2 : (length <= 0xFFFF) ? 3 : 5;
}
// raw 16 -- 0xda
// raw 32 -- 0xdb
// fixraw -- 0xa0 - 0xbf
function raw_head_size(length) {
return (length < 32) ? 1 : (length <= 0xFFFF) ? 3 : 5;
}
function _string(head_size) {
return string;
// write string
length = BufferProto.write.call(buffer, value, start);
// write header
var type = (actual === 1) ? (0xa0 + length) : (actual <= 3) ? (0xd7 + actual)
: 0xdb;
token[type](encoder, length);
// move cursor
encoder.offset += length;
}
}
// Buffer
if (isBuffer(value)) return bin(encoder, value);
// Array
if (IS_ARRAY(value)) return array(encoder, value);
// int64-buffer objects
if (Uint64BE.isUint64BE(value)) return uint64(encoder, value);
if (Int64BE.isInt64BE(value)) return int64(encoder, value);
// ext formats
var packer = encoder.codec.getExtPacker(value);
if (packer) value = packer(value);
if (value instanceof ExtBuffer) return ext(encoder, value);
// others
object(encoder, value);
}
// nil -- 0xc0
function nil(encoder, value) {
var type = 0xc0;
token[type](encoder, value);
}
// bin 8 -- 0xc4
// bin 16 -- 0xc5
// bin 32 -- 0xc6
function bin_buffer(encoder, value) {
var length = value.length;
var type = (length < 0xFF) ? 0xc4 : (length <= 0xFFFF) ? 0xc5 : 0xc6;
token[type](encoder, length);
encoder.send(value);
}
// fixext 1 -- 0xd4
// fixext 2 -- 0xd5
// fixext 4 -- 0xd6
// fixext 8 -- 0xd7
// fixext 16 -- 0xd8
// ext 8 -- 0xc7
// ext 16 -- 0xc8
// ext 32 -- 0xc9
function ext(encoder, value) {
var buffer = value.buffer;
var length = buffer.length;
var type = extmap[length] || ((length < 0xFF) ? 0xc7 : (length <= 0xFFFF) ?
0xc8 : 0xc9);
token[type](encoder, length);
uint8[value.type](encoder);
encoder.send(buffer);
}
// raw 16 -- 0xda
// raw 32 -- 0xdb
// fixraw -- 0xa0 - 0xbf
function raw(encoder, value) {
var length = value.length;
var type = (length < 32) ? (0xa0 + length) : (length <= 0xFFFF) ? 0xda : 0xdb;
token[type](encoder, length);
encoder.send(value);
}
}
/***/ }),
/***/ "./node_modules/msgpack-lite/lib/write-uint8.js":
/*!******************************************************!*\
!*** ./node_modules/msgpack-lite/lib/write-uint8.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, exports) => {
// write-unit8.js
function write0(type) {
return function(encoder) {
var offset = encoder.reserve(1);
encoder.buffer[offset] = type;
};
}
/***/ }),
/***/ "./node_modules/raw-loader/dist/cjs.js!./frontend/src/loader/NVRWorker.js":
/*!
********************************************************************************!*\
!*** ./node_modules/raw-loader/dist/cjs.js!./frontend/src/loader/NVRWorker.js
***!
\
********************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("/**\r\n Marching
Squares Edge Detection\r\n this is a \"marching ants\" algorithm used to calc the
outline path\r\n\r\n d3-plugin for calculating outline paths\r\n License:
https://github.com/d3/d3-plugins/blob/master/LICENSE\r\n \r\n Copyright (c)
2012-2014, Michael Bostock\r\n All rights reserved.\r\n \r\n * Redistribution
and use in source and binary forms, with or without\r\n modification, are
permitted provided that the following conditions are met:\r\n * Redistributions of
source code must retain the above copyright notice, this\r\n list of conditions
and the following disclaimer.\r\n * Redistributions in binary form must reproduce
the above copyright notice,\r\n this list of conditions and the following
disclaimer in the documentation\r\n and/or other materials provided with the
distribution.\r\n * The name Michael Bostock may not be used to endorse or promote
products\r\n derived from this software without specific prior written
permission.\r\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. \r\n */\r\nconst Geom = {\r\n\t// lookup tables for
marching directions\r\n d3_geom_contourDx: [1, 0, 1, 1,-1, 0,-1, 1,0, 0,0,0,-1,
0,-1,NaN],\r\n d3_geom_contourDy: [0,-1, 0, 0, 0,-1, 0, 0,1,-1,1,1, 0,-1,
0,NaN],\r\n\td3_geom_contourStart(grid) {\r\n\t\tlet x = 0;\r\n\t\tlet y = 0;\r\n\
r\n\t\t// search for a starting point; begin at origin\r\n\t\t// and proceed along
outward-expanding diagonals\r\n\t\twhile (true) {\r\n\t\t \tif (grid(x, y)) return
[x, y];\r\n\r\n\t\t \tif (x === 0) {\r\n\t\t\t\tx = y + 1;\r\n\t\t\t\ty = 0;\r\n\
t\t \t} else {\r\n\t\t\t\tx = x - 1;\r\n\t\t\t\ty = y + 1;\r\n\t\t \t}\r\n\t\t}\
r\n\t},\r\n\tcontour(grid, start) {\r\n\t\tlet s = start // starting point\r\n
let c = []; // contour polygon\r\n \tlet x = s[0]; // current x position\r\n
let y = s[1]; // current y position\r\n let dx = 0; // next x direction\
r\n let dy = 0; // next y direction\r\n let pdx = NaN; // previous
x direction\r\n let pdy = NaN; // previous y direction\r\n let i =
0;\r\n\r\n \tdo {\r\n \t// determine marching squares index \r\n\t\t\ti
= 0;\r\n\t\t\tif (grid(x - 1, y - 1)) i += 1;\r\n\t\t\tif (grid(x, y - 1)) i += 2;\
r\n\t\t\tif (grid(x - 1, y)) i += 4;\r\n\t\t\tif (grid(x, y)) i += 8;\r\n\r\n\t\t\
t// determine next direction\r\n\t\t\tif (i === 6) {\r\n\t\t\t\tdx = pdy === -1 ? -
1 : 1;\r\n\t\t\t\tdy = 0;\r\n\t\t\t} else if (i === 9) {\r\n\t\t\t\tdx = 0;\r\n\t\
t\t\tdy = pdx === 1 ? -1 : 1;\r\n\t\t\t} else {\r\n\t\t\t\tdx =
this.d3_geom_contourDx[i];\r\n\t\t\t\tdy = this.d3_geom_contourDy[i];\r\n\t\t\t}\r\
n\r\n\t\t\t// update contour polygon\r\n\t\t\tif (dx != pdx && dy != pdy) {\r\n\t\
t\t\tc.push([x, y]);\r\n\t\t\t\tpdx = dx;\r\n\t\t\t\tpdy = dy;\r\n\t\t\t}\r\n\r\n\
t\t\tx += dx;\r\n\t\t\ty += dy;\r\n \t} while (s[0] != x || s[1] != y);\r\n\r\n
\treturn c;\r\n\t}\r\n}\r\n/*\r\nconst context = canvas.getContext(\"2d\");\r\n\r\
n\tlet imgData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n\tlet
data = imgData.data;\r\n\r\n\tfunction defineNonTransparent(x, y) {\r\n\t\treturn
data[(y * canvas.width + x) * 4 + 3] >= maxTransparency;\r\n\t}\r\n\r\n\tconst
start = Geom.d3_geom_contourStart(defineNonTransparent);\r\n\tconst points =
Geom.contour(defineNonTransparent, start);\r\n\r\n\tcontext.beginPath();\r\n
context.moveTo(points[0][0], points[0][4]);\r\n for (let i = 0; i <
points.length; i++) {\r\n const point = points[i];\r\n
context.lineTo(point[0], point[1]);\r\n }\r\n context.closePath();\r\n
context.stroke();\r\n*/\r\nfunction createImageOutline(data, width,
maxTransparency) {\r\n\r\n\tfunction defineNonTransparent(x, y) {\r\n\t\treturn
data[(y * width + x) * 4 + 3] >= maxTransparency;\r\n\t}\r\n\r\n\tconst start =
Geom.d3_geom_contourStart(defineNonTransparent);\r\n\tconst points =
Geom.contour(defineNonTransparent, start);\r\n\r\n return points;\r\n}\r\n\r\
nconst handler = {\r\n \"echo\": function(data) {\r\n return data;\r\n
},\r\n \"util.outline\": function(data) {\r\n return
createImageOutline(...data);\r\n }\r\n}\r\n\r\nonerror = (e) => {\r\n
postMessage([\"0\", null, e]);\r\n}\r\n\r\nonmessage = (e) => {\r\n const data =
e.data;\r\n try {\r\n const result = handler[data[1]].call(null,
data[2]);\r\n postMessage([data[0], true, result]);\r\n } catch (err) {\
r\n postMessage([data[0], false, err]);\r\n }\r\n}");
/***/ }),
/***/ "./node_modules/stackframe/stackframe.js":
/*!***********************************************!*\
!*** ./node_modules/stackframe/stackframe.js ***!
\***********************************************/
/***/ (function(module, exports) {
function _capitalize(str) {
return str.charAt(0).toUpperCase() + str.substring(1);
}
function _getter(p) {
return function() {
return this[p];
};
}
function StackFrame(obj) {
if (!obj) return;
for (var i = 0; i < props.length; i++) {
if (obj[props[i]] !== undefined) {
this['set' + _capitalize(props[i])](obj[props[i]]);
}
}
}
StackFrame.prototype = {
getArgs: function() {
return this.args;
},
setArgs: function(v) {
if (Object.prototype.toString.call(v) !== '[object Array]') {
throw new TypeError('Args must be an Array');
}
this.args = v;
},
getEvalOrigin: function() {
return this.evalOrigin;
},
setEvalOrigin: function(v) {
if (v instanceof StackFrame) {
this.evalOrigin = v;
} else if (v instanceof Object) {
this.evalOrigin = new StackFrame(v);
} else {
throw new TypeError('Eval Origin must be an Object or StackFrame');
}
},
toString: function() {
var fileName = this.getFileName() || '';
var lineNumber = this.getLineNumber() || '';
var columnNumber = this.getColumnNumber() || '';
var functionName = this.getFunctionName() || '';
if (this.getIsEval()) {
if (fileName) {
return '[eval] (' + fileName + ':' + lineNumber + ':' +
columnNumber + ')';
}
return '[eval]:' + lineNumber + ':' + columnNumber;
}
if (functionName) {
return functionName + ' (' + fileName + ':' + lineNumber + ':' +
columnNumber + ')';
}
return fileName + ':' + lineNumber + ':' + columnNumber;
}
};
if (locationString.indexOf('@') === 0) {
var parts = /@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(locationString, '');
var fileName = parts[1];
var lineNumber = parts[2];
var columnNumber = parts[3];
}
return StackFrame;
}));
/***/ }),
/***/ "./frontend/style/main.scss":
/*!**********************************!*\
!*** ./frontend/style/main.scss ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */
"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectSt
ylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__
= __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/styleDomAPI.js */
"./node_modules/style-loader/dist/runtime/styleDomAPI.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__
_default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDom
API_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_
IMPORTED_MODULE_2__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */
"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_
IMPORTED_MODULE_2___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttri
butesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MOD
ULE_3__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/insertStyleElement.js */
"./node_modules/style-loader/dist/runtime/insertStyleElement.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MOD
ULE_3___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertSt
yleElement_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODU
LE_4__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/styleTagTransform.js */
"./node_modules/style-loader/dist/runtime/styleTagTransform.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODU
LE_4___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTag
Transform_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var
_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_main_scss
__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !!../../node_modules/css-
loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./main.scss */
"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./
frontend/style/main.scss");
options.styleTagTransform =
(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MOD
ULE_4___default());
options.setAttributes =
(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK
_IMPORTED_MODULE_2___default());
options.insert = function insertIntoTarget(element, options) {
if (document.head) {
document.head.appendChild(element);
}
else {
window.addEventListener("DOMContentLoaded",
function () {
document.head.appendChild(element);
});
}
};
options.domAPI =
(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1_
__default());
options.insertStyleElement =
(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MO
DULE_3___default());
var update =
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0___default()
(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_main_scs
s__WEBPACK_IMPORTED_MODULE_5__["default"], options);
/***/ }),
/***/ "./frontend/style/moomoo.scss":
/*!************************************!*\
!*** ./frontend/style/moomoo.scss ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */
"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectSt
ylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__
= __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/styleDomAPI.js */
"./node_modules/style-loader/dist/runtime/styleDomAPI.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__
_default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDom
API_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_
IMPORTED_MODULE_2__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */
"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_
IMPORTED_MODULE_2___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttri
butesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MOD
ULE_3__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/insertStyleElement.js */
"./node_modules/style-loader/dist/runtime/insertStyleElement.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MOD
ULE_3___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertSt
yleElement_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODU
LE_4__ = __webpack_require__(/*!
!../../node_modules/style-loader/dist/runtime/styleTagTransform.js */
"./node_modules/style-loader/dist/runtime/styleTagTransform.js");
/* harmony import */ var
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODU
LE_4___default =
/*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTag
Transform_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var
_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_moomoo_sc
ss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !!../../node_modules/css-
loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./moomoo.scss */
"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./
frontend/style/moomoo.scss");
options.styleTagTransform =
(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MOD
ULE_4___default());
options.setAttributes =
(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK
_IMPORTED_MODULE_2___default());
options.insert = function insertIntoTarget(element, options) {
if (document.head) {
document.head.appendChild(element);
}
else {
window.addEventListener("DOMContentLoaded",
function () {
document.head.appendChild(element);
});
}
};
options.domAPI =
(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1_
__default());
options.insertStyleElement =
(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MO
DULE_3___default());
var update =
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORT
ED_MODULE_0___default()
(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_moomoo_s
css__WEBPACK_IMPORTED_MODULE_5__["default"], options);
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
\****************************************************************************/
/***/ ((module) => {
"use strict";
function getIndexByIdentifier(identifier) {
var result = -1;
return result;
}
identifiers.push(identifier);
}
return identifiers;
}
api.update(obj = newObj);
} else {
api.remove();
}
};
return updater;
}
if (stylesInDOM[_index].references === 0) {
stylesInDOM[_index].updater();
stylesInDOM.splice(_index, 1);
}
}
lastIdentifiers = newLastIdentifiers;
};
};
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
/*!**********************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
\**********************************************************************/
/***/ ((module) => {
"use strict";
module.exports = insertStyleElement;
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
/*!
**********************************************************************************!
*\
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js
***!
\
**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
if (nonce) {
styleElement.setAttribute("nonce", nonce);
}
}
module.exports = setAttributesWithoutAttributes;
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
/*!***************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
\***************************************************************/
/***/ ((module) => {
"use strict";
if (obj.supports) {
css += "@supports (".concat(obj.supports, ") {");
}
if (obj.media) {
css += "@media ".concat(obj.media, " {");
}
if (needLayer) {
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", "
{");
}
css += obj.css;
if (needLayer) {
css += "}";
}
if (obj.media) {
css += "}";
}
if (obj.supports) {
css += "}";
}
/* istanbul ignore if */
function removeStyleElement(styleElement) {
// istanbul ignore if
if (styleElement.parentNode === null) {
return false;
}
styleElement.parentNode.removeChild(styleElement);
}
/* istanbul ignore next */
function domAPI(options) {
var styleElement = options.insertStyleElement(options);
return {
update: function update(obj) {
apply(styleElement, options, obj);
},
remove: function remove() {
removeStyleElement(styleElement);
}
};
}
module.exports = domAPI;
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
/*!*********************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
\*********************************************************************/
/***/ ((module) => {
"use strict";
styleElement.appendChild(document.createTextNode(css));
}
}
module.exports = styleTagTransform;
/***/ }),
/***/ "./node_modules/tsee/lib/ee.js":
/*!*************************************!*\
!*** ./node_modules/tsee/lib/ee.js ***!
\*************************************/
/***/ (function(__unused_webpack_module, exports) {
"use strict";
/***/ }),
/***/ "./node_modules/tsee/lib/index.js":
/*!****************************************!*\
!*** ./node_modules/tsee/lib/index.js ***!
\****************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
/***/ "./node_modules/tsee/lib/types.js":
/*!****************************************!*\
!*** ./node_modules/tsee/lib/types.js ***!
\****************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ loaded: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module,
module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/async module */
/******/ (() => {
/******/ var webpackQueues = typeof Symbol === "function" ?
Symbol("webpack queues") : "__webpack_queues__";
/******/ var webpackExports = typeof Symbol === "function" ?
Symbol("webpack exports") : "__webpack_exports__";
/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack
error") : "__webpack_error__";
/******/ var resolveQueue = (queue) => {
/******/ if(queue && !queue.d) {
/******/ queue.d = 1;
/******/ queue.forEach((fn) => (fn.r--));
/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
/******/ }
/******/ }
/******/ var wrapDeps = (deps) => (deps.map((dep) => {
/******/ if(dep !== null && typeof dep === "object") {
/******/ if(dep[webpackQueues]) return dep;
/******/ if(dep.then) {
/******/ var queue = [];
/******/ queue.d = 0;
/******/ dep.then((r) => {
/******/ obj[webpackExports] = r;
/******/ resolveQueue(queue);
/******/ }, (e) => {
/******/ obj[webpackError] = e;
/******/ resolveQueue(queue);
/******/ });
/******/ var obj = {};
/******/ obj[webpackQueues] = (fn) => (fn(queue));
/******/ return obj;
/******/ }
/******/ }
/******/ var ret = {};
/******/ ret[webpackQueues] = x => {};
/******/ ret[webpackExports] = dep;
/******/ return ret;
/******/ }));
/******/ __webpack_require__.a = (module, body, hasAwait) => {
/******/ var queue;
/******/ hasAwait && ((queue = []).d = 1);
/******/ var depQueues = new Set();
/******/ var exports = module.exports;
/******/ var currentDeps;
/******/ var outerResolve;
/******/ var reject;
/******/ var promise = new Promise((resolve, rej) => {
/******/ reject = rej;
/******/ outerResolve = resolve;
/******/ });
/******/ promise[webpackExports] = exports;
/******/ promise[webpackQueues] = (fn) => (queue && fn(queue),
depQueues.forEach(fn), promise["catch"](x => {}));
/******/ module.exports = promise;
/******/ body((deps) => {
/******/ currentDeps = wrapDeps(deps);
/******/ var fn;
/******/ var getResult = () => (currentDeps.map((d) => {
/******/ if(d[webpackError]) throw d[webpackError];
/******/ return d[webpackExports];
/******/ }))
/******/ var promise = new Promise((resolve) => {
/******/ fn = () => (resolve(getResult));
/******/ fn.r = 0;
/******/ var fnQueue = (q) => (q !== queue && !
depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
/******/ currentDeps.map((dep) => (dep[webpackQueues]
(fnQueue)));
/******/ });
/******/ return fn.r ? promise : getResult();
/******/ }, (err) => ((err ? reject(promise[webpackError] = err) :
outerResolve(exports)), resolveQueue(queue)));
/******/ queue && (queue.d = 0);
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony
modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !
__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key,
{ enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/harmony module decorator */
/******/ (() => {
/******/ __webpack_require__.hmd = (module) => {
/******/ module = Object.create(module);
/******/ if (!module.children) module.children = [];
/******/ Object.defineProperty(module, 'exports', {
/******/ enumerable: true,
/******/ set: () => {
/******/ throw new Error('ES Modules may not assign
module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);
/******/ }
/******/ });
/******/ return module;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) =>
(Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag,
{ value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value:
true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/nonce */
/******/ (() => {
/******/ __webpack_require__.nc = undefined;
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be
inlined
/******/ var __webpack_exports__ =
__webpack_require__("./frontend/src/main.ts");
/******/
/******/ })()
;