您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Improve your MouseHunt experience. Please only use this when the extension is not available.
当前为
// ==UserScript== // @name 🐭️ MouseHunt Improved // @description Improve your MouseHunt experience. Please only use this when the extension is not available. // @version 0.39.0 // @license MIT // @author bradp // @namespace bradp // @match https://www.mousehuntgame.com/* // @icon https://i.mouse.rip/mh-improved/icon-64.png // @run-at document-end // @grant none // ==/UserScript== const mhImprovedVersion = '0.39.0'; const mhImprovedPlatform = 'userscript'; var mhui = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject2) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject2(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject2(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // node_modules/@sentry/utils/esm/is.js function isError(wat) { switch (objectToString.call(wat)) { case "[object Error]": case "[object Exception]": case "[object DOMException]": return true; default: return isInstanceOf(wat, Error); } } function isBuiltin(wat, className) { return objectToString.call(wat) === `[object ${className}]`; } function isErrorEvent(wat) { return isBuiltin(wat, "ErrorEvent"); } function isDOMError(wat) { return isBuiltin(wat, "DOMError"); } function isDOMException(wat) { return isBuiltin(wat, "DOMException"); } function isString(wat) { return isBuiltin(wat, "String"); } function isParameterizedString(wat) { return typeof wat === "object" && wat !== null && "__sentry_template_string__" in wat && "__sentry_template_values__" in wat; } function isPrimitive(wat) { return wat === null || isParameterizedString(wat) || typeof wat !== "object" && typeof wat !== "function"; } function isPlainObject(wat) { return isBuiltin(wat, "Object"); } function isEvent(wat) { return typeof Event !== "undefined" && isInstanceOf(wat, Event); } function isElement(wat) { return typeof Element !== "undefined" && isInstanceOf(wat, Element); } function isRegExp(wat) { return isBuiltin(wat, "RegExp"); } function isThenable(wat) { return Boolean(wat && wat.then && typeof wat.then === "function"); } function isSyntheticEvent(wat) { return isPlainObject(wat) && "nativeEvent" in wat && "preventDefault" in wat && "stopPropagation" in wat; } function isNaN2(wat) { return typeof wat === "number" && wat !== wat; } function isInstanceOf(wat, base) { try { return wat instanceof base; } catch (_e) { return false; } } function isVueViewModel(wat) { return !!(typeof wat === "object" && wat !== null && (wat.__isVue || wat._isVue)); } var objectToString; var init_is = __esm({ "node_modules/@sentry/utils/esm/is.js"() { objectToString = Object.prototype.toString; } }); // node_modules/@sentry/utils/esm/string.js function truncate(str, max = 0) { if (typeof str !== "string" || max === 0) { return str; } return str.length <= max ? str : `${str.slice(0, max)}...`; } function safeJoin(input, delimiter) { if (!Array.isArray(input)) { return ""; } const output = []; for (let i = 0; i < input.length; i++) { const value = input[i]; try { if (isVueViewModel(value)) { output.push("[VueViewModel]"); } else { output.push(String(value)); } } catch (e) { output.push("[value cannot be serialized]"); } } return output.join(delimiter); } function isMatchingPattern(value, pattern, requireExactStringMatch = false) { if (!isString(value)) { return false; } if (isRegExp(pattern)) { return pattern.test(value); } if (isString(pattern)) { return requireExactStringMatch ? value === pattern : value.includes(pattern); } return false; } function stringMatchesSomePattern(testString, patterns = [], requireExactStringMatch = false) { return patterns.some((pattern) => isMatchingPattern(testString, pattern, requireExactStringMatch)); } var init_string = __esm({ "node_modules/@sentry/utils/esm/string.js"() { init_is(); } }); // node_modules/@sentry/utils/esm/aggregate-errors.js function applyAggregateErrorsToEvent(exceptionFromErrorImplementation, parser, maxValueLimit = 250, key, limit2, event, hint) { if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) { return; } const originalException = event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : void 0; if (originalException) { event.exception.values = truncateAggregateExceptions( aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit2, hint.originalException, key, event.exception.values, originalException, 0 ), maxValueLimit ); } } function aggregateExceptionsFromError(exceptionFromErrorImplementation, parser, limit2, error, key, prevExceptions, exception, exceptionId) { if (prevExceptions.length >= limit2 + 1) { return prevExceptions; } let newExceptions = [...prevExceptions]; if (isInstanceOf(error[key], Error)) { applyExceptionGroupFieldsForParentException(exception, exceptionId); const newException = exceptionFromErrorImplementation(parser, error[key]); const newExceptionId = newExceptions.length; applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId); newExceptions = aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit2, error[key], key, [newException, ...newExceptions], newException, newExceptionId ); } if (Array.isArray(error.errors)) { error.errors.forEach((childError, i) => { if (isInstanceOf(childError, Error)) { applyExceptionGroupFieldsForParentException(exception, exceptionId); const newException = exceptionFromErrorImplementation(parser, childError); const newExceptionId = newExceptions.length; applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId); newExceptions = aggregateExceptionsFromError( exceptionFromErrorImplementation, parser, limit2, childError, key, [newException, ...newExceptions], newException, newExceptionId ); } }); } return newExceptions; } function applyExceptionGroupFieldsForParentException(exception, exceptionId) { exception.mechanism = exception.mechanism || { type: "generic", handled: true }; exception.mechanism = __spreadProps(__spreadValues(__spreadValues({}, exception.mechanism), exception.type === "AggregateError" && { is_exception_group: true }), { exception_id: exceptionId }); } function applyExceptionGroupFieldsForChildException(exception, source, exceptionId, parentId) { exception.mechanism = exception.mechanism || { type: "generic", handled: true }; exception.mechanism = __spreadProps(__spreadValues({}, exception.mechanism), { type: "chained", source, exception_id: exceptionId, parent_id: parentId }); } function truncateAggregateExceptions(exceptions, maxValueLength) { return exceptions.map((exception) => { if (exception.value) { exception.value = truncate(exception.value, maxValueLength); } return exception; }); } var init_aggregate_errors = __esm({ "node_modules/@sentry/utils/esm/aggregate-errors.js"() { init_is(); init_string(); } }); // node_modules/@sentry/utils/esm/worldwide.js function isGlobalObj(obj) { return obj && obj.Math == Math ? obj : void 0; } function getGlobalObject() { return GLOBAL_OBJ; } function getGlobalSingleton(name, creator, obj) { const gbl = obj || GLOBAL_OBJ; const __SENTRY__ = gbl.__SENTRY__ = gbl.__SENTRY__ || {}; const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator()); return singleton; } var GLOBAL_OBJ; var init_worldwide = __esm({ "node_modules/@sentry/utils/esm/worldwide.js"() { GLOBAL_OBJ = typeof globalThis == "object" && isGlobalObj(globalThis) || // eslint-disable-next-line no-restricted-globals typeof window == "object" && isGlobalObj(window) || typeof self == "object" && isGlobalObj(self) || typeof global == "object" && isGlobalObj(global) || /* @__PURE__ */ function() { return this; }() || {}; } }); // node_modules/@sentry/utils/esm/browser.js function htmlTreeAsString(elem, options = {}) { if (!elem) { return "<unknown>"; } try { let currentElem = elem; const MAX_TRAVERSE_HEIGHT = 5; const out = []; let height = 0; let len = 0; const separator = " > "; const sepLength = separator.length; let nextStr; const keyAttrs = Array.isArray(options) ? options : options.keyAttrs; const maxStringLength = !Array.isArray(options) && options.maxStringLength || DEFAULT_MAX_STRING_LENGTH; while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) { nextStr = _htmlElementAsString(currentElem, keyAttrs); if (nextStr === "html" || height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength) { break; } out.push(nextStr); len += nextStr.length; currentElem = currentElem.parentNode; } return out.reverse().join(separator); } catch (_oO) { return "<unknown>"; } } function _htmlElementAsString(el, keyAttrs) { const elem = el; const out = []; let className; let classes; let key; let attr; let i; if (!elem || !elem.tagName) { return ""; } if (WINDOW.HTMLElement) { if (elem instanceof HTMLElement && elem.dataset && elem.dataset["sentryComponent"]) { return elem.dataset["sentryComponent"]; } } out.push(elem.tagName.toLowerCase()); const keyAttrPairs = keyAttrs && keyAttrs.length ? keyAttrs.filter((keyAttr) => elem.getAttribute(keyAttr)).map((keyAttr) => [keyAttr, elem.getAttribute(keyAttr)]) : null; if (keyAttrPairs && keyAttrPairs.length) { keyAttrPairs.forEach((keyAttrPair) => { out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`); }); } else { if (elem.id) { out.push(`#${elem.id}`); } className = elem.className; if (className && isString(className)) { classes = className.split(/\s+/); for (i = 0; i < classes.length; i++) { out.push(`.${classes[i]}`); } } } const allowedAttrs = ["aria-label", "type", "name", "title", "alt"]; for (i = 0; i < allowedAttrs.length; i++) { key = allowedAttrs[i]; attr = elem.getAttribute(key); if (attr) { out.push(`[${key}="${attr}"]`); } } return out.join(""); } function getLocationHref() { try { return WINDOW.document.location.href; } catch (oO) { return ""; } } function getComponentName(elem) { if (!WINDOW.HTMLElement) { return null; } let currentElem = elem; const MAX_TRAVERSE_HEIGHT = 5; for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) { if (!currentElem) { return null; } if (currentElem instanceof HTMLElement && currentElem.dataset["sentryComponent"]) { return currentElem.dataset["sentryComponent"]; } currentElem = currentElem.parentNode; } return null; } var WINDOW, DEFAULT_MAX_STRING_LENGTH; var init_browser = __esm({ "node_modules/@sentry/utils/esm/browser.js"() { init_is(); init_worldwide(); WINDOW = getGlobalObject(); DEFAULT_MAX_STRING_LENGTH = 80; } }); // node_modules/@sentry/utils/esm/debug-build.js var DEBUG_BUILD; var init_debug_build = __esm({ "node_modules/@sentry/utils/esm/debug-build.js"() { DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; } }); // node_modules/@sentry/utils/esm/logger.js function consoleSandbox(callback) { if (!("console" in GLOBAL_OBJ)) { return callback(); } const console2 = GLOBAL_OBJ.console; const wrappedFuncs = {}; const wrappedLevels = Object.keys(originalConsoleMethods); wrappedLevels.forEach((level) => { const originalConsoleMethod = originalConsoleMethods[level]; wrappedFuncs[level] = console2[level]; console2[level] = originalConsoleMethod; }); try { return callback(); } finally { wrappedLevels.forEach((level) => { console2[level] = wrappedFuncs[level]; }); } } function makeLogger() { let enabled = false; const logger2 = { enable: () => { enabled = true; }, disable: () => { enabled = false; }, isEnabled: () => enabled }; if (DEBUG_BUILD) { CONSOLE_LEVELS.forEach((name) => { logger2[name] = (...args) => { if (enabled) { consoleSandbox(() => { GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args); }); } }; }); } else { CONSOLE_LEVELS.forEach((name) => { logger2[name] = () => void 0; }); } return logger2; } var PREFIX, CONSOLE_LEVELS, originalConsoleMethods, logger; var init_logger = __esm({ "node_modules/@sentry/utils/esm/logger.js"() { init_debug_build(); init_worldwide(); PREFIX = "Sentry Logger "; CONSOLE_LEVELS = [ "debug", "info", "warn", "error", "log", "assert", "trace" ]; originalConsoleMethods = {}; logger = makeLogger(); } }); // node_modules/@sentry/utils/esm/object.js function fill(source, name, replacementFactory) { if (!(name in source)) { return; } const original = source[name]; const wrapped = replacementFactory(original); if (typeof wrapped === "function") { markFunctionWrapped(wrapped, original); } source[name] = wrapped; } function addNonEnumerableProperty(obj, name, value) { try { Object.defineProperty(obj, name, { // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it value, writable: true, configurable: true }); } catch (o_O) { DEBUG_BUILD && logger.log(`Failed to add non-enumerable property "${name}" to object`, obj); } } function markFunctionWrapped(wrapped, original) { try { const proto = original.prototype || {}; wrapped.prototype = original.prototype = proto; addNonEnumerableProperty(wrapped, "__sentry_original__", original); } catch (o_O) { } } function getOriginalFunction(func) { return func.__sentry_original__; } function convertToPlainObject(value) { if (isError(value)) { return __spreadValues({ message: value.message, name: value.name, stack: value.stack }, getOwnProperties(value)); } else if (isEvent(value)) { const newObj = __spreadValues({ type: value.type, target: serializeEventTarget(value.target), currentTarget: serializeEventTarget(value.currentTarget) }, getOwnProperties(value)); if (typeof CustomEvent !== "undefined" && isInstanceOf(value, CustomEvent)) { newObj.detail = value.detail; } return newObj; } else { return value; } } function serializeEventTarget(target) { try { return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target); } catch (_oO) { return "<unknown>"; } } function getOwnProperties(obj) { if (typeof obj === "object" && obj !== null) { const extractedProps = {}; for (const property in obj) { if (Object.prototype.hasOwnProperty.call(obj, property)) { extractedProps[property] = obj[property]; } } return extractedProps; } else { return {}; } } function extractExceptionKeysForMessage(exception, maxLength = 40) { const keys = Object.keys(convertToPlainObject(exception)); keys.sort(); if (!keys.length) { return "[object has no keys]"; } if (keys[0].length >= maxLength) { return truncate(keys[0], maxLength); } for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) { const serialized = keys.slice(0, includedKeys).join(", "); if (serialized.length > maxLength) { continue; } if (includedKeys === keys.length) { return serialized; } return truncate(serialized, maxLength); } return ""; } function dropUndefinedKeys(inputValue) { const memoizationMap = /* @__PURE__ */ new Map(); return _dropUndefinedKeys(inputValue, memoizationMap); } function _dropUndefinedKeys(inputValue, memoizationMap) { if (isPojo(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = {}; memoizationMap.set(inputValue, returnValue); for (const key of Object.keys(inputValue)) { if (typeof inputValue[key] !== "undefined") { returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap); } } return returnValue; } if (Array.isArray(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = []; memoizationMap.set(inputValue, returnValue); inputValue.forEach((item) => { returnValue.push(_dropUndefinedKeys(item, memoizationMap)); }); return returnValue; } return inputValue; } function isPojo(input) { if (!isPlainObject(input)) { return false; } try { const name = Object.getPrototypeOf(input).constructor.name; return !name || name === "Object"; } catch (e) { return true; } } var init_object = __esm({ "node_modules/@sentry/utils/esm/object.js"() { init_browser(); init_debug_build(); init_is(); init_logger(); init_string(); } }); // node_modules/@sentry/utils/esm/stacktrace.js function getFunctionName(fn) { try { if (!fn || typeof fn !== "function") { return defaultFunctionName; } return fn.name || defaultFunctionName; } catch (e) { return defaultFunctionName; } } var defaultFunctionName; var init_stacktrace = __esm({ "node_modules/@sentry/utils/esm/stacktrace.js"() { defaultFunctionName = "<anonymous>"; } }); // node_modules/@sentry/utils/esm/instrument/_handlers.js function addHandler(type, handler) { handlers[type] = handlers[type] || []; handlers[type].push(handler); } function maybeInstrument(type, instrumentFn) { if (!instrumented[type]) { instrumentFn(); instrumented[type] = true; } } function triggerHandlers(type, data) { const typeHandlers = type && handlers[type]; if (!typeHandlers) { return; } for (const handler of typeHandlers) { try { handler(data); } catch (e) { DEBUG_BUILD && logger.error( `Error while triggering instrumentation handler. Type: ${type} Name: ${getFunctionName(handler)} Error:`, e ); } } } var handlers, instrumented; var init_handlers = __esm({ "node_modules/@sentry/utils/esm/instrument/_handlers.js"() { init_debug_build(); init_logger(); init_stacktrace(); handlers = {}; instrumented = {}; } }); // node_modules/@sentry/utils/esm/instrument/console.js function addConsoleInstrumentationHandler(handler) { const type = "console"; addHandler(type, handler); maybeInstrument(type, instrumentConsole); } function instrumentConsole() { if (!("console" in GLOBAL_OBJ)) { return; } CONSOLE_LEVELS.forEach(function(level) { if (!(level in GLOBAL_OBJ.console)) { return; } fill(GLOBAL_OBJ.console, level, function(originalConsoleMethod) { originalConsoleMethods[level] = originalConsoleMethod; return function(...args) { const handlerData = { args, level }; triggerHandlers("console", handlerData); const log = originalConsoleMethods[level]; log && log.apply(GLOBAL_OBJ.console, args); }; }); }); } var init_console = __esm({ "node_modules/@sentry/utils/esm/instrument/console.js"() { init_logger(); init_object(); init_worldwide(); init_handlers(); } }); // node_modules/@sentry/utils/esm/misc.js function uuid4() { const gbl = GLOBAL_OBJ; const crypto2 = gbl.crypto || gbl.msCrypto; let getRandomByte = () => Math.random() * 16; try { if (crypto2 && crypto2.randomUUID) { return crypto2.randomUUID().replace(/-/g, ""); } if (crypto2 && crypto2.getRandomValues) { getRandomByte = () => { const typedArray = new Uint8Array(1); crypto2.getRandomValues(typedArray); return typedArray[0]; }; } } catch (_) { } return ("10000000100040008000" + 1e11).replace( /[018]/g, (c) => ( // eslint-disable-next-line no-bitwise (c ^ (getRandomByte() & 15) >> c / 4).toString(16) ) ); } function getFirstException(event) { return event.exception && event.exception.values ? event.exception.values[0] : void 0; } function getEventDescription(event) { const { message, event_id: eventId } = event; if (message) { return message; } const firstException = getFirstException(event); if (firstException) { if (firstException.type && firstException.value) { return `${firstException.type}: ${firstException.value}`; } return firstException.type || firstException.value || eventId || "<unknown>"; } return eventId || "<unknown>"; } function addExceptionTypeValue(event, value, type) { const exception = event.exception = event.exception || {}; const values = exception.values = exception.values || []; const firstException = values[0] = values[0] || {}; if (!firstException.value) { firstException.value = value || ""; } if (!firstException.type) { firstException.type = type || "Error"; } } function addExceptionMechanism(event, newMechanism) { const firstException = getFirstException(event); if (!firstException) { return; } const defaultMechanism = { type: "generic", handled: true }; const currentMechanism = firstException.mechanism; firstException.mechanism = __spreadValues(__spreadValues(__spreadValues({}, defaultMechanism), currentMechanism), newMechanism); if (newMechanism && "data" in newMechanism) { const mergedData = __spreadValues(__spreadValues({}, currentMechanism && currentMechanism.data), newMechanism.data); firstException.mechanism.data = mergedData; } } function arrayify(maybeArray) { return Array.isArray(maybeArray) ? maybeArray : [maybeArray]; } var init_misc = __esm({ "node_modules/@sentry/utils/esm/misc.js"() { init_worldwide(); } }); // node_modules/@sentry/utils/esm/instrument/dom.js function addClickKeypressInstrumentationHandler(handler) { const type = "dom"; addHandler(type, handler); maybeInstrument(type, instrumentDOM); } function instrumentDOM() { if (!WINDOW2.document) { return; } const triggerDOMHandler = triggerHandlers.bind(null, "dom"); const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true); WINDOW2.document.addEventListener("click", globalDOMEventHandler, false); WINDOW2.document.addEventListener("keypress", globalDOMEventHandler, false); ["EventTarget", "Node"].forEach((target) => { const proto = WINDOW2[target] && WINDOW2[target].prototype; if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty("addEventListener")) { return; } fill(proto, "addEventListener", function(originalAddEventListener) { return function(type, listener2, options) { if (type === "click" || type == "keypress") { try { const el = this; const handlers2 = el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {}; const handlerForType = handlers2[type] = handlers2[type] || { refCount: 0 }; if (!handlerForType.handler) { const handler = makeDOMEventHandler(triggerDOMHandler); handlerForType.handler = handler; originalAddEventListener.call(this, type, handler, options); } handlerForType.refCount++; } catch (e) { } } return originalAddEventListener.call(this, type, listener2, options); }; }); fill( proto, "removeEventListener", function(originalRemoveEventListener) { return function(type, listener2, options) { if (type === "click" || type == "keypress") { try { const el = this; const handlers2 = el.__sentry_instrumentation_handlers__ || {}; const handlerForType = handlers2[type]; if (handlerForType) { handlerForType.refCount--; if (handlerForType.refCount <= 0) { originalRemoveEventListener.call(this, type, handlerForType.handler, options); handlerForType.handler = void 0; delete handlers2[type]; } if (Object.keys(handlers2).length === 0) { delete el.__sentry_instrumentation_handlers__; } } } catch (e) { } } return originalRemoveEventListener.call(this, type, listener2, options); }; } ); }); } function isSimilarToLastCapturedEvent(event) { if (event.type !== lastCapturedEventType) { return false; } try { if (!event.target || event.target._sentryId !== lastCapturedEventTargetId) { return false; } } catch (e) { } return true; } function shouldSkipDOMEvent(eventType, target) { if (eventType !== "keypress") { return false; } if (!target || !target.tagName) { return true; } if (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable) { return false; } return true; } function makeDOMEventHandler(handler, globalListener = false) { return (event) => { if (!event || event["_sentryCaptured"]) { return; } const target = getEventTarget(event); if (shouldSkipDOMEvent(event.type, target)) { return; } addNonEnumerableProperty(event, "_sentryCaptured", true); if (target && !target._sentryId) { addNonEnumerableProperty(target, "_sentryId", uuid4()); } const name = event.type === "keypress" ? "input" : event.type; if (!isSimilarToLastCapturedEvent(event)) { const handlerData = { event, name, global: globalListener }; handler(handlerData); lastCapturedEventType = event.type; lastCapturedEventTargetId = target ? target._sentryId : void 0; } clearTimeout(debounceTimerID); debounceTimerID = WINDOW2.setTimeout(() => { lastCapturedEventTargetId = void 0; lastCapturedEventType = void 0; }, DEBOUNCE_DURATION); }; } function getEventTarget(event) { try { return event.target; } catch (e) { return null; } } var WINDOW2, DEBOUNCE_DURATION, debounceTimerID, lastCapturedEventType, lastCapturedEventTargetId; var init_dom = __esm({ "node_modules/@sentry/utils/esm/instrument/dom.js"() { init_misc(); init_object(); init_worldwide(); init_handlers(); WINDOW2 = GLOBAL_OBJ; DEBOUNCE_DURATION = 1e3; } }); // node_modules/@sentry/utils/esm/supports.js function supportsFetch() { if (!("fetch" in WINDOW3)) { return false; } try { new Headers(); new Request("http://www.example.com"); new Response(); return true; } catch (e) { return false; } } function isNativeFetch(func) { return func && /^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString()); } function supportsNativeFetch() { if (typeof EdgeRuntime === "string") { return true; } if (!supportsFetch()) { return false; } if (isNativeFetch(WINDOW3.fetch)) { return true; } let result = false; const doc = WINDOW3.document; if (doc && typeof doc.createElement === "function") { try { const sandbox = doc.createElement("iframe"); sandbox.hidden = true; doc.head.appendChild(sandbox); if (sandbox.contentWindow && sandbox.contentWindow.fetch) { result = isNativeFetch(sandbox.contentWindow.fetch); } doc.head.removeChild(sandbox); } catch (err) { DEBUG_BUILD && logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ", err); } } return result; } var WINDOW3; var init_supports = __esm({ "node_modules/@sentry/utils/esm/supports.js"() { init_debug_build(); init_logger(); init_worldwide(); WINDOW3 = getGlobalObject(); } }); // node_modules/@sentry/utils/esm/instrument/fetch.js function addFetchInstrumentationHandler(handler) { const type = "fetch"; addHandler(type, handler); maybeInstrument(type, instrumentFetch); } function instrumentFetch() { if (!supportsNativeFetch()) { return; } fill(GLOBAL_OBJ, "fetch", function(originalFetch) { return function(...args) { const { method, url } = parseFetchArgs(args); const handlerData = { args, fetchData: { method, url }, startTimestamp: Date.now() }; triggerHandlers("fetch", __spreadValues({}, handlerData)); return originalFetch.apply(GLOBAL_OBJ, args).then( (response) => { const finishedHandlerData = __spreadProps(__spreadValues({}, handlerData), { endTimestamp: Date.now(), response }); triggerHandlers("fetch", finishedHandlerData); return response; }, (error) => { const erroredHandlerData = __spreadProps(__spreadValues({}, handlerData), { endTimestamp: Date.now(), error }); triggerHandlers("fetch", erroredHandlerData); throw error; } ); }; }); } function hasProp(obj, prop) { return !!obj && typeof obj === "object" && !!obj[prop]; } function getUrlFromResource(resource) { if (typeof resource === "string") { return resource; } if (!resource) { return ""; } if (hasProp(resource, "url")) { return resource.url; } if (resource.toString) { return resource.toString(); } return ""; } function parseFetchArgs(fetchArgs) { if (fetchArgs.length === 0) { return { method: "GET", url: "" }; } if (fetchArgs.length === 2) { const [url, options] = fetchArgs; return { url: getUrlFromResource(url), method: hasProp(options, "method") ? String(options.method).toUpperCase() : "GET" }; } const arg = fetchArgs[0]; return { url: getUrlFromResource(arg), method: hasProp(arg, "method") ? String(arg.method).toUpperCase() : "GET" }; } var init_fetch = __esm({ "node_modules/@sentry/utils/esm/instrument/fetch.js"() { init_object(); init_supports(); init_worldwide(); init_handlers(); } }); // node_modules/@sentry/utils/esm/instrument/globalError.js function addGlobalErrorInstrumentationHandler(handler) { const type = "error"; addHandler(type, handler); maybeInstrument(type, instrumentError); } function instrumentError() { _oldOnErrorHandler = GLOBAL_OBJ.onerror; GLOBAL_OBJ.onerror = function(msg, url, line, column, error) { const handlerData = { column, error, line, msg, url }; triggerHandlers("error", handlerData); if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) { return _oldOnErrorHandler.apply(this, arguments); } return false; }; GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true; } var _oldOnErrorHandler; var init_globalError = __esm({ "node_modules/@sentry/utils/esm/instrument/globalError.js"() { init_worldwide(); init_handlers(); _oldOnErrorHandler = null; } }); // node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js function addGlobalUnhandledRejectionInstrumentationHandler(handler) { const type = "unhandledrejection"; addHandler(type, handler); maybeInstrument(type, instrumentUnhandledRejection); } function instrumentUnhandledRejection() { _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection; GLOBAL_OBJ.onunhandledrejection = function(e) { const handlerData = e; triggerHandlers("unhandledrejection", handlerData); if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) { return _oldOnUnhandledRejectionHandler.apply(this, arguments); } return true; }; GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true; } var _oldOnUnhandledRejectionHandler; var init_globalUnhandledRejection = __esm({ "node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js"() { init_worldwide(); init_handlers(); _oldOnUnhandledRejectionHandler = null; } }); // node_modules/@sentry/utils/esm/vendor/supportsHistory.js function supportsHistory() { const chromeVar = WINDOW4.chrome; const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime; const hasHistoryApi = "history" in WINDOW4 && !!WINDOW4.history.pushState && !!WINDOW4.history.replaceState; return !isChromePackagedApp && hasHistoryApi; } var WINDOW4; var init_supportsHistory = __esm({ "node_modules/@sentry/utils/esm/vendor/supportsHistory.js"() { init_worldwide(); WINDOW4 = getGlobalObject(); } }); // node_modules/@sentry/utils/esm/instrument/history.js function addHistoryInstrumentationHandler(handler) { const type = "history"; addHandler(type, handler); maybeInstrument(type, instrumentHistory); } function instrumentHistory() { if (!supportsHistory()) { return; } const oldOnPopState = WINDOW5.onpopstate; WINDOW5.onpopstate = function(...args) { const to = WINDOW5.location.href; const from = lastHref; lastHref = to; const handlerData = { from, to }; triggerHandlers("history", handlerData); if (oldOnPopState) { try { return oldOnPopState.apply(this, args); } catch (_oO) { } } }; function historyReplacementFunction(originalHistoryFunction) { return function(...args) { const url = args.length > 2 ? args[2] : void 0; if (url) { const from = lastHref; const to = String(url); lastHref = to; const handlerData = { from, to }; triggerHandlers("history", handlerData); } return originalHistoryFunction.apply(this, args); }; } fill(WINDOW5.history, "pushState", historyReplacementFunction); fill(WINDOW5.history, "replaceState", historyReplacementFunction); } var WINDOW5, lastHref; var init_history = __esm({ "node_modules/@sentry/utils/esm/instrument/history.js"() { init_object(); init_worldwide(); init_supportsHistory(); init_handlers(); WINDOW5 = GLOBAL_OBJ; } }); // node_modules/@sentry/utils/esm/instrument/xhr.js function addXhrInstrumentationHandler(handler) { const type = "xhr"; addHandler(type, handler); maybeInstrument(type, instrumentXHR); } function instrumentXHR() { if (!WINDOW6.XMLHttpRequest) { return; } const xhrproto = XMLHttpRequest.prototype; fill(xhrproto, "open", function(originalOpen) { return function(...args) { const startTimestamp = Date.now(); const method = isString(args[0]) ? args[0].toUpperCase() : void 0; const url = parseUrl(args[1]); if (!method || !url) { return originalOpen.apply(this, args); } this[SENTRY_XHR_DATA_KEY] = { method, url, request_headers: {} }; if (method === "POST" && url.match(/sentry_key/)) { this.__sentry_own_request__ = true; } const onreadystatechangeHandler = () => { const xhrInfo = this[SENTRY_XHR_DATA_KEY]; if (!xhrInfo) { return; } if (this.readyState === 4) { try { xhrInfo.status_code = this.status; } catch (e) { } const handlerData = { args: [method, url], endTimestamp: Date.now(), startTimestamp, xhr: this }; triggerHandlers("xhr", handlerData); } }; if ("onreadystatechange" in this && typeof this.onreadystatechange === "function") { fill(this, "onreadystatechange", function(original) { return function(...readyStateArgs) { onreadystatechangeHandler(); return original.apply(this, readyStateArgs); }; }); } else { this.addEventListener("readystatechange", onreadystatechangeHandler); } fill(this, "setRequestHeader", function(original) { return function(...setRequestHeaderArgs) { const [header, value] = setRequestHeaderArgs; const xhrInfo = this[SENTRY_XHR_DATA_KEY]; if (xhrInfo && isString(header) && isString(value)) { xhrInfo.request_headers[header.toLowerCase()] = value; } return original.apply(this, setRequestHeaderArgs); }; }); return originalOpen.apply(this, args); }; }); fill(xhrproto, "send", function(originalSend) { return function(...args) { const sentryXhrData = this[SENTRY_XHR_DATA_KEY]; if (!sentryXhrData) { return originalSend.apply(this, args); } if (args[0] !== void 0) { sentryXhrData.body = args[0]; } const handlerData = { args: [sentryXhrData.method, sentryXhrData.url], startTimestamp: Date.now(), xhr: this }; triggerHandlers("xhr", handlerData); return originalSend.apply(this, args); }; }); } function parseUrl(url) { if (isString(url)) { return url; } try { return url.toString(); } catch (e2) { } return void 0; } var WINDOW6, SENTRY_XHR_DATA_KEY; var init_xhr = __esm({ "node_modules/@sentry/utils/esm/instrument/xhr.js"() { init_is(); init_object(); init_worldwide(); init_handlers(); WINDOW6 = GLOBAL_OBJ; SENTRY_XHR_DATA_KEY = "__sentry_xhr_v3__"; } }); // node_modules/@sentry/utils/esm/memo.js function memoBuilder() { const hasWeakSet = typeof WeakSet === "function"; const inner = hasWeakSet ? /* @__PURE__ */ new WeakSet() : []; function memoize(obj) { if (hasWeakSet) { if (inner.has(obj)) { return true; } inner.add(obj); return false; } for (let i = 0; i < inner.length; i++) { const value = inner[i]; if (value === obj) { return true; } } inner.push(obj); return false; } function unmemoize(obj) { if (hasWeakSet) { inner.delete(obj); } else { for (let i = 0; i < inner.length; i++) { if (inner[i] === obj) { inner.splice(i, 1); break; } } } } return [memoize, unmemoize]; } var init_memo = __esm({ "node_modules/@sentry/utils/esm/memo.js"() { } }); // node_modules/@sentry/utils/esm/normalize.js function normalize(input, depth = 100, maxProperties = Infinity) { try { return visit("", input, depth, maxProperties); } catch (err) { return { ERROR: `**non-serializable** (${err})` }; } } function normalizeToSize(object, depth = 3, maxSize = 100 * 1024) { const normalized = normalize(object, depth); if (jsonSize(normalized) > maxSize) { return normalizeToSize(object, depth - 1, maxSize); } return normalized; } function visit(key, value, depth = Infinity, maxProperties = Infinity, memo = memoBuilder()) { const [memoize, unmemoize] = memo; if (value == null || // this matches null and undefined -> eqeq not eqeqeq ["number", "boolean", "string"].includes(typeof value) && !isNaN2(value)) { return value; } const stringified = stringifyValue(key, value); if (!stringified.startsWith("[object ")) { return stringified; } if (value["__sentry_skip_normalization__"]) { return value; } const remainingDepth = typeof value["__sentry_override_normalization_depth__"] === "number" ? value["__sentry_override_normalization_depth__"] : depth; if (remainingDepth === 0) { return stringified.replace("object ", ""); } if (memoize(value)) { return "[Circular ~]"; } const valueWithToJSON = value; if (valueWithToJSON && typeof valueWithToJSON.toJSON === "function") { try { const jsonValue = valueWithToJSON.toJSON(); return visit("", jsonValue, remainingDepth - 1, maxProperties, memo); } catch (err) { } } const normalized = Array.isArray(value) ? [] : {}; let numAdded = 0; const visitable = convertToPlainObject(value); for (const visitKey in visitable) { if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) { continue; } if (numAdded >= maxProperties) { normalized[visitKey] = "[MaxProperties ~]"; break; } const visitValue = visitable[visitKey]; normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo); numAdded++; } unmemoize(value); return normalized; } function stringifyValue(key, value) { try { if (key === "domain" && value && typeof value === "object" && value._events) { return "[Domain]"; } if (key === "domainEmitter") { return "[DomainEmitter]"; } if (typeof global !== "undefined" && value === global) { return "[Global]"; } if (typeof window !== "undefined" && value === window) { return "[Window]"; } if (typeof document !== "undefined" && value === document) { return "[Document]"; } if (isVueViewModel(value)) { return "[VueViewModel]"; } if (isSyntheticEvent(value)) { return "[SyntheticEvent]"; } if (typeof value === "number" && value !== value) { return "[NaN]"; } if (typeof value === "function") { return `[Function: ${getFunctionName(value)}]`; } if (typeof value === "symbol") { return `[${String(value)}]`; } if (typeof value === "bigint") { return `[BigInt: ${String(value)}]`; } const objName = getConstructorName(value); if (/^HTML(\w*)Element$/.test(objName)) { return `[HTMLElement: ${objName}]`; } return `[object ${objName}]`; } catch (err) { return `**non-serializable** (${err})`; } } function getConstructorName(value) { const prototype = Object.getPrototypeOf(value); return prototype ? prototype.constructor.name : "null prototype"; } function utf8Length(value) { return ~-encodeURI(value).split(/%..|./).length; } function jsonSize(value) { return utf8Length(JSON.stringify(value)); } var init_normalize = __esm({ "node_modules/@sentry/utils/esm/normalize.js"() { init_is(); init_memo(); init_object(); init_stacktrace(); } }); // node_modules/@sentry/utils/esm/syncpromise.js var States, SyncPromise; var init_syncpromise = __esm({ "node_modules/@sentry/utils/esm/syncpromise.js"() { init_is(); (function(States2) { const PENDING = 0; States2[States2["PENDING"] = PENDING] = "PENDING"; const RESOLVED = 1; States2[States2["RESOLVED"] = RESOLVED] = "RESOLVED"; const REJECTED = 2; States2[States2["REJECTED"] = REJECTED] = "REJECTED"; })(States || (States = {})); SyncPromise = class _SyncPromise { constructor(executor) { _SyncPromise.prototype.__init.call(this); _SyncPromise.prototype.__init2.call(this); _SyncPromise.prototype.__init3.call(this); _SyncPromise.prototype.__init4.call(this); this._state = States.PENDING; this._handlers = []; try { executor(this._resolve, this._reject); } catch (e) { this._reject(e); } } /** JSDoc */ then(onfulfilled, onrejected) { return new _SyncPromise((resolve, reject2) => { this._handlers.push([ false, (result) => { if (!onfulfilled) { resolve(result); } else { try { resolve(onfulfilled(result)); } catch (e) { reject2(e); } } }, (reason) => { if (!onrejected) { reject2(reason); } else { try { resolve(onrejected(reason)); } catch (e) { reject2(e); } } } ]); this._executeHandlers(); }); } /** JSDoc */ catch(onrejected) { return this.then((val) => val, onrejected); } /** JSDoc */ finally(onfinally) { return new _SyncPromise((resolve, reject2) => { let val; let isRejected; return this.then( (value) => { isRejected = false; val = value; if (onfinally) { onfinally(); } }, (reason) => { isRejected = true; val = reason; if (onfinally) { onfinally(); } } ).then(() => { if (isRejected) { reject2(val); return; } resolve(val); }); }); } /** JSDoc */ __init() { this._resolve = (value) => { this._setResult(States.RESOLVED, value); }; } /** JSDoc */ __init2() { this._reject = (reason) => { this._setResult(States.REJECTED, reason); }; } /** JSDoc */ __init3() { this._setResult = (state, value) => { if (this._state !== States.PENDING) { return; } if (isThenable(value)) { void value.then(this._resolve, this._reject); return; } this._state = state; this._value = value; this._executeHandlers(); }; } /** JSDoc */ __init4() { this._executeHandlers = () => { if (this._state === States.PENDING) { return; } const cachedHandlers = this._handlers.slice(); this._handlers = []; cachedHandlers.forEach((handler) => { if (handler[0]) { return; } if (this._state === States.RESOLVED) { handler[1](this._value); } if (this._state === States.REJECTED) { handler[2](this._value); } handler[0] = true; }); }; } }; } }); // node_modules/@sentry/utils/esm/url.js function parseUrl2(url) { if (!url) { return {}; } const match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/); if (!match) { return {}; } const query = match[6] || ""; const fragment = match[8] || ""; return { host: match[4], path: match[5], protocol: match[2], search: query, hash: fragment, relative: match[5] + query + fragment // everything minus origin }; } var init_url = __esm({ "node_modules/@sentry/utils/esm/url.js"() { } }); // node_modules/@sentry/utils/esm/severity.js function severityLevelFromString(level) { return level === "warn" ? "warning" : validSeverityLevels.includes(level) ? level : "log"; } var validSeverityLevels; var init_severity = __esm({ "node_modules/@sentry/utils/esm/severity.js"() { validSeverityLevels = ["fatal", "error", "warning", "log", "info", "debug"]; } }); // node_modules/@sentry/utils/esm/time.js function dateTimestampInSeconds() { return Date.now() / ONE_SECOND_IN_MS; } function createUnixTimestampInSecondsFunc() { const { performance } = GLOBAL_OBJ; if (!performance || !performance.now) { return dateTimestampInSeconds; } const approxStartingTimeOrigin = Date.now() - performance.now(); const timeOrigin = performance.timeOrigin == void 0 ? approxStartingTimeOrigin : performance.timeOrigin; return () => { return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS; }; } var ONE_SECOND_IN_MS, timestampInSeconds, _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin; var init_time = __esm({ "node_modules/@sentry/utils/esm/time.js"() { init_worldwide(); ONE_SECOND_IN_MS = 1e3; timestampInSeconds = createUnixTimestampInSecondsFunc(); browserPerformanceTimeOrigin = (() => { const { performance } = GLOBAL_OBJ; if (!performance || !performance.now) { _browserPerformanceTimeOriginMode = "none"; return void 0; } const threshold = 3600 * 1e3; const performanceNow = performance.now(); const dateNow = Date.now(); const timeOriginDelta = performance.timeOrigin ? Math.abs(performance.timeOrigin + performanceNow - dateNow) : threshold; const timeOriginIsReliable = timeOriginDelta < threshold; const navigationStart = performance.timing && performance.timing.navigationStart; const hasNavigationStart = typeof navigationStart === "number"; const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold; const navigationStartIsReliable = navigationStartDelta < threshold; if (timeOriginIsReliable || navigationStartIsReliable) { if (timeOriginDelta <= navigationStartDelta) { _browserPerformanceTimeOriginMode = "timeOrigin"; return performance.timeOrigin; } else { _browserPerformanceTimeOriginMode = "navigationStart"; return navigationStart; } } _browserPerformanceTimeOriginMode = "dateNow"; return dateNow; })(); } }); // node_modules/@sentry/utils/esm/eventbuilder.js function parseStackFrames(stackParser, error) { return stackParser(error.stack || "", 1); } function exceptionFromError(stackParser, error) { const exception = { type: error.name || error.constructor.name, value: error.message }; const frames = parseStackFrames(stackParser, error); if (frames.length) { exception.stacktrace = { frames }; } return exception; } var init_eventbuilder = __esm({ "node_modules/@sentry/utils/esm/eventbuilder.js"() { } }); // node_modules/@sentry/utils/esm/index.js var init_esm = __esm({ "node_modules/@sentry/utils/esm/index.js"() { init_aggregate_errors(); init_browser(); init_worldwide(); init_is(); init_logger(); init_misc(); init_normalize(); init_object(); init_severity(); init_stacktrace(); init_string(); init_syncpromise(); init_time(); init_url(); init_eventbuilder(); init_console(); init_dom(); init_xhr(); init_fetch(); init_history(); init_globalError(); init_globalUnhandledRejection(); } }); // node_modules/@sentry/core/esm/debug-build.js var DEBUG_BUILD2; var init_debug_build2 = __esm({ "node_modules/@sentry/core/esm/debug-build.js"() { DEBUG_BUILD2 = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; } }); // node_modules/@sentry/core/esm/constants.js var DEFAULT_ENVIRONMENT; var init_constants = __esm({ "node_modules/@sentry/core/esm/constants.js"() { DEFAULT_ENVIRONMENT = "production"; } }); // node_modules/@sentry/core/esm/eventProcessors.js function getGlobalEventProcessors() { return getGlobalSingleton("globalEventProcessors", () => []); } function notifyEventProcessors(processors, event, hint, index = 0) { return new SyncPromise((resolve, reject2) => { const processor = processors[index]; if (event === null || typeof processor !== "function") { resolve(event); } else { const result = processor(__spreadValues({}, event), hint); DEBUG_BUILD2 && processor.id && result === null && logger.log(`Event processor "${processor.id}" dropped event`); if (isThenable(result)) { void result.then((final) => notifyEventProcessors(processors, final, hint, index + 1).then(resolve)).then(null, reject2); } else { void notifyEventProcessors(processors, result, hint, index + 1).then(resolve).then(null, reject2); } } }); } var init_eventProcessors = __esm({ "node_modules/@sentry/core/esm/eventProcessors.js"() { init_esm(); init_debug_build2(); } }); // node_modules/@sentry/core/esm/session.js function makeSession(context) { const startingTime2 = timestampInSeconds(); const session = { sid: uuid4(), init: true, timestamp: startingTime2, started: startingTime2, duration: 0, status: "ok", errors: 0, ignoreDuration: false, toJSON: () => sessionToJSON(session) }; if (context) { updateSession(session, context); } return session; } function updateSession(session, context = {}) { if (context.user) { if (!session.ipAddress && context.user.ip_address) { session.ipAddress = context.user.ip_address; } if (!session.did && !context.did) { session.did = context.user.id || context.user.email || context.user.username; } } session.timestamp = context.timestamp || timestampInSeconds(); if (context.abnormal_mechanism) { session.abnormal_mechanism = context.abnormal_mechanism; } if (context.ignoreDuration) { session.ignoreDuration = context.ignoreDuration; } if (context.sid) { session.sid = context.sid.length === 32 ? context.sid : uuid4(); } if (context.init !== void 0) { session.init = context.init; } if (!session.did && context.did) { session.did = `${context.did}`; } if (typeof context.started === "number") { session.started = context.started; } if (session.ignoreDuration) { session.duration = void 0; } else if (typeof context.duration === "number") { session.duration = context.duration; } else { const duration = session.timestamp - session.started; session.duration = duration >= 0 ? duration : 0; } if (context.release) { session.release = context.release; } if (context.environment) { session.environment = context.environment; } if (!session.ipAddress && context.ipAddress) { session.ipAddress = context.ipAddress; } if (!session.userAgent && context.userAgent) { session.userAgent = context.userAgent; } if (typeof context.errors === "number") { session.errors = context.errors; } if (context.status) { session.status = context.status; } } function closeSession(session, status) { let context = {}; if (status) { context = { status }; } else if (session.status === "ok") { context = { status: "exited" }; } updateSession(session, context); } function sessionToJSON(session) { return dropUndefinedKeys({ sid: `${session.sid}`, init: session.init, // Make sure that sec is converted to ms for date constructor started: new Date(session.started * 1e3).toISOString(), timestamp: new Date(session.timestamp * 1e3).toISOString(), status: session.status, errors: session.errors, did: typeof session.did === "number" || typeof session.did === "string" ? `${session.did}` : void 0, duration: session.duration, abnormal_mechanism: session.abnormal_mechanism, attrs: { release: session.release, environment: session.environment, ip_address: session.ipAddress, user_agent: session.userAgent } }); } var init_session = __esm({ "node_modules/@sentry/core/esm/session.js"() { init_esm(); } }); // node_modules/@sentry/core/esm/utils/spanUtils.js function spanToTraceContext(span) { const { spanId: span_id, traceId: trace_id } = span.spanContext(); const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span); return dropUndefinedKeys({ data, op, parent_span_id, span_id, status, tags, trace_id, origin }); } function spanToJSON(span) { if (spanIsSpanClass(span)) { return span.getSpanJSON(); } if (typeof span.toJSON === "function") { return span.toJSON(); } return {}; } function spanIsSpanClass(span) { return typeof span.getSpanJSON === "function"; } function spanIsSampled(span) { const { traceFlags } = span.spanContext(); return Boolean(traceFlags & TRACE_FLAG_SAMPLED); } var TRACE_FLAG_SAMPLED; var init_spanUtils = __esm({ "node_modules/@sentry/core/esm/utils/spanUtils.js"() { init_esm(); TRACE_FLAG_SAMPLED = 1; } }); // node_modules/@sentry/core/esm/utils/prepareEvent.js function parseEventHintOrCaptureContext(hint) { if (!hint) { return void 0; } if (hintIsScopeOrFunction(hint)) { return { captureContext: hint }; } if (hintIsScopeContext(hint)) { return { captureContext: hint }; } return hint; } function hintIsScopeOrFunction(hint) { return hint instanceof Scope || typeof hint === "function"; } function hintIsScopeContext(hint) { return Object.keys(hint).some((key) => captureContextKeys.includes(key)); } var captureContextKeys; var init_prepareEvent = __esm({ "node_modules/@sentry/core/esm/utils/prepareEvent.js"() { init_scope(); captureContextKeys = [ "user", "level", "extra", "contexts", "tags", "fingerprint", "requestSession", "propagationContext" ]; } }); // node_modules/@sentry/core/esm/exports.js function captureException(exception, hint) { return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint)); } function captureEvent(event, hint) { return getCurrentHub().captureEvent(event, hint); } function addBreadcrumb(breadcrumb, hint) { getCurrentHub().addBreadcrumb(breadcrumb, hint); } function withScope(...rest) { const hub = getCurrentHub(); if (rest.length === 2) { const [scope, callback] = rest; if (!scope) { return hub.withScope(callback); } return hub.withScope(() => { hub.getStackTop().scope = scope; return callback(scope); }); } return hub.withScope(rest[0]); } function getClient() { return getCurrentHub().getClient(); } function getCurrentScope() { return getCurrentHub().getScope(); } var init_exports = __esm({ "node_modules/@sentry/core/esm/exports.js"() { init_hub(); init_prepareEvent(); } }); // node_modules/@sentry/core/esm/utils/getRootSpan.js function getRootSpan(span) { return span.transaction; } var init_getRootSpan = __esm({ "node_modules/@sentry/core/esm/utils/getRootSpan.js"() { } }); // node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js function getDynamicSamplingContextFromClient(trace_id, client, scope) { const options = client.getOptions(); const { publicKey: public_key } = client.getDsn() || {}; const { segment: user_segment } = scope && scope.getUser() || {}; const dsc = dropUndefinedKeys({ environment: options.environment || DEFAULT_ENVIRONMENT, release: options.release, user_segment, public_key, trace_id }); client.emit && client.emit("createDsc", dsc); return dsc; } function getDynamicSamplingContextFromSpan(span) { const client = getClient(); if (!client) { return {}; } const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || "", client, getCurrentScope()); const txn = getRootSpan(span); if (!txn) { return dsc; } const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext; if (v7FrozenDsc) { return v7FrozenDsc; } const { sampleRate: maybeSampleRate, source } = txn.metadata; if (maybeSampleRate != null) { dsc.sample_rate = `${maybeSampleRate}`; } const jsonSpan = spanToJSON(txn); if (source && source !== "url") { dsc.transaction = jsonSpan.description; } dsc.sampled = String(spanIsSampled(txn)); client.emit && client.emit("createDsc", dsc); return dsc; } var init_dynamicSamplingContext = __esm({ "node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js"() { init_esm(); init_constants(); init_exports(); init_getRootSpan(); init_spanUtils(); } }); // node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js function applyScopeDataToEvent(event, data) { const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data; applyDataToEvent(event, data); if (span) { applySpanToEvent(event, span); } applyFingerprintToEvent(event, fingerprint); applyBreadcrumbsToEvent(event, breadcrumbs); applySdkMetadataToEvent(event, sdkProcessingMetadata); } function applyDataToEvent(event, data) { const { extra, tags, user: user2, contexts, level, // eslint-disable-next-line deprecation/deprecation transactionName } = data; const cleanedExtra = dropUndefinedKeys(extra); if (cleanedExtra && Object.keys(cleanedExtra).length) { event.extra = __spreadValues(__spreadValues({}, cleanedExtra), event.extra); } const cleanedTags = dropUndefinedKeys(tags); if (cleanedTags && Object.keys(cleanedTags).length) { event.tags = __spreadValues(__spreadValues({}, cleanedTags), event.tags); } const cleanedUser = dropUndefinedKeys(user2); if (cleanedUser && Object.keys(cleanedUser).length) { event.user = __spreadValues(__spreadValues({}, cleanedUser), event.user); } const cleanedContexts = dropUndefinedKeys(contexts); if (cleanedContexts && Object.keys(cleanedContexts).length) { event.contexts = __spreadValues(__spreadValues({}, cleanedContexts), event.contexts); } if (level) { event.level = level; } if (transactionName) { event.transaction = transactionName; } } function applyBreadcrumbsToEvent(event, breadcrumbs) { const mergedBreadcrumbs = [...event.breadcrumbs || [], ...breadcrumbs]; event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : void 0; } function applySdkMetadataToEvent(event, sdkProcessingMetadata) { event.sdkProcessingMetadata = __spreadValues(__spreadValues({}, event.sdkProcessingMetadata), sdkProcessingMetadata); } function applySpanToEvent(event, span) { event.contexts = __spreadValues({ trace: spanToTraceContext(span) }, event.contexts); const rootSpan = getRootSpan(span); if (rootSpan) { event.sdkProcessingMetadata = __spreadValues({ dynamicSamplingContext: getDynamicSamplingContextFromSpan(span) }, event.sdkProcessingMetadata); const transactionName = spanToJSON(rootSpan).description; if (transactionName) { event.tags = __spreadValues({ transaction: transactionName }, event.tags); } } } function applyFingerprintToEvent(event, fingerprint) { event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : []; if (fingerprint) { event.fingerprint = event.fingerprint.concat(fingerprint); } if (event.fingerprint && !event.fingerprint.length) { delete event.fingerprint; } } var init_applyScopeDataToEvent = __esm({ "node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js"() { init_esm(); init_dynamicSamplingContext(); init_getRootSpan(); init_spanUtils(); } }); // node_modules/@sentry/core/esm/scope.js function generatePropagationContext() { return { traceId: uuid4(), spanId: uuid4().substring(16) }; } var DEFAULT_MAX_BREADCRUMBS, Scope; var init_scope = __esm({ "node_modules/@sentry/core/esm/scope.js"() { init_esm(); init_eventProcessors(); init_session(); init_applyScopeDataToEvent(); DEFAULT_MAX_BREADCRUMBS = 100; Scope = class _Scope { /** Flag if notifying is happening. */ /** Callback for client to receive scope changes. */ /** Callback list that will be called after {@link applyToEvent}. */ /** Array of breadcrumbs. */ /** User */ /** Tags */ /** Extra */ /** Contexts */ /** Attachments */ /** Propagation Context for distributed tracing */ /** * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get * sent to Sentry */ /** Fingerprint */ /** Severity */ // eslint-disable-next-line deprecation/deprecation /** * Transaction Name */ /** Span */ /** Session */ /** Request Mode Session Status */ /** The client on this scope */ // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method. constructor() { this._notifyingListeners = false; this._scopeListeners = []; this._eventProcessors = []; this._breadcrumbs = []; this._attachments = []; this._user = {}; this._tags = {}; this._extra = {}; this._contexts = {}; this._sdkProcessingMetadata = {}; this._propagationContext = generatePropagationContext(); } /** * Inherit values from the parent scope. * @deprecated Use `scope.clone()` and `new Scope()` instead. */ static clone(scope) { return scope ? scope.clone() : new _Scope(); } /** * Clone this scope instance. */ clone() { const newScope = new _Scope(); newScope._breadcrumbs = [...this._breadcrumbs]; newScope._tags = __spreadValues({}, this._tags); newScope._extra = __spreadValues({}, this._extra); newScope._contexts = __spreadValues({}, this._contexts); newScope._user = this._user; newScope._level = this._level; newScope._span = this._span; newScope._session = this._session; newScope._transactionName = this._transactionName; newScope._fingerprint = this._fingerprint; newScope._eventProcessors = [...this._eventProcessors]; newScope._requestSession = this._requestSession; newScope._attachments = [...this._attachments]; newScope._sdkProcessingMetadata = __spreadValues({}, this._sdkProcessingMetadata); newScope._propagationContext = __spreadValues({}, this._propagationContext); newScope._client = this._client; return newScope; } /** Update the client on the scope. */ setClient(client) { this._client = client; } /** * Get the client assigned to this scope. * * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing. */ getClient() { return this._client; } /** * Add internal on change listener. Used for sub SDKs that need to store the scope. * @hidden */ addScopeListener(callback) { this._scopeListeners.push(callback); } /** * @inheritDoc */ addEventProcessor(callback) { this._eventProcessors.push(callback); return this; } /** * @inheritDoc */ setUser(user2) { this._user = user2 || { email: void 0, id: void 0, ip_address: void 0, segment: void 0, username: void 0 }; if (this._session) { updateSession(this._session, { user: user2 }); } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getUser() { return this._user; } /** * @inheritDoc */ getRequestSession() { return this._requestSession; } /** * @inheritDoc */ setRequestSession(requestSession) { this._requestSession = requestSession; return this; } /** * @inheritDoc */ setTags(tags) { this._tags = __spreadValues(__spreadValues({}, this._tags), tags); this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setTag(key, value) { this._tags = __spreadProps(__spreadValues({}, this._tags), { [key]: value }); this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtras(extras) { this._extra = __spreadValues(__spreadValues({}, this._extra), extras); this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtra(key, extra) { this._extra = __spreadProps(__spreadValues({}, this._extra), { [key]: extra }); this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setFingerprint(fingerprint) { this._fingerprint = fingerprint; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setLevel(level) { this._level = level; this._notifyScopeListeners(); return this; } /** * Sets the transaction name on the scope for future events. */ setTransactionName(name) { this._transactionName = name; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setContext(key, context) { if (context === null) { delete this._contexts[key]; } else { this._contexts[key] = context; } this._notifyScopeListeners(); return this; } /** * Sets the Span on the scope. * @param span Span * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead. */ setSpan(span) { this._span = span; this._notifyScopeListeners(); return this; } /** * Returns the `Span` if there is one. * @deprecated Use `getActiveSpan()` instead. */ getSpan() { return this._span; } /** * Returns the `Transaction` attached to the scope (if there is one). * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead. */ getTransaction() { const span = this._span; return span && span.transaction; } /** * @inheritDoc */ setSession(session) { if (!session) { delete this._session; } else { this._session = session; } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getSession() { return this._session; } /** * @inheritDoc */ update(captureContext) { if (!captureContext) { return this; } const scopeToMerge = typeof captureContext === "function" ? captureContext(this) : captureContext; if (scopeToMerge instanceof _Scope) { const scopeData = scopeToMerge.getScopeData(); this._tags = __spreadValues(__spreadValues({}, this._tags), scopeData.tags); this._extra = __spreadValues(__spreadValues({}, this._extra), scopeData.extra); this._contexts = __spreadValues(__spreadValues({}, this._contexts), scopeData.contexts); if (scopeData.user && Object.keys(scopeData.user).length) { this._user = scopeData.user; } if (scopeData.level) { this._level = scopeData.level; } if (scopeData.fingerprint.length) { this._fingerprint = scopeData.fingerprint; } if (scopeToMerge.getRequestSession()) { this._requestSession = scopeToMerge.getRequestSession(); } if (scopeData.propagationContext) { this._propagationContext = scopeData.propagationContext; } } else if (isPlainObject(scopeToMerge)) { const scopeContext = captureContext; this._tags = __spreadValues(__spreadValues({}, this._tags), scopeContext.tags); this._extra = __spreadValues(__spreadValues({}, this._extra), scopeContext.extra); this._contexts = __spreadValues(__spreadValues({}, this._contexts), scopeContext.contexts); if (scopeContext.user) { this._user = scopeContext.user; } if (scopeContext.level) { this._level = scopeContext.level; } if (scopeContext.fingerprint) { this._fingerprint = scopeContext.fingerprint; } if (scopeContext.requestSession) { this._requestSession = scopeContext.requestSession; } if (scopeContext.propagationContext) { this._propagationContext = scopeContext.propagationContext; } } return this; } /** * @inheritDoc */ clear() { this._breadcrumbs = []; this._tags = {}; this._extra = {}; this._user = {}; this._contexts = {}; this._level = void 0; this._transactionName = void 0; this._fingerprint = void 0; this._requestSession = void 0; this._span = void 0; this._session = void 0; this._notifyScopeListeners(); this._attachments = []; this._propagationContext = generatePropagationContext(); return this; } /** * @inheritDoc */ addBreadcrumb(breadcrumb, maxBreadcrumbs) { const maxCrumbs = typeof maxBreadcrumbs === "number" ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS; if (maxCrumbs <= 0) { return this; } const mergedBreadcrumb = __spreadValues({ timestamp: dateTimestampInSeconds() }, breadcrumb); const breadcrumbs = this._breadcrumbs; breadcrumbs.push(mergedBreadcrumb); this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getLastBreadcrumb() { return this._breadcrumbs[this._breadcrumbs.length - 1]; } /** * @inheritDoc */ clearBreadcrumbs() { this._breadcrumbs = []; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ addAttachment(attachment) { this._attachments.push(attachment); return this; } /** * @inheritDoc * @deprecated Use `getScopeData()` instead. */ getAttachments() { const data = this.getScopeData(); return data.attachments; } /** * @inheritDoc */ clearAttachments() { this._attachments = []; return this; } /** @inheritDoc */ getScopeData() { const { _breadcrumbs, _attachments, _contexts, _tags, _extra, _user, _level, _fingerprint, _eventProcessors, _propagationContext, _sdkProcessingMetadata, _transactionName, _span } = this; return { breadcrumbs: _breadcrumbs, attachments: _attachments, contexts: _contexts, tags: _tags, extra: _extra, user: _user, level: _level, fingerprint: _fingerprint || [], eventProcessors: _eventProcessors, propagationContext: _propagationContext, sdkProcessingMetadata: _sdkProcessingMetadata, transactionName: _transactionName, span: _span }; } /** * Applies data from the scope to the event and runs all event processors on it. * * @param event Event * @param hint Object containing additional information about the original exception, for use by the event processors. * @hidden * @deprecated Use `applyScopeDataToEvent()` directly */ applyToEvent(event, hint = {}, additionalEventProcessors = []) { applyScopeDataToEvent(event, this.getScopeData()); const eventProcessors = [ ...additionalEventProcessors, // eslint-disable-next-line deprecation/deprecation ...getGlobalEventProcessors(), ...this._eventProcessors ]; return notifyEventProcessors(eventProcessors, event, hint); } /** * Add data which will be accessible during event processing but won't get sent to Sentry */ setSDKProcessingMetadata(newData) { this._sdkProcessingMetadata = __spreadValues(__spreadValues({}, this._sdkProcessingMetadata), newData); return this; } /** * @inheritDoc */ setPropagationContext(context) { this._propagationContext = context; return this; } /** * @inheritDoc */ getPropagationContext() { return this._propagationContext; } /** * Capture an exception for this scope. * * @param exception The exception to capture. * @param hint Optinal additional data to attach to the Sentry event. * @returns the id of the captured Sentry event. */ captureException(exception, hint) { const eventId = hint && hint.event_id ? hint.event_id : uuid4(); if (!this._client) { logger.warn("No client configured on scope - will not capture exception!"); return eventId; } const syntheticException = new Error("Sentry syntheticException"); this._client.captureException( exception, __spreadProps(__spreadValues({ originalException: exception, syntheticException }, hint), { event_id: eventId }), this ); return eventId; } /** * Capture a message for this scope. * * @param message The message to capture. * @param level An optional severity level to report the message with. * @param hint Optional additional data to attach to the Sentry event. * @returns the id of the captured message. */ captureMessage(message, level, hint) { const eventId = hint && hint.event_id ? hint.event_id : uuid4(); if (!this._client) { logger.warn("No client configured on scope - will not capture message!"); return eventId; } const syntheticException = new Error(message); this._client.captureMessage( message, level, __spreadProps(__spreadValues({ originalException: message, syntheticException }, hint), { event_id: eventId }), this ); return eventId; } /** * Captures a manually created event for this scope and sends it to Sentry. * * @param exception The event to capture. * @param hint Optional additional data to attach to the Sentry event. * @returns the id of the captured event. */ captureEvent(event, hint) { const eventId = hint && hint.event_id ? hint.event_id : uuid4(); if (!this._client) { logger.warn("No client configured on scope - will not capture event!"); return eventId; } this._client.captureEvent(event, __spreadProps(__spreadValues({}, hint), { event_id: eventId }), this); return eventId; } /** * This will be called on every set call. */ _notifyScopeListeners() { if (!this._notifyingListeners) { this._notifyingListeners = true; this._scopeListeners.forEach((callback) => { callback(this); }); this._notifyingListeners = false; } } }; } }); // node_modules/@sentry/core/esm/version.js var SDK_VERSION; var init_version = __esm({ "node_modules/@sentry/core/esm/version.js"() { SDK_VERSION = "7.108.0"; } }); // node_modules/@sentry/core/esm/hub.js function getMainCarrier() { GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || { extensions: {}, hub: void 0 }; return GLOBAL_OBJ; } function makeMain(hub) { const registry = getMainCarrier(); const oldHub = getHubFromCarrier(registry); setHubOnCarrier(registry, hub); return oldHub; } function getCurrentHub() { const registry = getMainCarrier(); if (registry.__SENTRY__ && registry.__SENTRY__.acs) { const hub = registry.__SENTRY__.acs.getCurrentHub(); if (hub) { return hub; } } return getGlobalHub(registry); } function getGlobalHub(registry = getMainCarrier()) { if (!hasHubOnCarrier(registry) || // eslint-disable-next-line deprecation/deprecation getHubFromCarrier(registry).isOlderThan(API_VERSION)) { setHubOnCarrier(registry, new Hub()); } return getHubFromCarrier(registry); } function hasHubOnCarrier(carrier) { return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub); } function getHubFromCarrier(carrier) { return getGlobalSingleton("hub", () => new Hub(), carrier); } function setHubOnCarrier(carrier, hub) { if (!carrier) return false; const __SENTRY__ = carrier.__SENTRY__ = carrier.__SENTRY__ || {}; __SENTRY__.hub = hub; return true; } var API_VERSION, DEFAULT_BREADCRUMBS, Hub; var init_hub = __esm({ "node_modules/@sentry/core/esm/hub.js"() { init_esm(); init_constants(); init_debug_build2(); init_scope(); init_session(); init_version(); API_VERSION = parseFloat(SDK_VERSION); DEFAULT_BREADCRUMBS = 100; Hub = class { /** Is a {@link Layer}[] containing the client and scope */ /** Contains the last event id of a captured event. */ /** * Creates a new instance of the hub, will push one {@link Layer} into the * internal stack on creation. * * @param client bound to the hub. * @param scope bound to the hub. * @param version number, higher number means higher priority. * * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK. * * If you are currently using the Hub for multi-client use like so: * * ``` * // OLD * const hub = new Hub(); * hub.bindClient(client); * makeMain(hub) * ``` * * instead initialize the client as follows: * * ``` * // NEW * Sentry.withIsolationScope(() => { * Sentry.setCurrentClient(client); * client.init(); * }); * ``` * * If you are using the Hub to capture events like so: * * ``` * // OLD * const client = new Client(); * const hub = new Hub(client); * hub.captureException() * ``` * * instead capture isolated events as follows: * * ``` * // NEW * const client = new Client(); * const scope = new Scope(); * scope.setClient(client); * scope.captureException(); * ``` */ constructor(client, scope, isolationScope, _version = API_VERSION) { this._version = _version; let assignedScope; if (!scope) { assignedScope = new Scope(); assignedScope.setClient(client); } else { assignedScope = scope; } let assignedIsolationScope; if (!isolationScope) { assignedIsolationScope = new Scope(); assignedIsolationScope.setClient(client); } else { assignedIsolationScope = isolationScope; } this._stack = [{ scope: assignedScope }]; if (client) { this.bindClient(client); } this._isolationScope = assignedIsolationScope; } /** * Checks if this hub's version is older than the given version. * * @param version A version number to compare to. * @return True if the given version is newer; otherwise false. * * @deprecated This will be removed in v8. */ isOlderThan(version) { return this._version < version; } /** * This binds the given client to the current scope. * @param client An SDK client (client) instance. * * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead. */ bindClient(client) { const top = this.getStackTop(); top.client = client; top.scope.setClient(client); if (client && client.setupIntegrations) { client.setupIntegrations(); } } /** * @inheritDoc * * @deprecated Use `withScope` instead. */ pushScope() { const scope = this.getScope().clone(); this.getStack().push({ // eslint-disable-next-line deprecation/deprecation client: this.getClient(), scope }); return scope; } /** * @inheritDoc * * @deprecated Use `withScope` instead. */ popScope() { if (this.getStack().length <= 1) return false; return !!this.getStack().pop(); } /** * @inheritDoc * * @deprecated Use `Sentry.withScope()` instead. */ withScope(callback) { const scope = this.pushScope(); let maybePromiseResult; try { maybePromiseResult = callback(scope); } catch (e) { this.popScope(); throw e; } if (isThenable(maybePromiseResult)) { return maybePromiseResult.then( (res) => { this.popScope(); return res; }, (e) => { this.popScope(); throw e; } ); } this.popScope(); return maybePromiseResult; } /** * @inheritDoc * * @deprecated Use `Sentry.getClient()` instead. */ getClient() { return this.getStackTop().client; } /** * Returns the scope of the top stack. * * @deprecated Use `Sentry.getCurrentScope()` instead. */ getScope() { return this.getStackTop().scope; } /** * @deprecated Use `Sentry.getIsolationScope()` instead. */ getIsolationScope() { return this._isolationScope; } /** * Returns the scope stack for domains or the process. * @deprecated This will be removed in v8. */ getStack() { return this._stack; } /** * Returns the topmost scope layer in the order domain > local > process. * @deprecated This will be removed in v8. */ getStackTop() { return this._stack[this._stack.length - 1]; } /** * @inheritDoc * * @deprecated Use `Sentry.captureException()` instead. */ captureException(exception, hint) { const eventId = this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4(); const syntheticException = new Error("Sentry syntheticException"); this.getScope().captureException(exception, __spreadProps(__spreadValues({ originalException: exception, syntheticException }, hint), { event_id: eventId })); return eventId; } /** * @inheritDoc * * @deprecated Use `Sentry.captureMessage()` instead. */ captureMessage(message, level, hint) { const eventId = this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4(); const syntheticException = new Error(message); this.getScope().captureMessage(message, level, __spreadProps(__spreadValues({ originalException: message, syntheticException }, hint), { event_id: eventId })); return eventId; } /** * @inheritDoc * * @deprecated Use `Sentry.captureEvent()` instead. */ captureEvent(event, hint) { const eventId = hint && hint.event_id ? hint.event_id : uuid4(); if (!event.type) { this._lastEventId = eventId; } this.getScope().captureEvent(event, __spreadProps(__spreadValues({}, hint), { event_id: eventId })); return eventId; } /** * @inheritDoc * * @deprecated This will be removed in v8. */ lastEventId() { return this._lastEventId; } /** * @inheritDoc * * @deprecated Use `Sentry.addBreadcrumb()` instead. */ addBreadcrumb(breadcrumb, hint) { const { scope, client } = this.getStackTop(); if (!client) return; const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions && client.getOptions() || {}; if (maxBreadcrumbs <= 0) return; const timestamp = dateTimestampInSeconds(); const mergedBreadcrumb = __spreadValues({ timestamp }, breadcrumb); const finalBreadcrumb = beforeBreadcrumb ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) : mergedBreadcrumb; if (finalBreadcrumb === null) return; if (client.emit) { client.emit("beforeAddBreadcrumb", finalBreadcrumb, hint); } scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs); } /** * @inheritDoc * @deprecated Use `Sentry.setUser()` instead. */ setUser(user2) { this.getScope().setUser(user2); this.getIsolationScope().setUser(user2); } /** * @inheritDoc * @deprecated Use `Sentry.setTags()` instead. */ setTags(tags) { this.getScope().setTags(tags); this.getIsolationScope().setTags(tags); } /** * @inheritDoc * @deprecated Use `Sentry.setExtras()` instead. */ setExtras(extras) { this.getScope().setExtras(extras); this.getIsolationScope().setExtras(extras); } /** * @inheritDoc * @deprecated Use `Sentry.setTag()` instead. */ setTag(key, value) { this.getScope().setTag(key, value); this.getIsolationScope().setTag(key, value); } /** * @inheritDoc * @deprecated Use `Sentry.setExtra()` instead. */ setExtra(key, extra) { this.getScope().setExtra(key, extra); this.getIsolationScope().setExtra(key, extra); } /** * @inheritDoc * @deprecated Use `Sentry.setContext()` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any setContext(name, context) { this.getScope().setContext(name, context); this.getIsolationScope().setContext(name, context); } /** * @inheritDoc * * @deprecated Use `getScope()` directly. */ configureScope(callback) { const { scope, client } = this.getStackTop(); if (client) { callback(scope); } } /** * @inheritDoc */ run(callback) { const oldHub = makeMain(this); try { callback(this); } finally { makeMain(oldHub); } } /** * @inheritDoc * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead. */ getIntegration(integration) { const client = this.getClient(); if (!client) return null; try { return client.getIntegration(integration); } catch (_oO) { DEBUG_BUILD2 && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`); return null; } } /** * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation. * * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a * new child span within the transaction or any span, call the respective `.startChild()` method. * * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded. * * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its * finished child spans will be sent to Sentry. * * @param context Properties of the new `Transaction`. * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent * default values). See {@link Options.tracesSampler}. * * @returns The transaction which was just started * * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead. */ startTransaction(context, customSamplingContext) { const result = this._callExtensionMethod("startTransaction", context, customSamplingContext); if (DEBUG_BUILD2 && !result) { const client = this.getClient(); if (!client) { logger.warn( "Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'" ); } else { logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init': Sentry.addTracingExtensions(); Sentry.init({...}); `); } } return result; } /** * @inheritDoc * @deprecated Use `spanToTraceHeader()` instead. */ traceHeaders() { return this._callExtensionMethod("traceHeaders"); } /** * @inheritDoc * * @deprecated Use top level `captureSession` instead. */ captureSession(endSession2 = false) { if (endSession2) { return this.endSession(); } this._sendSessionUpdate(); } /** * @inheritDoc * @deprecated Use top level `endSession` instead. */ endSession() { const layer = this.getStackTop(); const scope = layer.scope; const session = scope.getSession(); if (session) { closeSession(session); } this._sendSessionUpdate(); scope.setSession(); } /** * @inheritDoc * @deprecated Use top level `startSession` instead. */ startSession(context) { const { scope, client } = this.getStackTop(); const { release, environment = DEFAULT_ENVIRONMENT } = client && client.getOptions() || {}; const { userAgent } = GLOBAL_OBJ.navigator || {}; const session = makeSession(__spreadValues(__spreadValues({ release, environment, user: scope.getUser() }, userAgent && { userAgent }), context)); const currentSession = scope.getSession && scope.getSession(); if (currentSession && currentSession.status === "ok") { updateSession(currentSession, { status: "exited" }); } this.endSession(); scope.setSession(session); return session; } /** * Returns if default PII should be sent to Sentry and propagated in ourgoing requests * when Tracing is used. * * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function * only unnecessarily increased API surface but only wrapped accessing the option. */ shouldSendDefaultPii() { const client = this.getClient(); const options = client && client.getOptions(); return Boolean(options && options.sendDefaultPii); } /** * Sends the current Session on the scope */ _sendSessionUpdate() { const { scope, client } = this.getStackTop(); const session = scope.getSession(); if (session && client && client.captureSession) { client.captureSession(session); } } /** * Calls global extension method and binding current instance to the function call */ // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366) // eslint-disable-next-line @typescript-eslint/no-explicit-any _callExtensionMethod(method, ...args) { const carrier = getMainCarrier(); const sentry = carrier.__SENTRY__; if (sentry && sentry.extensions && typeof sentry.extensions[method] === "function") { return sentry.extensions[method].apply(this, args); } DEBUG_BUILD2 && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`); } }; } }); // node_modules/@sentry/core/esm/integration.js function convertIntegrationFnToClass(name, fn) { return Object.assign( function ConvertedIntegration(...args) { return fn(...args); }, { id: name } ); } function defineIntegration(fn) { return fn; } var init_integration = __esm({ "node_modules/@sentry/core/esm/integration.js"() { } }); // node_modules/@sentry/core/esm/integrations/inboundfilters.js function _mergeOptions(internalOptions = {}, clientOptions = {}) { return { allowUrls: [...internalOptions.allowUrls || [], ...clientOptions.allowUrls || []], denyUrls: [...internalOptions.denyUrls || [], ...clientOptions.denyUrls || []], ignoreErrors: [ ...internalOptions.ignoreErrors || [], ...clientOptions.ignoreErrors || [], ...internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS ], ignoreTransactions: [ ...internalOptions.ignoreTransactions || [], ...clientOptions.ignoreTransactions || [], ...internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS ], ignoreInternal: internalOptions.ignoreInternal !== void 0 ? internalOptions.ignoreInternal : true }; } function _shouldDropEvent(event, options) { if (options.ignoreInternal && _isSentryError(event)) { DEBUG_BUILD2 && logger.warn(`Event dropped due to being internal Sentry Error. Event: ${getEventDescription(event)}`); return true; } if (_isIgnoredError(event, options.ignoreErrors)) { DEBUG_BUILD2 && logger.warn( `Event dropped due to being matched by \`ignoreErrors\` option. Event: ${getEventDescription(event)}` ); return true; } if (_isIgnoredTransaction(event, options.ignoreTransactions)) { DEBUG_BUILD2 && logger.warn( `Event dropped due to being matched by \`ignoreTransactions\` option. Event: ${getEventDescription(event)}` ); return true; } if (_isDeniedUrl(event, options.denyUrls)) { DEBUG_BUILD2 && logger.warn( `Event dropped due to being matched by \`denyUrls\` option. Event: ${getEventDescription( event )}. Url: ${_getEventFilterUrl(event)}` ); return true; } if (!_isAllowedUrl(event, options.allowUrls)) { DEBUG_BUILD2 && logger.warn( `Event dropped due to not being matched by \`allowUrls\` option. Event: ${getEventDescription( event )}. Url: ${_getEventFilterUrl(event)}` ); return true; } return false; } function _isIgnoredError(event, ignoreErrors) { if (event.type || !ignoreErrors || !ignoreErrors.length) { return false; } return _getPossibleEventMessages(event).some((message) => stringMatchesSomePattern(message, ignoreErrors)); } function _isIgnoredTransaction(event, ignoreTransactions) { if (event.type !== "transaction" || !ignoreTransactions || !ignoreTransactions.length) { return false; } const name = event.transaction; return name ? stringMatchesSomePattern(name, ignoreTransactions) : false; } function _isDeniedUrl(event, denyUrls) { if (!denyUrls || !denyUrls.length) { return false; } const url = _getEventFilterUrl(event); return !url ? false : stringMatchesSomePattern(url, denyUrls); } function _isAllowedUrl(event, allowUrls) { if (!allowUrls || !allowUrls.length) { return true; } const url = _getEventFilterUrl(event); return !url ? true : stringMatchesSomePattern(url, allowUrls); } function _getPossibleEventMessages(event) { const possibleMessages = []; if (event.message) { possibleMessages.push(event.message); } let lastException; try { lastException = event.exception.values[event.exception.values.length - 1]; } catch (e) { } if (lastException) { if (lastException.value) { possibleMessages.push(lastException.value); if (lastException.type) { possibleMessages.push(`${lastException.type}: ${lastException.value}`); } } } if (DEBUG_BUILD2 && possibleMessages.length === 0) { logger.error(`Could not extract message for event ${getEventDescription(event)}`); } return possibleMessages; } function _isSentryError(event) { try { return event.exception.values[0].type === "SentryError"; } catch (e) { } return false; } function _getLastValidUrl(frames = []) { for (let i = frames.length - 1; i >= 0; i--) { const frame = frames[i]; if (frame && frame.filename !== "<anonymous>" && frame.filename !== "[native code]") { return frame.filename || null; } } return null; } function _getEventFilterUrl(event) { try { let frames; try { frames = event.exception.values[0].stacktrace.frames; } catch (e) { } return frames ? _getLastValidUrl(frames) : null; } catch (oO) { DEBUG_BUILD2 && logger.error(`Cannot extract url for event ${getEventDescription(event)}`); return null; } } var DEFAULT_IGNORE_ERRORS, DEFAULT_IGNORE_TRANSACTIONS, INTEGRATION_NAME, _inboundFiltersIntegration, inboundFiltersIntegration, InboundFilters; var init_inboundfilters = __esm({ "node_modules/@sentry/core/esm/integrations/inboundfilters.js"() { init_esm(); init_debug_build2(); init_integration(); DEFAULT_IGNORE_ERRORS = [ /^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/, /^ResizeObserver loop completed with undelivered notifications.$/, /^Cannot redefine property: googletag$/ ]; DEFAULT_IGNORE_TRANSACTIONS = [ /^.*\/healthcheck$/, /^.*\/healthy$/, /^.*\/live$/, /^.*\/ready$/, /^.*\/heartbeat$/, /^.*\/health$/, /^.*\/healthz$/ ]; INTEGRATION_NAME = "InboundFilters"; _inboundFiltersIntegration = (options = {}) => { return { name: INTEGRATION_NAME, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(event, _hint, client) { const clientOptions = client.getOptions(); const mergedOptions = _mergeOptions(options, clientOptions); return _shouldDropEvent(event, mergedOptions) ? null : event; } }; }; inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration); InboundFilters = convertIntegrationFnToClass( INTEGRATION_NAME, inboundFiltersIntegration ); } }); // node_modules/@sentry/core/esm/integrations/functiontostring.js var originalFunctionToString, INTEGRATION_NAME2, SETUP_CLIENTS, _functionToStringIntegration, functionToStringIntegration, FunctionToString; var init_functiontostring = __esm({ "node_modules/@sentry/core/esm/integrations/functiontostring.js"() { init_esm(); init_exports(); init_integration(); INTEGRATION_NAME2 = "FunctionToString"; SETUP_CLIENTS = /* @__PURE__ */ new WeakMap(); _functionToStringIntegration = () => { return { name: INTEGRATION_NAME2, setupOnce() { originalFunctionToString = Function.prototype.toString; try { Function.prototype.toString = function(...args) { const originalFunction = getOriginalFunction(this); const context = SETUP_CLIENTS.has(getClient()) && originalFunction !== void 0 ? originalFunction : this; return originalFunctionToString.apply(context, args); }; } catch (e) { } }, setup(client) { SETUP_CLIENTS.set(client, true); } }; }; functionToStringIntegration = defineIntegration(_functionToStringIntegration); FunctionToString = convertIntegrationFnToClass( INTEGRATION_NAME2, functionToStringIntegration ); } }); // node_modules/@sentry/core/esm/integrations/linkederrors.js var DEFAULT_KEY, DEFAULT_LIMIT, INTEGRATION_NAME3, _linkedErrorsIntegration, linkedErrorsIntegration, LinkedErrors; var init_linkederrors = __esm({ "node_modules/@sentry/core/esm/integrations/linkederrors.js"() { init_esm(); init_integration(); DEFAULT_KEY = "cause"; DEFAULT_LIMIT = 5; INTEGRATION_NAME3 = "LinkedErrors"; _linkedErrorsIntegration = (options = {}) => { const limit2 = options.limit || DEFAULT_LIMIT; const key = options.key || DEFAULT_KEY; return { name: INTEGRATION_NAME3, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function preprocessEvent(event, hint, client) { const options2 = client.getOptions(); applyAggregateErrorsToEvent( exceptionFromError, options2.stackParser, options2.maxValueLength, key, limit2, event, hint ); } }; }; linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration); LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME3, linkedErrorsIntegration); } }); // node_modules/@sentry/core/esm/integrations/index.js var integrations_exports = {}; __export(integrations_exports, { FunctionToString: () => FunctionToString, InboundFilters: () => InboundFilters, LinkedErrors: () => LinkedErrors }); var init_integrations = __esm({ "node_modules/@sentry/core/esm/integrations/index.js"() { init_functiontostring(); init_inboundfilters(); init_linkederrors(); } }); // node_modules/@sentry/core/esm/index.js var Integrations; var init_esm2 = __esm({ "node_modules/@sentry/core/esm/index.js"() { init_exports(); init_integration(); init_integrations(); Integrations = integrations_exports; } }); // node_modules/@sentry/browser/esm/helpers.js function shouldIgnoreOnError() { return ignoreOnError > 0; } function ignoreNextOnError() { ignoreOnError++; setTimeout(() => { ignoreOnError--; }); } function wrap(fn, options = {}, before) { if (typeof fn !== "function") { return fn; } try { const wrapper = fn.__sentry_wrapped__; if (wrapper) { return wrapper; } if (getOriginalFunction(fn)) { return fn; } } catch (e) { return fn; } const sentryWrapped = function() { const args = Array.prototype.slice.call(arguments); try { if (before && typeof before === "function") { before.apply(this, arguments); } const wrappedArguments = args.map((arg) => wrap(arg, options)); return fn.apply(this, wrappedArguments); } catch (ex) { ignoreNextOnError(); withScope((scope) => { scope.addEventProcessor((event) => { if (options.mechanism) { addExceptionTypeValue(event, void 0, void 0); addExceptionMechanism(event, options.mechanism); } event.extra = __spreadProps(__spreadValues({}, event.extra), { arguments: args }); return event; }); captureException(ex); }); throw ex; } }; try { for (const property in fn) { if (Object.prototype.hasOwnProperty.call(fn, property)) { sentryWrapped[property] = fn[property]; } } } catch (_oO) { } markFunctionWrapped(sentryWrapped, fn); addNonEnumerableProperty(fn, "__sentry_wrapped__", sentryWrapped); try { const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, "name"); if (descriptor.configurable) { Object.defineProperty(sentryWrapped, "name", { get() { return fn.name; } }); } } catch (_oO) { } return sentryWrapped; } var WINDOW7, ignoreOnError; var init_helpers = __esm({ "node_modules/@sentry/browser/esm/helpers.js"() { init_esm2(); init_esm(); WINDOW7 = GLOBAL_OBJ; ignoreOnError = 0; } }); // node_modules/@sentry/browser/esm/debug-build.js var DEBUG_BUILD3; var init_debug_build3 = __esm({ "node_modules/@sentry/browser/esm/debug-build.js"() { DEBUG_BUILD3 = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__; } }); // node_modules/@sentry/browser/esm/eventbuilder.js function exceptionFromError2(stackParser, ex) { const frames = parseStackFrames2(stackParser, ex); const exception = { type: ex && ex.name, value: extractMessage(ex) }; if (frames.length) { exception.stacktrace = { frames }; } if (exception.type === void 0 && exception.value === "") { exception.value = "Unrecoverable error caught"; } return exception; } function eventFromPlainObject(stackParser, exception, syntheticException, isUnhandledRejection) { const client = getClient(); const normalizeDepth = client && client.getOptions().normalizeDepth; const event = { exception: { values: [ { type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? "UnhandledRejection" : "Error", value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }) } ] }, extra: { __serialized__: normalizeToSize(exception, normalizeDepth) } }; if (syntheticException) { const frames = parseStackFrames2(stackParser, syntheticException); if (frames.length) { event.exception.values[0].stacktrace = { frames }; } } return event; } function eventFromError(stackParser, ex) { return { exception: { values: [exceptionFromError2(stackParser, ex)] } }; } function parseStackFrames2(stackParser, ex) { const stacktrace = ex.stacktrace || ex.stack || ""; const popSize = getPopSize(ex); try { return stackParser(stacktrace, popSize); } catch (e) { } return []; } function getPopSize(ex) { if (ex) { if (typeof ex.framesToPop === "number") { return ex.framesToPop; } if (reactMinifiedRegexp.test(ex.message)) { return 1; } } return 0; } function extractMessage(ex) { const message = ex && ex.message; if (!message) { return "No error message"; } if (message.error && typeof message.error.message === "string") { return message.error.message; } return message; } function eventFromUnknownInput2(stackParser, exception, syntheticException, attachStacktrace, isUnhandledRejection) { let event; if (isErrorEvent(exception) && exception.error) { const errorEvent = exception; return eventFromError(stackParser, errorEvent.error); } if (isDOMError(exception) || isDOMException(exception)) { const domException = exception; if ("stack" in exception) { event = eventFromError(stackParser, exception); } else { const name = domException.name || (isDOMError(domException) ? "DOMError" : "DOMException"); const message = domException.message ? `${name}: ${domException.message}` : name; event = eventFromString(stackParser, message, syntheticException, attachStacktrace); addExceptionTypeValue(event, message); } if ("code" in domException) { event.tags = __spreadProps(__spreadValues({}, event.tags), { "DOMException.code": `${domException.code}` }); } return event; } if (isError(exception)) { return eventFromError(stackParser, exception); } if (isPlainObject(exception) || isEvent(exception)) { const objectException = exception; event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection); addExceptionMechanism(event, { synthetic: true }); return event; } event = eventFromString(stackParser, exception, syntheticException, attachStacktrace); addExceptionTypeValue(event, `${exception}`, void 0); addExceptionMechanism(event, { synthetic: true }); return event; } function eventFromString(stackParser, message, syntheticException, attachStacktrace) { const event = {}; if (attachStacktrace && syntheticException) { const frames = parseStackFrames2(stackParser, syntheticException); if (frames.length) { event.exception = { values: [{ value: message, stacktrace: { frames } }] }; } } if (isParameterizedString(message)) { const { __sentry_template_string__, __sentry_template_values__ } = message; event.logentry = { message: __sentry_template_string__, params: __sentry_template_values__ }; return event; } event.message = message; return event; } function getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }) { const keys = extractExceptionKeysForMessage(exception); const captureType = isUnhandledRejection ? "promise rejection" : "exception"; if (isErrorEvent(exception)) { return `Event \`ErrorEvent\` captured as ${captureType} with message \`${exception.message}\``; } if (isEvent(exception)) { const className = getObjectClassName(exception); return `Event \`${className}\` (type=${exception.type}) captured as ${captureType}`; } return `Object captured as ${captureType} with keys: ${keys}`; } function getObjectClassName(obj) { try { const prototype = Object.getPrototypeOf(obj); return prototype ? prototype.constructor.name : void 0; } catch (e) { } } var reactMinifiedRegexp; var init_eventbuilder2 = __esm({ "node_modules/@sentry/browser/esm/eventbuilder.js"() { init_esm2(); init_esm(); reactMinifiedRegexp = /Minified React error #\d+;/i; } }); // node_modules/@sentry/browser/esm/integrations/breadcrumbs.js function _getSentryBreadcrumbHandler(client) { return function addSentryBreadcrumb(event) { if (getClient() !== client) { return; } addBreadcrumb( { category: `sentry.${event.type === "transaction" ? "transaction" : "event"}`, event_id: event.event_id, level: event.level, message: getEventDescription(event) }, { event } ); }; } function _getDomBreadcrumbHandler(client, dom) { return function _innerDomBreadcrumb(handlerData) { if (getClient() !== client) { return; } let target; let componentName; let keyAttrs = typeof dom === "object" ? dom.serializeAttribute : void 0; let maxStringLength = typeof dom === "object" && typeof dom.maxStringLength === "number" ? dom.maxStringLength : void 0; if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) { DEBUG_BUILD3 && logger.warn( `\`dom.maxStringLength\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.` ); maxStringLength = MAX_ALLOWED_STRING_LENGTH; } if (typeof keyAttrs === "string") { keyAttrs = [keyAttrs]; } try { const event = handlerData.event; const element = _isEvent(event) ? event.target : event; target = htmlTreeAsString(element, { keyAttrs, maxStringLength }); componentName = getComponentName(element); } catch (e) { target = "<unknown>"; } if (target.length === 0) { return; } const breadcrumb = { category: `ui.${handlerData.name}`, message: target }; if (componentName) { breadcrumb.data = { "ui.component_name": componentName }; } addBreadcrumb(breadcrumb, { event: handlerData.event, name: handlerData.name, global: handlerData.global }); }; } function _getConsoleBreadcrumbHandler(client) { return function _consoleBreadcrumb(handlerData) { if (getClient() !== client) { return; } const breadcrumb = { category: "console", data: { arguments: handlerData.args, logger: "console" }, level: severityLevelFromString(handlerData.level), message: safeJoin(handlerData.args, " ") }; if (handlerData.level === "assert") { if (handlerData.args[0] === false) { breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), " ") || "console.assert"}`; breadcrumb.data.arguments = handlerData.args.slice(1); } else { return; } } addBreadcrumb(breadcrumb, { input: handlerData.args, level: handlerData.level }); }; } function _getXhrBreadcrumbHandler(client) { return function _xhrBreadcrumb(handlerData) { if (getClient() !== client) { return; } const { startTimestamp, endTimestamp } = handlerData; const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY]; if (!startTimestamp || !endTimestamp || !sentryXhrData) { return; } const { method, url, status_code, body } = sentryXhrData; const data = { method, url, status_code }; const hint = { xhr: handlerData.xhr, input: body, startTimestamp, endTimestamp }; addBreadcrumb( { category: "xhr", data, type: "http" }, hint ); }; } function _getFetchBreadcrumbHandler(client) { return function _fetchBreadcrumb(handlerData) { if (getClient() !== client) { return; } const { startTimestamp, endTimestamp } = handlerData; if (!endTimestamp) { return; } if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === "POST") { return; } if (handlerData.error) { const data = handlerData.fetchData; const hint = { data: handlerData.error, input: handlerData.args, startTimestamp, endTimestamp }; addBreadcrumb( { category: "fetch", data, level: "error", type: "http" }, hint ); } else { const response = handlerData.response; const data = __spreadProps(__spreadValues({}, handlerData.fetchData), { status_code: response && response.status }); const hint = { input: handlerData.args, response, startTimestamp, endTimestamp }; addBreadcrumb( { category: "fetch", data, type: "http" }, hint ); } }; } function _getHistoryBreadcrumbHandler(client) { return function _historyBreadcrumb(handlerData) { if (getClient() !== client) { return; } let from = handlerData.from; let to = handlerData.to; const parsedLoc = parseUrl2(WINDOW7.location.href); let parsedFrom = from ? parseUrl2(from) : void 0; const parsedTo = parseUrl2(to); if (!parsedFrom || !parsedFrom.path) { parsedFrom = parsedLoc; } if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) { to = parsedTo.relative; } if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) { from = parsedFrom.relative; } addBreadcrumb({ category: "navigation", data: { from, to } }); }; } function _isEvent(event) { return !!event && !!event.target; } var MAX_ALLOWED_STRING_LENGTH, INTEGRATION_NAME4, _breadcrumbsIntegration, breadcrumbsIntegration, Breadcrumbs; var init_breadcrumbs = __esm({ "node_modules/@sentry/browser/esm/integrations/breadcrumbs.js"() { init_esm2(); init_esm(); init_debug_build3(); init_helpers(); MAX_ALLOWED_STRING_LENGTH = 1024; INTEGRATION_NAME4 = "Breadcrumbs"; _breadcrumbsIntegration = (options = {}) => { const _options = __spreadValues({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options); return { name: INTEGRATION_NAME4, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function setup(client) { if (_options.console) { addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client)); } if (_options.dom) { addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom)); } if (_options.xhr) { addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client)); } if (_options.fetch) { addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client)); } if (_options.history) { addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client)); } if (_options.sentry && client.on) { client.on("beforeSendEvent", _getSentryBreadcrumbHandler(client)); } } }; }; breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration); Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME4, breadcrumbsIntegration); } }); // node_modules/@sentry/browser/esm/integrations/dedupe.js function _shouldDropEvent2(currentEvent, previousEvent) { if (!previousEvent) { return false; } if (_isSameMessageEvent(currentEvent, previousEvent)) { return true; } if (_isSameExceptionEvent(currentEvent, previousEvent)) { return true; } return false; } function _isSameMessageEvent(currentEvent, previousEvent) { const currentMessage = currentEvent.message; const previousMessage = previousEvent.message; if (!currentMessage && !previousMessage) { return false; } if (currentMessage && !previousMessage || !currentMessage && previousMessage) { return false; } if (currentMessage !== previousMessage) { return false; } if (!_isSameFingerprint(currentEvent, previousEvent)) { return false; } if (!_isSameStacktrace(currentEvent, previousEvent)) { return false; } return true; } function _isSameExceptionEvent(currentEvent, previousEvent) { const previousException = _getExceptionFromEvent(previousEvent); const currentException = _getExceptionFromEvent(currentEvent); if (!previousException || !currentException) { return false; } if (previousException.type !== currentException.type || previousException.value !== currentException.value) { return false; } if (!_isSameFingerprint(currentEvent, previousEvent)) { return false; } if (!_isSameStacktrace(currentEvent, previousEvent)) { return false; } return true; } function _isSameStacktrace(currentEvent, previousEvent) { let currentFrames = _getFramesFromEvent(currentEvent); let previousFrames = _getFramesFromEvent(previousEvent); if (!currentFrames && !previousFrames) { return true; } if (currentFrames && !previousFrames || !currentFrames && previousFrames) { return false; } currentFrames = currentFrames; previousFrames = previousFrames; if (previousFrames.length !== currentFrames.length) { return false; } for (let i = 0; i < previousFrames.length; i++) { const frameA = previousFrames[i]; const frameB = currentFrames[i]; if (frameA.filename !== frameB.filename || frameA.lineno !== frameB.lineno || frameA.colno !== frameB.colno || frameA.function !== frameB.function) { return false; } } return true; } function _isSameFingerprint(currentEvent, previousEvent) { let currentFingerprint = currentEvent.fingerprint; let previousFingerprint = previousEvent.fingerprint; if (!currentFingerprint && !previousFingerprint) { return true; } if (currentFingerprint && !previousFingerprint || !currentFingerprint && previousFingerprint) { return false; } currentFingerprint = currentFingerprint; previousFingerprint = previousFingerprint; try { return !!(currentFingerprint.join("") === previousFingerprint.join("")); } catch (_oO) { return false; } } function _getExceptionFromEvent(event) { return event.exception && event.exception.values && event.exception.values[0]; } function _getFramesFromEvent(event) { const exception = event.exception; if (exception) { try { return exception.values[0].stacktrace.frames; } catch (_oO) { return void 0; } } return void 0; } var INTEGRATION_NAME5, _dedupeIntegration, dedupeIntegration, Dedupe; var init_dedupe = __esm({ "node_modules/@sentry/browser/esm/integrations/dedupe.js"() { init_esm2(); init_esm(); init_debug_build3(); INTEGRATION_NAME5 = "Dedupe"; _dedupeIntegration = () => { let previousEvent; return { name: INTEGRATION_NAME5, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function processEvent(currentEvent) { if (currentEvent.type) { return currentEvent; } try { if (_shouldDropEvent2(currentEvent, previousEvent)) { DEBUG_BUILD3 && logger.warn("Event dropped due to being a duplicate of previously captured event."); return null; } } catch (_oO) { } return previousEvent = currentEvent; } }; }; dedupeIntegration = defineIntegration(_dedupeIntegration); Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME5, dedupeIntegration); } }); // node_modules/@sentry/browser/esm/integrations/globalhandlers.js function _installGlobalOnErrorHandler(client) { addGlobalErrorInstrumentationHandler((data) => { const { stackParser, attachStacktrace } = getOptions(); if (getClient() !== client || shouldIgnoreOnError()) { return; } const { msg, url, line, column, error } = data; const event = error === void 0 && isString(msg) ? _eventFromIncompleteOnError(msg, url, line, column) : _enhanceEventWithInitialFrame( eventFromUnknownInput2(stackParser, error || msg, void 0, attachStacktrace, false), url, line, column ); event.level = "error"; captureEvent(event, { originalException: error, mechanism: { handled: false, type: "onerror" } }); }); } function _installGlobalOnUnhandledRejectionHandler(client) { addGlobalUnhandledRejectionInstrumentationHandler((e) => { const { stackParser, attachStacktrace } = getOptions(); if (getClient() !== client || shouldIgnoreOnError()) { return; } const error = _getUnhandledRejectionError(e); const event = isPrimitive(error) ? _eventFromRejectionWithPrimitive(error) : eventFromUnknownInput2(stackParser, error, void 0, attachStacktrace, true); event.level = "error"; captureEvent(event, { originalException: error, mechanism: { handled: false, type: "onunhandledrejection" } }); }); } function _getUnhandledRejectionError(error) { if (isPrimitive(error)) { return error; } const e = error; try { if ("reason" in e) { return e.reason; } else if ("detail" in e && "reason" in e.detail) { return e.detail.reason; } } catch (e2) { } return error; } function _eventFromRejectionWithPrimitive(reason) { return { exception: { values: [ { type: "UnhandledRejection", // String() is needed because the Primitive type includes symbols (which can't be automatically stringified) value: `Non-Error promise rejection captured with value: ${String(reason)}` } ] } }; } function _eventFromIncompleteOnError(msg, url, line, column) { const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i; let message = isErrorEvent(msg) ? msg.message : msg; let name = "Error"; const groups2 = message.match(ERROR_TYPES_RE); if (groups2) { name = groups2[1]; message = groups2[2]; } const event = { exception: { values: [ { type: name, value: message } ] } }; return _enhanceEventWithInitialFrame(event, url, line, column); } function _enhanceEventWithInitialFrame(event, url, line, column) { const e = event.exception = event.exception || {}; const ev = e.values = e.values || []; const ev0 = ev[0] = ev[0] || {}; const ev0s = ev0.stacktrace = ev0.stacktrace || {}; const ev0sf = ev0s.frames = ev0s.frames || []; const colno = isNaN(parseInt(column, 10)) ? void 0 : column; const lineno = isNaN(parseInt(line, 10)) ? void 0 : line; const filename = isString(url) && url.length > 0 ? url : getLocationHref(); if (ev0sf.length === 0) { ev0sf.push({ colno, filename, function: "?", in_app: true, lineno }); } return event; } function globalHandlerLog(type) { DEBUG_BUILD3 && logger.log(`Global Handler attached: ${type}`); } function getOptions() { const client = getClient(); const options = client && client.getOptions() || { stackParser: () => [], attachStacktrace: false }; return options; } var INTEGRATION_NAME6, _globalHandlersIntegration, globalHandlersIntegration, GlobalHandlers; var init_globalhandlers = __esm({ "node_modules/@sentry/browser/esm/integrations/globalhandlers.js"() { init_esm2(); init_esm(); init_debug_build3(); init_eventbuilder2(); init_helpers(); INTEGRATION_NAME6 = "GlobalHandlers"; _globalHandlersIntegration = (options = {}) => { const _options = __spreadValues({ onerror: true, onunhandledrejection: true }, options); return { name: INTEGRATION_NAME6, setupOnce() { Error.stackTraceLimit = 50; }, setup(client) { if (_options.onerror) { _installGlobalOnErrorHandler(client); globalHandlerLog("onerror"); } if (_options.onunhandledrejection) { _installGlobalOnUnhandledRejectionHandler(client); globalHandlerLog("onunhandledrejection"); } } }; }; globalHandlersIntegration = defineIntegration(_globalHandlersIntegration); GlobalHandlers = convertIntegrationFnToClass( INTEGRATION_NAME6, globalHandlersIntegration ); } }); // node_modules/@sentry/browser/esm/integrations/httpcontext.js var INTEGRATION_NAME7, _httpContextIntegration, httpContextIntegration, HttpContext; var init_httpcontext = __esm({ "node_modules/@sentry/browser/esm/integrations/httpcontext.js"() { init_esm2(); init_helpers(); INTEGRATION_NAME7 = "HttpContext"; _httpContextIntegration = () => { return { name: INTEGRATION_NAME7, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function preprocessEvent(event) { if (!WINDOW7.navigator && !WINDOW7.location && !WINDOW7.document) { return; } const url = event.request && event.request.url || WINDOW7.location && WINDOW7.location.href; const { referrer } = WINDOW7.document || {}; const { userAgent } = WINDOW7.navigator || {}; const headers = __spreadValues(__spreadValues(__spreadValues({}, event.request && event.request.headers), referrer && { Referer: referrer }), userAgent && { "User-Agent": userAgent }); const request = __spreadProps(__spreadValues(__spreadValues({}, event.request), url && { url }), { headers }); event.request = request; } }; }; httpContextIntegration = defineIntegration(_httpContextIntegration); HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME7, httpContextIntegration); } }); // node_modules/@sentry/browser/esm/integrations/linkederrors.js var DEFAULT_KEY2, DEFAULT_LIMIT2, INTEGRATION_NAME8, _linkedErrorsIntegration2, linkedErrorsIntegration2, LinkedErrors2; var init_linkederrors2 = __esm({ "node_modules/@sentry/browser/esm/integrations/linkederrors.js"() { init_esm2(); init_esm(); init_eventbuilder2(); DEFAULT_KEY2 = "cause"; DEFAULT_LIMIT2 = 5; INTEGRATION_NAME8 = "LinkedErrors"; _linkedErrorsIntegration2 = (options = {}) => { const limit2 = options.limit || DEFAULT_LIMIT2; const key = options.key || DEFAULT_KEY2; return { name: INTEGRATION_NAME8, // TODO v8: Remove this setupOnce() { }, // eslint-disable-line @typescript-eslint/no-empty-function preprocessEvent(event, hint, client) { const options2 = client.getOptions(); applyAggregateErrorsToEvent( // This differs from the LinkedErrors integration in core by using a different exceptionFromError function exceptionFromError2, options2.stackParser, options2.maxValueLength, key, limit2, event, hint ); } }; }; linkedErrorsIntegration2 = defineIntegration(_linkedErrorsIntegration2); LinkedErrors2 = convertIntegrationFnToClass(INTEGRATION_NAME8, linkedErrorsIntegration2); } }); // node_modules/@sentry/browser/esm/integrations/trycatch.js function _wrapTimeFunction(original) { return function(...args) { const originalCallback = args[0]; args[0] = wrap(originalCallback, { mechanism: { data: { function: getFunctionName(original) }, handled: false, type: "instrument" } }); return original.apply(this, args); }; } function _wrapRAF(original) { return function(callback) { return original.apply(this, [ wrap(callback, { mechanism: { data: { function: "requestAnimationFrame", handler: getFunctionName(original) }, handled: false, type: "instrument" } }) ]); }; } function _wrapXHR(originalSend) { return function(...args) { const xhr = this; const xmlHttpRequestProps = ["onload", "onerror", "onprogress", "onreadystatechange"]; xmlHttpRequestProps.forEach((prop) => { if (prop in xhr && typeof xhr[prop] === "function") { fill(xhr, prop, function(original) { const wrapOptions = { mechanism: { data: { function: prop, handler: getFunctionName(original) }, handled: false, type: "instrument" } }; const originalFunction = getOriginalFunction(original); if (originalFunction) { wrapOptions.mechanism.data.handler = getFunctionName(originalFunction); } return wrap(original, wrapOptions); }); } }); return originalSend.apply(this, args); }; } function _wrapEventTarget(target) { const globalObject = WINDOW7; const proto = globalObject[target] && globalObject[target].prototype; if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty("addEventListener")) { return; } fill(proto, "addEventListener", function(original) { return function(eventName, fn, options) { try { if (typeof fn.handleEvent === "function") { fn.handleEvent = wrap(fn.handleEvent, { mechanism: { data: { function: "handleEvent", handler: getFunctionName(fn), target }, handled: false, type: "instrument" } }); } } catch (err) { } return original.apply(this, [ eventName, // eslint-disable-next-line @typescript-eslint/no-explicit-any wrap(fn, { mechanism: { data: { function: "addEventListener", handler: getFunctionName(fn), target }, handled: false, type: "instrument" } }), options ]); }; }); fill( proto, "removeEventListener", function(originalRemoveEventListener) { return function(eventName, fn, options) { const wrappedEventHandler = fn; try { const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__; if (originalEventHandler) { originalRemoveEventListener.call(this, eventName, originalEventHandler, options); } } catch (e) { } return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options); }; } ); } var DEFAULT_EVENT_TARGET, INTEGRATION_NAME9, _browserApiErrorsIntegration, browserApiErrorsIntegration, TryCatch; var init_trycatch = __esm({ "node_modules/@sentry/browser/esm/integrations/trycatch.js"() { init_esm2(); init_esm(); init_helpers(); DEFAULT_EVENT_TARGET = [ "EventTarget", "Window", "Node", "ApplicationCache", "AudioTrackList", "BroadcastChannel", "ChannelMergerNode", "CryptoOperation", "EventSource", "FileReader", "HTMLUnknownElement", "IDBDatabase", "IDBRequest", "IDBTransaction", "KeyOperation", "MediaController", "MessagePort", "ModalWindow", "Notification", "SVGElementInstance", "Screen", "SharedWorker", "TextTrack", "TextTrackCue", "TextTrackList", "WebSocket", "WebSocketWorker", "Worker", "XMLHttpRequest", "XMLHttpRequestEventTarget", "XMLHttpRequestUpload" ]; INTEGRATION_NAME9 = "TryCatch"; _browserApiErrorsIntegration = (options = {}) => { const _options = __spreadValues({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options); return { name: INTEGRATION_NAME9, // TODO: This currently only works for the first client this is setup // We may want to adjust this to check for client etc. setupOnce() { if (_options.setTimeout) { fill(WINDOW7, "setTimeout", _wrapTimeFunction); } if (_options.setInterval) { fill(WINDOW7, "setInterval", _wrapTimeFunction); } if (_options.requestAnimationFrame) { fill(WINDOW7, "requestAnimationFrame", _wrapRAF); } if (_options.XMLHttpRequest && "XMLHttpRequest" in WINDOW7) { fill(XMLHttpRequest.prototype, "send", _wrapXHR); } const eventTargetOption = _options.eventTarget; if (eventTargetOption) { const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET; eventTarget.forEach(_wrapEventTarget); } } }; }; browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration); TryCatch = convertIntegrationFnToClass( INTEGRATION_NAME9, browserApiErrorsIntegration ); } }); // node_modules/@sentry/browser/esm/integrations/index.js var integrations_exports2 = {}; __export(integrations_exports2, { Breadcrumbs: () => Breadcrumbs, Dedupe: () => Dedupe, GlobalHandlers: () => GlobalHandlers, HttpContext: () => HttpContext, LinkedErrors: () => LinkedErrors2, TryCatch: () => TryCatch }); var init_integrations2 = __esm({ "node_modules/@sentry/browser/esm/integrations/index.js"() { init_globalhandlers(); init_trycatch(); init_breadcrumbs(); init_linkederrors2(); init_httpcontext(); init_dedupe(); } }); // node_modules/@sentry/browser/esm/index.js var windowIntegrations, INTEGRATIONS; var init_esm3 = __esm({ "node_modules/@sentry/browser/esm/index.js"() { init_esm2(); init_esm2(); init_helpers(); init_integrations2(); windowIntegrations = {}; if (WINDOW7.Sentry && WINDOW7.Sentry.Integrations) { windowIntegrations = WINDOW7.Sentry.Integrations; } INTEGRATIONS = __spreadValues(__spreadValues(__spreadValues({}, windowIntegrations), Integrations), integrations_exports2); } }); // src/utils/event-registry.js var addEvent, doEvent2, onEvent, onSettingsChange; var init_event_registry = __esm({ "src/utils/event-registry.js"() { addEvent = (eventName, eventCallback, args) => { const { eventScope = null, removeAfterFire = false, weight = 0, id = null } = args || {}; if (!eventRegistry) { return; } eventRegistry.addEventListener(eventName, eventCallback, eventScope, removeAfterFire, weight, id); }; doEvent2 = (eventName, params) => { if (!eventRegistry) { return; } eventRegistry.doEvent(eventName, params); }; onEvent = (event, callback, remove = false) => { if (!eventRegistry) { return; } eventRegistry.addEventListener(event, callback, null, remove); }; onSettingsChange = (key, callback) => { onEvent("mh-improved-settings-changed", (args) => { if (args.key !== key) { return; } if (typeof callback === "function") { callback(args); } else if (typeof callback === "object") { if (args.value) { callback.enable(args); } else { callback.disable(args); } } }); }; } }); // src/utils/styles.js var addStylesDirect, addModuleStyles, addStyles, removeStyles, addHudStyles, removeHudStyles; var init_styles = __esm({ "src/utils/styles.js"() { init_event_registry(); addStylesDirect = (styles7, identifier = "mh-utils-custom-styles", once = false) => { identifier = `mh-utils-${identifier}`; const existingStyles = document.querySelector(`#${identifier}`); if (existingStyles) { if (once) { return existingStyles; } existingStyles.innerHTML += styles7; return existingStyles; } const style = document.createElement("style"); style.id = identifier; style.innerHTML = styles7; document.head.append(style); return style; }; addModuleStyles = (styles7, identifier = "mh-improved-styles", replace = false) => { const existingStyles = document.querySelector(`#${identifier}`); styles7 = Array.isArray(styles7) ? styles7.join("\n") : styles7; if (existingStyles) { if (replace) { existingStyles.innerHTML = styles7; } else { existingStyles.innerHTML += styles7; } return existingStyles; } const style = document.createElement("style"); style.id = identifier; style.innerHTML = styles7; document.head.append(style); return style; }; addStyles = (styles7, module = false, identifier = "mh-improved-styles") => { if (!module) { throw new Error("Module ID is required for adding module styles.", module); } const key = `${identifier}-${module}`; let stylesEl = addModuleStyles(styles7, key, true); onEvent(`mh-improved-settings-changed-${module}`, (enabled) => { if (enabled) { stylesEl = addModuleStyles(styles7, key, true); } else if (stylesEl) { stylesEl.remove(); } }); }; removeStyles = (module = false, identifier = "mh-improved-styles") => { if (!module) { throw new Error("Module ID is required for adding module styles.", module); } const key = `${identifier}-${module}`; const stylesEl = document.querySelector(`#${key}`); if (stylesEl) { stylesEl.remove(); } }; addHudStyles = (styles7) => __async(void 0, null, function* () { addStyles(styles7, "mh-improved-styles-location-hud", true); }); removeHudStyles = () => { const styles7 = document.querySelectorAll(".mh-improved-styles-location-hud"); styles7.forEach((style) => { style.remove(); }); }; } }); // src/utils/settings.js var getSettingDirect, saveSettingDirect, getGroupAndKey, getSetting, deleteSetting, getSettings, saveSetting; var init_settings = __esm({ "src/utils/settings.js"() { getSettingDirect = (key = null, defaultValue = null, identifier = "mousehunt-improved-settings") => { const settings = JSON.parse(localStorage.getItem(identifier)) || {}; if (!key) { return settings; } if (!key.includes(".")) { if (settings[key] === void 0) { return defaultValue; } return settings[key]; } const groupAndKey = getGroupAndKey(key); if (!groupAndKey.group) { if (settings[groupAndKey.key] === void 0) { return defaultValue; } return settings[groupAndKey.key]; } const groupSettings = settings[groupAndKey.group] || {}; if (groupSettings[groupAndKey.key] === void 0) { return defaultValue; } return groupSettings[groupAndKey.key]; }; saveSettingDirect = (key, value, identifier = "mousehunt-improved-settings") => { const settings = getSettingDirect(null, {}, identifier); const groupAndKey = getGroupAndKey(key); if (groupAndKey.group) { if (!settings[groupAndKey.group]) { settings[groupAndKey.group] = {}; } settings[groupAndKey.group][groupAndKey.key] = value; } else { settings[key] = value; } localStorage.setItem(identifier, JSON.stringify(settings)); }; getGroupAndKey = (key) => { const split = key.split("."); if (split.length === 1) { return { group: null, key: split[0] }; } if (split[0] === "location-huds-enabled") { return { group: "location-huds-enabled", key: split[1] }; } return { group: `${split[0]}-settings`, key: split[1] }; }; getSetting = (key, defaultValue = false) => { return getSettingDirect(key, defaultValue, "mousehunt-improved-settings"); }; deleteSetting = (key) => { const settings = getSettings(); const groupAndKey = getGroupAndKey(key); if (groupAndKey.group) { if (settings[groupAndKey.group]) { delete settings[groupAndKey.group][groupAndKey.key]; } else { delete settings[groupAndKey.key]; } } else { delete settings[key]; } localStorage.setItem("mousehunt-improved-settings", JSON.stringify(settings)); }; getSettings = () => { const settings = localStorage.getItem("mousehunt-improved-settings"); if (!settings) { return {}; } return JSON.parse(settings); }; saveSetting = (key, value) => { saveSettingDirect(key, value, "mousehunt-improved-settings"); return value; }; } }); // src/utils/styles/favorite-button.css var favorite_button_default; var init_favorite_button = __esm({ "src/utils/styles/favorite-button.css"() { favorite_button_default = ".custom-favorite-button{top:0;right:0;display:inline-block;width:35px;height:35px;vertical-align:middle;background:url(https://www.mousehuntgame.com/images/ui/camp/trap/star_empty.png?asset_cache_version=2) 50% 50% no-repeat;background-size:90%;border-radius:50%}.custom-favorite-button-small{width:20px;height:20px}.custom-favorite-button:hover{background-color:#fff;background-image:url(https://www.mousehuntgame.com/images/ui/camp/trap/star_favorite.png?asset_cache_version=2);outline:2px solid #ccc}.custom-favorite-button.active{background-image:url(https://www.mousehuntgame.com/images/ui/camp/trap/star_favorite.png?asset_cache_version=2)}.custom-favorite-button.busy{background-image:url(https://www.mousehuntgame.com/images/ui/loaders/small_spinner.gif?asset_cache_version=2)}\n"; } }); // src/utils/elements.js var makeElement, makeButton, makeMhButton, makeLink, makeFavoriteButton, createPopup, makeTooltip, makePage; var init_elements = __esm({ "src/utils/elements.js"() { init_settings(); init_styles(); init_favorite_button(); makeElement = (tag, classes = "", text = "", appendTo = null) => { const element = document.createElement(tag); if (Array.isArray(classes)) { classes = classes.join(" "); } if (classes && classes.length) { element.className = classes; } element.innerHTML = text; if (appendTo) { appendTo.append(element); return appendTo; } return element; }; makeButton = (text, href, tiny = true, extraClasses = [], encodeAsSpace = false) => { href = href.replaceAll(/\s/g, "_"); href = encodeAsSpace ? href.replaceAll("_", "%20") : href.replaceAll(/\s/g, "_"); href = href.replaceAll("$", "_"); return `<a href="${href}" class="mousehuntActionButton ${tiny ? "tiny" : ""} ${extraClasses.join(" ")}"><span>${text}</span></a>`; }; makeMhButton = (opts) => { const { text = "", size = "small", className = "", callback = () => { }, appendTo = null } = opts; const button = makeElement("a", ["mousehuntActionButton", size, className]); makeElement("span", "", text, button); button.title = opts.title || text; button.addEventListener("click", () => { callback(); }); if (appendTo) { appendTo.append(button); } return button; }; makeLink = (text, href, encodeAsSpace = false) => { if (encodeAsSpace) { href = href.replaceAll("_", "%20"); } return `<a href="${href}" target="_mouse" class="mousehuntActionButton tiny"><span>${text}</span></a>`; }; makeFavoriteButton = (options) => __async(void 0, null, function* () { addStylesDirect(favorite_button_default, "mh-improved-styles-favorite-button", true); const { id = null, target = null, size = "small", state = false, isSetting = true, defaultState = false, onChange = null, onActivate = null, onDeactivate = null } = options; const existing = document.querySelector(`#${id}`); if (existing) { existing.remove(); } const star = document.createElement("a"); star.classList.add("custom-favorite-button"); if (size === "small") { star.classList.add("custom-favorite-button-small"); } star.id = id; star.setAttribute("data-item-id", id); star.setAttribute("href", "#"); star.style.display = "inline-block"; let currentSetting = false; currentSetting = isSetting ? getSetting(id, defaultState) : state; if (currentSetting) { star.classList.add("active"); } else { star.classList.add("inactive"); } star.addEventListener("click", (e) => __async(void 0, null, function* () { star.classList.add("busy"); e.preventDefault(); e.stopPropagation(); const currentStar = e.target; const currentState = !currentStar.classList.contains("active"); if (onChange !== null) { yield onChange(currentState); } else if (isSetting) { saveSetting(id, currentState); } currentStar.classList.remove("inactive"); currentStar.classList.remove("active"); if (currentState) { currentStar.classList.add("active"); if (onActivate !== null) { yield onActivate(currentState); } } else { currentStar.classList.add("inactive"); if (onDeactivate !== null) { yield onDeactivate(currentState); } } setTimeout(() => { currentStar.classList.remove("busy"); }, 300); })); if (target) { target.append(star); } return star; }); createPopup = (options) => { if ("undefined" === typeof jsDialog || !jsDialog) { return false; } const settings = Object.assign({}, { title: "", content: "", hasCloseButton: true, template: "default", show: true, className: "" }, options); const popup = new jsDialog(); popup.setIsModal(!settings.hasCloseButton); popup.setTemplate(settings.template); popup.addToken("{*title*}", settings.title); popup.addToken("{*content*}", settings.content); popup.setAttributes({ className: settings.className }); if (settings.show) { popup.show(); } return popup; }; makeTooltip = (options) => { if (!options.appendTo) { return false; } const { appendTo, className = "", text = "" } = options; const tooltip = makeElement("div", ["PreferencesPage__blackTooltip", "mh-improved-tooltip", className]); makeElement("span", "PreferencesPage__blackTooltipText", text, tooltip); appendTo.append(tooltip); return tooltip; }; makePage = (content) => { var _a, _b; const setContent = () => { const pageContainer = document.querySelector(".mousehuntHud-page-tabContentContainer"); if (!pageContainer) { return; } if (typeof content === "function") { pageContainer.innerHTML = ""; content(pageContainer); } else if (typeof content === "object" && content instanceof HTMLElement) { pageContainer.innerHTML = ""; pageContainer.append(content); } else { pageContainer.innerHTML = content; } }; if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.setPage)) { return; } hg.utils.PageUtil.setPage("PrivacyPolicy", {}, setContent, setContent); }; } }); // src/utils/styles/blueprint.css var blueprint_default; var init_blueprint = __esm({ "src/utils/styles/blueprint.css"() { blueprint_default = ".mh-improved-blueprint .trapSelectorView__outerBlock{position:relative;display:flex;flex:1;flex-direction:column;gap:10px}.mh-improved-blueprint--active .mh-improved-blueprint{display:flex}\n"; } }); // src/utils/blueprint.js var activeBlueprint, addedEvent, toggleBlueprint; var init_blueprint2 = __esm({ "src/utils/blueprint.js"() { init_styles(); init_elements(); init_event_registry(); init_blueprint(); activeBlueprint = null; addedEvent = false; toggleBlueprint = (id, content) => { addStylesDirect(blueprint_default, "mh-improved-styles-blueprints", true); const container = document.querySelector("#mousehuntContainer"); if (!container) { return; } const blueprint = document.querySelector(".trapSelectorView__blueprint"); if (!blueprint) { return; } const browserStateParent = document.querySelector(".trapSelectorView__browserStateParent"); if (!browserStateParent) { return; } const existing = document.querySelector(`#mh-improved-blueprint--${id}`); if (existing) { existing.remove(); } const wrapper = makeElement("div", ["trapSelectorView__browserState", "trapSelectorView__browserContainer", "mh-improved-blueprint", `mh-improved-blueprint--${id}`]); wrapper.id = `mh-improved-blueprint--${id}`; const inner = makeElement("div", "trapSelectorView__outerBlock"); inner.append(content); wrapper.append(inner); browserStateParent.append(wrapper); if (activeBlueprint === id) { activeBlueprint = null; container.classList.remove("showBlueprint"); blueprint.classList.remove("trapSelectorView__blueprint--active", "mh-improved-blueprint--active"); browserStateParent.classList.remove(`trapSelectorView__browserStateParent--${id}`); } else { const close2 = document.querySelector(".campPage-trap-blueprint-closeButton"); if (close2) { close2.click(); } activeBlueprint = id; container.classList.add("showBlueprint"); blueprint.classList.add("trapSelectorView__blueprint--active", "mh-improved-blueprint--active"); browserStateParent.classList.add(`trapSelectorView__browserStateParent--${id}`); } if (!addedEvent) { onEvent("camp_page_toggle_blueprint", () => { activeBlueprint = null; }); addedEvent = true; } }; } }); // src/utils/db.js var database, databaseDelete, dbGet, dbSet, dbDelete, dbGetAll, dbDeleteAll; var init_db = __esm({ "src/utils/db.js"() { database = (databaseName) => __async(void 0, null, function* () { return new Promise((resolve, reject2) => { const request = indexedDB.open(`mh-improved-${databaseName}`, 6); request.onerror = (event) => { reject2(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; request.onupgradeneeded = (event) => { const db = event.target.result; if (!db.objectStoreNames.contains(databaseName)) { db.createObjectStore(databaseName, { keyPath: "id" }); } }; }); }); databaseDelete = (databaseName) => __async(void 0, null, function* () { databaseName = `mh-improved-${databaseName}`; return new Promise((resolve, reject2) => { const request = indexedDB.deleteDatabase(databaseName); request.onerror = (event) => { reject2(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; }); }); dbGet = (databaseName, id) => __async(void 0, null, function* () { const db = yield database(databaseName); const transaction = db.transaction(databaseName, "readonly"); transaction.onerror = (event) => { throw new Error(event.target.error); }; const objectStore = transaction.objectStore(databaseName); const request = objectStore.get(id); return new Promise((resolve, reject2) => { request.onsuccess = () => { resolve(request.result); }; request.onerror = () => { reject2(request.error); }; transaction.oncomplete = () => { db.close(); }; }); }); dbSet = (databaseName, data) => __async(void 0, null, function* () { const db = yield database(databaseName); const transaction = db.transaction(databaseName, "readwrite"); const objectStore = transaction.objectStore(databaseName); data = { data, id: data.id || Date.now() }; const request = objectStore.put(data); return new Promise((resolve, reject2) => { request.onsuccess = () => { resolve(request.result); }; request.onerror = () => { reject2(request.error); }; transaction.oncomplete = () => { db.close(); }; }); }); dbDelete = (databaseName, id) => __async(void 0, null, function* () { const db = yield database(databaseName); const transaction = db.transaction(databaseName, "readwrite"); const objectStore = transaction.objectStore(databaseName); const request = objectStore.delete(id); return new Promise((resolve, reject2) => { request.onsuccess = () => { resolve(request.result); }; request.onerror = () => { reject2(request.error); }; transaction.oncomplete = () => { db.close(); }; }); }); dbGetAll = (databaseName) => __async(void 0, null, function* () { const db = yield database(databaseName); const transaction = db.transaction(databaseName, "readonly"); const objectStore = transaction.objectStore(databaseName); const request = objectStore.getAll(); return new Promise((resolve, reject2) => { request.onsuccess = () => { resolve(request.result); }; request.onerror = () => { reject2(request.error); }; transaction.oncomplete = () => { db.close(); }; }); }); dbDeleteAll = (databaseName) => __async(void 0, null, function* () { const db = yield database(databaseName); const transaction = db.transaction(databaseName, "readwrite"); const objectStore = transaction.objectStore(databaseName); const request = objectStore.clear(); return new Promise((resolve, reject2) => { request.onsuccess = () => { resolve(request.result); }; request.onerror = () => { reject2(request.error); }; transaction.oncomplete = () => { db.close(); }; }); }); } }); // src/utils/global.js var setGlobal, getGlobal; var init_global = __esm({ "src/utils/global.js"() { setGlobal = (key, value) => { if (!window.mhui) { window.mhui = {}; } window.mhui[key] = value; app.mhui = mhui; }; getGlobal = (key) => { if (window.mhui) { return window.mhui[key] || false; } if (app.mhui) { return app.mhui[key] || false; } return false; }; } }); // src/utils/debug.js var debug, debuglog; var init_debug = __esm({ "src/utils/debug.js"() { init_global(); init_settings(); debug = (message, ...args) => { if (getSetting("debug.module", false) || getGlobal("mh-improved-updating", false)) { console.log( `%cMH Improved%c: ${message}`, "color: #90588c; font-weight: 900", "color: inherit; font-weight: inherit", ...args ); } }; debuglog = (module, message, ...args) => { if (getSetting("debug.all", false) || getSetting(`debug.${module}`, false) || getGlobal("mh-improved-updating", false)) { console.log( `%cMH Improved %c${module}%c ${message}`, "color: #90588c; font-weight: 900", "color: #90588c; font-weight: 400", "color: inherit; font-weight: inherit", ...args ); } }; } }); // src/utils/data.js var validDataFiles, isValidDataFile, getCacheExpiration, setCacheExpiration, isCacheExpired, fetchData, getData, clearCaches, updateCaches, getHeaders, sessionSet, sessionGet, sessionDelete, sessionsDelete, cacheSet, dataCacheSet, cacheGetHelper, cacheGet, dataCacheGet, cacheDelete; var init_data = __esm({ "src/utils/data.js"() { init_db(); init_debug(); init_settings(); validDataFiles = /* @__PURE__ */ new Set([ "effs", "environments-events", "environments", "item-thumbnails", "items-tradable", "m400-locations", "marketplace-hidden-items", "mice-groups", "mice-regions", "mice-thumbnails", "minlucks", "relic-hunter-hints", "scoreboards", "ultimate-checkmark", "upscaled-images", "wisdom" ]); isValidDataFile = (file) => { return validDataFiles.has(file); }; getCacheExpiration = (key = null) => __async(void 0, null, function* () { return yield cacheGet(`expiration-${key}`, false); }); setCacheExpiration = (key) => __async(void 0, null, function* () { debuglog("utils-data", `Setting cache expiration for ${key}`); cacheSet(`expiration-${key}`, Date.now() + (Math.floor(Math.random() * 7) + 7) * 24 * 60 * 60 * 1e3); }); isCacheExpired = (key) => __async(void 0, null, function* () { const expiration = yield getCacheExpiration(key); if (!expiration) { return true; } return expiration.date < Date.now(); }); fetchData = (key) => __async(void 0, null, function* () { const data = yield fetch(`https://api.mouse.rip/${key}`, { method: "GET", headers: getHeaders() }); return yield data.json(); }); getData = (key) => __async(void 0, null, function* () { if (!isValidDataFile(key)) { debuglog("utils-data", `Cannot get data for ${key}, invalid key`); return false; } const isExpired = yield isCacheExpired(key); if (!isExpired) { const cachedData = yield dataCacheGet(key, false); if (cachedData) { return cachedData; } } debuglog("utils-data", `Fetching data for ${key}\u2026`); const data = yield fetchData(key); debuglog("utils-data", `Fetched data for ${key}`, data); if (data) { dataCacheSet(key, data); setCacheExpiration(key); } return data; }); clearCaches = () => __async(void 0, null, function* () { validDataFiles.forEach((file) => { dbDelete("data", file); }); dbDeleteAll("ar-cache"); for (const key of Object.keys(localStorage)) { if (key.startsWith("mh-improved-cache")) { localStorage.removeItem(key); } } for (const key of Object.keys(sessionStorage)) { if (key.startsWith("mh-improved")) { sessionStorage.removeItem(key); } } yield dbDelete("cache", "expirations"); }); updateCaches = () => __async(void 0, null, function* () { validDataFiles.forEach((file) => __async(void 0, null, function* () { yield getData(file); })); }); getHeaders = () => { return { "Content-Type": "application/json", "X-MH-Improved": "true", "X-MH-Improved-Version": mhImprovedVersion || "unknown", "X-MH-Improved-Platform": mhImprovedPlatform || "unknown" }; }; sessionSet = (key, value, retry = false) => { if (getSetting("debug.no-cache")) { return; } key = `mh-improved-${key}`; const stringified = JSON.stringify(value); try { sessionStorage.setItem(key, stringified); } catch (error) { if ("QuotaExceededError" === error.name && !retry) { clearCaches(); sessionSet(key, value, true); } } }; sessionGet = (key, defaultValue = false) => { if (getSetting("debug.no-cache")) { return defaultValue; } key = `mh-improved-${key}`; const value = sessionStorage.getItem(key); if (!value) { return defaultValue; } return JSON.parse(value); }; sessionDelete = (key) => { key = `mh-improved-${key}`; sessionStorage.removeItem(key); }; sessionsDelete = (prefix) => { for (const key of Object.keys(sessionStorage)) { if (key.startsWith(prefix)) { sessionStorage.removeItem(key); } } }; cacheSet = (key, value) => { dbSet("cache", { id: key, value }); }; dataCacheSet = (key, value) => { dbSet("data", { id: key, value }); }; cacheGetHelper = (key, defaultValue = false, db = "cache") => __async(void 0, null, function* () { var _a; const cached = yield dbGet(db, key); if (!((_a = cached == null ? void 0 : cached.data) == null ? void 0 : _a.value)) { return defaultValue; } return cached.data.value; }); cacheGet = (key, defaultValue = false) => __async(void 0, null, function* () { return yield cacheGetHelper(key, defaultValue, "cache"); }); dataCacheGet = (key, defaultValue = false) => __async(void 0, null, function* () { return yield cacheGetHelper(key, defaultValue, "data"); }); cacheDelete = (key) => { dbDelete("cache", key); }; } }); // src/utils/draggable.js var makeElementDraggable; var init_draggable = __esm({ "src/utils/draggable.js"() { makeElementDraggable = (dragTarget, dragHandle, defaultX = null, defaultY = null, storageKey = null, savePosition = true) => { const modal = document.querySelector(dragTarget); if (!modal) { return; } const handle = document.querySelector(dragHandle); if (!handle) { return; } const keepWithinLimits = (type, value) => { if ("top" === type) { return value < -20 ? -20 : value; } if (value < handle.offsetWidth * -1 + 20) { return handle.offsetWidth * -1 + 20; } if (value > document.body.clientWidth - 20) { return document.body.clientWidth - 20; } return value; }; const onMouseDown = (e) => { e.preventDefault(); setTimeout(() => { x1 = e.clientX; y1 = e.clientY; modal.classList.add("mh-is-dragging"); document.onmousemove = onDrag; document.onmouseup = finishDrag; }, 50); }; const finishDrag = () => { document.onmouseup = null; document.onmousemove = null; modal.classList.remove("mh-is-dragging"); if (storageKey) { localStorage.setItem(storageKey, JSON.stringify({ x: modal.offsetLeft, y: modal.offsetTop })); } }; const onDrag = (e) => { e.preventDefault(); x2 = x1 - e.clientX; y2 = y1 - e.clientY; x1 = e.clientX; y1 = e.clientY; const newLeft = keepWithinLimits("left", modal.offsetLeft - x2); const newTop = keepWithinLimits("top", modal.offsetTop - y2); modal.style.left = `${newLeft}px`; modal.style.top = `${newTop}px`; }; let startX = defaultX || 0; let startY2 = defaultY || 0; if (!storageKey) { storageKey = `mh-draggable-${dragTarget}-${dragHandle}`; } if (savePosition) { const storedPosition = localStorage.getItem(storageKey); if (storedPosition) { const position = JSON.parse(storedPosition); startX = keepWithinLimits("left", position.x); startY2 = keepWithinLimits("top", position.y); } } modal.style.left = `${startX}px`; modal.style.top = `${startY2}px`; let x1 = 0, y1 = 0, x2 = 0, y2 = 0; handle.onmousedown = onMouseDown; }; } }); // src/utils/page.js var getCurrentPage, setPage, setTab, getCurrentTab, getCurrentSubtab, getCurrentDialog, isCurrentPage; var init_page = __esm({ "src/utils/page.js"() { getCurrentPage = () => { var _a, _b, _c, _d; if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.getCurrentPage)) { return null; } const page = hg.utils.PageUtil.getCurrentPage(); if (!page) { const query = ((_d = (_c = hg == null ? void 0 : hg.utils) == null ? void 0 : _c.PageUtil) == null ? void 0 : _d.getQueryParams()) || {}; if ((query == null ? void 0 : query.switch_to) && "mobile" === query.switch_to) { return "camp"; } return null; } return page.toLowerCase(); }; setPage = (page, ...args) => { var _a, _b; if ("wiki" === page.toLowerCase()) { doEvent("mh-improved-open-wiki"); return; } page = page.charAt(0).toUpperCase() + page.slice(1); if ((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.setPage) { hg.utils.PageUtil.setPage(page, ...args); } }; setTab = (tab, ...args) => { var _a, _b; if ((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.setPageTab) { hg.utils.PageUtil.setPageTab(tab, ...args); } }; getCurrentTab = () => { var _a, _b; if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.getCurrentPageTab)) { return getCurrentPage(); } const tab = hg.utils.PageUtil.getCurrentPageTab() || ""; if (tab.length <= 0) { return getCurrentPage(); } return tab.toLowerCase(); }; getCurrentSubtab = () => { const subtab = hg.utils.PageUtil.getCurrentPageSubTab(); if (!subtab || subtab.length <= 0) { return getCurrentTab(); } return subtab.toLowerCase(); }; getCurrentDialog = () => { const overlay = document.querySelector("#overlayPopup"); if (!overlay || !overlay.classList || overlay.classList.length <= 0) { return null; } let overlayType = overlay.classList.value; overlayType = overlayType.replace("jsDialogFixed", ""); overlayType = overlayType.replace("default", ""); overlayType = overlayType.replace("wide", ""); overlayType = overlayType.replace("ajax", ""); overlayType = overlayType.replace("overlay", ""); overlayType = overlayType.replace("treasureMapPopup", "map"); overlayType = overlayType.replace("itemViewPopup", "item"); overlayType = overlayType.replace("mouseViewPopup", "mouse"); overlayType = overlayType.replace("largerImage", "image"); overlayType = overlayType.replace("convertibleOpenViewPopup", "convertible"); overlayType = overlayType.replace("adventureBookPopup", "adventureBook"); overlayType = overlayType.replace("marketplaceViewPopup", "marketplace"); overlayType = overlayType.replace("giftSelectorViewPopup", "gifts"); overlayType = overlayType.replace("supportPageContactUsForm", "support"); overlayType = overlayType.replace("MHCheckout", "premiumShop"); overlayType = overlayType.trim(); if ("Popup" === overlayType) { return false; } return overlayType; }; isCurrentPage = (targetPage = null, targetTab = null, targetSubtab = null, forceCurrentPage = null, forceCurrentTab = null, forceCurrentSubtab = null) => { if (!targetPage) { return false; } const currentPage = forceCurrentPage || getCurrentPage(); if (!targetTab) { return currentPage === targetPage; } const currentTab = forceCurrentTab || getCurrentTab(); if (!targetSubtab) { return currentPage === targetPage && currentTab === targetTab; } const currentSubtab = forceCurrentSubtab || getCurrentSubtab(); if (currentSubtab === currentTab) { return currentPage === targetPage && currentTab === targetTab; } return currentPage === targetPage && currentTab === targetTab && currentSubtab === targetSubtab; }; } }); // src/utils/location.js var getCurrentLocation, getRelicHunterLocation, travelTo; var init_location = __esm({ "src/utils/location.js"() { init_data(); getCurrentLocation = () => { const location = (user == null ? void 0 : user.environment_type) || ""; return location.toLowerCase(); }; getRelicHunterLocation = () => { const cacheExpiry = 5 * 60 * 1e3; const cacheKey = "mh-improved-relic-hunter-location"; let cached = sessionGet(cacheKey); if (cached) { cached = JSON.parse(cached); } if (cached && cached.expiry > Date.now()) { return cached.data; } return fetch("https://rh-api.mouse.rip/", { headers: getHeaders() }).then((response) => response.json()).then((data) => { const expiry = Date.now() + cacheExpiry; sessionSet(cacheKey, JSON.stringify({ expiry, data })); return data; }).catch((error) => { console.error(error); }); }; travelTo = (location) => { var _a, _b; if ((_b = (_a = app == null ? void 0 : app.pages) == null ? void 0 : _a.TravelPage) == null ? void 0 : _b.travel) { app.pages.TravelPage.travel(location); } }; } }); // src/utils/horn.js var showHornMessage; var init_horn = __esm({ "src/utils/horn.js"() { init_elements(); showHornMessage = (options) => { const huntersHornView = document.querySelector(".huntersHornView__messageContainer"); if (!huntersHornView) { return; } const settings = { title: options.title || "Hunters Horn", text: options.text || "This is a message from the Hunters Horn", button: options.button || "OK", action: options.action || (() => { }), dismiss: options.dismiss || null, type: options.type || "recent_linked_turn", classname: options.classname || "", image: options.image || null, imageLink: options.imageLink || null, imageCallback: options.imageCallback || null }; const backdrop = document.querySelector(".huntersHornView__backdrop"); if (backdrop) { backdrop.classList.add("huntersHornView__backdrop--active"); } const gameInfo = document.querySelector(".mousehuntHud-gameInfo"); if (gameInfo) { gameInfo.classList.add("blur"); } const messageWrapper = makeElement("div", ["huntersHornView__message huntersHornView__message--active", settings.classname]); const message = makeElement("div", ["huntersHornMessageView", `huntersHornMessageView--${settings.type}`]); makeElement("div", "huntersHornMessageView__title", settings.title, message); const content = makeElement("div", "huntersHornMessageView__content"); if (settings.image) { const imgWrapper = makeElement("div", "huntersHornMessageView__friend"); const img = makeElement("a", "huntersHornMessageView__friendProfilePic"); if (settings.imageLink) { img.href = settings.imageLink; } else if (settings.imageCallback) { img.addEventListener("click", settings.imageCallback); } else { img.href = "#"; } img.style.backgroundImage = `url(${settings.image})`; imgWrapper.append(img); content.append(imgWrapper); } makeElement("div", "huntersHornMessageView__text", settings.text, content); const buttonSpacer = makeElement("div", "huntersHornMessageView__buttonSpacer"); const button = makeElement("button", "huntersHornMessageView__action"); const buttonLabel = makeElement("div", "huntersHornMessageView__actionLabel"); makeElement("span", "huntersHornMessageView__actionText", settings.button, buttonLabel); button.append(buttonLabel); button.addEventListener("click", () => { if (settings.action) { settings.action(); } messageWrapper.innerHTML = ""; backdrop.classList.remove("huntersHornView__backdrop--active"); gameInfo.classList.remove("blur"); }); buttonSpacer.append(button); content.append(buttonSpacer); message.append(content); if (settings.dismiss) { const countdown = makeElement("button", ["huntersHornMessageView__countdown"]); makeElement("div", "huntersHornMessageView__countdownButtonImage", "", countdown); const svgMarkup = `<svg class="huntersHornMessageView__countdownSVG"> <circle r="46%" cx="50%" cy="50%" class="huntersHornMessageView__countdownCircleTrack"></circle> <circle r="46%" cx="50%" cy="50%" class="huntersHornMessageView__countdownCircle" style="animation-duration: ${settings.dismiss}ms;"></circle> </svg>`; countdown.innerHTML += svgMarkup; countdown.addEventListener("click", () => { countdown.classList.add("huntersHornMessageView__countdown--complete"); messageWrapper.innerHTML = ""; backdrop.classList.remove("huntersHornView__backdrop--active"); gameInfo.classList.remove("blur"); }); message.append(countdown); } messageWrapper.append(message); const existingMessages = huntersHornView.querySelector(".huntersHornView__message"); if (existingMessages) { existingMessages.remove(); } huntersHornView.append(messageWrapper); if (settings.dismiss) { setTimeout(() => { const countdown = messageWrapper.querySelector(".huntersHornMessageView__countdown"); if (countdown) { countdown.classList.add("huntersHornMessageView__countdown--complete"); } messageWrapper.innerHTML = ""; backdrop.classList.remove("huntersHornView__backdrop--active"); gameInfo.classList.remove("blur"); }, settings.dismiss); } }; } }); // src/utils/events.js var requestCallbacks, onRequestHolder, onRequest, runCallbacks, overlayMutationObserver, overlayCallbacks, onOverlayChange, getDialogMapping, onDialogShow, onDialogHide, pageChangeCallbacks, pageChangeObserver, onPageChange, onTravel, onTravelCallback, onNavigation, onActivation, onDeactivation, onTurn, onTrapChange; var init_events = __esm({ "src/utils/events.js"() { init_page(); init_location(); init_event_registry(); init_horn(); requestCallbacks = {}; onRequestHolder = null; onRequest = (url = null, callback = null, skipSuccess = false) => { url = "*" === url ? "*" : `managers/ajax/${url}`; if (!callback) { return; } if (!requestCallbacks[url]) { requestCallbacks[url] = []; } requestCallbacks[url].push({ callback, skipSuccess }); if (onRequestHolder) { return; } const req = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function() { this.addEventListener("load", function() { if (this.responseText) { let response = {}; try { response = JSON.parse(this.responseText); } catch (e) { return; } Object.keys(requestCallbacks).forEach((key) => { if ("*" === key || this.responseURL.includes(key)) { requestCallbacks[key].forEach((item) => { if (item.callback && typeof item.callback === "function" && (item.skipSuccess || (response == null ? void 0 : response.success))) { item.callback(response); } }); } }); } }); Reflect.apply(req, this, arguments); }; onRequestHolder = true; }; runCallbacks = (settings, parentNode, callbacks) => { Object.keys(settings).forEach((key) => { if (parentNode && parentNode.classList && parentNode.classList.contains(settings[key].selector)) { settings[key].isVisible = true; if (callbacks[key] && callbacks[key].show) { callbacks[key].show(); } } else if (settings[key].isVisible) { settings[key].isVisible = false; if (callbacks[key] && callbacks[key].hide) { callbacks[key].hide(); } } }); return settings; }; overlayMutationObserver = null; overlayCallbacks = []; onOverlayChange = (callbacks) => { let overlayData = { map: { isVisible: false, selector: "treasureMapPopup" }, item: { isVisible: false, selector: "itemViewPopup" }, mouse: { isVisible: false, selector: "mouseViewPopup" }, image: { isVisible: false, selector: "largerImage" }, convertible: { isVisible: false, selector: "convertibleOpenViewPopup" }, adventureBook: { isVisible: false, selector: "adventureBookPopup" }, marketplace: { isVisible: false, selector: "marketplaceViewPopup" }, gifts: { isVisible: false, selector: "giftSelectorViewPopup" }, support: { isVisible: false, selector: "supportPageContactUsForm" }, premiumShop: { isVisible: false, selector: "MHCheckout" } }; overlayCallbacks.push(callbacks); if (overlayMutationObserver) { return; } overlayMutationObserver = true; const observer2 = new MutationObserver(() => { overlayCallbacks.forEach((callback) => { if (callback.change) { callback.change(); } const overlayType = document.querySelector("#overlayPopup"); if (overlayType && overlayType.classList.length <= 0) { return; } const overlayBg = document.querySelector("#overlayBg"); if (overlayBg && overlayBg.classList.length > 0) { if (callback.show) { callback.show(); } } else if (callback.hide) { callback.hide(); } overlayData = runCallbacks(overlayData, overlayType, callback); }); }); const observeTarget = document.querySelector("#overlayPopup"); if (observeTarget) { observer2.observe(observeTarget, { attributes: true, attributeFilter: ["class"] }); } }; getDialogMapping = () => { return { treasureMapPopup: "map", itemViewPopup: "item", mouseViewPopup: "mouse", largerImage: "image", convertibleOpenViewPopup: "convertible", adventureBookPopup: "adventureBook", marketplaceViewPopup: "marketplace", giftSelectorViewPopup: "gifts", supportPageContactUsForm: "support", MHCheckout: "premiumShop" }; }; onDialogShow = (overlay = null, callback = null, once = false) => { const identifier = callback.toString().replaceAll(/[^\w-]/gi, ""); eventRegistry.addEventListener("js_dialog_show", () => { if (!activejsDialog) { return; } const tokens = activejsDialog.getAllTokens(); if (!tokens || !tokens["{*content*}"] || !tokens["{*content*}"].value || tokens["{*content*}"].value === "" || tokens["{*content*}"].value.includes('data-item-type=""') || // Item view. tokens["{*content*}"].value.includes('data-mouse-id=""')) { return; } const atts = activejsDialog.getAttributes(); let dialogType = atts.className.replace("jsDialogFixed", "").replace("wide", "").replace("default", "").replaceAll(" ", " ").replaceAll(" ", ".").trim(); if (dialogType.endsWith(".")) { dialogType = dialogType.slice(0, -1); } if ((!overlay || "all" === overlay) && "function" === typeof callback) { return callback(); } const dialogMapping = getDialogMapping(); if ("function" === typeof callback && (overlay === dialogType || overlay === dialogMapping[dialogType])) { return callback(); } }, null, once, 0, identifier); }; onDialogHide = (callback, overlay = null, once = false) => { eventRegistry.addEventListener("js_dialog_hide", () => { var _a, _b; const dialogType = ((_b = (_a = window == null ? void 0 : window.mhutils) == null ? void 0 : _a.lastDialog) == null ? void 0 : _b.overlay) || null; window.mhutils = window.mhutils ? __spreadProps(__spreadValues({}, window.mhutils), { lastDialog: null }) : null; if (!overlay) { return callback(); } const dialogMapping = getDialogMapping(); if (overlay === dialogType || overlay === dialogMapping[dialogType]) { return callback(); } }, null, once); }; pageChangeCallbacks = []; pageChangeObserver = null; onPageChange = (callbacks) => { let tabData = { blueprint: { isVisible: null, selector: "showBlueprint" }, tem: { isVisible: false, selector: "showTrapEffectiveness" }, trap: { isVisible: false, selector: "editTrap" }, camp: { isVisible: false, selector: "PageCamp" }, travel: { isVisible: false, selector: "PageTravel" }, inventory: { isVisible: false, selector: "PageInventory" }, shop: { isVisible: false, selector: "PageShops" }, mice: { isVisible: false, selector: "PageAdversaries" }, friends: { isVisible: false, selector: "PageFriends" }, sendSupplies: { isVisible: false, selector: "PageSupplyTransfer" }, team: { isVisible: false, selector: "PageTeam" }, tournament: { isVisible: false, selector: "PageTournament" }, news: { isVisible: false, selector: "PageNews" }, scoreboards: { isVisible: false, selector: "PageScoreboards" }, discord: { isVisible: false, selector: "PageJoinDiscord" }, preferences: { isVisible: false, selector: "PagePreferences" }, profile: { isVisible: false, selector: "HunterProfile" } }; pageChangeCallbacks.push(callbacks); if (pageChangeObserver) { return; } pageChangeObserver = true; const observer2 = new MutationObserver(() => { pageChangeCallbacks.forEach((callback) => { if (callback.change) { callback.change(); } const mhContainer = document.querySelector("#mousehuntContainer"); if (mhContainer && mhContainer.classList.length > 0) { tabData = runCallbacks(tabData, mhContainer, callback); } }); }); const observeTarget = document.querySelector("#mousehuntContainer"); if (observeTarget) { observer2.observe(observeTarget, { attributes: true, attributeFilter: ["class"] }); } }; onTravel = (location, options) => { eventRegistry.addEventListener("travel_complete", () => onTravelCallback(location, options)); }; onTravelCallback = (location, options) => { if (location && location !== getCurrentLocation()) { return; } if (options == null ? void 0 : options.shouldAddReminder) { showHornMessage({ title: options.title || "", text: options.text || "", button: options.button || "Dismiss", action: options.action || null }); } if (options.callback) { options.callback(); } }; onNavigation = (callback, options = {}) => { const defaults = { page: false, tab: false, subtab: false, onLoad: true, anyTab: false, anySubtab: false }; const { page, tab, subtab, onLoad, anyTab, anySubtab } = Object.assign(defaults, options); const bypassMatch = !page; if (onLoad && (bypassMatch || isCurrentPage( page, anyTab ? getCurrentTab() : tab, anySubtab ? getCurrentSubtab() : subtab ))) { callback(); } eventRegistry.addEventListener("set_page", (e) => { var _a; const tabs = ((_a = e == null ? void 0 : e.data) == null ? void 0 : _a.tabs) || {}; const currentTab = Object.keys(tabs).find((key) => tabs[key].is_active_tab); const forceCurrentTab = currentTab == null ? void 0 : currentTab.type; if (bypassMatch) { callback(); return; } if (!subtab) { if (isCurrentPage(page, tab, false, getCurrentPage(), forceCurrentTab)) { callback(); } return; } if ((currentTab == null ? void 0 : currentTab.subtabs) && (currentTab == null ? void 0 : currentTab.subtabs.length) > 0) { const forceSubtab = currentTab.subtabs.find((searchTab) => searchTab.is_active_subtab).subtab_type; if (isCurrentPage(page, tab, subtab, getCurrentPage(), forceCurrentTab, forceSubtab)) { callback(); } } }); eventRegistry.addEventListener("set_tab", (e) => { const forceCurrentTab = e.page_arguments.tab; const forceCurrentSubtab = e.page_arguments.sub_tab; if (bypassMatch) { callback(); return; } if (isCurrentPage(page, tab, subtab, getCurrentPage(), forceCurrentTab, forceCurrentSubtab)) { callback(); } }); }; onActivation = (module, callback) => { onEvent("mh-improved-settings-changed", ({ key, value }) => { if (key === module && value) { callback(); } }); }; onDeactivation = (module, callback) => { onEvent("mh-improved-settings-changed", ({ key, value }) => { if (key === module && !value) { callback(); } }); }; onTurn = (callback, delay = null) => { onRequest("turns/activeturn.php", () => { delay = delay || Math.floor(Math.random() * 1e3) + 1e3; setTimeout(callback, delay); }, true); }; onTrapChange = (callback, opts) => { const defaults = { runOnLoad: true, runOnGetTrapComponents: true }; const options = Object.assign(defaults, opts); if (options == null ? void 0 : options.runOnLoad) { callback(); } onRequest("users/changetrap.php", callback); if (options == null ? void 0 : options.runOnGetTrapComponents) { onRequest("users/gettrapcomponents.php", callback); } }; } }); // src/utils/flags.js var getFlag, getFlags; var init_flags = __esm({ "src/utils/flags.js"() { init_settings(); getFlag = (flag) => { return getSetting(`experiments.${flag}`, getFlags().includes(flag)); }; getFlags = () => { return getSetting("override-flags", "").toLowerCase().replaceAll(" ", "").split(","); }; } }); // src/utils/styles/game-info-bar.css var game_info_bar_default; var init_game_info_bar = __esm({ "src/utils/styles/game-info-bar.css"() { game_info_bar_default = ".mousehuntHud-gameInfo .mousehuntHud-menu{position:relative;top:unset;left:unset;display:inline;width:unset;height:unset;padding-top:unset;padding-left:unset;background:unset}\n"; } }); // src/utils/links.js var addItemToGameInfoBar, getCleanSubmenuLabel, addSubmenuItem, removeSubmenuItem, addSubmenuDivider, addIconToMenu, removeIconFromMenu, replaceIconInMenu; var init_links = __esm({ "src/utils/links.js"() { init_styles(); init_elements(); init_game_info_bar(); addItemToGameInfoBar = (options) => { const settings = Object.assign({}, { label: "", href: "", class: "", callback: null, external: false, title: "" }, options); const safeLabel = settings.label.replaceAll(/[^\da-z]/gi, "_").toLowerCase(); const exists = document.querySelector(`#mh-custom-topmenu-${safeLabel}`); if (exists) { return; } addStylesDirect(game_info_bar_default, "mh-improved-styles-game-info-bar", true); const menu = document.querySelector(".mousehuntHud-gameInfo"); if (!menu) { return; } const item = document.createElement("a"); item.id = `mh-custom-topmenu-${safeLabel}`; item.classList.add("mousehuntHud-gameInfo-item"); item.classList.add("mousehuntHud-custom-menu-item"); item.title = settings.title || settings.label; item.href = settings.href || "#"; const name = document.createElement("div"); name.classList.add("name"); if (settings.label) { name.innerText = settings.label; } item.append(name); if (settings.class) { item.classList.add(settings.class); } if (settings.href) { item.href = settings.href; } if (settings.callback) { item.addEventListener("click", settings.callback); } if (settings.external) { const externalLinkIconWrapper = document.createElement("div"); externalLinkIconWrapper.classList.add("mousehuntHud-menu"); const externalLinkIcon = document.createElement("div"); externalLinkIcon.classList.add("external_icon"); externalLinkIconWrapper.append(externalLinkIcon); item.append(externalLinkIconWrapper); } menu.insertBefore(item, menu.firstChild); }; getCleanSubmenuLabel = (label) => { return label.toLowerCase().replaceAll(/[^\da-z]/g, "-"); }; addSubmenuItem = (options) => { const settings = Object.assign({}, { id: null, menu: "kingdom", label: "", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/special.png", href: "", class: "", callback: null, external: false }, options); const menuTarget = document.querySelector(`.mousehuntHud-menu .${settings.menu}`); if (!menuTarget) { return; } if (!menuTarget.classList.contains("hasChildren")) { menuTarget.classList.add("hasChildren"); } let hasSubmenu = true; let submenu = menuTarget.querySelector("ul"); if (!submenu) { hasSubmenu = false; submenu = document.createElement("ul"); } const item = document.createElement("li"); item.classList.add("custom-submenu-item"); const label = settings.label.length > 0 ? settings.label : settings.id; const cleanLabel = getCleanSubmenuLabel(label); const exists = document.querySelector(`#custom-submenu-item-${cleanLabel}`); if (exists) { exists.remove(); } item.id = settings.id ? `custom-submenu-item-${settings.id}` : `custom-submenu-item-${cleanLabel}`; if (settings.class) { const classes = settings.class.split(" "); item.classList.add(...classes); } const link = document.createElement("a"); link.href = settings.href || "#"; if (settings.callback) { link.addEventListener("click", (e) => { e.preventDefault(); settings.callback(); }); } const icon = document.createElement("div"); icon.classList.add("icon"); icon.style = `background-image: url(${settings.icon});`; const name = document.createElement("div"); name.classList.add("name"); name.innerHTML = settings.label; link.append(icon); link.append(name); if (settings.external) { const externalLinkIcon = document.createElement("div"); externalLinkIcon.classList.add("external_icon"); link.append(externalLinkIcon); link.target = "_blank"; link.rel = "noopener noreferrer"; } item.append(link); submenu.append(item); if (!hasSubmenu) { menuTarget.append(submenu); } }; removeSubmenuItem = (id) => { id = getCleanSubmenuLabel(id); const item = document.querySelector(`#custom-submenu-item-${id}`); if (item) { item.remove(); } }; addSubmenuDivider = (menu, className = "") => { addSubmenuItem({ menu, id: `mh-improved-submenu-divider-${className}`, label: "", icon: "", href: "", class: `mh-improved-submenu-divider ${className}` }); }; addIconToMenu = (opts) => { const menu = document.querySelector(".mousehuntHeaderView-gameTabs .mousehuntHeaderView-dropdownContainer"); if (!menu) { return; } const defaults = { id: "", classname: "", href: false, title: "", text: "", action: null, position: "prepend" }; const settings = Object.assign({}, defaults, opts); if (!settings.classname) { settings.classname = settings.id; } const icon = makeElement("a", ["menuItem", settings.classname], settings.text); icon.id = settings.id; if (settings.href) { icon.href = settings.href; icon.title = settings.title; } if (settings.action) { icon.addEventListener("click", (e) => { settings.action(e, icon); }); } if (settings.id) { const exists = document.querySelector(`#${settings.id}`); if (exists) { exists.replaceWith(icon); return; } } if ("prepend" === settings.position) { menu.prepend(icon); } else if ("append" === settings.position) { menu.append(icon); } }; removeIconFromMenu = (id) => { const icon = document.querySelector(`#${id}`); if (icon) { icon.remove(); } }; replaceIconInMenu = (id, opts) => { removeIconFromMenu(id); addIconToMenu(opts); }; } }); // src/utils/maps.js var mapper, mapData, mapModel, getMapData, setMapData, getLastMaptain, setLastMaptain, cacheFinishedMap, showTravelConfirmation, showTravelConfirmationForMice, showTravelConfirmationNoDetails, addMHCTData, getCachedValue, setCachedValue, getArEl, getHighestArText, getArForMouse, getArText, getHighestArForMouse, getLocationForMouse; var init_maps = __esm({ "src/utils/maps.js"() { init_db(); init_data(); init_location(); init_global(); init_elements(); mapper = (key = false) => { if (key) { const mapperData = getGlobal("mapper"); if (!mapperData || !mapperData[key]) { return false; } return mapperData[key]; } return getGlobal("mapper"); }; mapData = () => { const m = mapper(); if (!m) { return {}; } return m.mapData; }; mapModel = () => { const m = mapper(); if (!m) { return {}; } return m.mapModel; }; getMapData = (mapId = false, strict = false) => { if (mapId !== false) { const sessionMap = sessionGet(`mh-improved-map-cache-${mapId}`); if (sessionMap) { return sessionMap; } } if (strict) { return false; } const localStorageMap = sessionGet("map-cache-last-map"); if (localStorageMap) { return localStorageMap; } return false; }; setMapData = (mapId, theMapData) => { sessionSet(`mh-improved-map-cache-${mapId}`, theMapData); sessionSet("map-cache-last-map", theMapData); }; getLastMaptain = () => { return sessionGet("last-maptain"); }; setLastMaptain = (id) => { sessionSet("last-maptain", id); }; cacheFinishedMap = () => __async(void 0, null, function* () { const completedMap = user.quests.QuestRelicHunter.maps.find((map) => map.is_complete); if (!(completedMap == null ? void 0 : completedMap.map_id)) { return; } const data = getMapData(completedMap.map_id); if (!data) { return; } const maptain = data.hunters.find((hunter) => hunter.captain); setLastMaptain(maptain.user_id || ""); }); showTravelConfirmation = (environment, theMapModel) => { if (!(environment == null ? void 0 : environment.id) || !(environment == null ? void 0 : environment.type)) { return; } const environmentData = theMapModel.getEnvironmentById(environment.id); const environmentGoals = theMapModel.getGoalsByEnvironment(environment.id); const noun = environmentData.num_missing_goals === 1 ? "mouse" : "mice"; showTravelConfirmationForMice({ title: `Travel to ${environmentData.name}?`, description: `This area has ${environmentData.num_missing_goals} missing ${noun}.`, environment: environment.type, templateData: { environment: environmentData, goals: environmentGoals } }); }; showTravelConfirmationForMice = ({ title, description, environment, templateData }) => { const dialog = new hg.views.TreasureMapDialogView(); dialog.setTitle(title); dialog.setDescription(description); dialog.setContent(hg.utils.TemplateUtil.renderFromFile("TreasureMapDialogView", "travel", templateData)); dialog.setCssClass("confirm"); dialog.setContinueAction("Travel", () => { app.pages.TravelPage.travel(environment); dialog.hide(); setTimeout(() => { jsDialog().hide(); }, 250); }); hg.controllers.TreasureMapController.showDialog(dialog); }; showTravelConfirmationNoDetails = (environment) => __async(void 0, null, function* () { const templateData = { environment: { name: environment.name, id: environment.id, type: environment.id, thumb: environment.image, header: environment.headerImage, goals: goals || [], num_completed_goals: 0, num_total_goals: environmentMice.length, hunters: [], is_current_environment: getCurrentLocation() === environment.id, can_travel: true, num_missing_goals: environmentMice.length }, goals: [] }; showTravelConfirmationForMice({ title: `Travel to ${environment.name}?`, description: "", environment: environment.id, templateData }); }); addMHCTData = (mouse, appendTo, type = "mouse") => __async(void 0, null, function* () { const existingMhct = appendTo.querySelector(`#mhct-${mouse.unique_id}-${type}`); if (existingMhct) { return; } const mhctJson = yield getArForMouse(mouse.unique_id, type); const mhctDiv = makeElement("div", "mhct-data"); mhctDiv.id = `mhct-${mouse.unique_id}-${type}`; const header = makeElement("div", "mhct-title"); makeElement("span", "mhct-title-text", "item" === type ? "Drop Rates" : "Attraction Rates", header); const mhctLink = makeElement("a", "mhct-link", "View on MHCT \u2192"); mhctLink.target = "_mhct"; if (!mouse.name) { const nameEl = document.querySelector(".treasureMapView-highlight-name"); mouse.name = nameEl ? nameEl.innerText : mouse.unique_id; } mhctLink.href = "item" === type ? `https://www.mhct.win/loot.php?item=${mouse.unique_id}` : `https://www.mhct.win/attractions.php?mouse_name=${mouse.name}`; header.append(mhctLink); mhctDiv.append(header); if (!mhctJson.slice) { return; } const environments5 = yield getData("environments"); const amountOfLocationsToShow = 5; mhctJson.slice(0, amountOfLocationsToShow).forEach((mhct) => { const mhctRow = makeElement("div", "mhct-row"); const location = makeElement("div", "mhct-location"); makeElement("span", "mhct-location-text", mhct.location, location); if (mhct.stage) { makeElement("span", "mhct-stage", mhct.stage, location); } const environment = environments5.find((env) => { return env.name === mhct.location; }); if (!environment) { mhctRow.classList.add("mhct-row-no-env"); } mhctRow.append(location); makeElement("div", "mhct-bait", mhct.cheese, mhctRow); const mhctRate = Number.parseInt("item" === type ? mhct.drop_pct : mhct.rate / 100, 10).toFixed(1); makeElement("div", "mhct-rate", `${mhctRate}%`, mhctRow); mhctRow.addEventListener("click", () => { if (environment.id === getCurrentLocation()) { app.pages.CampPage.toggleItemBrowser("bait"); jsDialog().hide(); return; } const travelEnvironment = mapper("mapData").environments.find((env) => { return env.type === environment.id; }); showTravelConfirmation(travelEnvironment, mapModel()); }); mhctDiv.append(mhctRow); }); if (0 === mhctJson.length) { const mhctRow = makeElement("div", "mhct-row"); makeElement("div", "mhct-no-data", "No data available", mhctRow); mhctDiv.append(mhctRow); } appendTo.append(mhctDiv); }); getCachedValue = (key) => __async(void 0, null, function* () { var _a; const value = yield dbGet("ar-cache", key); if (!((_a = value == null ? void 0 : value.data) == null ? void 0 : _a.value)) { return null; } return value.data.value; }); setCachedValue = (key, value) => __async(void 0, null, function* () { yield dbSet("ar-cache", { id: key, value }); }); getArEl = (id, type = "mouse") => __async(void 0, null, function* () { let ar = yield getArText(id, type); let arType = "location"; if (!ar) { ar = yield getHighestArText(id, type); if (!ar || ar.length === 0) { return makeElement("div", ["mh-ui-ar", "mh-ui-no-ar"], "?"); } arType = "highest"; } let arDifficulty = "easy"; if (ar >= 99) { arDifficulty = "guaranteed"; } else if (ar >= 78) { arDifficulty = "super-easy"; } else if (ar >= 48) { arDifficulty = "easy"; } else if (ar >= 38) { arDifficulty = "medium"; } else if (ar >= 18) { arDifficulty = "hard"; } else if (ar >= 8) { arDifficulty = "super-hard"; } else if (ar >= 3) { arDifficulty = "extreme"; } else { arDifficulty = "impossible"; } if (ar.toString().slice(-3) === ".00") { ar = ar.toString().slice(0, -3); } const arEl = makeElement("div", ["mh-ui-ar", `mh-ui-ar-${arType}`, `mh-ui-ar-${arDifficulty}`], `${ar}%`); arEl.title = `Attraction rate: ${ar}%`; arEl.setAttribute("data-ar", ar); return arEl; }); getHighestArText = (id, type = "mouse") => __async(void 0, null, function* () { const highest = yield getHighestArForMouse(id, type); return highest != null ? highest : false; }); getArForMouse = (id, type = "mouse") => __async(void 0, null, function* () { let mhctJson = []; const cacheKey = `${type}-${id}`; const cachedAr = yield getCachedValue(cacheKey); if (cachedAr) { return cachedAr; } const isItem = "item" === type; const mhctPath = isItem ? "mhct-item" : "mhct"; let mhctData = []; const data = mapData() || {}; const mapType = (data == null ? void 0 : data.map_type) || ""; let url = `https://api.mouse.rip/${mhctPath}/${id}`; if (mapType.toLowerCase().includes("halloween")) { url = `https://api.mouse.rip/${mhctPath}/${id}-hlw_22`; } mhctData = yield fetch(url, { headers: getHeaders() }); if (!mhctData.ok) { return []; } mhctJson = yield mhctData.json(); if (!mhctJson || mhctJson.length === 0) { return []; } if (isItem) { for (const rate of mhctJson) { rate.rate = Number.parseInt(rate.drop_pct * 100); delete rate.drop_ct; } } if (mhctJson.error) { return []; } mhctJson = mhctJson.filter((rate) => { if (rate.rate === 0) { return false; } if (rate.rate === 9999) { rate.rate = 1e4; } return true; }); yield setCachedValue(cacheKey, mhctJson); return mhctJson; }); getArText = (id, type = "mouse") => __async(void 0, null, function* () { const rates = yield getArForMouse(id, type); if (!rates || rates.length === 0) { return false; } const rate = rates[0]; if (!rate) { return false; } return (rate.rate / 100).toFixed(2); }); getHighestArForMouse = (id, type = "mouse") => __async(void 0, null, function* () { const rates = yield getArForMouse(id, type); if (!rates || rates.length === 0) { return 0; } if (Object.keys(rates).length === 0 && rates.constructor === Object) { return 0; } if (!rates.sort) { return 0; } rates.sort((a, b) => b.rate - a.rate); const rate = rates[0]; if (!rate) { return 0; } return rate.rate / 100; }); getLocationForMouse = (mouse, type = "mouse") => __async(void 0, null, function* () { const environments5 = yield getData("environments"); const rates = yield getArForMouse(mouse, type); if (!rates || rates.length === 0) { return false; } const rate = rates[0]; if (!rate) { return false; } const originalName = rate.location; const twistedMap = { "Twisted Garden": "Living Garden", "Sand Crypts": "Sand Dunes", "Cursed City": "Lost City" }; if (twistedMap[rate.location]) { rate.location = twistedMap[rate.location]; } const environment = environments5.find((env) => { return env.name === rate.location; }); if (!environment) { return false; } environment.name = originalName; return environment; }); } }); // src/utils/styles/errors.css var errors_default; var init_errors = __esm({ "src/utils/styles/errors.css"() { errors_default = ".mousehunt-improved-error{position:fixed;bottom:50px;left:5%;z-index:20;display:flex;flex-direction:column;align-items:stretch;max-width:375px;padding:10px 20px;background-color:#febebe;border:1px solid #4e2727;border-radius:6px;box-shadow:0 0 10px 1px #bc7b7b}.mousehunt-improved-error h1{margin:0 0 .75em;font-size:1.3em;font-weight:900;color:#9f2323}.mousehunt-improved-error p{margin:.5em 0;font-size:1em;line-height:1.5}textarea.mousehunt-improved-error-message{min-height:50px;font-size:11px;background-color:#f2c4c4;border-color:#cf7676}.mousehunt-improved-error-close{position:absolute;top:5px;right:5px;color:#fff;background-color:#9f2223;border:1px solid #4e2727;border-radius:1px}.mousehunt-improved-error-close:hover,.mousehunt-improved-error-close:focus{background-color:#c22}\n"; } }); // src/utils/messages.js var showErrorMessage, showSuccessMessage, showLoadingError, showLoadingPopupError, showLoadingPopup; var init_messages = __esm({ "src/utils/messages.js"() { init_debug(); init_elements(); init_errors(); showErrorMessage = (options) => { const { message, append, before = false, after = false, classname = [], type = "error" } = options; const typeClass = `mh-ui-${type}-message`; const existing = document.querySelector(`.${typeClass}`); if (existing) { existing.remove(); } const error = makeElement("div", [`mh-ui-${type}-message`, "mh-ui-fade", classname], message); if (append) { if (before) { append.before(error); } else if (after) { append.after(error); } else { append.append(error); } } setTimeout(() => { error.classList.add("mh-ui-fade-in"); }, 10); setTimeout(() => { error.classList.remove("mh-ui-fade-in"); error.classList.add("mh-ui-fade-out"); }, 2e3); setTimeout(() => { error.remove(); }, 2500); }; showSuccessMessage = (opts) => { opts.type = "success"; showErrorMessage(opts); }; hadAddedErrorStyles = false; showLoadingError = (e) => { debug("Error loading MouseHunt Improved:", e); const errorElement = makeElement("div", "mousehunt-improved-error"); makeElement("h1", "mousehunt-improved-error-title", "Error loading MouseHunt Improved", errorElement); if (e.message) { const errorText = makeElement("textarea", "mousehunt-improved-error-message"); errorText.value = `${e.message} ${e.stack}`; errorElement.append(errorText); } makeElement("p", "mousehunt-improved-error-message", 'There was an error loading MouseHunt Improved. Try refreshing the page. If the error persists, please add an issue to the <a href="https://github.com/MHCommunity/mousehunt-improved">GitHub repo</a>.', errorElement); const closeButton = makeElement("button", "mousehunt-improved-error-close", "Close"); closeButton.addEventListener("click", () => { errorElement.remove(); }); errorElement.append(closeButton); document.body.append(errorElement); if (hadAddedErrorStyles) { return; } const errorStylesEl = makeElement("style", "mh-improved-error-styles", errors_default); document.head.append(errorStylesEl); }; showLoadingPopupError = (options) => { const popup = new jsDialog(); popup.setTemplate("error"); popup.setAttributes({ className: "error" }); popup.addToken("{*title*}", options.title); popup.addToken("{*content*}", options.content || ""); popup.show(); }; showLoadingPopup = (title) => { const popup = new jsDialog(); popup.setTemplate("loading"); popup.setAttributes({ className: "loading" }); popup.show(); const element = document.querySelector("#overlayPopup .jsDialog .title"); if (!element) { return { popup, title: null, text: null, setText: () => { }, setTitle: () => { }, show: () => { }, hide: () => { } }; } element.textContent = title; const loadingText = makeElement("div", "loading-text", "", element); return { popup, title: element, text: loadingText, setText: (newText) => { loadingText.textContent = newText; }, setTitle: (newTitle) => { element.textContent = newTitle; }, show: () => { popup.show(); }, hide: () => { popup.hide(); } }; }; } }); // src/data/settings.json var settings_default; var init_settings2 = __esm({ "src/data/settings.json"() { settings_default = { "no-reminders": [ "adblock", "better-gifts.ignore-bad-gifts", "better-gifts.send-order", "better-item-view.show-drop-rates", "better-marketplace.search-all", "better-marketplace.show-chart-images", "better-mice.show-attraction-rates", "better-quests.m400-helper", "better-send-supplies.pinned-items", "better-tournaments.time-inline", "better-travel.default-to-simple-travel", "better-travel.show-alphabetized-list", "debug.all", "debug.dialog", "debug.events", "debug.module-loading", "debug.navigation", "debug.request", "debug.utils-data", "debug", "error-reporting", "hide-codices", "hide-daily-reward-popup", "hide-news-ticker", "inline-wiki", "inventory-only-open-multiple", "journal-privacy.show-toggle-icon", "journal-privacy", "larger-codices", "lgs-reminder.new-style", "no-footer", "no-share", "no-sidebar", "quick-send-supplies.items", "taller-windows", "ultimate-checkmark.show" ], icons: [ { category: "better", id: "better-ui", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z' /></svg>" }, { category: "better", id: "better-gifts", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M21 11.25v8.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 1 0 9.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1 1 14.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z' /></svg>" }, { category: "better", id: "better-inventory", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9' /></svg>" }, { category: "better", id: "better-item-view", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z' /></svg>" }, { category: "better", id: "better-journal", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25' /></svg>" }, { category: "better", id: "better-kings-reward", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M2.25 18.75a60.07 60.07 0 0 1 15.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 0 1 3 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 0 0-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 0 1-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 0 0 3 15h-.75M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z' /></svg>" }, { category: "better", id: "better-maps", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z' /><path stroke-linecap='round' stroke-linejoin='round' d='M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z' /></svg>" }, { category: "better", id: "better-marketplace", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z' /></svg>" }, { category: "better", id: "better-mice", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='m9 14.25 6-6m4.5-3.493V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185ZM9.75 9h.008v.008H9.75V9Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008V13.5Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z' /></svg>" }, { category: "better", id: "better-quests", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375M9 15l2.25 2.25L15 12' /></svg>" }, { category: "better", id: "better-send-supplies", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M8.25 18.75a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 0 1-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 0 0-3.213-9.193 2.056 2.056 0 0 0-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 0 0-10.026 0 1.106 1.106 0 0 0-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12' /></svg>" }, { category: "better", id: "better-shops", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M13.5 21v-7.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 .75.75V21m-4.5 0H2.36m11.14 0H18m0 0h3.64m-1.39 0V9.349M3.75 21V9.349m0 0a3.001 3.001 0 0 0 3.75-.615A2.993 2.993 0 0 0 9.75 9.75c.896 0 1.7-.393 2.25-1.016a2.993 2.993 0 0 0 2.25 1.016c.896 0 1.7-.393 2.25-1.015a3.001 3.001 0 0 0 3.75.614m-16.5 0a3.004 3.004 0 0 1-.621-4.72l1.189-1.19A1.5 1.5 0 0 1 5.378 3h13.243a1.5 1.5 0 0 1 1.06.44l1.19 1.189a3 3 0 0 1-.621 4.72M6.75 18h3.75a.75.75 0 0 0 .75-.75V13.5a.75.75 0 0 0-.75-.75H6.75a.75.75 0 0 0-.75.75v3.75c0 .414.336.75.75.75Z' /></svg>" }, { category: "better", id: "better-tournaments", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M16.5 18.75h-9m9 0a3 3 0 0 1 3 3h-15a3 3 0 0 1 3-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 0 1-.982-3.172M9.497 14.25a7.454 7.454 0 0 0 .981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 0 0 7.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 0 0 2.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 0 1 2.916.52 6.003 6.003 0 0 1-5.395 4.972m0 0a6.726 6.726 0 0 1-2.749 1.35m0 0a6.772 6.772 0 0 1-3.044 0' /></svg>" }, { category: "better", id: "better-travel", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9 6.75V15m6-6v8.25m.503 3.498 4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 0 0-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0Z' /></svg>" }, { category: "feature", id: "catch-rate-estimate", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M15.75 15.75V18m-7.5-6.75h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V13.5Zm0 2.25h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V18Zm2.498-6.75h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V13.5Zm0 2.25h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V18Zm2.504-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5Zm0 2.25h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V18Zm2.498-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5ZM8.25 6h7.5v2.25h-7.5V6ZM12 2.25c-1.892 0-3.758.11-5.593.322C5.307 2.7 4.5 3.65 4.5 4.757V19.5a2.25 2.25 0 0 0 2.25 2.25h10.5a2.25 2.25 0 0 0 2.25-2.25V4.757c0-1.108-.806-2.057-1.907-2.185A48.507 48.507 0 0 0 12 2.25Z' /></svg>" }, { category: "feature", id: "copy-id", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z' /></svg>" }, { category: "feature", id: "dark-mode", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z' /></svg>" }, { category: "feature", id: "data-exporters", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125' /></svg>" }, { category: "feature", id: "delayed-tooltips", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672ZM12 2.25V4.5m5.834.166-1.591 1.591M20.25 10.5H18M7.757 14.743l-1.59 1.59M6 10.5H3.75m4.007-4.243-1.59-1.59' /></svg>" }, { category: "feature", id: "favorite-setups", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z' /></svg>" }, { category: "feature", id: "fixes", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M21.75 6.75a4.5 4.5 0 0 1-4.884 4.484c-1.076-.091-2.264.071-2.95.904l-7.152 8.684a2.548 2.548 0 1 1-3.586-3.586l8.684-7.152c.833-.686.995-1.874.904-2.95a4.5 4.5 0 0 1 6.336-4.486l-3.276 3.276a3.004 3.004 0 0 0 2.25 2.25l3.276-3.276c.256.565.398 1.192.398 1.852Z' /><path stroke-linecap='round' stroke-linejoin='round' d='M4.867 19.125h.008v.008h-.008v-.008Z' /></svg>" }, { category: "feature", id: "flrt-helper", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M8.25 9.75h4.875a2.625 2.625 0 0 1 0 5.25H12M8.25 9.75 10.5 7.5M8.25 9.75 10.5 12m9-7.243V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185Z' /></svg>" }, { category: "feature", id: "hover-profiles", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672Zm-7.518-.267A8.25 8.25 0 1 1 20.25 10.5M8.288 14.212A5.25 5.25 0 1 1 17.25 10.5' /></svg>" }, { category: "feature", id: "image-upscaling", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z' /></svg>" }, { category: "feature", id: "inline-wiki", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5' /></svg>" }, { category: "feature", id: "inventory-lock-and-hide", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z' /></svg>" }, { category: "feature", id: "journal-changer", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125' /></svg>" }, { category: "feature", id: "keyboard-shortcuts", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -5 24 24' width='28' fill='currentColor'><path d='M3 0h14a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm0 4h2v2H3V6zm0-3h2v2H3V3zm0 6h2v2H3V9zm3 0h8v2H6V9zm0-3h2v2H6V6zm0-3h2v2H6V3zm3 3h2v2H9V6zm0-3h2v2H9V3zm6 6h2v2h-2V9zm-3-3h2v2h-2V6zm0-3h2v2h-2V3zm3 0h2v5h-2V3z'></path></svg>" }, { category: "feature", id: "larger-codices", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 24 24' width='28' fill='currentColor'><path d='M12.586 2H11a1 1 0 0 1 0-2h4a1 1 0 0 1 1 1v4a1 1 0 0 1-2 0V3.414L9.414 8 14 12.586V11a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1h-4a1 1 0 0 1 0-2h1.586L8 9.414 3.414 14H5a1 1 0 0 1 0 2H1a1 1 0 0 1-1-1v-4a1 1 0 0 1 2 0v1.586L6.586 8 2 3.414V5a1 1 0 1 1-2 0V1a1 1 0 0 1 1-1h4a1 1 0 1 1 0 2H3.414L8 6.586 12.586 2z'></path></svg>" }, { category: "feature", id: "larger-skin-images", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z' /></svg>" }, { category: "feature", id: "lgs-reminder", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z' /></svg>" }, { category: "feature", id: "location-catch-stats", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z' /></svg>" }, { category: "feature", id: "location-dashboard", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 0 0 2.25-2.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v2.25A2.25 2.25 0 0 0 6 10.5Zm0 9.75h2.25A2.25 2.25 0 0 0 10.5 18v-2.25a2.25 2.25 0 0 0-2.25-2.25H6a2.25 2.25 0 0 0-2.25 2.25V18A2.25 2.25 0 0 0 6 20.25Zm9.75-9.75H18a2.25 2.25 0 0 0 2.25-2.25V6A2.25 2.25 0 0 0 18 3.75h-2.25A2.25 2.25 0 0 0 13.5 6v2.25a2.25 2.25 0 0 0 2.25 2.25Z' /></svg>" }, { category: "feature", id: "metric", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418' /></svg>" }, { category: "feature", id: "only-open-multiple", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z' /></svg>" }, { category: "feature", id: "open-all-but-one", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6' /></svg>" }, { category: "feature", id: "paste-hunter-id", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Zm6-10.125a1.875 1.875 0 1 1-3.75 0 1.875 1.875 0 0 1 3.75 0Zm1.294 6.336a6.721 6.721 0 0 1-3.17.789 6.721 6.721 0 0 1-3.168-.789 3.376 3.376 0 0 1 6.338 0Z' /></svg>" }, { category: "feature", id: "prestige-base-stats", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-5 -4 24 24' width='28' fill='currentColor'><path d='M1 0a1 1 0 0 1 1 1v14a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1zm12 4a1 1 0 0 1 1 1v10a1 1 0 0 1-2 0V5a1 1 0 0 1 1-1zM7 8a1 1 0 0 1 1 1v6a1 1 0 0 1-2 0V9a1 1 0 0 1 1-1z'></path></svg>" }, { category: "feature", id: "printing-press-paper-counter", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -2 24 24' width='28' fill='currentColor'><path d='M10.298 2H3a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V4.961L10.298 2zM3 0h8l5 4v13a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3z'></path></svg>" }, { category: "feature", id: "quick-filters-and-sort", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75' /></svg>" }, { category: "feature", id: "quick-send-supplies", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5' /></svg>" }, { category: "feature", id: "ssdb-teeth-counter", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M4.5 10.5h6.75V15H4.5v-4.5ZM3.75 18h15A2.25 2.25 0 0 0 21 15.75v-6a2.25 2.25 0 0 0-2.25-2.25h-15A2.25 2.25 0 0 0 1.5 9.75v6A2.25 2.25 0 0 0 3.75 18Z' /></svg>" }, { category: "feature", id: "taller-windows", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M3 8.25V18a2.25 2.25 0 0 0 2.25 2.25h13.5A2.25 2.25 0 0 0 21 18V8.25m-18 0V6a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 6v2.25m-18 0h18M5.25 6h.008v.008H5.25V6ZM7.5 6h.008v.008H7.5V6Zm2.25 0h.008v.008H9.75V6Z' /></svg>" }, { category: "feature", id: "tem-crowns", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 0 0 2.25-2.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v2.25A2.25 2.25 0 0 0 6 10.5Zm0 9.75h2.25A2.25 2.25 0 0 0 10.5 18v-2.25a2.25 2.25 0 0 0-2.25-2.25H6a2.25 2.25 0 0 0-2.25 2.25V18A2.25 2.25 0 0 0 6 20.25Zm9.75-9.75H18a2.25 2.25 0 0 0 2.25-2.25V6A2.25 2.25 0 0 0 18 3.75h-2.25A2.25 2.25 0 0 0 13.5 6v2.25a2.25 2.25 0 0 0 2.25 2.25Z' /></svg>" }, { category: "feature", id: "ultimate-checkmark-show", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z' /></svg>" }, { category: "feature", id: "wisdom-in-stat-bar", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5' /></svg>" }, { category: "design", id: "custom-background", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M4.098 19.902a3.75 3.75 0 0 0 5.304 0l6.401-6.402M6.75 21A3.75 3.75 0 0 1 3 17.25V4.125C3 3.504 3.504 3 4.125 3h5.25c.621 0 1.125.504 1.125 1.125v4.072M6.75 21a3.75 3.75 0 0 0 3.75-3.75V8.197M6.75 21h13.125c.621 0 1.125-.504 1.125-1.125v-5.25c0-.621-.504-1.125-1.125-1.125h-4.072M10.5 8.197l2.88-2.88c.438-.439 1.15-.439 1.59 0l3.712 3.713c.44.44.44 1.152 0 1.59l-2.879 2.88M6.75 17.25h.008v.008H6.75v-.008Z' /></svg>" }, { category: "design", id: "custom-horn", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M10.34 15.84c-.688-.06-1.386-.09-2.09-.09H7.5a4.5 4.5 0 1 1 0-9h.75c.704 0 1.402-.03 2.09-.09m0 9.18c.253.962.584 1.892.985 2.783.247.55.06 1.21-.463 1.511l-.657.38c-.551.318-1.26.117-1.527-.461a20.845 20.845 0 0 1-1.44-4.282m3.102.069a18.03 18.03 0 0 1-.59-4.59c0-1.586.205-3.124.59-4.59m0 9.18a23.848 23.848 0 0 1 8.835 2.535M10.34 6.66a23.847 23.847 0 0 0 8.835-2.535m0 0A23.74 23.74 0 0 0 18.795 3m.38 1.125a23.91 23.91 0 0 1 1.014 5.395m-1.014 8.855c-.118.38-.245.754-.38 1.125m.38-1.125a23.91 23.91 0 0 0 1.014-5.395m0-3.46c.495.413.811 1.035.811 1.73 0 .695-.316 1.317-.811 1.73m0-3.46a24.347 24.347 0 0 1 0 3.46' /></svg>" }, { category: "design", id: "custom-hud", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9.53 16.122a3 3 0 0 0-5.78 1.128 2.25 2.25 0 0 1-2.4 2.245 4.5 4.5 0 0 0 8.4-2.245c0-.399-.078-.78-.22-1.128Zm0 0a15.998 15.998 0 0 0 3.388-1.62m-5.043-.025a15.994 15.994 0 0 1 1.622-3.395m3.42 3.42a15.995 15.995 0 0 0 4.764-4.648l3.876-5.814a1.151 1.151 0 0 0-1.597-1.597L14.146 6.32a15.996 15.996 0 0 0-4.649 4.763m3.42 3.42a6.776 6.776 0 0 0-3.42-3.42' /></svg>" }, { category: "design", id: "custom-shield", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z' /></svg>" }, { category: "beta", id: "experiments", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5' /></svg>" }, { category: "beta", id: "show-auras", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor'><path stroke-linecap='round' stroke-linejoin='round' d='M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z' /></svg>" }, { category: "feature", id: "profile-scoreboard-search", icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -1 24 24' width='28' fill='currentColor'><path d='M4 14.517l-.612-1.258a1 1 0 0 0-.43-.447l-2-1.06a1 1 0 0 1-.485-1.181l.71-2.273a1 1 0 0 0 0-.596l-.71-2.273a1 1 0 0 1 .486-1.182l1.999-1.06a1 1 0 0 0 .43-.446L4.393.674A1 1 0 0 1 5.615.165l2.062.703a1 1 0 0 0 .646 0l2.062-.703a1 1 0 0 1 1.222.51l1.005 2.066a1 1 0 0 0 .43.447l2 1.06a1 1 0 0 1 .485 1.181l-.71 2.273a1 1 0 0 0 0 .596l.71 2.273a1 1 0 0 1-.486 1.182l-1.999 1.06a1 1 0 0 0-.43.446L12 14.517v6.879l-4-1.358-4 1.358v-6.88zm2 1.187v2.9l2-.679 2 .68v-2.901l-1.677-.572a1 1 0 0 0-.646 0L6 15.704zm4.813-3.32a3 3 0 0 1 1.293-1.339l1.264-.67-.462-1.48a3 3 0 0 1 0-1.79l.462-1.48-1.264-.67a3 3 0 0 1-1.293-1.34l-.619-1.272-1.226.418a3 3 0 0 1-1.936 0l-1.226-.418-.619 1.273a3 3 0 0 1-1.293 1.339l-1.264.67.462 1.48a3 3 0 0 1 0 1.79l-.462 1.48 1.264.67a3 3 0 0 1 1.293 1.34l.619 1.272 1.226-.418a3 3 0 0 1 1.936 0l1.226.418.619-1.273zM8 5a1 1 0 0 1 1 1v4a1 1 0 0 1-2 0V6a1 1 0 0 1 1-1z'></path></svg>')" } ] }; } }); // src/utils/styles/settings.css var settings_default2; var init_settings3 = __esm({ "src/utils/styles/settings.css"() { settings_default2 = ".PagePreferences .mousehuntHud-page-tabContent.game_settings.userscript-settings .settingRow .settingRow-action-inputContainer.select.busy:before,.PagePreferences .mousehuntHud-page-tabContent.game_settings.userscript-settings .settingRow .settingRow-action-inputContainer.select.completed:before,.PagePreferences .mousehuntHud-page-tabContent.game_settings.better-mh-settings .settingRow .settingRow-action-inputContainer.select.busy:before,.PagePreferences .mousehuntHud-page-tabContent.game_settings.better-mh-settings .settingRow .settingRow-action-inputContainer.select.completed:before{top:30px;right:-25px;left:unset}.PagePreferences .mousehuntHud-page-tabContent.game_settings .settingRow .name{height:unset;min-height:20px}.PagePreferences__settingAction.inputDropdownWrapper.busy:before,.PagePreferences__settingAction.inputDropdownWrapper.completed:before{right:-25px;left:unset}.inputBoxContainer.multiSelect{max-width:400px}.settingRow-action-inputContainer.textarea{display:flex;gap:5px;align-items:flex-end}.PagePreferences__setting.textarea{display:grid;grid-template-columns:350px 1fr}.textarea .inputBox{width:100%;min-height:45px}.textarea .PagePreferences__settingAction{margin-bottom:0}.mh-utils-settings-subheader{padding-top:10px;padding-bottom:10px;font-size:10px;color:#848484}.settingRow-action-inputContainer.inputText{display:flex;gap:5px;align-items:stretch}.mh-utils-settings-refresh-message{position:fixed;right:0;bottom:0;left:0;z-index:5;padding:1em;font-size:1.5em;text-align:center;pointer-events:none;background-color:#d6f2d6;border-top:1px solid #6cc36c;opacity:1;transition:opacity .5s ease-in-out}.mh-utils-settings-refresh-message-hidden{opacity:0}.mh-ui-success-message.setting-link-copied{position:absolute;top:10px;display:inline;padding:3px;margin-left:9px}\n"; } }); // src/utils/settings-markup.js var hasAddedSettingsStyles, addSettingStyles, saveSettingDirectAndToggleClass, addSettingsTab, addSettingsTabOnce, addSetting, makeToggle, makeSettingToggle, makeSettingRowSelect, makeSettingInput, makeSettingTextArea, makeSettingMultiToggle, makeSettingBlank, addSettingOnce, fadeInTimeout, fadeOutTimeout, removeTimeout, addSettingRefreshReminder, addSettingForModule; var init_settings_markup = __esm({ "src/utils/settings-markup.js"() { init_page(); init_settings(); init_styles(); init_event_registry(); init_elements(); init_events(); init_settings2(); init_settings3(); init_messages(); hasAddedSettingsStyles = false; addSettingStyles = () => { if (hasAddedSettingsStyles) { return; } hasAddedSettingsStyles = true; addStylesDirect(settings_default2, "mh-improved-styles-settings"); }; saveSettingDirectAndToggleClass = (node, key, value, identifier = "mh-utils-settings") => { node.parentNode.parentNode.classList.add("busy"); saveSettingDirect(key, value, identifier); doEvent2("mh-improved-settings-changed", { key, value, tab: identifier, type: "toggle" }); doEvent2(`mh-improved-settings-changed-${key}`, value); node.parentNode.parentNode.classList.remove("busy"); node.parentNode.parentNode.classList.add("completed"); setTimeout(() => { node.parentNode.parentNode.classList.remove("completed"); }, 1e3); addSettingRefreshReminder(key); }; addSettingsTab = (identifier = "userscript-settings", name = "Userscript Settings") => { addSettingStyles(); addSettingsTabOnce(identifier, name); onPageChange({ preferences: { show: () => addSettingsTabOnce(identifier, name) } }); return identifier; }; addSettingsTabOnce = (identifier = "userscript-settings", name = "Userscript Settings") => { if ("preferences" !== getCurrentPage()) { return; } const existingSettings = document.querySelector(`#${identifier}`); if (existingSettings) { return; } const tabsContainer = document.querySelector(".mousehuntHud-page-tabHeader-container"); if (!tabsContainer) { return; } const tabsContentContainer = document.querySelector(".mousehuntHud-page-tabContentContainer"); if (!tabsContentContainer) { return; } identifier = identifier.replaceAll(/[^\w-]/gi, ""); const settingsTab = document.createElement("a"); settingsTab.id = identifier; settingsTab.href = "#"; settingsTab.classList.add("mousehuntHud-page-tabHeader", identifier); settingsTab.setAttribute("data-tab", identifier); settingsTab.setAttribute("onclick", "hg.utils.PageUtil.onclickPageTabHandler(this); return false;"); const settingsTabText = document.createElement("span"); settingsTabText.innerText = name; settingsTab.append(settingsTabText); tabsContainer.append(settingsTab); const settingsTabContent = document.createElement("div"); settingsTabContent.classList.add("mousehuntHud-page-tabContent", "game_settings", identifier); settingsTabContent.setAttribute("data-tab", identifier); tabsContentContainer.append(settingsTabContent); if (identifier === getCurrentTab()) { const tab = document.querySelector(`#${identifier}`); if (tab) { tab.click(); } } }; addSetting = (options) => { onPageChange({ preferences: { show: () => addSettingOnce(options) } }); return addSettingOnce(options); }; makeToggle = (toggleKey, toggleDefaultValue, toggleTab, settingRow = false) => { const settingRowInputCheckbox = makeElement("div", "mousehuntSettingSlider"); const currentSetting = getSettingDirect(toggleKey, null, toggleTab); if (currentSetting) { settingRowInputCheckbox.classList.add("active"); if (settingRow) { settingRow.classList.add("active"); } } else if (null === currentSetting && toggleDefaultValue) { settingRowInputCheckbox.classList.add("active"); if (settingRow) { settingRow.classList.add("active"); } } settingRowInputCheckbox.onclick = (event) => { const isSettingActive = event.target.classList.contains("active"); event.target.classList.toggle("active"); if (settingRow) { settingRow.classList.toggle("active"); } saveSettingDirectAndToggleClass(event.target, toggleKey, !isSettingActive, toggleTab); }; return settingRowInputCheckbox; }; makeSettingToggle = ({ key, defaultValue, tab, settings }) => { const settingRowInput = makeElement("div", "settingRow-action-inputContainer"); const settingRowInputCheckbox = makeToggle(key, defaultValue, tab, settings); settingRowInput.append(settingRowInputCheckbox); return settingRowInput; }; makeSettingRowSelect = ({ key, tab, defaultValue, settingSettings }) => { const settingRowInputWrapper = makeElement("div", "settingRow-action-inputContainer"); const settingRowInput = makeElement("div", "settingRow-action-inputContainer"); const settingRowInputDropdown = document.createElement("div"); settingRowInputDropdown.classList.add("inputBoxContainer"); if (settingSettings.type === "multi-select") { settingRowInputDropdown.classList.add("multiSelect"); settingRowInput.classList.add("multiSelect", "select"); } let amount = 1; if (settingSettings.type === "multi-select" && settingSettings.number) { amount = settingSettings.number; } const makeOption = (option, foundSelected, currentSetting, dValue, i) => { const settingRowInputDropdownSelectOption = document.createElement("option"); settingRowInputDropdownSelectOption.value = option.value; settingRowInputDropdownSelectOption.textContent = option.name; settingRowInputDropdownSelectOption.disabled = option.disabled || false; if (currentSetting && currentSetting === option.value) { settingRowInputDropdownSelectOption.selected = true; foundSelected = true; } else if (!foundSelected && dValue && dValue[i] && dValue[i].value === option.value) { settingRowInputDropdownSelectOption.selected = true; foundSelected = true; } return { settingRowInputDropdownSelectOption, foundSelected }; }; for (let i = 0; i < amount; i++) { const settingRowInputDropdownSelect = document.createElement("select"); settingRowInputDropdownSelect.classList.add("inputBox"); if (settingSettings.type === "multi-select") { settingRowInputDropdownSelect.classList.add("multiSelect"); } const currentSetting = getSetting(`${key}-${i}`, null, tab); let foundSelected = false; settingSettings.options.forEach((option) => { if (option.value === "group") { const settingRowInputDropdownSelectOptgroup = document.createElement("optgroup"); settingRowInputDropdownSelectOptgroup.label = option.name; option.options.forEach((optgroupOption) => { const result = makeOption(optgroupOption, foundSelected, currentSetting, defaultValue, i); foundSelected = result.foundSelected; settingRowInputDropdownSelectOptgroup.append(result.settingRowInputDropdownSelectOption); }); settingRowInputDropdownSelect.append(settingRowInputDropdownSelectOptgroup); } else { const result = makeOption(option, foundSelected, currentSetting, defaultValue, i); foundSelected = result.foundSelected; settingRowInputDropdownSelect.append(result.settingRowInputDropdownSelectOption); } }); settingRowInputDropdown.append(settingRowInputDropdownSelect); let timeout = null; settingRowInputDropdownSelect.onchange = (event) => { const parent = settingRowInputDropdownSelect.parentNode.parentNode.parentNode; parent.classList.add("inputDropdownWrapper"); parent.classList.add("busy"); saveSettingDirect(`${key}-${i}`, event.target.value, tab); doEvent2("mh-improved-settings-changed", { key: `${key}-${i}`, value: event.target.value, tab, type: "multi-select" }); parent.classList.remove("busy"); parent.classList.add("completed"); clearTimeout(timeout); timeout = setTimeout(() => { parent.classList.remove("completed"); }, 1e3); }; settingRowInput.append(settingRowInputDropdown); settingRowInputWrapper.append(settingRowInput); } return settingRowInputWrapper; }; makeSettingInput = ({ key, tab, defaultValue }) => { const settingRowInput = makeElement("div", ["settingRow-action-inputContainer", "inputText"]); const settingRowInputText = makeElement("input", "inputBox"); settingRowInputText.value = getSettingDirect(key, defaultValue, tab); const inputSaveButton = makeElement("button", ["mousehuntActionButton", "tiny", "inputSaveButton"]); makeElement("span", "", "Save", inputSaveButton); let timeout = null; inputSaveButton.addEventListener("click", (event) => { const parent = event.target.parentNode.parentNode.parentNode; parent.classList.add("inputDropdownWrapper"); parent.classList.add("inputTextWrapper"); parent.classList.add("busy"); parent.classList.remove("completed"); saveSettingDirect(key, settingRowInputText.value, tab); doEvent2("mh-improved-settings-changed", { key, value: settingRowInputText.value, tab, type: "input" }); parent.classList.remove("busy"); parent.classList.add("completed"); clearTimeout(timeout); timeout = setTimeout(() => { parent.classList.remove("completed"); }, 1e3); addSettingRefreshReminder(key); }); settingRowInput.classList.add("inputText"); settingRowInput.append(settingRowInputText); settingRowInput.append(inputSaveButton); return settingRowInput; }; makeSettingTextArea = ({ key, tab, defaultValue }) => { const settingRowInput = makeElement("div", ["settingRow-action-inputContainer", "textarea"]); const settingRowInputText = makeElement("textarea", "inputBox"); settingRowInputText.value = getSetting(key, defaultValue); const inputSaveButton = makeElement("button", ["mousehuntActionButton", "tiny", "inputSaveButton"]); makeElement("span", "", "Save", inputSaveButton); let timeout = null; inputSaveButton.addEventListener("click", (event) => { const parent = event.target.parentNode.parentNode.parentNode; parent.classList.add("inputDropdownWrapper"); parent.classList.add("inputTextWrapper"); parent.classList.remove("completed"); parent.classList.add("busy"); saveSettingDirect(key, settingRowInputText.value, tab); doEvent2("mh-improved-settings-changed", { key, value: settingRowInputText.value, tab, type: "textarea" }); parent.classList.remove("busy"); parent.classList.add("completed"); clearTimeout(timeout); timeout = setTimeout(() => { parent.classList.remove("completed"); }, 1e3); addSettingRefreshReminder(key); }); settingRowInput.append(settingRowInputText); settingRowInput.append(inputSaveButton); return settingRowInput; }; makeSettingMultiToggle = ({ key, tab, settingSettings }) => { const multiToggleWrapper = makeElement("div", "multi-toggle"); const multiToggleRow = makeElement("div", ["PagePreferences__settingsList", "multi-toggle-row"]); settingSettings.options.forEach((option) => { const optionSettingRow = makeElement("div", "PagePreferences__settingsList"); const optionSettingRowLabel = makeElement("div", "PagePreferences__settingLabel"); makeElement("div", "PagePreferences__settingName", option.name, optionSettingRowLabel); optionSettingRow.append(optionSettingRowLabel); const optionSettingRowAction = makeElement("div", "PagePreferences__settingAction"); const optionSettingRowInput = makeElement("div", "settingRow-action-inputContainer"); const settingRowInputCheckbox = makeToggle(`${key}-${option.id}`, option.value, tab); optionSettingRowInput.append(settingRowInputCheckbox); optionSettingRowAction.append(optionSettingRowInput); optionSettingRow.append(optionSettingRowAction); multiToggleRow.append(optionSettingRow); }); multiToggleWrapper.append(multiToggleRow); return multiToggleWrapper; }; makeSettingBlank = ({ section, key }) => { const action = makeElement("div", ["blank", "blankSetting"], ""); action.id = `${section.id}-${key}-blank`; return action; }; addSettingOnce = (options) => { addSettingStyles(); const name = options.name; const key = options.id; const defaultValue = options.default || null; const description = options.description || ""; const tab = "mousehunt-improved-settings"; const settingSettings = options.subSettings || null; const moduleType = options.moduleType || null; let container = document.querySelector(`.mousehuntHud-page-tabContent.${tab}`); const originalContainer = container; if (!container) { return false; } const section = { id: options.module.id, name: options.module.name || "", description: options.module.description || "", subSetting: options.module.subSetting || false }; let leftSide = container.querySelector(".PagePreferences__settingsLeft"); if (!leftSide) { leftSide = makeElement("div", "PagePreferences__settingsLeft"); container.append(leftSide); container.classList.add("two-column"); } let rightSide = container.querySelector(".PagePreferences__settingsRight"); if (!rightSide) { rightSide = makeElement("div", "PagePreferences__settingsRight"); container.append(rightSide); container.classList.add("two-column"); } if (moduleType && getSetting("experiments.new-settings-styles-columns", false)) { switch (moduleType) { case "better": case "design": case "element-hiding": case "advanced": container = leftSide; break; case "feature": case "location-hud": case "beta": container = rightSide; break; default: container = originalContainer; break; } } section.id = `${tab}-${section.id.replaceAll(/[^\w-]/gi, "")}`; let sectionExists = document.querySelector(`#${section.id}-wrapper`); if (!sectionExists) { const title = makeElement("div", "PagePreferences__section"); title.id = section.id; const titleSection = makeElement("div", "PagePreferences__title"); makeElement("h3", "PagePreferences__titleText", section.name, titleSection); title.append(titleSection); container.append(title); if (section.description) { const settingSubHeader = makeElement("h4", ["settings-subheader", "mh-utils-settings-subheader"], section.description); title.after(settingSubHeader); } const sectionWrapper = makeElement("div", "PagePreferences__sectionWrapper"); sectionWrapper.id = `${section.id}-wrapper`; container.append(sectionWrapper); title.append(sectionWrapper); sectionExists = document.querySelector(`#${section.id}-wrapper`); } const keySafe = key.replaceAll(".", "-"); const settingExists = document.querySelector(`#${section.id}-${keySafe}`); if (settingExists) { return settingExists; } const settings = makeElement("div", ["PagePreferences__settingsList"]); settings.id = `${section.id}-${keySafe}`; if (section.subSetting) { settings.classList.add("PagePreferences__subSetting"); } else { settings.classList.add(`PagePreferences__settingsList-${keySafe}`, `PagePreferences__settingsList-${section.id}`); } if (settingSettings && settingSettings.type) { settings.classList.add(`PagePreferences__settingsList-${settingSettings.type}`); } const settingRow = makeElement("div", "PagePreferences__setting"); const settingRowLabel = makeElement("div", "PagePreferences__settingLabel"); const settingName = makeElement("div", "PagePreferences__settingName"); const settingNameText = makeElement("a", "PagePreferences__settingNameText", name); settingNameText.href = `#${section.id}-${keySafe}`; settingNameText.setAttribute("data-setting", key); settingNameText.setAttribute("data-tab", tab); settingNameText.setAttribute("data-default", JSON.stringify(defaultValue)); settingName.append(settingNameText); if (!section.subSetting) { settingNameText.addEventListener("click", (event) => { event.preventDefault(); navigator.clipboard.writeText(`${window.location.href}#${section.id}-${keySafe}`); showSuccessMessage({ message: "Copied link to clipboard", append: settingNameText, after: true, classname: "setting-link-copied" }); }); } const defaultSettingText = makeElement("div", "PagePreferences__settingDefault"); if (settingSettings && (settingSettings.type === "select" || settingSettings.type === "multi-select")) { defaultSettingText.textContent = defaultValue.map((item) => item.name).join(", "); } else { defaultSettingText.textContent = defaultValue ? "Enabled" : "Disabled"; } defaultSettingText.textContent = `Default setting: ${defaultSettingText.textContent}`; const settingDescription = makeElement("div", "PagePreferences__settingDescription"); settingDescription.innerHTML = description; if (description.trim() === "") { settingDescription.classList.add("empty-description"); } settingRowLabel.append(settingName); settingRowLabel.append(defaultSettingText); settingRowLabel.append(settingDescription); const settingRowAction = makeElement("div", "PagePreferences__settingAction"); if (settingSettings) { if (settingSettings.type === "select" || settingSettings.type === "multi-select") { settingRowAction.append(makeSettingRowSelect({ key, tab, defaultValue, settingSettings })); } else if (settingSettings.type === "input") { settingRowAction.append(makeSettingInput({ key, tab, defaultValue })); } else if (settingSettings.type === "textarea") { settingRowAction.append(makeSettingTextArea({ key, tab, defaultValue })); } else if (settingSettings.type === "multi-toggle") { settingRowAction.append(makeSettingMultiToggle({ key, tab, settingSettings })); } else if (settingSettings.type === "blank") { settingRowAction.append(makeSettingBlank({ section, key })); } else { settingRowAction.append(makeSettingToggle({ key, defaultValue, tab, settings })); } } else { settingRowAction.append(makeSettingToggle({ key, defaultValue, tab, settings })); } settingRow.append(settingRowLabel); settingRow.append(settingRowAction); settings.append(settingRow); sectionExists.append(settings); doEvent2("mh-improved-setting-added-to-page", { name, key, defaultValue, description, section, tab, settings }); return settings; }; fadeInTimeout = null; fadeOutTimeout = null; removeTimeout = null; addSettingRefreshReminder = (key) => { const noReminder = settings_default["no-reminders"] || []; if (noReminder.includes(key)) { return; } addSettingStyles(); let refreshMessage = document.querySelector("#mh-utils-settings-refresh-message"); if (!refreshMessage) { const newMessageEl = makeElement("div", ["mh-utils-settings-refresh-message", "mh-ui-fade"], "You may need to refresh the page for some settings to take effect."); newMessageEl.id = "mh-utils-settings-refresh-message"; const body = document.querySelector("body"); body.append(newMessageEl); refreshMessage = document.querySelector("#mh-utils-settings-refresh-message"); } clearTimeout(fadeInTimeout); clearTimeout(fadeOutTimeout); clearTimeout(removeTimeout); fadeInTimeout = setTimeout(() => { refreshMessage.classList.add("mh-ui-fade-in"); }, 250); fadeOutTimeout = setTimeout(() => { refreshMessage.classList.remove("mh-ui-fade-in"); refreshMessage.classList.add("mh-ui-fade-out"); }, 3e3); removeTimeout = setTimeout(() => { refreshMessage.remove(); }, 5e3); }; addSettingForModule = (module) => __async(void 0, null, function* () { for (const submodule of module.modules) { let moduleSettingRow = null; if (!submodule.alwaysLoad && !submodule.beta) { moduleSettingRow = yield addSetting({ moduleType: module.id, name: submodule.name, id: submodule.id, group: submodule.group, default: submodule.default, description: submodule.description, module }); } if (submodule.settings) { const subSettingsGroup = yield submodule.settings(module); if (!subSettingsGroup) { continue; } for (const subSettings of subSettingsGroup) { const subSettingRow = yield addSetting({ moduleType: module.id, name: subSettings.title, id: subSettings.id, group: submodule.group || false, default: subSettings.default, description: subSettings.description, module: __spreadProps(__spreadValues({}, module), { subSetting: true }), subSettings: subSettings.settings }); if (moduleSettingRow && subSettingRow) { moduleSettingRow.append(subSettingRow); } } } } }); } }); // src/utils/templates.js var replaceInTemplate; var init_templates = __esm({ "src/utils/templates.js"() { replaceInTemplate = (templateId, replacements2) => { let templateContent = hg.utils.TemplateUtil.getTemplate(templateId); replacements2.forEach((replacement) => { templateContent = templateContent.replace(replacement[0], replacement[1]); }); hg.utils.TemplateUtil.addTemplate(templateId, templateContent); }; } }); // src/utils/user.js var getUserItems, getUserSetupDetails, normalizeTitle, isUserTitleAtLeast, getAnonymousUserHash; var init_user = __esm({ "src/utils/user.js"() { init_page(); getUserItems = (items2, forceUpdate = false) => __async(void 0, null, function* () { return new Promise((resolve) => { hg.utils.UserInventory.getItems(items2, (resp) => { resolve(resp); }, (err) => { console.error("Error getting user items:", err); resolve([]); }, forceUpdate); }); }); getUserSetupDetails = () => { const userObj = user; const setup = { type: userObj.trap_power_type_name, stats: { power: userObj.trap_power, powerBonus: userObj.trap_power_bonus, luck: userObj.trap_luck, attractionBonus: userObj.trap_attraction_bonus, cheeseEffect: userObj.trap_cheese_effect }, bait: { id: Number.parseInt(userObj.bait_item_id), name: userObj.bait_name, quantity: Number.parseInt(userObj.bait_quantity), power: 0, powerBonus: 0, luck: 0, attractionBonus: 0 }, base: { id: Number.parseInt(userObj.base_item_id), name: userObj.base_name, power: 0, powerBonus: 0, luck: 0, attractionBonus: 0 }, charm: { id: Number.parseInt(userObj.trinket_item_id), name: userObj.trinket_name, quantity: Number.parseInt(userObj.trinket_quantity), power: 0, powerBonus: 0, luck: 0, attractionBonus: 0 }, weapon: { id: Number.parseInt(userObj.weapon_item_id), name: userObj.weapon_name, power: 0, powerBonus: 0, luck: 0, attractionBonus: 0 }, aura: { lgs: { active: false, power: 0, powerBonus: 0, luck: 0 }, lightning: { active: false, power: 0, powerBonus: 0, luck: 0 }, chrome: { active: false, power: 0, powerBonus: 0, luck: 0 }, slayer: { active: false, power: 0, powerBonus: 0, luck: 0 }, festive: { active: false, power: 0, powerBonus: 0, luck: 0 }, luckycodex: { active: false, power: 0, powerBonus: 0, luck: 0 }, riftstalker: { active: false, power: 0, powerBonus: 0, luck: 0 } }, location: { name: userObj.environment_name, id: userObj.environment_id, slug: userObj.environment_type } }; if ("camp" !== getCurrentPage()) { return setup; } const calculations = document.querySelectorAll(".campPage-trap-trapStat"); if (!calculations) { return setup; } calculations.forEach((calculation) => { if (calculation.classList.length <= 1) { return; } const type = calculation.classList[1]; const math = calculation.querySelectorAll(".math .campPage-trap-trapStat-mathRow"); if (!math) { return; } math.forEach((row) => { if (row.classList.contains("label")) { return; } let value = row.querySelector(".campPage-trap-trapStat-mathRow-value"); let name = row.querySelector(".campPage-trap-trapStat-mathRow-name"); if (!value || !name || !name.innerText) { return; } name = name.innerText; value = value.innerText || "0"; let tempType = type; let isBonus = false; if (value.includes("%")) { tempType = type + "Bonus"; isBonus = true; } tempType = tempType.replace("_bonusBonus", "Bonus"); value = value.replace("%", ""); value = value.replace(",", ""); value = Number.parseInt(value * 100) / 100; if (tempType === "attractionBonus") { value = value / 100; } if (setup.weapon.name === name) { setup.weapon[tempType] = value; } else if (setup.base.name === name) { setup.base[tempType] = value; } else if (setup.charm.name === name) { setup.charm[tempType] = value; } else if (setup.bait.name === name) { setup.bait[tempType] = value; } else if ("Your trap has no cheese effect bonus." === name) { setup.cheeseEffect = "No Effect"; } else { let auraType = name.replace(" Aura", ""); if (!auraType) { return; } auraType = auraType.toLowerCase(); auraType = auraType.replaceAll(" ", "_"); auraType = auraType.replaceAll(/\W/gi, ""); auraType = auraType.replace("golden_luck_boost", "lgs"); auraType = auraType.replace("2023_lucky_codex", "luckycodex"); auraType = auraType.replace("_set_bonus_2_pieces", ""); auraType = auraType.replace("_set_bonus_3_pieces", ""); if (setup.aura[auraType]) { setup.aura[auraType].active = true; setup.aura[auraType].type = auraType; } else { setup.aura[auraType] = { active: true, type: auraType, power: 0, powerBonus: 0, luck: 0 }; } value = Number.parseInt(value); if (isBonus) { value = value / 100; } setup.aura[auraType][tempType] = value; } }); }); return setup; }; normalizeTitle = (title = "") => { if (!title) { return ""; } const normalizedTitle = title.toLowerCase().replaceAll(" ", "").replaceAll("/", "_").replaceAll("journeyman_journeywoman", "journeyman").replaceAll("journeywoman", "journeyman").replaceAll("lord_lady", "lord").replaceAll("lady", "lord").replaceAll("baron_baroness", "baron").replaceAll("baroness", "baron").replaceAll("count_countess", "count").replaceAll("countess", "count").replaceAll("grand_duke_grand_duchess", "grand_duke").replaceAll("grand_duchess", "grand_duke").replaceAll("archduke_archduchess", "archduke").replaceAll("archduchess", "archduke").replaceAll("duke_duchess", "duke").replaceAll("duke_dutchess", "duke").replaceAll("duchess", "duke").replaceAll("grand_duke", "grandduke").replaceAll("/", "").replaceAll(" ", "").toLowerCase(); return normalizedTitle; }; isUserTitleAtLeast = (title) => { const titles = [ "novice", "recruit", "apprentice", "initiate", "journeyman", "master", "grandmaster", "legendary", "hero", "knight", "lord", "baron", "count", "duke", "grandduke", "archduke", "viceroy", "elder", "sage", "fable" ]; const titleIndex = titles.indexOf(normalizeTitle(user.title_name)); const checkIndex = titles.indexOf(normalizeTitle(title)); return titleIndex >= checkIndex; }; getAnonymousUserHash = () => __async(void 0, null, function* () { if (typeof user === "undefined" || !(user == null ? void 0 : user.user_id)) { return ""; } const msgUint8 = new TextEncoder().encode(user.user_id.toString().trim()); const hashBuffer = yield crypto.subtle.digest("SHA-256", msgUint8); const hashArray = [...new Uint8Array(hashBuffer)]; userHash = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); return userHash; }); } }); // src/utils/utils.js function isAppleOS(_window = null) { if (!_window) { if (typeof window === "undefined") { return false; } _window = window; } const { platform } = _window.navigator; return platform.includes("Mac") || ["iPad", "iPhone"].includes(platform); } var isApp, isUnsupportedFile, isiFrame, isLegacyHUD, isLoggedIn, isOverlayVisible, bodyClasses, addBodyClass, removeBodyClass, getTradableItems, requests, doRequest, sleep, hasMiniCRE, uppercaseFirstLetter, setMultipleTimeout, refreshPage; var init_utils = __esm({ "src/utils/utils.js"() { init_data(); init_events(); init_debug(); init_page(); isApp = () => { return typeof app !== "undefined" && typeof user !== "undefined" && typeof hg !== "undefined" && typeof eventRegistry !== "undefined"; }; isUnsupportedFile = (path = false) => { path = path || window.location.pathname; if ("puzzleimage.php" === path) { return true; } return path.match(/\.(jpeg|jpg|gif|png|svg|json|css|js)$/i); }; isiFrame = () => { return window.self !== window.top; }; isLegacyHUD = () => { var _a, _b; if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.isLegacy)) { return false; } return hg.utils.PageUtil.isLegacy(); }; isLoggedIn = () => { return user.length > 0 && "login" !== getCurrentPage(); }; isOverlayVisible = () => { return activejsDialog && activejsDialog.isVisible(); }; bodyClasses = { added: [], removed: [] }; addBodyClass = (className, force = false) => { if (!force && (bodyClasses.removed.includes(className) || bodyClasses.added.includes(className))) { return; } bodyClasses.added.push(className); const addClass2 = () => { document.body.classList.add(className); }; addClass2(); onNavigation(addClass2); onTravel(null, { /** * Callback to add the class after travel. */ callback: () => { setTimeout(addClass2, 500); } }); }; removeBodyClass = (className) => { bodyClasses.added = bodyClasses.added.filter((c) => c !== className); bodyClasses.removed.push(className); document.body.classList.remove(className); }; getTradableItems = (valueKey = "all") => __async(void 0, null, function* () { const tradableItems = yield getData("items-tradable"); tradableItems.sort((a, b) => { return a.name.localeCompare(b.name); }); if ("all" === valueKey) { return tradableItems; } const returnItems = []; for (const item of tradableItems) { returnItems.push({ name: item.name, value: item[valueKey] }); } return returnItems; }); requests = {}; doRequest = (_0, ..._1) => __async(void 0, [_0, ..._1], function* (url, formData = {}, skipChecks = false) { var _a; if ("undefined" === typeof lastReadJournalEntryId || "undefined" === typeof user) { return; } if (!lastReadJournalEntryId || !user || !(user == null ? void 0 : user.unique_hash)) { return; } const requestKey = Object.keys(formData).length ? `${url}-${JSON.stringify(formData)}` : url; const timeRequested = Date.now(); debuglog("utils-data", `Making request: ${requestKey} at ${timeRequested}`); if (requests[requestKey] && !skipChecks) { debuglog("utils-data", `Request already in progress: ${requestKey}`); if (requests[requestKey].in_progress) { return new Promise((resolve) => { const timeout = setTimeout(() => __async(void 0, null, function* () { debuglog("utils-data", `Request timed out: ${requestKey}, starting new request`); clearInterval(interval); const newRequest = yield doRequest(url, formData, true); resolve(newRequest); }), 2500); const interval = setInterval(() => { debuglog("utils-data", `Checking if request is complete: ${requestKey}`); if (!requests[requestKey].in_progress) { debuglog("utils-data", `Returning saved response: ${requestKey}`); clearInterval(interval); clearTimeout(timeout); resolve(requests[requestKey].response); } }, 100); }); } else if (requests[requestKey].time_requested > timeRequested - 350) { debuglog("utils-data", `Request already completed: ${requestKey}`); return requests[requestKey].response; } } debuglog("utils-data", `Starting request: ${requestKey}`); requests[requestKey] = { in_progress: true, time_requested: timeRequested }; const form = new FormData(); form.append("sn", "Hitgrab"); form.append("hg_is_ajax", 1); form.append("last_read_journal_entry_id", lastReadJournalEntryId != null ? lastReadJournalEntryId : 0); form.append("uh", (_a = user == null ? void 0 : user.unique_hash) != null ? _a : ""); for (const key in formData) { form.append(key, formData[key]); } const requestBody = new URLSearchParams(form).toString(); const response = yield fetch( callbackurl ? callbackurl + url : "https://www.mousehuntgame.com/" + url, { method: "POST", body: requestBody, headers: { "Content-Type": "application/x-www-form-urlencoded" } } ); const data = yield response.json(); requests[requestKey] = { time_requested: timeRequested, response: data }; return data; }); sleep = (ms, elapsed = 0) => __async(void 0, null, function* () { if (elapsed) { ms -= elapsed; } return new Promise((resolve) => setTimeout(resolve, ms)); }); hasMiniCRE = () => { const hasMiniCre = sessionGet("has-mini-cre"); if (hasMiniCre) { return true; } if ("camp" !== getCurrentPage()) { return; } const cre = document.querySelector(".min-luck-button"); if (!cre) { sessionSet("has-mini-cre", false); return false; } sessionSet("has-mini-cre", true); return true; }; uppercaseFirstLetter = (string) => { return string.charAt(0).toUpperCase() + string.slice(1); }; setMultipleTimeout = (fn, ms) => { if (!Array.isArray(ms)) { ms = [ms]; } ms.forEach((time) => { setTimeout(fn, time); }); }; refreshPage = (delay = 0) => { setTimeout(() => { window.location.reload(); }, delay); }; } }); // src/utils/shared/trap-quantity.js var getIdSelector, addQuantityToDisplay, addQuantityToTrapBrowserItem, addQtyToTrapBrowser, addTrapQuantity; var init_trap_quantity = __esm({ "src/utils/shared/trap-quantity.js"() { init_utils2(); getIdSelector = (itemId, bases) => { if (Array.isArray(bases)) { bases = bases.join("-"); } return `mh-improved-${itemId}-${bases}-counter`; }; addQuantityToDisplay = (itemId, bases) => __async(void 0, null, function* () { var _a; if ("camp" !== getCurrentPage() || !itemId || !bases) { return; } const selector = getIdSelector(itemId, bases); const existingCounter = document.querySelector(`.${selector}`); if (existingCounter) { existingCounter.remove(); } bases = bases.map((base) => Number.parseInt(base, 10)); const userBase = Number.parseInt(user.base_item_id, 10); if (!bases.includes(userBase)) { return; } const details = yield getUserItems([itemId], true); const amount = ((_a = details[0]) == null ? void 0 : _a.quantity) || 0; cacheSet(`${itemId}-quantity`, amount); const counter = document.querySelector(`.${selector}-text`); if (counter) { counter.textContent = amount; return; } const trapContainer = document.querySelector('.trapSelectorView__armedItem[data-item-classification="base"] .trapSelectorView__armedItemImage'); if (!trapContainer) { return; } const newCounter = makeElement("div", ["trapSelectorView__armedItemQuantity", selector]); makeElement("span", `${selector}-text`, amount.toLocaleString(), newCounter); trapContainer.append(newCounter); }); addQuantityToTrapBrowserItem = (el, itemId, base) => __async(void 0, null, function* () { if (!el || !itemId || !base) { return; } const selector = getIdSelector(itemId, base); let qty = yield cacheGet(`${itemId}-quantity`, 0); qty = Number.parseInt(qty, 10); const exists = document.querySelector(`.${selector}-blueprint`); if (exists) { exists.textContent = qty.toLocaleString(); return; } const counter = makeElement("div", "campPage-trap-itemBrowser-favorite-item-quantity"); makeElement("span", ["campPage-trap-baitQuantity", `${selector}-blueprint`], qty.toLocaleString(), counter); el.append(counter); }); addQtyToTrapBrowser = (tab, opts) => __async(void 0, null, function* () { if ("item_browser" !== tab || !opts.itemId || !opts.baseSlugs) { return; } opts.baseSlugs.forEach((base) => __async(void 0, null, function* () { const el = document.querySelector(`.campPage-trap-itemBrowser-item-image[data-item-type="${base}"]`); if (!el) { return; } addQuantityToTrapBrowserItem(el, opts.itemId, base); })); opts.baseIds.forEach((base) => __async(void 0, null, function* () { const faveEl = document.querySelector(`.campPage-trap-itemBrowser-favorite-item-image[data-item-id="${base}"]`); if (!faveEl) { return; } addQuantityToTrapBrowserItem(faveEl, opts.itemId, base); })); }); addTrapQuantity = (opts) => __async(void 0, null, function* () { const run4 = () => { addQuantityToDisplay(opts.itemId, opts.baseIds); }; run4(); onRequest("users/changetrap.php", () => { run4(); setTimeout(run4, 500); const trapSelector = document.querySelector('.trapSelectorView__blueprint.trapSelectorView__blueprint--active .trapSelectorView__browserStateParent--items[data-blueprint-type="base"]'); if (trapSelector) { addQtyToTrapBrowser("item_browser", opts); } }); onTurn(run4, 150); onEvent("camp_page_toggle_blueprint", (tab) => __async(void 0, null, function* () { return addQtyToTrapBrowser(tab, opts); })); }); } }); // src/utils/index.js var utils_exports = {}; __export(utils_exports, { addBodyClass: () => addBodyClass, addEvent: () => addEvent, addHudStyles: () => addHudStyles, addIconToMenu: () => addIconToMenu, addItemToGameInfoBar: () => addItemToGameInfoBar, addMHCTData: () => addMHCTData, addModuleStyles: () => addModuleStyles, addSetting: () => addSetting, addSettingForModule: () => addSettingForModule, addSettingsTab: () => addSettingsTab, addStyles: () => addStyles, addStylesDirect: () => addStylesDirect, addSubmenuDivider: () => addSubmenuDivider, addSubmenuItem: () => addSubmenuItem, addTrapQuantity: () => addTrapQuantity, cacheDelete: () => cacheDelete, cacheFinishedMap: () => cacheFinishedMap, cacheGet: () => cacheGet, cacheSet: () => cacheSet, clearCaches: () => clearCaches, createPopup: () => createPopup, database: () => database, databaseDelete: () => databaseDelete, dbDelete: () => dbDelete, dbDeleteAll: () => dbDeleteAll, dbGet: () => dbGet, dbGetAll: () => dbGetAll, dbSet: () => dbSet, debug: () => debug, debuglog: () => debuglog, deleteSetting: () => deleteSetting, doEvent: () => doEvent2, doRequest: () => doRequest, getAnonymousUserHash: () => getAnonymousUserHash, getArEl: () => getArEl, getArForMouse: () => getArForMouse, getCurrentDialog: () => getCurrentDialog, getCurrentLocation: () => getCurrentLocation, getCurrentPage: () => getCurrentPage, getCurrentSubtab: () => getCurrentSubtab, getCurrentTab: () => getCurrentTab, getData: () => getData, getFlag: () => getFlag, getFlags: () => getFlags, getGlobal: () => getGlobal, getHeaders: () => getHeaders, getHighestArForMouse: () => getHighestArForMouse, getLastMaptain: () => getLastMaptain, getLocationForMouse: () => getLocationForMouse, getMapData: () => getMapData, getRelicHunterLocation: () => getRelicHunterLocation, getSetting: () => getSetting, getSettingDirect: () => getSettingDirect, getSettings: () => getSettings, getTradableItems: () => getTradableItems, getUserItems: () => getUserItems, getUserSetupDetails: () => getUserSetupDetails, hasMiniCRE: () => hasMiniCRE, isApp: () => isApp, isAppleOS: () => isAppleOS, isCurrentPage: () => isCurrentPage, isLegacyHUD: () => isLegacyHUD, isLoggedIn: () => isLoggedIn, isOverlayVisible: () => isOverlayVisible, isUnsupportedFile: () => isUnsupportedFile, isUserTitleAtLeast: () => isUserTitleAtLeast, isiFrame: () => isiFrame, makeButton: () => makeButton, makeElement: () => makeElement, makeElementDraggable: () => makeElementDraggable, makeFavoriteButton: () => makeFavoriteButton, makeLink: () => makeLink, makeMhButton: () => makeMhButton, makePage: () => makePage, makeTooltip: () => makeTooltip, mapData: () => mapData, mapModel: () => mapModel, mapper: () => mapper, onActivation: () => onActivation, onDeactivation: () => onDeactivation, onDialogHide: () => onDialogHide, onDialogShow: () => onDialogShow, onEvent: () => onEvent, onNavigation: () => onNavigation, onOverlayChange: () => onOverlayChange, onPageChange: () => onPageChange, onRequest: () => onRequest, onSettingsChange: () => onSettingsChange, onTrapChange: () => onTrapChange, onTravel: () => onTravel, onTurn: () => onTurn, refreshPage: () => refreshPage, removeBodyClass: () => removeBodyClass, removeHudStyles: () => removeHudStyles, removeIconFromMenu: () => removeIconFromMenu, removeStyles: () => removeStyles, removeSubmenuItem: () => removeSubmenuItem, replaceIconInMenu: () => replaceIconInMenu, replaceInTemplate: () => replaceInTemplate, saveSetting: () => saveSetting, saveSettingDirect: () => saveSettingDirect, sessionDelete: () => sessionDelete, sessionGet: () => sessionGet, sessionSet: () => sessionSet, sessionsDelete: () => sessionsDelete, setGlobal: () => setGlobal, setLastMaptain: () => setLastMaptain, setMapData: () => setMapData, setMultipleTimeout: () => setMultipleTimeout, setPage: () => setPage, setTab: () => setTab, showErrorMessage: () => showErrorMessage, showHornMessage: () => showHornMessage, showLoadingError: () => showLoadingError, showLoadingPopup: () => showLoadingPopup, showLoadingPopupError: () => showLoadingPopupError, showSuccessMessage: () => showSuccessMessage, showTravelConfirmation: () => showTravelConfirmation, showTravelConfirmationNoDetails: () => showTravelConfirmationNoDetails, sleep: () => sleep, toggleBlueprint: () => toggleBlueprint, travelTo: () => travelTo, updateCaches: () => updateCaches, uppercaseFirstLetter: () => uppercaseFirstLetter }); var init_utils2 = __esm({ "src/utils/index.js"() { init_blueprint2(); init_db(); init_data(); init_debug(); init_draggable(); init_elements(); init_events(); init_event_registry(); init_flags(); init_global(); init_horn(); init_links(); init_location(); init_maps(); init_messages(); init_page(); init_settings(); init_settings_markup(); init_styles(); init_templates(); init_user(); init_utils(); init_trap_quantity(); } }); // src/modules/adblock/styles.css var styles_default; var init_styles2 = __esm({ "src/modules/adblock/styles.css"() { styles_default = `.actionportfolio,.canShare .larryTip,.canShare,.communityGroupView-ad,.journalactions a.actionportfolio,.journalactions a[data-share-type=journal],.journalactions a[data-type=journal],.mousehuntHeaderView-gameBanner,.pageSidebarView .fb-page,.socialLink,.newsPostFacebookContainer,.travelShortcut.QuestSuperBrieFactory,*[src="https://www.mousehuntgame.com//images/ui/buttons/share_green.gif"],*[src="https://www.mousehuntgame.com/images/promo/fbf_live.jpg"],*[src="https://www.mousehuntgame.com/images/promo/fbf_soon.jpg"],a[onclick="hg.utils.PageUtil.setPage('JoinDiscord'); return false;"],a[href="https://www.facebook.com/groups/103701656374148/"],.pageSidebarView-mobileApps,.pageSidebarView-title,.pageSidebarView-block-description #jsDialog-publishToOwnWall,.travelShortcut.QuestHailstoneGolems{display:none}#OnboardArrow.onboardPopup.canShare .closeButton{left:0} `; } }); // src/modules/adblock/index.js var init, adblock_default; var init_adblock = __esm({ "src/modules/adblock/index.js"() { init_utils2(); init_styles2(); init = () => __async(void 0, null, function* () { addStyles(styles_default, "adblock"); }); adblock_default = { id: "adblock", name: "Adblock", type: "element-hiding", default: false, description: "Hides advertisements for Feedback Friday, mobile apps, news ticker, etc.", load: init }; } }); // src/modules/better-inventory/styles/recipes.css var recipes_default; var init_recipes = __esm({ "src/modules/better-inventory/styles/recipes.css"() { recipes_default = ".inventoryPage-item.full.recipe.known.reordered{max-height:38px;overflow:hidden;border-bottom:1px solid #ccc}.inventoryPage-item.full.recipe.known.reordered:hover{max-height:500px}\n"; } }); // src/data/recipes-me-conversion.json var recipes_me_conversion_default; var init_recipes_me_conversion = __esm({ "src/data/recipes-me-conversion.json"() { recipes_me_conversion_default = { no: [ "abominable_asiago_cheese_magic", "ancient_cheese_6_pieces", "ancient_cheese_potion", "cherry_potion", "corrupted_radioactive_blue_cheese_potion", "gnarled_cheese_potion", "greater_radioactive_blue_cheese_potion", "limelight_cheese_6", "radioactive_blue_cheese_potion", "runic_cheese_2_pieces", "runic_cheese_potion" ], maybe: [ "ancient_string_cheese_potion", "crimson_cheese_magic_essence_recipe", "gauntlet_potion_2", "gauntlet_potion_3", "gauntlet_potion_4", "glowing_gruyere_cheese_5_pieces", "greater_wicked_gnarly_potion", "rain_cheese_potion", "vengeful_vanilla_stilton_magic_essence", "wicked_gnarly_potion", "wind_cheese_potion" ] }; } }); // src/data/recipes-to-reorder.json var recipes_to_reorder_default; var init_recipes_to_reorder = __esm({ "src/data/recipes-to-reorder.json"() { recipes_to_reorder_default = { base: { living_grove_base_recipe: "living_grove_base", polluted_base_rebuild: "polluted_base", soiled_base_rebuild_recipe: "soiled_base", tribal_base: "tribal_base", tiki_base: "tiki_base" }, collectible: { admirals_ship_journal_theme_recipe: "admirals_ship_journal_theme_collectible", bristle_woods_rift_journal_theme_recipe: "bristle_woods_rift_journal_theme_collectible", burroughs_rift_journal_theme_recipe: "burroughs_rift_journal_theme_collectible", chrome_journal_theme_recipe: "chrome_journal_theme_collectible", gnawnian_games_journal_theme_recipe: "gnawnian_games_theme_collectible", labyrinth_journal_theme_recipe: "labyrinth_journal_theme_collectible", lightning_slayer_journal_theme_recipe: "lightning_slayer_journal_theme_collectible", living_garden_theme_recipe: "living_garden_theme_collectible", moussu_picchu_journal_theme_recipe: "moussu_picchu_journal_theme_collectible", polluted_theme_recipe: "completed_polluted_journal_theme_collectible", queso_journal_theme_recipe: "queso_canyon_theme_collectible", regal_theme_recipe: "completed_regal_theme_collectible", relic_hunter_journal_theme_recipe: "relic_hunter_journal_theme_collectible" }, crafting_item: { geyser_draconic_chassis_recipe: "draconic_geyser_chassis_crafting_item", geyser_draconic_chassis_i_recipe: "draconic_geyser_chassis_i_crafting_item", christened_ship: "huntington_map_piece", s_s__huntington_ii: "huntington_map_piece" }, map_piece: { unchristened_ship: "unchristened_ship_craft_item", balacks_lantern: "balack_lantern_map_piece", ocean_navigation_kit: "ocean_navigation_map_piece", zzt_key_1: "zzt_key", repaired_oculus_recipe: "high_altitude_license_stat_item" }, weapon: { chrome_floating_arcane_upgraded_recipe: "chrome_floating_arcane_upgraded_weapon", chrome_monstrobot_recipe: "chrome_monstrobot_weapon", chrome_oasis_water_node_recipe: "chrome_oasis_water_node_weapon", chrome_phantasmic_oasis_recipe: "chrome_phantasmic_oasis_weapon", chrome_school_of_sharks_recipe: "chrome_school_of_sharks_weapon", chrome_sphynx_recipe: "chrome_sphynx_weapon", chrome_storm_wrought_ballista_recipe: "chrome_storm_wrought_ballista_weapon", chrome_temporal_turbine_recipe: "chrome_temporal_turbine_weapon", chrome_thought_obliterator_recipe: "chrome_floating_forgotten_upgraded_weapon", clockapult_of_winter_past: "clockapult_of_winter_past_weapon", geyser_draconic_weapon_recipe: "geyser_draconic_weapon", fluffy_deathbot_weapon: "fluffy_deathbot_weapon", grungy_deathbot_weapon: "grungy_deathbot_weapon", icy_rhinobot: "icy_rhinobot_weapon", ninja_ambush_weapon: "ninja_ambush_weapon", regrown_thorned_venus_mouse_trap: "throned_venus_mouse_trap_weapon", acronym_recipe: "acronym_weapon", ambush_trap_rebuild: "ambush_weapon", rebuild_celestial_dissonance_recipe: "celestial_dissonance_weapon", rebuild_chrome_storm_wrought_ballista_recipe: "chrome_storm_wrought_ballista_weapon", clockapult_of_time_rebuild: "clockapult_of_time_weapon", rebuild_crystal_tower_recipe: "crystal_tower_weapon", digby_drillbot: "digby_drillbot_weapon", dragon_ballista_rebuild: "dragonvine_ballista_weapon", endless_labyrinth_trap_rebuild_recipe: "endless_labyrinth_weapon", event_horizon_recipe: "event_horizon_weapon", harpoon_gun: "harpoon_gun_weapon", rebuild_high_tension_recipe: "high_tension_spring_weapon", ice_blaster_trap_rebuild: "ice_blaster_weapon", wolfsbane_rebuild_recipe: "wolfsbane_weapon", mouse_deathbot: "mouse_deathbot_weapon", net_cannon: "net_cannon_weapon", oasis_water_node_recipe: "oasis_water_node_weapon", obelisk_of_slumber: "obelisk_of_slumber_weapon", rebuild_phantasmic_oasis_recipe: "phantasmic_oasis_weapon", rhinobot_rebuild: "rhinobot_weapon", sandstorm_monstrobot_recipe: "sandstormbot_weapon", rebuild_upgraded_rune_shark_weapon_recipe: "upgraded_rune_shark_weapon", scum_scrubber_trap_rebuild_recipe: "scum_scrubber_weapon", soul_catcher_rebuild: "hween_2011_weapon", sphynx_weapon_recipe: "sphynx_weapon", steam_laser_mk_i_rebuild: "steam_laser_mk_i_weapon", storm_wrought_ballista_recipe: "storm_wrought_ballista_weapon", temporal_turbine_recipe: "temporal_turbine", zugzwangs_last_move: "zugzwangs_last_move_weapon", rebuild_floating_arcane_upgraded_recipe: "floating_arcane_upgraded_weapon", rebuild_thought_obliterator_recipe: "floating_forgotten_upgraded_weapon", venus_mouse_trap: "venus_mouse_trap_weapon" } }; } }); // src/modules/better-inventory/recipes.js var cleanUpRecipeBook, showCraftWarning, warnOnBadCrafts, modifySmashableTooltip, moveRecipe, updateRecipesOnPage, recipes_default2; var init_recipes2 = __esm({ "src/modules/better-inventory/recipes.js"() { init_utils2(); init_recipes(); init_recipes_me_conversion(); init_recipes_to_reorder(); cleanUpRecipeBook = () => { const allTab = document.querySelector(".inventoryPage-tagDirectory-tag.all.hidden"); if (allTab) { allTab.classList.remove("hidden"); } const tagLinks = document.querySelectorAll(".mousehuntHud-page-subTabContent.recipe a.inventoryPage-tagDirectory-tag"); tagLinks.forEach((tagLink) => { const tag = tagLink.getAttribute("data-tag"); tagLink.removeAttribute("onclick"); tagLink.addEventListener("click", (e) => { app.pages.InventoryPage.showTagGroup(e.target); const hasBeenUpdated = tagLink.classList.contains("updated"); if (!hasBeenUpdated) { updateRecipesOnPage(tag); tagLink.classList.add("updated"); } }); }); }; showCraftWarning = (text) => { const confirm2 = document.querySelector(".mousehuntActionButton.inventoryPage-confirmPopup-suffix-button.confirm"); if (!confirm2) { return; } const existing = document.querySelector(".mhui-craft-warning-tooltip"); if (existing) { existing.remove(); } const tooltip = makeElement("div", "mhui-craft-warning-tooltip", text); confirm2.parentNode.append(tooltip); }; warnOnBadCrafts = (limit2 = 0) => { const confirm2 = document.querySelector(".mousehuntActionButton.inventoryPage-confirmPopup-suffix-button.confirm"); if (!confirm2) { if (limit2 <= 3) { setTimeout(() => { warnOnBadCrafts(limit2 + 1); }, 250); } return; } const type = confirm2.getAttribute("data-confirm-type"); if (!type) { return; } if (!("recipe" === type || "potion" === type)) { return; } const popup = document.querySelector(".inventoryPage-confirmPopup"); if (!popup) { return; } const recipe = popup.getAttribute("data-item-type"); if (!recipe) { return; } if ("potion" === type) { const consumed = document.querySelectorAll('.inventoryPage-confirmPopup-itemRow-quantity[data-source="consumed"]'); let hasSB = false; consumed.forEach((item) => { if (item.getAttribute("data-item-type") === "super_brie_cheese") { hasSB = true; } }); if (!hasSB) { return; } } if (recipes_me_conversion_default.no.includes(recipe)) { showCraftWarning("This is not worth crafting using Magic Essence."); } else if (recipes_me_conversion_default.maybe.includes(recipe)) { showCraftWarning("Check the price of SUPER|brie+ before using Magic Essence."); } }; modifySmashableTooltip = () => __async(void 0, null, function* () { if ("crafting" !== getCurrentTab() || "hammer" !== getCurrentSubtab()) { return; } const items2 = document.querySelectorAll(".inventoryPage-item"); if (!items2) { return; } items2.forEach((item) => __async(void 0, null, function* () { const tooltip = item.querySelector(".tooltip"); if (!tooltip) { return; } let producedItem = item.getAttribute("data-produced-item"); if (!producedItem) { return; } item.addEventListener("mouseleave", () => { item.classList.remove("new-tooltip-loading"); }); item.addEventListener("mouseenter", () => __async(void 0, null, function* () { if (item.getAttribute("data-new-tooltip") === "newTooltip") { return; } item.setAttribute("data-new-tooltip", "newTooltip"); producedItem = producedItem.includes(",") ? producedItem.split(",") : [producedItem]; const itemType = item.getAttribute("data-item-type"); producedItem.push(itemType); item.classList.add("new-tooltip-loading"); let itemData = yield cacheGet(`smashable-${producedItem.join("-")}`); if (!itemData) { itemData = yield getUserItems(producedItem); cacheSet(`smashable-${producedItem.join("-")}`, itemData); } if (!itemData || !itemData[0]) { return; } const formattedParts = itemData.find((itemDataItem) => itemDataItem.type === itemType).formatted_parts; if (!formattedParts) { return; } const tooltipWrapper = makeElement("div", ["newTooltip", "tooltip"]); itemData.forEach((itemDataItem) => { const formattedPart = formattedParts.find((formattedPartItem) => formattedPartItem.type === itemDataItem.type); if (!formattedPart) { return; } const name = formattedPart.name; const thumb = formattedPart.thumbnail_transparent || itemDataItem.thumbnail; let quantity = formattedPart.quantity; if ("gold_stat_item" === itemDataItem.type) { const quantityInt = Number.parseInt(quantity); quantity = quantityInt >= 1e6 ? `${Math.floor(quantityInt / 1e5) / 10}m` : quantity.toLocaleString(); } makeElement("div", ["new-tooltip-item", "inventoryPage-item"], ` <div class="inventoryPage-item-margin clear-block"> <div class="inventoryPage-item-imageContainer"> <div class="itemImage"><img src="${thumb}"> <div class="quantity">${quantity}</div> </div> </div> <div class="inventoryPage-item-content-nameContainer"> <div class="inventoryPage-item-content-name"> <span>${name}</span> </div> </div> </div>`, tooltipWrapper); }); tooltip.parentNode.insertBefore(tooltipWrapper, tooltip.nextSibling); item.classList.remove("new-tooltip-loading"); })); })); }); moveRecipe = (type, recipesContainer) => { const recipeEl = document.querySelector(`.inventoryPage-item.recipe[data-produced-item="${type}"]`); if (recipeEl) { recipeEl.classList.add("reordered"); recipesContainer.append(recipeEl); } }; updateRecipesOnPage = (type) => __async(void 0, null, function* () { if (!recipes_to_reorder_default[type] || "recommended" === type) { return; } const recipesContainer = document.querySelector(`.inventoryPage-tagContent-tagGroup[data-tag="${type}"]`); if (!recipesContainer) { return; } const recipesModifying = []; const knownRecipes = document.querySelectorAll(".inventoryPage-tagContent-tagGroup.active .inventoryPage-item.recipe.known"); knownRecipes.forEach((recipe) => { const recipeId = recipe.getAttribute("data-item-type"); recipesModifying.push(recipeId); }); if (recipesModifying.length === 0) { return; } const itemTypes = recipesModifying.map((recipe) => { return recipes_to_reorder_default[type][recipe]; }).filter(Boolean); if (type === "crafting_item") { itemTypes.push("geyser_draconic_weapon"); } const ownedItems = yield getUserItems(itemTypes); ownedItems.forEach((item) => { if (!item.quantity || item.quantity < 1) { return; } if ("geyser_draconic_weapon" === item.type) { moveRecipe("draconic_geyser_chassis_crafting_item", recipesContainer); moveRecipe("draconic_geyser_chassis_i_crafting_item", recipesContainer); } else { moveRecipe(item.type, recipesContainer); } }); }); recipes_default2 = () => __async(void 0, null, function* () { addStyles(recipes_default, "better-inventory-recipes"); onNavigation(cleanUpRecipeBook, { page: "inventory", tab: "crafting", subtab: "recipe" }); onNavigation(modifySmashableTooltip, { page: "inventory", tab: "crafting", subtab: "hammer" }); onEvent("js_dialog_show", warnOnBadCrafts); modifySmashableTooltip(); }); } }); // src/modules/better-inventory/settings/index.js var settings_default3; var init_settings4 = __esm({ "src/modules/better-inventory/settings/index.js"() { settings_default3 = () => __async(void 0, null, function* () { return [ { id: "better-inventory.one-item-per-row", title: "Show one item per row", default: true, description: "" }, { id: "better-inventory.larger-images", title: "Show larger images", default: true, description: "" } ]; }); } }); // src/modules/better-inventory/styles/double-width-item.css var double_width_item_default; var init_double_width_item = __esm({ "src/modules/better-inventory/styles/double-width-item.css"() { double_width_item_default = ".mousehuntHud-page-tabContent.special div[data-tag=adventuring] .inventoryPage-tagContent-listing,.mousehuntHud-page-tabContent.special div[data-tag=convertibles] .inventoryPage-tagContent-listing,.mousehuntHud-page-tabContent.special div[data-tag=spring_hunt] .inventoryPage-tagContent-listing,.mousehuntHud-page-tabContent.special div[data-tag=treasure_chests] .inventoryPage-tagContent-listing{display:grid;grid-template-columns:1fr 1fr;gap:5px;place-items:stretch}.mousehuntHud-page-tabContent.special .inventoryPage-item.full,.mousehuntHud-page-tabContent.special .inventoryPage-item.full:nth-child(odd){display:block;width:282px;margin-right:0;margin-left:0}.mousehuntHud-page-tabContent.special div[data-tag=treasure_chests] .inventoryPage-item-margin.clear-block{height:100%}\n"; } }); // src/modules/better-inventory/styles/full-width-item.css var full_width_item_default; var init_full_width_item = __esm({ "src/modules/better-inventory/styles/full-width-item.css"() { full_width_item_default = ".inventoryPage-item.full{width:100%}.inventoryPage-item-content-action span{display:block;margin-bottom:5px}.mousehuntPage-content .inventoryPage-item-button:nth-child(2){margin-left:0!important}.inventoryPage-item-content-action>span{display:inline-block}.inventoryPage-item.base .itemViewStatBlock.horizontal.base,.inventoryPage-item.weapon .itemViewStatBlock.horizontal.weapon{float:right;width:54%}.inventoryPage-item.base .inventoryPage-item-content-description-text,.inventoryPage-item.weapon .inventoryPage-item-content-description-text{width:45%;height:unset;max-height:115px;overflow-y:auto}\n"; } }); // src/modules/better-inventory/styles/larger-images.css var larger_images_default; var init_larger_images = __esm({ "src/modules/better-inventory/styles/larger-images.css"() { larger_images_default = ".inventoryPage-item.small{width:19%;height:125px;margin-bottom:10px}.inventoryPage-item.small .itemImage,.inventoryPage-item.small .itemImage img{width:80px;height:80px}\n"; } }); // src/modules/better-inventory/styles/styles.css var styles_default2; var init_styles3 = __esm({ "src/modules/better-inventory/styles/styles.css"() { styles_default2 = '.inventoryPage-item.component .inventoryPage-item-imageContainer .itemImage{margin:0 auto;border:none;border-radius:0}.inventoryPage-item-content-action{margin-top:10px 0}.inventoryPage-item-content-description{height:auto}.inventoryPage-item.torn_page .inventoryPage-item-name,.inventoryPage-item.stat .inventoryPage-item-name,.inventoryPage-item.collectible .inventoryPage-item-name,.inventoryPage-item.message_item .inventoryPage-item-name{margin-left:10px}.inventoryPage-item.torn_page .inventoryPage-item-imageContainer,.inventoryPage-item.stat .inventoryPage-item-imageContainer,.inventoryPage-item.collectible .inventoryPage-item-imageContainer,.inventoryPage-item.message_item .inventoryPage-item-imageContainer{margin-top:0}.inventoryPage-item-name{padding:10px;font-size:1.3em;background-color:transparent;border:none}.inventoryPage-item-name abbr{text-decoration:none}.mousehuntHud-page-subTabContent.trinket.show_tags.trinket.active .mousehuntHud-page-subTabContent-prefix:first-child{display:none}.inventoryPage-tagContent-tagTitle{display:flex;align-items:center;padding:0 5px 10px;margin:0;font-size:1.4em;border:none}.mousehuntHud-page-subTabContent.hammer .inventoryPage-tagContent-tagGroup{padding:8px 0 8px 8px}.mousehuntHud-page-subTabContent.hammer .inventoryPage-tagContent-tagGroup:nth-child(2n){background-color:#f6f6f6}.mousehuntHud-page-subTabContent.hammer .inventoryPage-tagContent-tagTitle{padding:0 0 10px;font-size:14px;font-weight:400}.mousehuntHud-page-subTabContent.hammer .inventoryPage-tagContent-listing{display:flex;flex-wrap:wrap;place-content:center flex-start;align-items:stretch}.mousehuntHud-page-subTabContent.hammer .mousehuntHud-page-subTabContent.hammer .inventoryPage-item{width:68px;margin:0 3px 0 0;background-color:#fff;border-radius:10px}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:nth-child(7n){margin-right:0}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item{height:auto;padding-bottom:0;margin-bottom:0;font-size:9px}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .inventoryPage-item-margin{background-color:#e3e3e3;border-color:#c9c9c9}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item .tooltip,.mousehuntHud-page-subTabContent.hammer .inventoryPage-item .newTooltip{display:none}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .newTooltip{left:50%;display:flex;gap:10px;align-items:center;justify-content:center;width:auto;min-width:100px;padding:0;border:none;transform:translate(-50%)}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .newTooltip .inventoryPage-item-margin{display:flex;flex-direction:column;align-items:center;background-color:transparent;border:none;box-shadow:none}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .tooltip .inventoryPage-item-margin{text-align:center;background-color:transparent;outline:none}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item.small .tooltip.newTooltip .itemImage{float:none;width:60px;height:60px;overflow:visible}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item.small .tooltip.newTooltip .itemImage img{width:55px;height:55px}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .newTooltip .inventoryPage-item-content-nameContainer,.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .newTooltip .inventoryPage-item-content-name{height:auto}.mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .newTooltip .inventoryPage-item-content-name span{min-width:60px}a.inventoryPage-item-larryLexicon{display:none}.inventoryPage-item-content-description-text{max-height:125px;padding:0;font-size:10px;line-height:16px;color:#6e6e6e}.inventoryPage-item.base .inventoryPage-item-content-description-text,.inventoryPage-item.weapon .inventoryPage-item-content-description-text,.inventoryPage-item.trinket .inventoryPage-item-content-description-text{height:auto}.inventoryPage-item.full.weapon .quantity,.inventoryPage-item.full.base .quantity{display:none}.inventoryPage-item .itemImage{margin-bottom:10px;overflow:visible}.inventoryPage-item-recipeOptions li{margin-left:5px;background-color:#fffcdb;border-style:solid}.inventoryPage-item.small .itemImage .quantity{right:10px;overflow:visible}.mousehuntHud-page-subTabContent.recipe .inventoryPage-item .itemImage{display:flex;align-items:center;justify-content:center;height:55px}.mousehuntHud-page-subTabContent.recipe .inventoryPage-item .itemImage img{width:50px;height:50px}.inventoryPage-item-content-description-consumedItem.error{gap:2px;background-color:#f5ddddd1;border-radius:7px}input.inventoryPage-tagDirectory-searchBar-input{width:auto;min-width:50%;margin-right:10px}.mousehuntHud-page-subTabContent-prefix.clear-block{height:25px;margin-top:-20px;color:transparent}.inventoryPage-tagDirectory-searchBar{display:flex;align-items:center;justify-content:space-evenly;padding-right:0;color:transparent}.inventoryPage-item.torn_page .quantity{display:none}.inventoryPage-item.torn_page .itemImage img{width:50px;min-width:unset;height:50px;min-height:unset}.inventoryPage-item.full.torn_page{width:32%;margin:5px}.inventoryPage-item.torn_page .inventoryPage-item-name{padding-right:0;font-size:1em}.inventoryPage-item.torn_page .itemImage{width:40px;height:40px;margin-top:-5px}.inventoryPage-item.torn_page .inventoryPage-item-contentContainer{margin:0}.inventoryPage-item.torn_page .inventoryPage-item-content-action div{display:flex;justify-content:space-around;margin-right:15px}.inventoryPage-item.torn_page .inventoryPage-item-content-description{display:none}.inventoryPage-item.torn_page input.viewFront,.inventoryPage-item.torn_page input.viewBack{display:inline-block;padding:2px 4px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}.inventoryPage-craftingTable-title{display:none}.mousehuntHud-page-subTabContent.crafting_table .inventoryPage-craftingTable{width:20%;background:#f6f3eb;border:1px solid #d3cecb;border-radius:3px;box-shadow:inset -1px 1px 3px #d3cecb}.mousehuntHud-page-subTabContent.crafting_table .inventoryPage-item.small .itemImage img{width:70px;height:70px}.mousehuntHud-page-subTabContent.crafting_table .mousehuntHud-page-subTabContent-margin{width:78%}.inventoryPage-craftingTable-slot-item.itemImage{margin-bottom:10px}.inventoryPage-craftingTable-slot-item-controls{display:flex;align-items:center;justify-content:center;height:17px;margin:0;background:transparent;border:1px solid #ccc}.inventoryPage-craftingTable-slot-item-controls input{height:24px;margin-top:-1px}.inventoryPage-craftingTable-action{margin:10px;background:none;border:none}.inventoryPage-craftingTable-slot-item[data-owned="1"] .inventoryPage-craftingTable-slot-item-controls-increment{opacity:.2}.inventoryPage-craftingTable-slot{width:120px;padding:5px;margin:5px;background:#f6f3eb;border:1px solid #d3cecb;border-radius:3px;box-shadow:inset -1px 1px 3px #d3cecb}.inventoryPage-craftingTable-slotContainer{display:flex;flex-direction:column;align-content:center;justify-items:center;background-color:#f6f3eb}.inventoryPage-craftingTable-slot-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.inventoryPage-craftingTable-slot-item.empty .inventoryPage-craftingTable-slot-item-controls,.inventoryPage-craftingTable-slot-item.empty .inventoryPage-craftingTable-slot-item-nameContainer{display:none}.inventoryPage-craftingTable-slot-item.empty .inventoryPage-craftingTable-slot-item-name{color:transparent}.inventoryPage-craftingTable-slot-item-quantity{display:none}.inventoryPage-craftingTable-slot-item-name{font-size:11px;font-weight:100}.inventoryPage-craftingTable-slot-item-nameContainer{width:100%;height:auto;margin:5px}.inventoryPage-craftingTable-slot-item img,.inventoryPage-craftingTable-slot-item .itemImage,.inventoryPage-craftingTable-slot-item .itemImage img{width:35px;height:35px}a.inventoryPage-item-larryLexicon.tsitu-lock-convertible{top:5px;right:5px!important;display:flex;align-items:center;justify-content:center;width:17px;height:17px!important;padding:2px;font-size:13px;border:1px solid #bebebe;border-radius:50%;opacity:.5}a.inventoryPage-item-larryLexicon.tsitu-lock-convertible:hover{opacity:1}.inventoryPage-tagContent-tagTitle.tsitu-lock-convertible{position:absolute;top:-10px;right:0}.inventoryPage-item.small.message_item .inventoryPage-item-content-name:after{position:absolute;top:5px;right:2px;width:10px;height:10px;content:"";background-color:#8bf4ed;border-radius:50%}.mhui-craft-warning-tooltip{position:absolute;top:0;left:0;width:auto;padding:10px;font-size:10px;font-weight:900;background:#f5c7c7;border:1px solid #e07878;border-radius:5px;animation:.4s mh-improved-shake-light .7s 1}@media (prefers-reduced-motion: reduce){.mhui-craft-warning-tooltip{animation:none}}#jsDialogAjaxSuffix{position:relative}.inventoryPage-item .itemImage .limitedEdition{top:-1px;left:-5px;z-index:1}#overlayPopup.itemViewPopup .itemViewContainer.message_item .button{margin:10px 0 0}.inventoryPage-item.base .inventoryPage-item-content-description-text,.inventoryPage-item.weapon .inventoryPage-item-content-description-text{max-height:115px;overflow:visible}.inventoryPage-confirmPopup-itemTable{display:flex;flex-direction:column}.inventoryPage-confirmPopup-itemRow-description-name{margin-bottom:5px}.inventoryPage-confirmPopup-itemRow-description-owned{margin-bottom:5px;font-size:12px}.inventoryPage-confirmPopup-itemRow-quantity{font-family:lucida grande,tahoma,verdana,arial,sans-serif}.inventoryPage-item-content-action>span{display:none}.inventoryPage-item .item_set:after{position:absolute;top:8px;right:3px;display:block;width:28px;height:28px;content:"";background-image:url(https://www.mousehuntgame.com/images/items/stats/large/cb301652677b77c9abd3a99622aa3ca7.png);background-repeat:no-repeat;background-size:contain;opacity:.2}.inventoryPage-item:hover .item_set:after{opacity:1}.mh-dark-mode .pageFrameView .itemViewStatBlock{border:none}.mh-dark-mode .inventoryPage-item .item_set:before{color:#2c2c2c}.inventoryPage-item:hover .item_set:before{color:#2c2c2c}.inventoryPage-item.trinket .inventoryPage-item-content-description{min-height:120px}.inventoryPage-item.trinket .itemViewStatBlock.trinket{float:right;width:90px;margin:0 5px}.inventoryPage-item-content-description-text div[style="border: 1px red dotted; padding: 5px; font-size: 10px;"],.inventoryPage-item-content-description-text b[style="color:red; font-size: 14px;"],.inventoryPage-item[data-item-type=rainbow_scroll_case_convertible] .inventoryPage-item-content-description-text br,.inventoryPage-item[data-item-type=party_size_rainbow_scroll_case_convertible] .inventoryPage-item-content-description-text br{display:none}.inventoryPage-item-content-action span{margin-right:5px}.inventoryPage-item.small .inventoryPage-item-margin{margin-bottom:10px;box-shadow:0 4px 10px -8px #000}.mousehuntHud-page-subTabContent.trinket .mousehuntHud-page-subTabContent-prefix{display:none}.new-tooltip-loading:after{position:absolute;inset:0 0 10px;content:"";background:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif?asset_cache_version=2) center no-repeat,url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png?asset_cache_version=2) 0 0 repeat;border-radius:10px}.inventoryPage-item.small .tooltip{padding:10px}.inventoryPage-item-content-description-consumedItemContainer{margin-top:0}.crafting .recipe .inventoryPage-item-margin{padding-bottom:0}.crafting .recipe .inventoryPage-item .mousehuntActionButton{padding:2px;margin-top:-5px!important}.crafting .recipe .inventoryPage-item-name{margin-bottom:0}.mousehuntHud-page-subTabContent.crafting_table .inventoryPage-item .inventoryPage-item-margin{padding:0;margin:0}.inventoryPage-item-recipeOptions li.inactive{background:#ededed;opacity:.5}.inventoryPage-item-recipeOptions li.inactive:hover{opacity:1}.inventoryPage-item-recipeOptions li.selected{border-color:#fc6}.inventoryPage-item-recipeOptions li:hover,.inventoryPage-item-recipeOptions li.inactive:hover{border-color:#bbb}.inventoryPage-item.potion .inventoryPage-item-button{margin:5px 0 0 5px}\n'; } }); // src/modules/better-inventory/index.js var setOpenQuantityOnClick, addOpenAllToConvertible, addItemViewPopupToCollectibles, addArmButtonToCharms, main, init2, better_inventory_default; var init_better_inventory = __esm({ "src/modules/better-inventory/index.js"() { init_utils2(); init_recipes2(); init_settings4(); init_double_width_item(); init_full_width_item(); init_larger_images(); init_styles3(); setOpenQuantityOnClick = (attempts = 0) => { const qty = document.querySelector(".itemView-action-convertForm"); if (!qty) { if (attempts > 10) { return; } setTimeout(() => { setOpenQuantityOnClick(attempts + 1); }, 200); return; } qty.addEventListener("click", (e) => { if (e.target.tagName === "DIV") { const textQty = e.target.innerText; const qtyArray = textQty.split(" "); let maxNum = qtyArray.at(-1); maxNum = maxNum.replace("Submit", ""); maxNum = Number.parseInt(maxNum); const input = document.querySelector(".itemView-action-convert-quantity"); input.value = maxNum; } }); }; addOpenAllToConvertible = () => { const form = document.querySelector(".convertible .itemView-action-convertForm"); if (!form) { return; } if (form.getAttribute("data-open-all-added")) { return; } form.setAttribute("data-open-all-added", true); const formHTML = form.innerHTML; const formHTMLArray = formHTML.split(" /"); if (!formHTMLArray[1]) { return; } const formHTMLArray2 = formHTMLArray[1].split("<a"); if (!formHTMLArray2[1]) { return; } const quantity = formHTMLArray2[0].trim(); const newFormHTML = `${formHTMLArray[0]}/ <span class="open-all">${quantity}</span><a${formHTMLArray2[1]}`; form.innerHTML = newFormHTML; const openAll = document.querySelector(".open-all"); openAll.addEventListener("click", () => { const input = form.querySelector(".itemView-action-convert-quantity"); if (!input) { return; } input.value = quantity; }); }; addItemViewPopupToCollectibles = () => { const collectibles = document.querySelectorAll(".mousehuntHud-page-subTabContent.collectible .inventoryPage-item.small"); if (!collectibles.length) { return; } collectibles.forEach((collectible) => { const type = collectible.getAttribute("data-item-type"); if (!type) { return; } if ("message_item" === collectible.getAttribute("data-item-classification")) { return; } collectible.setAttribute("onclick", ""); collectible.addEventListener("click", (e) => { e.preventDefault(); hg.views.ItemView.show(type); }); }); }; addArmButtonToCharms = () => { if ("inventory" !== getCurrentPage() || "traps" !== getCurrentTab() || "trinket" !== getCurrentSubtab()) { return; } const charms = document.querySelectorAll(".inventoryPage-item.trinket"); if (!charms.length) { return; } charms.forEach((charm) => { const existingArmButton = charm.querySelector(".inventoryPage-item-imageContainer-action"); if (existingArmButton) { return; } const actionContainer = charm.querySelector(".inventoryPage-item-imageContainer"); if (!actionContainer) { return; } const armButton = makeElement("div", "inventoryPage-item-imageContainer-action"); armButton.setAttribute("onclick", "app.pages.InventoryPage.armItem(this); return false;"); actionContainer.append(armButton); }); }; main = () => { onOverlayChange({ item: { show: setOpenQuantityOnClick } }); if ("item" === getCurrentPage()) { setOpenQuantityOnClick(); } addOpenAllToConvertible(); addItemViewPopupToCollectibles(); addArmButtonToCharms(); onNavigation(() => { addOpenAllToConvertible(); addItemViewPopupToCollectibles(); addArmButtonToCharms(); }, { page: "inventory" }); onEvent("js_dialog_show", addOpenAllToConvertible); recipes_default2(); }; init2 = () => __async(void 0, null, function* () { addStyles([ styles_default2, getSetting("better-inventory.one-item-per-row", true) ? full_width_item_default : double_width_item_default, getSetting("better-inventory.larger-images", true) ? larger_images_default : "" ], "better-inventory"); main(); }); better_inventory_default = { id: "better-inventory", name: "Better Inventory", type: "better", default: true, description: "Updates the inventory layout and styling.", load: init2, settings: settings_default3 }; } }); // src/modules/better-kings-reward/styles.css var styles_default3; var init_styles4 = __esm({ "src/modules/better-kings-reward/styles.css"() { styles_default3 = ".puzzleView__imageContainer{background-color:transparent;border-color:#73332a;border-width:1px}.puzzleView__image img{filter:hue-rotate(333deg);transform:scale(1.3) translate(-10px,5px);transform-origin:left}.puzzleView__requestNewPuzzleButton{background-color:#a35721;opacity:.3;transition:opacity .2s ease-in-out}.puzzleView__requestNewPuzzleButton:hover,.puzzleView__requestNewPuzzleButton:focus{border-color:transparent;opacity:1}.puzzleView__requestNewPuzzleButtonIcon{filter:invert(1);opacity:.8}input.puzzleView__code{font-size:28px;letter-spacing:8px}\n"; } }); // src/modules/better-kings-reward/index.js var honk, continueOnKingsReward, initiateKingsReward, startKingsReward, init3, better_kings_reward_default; var init_better_kings_reward = __esm({ "src/modules/better-kings-reward/index.js"() { init_utils2(); init_styles4(); honk = () => __async(void 0, null, function* () { const horn = document.querySelector(".huntersHornView__horn--ready"); if (!horn) { return; } horn.dispatchEvent(new MouseEvent("mousedown", { bubbles: true })); yield new Promise((resolve) => setTimeout(resolve, 250)); horn.dispatchEvent(new MouseEvent("mouseup", { bubbles: true })); }); continueOnKingsReward = (req) => { if (req.success && req.puzzle_reward) { const resume = document.querySelector(".puzzleView__resumeButton"); if (resume) { resume.click(); setTimeout(honk, 250); } } }; initiateKingsReward = () => { const reward = document.querySelector(".huntersHornMessageView huntersHornMessageView--puzzle .huntersHornMessageView__action"); if (reward) { reward.click(); } }; startKingsReward = () => { const rewardStart = document.querySelector(".huntersHornMessageView--puzzle .huntersHornMessageView__action"); if (rewardStart) { rewardStart.click(); } setTimeout(() => { const puzzle = document.querySelector(".puzzleView__code"); if (puzzle) { puzzle.focus(); } }, 500); }; init3 = () => __async(void 0, null, function* () { addStyles(styles_default3, "better-kings-reward"); onRequest("turns/activeturn.php", initiateKingsReward, true); onRequest("users/puzzle.php", continueOnKingsReward, true); onRequest("*", startKingsReward); startKingsReward(); }); better_kings_reward_default = { id: "better-kings-reward", name: "Better King's Reward", type: "better", default: true, description: "Updates the style of the King's Reward slightly, automatically closes the success message", load: init3 }; } }); // src/modules/better-journal/journal-gold-and-points/styles.css var styles_default4; var init_styles5 = __esm({ "src/modules/better-journal/journal-gold-and-points/styles.css"() { styles_default4 = '.mh-ui-gold,.mh-ui-points{position:relative;margin-left:20px}.mh-ui-gold:after,.mh-ui-points:after{position:absolute;inset:-4px 0 0 -20px;width:18px;height:18px;content:"";background-image:url(https://www.mousehuntgame.com/images/items/stats/transparent_thumb/dccbaeebbdfa745340ff9363749f35ba.png);background-position:center;background-size:contain}.mh-ui-points:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/transparent_thumb/eeebc1c32b4242b95f75041be7275980.png)}\n'; } }); // src/modules/better-journal/journal-gold-and-points/index.js var wrapGoldAndPoints, journal_gold_and_points_default; var init_journal_gold_and_points = __esm({ "src/modules/better-journal/journal-gold-and-points/index.js"() { init_utils2(); init_styles5(); wrapGoldAndPoints = (entry) => { if (entry.getAttribute("data-modified-points-gold")) { return; } entry.setAttribute("data-modified-points-gold", true); if (entry.querySelector(".mh-ui-points") || entry.querySelector(".mh-ui-gold")) { return; } const points = entry.innerHTML.match(/worth (.+?) points/i); const gold = entry.innerHTML.match(/points and (.+?) gold/i); if (points) { entry.innerHTML = entry.innerHTML.replace(points[0], `worth <span class="mh-ui-points">${points[1]}</span> points`); } if (gold) { entry.innerHTML = entry.innerHTML.replace(gold[0], `points and <span class="mh-ui-gold">${gold[1]}</span> gold`); } }; journal_gold_and_points_default = () => __async(void 0, null, function* () { addStyles(styles_default4, "better-journal-gold-and-points"); addEvent("journal-entry", wrapGoldAndPoints, { weight: 2e3, id: "better-journal-gold-and-points" }); }); } }); // src/modules/better-journal/journal-history/index.js var makeEntriesMarkup, doPageStuff, getAllEntries, lastDate, saveToDatabase, doJournalHistory, doJournalHistoryRequest, pager, journalEntries, miceThumbs, journal_history_default; var init_journal_history = __esm({ "src/modules/better-journal/journal-history/index.js"() { init_utils2(); makeEntriesMarkup = (entries) => { return entries.map((entry) => { if (entry.data) { entry = entry.data; } entry = { id: (entry == null ? void 0 : entry.id) || 0, date: (entry == null ? void 0 : entry.date) || "0:00", location: (entry == null ? void 0 : entry.location) || "", text: (entry == null ? void 0 : entry.text) || "", type: (entry == null ? void 0 : entry.type) || [] }; if ((entry.type.includes("catchsuccess") || entry.type.includes("catchsuccessloot") || entry.type.includes("bonuscatchsuccess") || entry.type.includes("luckycatchsuccess") || entry.type.includes("bonuscatchsuccess")) && !entry.mouse) { const mouseLink = entry.text.match(/hg\.views\.MouseView\.show\('([^']+)'\)/); if (mouseLink && mouseLink[1]) { entry.mouse = mouseLink[1]; } } let html = `<div class="${entry.type.join(" ")}" data-entry-id="${entry.id}" data-mouse-type="${entry.mouse || ""}">`; if (entry.mouse) { const mouseImages = miceThumbs.find((mouse) => mouse.type === entry.mouse); if (mouseImages) { html += `<div class="journalimage"><a onclick="hg.views.MouseView.show('${entry.mouse}'); return false;"><img src="${mouseImages.thumb}" border="0"></a></div>`; } } html += `<div class="journalbody"><div class="journalactions"></a></div><div class="journaldate">${entry.date} - ${entry.location}</div><div class="journaltext">${entry.text}</div></div></div></div>`; return html; }).join(""); }; doPageStuff = (page, event = null) => { if (page <= 6 || page > totalPages) { return; } if (event) { event.preventDefault(); event.stopPropagation(); } const journalEntriesForPage = journalEntries.slice((page - 1) * 12, page * 12); const journalEntryContainer = document.querySelector("#journalContainer .journalEntries"); if (!journalEntriesForPage.length || !journalEntryContainer) { return; } journalEntryContainer.append(makeElement("div", "journal-history-entries", makeEntriesMarkup(journalEntriesForPage))); }; getAllEntries = () => __async(void 0, null, function* () { if (!journalEntries.length) { journalEntries = yield dbGetAll("journal"); } if (!journalEntries.length) { return []; } journalEntries.sort((a, b) => b.id - a.id); return journalEntries; }); lastDate = ""; saveToDatabase = (entry) => __async(void 0, null, function* () { var _a; const entryId = Number.parseInt(entry.getAttribute("data-entry-id"), 10); if (!entryId) { return; } const entryText = entry.querySelector(".journalbody .journaltext"); if (!entryText) { return; } const original = yield dbGet("journal", entryId); if (original && ((_a = original.data) == null ? void 0 : _a.text)) { return; } const dateEl = entry.querySelector(".journaldate"); let date = dateEl ? dateEl.innerText : lastDate; lastDate = date; date = date.split("-"); const entryImage = entry.querySelector(".journalimage"); const journalData = { id: entryId, date: date[0] ? date[0].trim() : "0:00", location: date[1] ? date[1].trim() : "Unknown", text: entryText.innerHTML, type: [...entry.classList], mouse: entry.getAttribute("data-mouse-type") || null, image: entryImage ? entryImage.innerHTML : null }; yield dbSet("journal", journalData); }); doJournalHistory = () => __async(void 0, null, function* () { if (!pager) { const journalPageLink = document.querySelector(".pagerView-nextPageLink.pagerView-link"); if (!journalPageLink) { return; } pager = hg.views.JournalView.getPager(journalPageLink); } journalEntries = journalEntries.length ? journalEntries : yield getAllEntries(); totalPages = Math.ceil(journalEntries.length / 12); pager.setTotalItems(journalEntries.length); pager.enable(); pager.render(); }); doJournalHistoryRequest = () => { doJournalHistory(); if (pager.getCurrentPage() > 6) { doPageStuff(pager.getCurrentPage()); } }; journalEntries = []; miceThumbs = []; journal_history_default = (enabled) => __async(void 0, null, function* () { miceThumbs = yield getData("mice-thumbnails"); if (enabled) { doJournalHistory(); onRequest("pages/journal.php", doJournalHistoryRequest); } addEvent("journal-entry", saveToDatabase, { weight: 1, id: "better-journal-history" }); }); } }); // src/modules/better-journal/journal-icons-minimal/styles.css var styles_default5; var init_styles6 = __esm({ "src/modules/better-journal/journal-icons-minimal/styles.css"() { styles_default5 = '.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brie_cheese"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]{position:relative;padding-left:20px;white-space:nowrap}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brie_cheese"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]:before{position:absolute;top:-3px;left:-2px;display:inline-block;width:19px;height:19px;content:"";background-repeat:no-repeat;background-size:contain}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brie_cheese"]:before{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/32b20c3984d2f03b132c295ea3b99e7e.png?cv=2)}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"]:before{top:-4px;left:-3px;background-image:url(https://i.mouse.rip/upscaled/7d9f0e220db8280b84b8bffe39cd803e.png);background-size:22px}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"]{padding-left:20px}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"]:before{left:-4px;background-image:url(https://i.mouse.rip/upscaled/8331fe131377c15fcf5c4773bde1fd8f.png)}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"]:before{top:-2px;background-image:url(https://www.mousehuntgame.com/images/items/trinkets/large/36d3d62f27e2b76944591f86229bc2f0.png?cv=2)}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"],.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]{padding-left:17px}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]:before{left:-3px;background-image:url(https://www.mousehuntgame.com/images/items/stats/large/5da5d920ba95f944d4e5b37ae235685e.png?cv=2)}.journal .entry.unstable_charm_trigger a[href*="https://www.mousehuntgame.com/item.php?item_type="]:before{display:none}.journal .entry.unstable_charm_trigger .journaltext a{padding-left:unset}\n'; } }); // src/modules/better-journal/journal-icons/styles.css var styles_default6; var init_styles7 = __esm({ "src/modules/better-journal/journal-icons/styles.css"() { styles_default6 = '.entry.short.misc.custom.refine_pollutinum .journaltext a:before{display:none}.entry.short.misc.custom.refine_pollutinum .journaltext a{padding:0}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]:before{left:1px}.spring_hunt_charge_trinket_effect .journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chocolatium_stat_item"]:before,.spring_hunt_relic_hunter_egg_drop .journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=relic_hunter_egg_convertible"]:before{display:none}.spring_hunt_charge_trinket_effect .journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chocolatium_stat_item"],.spring_hunt_relic_hunter_egg_drop .journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=relic_hunter_egg_convertible"]{padding-left:unset}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=storm_egg_convertible"]:before,.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=prize_credit_stat_item"]:before{left:0}.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"]{padding-left:22px}\n'; } }); // src/modules/better-journal/journal-icons/index.js var journal_icons_default; var init_journal_icons = __esm({ "src/modules/better-journal/journal-icons/index.js"() { init_utils2(); init_styles6(); init_styles7(); journal_icons_default = () => __async(void 0, null, function* () { const existing = document.querySelector("#better-journal-icons"); if (existing) { return; } const style = document.createElement("link"); style.id = "better-journal-icons"; style.rel = "stylesheet"; style.href = `https://api.mouse.rip/journal-icons.css?v=${mhImprovedVersion}`; document.head.append(style); addStyles([styles_default6, styles_default5], "better-journal-icons"); }); } }); // src/modules/better-journal/journal-icons-minimal/index.js var journal_icons_minimal_default; var init_journal_icons_minimal = __esm({ "src/modules/better-journal/journal-icons-minimal/index.js"() { init_utils2(); init_styles6(); journal_icons_minimal_default = () => __async(void 0, null, function* () { addStyles(styles_default5, "better-journal-icons-minimal"); }); } }); // src/modules/better-journal/journal-item-colors/colors.json var colors_default; var init_colors = __esm({ "src/modules/better-journal/journal-item-colors/colors.json"() { colors_default = [ { item: "scavenger_hunt_hint_stat_item", color: "#1e831e" }, { item: "map_clue_stat_item", color: "#1e831e" }, { item: "fulminas_gift_convertible", color: "#a012a0" }, { item: "chrome_trinket", color: "#8b9ec8" }, { item: "snowball_trinket", color: "#1f719e" } ]; } }); // src/modules/better-journal/journal-item-colors/index.js var makeStyles, journal_item_colors_default; var init_journal_item_colors = __esm({ "src/modules/better-journal/journal-item-colors/index.js"() { init_utils2(); init_colors(); makeStyles = () => { let styles7 = ""; colors_default.forEach((color) => { styles7 += `.journal .entry a[href="https://www.mousehuntgame.com/item.php?item_type=${color.item}"] { color: ${color.color}; }`; }); return styles7; }; journal_item_colors_default = () => __async(void 0, null, function* () { addStyles(makeStyles(), "better-journal-link-colors"); }); } }); // src/modules/better-journal/journal-list/styles.css var styles_default7; var init_styles8 = __esm({ "src/modules/better-journal/journal-list/styles.css"() { styles_default7 = 'ul.better-journal-list{margin-left:15px;list-style:disc}.better-journal-list a:after{content:""!important}.journal .content .entry .journaltext .better-journal-list{line-height:16px}.journal .content .entry.bountifulBeanstalk-defeatedGiant .journaltext ul{margin-top:-15px;line-height:21px;list-style:disc}.journal .content .entry.bountifulBeanstalk-defeatedGiant .journaltext li{margin-left:20px}\n'; } }); // src/modules/better-journal/journal-list/index.js var makeListItems, splitText, getItemsFromText, formatAsList, journal_list_default; var init_journal_list = __esm({ "src/modules/better-journal/journal-list/index.js"() { init_utils2(); init_styles8(); makeListItems = (itemList) => { const list = makeElement("ul", "better-journal-list"); if (0 === itemList.length) { return list; } itemList.forEach((item) => { makeElement("li", "better-journal-list-item", item, list); }); return list; }; splitText = (text) => { const items2 = text.split(/, (?=\d)| and (?=\d)/); return items2.map((item) => item.trim()).filter(Boolean); }; getItemsFromText = (type, text) => { let items2; if ("loot" === type) { items2 = text.innerHTML.split(" that dropped "); if (items2.length < 2) { return { list: [], newText: text.innerHTML }; } return { items: items2, list: splitText(items2[1]), newText: `${items2[0]} that dropped:` }; } if ("convertible" === type) { items2 = text.innerHTML.split("I received "); if (items2.length < 2) { return { list: [], newText: text.innerHTML }; } const suffix = items2[1].split(" from "); if (suffix.length < 2) { return { list: splitText(items2[1]), newText: "I received: " }; } let suffixString = suffix[1]; if (suffixString.endsWith(".")) { suffixString = suffixString.slice(0, -1); } return { list: splitText(suffix[0]), newText: `I opened ${suffixString} and received:` }; } if (text.innerHTML.includes("the following loot</b>")) { items2 = text.innerHTML.split("the following loot</b>"); return { list: splitText(items2[1]), newText: `${items2[0]} the following loot</b>: ` }; } if (text.innerHTML.includes("Inside my chest was")) { items2 = text.innerHTML.split("Inside my chest was"); return { list: splitText(items2[1]), newText: `${items2[0]} Inside my chest was: ` }; } }; formatAsList = (entry) => __async(void 0, null, function* () { const processed = entry.getAttribute("data-better-journal-processed"); if (processed) { return; } const lootClassesToCheck = [ "bonuscatchsuccess", "catchsuccess", "catchsuccessloot", "luckycatchsuccess", "catchsuccessprize" ]; const convertibleClassesToCheck = [ "convertible_open" ]; const otherClassesToCheck = [ "iceberg_defeated", "dailyreward" ]; const classes = new Set(entry.classList); let type; if (lootClassesToCheck.some((c) => classes.has(c))) { type = "loot"; } else if (convertibleClassesToCheck.some((c) => classes.has(c))) { type = "convertible"; } else if (otherClassesToCheck.some((c) => classes.has(c))) { type = "other"; } else { return; } entry.setAttribute("data-better-journal-processed", "true"); const text = entry.querySelector(".journalbody .journaltext"); const { newText, list } = getItemsFromText(type, text); text.innerHTML = newText; text.append(makeListItems(list)); }); journal_list_default = () => __async(void 0, null, function* () { addStyles(styles_default7, "better-journal-list"); addEvent("journal-entry", formatAsList, { weight: 3e3, id: "better-journal-list" }); }); } }); // src/modules/better-journal/journal-replacements/styles.css var styles_default8; var init_styles9 = __esm({ "src/modules/better-journal/journal-replacements/styles.css"() { styles_default8 = ".itemtransaction p.mhi-x-entry{display:inline}.itemtransaction p.mhi-x-entry .dot,.entry.short.relicHunter_catch br{display:none}\n"; } }); // src/modules/better-journal/journal-replacements/index.js var replacements, replaceInEntry, updateLog, updateMouseImageLinks, updateItemLinks, shouldSkip, processEntry, journal_replacements_default; var init_journal_replacements = __esm({ "src/modules/better-journal/journal-replacements/index.js"() { init_utils2(); init_styles9(); replacements = [ // Hunt entries ["I sounded the Hunter's Horn and was successful in the hunt!", ""], ["where I was successful in my hunt! I", "and"], ["I went on a hunt with", "I hunted with"], [/\d+? oz. /i, ""], [/\d+? lb. /i, ""], [/from (\d+?) x/i, "from $1"], [/purchased (\d+?) x/i, "purchased $1"], ["<br><b>The mouse also dropped the following loot:</b>", "==DROPREPLACE=="], [".<br>==DROPREPLACE==<br>", " that dropped "], ["<br>==DROPREPLACE==<br>", " that dropped "], ["I caught an", "I caught a"], ["I caught a", "<p>I caught a"], ["found that I had caught a mouse! I", ""], ["found that I had caught a mouse! <p>I", ""], ["I checked my trap and caught", "I checked my trap and found"], ["I returned to check my trap, but it appeared", "I checked my trap, but"], ["was successful in the hunt! I", ""], ["where I was successful in my hunt! I", "and"], ["my efforts were fruitless. A", "a"], ["got <font", "was <font"], ["trap.<br><br>Additionally, the fiend pillaged", "trap, and stealing"], ["gold from me!", "gold."], ["trap.<br><br>Additionally, the power of this mouse crippled my courage, setting me back", "trap and I lost"], // Map entries ["I successfully completed ", "Completing "], ["! Everyone who helped has been rewarded with", " gave me"], [" each!", ", I can "], ["claim my reward", "claim the reward."], ["now!", ""], [", ending the hunt!", "."], ["View Map Summary", ""], // Other ["I should hunt and catch a Relic Hunter or visit a Cartographer to obtain a new Treasure Map!", ""], ["hunt and catch a Relic Hunter or ", "I can "], ["Treasure Map!", "Treasure Map."], [", causing my trap to glimmer with a magnificent shine", ""], [", causing my trap to sparkle with a fiendish glow", ""], [", causing my trap to spark with lightning", ""], ["!The", "! The"], ["(Local Time)", ""], ["and your item(s) have been", ""], [":</b><br>", "</b> "], [/<a href="receipt.php.+?view receipt<\/a>/i, ""], ["me:<br>", "me "], [/i should tell my friends to check .+? during the next .+? to catch one!/i, ""], [/i can go to my .+? to open it/i, ""], ["Luckily she was not interested in my cheese or charms!", ""], ["while she was in my trap, but", "and"], [" while scampering off!", ""], ["The mouse stole", " The mouse stole"], ["Chest, I can", "Chest, "], ["<br>I should ", "I can "], ["<br>I can ", "I can "], [" I replaced my bait since it seemed to be stale.", ""], ["*POP* Your Unstable Charm pops off your trap and has", "My Unstable Charm"], ["You quickly add it to your inventory!", ""], ["I quickly added it to my inventory!", ""], [" burned out and left behind ", " turned into "], [" a elusive ", " a "], ["I moved forward a whopping", "I moved forward"], ["!I", "! I"], ["in search of more loot", ""], ["or I can return to the", "or return to the"], [" and begin a new expedition", ""], [" ate a piece of cheese without setting off my trap.", " stole my cheese."], ["slowly collapsed into itself with a powerful force, compressing mist in the air into an ", "compressed mist in the air into an "], ["Your S.U.P.E.R. Scum Scrubber scrubbed the mouse clean and found ", "My trap found an extra "], ["You scrubba-lubba-dub-dubbed your barrel and refined ", "I refined "], ["an additional 1 ", "an additional "], [">.", ">"], [", and ", " and "], ["!.,", "!"], ["My tower's ", "My "], ["Energy Cannon", "cannon"], ["before it could even touch my cheese!", ""], ["The mouse dropped the following prize", "that dropped"], ["My Unstable Charm turned into", "My Unstable Charm became"], ["\u2022 ", " "], ["My Condensed Creativity created additional loot:", "My Condensed Creativity created an additional "], ["The mouse stole an Ancient Relic and dropped a Relic Hunter Scroll Case", "The mouse stole an Ancient Relic and dropped a Relic Hunter Scroll Case!"], ["*BLING*", '<span class="decoration"></span>'], ["Aura helped me find", "Aura found"], ["processed added", "processed and added"], ["I have started a", "I started a"], // Event stuff // SEH [/was.+chocolatonium.+trap!/i, ""], // Halloween [/an additional:<br>/i, "an additional "], ["<br></p><p>", "<p>"], ["<br><p>", "<p>"], [/<p class="mhi-x-entry"><span class="dot"> • <\/span>/g, "", "!shop_purchase"], [/(\d+?) x /gi, '<p class="mhi-x-entry"><span class="dot"> \u2022 </span>$1 x ', "!shop_purchase"], [/<p><\/p>/g, ""], ["I can view other recipe", '<p class="double">I can view other recipe'], // SEH. ["A chocoholic", "I caught a bonus"], ["A chocolate-crazed", "I caught a bonus"], ["A voracious", "I caught a bonus"], ["A gluttonous", "I caught a bonus"], ["A hypoglycemic", "I caught a bonus"], ["A ravenous", "I caught a bonus"], ["A greedy", "I caught a bonus"], ["A hungry", "I caught a bonus"], ["A hyperactive", "I caught a bonus"], ["A sugar-induced", "I caught a bonus"], ["Eggstra Fondue extracted", "My Eggstra Fondue extracted"], ["Additionally my Eggstra Fondue also extracted", "And"], ["Here is the loot summary from my infiltration of", "I looted the following from"], ["Trove. and received", "Trove and received"], ["Lucky me, a prize mouse wandered by and fell for my trap!", "\u{1F389}\uFE0F A prize mouse fell into my trap!"], [/(\d+?,?\d*?) x /gi, " $1 ", "shop_purchase"], ["In a flash of light my", "My"] ]; replaceInEntry = (entry) => { if (entry.getAttribute("data-replaced")) { return; } const element = entry.querySelector(".journalbody .journaltext"); replacements.forEach((string) => __async(void 0, null, function* () { if (!Array.isArray(string)) { return; } if (string.length === 3) { if (string[2].includes("!") && entry.classList.contains(string[2])) { return; } if (!entry.classList.contains(string[2])) { return; } } const oldText = element.innerHTML; const newText = oldText.replace(string[0], string[1]); if (oldText !== newText) { element.innerHTML = newText; } })); entry.setAttribute("data-replaced", "true"); }; updateLog = (entry) => { if (!entry.classList.contains("log_summary")) { return; } const link = entry.querySelector("td a"); if (!link) { return; } link.classList.add("mh-ui-progress-log-link", "mousehuntActionButton", "tiny", "lightBlue"); const span = document.createElement("span"); span.innerText = "View Progress Log"; link.innerText = ""; link.append(span); }; updateMouseImageLinks = (entry) => { const mouseType = entry.getAttribute("data-mouse-type"); if (!mouseType) { return; } const hasUpdated = entry.getAttribute("data-mouse-image-updated"); if (hasUpdated) { return; } const mouseImageLink = entry.querySelector(".journalimage a[onclick]"); if (!mouseImageLink) { return; } mouseImageLink.setAttribute("onclick", `hg.views.MouseView.show('${mouseType}'); return false;`); entry.setAttribute("data-mouse-image-updated", "true"); }; updateItemLinks = (entry) => { if (!entry.classList.contains("iceberg_defeated")) { return; } const itemLinks = entry.querySelectorAll('.journaltext a[href*="item.php"]'); if (!itemLinks) { return; } itemLinks.forEach((link) => { const itemType = link.href.match(/item\.php\?item_type=(\w+)/); if (itemType && itemType.length === 2) { link.addEventListener("click", (e) => { e.preventDefault(); hg.views.ItemView.show(itemType[1]); }); } }); }; shouldSkip = (entry) => { const keepOriginalClasses = /* @__PURE__ */ new Set([ "lunar_lantern", "valentines_matchmaker", "vending_machine_purchase", "fullyExplored" ]); if (!entry.classList) { return true; } const classList = [...entry.classList]; return classList.some((c) => keepOriginalClasses.has(c)); }; processEntry = (entry) => __async(void 0, null, function* () { if (shouldSkip(entry)) { return; } replaceInEntry(entry); updateLog(entry); updateMouseImageLinks(entry); updateItemLinks(entry); }); journal_replacements_default = () => __async(void 0, null, function* () { addStyles(styles_default8, "better-journal-replacements"); addEvent("journal-entry", (entry) => { processEntry(entry); setTimeout(() => { processEntry(entry); }, 500); }, { weight: 1e3, id: "better-journal-replacements" }); }); } }); // src/modules/better-journal/journal-styles/styles/backgrounds.css var backgrounds_default; var init_backgrounds = __esm({ "src/modules/better-journal/journal-styles/styles/backgrounds.css"() { backgrounds_default = ".journal .content .entry{background-repeat:no-repeat}.journal .content .entry,.journal .content .entry.adventureBook-journal,.journal .content .entry.craft.newrecipe,.journal .content .entry.folkloreForest-bookClaimed,.journal .content .entry.aurora_base_trigger,.journal .content .entry.regulator_base_trigger,.journal .content .entry.short.misc.custom.denture_base_decay_trigger,.journal .content .entry.burroughs_rift.danger_zone,.journal .content .entry.burroughs_rift.regulator_base_trigger,.journal .content .entry.birthday_factory,.journal .content .entry.boiling_cauldron_potion_bonus.boon_potion_bonus,.journal .content .entry.desert_heater_base_trigger,.journal .content .iceberg_advance_prevented,.journal .content .entry.minigame_done,.journal .content .entry.minigame_start,.journal .content .entry.living_grove_base_trigger,.journal .content .entry.queso_geyser,.journal .content .entry.rift_valour.claim_loot,.journal .content .entry.slac_in_a_box_trigger.popped,.journal .content .entry.sunken_city.dive,.journal .content .entry.sunken_city.zone,.journal .content .train_station.load_supply_crates,.journal .content .train_station.minigame_done,.journal .content .train_station.minigame_start,.journal .content .train_station.phase_bridge_jump,.journal .content .train_station.prize_claimed,.journal .content .train_station.progress,.journal .content .train_station.raider_wave_defeated,.journal .content .train_station.stoke_furnace,.journal .content .train_station.train_done,.journal .content .train_station.train_leave,.journal .content .train_station.train_start,.journal .content .train_station.use_mouse_repellent,.journal .content .train_station.warehouse_manager_catch,.journal .content .train_station.warehouse_manager_done,.journal .content .train_station.phase_boarding,.journal .content .entry.winter_hunt_2013,.journal .content .entry.winter_hunt_2015,.journal .content .entry.winter_hunt_2016,.journal .content .entry.floatingIslands,.journal .content .entry.vegetation_base_trigger{background-position:10px center;background-size:50px}.journal .content .entry.minimalJournalImage,.journal .content .entry.labyrinthSmall.labyrinth-clue,.journal .content .entry.winterTaiga{background-position:10px center!important;background-size:50px!important}.journal .content .entry.bonuscatchfailure,.journal .content .entry.bonuscatchsuccess{background-position:left;background-size:cover}.journal .content .entry.minimalJournalImage{background-position:15px center!important;background-size:40px!important}\n"; } }); // src/modules/better-journal/journal-styles/styles/date-hiding.css var date_hiding_default; var init_date_hiding = __esm({ "src/modules/better-journal/journal-styles/styles/date-hiding.css"() { date_hiding_default = ".journal .content .entry.short.refine_pollutinum .journalbody .journaldate,.journal .content .entry.short.torch_charm_event .journalbody .journaldate,.journal .content .entry.short.unstable_charm_trigger .journalbody .journaldate,.journal .content .entry.short.tournamentpointswithloot .journalbody .journaldate,.journal .content .entry.short.tournamentpoints .journalbody .journaldate,.journal .content .entry.short.rift-bristlewoods-acolyteSandStolen .journalbody .journaldate,.journal .content .entry.short.rift-bristlewoods-lootBooster .journalbody .journaldate,.journal .content .entry.short.super_rift_vacuum_trigger .journalbody .journaldate,.journal .content .entry.short.queso_canyon_queso_pumped .journalbody .journaldate,.journal .content .entry.short.custom.chesla_trap_trigger .journalbody .journaldate,.journal .content .entry.short.wordCount.minimalJournal .journalbody .journaldate,.journal .content .entry.short.folkloreForest.folkloreForest-lootFuelBoost .journalbody .journaldate,.journal .content .entry.short.labyrinth.labyrinth-chooseDoor .journalbody .journaldate,.journal .content .entry.short.labyrinth.labyrinth-intersection .journalbody .journaldate,.journal .content .entry.short.misc.custom.chesla_trap_trigger .journalbody .journaldate,.journal .content .entry.short.misc.custom.birthday_factory.claim_package .journaldate,.journal .content .entry.folkloreForest-tableOfContents.mythweaverIncrease .journaldate,.journal .content .entry.iceberg_advance .journalbody .journaldate,.journal .content .entry.iceberg_defeated .journalbody .journaldate,.journal .content .entry.iceberg_phase_change .journalbody .journaldate,.journal .content .entry.iceberg_advance_prevented.general .journalbody .journaldate,.journal .content .entry.spring_hunt_charge_trinket_effect .journalbody .journaldate,.journal .content .entry.harbour .journalbody .journaldate,.journal .content .entry.short.rift-whisker-woods-increase .journalbody .journaldate{display:none}.journal .content .log_summary.stats .journaldate,.journal .entry.birthday2018-anniversary-trap-trigger .journaldate,.journal .birthday2015-trayComplete-special .journaldate,.journal .train_station.progress .journaldate,.journal .entry.furoma_base_trigger .journaldate,.journal .entry.living_grove_base_trigger .journaldate,.journal .entry.desert_heater_base_trigger .journaldate,.journal .entry.queso_cannonstorm_base_trigger .journaldate,.journal .entry.aurora_base_trigger .journaldate,.journal .entry.timepiece_trigger .journaldate,.journal .entry.vegetation_base_trigger .journaldate,.journal .entry.electromagnetic_base_trigger .journaldate,.journal .entry.pirate_sleigh_trigger .journaldate,.journal .entry.slac_in_a_box_trigger .journaldate,.journal .entry.regulator_base_trigger .journaldate,.journal .entry.rift_mist_diffuser_trigger .journaldate,.journal .entry.spring_hunt_relic_hunter_egg_drop .journaldate,.journal .entry.denture_base_saved_trigger .journaldate,.journal .entry.denture_base_decay_trigger .journaldate,.journal .entry.printing_press_base_journal_entry .journaldate,.journal .entry.lunar_lantern .journaldate,.journal .entry.mousoleum .journaldate,.journal .entry.labyrinth-lantern .journaldat,.journal .entry.labyrinth-base-burnClue .journaldate,.journal .entry.labyrinth-clue .journaldate,.journal .entry.bountifulBeanstalk-goldenHarpStrings .journaldate,.journal .entry.riftFuroma-energyLost .journaldate{display:none!important}\n"; } }); // src/modules/better-journal/journal-styles/styles/fullstop.css var fullstop_default; var init_fullstop = __esm({ "src/modules/better-journal/journal-styles/styles/fullstop.css"() { fullstop_default = '.entry.short.log_summary.stats .fullstop{display:none}.journal .entry .journaltext br:after{content:" "}.journal .entry .journaltext br:last-child,.journal .content .entry .journaltext>br:last-of-type,.journal .content .entry .journaltext>br:first-of-type{display:none}.journal .content .entry .journaltext>br+br:last-of-type,.journal .content .entry.floatingIslands.fullyExplored .journaltext br,.journal .content .entry.harbour br{display:block}.journal .content .entry.floatingIslands.fullyExplored .journaltext br:first-of-type{display:none}.journal .entry.catchsuccessloot .journaltext br,.journal .entry.luckycatchsuccess .journaltext br,.journal .entry.relicHunter_catch .journaltext br:after,.journal .entry.relicHunter_complete .journaltext br:after{content:""}.unstable_charm_trigger .journaltext a:last-of-type:after,.journaltext .loot:last-of-type:after,.journaltext .lucky:last-of-type:after,.journaltext .item:last-of-type:after,.entry.short.supplytransferitem .journaltext a:after,.entry.gloomyGreenwood-incense .journaltext:after,.journal .entry.relicHunter_complete .journaltext b:last-of-type:after,.entry.halloween_boiling_cauldron.brew_finished a:last-of-type:after,.entry.halloween_boiling_cauldron.brew_removed a:last-of-type:after,.entry.badge .journaltext a:after,.entry.folkloreForest-farmToTable .journaltext a:last-of-type:after,.entry.folkloreForest-forewordFarm.folkloreForest-plantStarted .journaltext a:after,.entry.festiveSpiritLootBoost .journaltext a:after,.entry.golemUpgraded .journaltext a:after,.entry.workshopPartProduced .journaltext a:after,.entry.birthday_factory.enter_room b:after,.entry.potionuse span:last-of-type:after,.entry.donationComplete .journaltext a:last-of-type:after{display:inline;content:"."}.journaltext .better-journal-list a.lucky:last-of-type:after,.journaltext .better-journal-list a.item:last-of-type:after,.journaltext .better-journal-list a.loot:last-of-type:after,.entry.alchemists_cookbook_base_bonus .journaltext .loot:last-of-type:after,.entry.short.dailyreward a:last-of-type:after,.entry.folkloreForest-plantStarted,.entry.short.log_summary.stats .journaltext .loot:last-of-type:after,.entry.convertible_open .journaltext .item:last-of-type:after,.entry.short.craft.convertible_open .journaltext .item:last-of-type:after,.entry.short.supplytransferitem .journaltext #friend-data-wrapper a:after,.entry.short.craft.convertible_open a.item:after{display:none;content:""}.entry.floatingIslands.fullyExplored .journaltext .item:last-of-type:after{content:""}.journaltext .lucky:last-of-type:after,.journaltext .lucky:after{display:none}\n'; } }); // src/modules/better-journal/journal-styles/styles/general.css var general_default; var init_general = __esm({ "src/modules/better-journal/journal-styles/styles/general.css"() { general_default = '.journalEntries{padding-top:5px}.journal .content .entry .journalbody{margin-top:3px;margin-bottom:3px;margin-left:85px}.journal .content .entry.minimalJournal .journalbody{margin-left:10px}.journal .content .entry{position:relative;padding:6px 3px 6px 0;border:1px solid #5b5b5b;border-bottom:none;transition:box-shadow .1s}.journal .content .entry:last-child{border-bottom:1px solid #a4a4a4}.journal .content .entry .journalimage{position:absolute;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:60px;height:auto;margin:10px 0 0 10px}.shop_purchase .journal .content .entry .journalimage{margin:15px 0 0 10px}.journal .content .entry .journalimage a:hover,.journal .content .entry .journalimage a:focus{overflow:visible}.journal .content .entry .journalimage a{display:inline-block;width:59px;height:59px;overflow:hidden}.journal .content .entry a:hover img,.journal .content .entry a:focus img{filter:brightness(1.1)}.journal .content .entry .journalbody .journaltext{margin-right:5px;line-height:20px}.journal .content .entry .journaltext b{font-weight:400}.journal .content .entry .journaltext p:first-of-type{margin-top:0}.journal .content .entry .journaltext>*{line-height:24px}.journal .content .entry .journalbody .journaldate{display:inline-block;width:calc(100% - 10px);padding-top:5px;padding-bottom:3px;margin-bottom:5px;font-size:11px;font-weight:100;border-bottom:1px solid rgb(0 0 0 / 30%)}.journal-detailLinkContainer a:first-child{display:none}.journal-detailLinkContainer{text-align:center}a.journal-detailLink.full{font-size:11px;text-transform:lowercase;background:none}a.journal-detailLink.full:before{text-transform:capitalize;content:"View "}a.journal-detailLink.full:after{content:" \\2192"}.pagerView-container{background:transparent}.pagerView-link{border:none}.jsingle .journalEntries{padding-top:1px}.journal .content .entry a:hover img{border:1px solid #6db8ca;outline:1px solid #90d3e4;box-shadow:0 0 6px -2px #e3e31f}.journal .content .entry .journaltext p:last-of-type{margin-bottom:0}.journal .content .entry .journaltext .decoration{margin-right:65px}.journal .content .entry .journaltext .decoration:after{position:absolute;top:0;left:0;display:block;width:28px;height:28px;content:"";background:url(https://www.mousehuntgame.com/images/items/trinkets/large/430b05beed99ba1995f5ab78e394f5d6.png) no-repeat;background-size:contain}.journal .content .entry .journalbody .journalactions{position:absolute;right:5px;float:none}.journal .content .entry .journaltext p.double{margin-top:1em}.jsingle.journal .content .log_summary table{margin:0 auto}.journal .content .entry.minimalJournalImage .journalbody .journaldate{display:none}p.mhi-x-entry{display:block;padding:0;margin:0;line-height:22px!important}.journal .content .entry:hover{box-shadow:inset 0 0 5px #0006}.journal .content .entry.craft.item{padding-bottom:10px}.journal .content .entry.out_of_candles{background-color:#bd7f89}.journal .content .entry.desert_heater_base_trigger.fail{background-image:url(https://i.mouse.rip/upscaled/flameshard_crafting_item.png);background-blend-mode:luminosity}.journal .content .entry.alchemists_cookbook_base_bonus{background-position:10px}.journal .content .entry.electromagnetic_base_trigger:after{display:none}.journal .content .entry.halloween-special-loot,.journal .content .entry.halloween2019_shot_supplies{padding-left:0}.journal .content .entry.outofsuperbriebutton{margin-left:0}.journal .content .entry.pirate_sleigh_trigger{background:#4fa9e6}.journal .content .entry.queso_cannonstorm_base_trigger.fail{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/fe36041df0bec6dcc887ce67feefc4c8.png?cv=2)}.journal .content .entry.short.queso_canyon_queso_pumped .journalbody{margin-left:85px}.journal .content .entry.valentines_matchmaker{padding-left:0;margin-left:0;background-position:center;background-size:cover}.journal .entry.luckycatchsuccess .journalimage:after,.journal .entry.short.misc.custom.donationComplete br:last-of-type,.journal .content .entry.short.relicHunter_complete .journaltext>br+br:last-of-type,.journal .entry.short.relicHunter_complete br:nth-of-type(2),.journal .entry.vegetation_base_trigger:after{display:none}.journal .content .entry.vending_machine_purchase{background-position:top,bottom,center;background-size:contain}\n'; } }); // src/modules/better-journal/journal-styles/styles/progress-log.css var progress_log_default; var init_progress_log = __esm({ "src/modules/better-journal/journal-styles/styles/progress-log.css"() { progress_log_default = ".journal .entry.log_summary .journalbody{margin-left:10px}.journal .entry.log_summary .journaltext b{display:block;padding-top:.5em;font-weight:900}.mh-ui-progress-log-link{display:block;width:100px;margin:1em auto}.log_summary tbody{display:block;margin:0}.entry.short.log_summary{background-color:#fff}#overlayPopup.hunting_summary .label{padding:5px;font-size:13px;background-color:#eee;border:1px solid #ccc}.journal .content .log_summary table td.value{padding-right:10px;font-size:12px;line-height:24px}.journal .content .log_summary table{display:flex;justify-content:center}.journal .content .log_summary table td.field{padding-left:10px}.journal .content .log_summary table td.field.mice,.journal .content .log_summary table td.field.points,.journal .content .log_summary table td.field.gold,.journal .content .log_summary table td.field.loot{padding:0;font-size:12px;text-align:center}.journal .content .log_summary table tr:nth-child(7){outline:none}.journal .content .log_summary table td.spacer{display:none}.journal .content .log_summary table th{border-color:#c6c6c6}#overlayPopup.hunting_summary .leftColumn,#overlayPopup.hunting_summary .rightColumn{margin-bottom:20px}#overlayPopup.hunting_summary .title{margin:10px;font-size:19px;text-align:center}#overlayPopup.hunting_summary .baitContainer,#overlayPopup.hunting_summary .lootContainer{display:grid;margin-bottom:20px;border:1px solid #ccc}#overlayPopup.hunting_summary .lootContainer{grid-template-columns:1fr 1fr 1fr 1fr}#overlayPopup.hunting_summary .baitContainer .label,#overlayPopup.hunting_summary .lootContainer .label{border-top:none;border-right:none;border-left:none}#overlayPopup.hunting_summary .baitContainer .label{grid-column:span 2}#overlayPopup.hunting_summary .lootContainer .label{grid-column:span 4}#overlayPopup.hunting_summary .lootContainer a .wrapper{padding:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#overlayPopup.hunting_summary .miceContainer a{display:grid;grid-template-columns:0 50px auto;align-items:center;padding:6px 0;font-size:10px;line-height:14px}#overlayPopup.hunting_summary .miceContainer{display:grid;grid-template-columns:1fr 1fr;place-items:start stretch}#overlayPopup.hunting_summary .miceContainer .catches{float:none;font-size:11px}#overlayPopup.hunting_summary .miceContainer a img{margin:0 3px}#overlayPopup.hunting_summary .baitContainer a{display:inline-block;float:none;width:auto}#overlayPopup.hunting_summary .lootContainer a{width:160px}#overlayPopup.hunting_summary .baitContainer a .wrapper{font-size:10px}#overlayPopup.hunting_summary .baitContainer a img{width:35px;height:auto;margin-top:6px}#overlayPopup.hunting_summary .baitContainer a b{display:inline-block;padding-bottom:6px}.reportTitle{font-size:1.5em}.reportSubtitle{font-size:1.125em}.journal .content .entry.log_summary .journaltext>table{line-height:initial}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/aura.css var aura_default; var init_aura = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/aura.css"() { aura_default = ".journal .content .entry.spookyAuraActivated{background-color:#9df327}.entry.short.misc.custom.anniversaryAuraActivated i{font-size:10px}.entry.short.misc.custom.anniversaryAuraActivated br:nth-of-type(3){display:none}.entry.short.misc.custom.minimalJournalImage.relicHunter_slayer_aura_relic_bonus .journaltext{line-height:25px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/crafting.css var crafting_default; var init_crafting = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/crafting.css"() { crafting_default = ".journal .entry.craft.item{min-height:70px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/draw-winner.css var draw_winner_default; var init_draw_winner = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/draw-winner.css"() { draw_winner_default = '.journal .entry.drawwinner{box-shadow:inset 0 0 4px 2px #8fc68f;animation:warpathWiggle 1s 5}.journal .entry.drawwinner:after{position:absolute;inset:0;content:"";background:url(https://www.mousehuntgame.com/images/ui/journal/donation_shimmer.png?asset_cache_version=2) no-repeat -130px 0;animation:donationShimmer 5s infinite}@media (prefers-reduced-motion: reduce){.journal .entry.drawwinner,.journal .entry.drawwinner:after{animation:none}}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/events.css var events_default; var init_events2 = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/events.css"() { events_default = ".journal .entry.ronza_chrome_voucher_claim{background-color:#cae5e8;background-image:url(https://www.mousehuntgame.com/images/items/stats/large/a3be8c11176c289f6c79068cbe813968.png?cv=2)}.journal .entry.halloween-candy{background-color:#f1b7dc}.journal .entry.lunar_lantern{background-color:#ffd0b3;border:1px solid #5b5b5b;border-bottom:none}.entry.short.misc.custom.chocolateshop_reward_claimed{background-color:#e7cdaa}.spring_hunt_charge_trinket_effect .journalimage img{width:30px}.journal .entry.spring_hunt_charge_trinket_effect{display:flex;align-items:center;min-height:35px;padding-bottom:6px}.journal .entry.spring_hunt_charge_trinket_effect .journalimage{margin:0}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/larry-gift.css var larry_gift_default; var init_larry_gift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/larry-gift.css"() { larry_gift_default = '.entry.short.misc.custom.larryGift:after{position:absolute;top:20px;right:-5px;display:block;width:61px;height:61px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/onboarding/info_arrow_larry.png?asset_cache_version=2);filter:opacity(.4) saturate(.3);background-repeat:no-repeat;background-position:10px;background-size:contain;transition:filter .2s;transform:scaleX(-1) rotate(-5deg);transform-origin:center}.entry.short.misc.custom.larryGift:hover:after{filter:opacity(1) saturate(1)}.entry.short.misc.custom.larryGift .journalbody{margin-right:45px}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/maps.css var maps_default; var init_maps2 = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/maps.css"() { maps_default = ".journal .entry.relicHunter_complete .journaltext b{font-weight:700}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/other.css var other_default; var init_other = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/other.css"() { other_default = ".journal .relicHunter_slayer_aura_relic_bonus{background-image:url(https://www.mousehuntgame.com/images/items/collectibles/large/a6e804d0d9eeb22ff01660a144521ff1.png?cv=2);background-repeat:no-repeat;background-size:45px!important}.journal .entry.generic_falure,.journal .entry.pollutinum_stolen{background:#ffbfbf}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/popup.css var popup_default; var init_popup = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/popup.css"() { popup_default = "#OnboardArrow.onboardPopup.top .canShare .larryTip{bottom:48px;display:flex;flex-flow:column wrap;height:30px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/rank-up.css var rank_up_default; var init_rank_up = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/rank-up.css"() { rank_up_default = '.journal .entry.titlechange{background-image:url(https://www.mousehuntgame.com/images/ui/hud/camp/re_engagement/popup/rank_up_icon.png);background-repeat:no-repeat;background-position:right center;background-size:contain}.journal .entry.titlechange:after{position:absolute;inset:0;pointer-events:none;content:"";background:url(https://www.mousehuntgame.com/images/ui/journal/donation_shimmer.png?asset_cache_version=2) no-repeat -130px 0;filter:hue-rotate(123deg);transition:all .3s;animation:donationShimmer 5s infinite}@media screen and (prefers-reduced-motion: reduce){.journal .entry.titlechange:after{animation:none}}.journal .content .titlechange .journalimage img,.journal .content .titlechange .journalimage{width:75px}.journal .entry.titlechange .journalbody{text-shadow:0 0 1px #70c9da}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/social-gift.css var social_gift_default; var init_social_gift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/social-gift.css"() { social_gift_default = ".socialGift.socialGift-send .journaltext{max-height:60px;padding-right:10px;padding-left:80px;margin-right:-3px;margin-bottom:-4px;margin-left:-80px;overflow-y:auto;box-shadow:inset 0 -20px 15px -16px #999}.journal .entry.socialGift.socialGift-send .journalbody .journaltext{margin-right:-2px;margin-left:-85px}.socialGift.socialGift-send .journaltext #friend-data-wrapper{display:none}.journal .entry.socialGift-send{padding-bottom:0}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/tournaments.css var tournaments_default; var init_tournaments = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/tournaments.css"() { tournaments_default = ".entry.short.tournamentpointswithloot,.entry.short.tournamentpoints{padding:2px;background:#dbd1b4}.entry.short.tournamentpointswithloot .journalbody,.entry.short.tournamentpoints .journalbody{display:flex;align-items:center;justify-content:flex-start;margin:5px 5px 5px 10px;white-space:normal}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/charm/gilded.css var gilded_default; var init_gilded = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/charm/gilded.css"() { gilded_default = ".entry.short.misc.custom.chesla_trap_trigger{display:flex;align-items:center;min-height:35px;padding-left:10px;font-size:10px;line-height:15px;background-color:#f5def9}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/charm/rift-vacuum.css var rift_vacuum_default; var init_rift_vacuum = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/charm/rift-vacuum.css"() { rift_vacuum_default = ".journal .entry.short.super_rift_vacuum_trigger{box-shadow:0 0 20px #c997de inset}.journal .entry.short.custom.super_rift_vacuum_trigger{background-position:10px 5px;background-size:50px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/charm/torch.css var torch_default; var init_torch = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/charm/torch.css"() { torch_default = ".entry.short.misc.custom.torch_charm_event{display:flex;align-items:center;min-height:35px;padding-left:5px;font-size:10px;line-height:15px;background-color:#dcf7ff}.entry.short.misc.custom.torch_charm_event .journalimage{width:55px}.entry.short.misc.custom.torch_charm_event .journalimage img{width:45px;height:45px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/charm/ultimate.css var ultimate_default; var init_ultimate = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/charm/ultimate.css"() { ultimate_default = '.journal .content .ultimate_pop,.journal .content .ultimate_intact{position:relative;background-color:#49eec2;background-size:60px}.journal .content .ultimate_pop:before,.journal .content .ultimate_intact:before{position:absolute;top:25px;left:10px;width:56px;height:56px;content:"";border:2px solid #49eec2}.journal .content .ultimate_intact{animation:mh-improved-glow .8s ease-in-out 1}.journal .content .ultimate_pop{animation:mh-improved-dim .8s ease-in-out 1}@media (prefers-reduced-motion: reduce){.journal .content .ultimate_intact,.journal .content .ultimate_pop{animation:none}}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/charm/unstable.css var unstable_default; var init_unstable = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/charm/unstable.css"() { unstable_default = ".entry.short.misc.custom.unstable_charm_trigger{display:flex;align-items:center;min-height:35px;padding-left:5px;font-size:10px;line-height:15px;background-color:#dcf7ff}.journal .entry.short.misc.custom.unstable_charm_trigger .journaltext{max-width:265px;margin-left:-10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jsingle.journal .entry.short.misc.custom.unstable_charm_trigger .journaltext{max-width:580px}.entry.short.misc.custom.unstable_charm_trigger .journalimage{width:45px;margin-top:0}.journal .entry.short.misc.custom.unstable_charm_trigger .journalimage img{width:40px;height:40px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/base/alchemist-cookbook.css var alchemist_cookbook_default; var init_alchemist_cookbook = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/base/alchemist-cookbook.css"() { alchemist_cookbook_default = ".journal .content .entry.alchemists_cookbook_base_bonus .journalbody{margin-left:80px}.journal .entry.alchemists_cookbook_base_bonus{background-position:5px;box-shadow:inset 0 0 20px #ae3fa4}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/base/ssdb.css var ssdb_default; var init_ssdb = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/base/ssdb.css"() { ssdb_default = ".journal .content .entry.short.misc.custom.denture_base_decay_trigger{background-blend-mode:lighten}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css var birthday_default; var init_birthday = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css"() { birthday_default = ".journal .content .entry.vending_machine_purchase{padding:6px 6px 10px 0;background-repeat:no-repeat,no-repeat,repeat;background-position:top,bottom,center;background-size:contain}.journal .content .entry.vending_machine_purchase .journalimage{position:relative;display:block;width:unset;height:unset;margin:10px 0 0 6px;background-color:#2a2a2f;box-shadow:0 0 2px -1px #43434b}.journal .content .entry.vending_machine_purchase .journalimage img{width:55px;height:55px}.journal .content .entry.vending_machine_purchase .journalbody{margin:0 0 0 70px}.journal .content .entry.vending_machine_purchase .journaldate{display:none}.journal .content .entry.vending_machine_purchase .journaltext{margin-top:16px;font-size:10px;font-weight:900;line-height:12px}.journal .content .entry.vending_machine_purchase .journaltext>br+br:last-of-type,.journal .content .entry.vending_machine_purchase .journaltext br{display:block!important}.journal .content .entry.vending_machine_purchase .journaltext>div{position:relative;font-size:11px;font-weight:400;line-height:18px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/brift.css var brift_default; var init_brift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/brift.css"() { brift_default = ".journal .entry.burroughs_rift.danger_zone{background-color:#ccdfe2;background-position:10px center;background-size:59px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/bwrift.css var bwrift_default; var init_bwrift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/bwrift.css"() { bwrift_default = ".entry.short.rift-bristlewoods-acolyteSandStolen{padding:2px;background:#ffc16e}.entry.short.rift-bristlewoods-acolyteSandStolen .journalbody{display:flex;align-items:center;justify-content:flex-start;padding-left:45px;margin:5px 5px 5px 10px;white-space:normal}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css var folklore_forest_default; var init_folklore_forest = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css"() { folklore_forest_default = '.journal .entry.folkloreForest.folkloreForest-lootFuelBoost{min-height:unset;background-color:#b6f1d1}.entry.folkloreForest-farmToTable .journaltext a:nth-last-of-type(2):after{content:" and "}.journal .entry.folkloreForest-tableOfContents.wordCount{display:flex;align-items:center;justify-content:center;height:35px;background-color:#fff9ee;box-shadow:inset 0 0 9px -2px #a78f77}.journal .entry.folkloreForest-tableOfContents.wordCount .journaltext{max-width:275px;margin:0 auto;font-size:11px}.journal .entry.folkloreForest-tableOfContents.wordCount:after{position:absolute;top:10px;left:2px;width:37px;height:37px;color:#d9bb92;content:"";background-image:url(https://www.mousehuntgame.com/images/folklore_forest_upgrades/golden_quill_thumb.png?cv=2);background-repeat:no-repeat;background-size:cover;mix-blend-mode:luminosity}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/frift.css var frift_default; var init_frift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/frift.css"() { frift_default = '.journal .content .entry.riftFuroma{position:relative}.journal .content .entry.riftFuroma-energyLost .journalbody{margin-left:80px}.journal .content .entry.riftFuroma-energyLost .journalbody:before{position:absolute;top:-12px;left:-96px;display:block;width:75px;height:80px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hud/rift_furoma/droid.png?asset_cache_version=2);filter:grayscale(1);background-repeat:no-repeat;background-position:0 -100px;background-size:110%;mix-blend-mode:luminosity}.journal .content .entry.riftFuroma-energyLost .journaltext{display:flex;align-items:center;min-height:54px}.journal .content .entry.riftFuroma-retreat{background-color:#f4c3b2}.journal .content .entry.riftFuroma-energyLost{min-height:60px}.journal .content .entry.riftFuroma-enterPagoda,.journal .content .entry.riftFuroma-unlockBattery{background-color:#f3b782}.journal .content .entry.riftFuroma-exitPagoda{background-color:#e3bfb4}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/garden.css var garden_default; var init_garden = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/garden.css"() { garden_default = ".journal .content .entry.minigame_start.yellow_drops{background-color:#fffd97;background-blend-mode:darken}.journal .content .entry.minigame_start.red_drops{background-color:#ffaf98;background-blend-mode:darken}.journal .content .entry.minigame_start.orange_drops{background-color:#ffde97;background-blend-mode:darken}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/halloween.css var halloween_default; var init_halloween = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/halloween.css"() { halloween_default = ".journal .entry.gloomyGreenwood-incense{background-color:#ffc277}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/harbour.css var harbour_default; var init_harbour = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/harbour.css"() { harbour_default = ".entry.harbour.catch{background-color:#d2ba96}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css var iceberg_default; var init_iceberg = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css"() { iceberg_default = ".journal .content .iceberg_advance,.journal .content .iceberg_pushback,.journal .content .iceberg_pushback_prevented,.journal .entry.riftFuroma{font-style:inherit}.journal .content .iceberg_advance .journalbody,.journal .content .iceberg_pushback .journalbody,.journal .content .iceberg_pushback_prevented .journalbody{font-size:11px}.journal .content .iceberg_advance_prevented.general{background-color:#a6d1ee;background-position:10px}.journal .content .iceberg_advance,.journal .content .iceberg_advance_prevented,.journal .content .iceberg_pushback,.journal .content .iceberg_pushback_prevented{padding-bottom:6px}.entry.short.iceberg_phase_change .journaltext{display:flex;align-items:center}.journal .content .entry.iceberg_defeated .journaltext>br{display:block}.journal .content .entry.iceberg_phase_change .journalbody .journaltext{line-height:23px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css var labyrinth_default; var init_labyrinth = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css"() { labyrinth_default = ".entry.short.misc.custom.labyrinth.labyrinth-chooseDoor,.entry.short.misc.custom.labyrinth.labyrinth-intersection{display:flex;align-items:center}.journal .content .entry.ancient-stealth .journalbody{margin-left:85px}.journal .content .entry.ancient-stealth .journaldate{display:none}.journal .entry.labyrinth-intersection{background-color:#acc8dc}.journal .entry.ancient-stealth{padding:1px 0}.entry.short.misc.custom.labyrinth.labyrinth-exitMaze li{padding:0;line-height:1.6}.entry.short.misc.custom.labyrinth.labyrinth-exitMaze br{display:block}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/mousoleum.css var mousoleum_default; var init_mousoleum = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/mousoleum.css"() { mousoleum_default = ".journal .content .entry.mousoleum.creepy_coffin_trigger,.journal .content .entry.mousoleum.repair_wall,.journal .content .entry.mousoleum.damage_wall{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/d764ca82aa14f187f9796e1e5334e20c.png)}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/queso.css var queso_default; var init_queso = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/queso.css"() { queso_default = ".journal .entry.queso_geyser.wild_tonic_disabled{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/8e292ff717bd65936d2c96707aa77de0.png);background-blend-mode:darken}.journal .entry.queso_canyon_queso_pumped{background-image:url(https://www.mousehuntgame.com/images/items/bait/transparent_thumb/06c81c66b0f21f2a8b6a2b989f40bd8d.png?cv=2);background-position:10px -5px}.journal .entry.queso_canyon_queso_pumped .journalbody{margin-left:65px}.journal .entry.queso_cannonstorm_base_trigger .journalimage img{width:50px;padding-left:0}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css var toxic_spill_default; var init_toxic_spill = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css"() { toxic_spill_default = ".entry.short.misc.custom.refine_pollutinum{display:flex;align-items:center;height:45px;background-color:#7f7;background-position:10px;background-size:50px}.entry.short.misc.custom.torch_charm_event .refine_pollutinum{width:55px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/vrift.css var vrift_default; var init_vrift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/vrift.css"() { vrift_default = ".journal .entry.rift_valour.minimalJournalImage.enter_tower .journaltext,.journal .entry.rift_valour.minimalJournalImage.no_loot_retreat .journaltext,.journal .entry.rift_valour.minimalJournalImage.upgrade_longstride .journaltext,.journal .entry.rift_valour.minimalJournalImage.upgrade_stamina .journaltext,.journal .entry.rift_valour.minimalJournalImage.upgrade_siphon .journaltext{padding-top:0}.journal .entry.rift_valour.moved_forward{background-color:#8fe5ff}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/location/wwrift.css var wwrift_default; var init_wwrift = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/location/wwrift.css"() { wwrift_default = ".journal .content .entry.short.rift-whisker-woods-increase .journalbody{margin:0 30px;font-size:10px;text-align:center}.journal .content .entry.rift-whisker-woods-catch-miniboss{background-color:#d8d479}.journal .content .entry.rift-whisker-woods-catch-boss{background-color:#fac75f}.journal .content .entry.rift-whisker-woods-increase-high{background-color:#e3d981}.journal .content .entry.rift-whisker-woods-increase-miniboss{background-color:#ffba4e}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/mouse/glazy.css var glazy_default; var init_glazy = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/mouse/glazy.css"() { glazy_default = ".mh-dark-mode .entry.short.catchsuccessloot[data-mouse-type=glazed],.entry.short.catchsuccessloot[data-mouse-type=glazed]{color:#000!important;background-color:#fcdb28;box-shadow:0 0 10px 8px #fdee96 inset}.mh-dark-mode .entry.short.catchsuccessloot[data-mouse-type=glazed] a{color:#3b5998}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/mouse/stuck-snowball.css var stuck_snowball_default; var init_stuck_snowball = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/mouse/stuck-snowball.css"() { stuck_snowball_default = ".journal .entry.stuck_snowball_catch{background:#a5d6fb}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/mouse/valentines.css var valentines_default; var init_valentines = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/mouse/valentines.css"() { valentines_default = ".journal .content .entry.valentines_matchmaker{background-position:left;animation:mh-improved-background-slide 240s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.journal .content .entry.valentines_matchmaker{animation:none}}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/catch/bonus.css var bonus_default; var init_bonus = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/catch/bonus.css"() { bonus_default = ".journal .content .bonuscatchsuccess,.journal .content .bonuscatchfailure{box-shadow:none}.journal .content .bonuscatchsuccess:after,.journal .content .bonuscatchfailure:after,.journal .content .bonuscatchsuccess:before,.journal .content .bonuscatchfailure:before{content:none;background:none}.journal .content .bonuscatchfailure{background:linear-gradient(45deg,#fbdede,#f687a0)}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/catch/failure.css var failure_default; var init_failure = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/catch/failure.css"() { failure_default = ".journal .content .entry.catchfailure{background-color:#f2f2f2;background-position:0;background-size:75px}\n"; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/catch/lucky.css var lucky_default; var init_lucky = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/catch/lucky.css"() { lucky_default = '.journal .entry.luckycatchsuccess .journalimage:after{background:none}.journal .entry.luckycatchsuccess:after{position:absolute;top:8px;right:10px;width:18px;height:18px;content:"";background:url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2);background-repeat:no-repeat;background-size:cover;animation:mh-improved-fade-out 1s ease-out 1s forwards}@media (prefers-reduced-motion: reduce){.journal .entry.luckycatchsuccess:after{animation:none}}.journal .entry.luckycatchsuccess .journaltext .luckyCatch{-webkit-text-stroke-color:#7bc95e;-webkit-text-stroke-width:thin}.journal .entry.luckycatchsuccess .journalimage{position:absolute;top:0;bottom:0}\n'; } }); // src/modules/better-journal/journal-styles/styles/custom-entries/catch/prize.css var prize_default; var init_prize = __esm({ "src/modules/better-journal/journal-styles/styles/custom-entries/catch/prize.css"() { prize_default = ".journal .content .catchsuccessprize{background-color:#7dea7d}\n"; } }); // src/modules/better-journal/journal-styles/index.js var imported, styles, journal_styles_default; var init_journal_styles = __esm({ "src/modules/better-journal/journal-styles/index.js"() { init_utils2(); init_backgrounds(); init_date_hiding(); init_fullstop(); init_general(); init_progress_log(); init_aura(); init_crafting(); init_draw_winner(); init_events2(); init_larry_gift(); init_maps2(); init_other(); init_popup(); init_rank_up(); init_social_gift(); init_tournaments(); init_gilded(); init_rift_vacuum(); init_torch(); init_ultimate(); init_unstable(); init_alchemist_cookbook(); init_ssdb(); init_birthday(); init_brift(); init_bwrift(); init_folklore_forest(); init_frift(); init_garden(); init_halloween(); init_harbour(); init_iceberg(); init_labyrinth(); init_mousoleum(); init_queso(); init_toxic_spill(); init_vrift(); init_wwrift(); init_glazy(); init_stuck_snowball(); init_valentines(); init_bonus(); init_failure(); init_lucky(); init_prize(); imported = [backgrounds_default, date_hiding_default, fullstop_default, general_default, progress_log_default, aura_default, crafting_default, draw_winner_default, events_default, larry_gift_default, maps_default, other_default, popup_default, rank_up_default, social_gift_default, tournaments_default, gilded_default, rift_vacuum_default, torch_default, ultimate_default, unstable_default, alchemist_cookbook_default, ssdb_default, birthday_default, brift_default, bwrift_default, folklore_forest_default, frift_default, garden_default, halloween_default, harbour_default, iceberg_default, labyrinth_default, mousoleum_default, queso_default, toxic_spill_default, vrift_default, wwrift_default, glazy_default, stuck_snowball_default, valentines_default, bonus_default, failure_default, lucky_default, prize_default]; styles = imported; journal_styles_default = () => __async(void 0, null, function* () { addStyles(styles, "better-journal-styles"); }); } }); // src/modules/better-journal/list-and-icons.css var list_and_icons_default; var init_list_and_icons = __esm({ "src/modules/better-journal/list-and-icons.css"() { list_and_icons_default = ".journal .content .entry .journaltext .better-journal-list{line-height:21px}\n"; } }); // src/modules/better-journal/settings/index.js var settings_default4; var init_settings5 = __esm({ "src/modules/better-journal/settings/index.js"() { init_utils2(); settings_default4 = () => __async(void 0, null, function* () { return [ { id: "better-journal.styles", title: "Journal styles", default: true }, { id: "better-journal.replacements", title: "Journal text replacements", default: true }, { id: "better-journal.icons", title: "Show loot icons" }, { id: "better-journal.icons-minimal", title: "Show loot icons (minimal)" }, { id: "better-journal.list", title: "Show loot as list" }, { id: "better-journal.gold-and-points", title: "Show gold and points icons", default: true }, { id: "better-journal.item-colors", title: "Unique item colors (Map clues, Ful'Mina's gifts, etc.)", default: true }, { id: "better-journal.journal-history", title: "Journal History", default: getSetting("experiments.journal-history", true) } ]; }); } }); // src/modules/better-journal/index.js var isProcessing, processEntries, processSingleEntries, init4, better_journal_default; var init_better_journal = __esm({ "src/modules/better-journal/index.js"() { init_utils2(); init_journal_gold_and_points(); init_journal_history(); init_journal_icons(); init_journal_icons_minimal(); init_journal_item_colors(); init_journal_list(); init_journal_replacements(); init_journal_styles(); init_list_and_icons(); init_settings5(); isProcessing = false; processEntries = () => __async(void 0, null, function* () { if (!("camp" === getCurrentPage() || "hunterprofile" === getCurrentPage())) { return; } if (isProcessing) { return; } isProcessing = true; const entries = document.querySelectorAll(".journal .entry"); for (const entry of entries) { doEvent2("journal-entry", entry); } doEvent2("journal-entries", entries); isProcessing = false; }); processSingleEntries = () => __async(void 0, null, function* () { if (isProcessing) { return; } isProcessing = true; const entriesEl = document.querySelectorAll(".jsingle .entry"); for (const entry of entriesEl) { doEvent2("journal-entry", entry); } isProcessing = false; }); init4 = () => __async(void 0, null, function* () { const enabled = { styles: getSetting("better-journal.styles", true), list: getSetting("better-journal.list", false), icons: getSetting("better-journal.icons"), iconsMinimal: getSetting("better-journal.icons-minimal"), replacements: getSetting("better-journal.replacements", true), goldAndPoints: getSetting("better-journal.gold-and-points", true), itemColors: getSetting("better-journal.item-colors", true), progressLog: getSetting("better-journal.progress-log", true) }; if (enabled.styles) { journal_styles_default(); } if (enabled.list) { journal_list_default(); if (enabled.icons || enabled.iconsMinimal) { addStyles(list_and_icons_default, "better-journal-list-and-icons"); } } if (enabled.icons) { journal_icons_default(); journal_icons_minimal_default(); } else if (enabled.iconsMinimal) { journal_icons_minimal_default(); } if (enabled.replacements) { journal_replacements_default(); } if (enabled.goldAndPoints) { journal_gold_and_points_default(); } if (enabled.itemColors) { journal_item_colors_default(); } journal_history_default(getSetting("better-journal.history", getFlag("journal-history", true))); processEntries(); onRequest("*", (data) => { setMultipleTimeout(processEntries, [100, 500, 1e3]); if (data.journal_markup && data.journal_markup.length > 0) { processSingleEntries(data.journal_markup); } }); }); better_journal_default = { id: "better-journal", name: "Better Journal", type: "better", default: true, description: "Modify the journal text, layout, and styling.", load: init4, settings: settings_default4 }; } }); // src/modules/better-maps/settings/index.js var settings_default5; var init_settings6 = __esm({ "src/modules/better-maps/settings/index.js"() { settings_default5 = () => __async(void 0, null, function* () { return [ { id: "better-maps.show-sidebar-goals", title: "Show map goals in sidebar", default: true } ]; }); } }); // src/modules/better-maps/modules/helper.js var openMiniMap, makeMenuItem, helper_default; var init_helper = __esm({ "src/modules/better-maps/modules/helper.js"() { init_utils2(); openMiniMap = (mapId) => __async(void 0, null, function* () { const mapData3 = yield doRequest("managers/ajax/users/treasuremap.php", { action: "map_info", map_id: mapId }); const t = mapData3.treasure_map; const mappedGoals = t.goals.mouse.map((m) => { return `<div class="mouse"> <div class="unique_id">${m.unique_id}</div> <div class="model_type">${m.model_type}</div> <div class="type">${m.type}</div> <div class="name">${m.name}</div> <div class="small">${m.small}</div> <div class="large">${m.large}</div> <div class="group">${m.group}</div> <div class="sub_group">${m.sub_group}</div> <div class="is_landscape">${m.is_landscape}</div> <div class="environment_ids">${m.environment_ids.join(", ")}</div> </div>`; }).join(""); const mappedHunters = t.hunters.map((h) => { return `<div class="hunter"> <div class="name">${h.name}</div> <div class="user_id">${h.user_id}</div> <div class="sn_user_id">${h.sn_user_id}</div> <div class="profile_pic">${h.profile_pic}</div> <div class="environment_name">${h.environment_name}</div> <div class="environment_id">${h.environment_id}</div> <div class="environment_icon">${h.environment_icon}</div> <div class="is_online">${h.is_online}</div> <div class="last_active_formatted">${h.last_active_formatted}</div> <div class="base_name">${h.base_name}</div> <div class="base_thumb">${h.base_thumb}</div> <div class="weapon_name">${h.weapon_name}</div> <div class="weapon_thumb">${h.weapon_thumb}</div> <div class="bait_name">${h.bait_name}</div> <div class="bait_thumb">${h.bait_thumb}</div> <div class="trinket_name">${h.trinket_name}</div> <div class="trinket_thumb">${h.trinket_thumb}</div> <div class="is_active">${h.is_active}</div> <div class="display_order">${h.display_order}</div> <div class="captain">${h.captain}</div> <div class="upgrader">${h.upgrader}</div> </div>`; }).join(""); const mappedEnvironments = t.environments.map((e) => { return `<div class="environment"> ${e.name} (${e.type}) <div class="thumb">${e.thumb}</div> <div class="header">${e.header}</div> </div>`; }).join(""); createPopup({ title: "map", content: `<div class="mh-improved-map-helper-popup-content"> <div class="row"> <div class="title"> map_id </div> <div class="value"> ${t.map_id} </div> </div> <div class="row"> <div class="title"> map_class </div> <div class="value"> ${t.map_class} </div> </div> <div class="row"> <div class="title"> map_type </div> <div class="value"> ${t.map_type} </div> </div> <div class="row"> <div class="title"> invite_mode </div> <div class="value"> ${t.invite_mode} (${t.invite_mode_names[t.invite_mode]} - ${t.invite_mode_descriptions[t.invite_mode]}) </div> </div> <div class="row"> <div class="title"> is_listed </div> <div class="value"> ${t.is_listed} </div> </div> <div class="row"> <div class="title"> name </div> <div class="value"> ${t.name} </div> </div> <div class="row"> <div class="title"> thumb </div> <div class="value"> ${t.thumb} </div> </div> <div class="row"> <div class="title"> quality </div> <div class="value"> ${t.quality} </div> </div> <div class="row"> <div class="title"> is_upgraded </div> <div class="value"> ${t.is_upgraded} </div> </div> <div class="row"> <div class="title"> is_complete </div> <div class="value"> ${t.is_complete} </div> </div> <div class="row"> <div class="title"> is_owner </div> <div class="value"> ${t.is_owner} </div> </div> <div class="row"> <div class="title"> num_active_hunters </div> <div class="value"> ${t.num_active_hunters} </div> </div> <div class="row"> <div class="title"> viewing_user_is_on_map </div> <div class="value"> ${t.viewing_user_is_on_map} </div> </div> <div class="row"> <div class="title"> min_title_name </div> <div class="value"> ${t.min_title_name} </div> </div> <div class="row"> <div class="title"> min_title_wisdom </div> <div class="value"> ${t.min_title_wisdom} </div> </div> <div class="row"> <div class="title"> max_hunters </div> <div class="value"> ${t.max_hunters} </div> </div> <div class="row"> <div class="title"> invited_hunters </div> <div class="value"> ${t.invited_hunters.join(", ")} </div> </div> <div class="row"> <div class="title"> invite_requests </div> <div class="value"> ${t.invite_requests.join(", ")} </div> </div> <div class="row"> <div class="title"> goals.mouse </div> <div class="value"> ${mappedGoals} </div> </div> <div class="row"> <div class="title"> hunters </div> <div class="value"> ${mappedHunters} </div> </div> <div class="row"> <div class="title"> environments </div> <div class="value"> ${mappedEnvironments} </div> </div> </div>`, className: "mh-improved-map-helper-popup", show: true }); }); makeMenuItem = () => { var _a, _b, _c, _d, _e, _f, _g, _h; removeSubmenuItem("mh-improved-map-helper"); const mapId = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRelicHunter) == null ? void 0 : _b.default_map_id; if (!mapId) { return; } addSubmenuItem({ id: "mh-improved-map-helper", menu: "camp", label: `<span class="title">${(_d = (_c = user == null ? void 0 : user.quests) == null ? void 0 : _c.QuestRelicHunter) == null ? void 0 : _d.label}</span><span class="subtitle">${(_f = (_e = user == null ? void 0 : user.quests) == null ? void 0 : _e.QuestRelicHunter) == null ? void 0 : _f.value}</span>`, icon: ((_h = (_g = user == null ? void 0 : user.quests) == null ? void 0 : _g.QuestRelicHunter) == null ? void 0 : _h.image) || "https://www.mousehuntgame.com/images/items/convertibles/large/bfca4a1c658e49903654d0a84f52c9fd.png", callback: () => { openMiniMap(mapId); } }); }; helper_default = () => { makeMenuItem(); onRequest("*", makeMenuItem); }; } }); // src/modules/better-maps/modules/toggle-ar.js var addArDataToMap, toggleAr, clickArToggle, maybeClickArToggle, isAdding, addArToggle, removeArToggle; var init_toggle_ar = __esm({ "src/modules/better-maps/modules/toggle-ar.js"() { init_utils2(); addArDataToMap = (mapData3) => __async(void 0, null, function* () { var _a, _b; let type = "mouse"; if (((_a = mapData3 == null ? void 0 : mapData3.goals) == null ? void 0 : _a.mouse.length) === 0) { type = "item"; } const mice = ((_b = mapData3 == null ? void 0 : mapData3.goals) == null ? void 0 : _b[type]) || []; if (!mice || mice.length === 0) { return; } const goals2 = document.querySelectorAll(".treasureMapView-goals-groups"); if (goals2 && goals2.length > 0) { let hasAdded = false; goals2.forEach((goal) => { if (goal.classList.contains("mh-ui-ar-hidden")) { goal.classList.remove("mh-ui-ar-hidden"); hasAdded = true; } }); if (hasAdded) { return; } } mice.forEach((mouse) => __async(void 0, null, function* () { const mouseEl = document.querySelector(`.treasureMapView-goals-group-goal[data-unique-id="${mouse.unique_id}"]`); if (!mouseEl) { return; } if (mouseEl.classList.contains("complete")) { return; } const name = mouseEl.querySelector(".treasureMapView-goals-group-goal-name"); if (!name) { return; } const existingArEl = name.querySelectorAll(".mh-ui-ar"); if (existingArEl.length > 0) { existingArEl.forEach((el) => { el.remove(); }); } const arEl = yield getArEl(mouse.unique_id, type); if (!arEl) { return; } name.append(arEl); mouseEl.setAttribute("data-mh-ui-ar", true); })); }); toggleAr = () => __async(void 0, null, function* () { const mapView = document.querySelector(".treasureMapView"); if (!mapView) { return; } const toggle = mapView.querySelector(".mh-ui-toggle-ar-button"); if (!toggle) { return; } toggle.classList.add("disabled"); const text = toggle.querySelector(".toggle-ar-text"); if (!text) { return; } let arText = "AR"; let arTitle = "Attraction Rates"; const mapClass = mapView.classList.toString(); if (mapClass.includes("scavenger")) { arText = "DR"; arTitle = "Drop Rates"; } const showing = mapView.classList.contains("mh-ui-ar-showing"); if (showing) { mapView.classList.remove("mh-ui-ar-showing"); mapView.classList.add("mh-ui-ar-hidden"); text.innerText = `Show ${arText}`; toggle.title = `Show ${arTitle}`; } else { mapView.classList.add("mh-ui-ar-showing"); mapView.classList.remove("mh-ui-ar-hidden"); text.innerText = "\xB7\xB7\xB7"; yield addArDataToMap(mapper("mapData")); text.innerText = `Hide ${arText}`; toggle.title = `Hide ${arTitle}`; } toggle.classList.remove("disabled"); }); clickArToggle = () => { const mapView = document.querySelector(".treasureMapView"); if (!mapView) { return; } const toggle = mapView.querySelector(".mh-ui-toggle-ar-button"); if (!toggle) { return; } toggle.click(); }; maybeClickArToggle = () => { const mapView = document.querySelector(".treasureMapView"); if (!mapView) { return; } const toggle = mapView.querySelector(".mh-ui-toggle-ar-button"); if (!toggle) { return; } const showing = mapView.classList.contains("mh-ui-ar-showing"); const currentButtonState = toggle.querySelector(".toggle-ar-text").innerText.replace("AR", "").replace("DR", "").trim(); if (showing && currentButtonState !== "Hide") { clickArToggle(); } else if (!showing && currentButtonState !== "Show") { clickArToggle(); } }; isAdding = false; addArToggle = (tab = "goals") => __async(void 0, null, function* () { const mapView = document.querySelector(".treasureMapView"); if (!mapView) { return; } if (isAdding && tab === isAdding) { return; } isAdding = tab; const exists = document.querySelector(".mh-ui-toggle-ar-button"); if (exists) { exists.classList.remove("hidden"); if ("goals" === tab && mapView.classList.contains("mh-ui-ar-showing")) { addArDataToMap(mapper("mapData")); } isAdding = false; return; } const wrapper = document.querySelector(".treasureMapRootView-subTabRow"); if (!wrapper) { isAdding = false; return; } const toggle = makeElement("button", ["mousehuntActionButton", "tiny", "mh-ui-toggle-ar-button"]); let arText = "AR"; let arTitle = "Attraction Rates"; if (mapper("mapData").is_scavenger_hunt) { arText = "DR"; arTitle = "Drop Rates"; } makeElement("span", "toggle-ar-text", `Show ${arText}`, toggle); toggle.title = `Show ${arTitle}`; toggle.addEventListener("click", toggleAr); wrapper.append(toggle); yield toggleAr(); maybeClickArToggle(); isAdding = false; }); removeArToggle = () => { const toggle = document.querySelector(".mh-ui-toggle-ar-button"); if (toggle) { toggle.classList.add("hidden"); } }; } }); // src/modules/better-maps/modules/highlighting.js var areaHighlightingVrift, areaHighlightingFrox, areaHighlightingFloatingIslands, getProfilePic, addProfilePicToCurrentFloor, highlighting_default; var init_highlighting = __esm({ "src/modules/better-maps/modules/highlighting.js"() { init_utils2(); areaHighlightingVrift = () => { if ("rift_valour" !== getCurrentLocation()) { return false; } let currentFloorState = (user.quests.QuestRiftValour.floor || 0) % 8; if (user.quests.QuestRiftValour.is_at_eclipse) { currentFloorState = "eclipse"; if (user.enviroment_atts.active_augmentations.tu) { currentFloorState = "eclipse-uu"; } } else if ("farming" === user.quests.QuestRiftValour.state) { currentFloorState = "outside"; } const floorCategory = document.querySelector(`.mouse-category-wrapper.mouse-category-vrift-${currentFloorState}`); if (!floorCategory) { return false; } floorCategory.classList.add("mouse-category-current-floor"); return true; }; areaHighlightingFrox = () => { if ("fort_rox" !== getCurrentLocation()) { return false; } let mapArea = "day"; if (user.quests.QuestFortRox) { const phase = user.quests.QuestFortRox.current_phase || "day"; if ("day" === phase) { mapArea = "day"; } else if ("dawn" === phase) { mapArea = "dawn"; } else if ("night" === phase) { mapArea = "night"; } } const floorCategory = document.querySelector(`.mouse-category-wrapper.mouse-category-${mapArea}`); if (!floorCategory) { return false; } floorCategory.classList.add("mouse-category-current-floor"); return true; }; areaHighlightingFloatingIslands = () => { var _a, _b; if ("floating_islands" !== getCurrentLocation()) { return false; } const fiAtts = ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.hunting_site_atts) || {}; let islandType = ""; if (fiAtts.is_high_tier_island) { islandType = "hai"; } else if (fiAtts.is_low_tier_island) { islandType = "lai"; } else if (fiAtts.is_vault_island) { islandType = "sp"; } const powerTypeMappings = { arcn: "arcane", frgttn: "forgotten", hdr: "hydro", shdw: "shadow", drcnc: "draconic", law: "law", phscl: "physical", tctcl: "tactical" }; const islandPowerType = powerTypeMappings[fiAtts.island_power_type] || ""; const floorCategory = document.querySelector(`.mouse-category-wrapper.mouse-category-esp-${islandPowerType}`); if (!floorCategory) { return false; } floorCategory.classList.add("mouse-category-current-floor"); const floorSubCategory = document.querySelector(`.mouse-category-wrapper.mouse-category-esp-${islandPowerType} .mouse-subcategory-${islandType}`); if (floorSubCategory) { floorSubCategory.classList.add("mouse-subcategory-current-floor"); } return true; }; getProfilePic = () => __async(void 0, null, function* () { var _a, _b; const userData = yield doRequest("managers/ajax/pages/friends.php", { action: "get_friends_by_snuids", "snuids[]": user.sn_user_id }); return ((_b = (_a = userData == null ? void 0 : userData.friends) == null ? void 0 : _a[0]) == null ? void 0 : _b.profile_pic) || "https://www.mousehuntgame.com//images/ui/friends/anonymous_user.png"; }); addProfilePicToCurrentFloor = () => __async(void 0, null, function* () { const existing = document.querySelector("#mh-mapper-current-floor-profile-pic"); if (existing) { return; } const profPic = yield getProfilePic(); const styleElement = document.createElement("style"); styleElement.id = "mh-mapper-current-floor-profile-pic"; styleElement.innerHTML = `.mouse-category-wrapper.mouse-category-current-floor .mouse-category-header::after, .mouse-subcategory-wrapper.mouse-subcategory-current-floor .mouse-subcategory-header::after { background-image: url(${profPic}); }`; document.body.append(styleElement); }); highlighting_default = () => { const data = mapData(); if (!data) { return; } const mapType = data.map_type; const existing = document.querySelector(".mouse-category-current-floor"); if (existing) { existing.classList.remove("mouse-category-current-floor"); } let added = false; switch (mapType) { case "sky_palace": added = areaHighlightingFloatingIslands(); break; case "fort_rox": added = areaHighlightingFrox(); break; case "valour_rift": added = areaHighlightingVrift(); break; default: break; } if (added) { addProfilePicToCurrentFloor(); } }; } }); // src/data/map-groups.json var map_groups_default; var init_map_groups = __esm({ "src/data/map-groups.json"() { map_groups_default = { sky_palace: { categories: [ { name: "Arcane", id: "esp-arcane", icon: "/powertypes/arcane.png", color: "#b4ffff", mice: [ "sky_dancer", "sky_glass_glazier", "sky_glass_sorcerer", { mouse: "arcane_paragon", subcategory: "hai" }, { mouse: "sky_highborne", subcategory: "hai" }, { mouse: "empyrean_arcane_mouse", subcategory: "sp" } ] }, { name: "Draconic", id: "esp-draconic", icon: "/powertypes/draconic.png", color: "#cf9e64", mice: [ "dragon_breather", "dragon_lancer", "tiny_dragonfly", { mouse: "draconic_paragon", subcategory: "hai" }, { mouse: "regal_spearman", subcategory: "hai" }, { mouse: "empyrean_draconic_mouse", subcategory: "sp" } ] }, { name: "Forgotten", id: "esp-forgotten", icon: "/powertypes/forgotten.png", color: "#c37aa1", mice: [ "cumulost", "spry_sky_explorer", "spry_sky_seer", { mouse: "forgotten_paragon", subcategory: "hai" }, { mouse: "spheric_diviner", subcategory: "hai" }, { mouse: "empyrean_forgotten_mouse", subcategory: "sp" } ] }, { name: "Hydro", id: "esp-hydro", icon: "/powertypes/hydro.png", color: "#a0dcff", mice: [ "cute_cloud_conjurer", "nimbomancer", "sky_surfer", { mouse: "hydro_paragon", subcategory: "hai" }, { mouse: "mist_maker", subcategory: "hai" }, { mouse: "empyrean_hydro_mouse", subcategory: "sp" } ] }, { name: "Law", id: "esp-law", icon: "/powertypes/law.png", color: "#efcf86", mice: [ "devious_gentleman", "lawbender", "stack_of_thieves", { mouse: "law_paragon", subcategory: "hai" }, { mouse: "agent_m", subcategory: "hai" }, { mouse: "empyrean_law_mouse", subcategory: "sp" } ] }, { name: "Physical", id: "esp-physical", icon: "/powertypes/physical.png", color: "#d98181", mice: [ "ground_gavaleer", "heracles", "sky_swordsman", { mouse: "physical_paragon", subcategory: "hai" }, { mouse: "sky_squire", subcategory: "hai" }, { mouse: "empyrean_physical_mouse", subcategory: "sp" } ] }, { name: "Shadow", id: "esp-shadow", icon: "/powertypes/shadow.png", color: "#a4c0c1", mice: [ "astrological_astronomer", "overcaster", "stratocaster", { mouse: "shadow_paragon", subcategory: "hai" }, { mouse: "shadow_sage", subcategory: "hai" }, { mouse: "empyrean_shadow_mouse", subcategory: "sp" } ] }, { name: "Tactical", id: "esp-tactical", icon: "/powertypes/tactical.png", color: "#cc8282", mice: [ "gyrologer", "seasoned_islandographer", "worried_wayfinder", { mouse: "tactical_paragon", subcategory: "hai" }, { mouse: "captain_cloudkicker", subcategory: "hai" }, { mouse: "empyrean_tactical_mouse", subcategory: "sp" } ] }, { name: "Sky Palace", id: "esp-sky_palace", icon: "/items/stats/large/dd362c178b67d5e45fda7b2da273e7d6.png", color: "#a3fec4", mice: [ "empyrean_charm_hoarder", "empyrean_oreglass_miner", "empyrean_cloudstone_miner", "empyrean_treasure_guardian" ] }, { name: "Pirates", id: "esp-pirates", icon: "/items/bait/large/1e7bf5043a13043d8f1d05a752d55469.png", color: "#f173bf", mice: [ "admiral_cloudbeard", "cutthroat_cannoneer", "cutthroat_pirate", "mairitime_pirate", "empyrean_pirate", "scarlet_revenger", "suave_pirate" ] }, { name: "Other", icon: "/items/stats/large/66b6a6a48a0c83cec5a15a286bd17749.png", color: "#", mice: [ "daydreamer", "kite_flyer", "richard_rich", "empyrean_loot_cache_guardian" ] }, { name: "Wardens", id: "esp-wardens", icon: "/items/convertibles/large/017121852a8cc100b40bdaeae01485db.png", color: "#d3bdd3", mice: [ "fog_warden", "frost_warden", "rain_warden", "wind_warden" ] }, { name: "Launchpad", id: "esp-launchpad", icon: "/items/stats/large/66b6a6a48a0c83cec5a15a286bd17749.png", color: "#c2c2c2", mice: [ "cloud_miner", "launchpad_labourer", "sky_greaser", "skydiver" ] } ], subcategories: [ { id: "hai", name: "High Altitude Island" }, { id: "sp", name: "Sky Palace" } ] }, farming_and_fishing: { categories: [ { name: "Farm", id: "fofo-farm", icon: "/folklore_forest_upgrades/farm_plot_2_thumb.png", color: "#d7b18b", mice: [ "angry_aphid", "crazed_cultivator", "grit_grifter", "mighty_mite", "root_rummager", "wily_weevil", { mouse: "crazed_cultivator", subcategory: "sb" }, { mouse: "land_loafer", subcategory: "zero-plants" }, { mouse: "loathsome_locust", subcategory: "three-papyrus" } ] }, { name: "Prologue Pond", id: "fofo-pond", icon: "/folklore_forest_upgrades/tackle_box_thumb.png", color: "#c3def5", mice: [ "beachcomber", "sand_sifter", "tackle_tracker", { mouse: "covetous_coastguard", subcategory: "sb" } ] }, { name: "Prologue Pond", subtitle: "Grubben", icon: "/items/bait/large/90d54a45bde5a369b22d53ee5362e701.png", color: "#fbc3fa", mice: [ "pompous_perch", "careless_catfish", "melodramatic_minnow" ] }, { name: "Prologue Pond", subtitle: "Clamebert", icon: "/items/bait/large/bdef6fb2ed84af400a941e2fd1b0ec03.png", color: "#f3e0ff", mice: [ "nefarious_nautilus", "vicious_vampire_squid", "sinister_squid" ] }, { name: "Bosses", id: "fofo-bosses", icon: "/items/stats/large/262ee00dd81b7fbdf7a5a88b347e7847.png", color: "#fde671", mice: [ "monstrous_midge", "architeuthulhu_of_the_abyss" ] } ], subcategories: [ { id: "sb", name: "SUPER|brie+" }, { id: "zero-plants", name: "Zero Plants" }, { id: "three-papyrus", name: "Three Papyrus Plants" } ] }, folklore_forest_prelude: { categories: [ { name: "Farm", id: "fofo-farm", icon: "/folklore_forest_upgrades/farm_plot_2_thumb.png", color: "#d7b18b", mice: [ "angry_aphid", "grit_grifter", "crazed_cultivator", "mighty_mite", "wily_weevil", { mouse: "crazed_cultivator", subcategory: "sb" }, { mouse: "land_loafer", subcategory: "zero-plants" }, { mouse: "loathsome_locust", subcategory: "three-papyrus" } ] }, { name: "Prologue Pond", id: "fofo-pond", icon: "/folklore_forest_upgrades/tackle_box_thumb.png", color: "#c3def5", mice: [ "beachcomber", "sand_sifter", "tackle_tracker", { mouse: "covetous_coastguard", subcategory: "sb" } ] }, { name: "Prologue Pond", subtitle: "Grubben", icon: "/items/bait/large/90d54a45bde5a369b22d53ee5362e701.png", color: "#fbc3fa", mice: [ "pompous_perch", "careless_catfish", "melodramatic_minnow" ] }, { name: "Prologue Pond", subtitle: "Clamebert", icon: "/items/bait/large/bdef6fb2ed84af400a941e2fd1b0ec03.png", color: "#f3e0ff", mice: [ "nefarious_nautilus", "vicious_vampire_squid", "sinister_squid" ] }, { name: "Table of Contents", subtitle: "Not Writing", id: "fofo-toc-not-writing", icon: "/folklore_forest_upgrades/silver_quill_thumb.png", mice: [ "brothers_grimmaus", "hans_cheesetian_squeakersen", "madame_dormouse", { mouse: "matriarch_gander", subcategory: "sb" } ] }, { name: "Table of Contents", subtitle: "Writing", id: "fofo-toc-writing", icon: "/folklore_forest_upgrades/golden_quill_thumb.png", color: "#e9c390", mice: [ "humphrey_dumphrey", "little_bo_squeak", "little_miss_fluffet" ] }, { name: "Table of Contents", subtitle: "Writing - First Draft", id: "fofo-toc-first-draft", icon: "/items/bait/large/9782ba50ed4c64f8f8412563cf2ce709.png", mice: [ "fibbocchio", "pinkielina", "princess_and_the_olive" ] }, { name: "Table of Contents", subtitle: "Writing - Second Draft", id: "fofo-toc-second-draft", icon: "/items/bait/large/e0cb22771eba37bf047a801edbf7f91e.png", mice: [ "flamboyant_flautist", "greenbeard", "ice_regent" ] }, { name: "Bosses", id: "fofo-bosses", icon: "/items/stats/large/262ee00dd81b7fbdf7a5a88b347e7847.png", color: "#fde671", mice: [ "bitter_grammarian", "mythweaver", "monstrous_midge", "architeuthulhu_of_the_abyss" ] } ], subcategories: [ { id: "sb", name: "SUPER|brie+" }, { id: "zero-plants", name: "Zero Plants" }, { id: "three-papyrus", name: "Three Papyrus Plants" } ] }, valour_rift: { categories: [ { name: "Puppetry", subtitle: "Floors 1, 9, 17, 25", id: "vrift-1", color: "#EAF2D3", mice: [ "rift_gaunt_puppet", "rift_gaunt_puppet_champ" ] }, { name: "Thievery", subtitle: "Floors 2, 10, 18, 26", id: "vrift-2", color: "#acf28d", mice: [ "rift_gaunt_thief", "rift_gaunt_thief_champ" ] }, { name: "Melee", subtitle: "Floors 3, 11, 19, 27", id: "vrift-3", color: "#FCE5CD", mice: [ "rift_gaunt_melee", "rift_gaunt_melee_champ" ] }, { name: "Bard", subtitle: "Floors 4, 12, 20, 28", id: "vrift-4", color: "#F6B26B", mice: [ "rift_gaunt_bard", "rift_gaunt_bard_champ" ] }, { name: "Magic", subtitle: "Floors 5, 13, 21, 29", id: "vrift-5", color: "#F9CB9C", mice: [ "rift_gaunt_magic", "rift_gaunt_magic_champ" ] }, { name: "Noble", subtitle: "Floors 6, 14, 22, 30", id: "vrift-6", color: "#F4CCCC", mice: [ "rift_gaunt_noble", "rift_gaunt_noble_champ" ] }, { name: "Dusty", subtitle: "Floors 7, 15, 23, 31", id: "vrift-7", color: "#E06666", mice: [ "rift_gaunt_dust", "rift_gaunt_dust_champ" ] }, { name: "Non-UU", id: "vrift-eclipse", color: "#EA9999", mice: [ "rift_gaunt_eclipse" ] }, { name: "Ultimate Umbra", id: "vrift-eclipse-uu", color: "#ff8181", mice: [ "rift_gaunt_monster", "rift_gaunt_final_eclipse" ] }, { name: "Other", id: "vrift-other", color: "#B6D7A8", mice: [ "rift_gaunt_generic_one", "rift_gaunt_generic_three", "rift_gaunt_generic_two", "rift_gaunt_prestige_low", "rift_gaunt_prestige_med", "rift_gaunt_prestige_high", "rift_gaunt_rare" ] }, { name: "Outside", id: "vrift-outside", icon: "", color: "#d0def7", mice: [ "rift_gaunt_elixir_one", "rift_gaunt_elixir_two" ] } ], subcategories: [] }, rift_stalkers: { categories: [ { name: "Gnawnia Rift", color: "#f7e8f9", mice: [ "rift_white", "rift_dwarf", "rift_diamond", "rift_gold" ] }, { name: "Furoma Rift", subtitle: "Training Grounds", color: "#e5a571", mice: [ "rift_samurai", "rift_kung_fu", "rift_worker", "rift_ninja", "rift_dumpling_chef", "rift_archer" ] }, { name: "Furoma Rift", subtitle: "Pagoda", color: "#cb7136", mice: [ "rift_assassin", "rift_monk", "rift_fang_student", "rift_belt_student", "rift_claw_student", "rift_dojo_sensei", "rift_fang_master", "rift_claw_master", "rift_belt_master", "rift_dojo_master" ] }, { name: "Bristle Woods Rift", mice: [ "rift_acolyte", "rift_chrono", "rift_gargoyle", "rift_golem", "rift_gorgon", "rift_keeper", "rift_keepers_assistant", "rift_lich", "rift_ooze", "rift_reaper", "rift_scavenger", "rift_skeleton", "rift_sorcerer", "rift_spectre", "rift_spider", "rift_terror_knight", "rift_wight" ] } ] }, rift_walkers: { categories: [ { name: "Gnawnia Rift", color: "#f7e8f9", mice: [ "rift_field", "rift_bionic", "rift_granite", "rift_steel", "rift_white", "rift_grey", "rift_brown", "rift_lightning", "rift_dwarf", "rift_tiny", "rift_cowardly", "rift_spotted", "rift_flying", "rift_mole", "rift_diamond", "rift_gold" ] } ] }, queso_canyon_grand_tour: { categories: [ { name: "KSS", id: "kss", color: "#96b9dc", icon: "/powertypes/draconic.png", mice: [ "geyser_eruption_dragon_wildfire", "geyser_eruption_dragon_epic" ] }, { name: "Cinder-Brut", id: "cinder-brut", color: "#7fff66", icon: "/powertypes/draconic.png", mice: [ "geyser_eruption_dragon_large", "geyser_eruption_dragon_flaming" ] }, { name: "BE Trio", id: "be-trio", color: "#ffb1b1", icon: "/powertypes/draconic.png", mice: [ "geyser_eruption_dragon_hot", "geyser_eruption_dragon_medium", "geyser_eruption_dragon_medium_spice" ] }, { name: "Sizzle Mild", id: "sizzle-mild", color: "#ffc816", icon: "/powertypes/draconic.png", mice: [ "geyser_eruption_dragon_small", "geyser_eruption_dragon_mild" ] }, { name: "Pressure Set", id: "pressure-set", color: "#dcb8ff", icon: "/items/stats/transparent_thumb/209ca347c42ff56071ddd50f087a5bb8.png?cv=2", mice: [ "geyser_pressure_builder_hot", "geyser_pressure_builder_medium", "geyser_pressure_builder_mild", "geyser_pressure_builder_flaming" ] }, { name: "Corky & Friends", id: "corky-friends", color: "#f4c47e", icon: "/items/crafting_items/transparent_thumb/17907f705fe8e7fa8f7b94f058e11ae5.png?cv=2", mice: [ "geyser_cork_dropper_bland", "geyser_cork_dropper_medium", "geyser_cork_dropper_mild", "geyser_cork_dropper_hot", "geyser_cork_dropper_rare", "geyser_cork_dropper_flaming" ] }, { name: "Queso River", id: "queso-river", color: "#89e8a9", icon: "/powertypes/law.png", mice: [ "croquet_crusher", "pump_raider", "sleepy_merchant", "tiny_saboteur" ] }, { name: "Prickly Plains", id: "prickly-plains", color: "#cddb75", icon: "/powertypes/arcane.png", mice: [ { mouse: "spice_grower", subcategory: "mild" }, { mouse: "spice_collector", subcategory: "bland" }, { mouse: "spice_farmer", subcategory: "mild" }, { mouse: "spice_finder", subcategory: "medium" }, { mouse: "spice_raider", subcategory: "hot" }, { mouse: "spice_reaper", subcategory: "hot" }, { mouse: "spice_seer", subcategory: "bland" }, { mouse: "spice_sovereign", subcategory: "medium" } ] }, { name: "Cantera Quarry", id: "cantera-quarry", color: "#e9b2db", icon: "/powertypes/shadow.png", mice: [ { mouse: "chip_chiseler", subcategory: "bland" }, { mouse: "fiery_crusher", subcategory: "hot" }, { mouse: "grampa_golem", subcategory: "hot" }, { mouse: "nachore_golem", subcategory: "medium" }, { mouse: "ore_chipper", subcategory: "mild" }, { mouse: "rubble_rouser", subcategory: "medium" }, { mouse: "rubble_rummager", subcategory: "mild" }, { mouse: "tiny_toppler", subcategory: "bland" } ] } ], subcategories: [ { id: "bland", name: "Bland Queso" }, { id: "medium", name: "Medium Queso" }, { id: "mild", name: "Mild Queso" }, { id: "hot", name: "Hot Queso" } ] }, fort_rox: { categories: [ { name: "Night", id: "night", color: "#d0d0d0", icon: "", mice: [ "were_alpha", "moonstone_slinger", "mischievous_wereminer", "wealthy_werewarrior" ] }, { name: "First Light / Utter Darkness", id: "first-light-utter-darkness", color: "#dc8ec7", icon: "/powertypes/arcane.png", mice: [ "arcane_summoner", "cursed_taskmaster", "moonstone_golem", "moonstone_mystic", "night_watcher", "nightfire_wallbreak" ] }, { name: "Twilight, Midnight, Pitch", id: "twilight-midnight-pitch", color: "#84c3ff", icon: "/powertypes/shadow.png", mice: [ "good_supply_night", "nightmancer", "reveling_lycanthrope", "werehauler", "wereminer" ] }, { name: "Dawn", id: "dawn", color: "#f9d65a", icon: "/powertypes/arcane.png", mice: [ "dawn_guardian", "monster_of_the_meteor" ] }, { name: "Day", id: "day", color: "#ffdb9c", icon: "/powertypes/law.png", mice: [ "hardworking_hauler", "moonstone_snacker", "moonstone_miner", "good_supply_day", "mischievous_moonstone_miner" ] } ] }, warpath: { categories: [ { name: "Wave 1", color: "#f1d16f", mice: [ "desert_scout_weak", "desert_warrior_weak", "desert_archer_weak" ] }, { name: "Wave 2", color: "#ea947b", mice: [ "desert_mage", "desert_archer", "desert_warrior", "desert_scout", "desert_cavalry" ] }, { name: "Wave 3", color: "#ff7249", mice: [ "desert_artillery", "desert_mage_strong", "desert_scout_epic", "desert_archer_epic", "desert_cavalry_strong", "desert_warrior_epic" ] }, { name: "Wave 4", color: "#ffad49", mice: [ "desert_elite_gaurd", "desert_boss" ] }, { name: "Any wave", color: "#fffcb2", mice: [ "desert_beast", "desert_supply", "desert_general" ] } ] }, halloween_treat_2021: { categories: [ { name: "Standard", id: "standard", icon: "/items/bait/large/bb0fe6fa6f55e5ccb1f98dea058409e0.png?cv=2", color: "#fefa76", mice: [ "grey_recluse", "hween_cobweb", "vampira", "zombot_unipire", "candy_cat", "candy_goblin", "shortcut", "tricky_witch", "sweet_tooth" ] }, { name: "Monterey Jack-O-Lantern", id: "monterey-Jack", icon: "/items/bait/large/65fd19bf5b16dcaa6b3cfebd2f55348c.png?cv=2", color: "#f9a645", mice: [ "sprit_light", "gordborg", "pumpkin_hoarder", "trick", "treat", "chainsaw", "maize_harvester" ] } ] }, halloween_trick_2021: { categories: [ { name: "Bonefort", id: "bonefort", icon: "/items/bait/large/e6ac92f19a6ac930aad02e317cf8e6e8.png?cv=2", color: "#bfbfbf", mice: [ "creepy_marionette", "dire_lycan", "grave_digger", "hollowhead", "hween_2014_boss", "hween_2016_boss", "hween_2013_boss", "rift_grave_digger" ] }, { name: "Polter-Geitost", id: "polter-geitost", icon: "/items/bait/large/04d69ccc7a5b1578cdf90b9651fb2315.png?cv=2", color: "#84bde6", mice: [ "hween_2018_boss", "hween_2017_boss", "rift_ghost_pirate", "gourd_ghoul", "scorned_pirate", "spectral_butler", "spectral_swashbuckler" ] }, { name: "Scream", id: "scream", icon: "/items/bait/large/fe9d538d1a811bdb787b78aa1526ee50.png?cv=2", color: "#86dd6c", mice: [ "hween_2021_boss", "hween_2015_boss", "hollowed_demon", "hollowed_minion", "hween_2012_boss" ] } ] }, naughty_f_list: { categories: [ { name: "Anywhere", id: "anywhere", icon: "/items/stats/large/680f6a68612ca9181a90b5719b20ef78.png?cv=2", color: "#3f8bae", mice: [ "hoarder", { mouse: "winter_hunt_toy_strong", subcategory: "pp" }, { mouse: "stuck_snowball", subcategory: "pp" }, { mouse: "glazed", subcategory: "pp" }, { mouse: "joy", subcategory: "gpp" } ] }, { name: "Cinnamon Hill", id: "cinnamon_hill", icon: "/environments/9116f87ec4f9ef3be13a1a833a61aec4.jpg?cv=2", color: "#c76e39", mice: [ "candy_cane", "nice_knitting", "winter_boss_2019", "snow_scavenger", "toboggan_technician", "green_circle_boss", { mouse: "triple_lutz", subcategory: "pp" }, { mouse: "black_diamond_racer", subcategory: "pp" }, { mouse: "double_black_diamond", subcategory: "pp" }, { mouse: "free_skiing", subcategory: "pp" }, { mouse: "winter_boss_2020", subcategory: "pp" }, { mouse: "nitro_racer", subcategory: "pp" }, { mouse: "winter_boss_2021", subcategory: "pp" }, { mouse: "winter_boss_2015", subcategory: "pp" }, { mouse: "snowball_general_one", subcategory: "pp" }, { mouse: "golem_jockey", subcategory: "pp" }, { mouse: "snowball_hoarder", subcategory: "pp" }, { mouse: "sporty_ski_instructor", subcategory: "pp" }, { mouse: "wreath_thief", subcategory: "pp" }, { mouse: "new_year_flight", subcategory: "pp" } ] }, { name: "Golem Workshop", id: "golem_workshop", icon: "/environments/bbd5eeca404e57ec2ffb9d9a108361a2.jpg?cv=2", color: "#9ab1b4", mice: [ "gingerbread", "greedy_al", "winter_future", "winter_past", "winter_present", { mouse: "scrooge", subcategory: "sb" }, { mouse: "ribbon", subcategory: "pp" }, { mouse: "christmas_tree", subcategory: "pp" }, { mouse: "winter_hunt_toy", subcategory: "pp" }, { mouse: "elf", subcategory: "pp" }, { mouse: "mad_elf", subcategory: "pp" }, { mouse: "nutcracker", subcategory: "pp" }, { mouse: "ornament", subcategory: "pp" }, { mouse: "present", subcategory: "pp" }, { mouse: "ridiculous_sweater", subcategory: "pp" }, { mouse: "snowman_architect", subcategory: "pp" }, { mouse: "stocking", subcategory: "pp" }, { mouse: "toy", subcategory: "pp" }, { mouse: "toy_builder", subcategory: "pp" }, { mouse: "disco_ball_head", subcategory: "pp" } ] }, { name: "Ice Fortress", id: "ice_fortress", icon: "/environments/15d8d9d837b22b31707d06f412b78e0d.jpg?cv=2", color: "#cc85fe", mice: [ "confused_courier", "frigid_foreman", "miser", "missle_toe", "snowblower", "snowglobe", "builder", { mouse: "builder", subcategory: "pp" }, { mouse: "winter_boss_2014", subcategory: "pp" }, { mouse: "glacia_ice_fist", subcategory: "pp" }, { mouse: "winter_boss_2016", subcategory: "pp" }, { mouse: "winter_boss_2018", subcategory: "pp" }, { mouse: "winter_boss_2017", subcategory: "pp" }, { mouse: "snowball_general_two", subcategory: "pp" }, { mouse: "snowball_bully", subcategory: "pp" }, { mouse: "slay", subcategory: "pp" }, { mouse: "snow_fort", subcategory: "pp" }, { mouse: "snowball_general_three", subcategory: "pp" }, { mouse: "squeaker_claws", subcategory: "pp" }, { mouse: "tundra_huntress", subcategory: "pp" }, { mouse: "new_years", subcategory: "pp" }, { mouse: "winter_boss_2022", subcategory: "boss" } ] } ], subcategories: [ { id: "pp", name: "Pecan Pecorino" }, { id: "gpp", name: "Glazed Pecan Pecorino" }, { id: "sb", name: "SUPER|brie+" }, { id: "boss", name: "Boss" } ] }, nice_f_list: { categories: [ { name: "Anywhere", id: "anywhere", icon: "/items/stats/large/680f6a68612ca9181a90b5719b20ef78.png?cv=2", color: "#3f8bae", mice: [ "hoarder", { mouse: "winter_hunt_toy_strong", subcategory: "pp" }, { mouse: "stuck_snowball", subcategory: "pp" }, { mouse: "glazed", subcategory: "pp" }, { mouse: "joy", subcategory: "gpp" } ] }, { name: "Cinnamon Hill", id: "cinnamon_hill", icon: "/environments/9116f87ec4f9ef3be13a1a833a61aec4.jpg?cv=2", color: "#c76e39", mice: [ "candy_cane", "nice_knitting", "winter_boss_2019", "snow_scavenger", "toboggan_technician", "green_circle_boss", { mouse: "triple_lutz", subcategory: "pp" }, { mouse: "black_diamond_racer", subcategory: "pp" }, { mouse: "double_black_diamond", subcategory: "pp" }, { mouse: "free_skiing", subcategory: "pp" }, { mouse: "winter_boss_2020", subcategory: "pp" }, { mouse: "nitro_racer", subcategory: "pp" }, { mouse: "winter_boss_2021", subcategory: "pp" }, { mouse: "winter_boss_2015", subcategory: "pp" }, { mouse: "snowball_general_one", subcategory: "pp" }, { mouse: "golem_jockey", subcategory: "pp" }, { mouse: "snowball_hoarder", subcategory: "pp" }, { mouse: "sporty_ski_instructor", subcategory: "pp" }, { mouse: "wreath_thief", subcategory: "pp" }, { mouse: "new_year_flight", subcategory: "pp" } ] }, { name: "Golem Workshop", id: "golem_workshop", icon: "/environments/bbd5eeca404e57ec2ffb9d9a108361a2.jpg?cv=2", color: "#9ab1b4", mice: [ "gingerbread", "greedy_al", "winter_future", "winter_past", "winter_present", { mouse: "scrooge", subcategory: "sb" }, { mouse: "ribbon", subcategory: "pp" }, { mouse: "christmas_tree", subcategory: "pp" }, { mouse: "winter_hunt_toy", subcategory: "pp" }, { mouse: "elf", subcategory: "pp" }, { mouse: "mad_elf", subcategory: "pp" }, { mouse: "nutcracker", subcategory: "pp" }, { mouse: "ornament", subcategory: "pp" }, { mouse: "present", subcategory: "pp" }, { mouse: "ridiculous_sweater", subcategory: "pp" }, { mouse: "snowman_architect", subcategory: "pp" }, { mouse: "stocking", subcategory: "pp" }, { mouse: "toy", subcategory: "pp" }, { mouse: "toy_builder", subcategory: "pp" }, { mouse: "disco_ball_head", subcategory: "pp" } ] }, { name: "Ice Fortress", id: "ice_fortress", icon: "/environments/15d8d9d837b22b31707d06f412b78e0d.jpg?cv=2", color: "#cc85fe", mice: [ "confused_courier", "frigid_foreman", "miser", "missle_toe", "snowblower", "snowglobe", "builder", { mouse: "builder", subcategory: "pp" }, { mouse: "winter_boss_2014", subcategory: "pp" }, { mouse: "glacia_ice_fist", subcategory: "pp" }, { mouse: "winter_boss_2016", subcategory: "pp" }, { mouse: "winter_boss_2018", subcategory: "pp" }, { mouse: "winter_boss_2017", subcategory: "pp" }, { mouse: "snowball_general_two", subcategory: "pp" }, { mouse: "snowball_bully", subcategory: "pp" }, { mouse: "slay", subcategory: "pp" }, { mouse: "snow_fort", subcategory: "pp" }, { mouse: "snowball_general_three", subcategory: "pp" }, { mouse: "squeaker_claws", subcategory: "pp" }, { mouse: "tundra_huntress", subcategory: "pp" }, { mouse: "new_years", subcategory: "pp" }, { mouse: "winter_boss_2022", subcategory: "boss" } ] } ], subcategories: [ { id: "pp", name: "Pecan Pecorino" }, { id: "gpp", name: "Glazed Pecan Pecorino" }, { id: "sb", name: "SUPER|brie+" }, { id: "boss", name: "Boss" } ] }, new_years: { categories: [ { name: "Anywhere", id: "anywhere", icon: "/items/stats/large/680f6a68612ca9181a90b5719b20ef78.png?cv=2", color: "#3f8bae", mice: [ "hoarder", { mouse: "winter_hunt_toy_strong", subcategory: "pp" }, { mouse: "stuck_snowball", subcategory: "pp" }, { mouse: "glazed", subcategory: "pp" }, { mouse: "joy", subcategory: "gpp" } ] }, { name: "Cinnamon Hill", id: "cinnamon_hill", icon: "/environments/9116f87ec4f9ef3be13a1a833a61aec4.jpg?cv=2", color: "#c76e39", mice: [ "candy_cane", "nice_knitting", "winter_boss_2019", "snow_scavenger", "toboggan_technician", "green_circle_boss", { mouse: "triple_lutz", subcategory: "pp" }, { mouse: "black_diamond_racer", subcategory: "pp" }, { mouse: "double_black_diamond", subcategory: "pp" }, { mouse: "free_skiing", subcategory: "pp" }, { mouse: "winter_boss_2020", subcategory: "pp" }, { mouse: "nitro_racer", subcategory: "pp" }, { mouse: "winter_boss_2021", subcategory: "pp" }, { mouse: "winter_boss_2015", subcategory: "pp" }, { mouse: "snowball_general_one", subcategory: "pp" }, { mouse: "golem_jockey", subcategory: "pp" }, { mouse: "snowball_hoarder", subcategory: "pp" }, { mouse: "sporty_ski_instructor", subcategory: "pp" }, { mouse: "wreath_thief", subcategory: "pp" }, { mouse: "new_year_flight", subcategory: "pp" } ] }, { name: "Golem Workshop", id: "golem_workshop", icon: "/environments/bbd5eeca404e57ec2ffb9d9a108361a2.jpg?cv=2", color: "#9ab1b4", mice: [ "gingerbread", "greedy_al", "winter_future", "winter_past", "winter_present", { mouse: "scrooge", subcategory: "sb" }, { mouse: "ribbon", subcategory: "pp" }, { mouse: "christmas_tree", subcategory: "pp" }, { mouse: "winter_hunt_toy", subcategory: "pp" }, { mouse: "elf", subcategory: "pp" }, { mouse: "mad_elf", subcategory: "pp" }, { mouse: "nutcracker", subcategory: "pp" }, { mouse: "ornament", subcategory: "pp" }, { mouse: "present", subcategory: "pp" }, { mouse: "ridiculous_sweater", subcategory: "pp" }, { mouse: "snowman_architect", subcategory: "pp" }, { mouse: "stocking", subcategory: "pp" }, { mouse: "toy", subcategory: "pp" }, { mouse: "toy_builder", subcategory: "pp" }, { mouse: "disco_ball_head", subcategory: "pp" } ] }, { name: "Ice Fortress", id: "ice_fortress", icon: "/environments/15d8d9d837b22b31707d06f412b78e0d.jpg?cv=2", color: "#cc85fe", mice: [ "confused_courier", "frigid_foreman", "miser", "missle_toe", "snowblower", "snowglobe", "builder", { mouse: "builder", subcategory: "pp" }, { mouse: "winter_boss_2014", subcategory: "pp" }, { mouse: "glacia_ice_fist", subcategory: "pp" }, { mouse: "winter_boss_2016", subcategory: "pp" }, { mouse: "winter_boss_2018", subcategory: "pp" }, { mouse: "winter_boss_2017", subcategory: "pp" }, { mouse: "snowball_general_two", subcategory: "pp" }, { mouse: "snowball_bully", subcategory: "pp" }, { mouse: "slay", subcategory: "pp" }, { mouse: "snow_fort", subcategory: "pp" }, { mouse: "snowball_general_three", subcategory: "pp" }, { mouse: "squeaker_claws", subcategory: "pp" }, { mouse: "tundra_huntress", subcategory: "pp" }, { mouse: "new_years", subcategory: "pp" }, { mouse: "winter_boss_2022", subcategory: "boss" } ] } ], subcategories: [ { id: "pp", name: "Pecan Pecorino" }, { id: "gpp", name: "Glazed Pecan Pecorino" }, { id: "sb", name: "SUPER|brie+" }, { id: "boss", name: "Boss" } ] }, lunar_new_year_list: { categories: [ { name: "Standard", id: "anywhere", icon: "/items/stats/large/2b92cfc72df4733942a9d7f63d1f3378.png", color: "#b9d1ff", mice: [ "costumed_dog", "costumed_dragon", "costumed_horse", "costumed_monkey", "costumed_ox", "costumed_pig", "costumed_rabbit", "costumed_rat", "costumed_rooster", "costumed_sheep", "costumed_snake", "costumed_tiger" ] }, { name: "Dumpling", id: "dumpling", icon: "/items/bait/large/f4c3ee4bb9aba29938223172a791650b.png", color: "#ffefb9", mice: [ "calligraphy", "dumpling_chef", "red_envelope" ] }, { name: "Nian Gao'da", id: "ngd", icon: "/items/bait/large/d4813a69fff0b714f79976a726b7ce66.png", color: "#ffa4a4", mice: [ "red_candle" ] } ] }, birthday_f_list: { categories: [ { name: "Mixing Room", id: "mixing-room", icon: "/ui/events/birthday_factory/item_mixing_rod.png?asset_cache_version=2", color: "#0aebdd", mice: [ "force_fighter_blue", "force_fighter_green", "force_fighter_pink", "force_fighter_red", "force_fighter_yellow", "super_fighterbot_megasupreme" ] }, { name: "Pumping Room", id: "pumping-room", icon: "/ui/events/birthday_factory/item_pressurized_pump.png?asset_cache_version=2", color: "#fca00a", mice: [ "reality_restitch", "time_punk", "time_tailor", "time_thief", "time_plumber" ] }, { name: "Break Room", id: "break-room", icon: "/ui/events/birthday_factory/item_circuit_breaker.png?asset_cache_version=2", color: "#ea8cab", mice: [ "breakdancer", "fromager_mouse", "dance_party", "dance_boss", "para_para_dancer" ] }, { name: "QA Room", id: "qa-room", icon: "/ui/events/birthday_factory/item_quality_cog.png?asset_cache_version=2", color: "#fbabff", mice: [ "cupcake_candle_thief", "cupcake_cutie", "sprinkley_sweet", "cupcake_camo", "cupcake_runner" ] }, { name: "Any Room", id: "any-room", icon: "/items/bait/large/39a63a48084383a7eb07d64c74357544.png", color: "#ffeeca", mice: [ "buckethead", "present", "pintail", "dinosuit", "sleepwalker", "terrible_twos", { mouse: "factory_technician", subcategory: "frc" }, { mouse: "cheesy_party", subcategory: "sb" } ] } ], subcategories: [ { id: "frc", name: "Factory Repair Charm" }, { id: "sb", name: "SUPER|brie+" } ] }, birthday_2019_gilded: { categories: [ { name: "Mixing Room", id: "mixing-room", icon: "/ui/events/birthday_factory/item_mixing_rod.png?asset_cache_version=2", color: "#0aebdd", mice: [ "force_fighter_blue", "force_fighter_green", "force_fighter_pink", "force_fighter_red", "force_fighter_yellow", "super_fighterbot_megasupreme" ] }, { name: "Pumping Room", id: "pumping-room", icon: "/ui/events/birthday_factory/item_pressurized_pump.png?asset_cache_version=2", color: "#fca00a", mice: [ "reality_restitch", "time_punk", "time_tailor", "time_thief", "time_plumber" ] }, { name: "Break Room", id: "break-room", icon: "/ui/events/birthday_factory/item_circuit_breaker.png?asset_cache_version=2", color: "#ea8cab", mice: [ "breakdancer", "fromager_mouse", "dance_party", "dance_boss", "para_para_dancer" ] }, { name: "QA Room", id: "qa-room", icon: "/ui/events/birthday_factory/item_quality_cog.png?asset_cache_version=2", color: "#fbabff", mice: [ "cupcake_candle_thief", "cupcake_cutie", "sprinkley_sweet", "cupcake_camo", "cupcake_runner" ] }, { name: "Any Room", id: "any-room", icon: "/items/bait/large/39a63a48084383a7eb07d64c74357544.png", color: "#ffeeca", mice: [ "buckethead", "present", "pintail", "dinosuit", "sleepwalker", "terrible_twos", { mouse: "factory_technician", subcategory: "frc" }, { mouse: "cheesy_party", subcategory: "sb" } ] } ], subcategories: [ { id: "frc", name: "Factory Repair Charm" }, { id: "sb", name: "SUPER|brie+" } ] }, birthday_2021_gilded_party_size: { categories: [ { name: "Mixing Room", id: "mixing-room", icon: "/ui/events/birthday_factory/item_mixing_rod.png?asset_cache_version=2", color: "#0aebdd", mice: [ "force_fighter_blue", "force_fighter_green", "force_fighter_pink", "force_fighter_red", "force_fighter_yellow", "super_fighterbot_megasupreme" ] }, { name: "Pumping Room", id: "pumping-room", icon: "/ui/events/birthday_factory/item_pressurized_pump.png?asset_cache_version=2", color: "#fca00a", mice: [ "reality_restitch", "time_punk", "time_tailor", "time_thief", "time_plumber" ] }, { name: "Break Room", id: "break-room", icon: "/ui/events/birthday_factory/item_circuit_breaker.png?asset_cache_version=2", color: "#ea8cab", mice: [ "breakdancer", "fromager_mouse", "dance_party", "dance_boss", "para_para_dancer" ] }, { name: "QA Room", id: "qa-room", icon: "/ui/events/birthday_factory/item_quality_cog.png?asset_cache_version=2", color: "#fbabff", mice: [ "cupcake_candle_thief", "cupcake_cutie", "sprinkley_sweet", "cupcake_camo", "cupcake_runner" ] }, { name: "Any Room", id: "any-room", icon: "/items/bait/large/39a63a48084383a7eb07d64c74357544.png", color: "#ffeeca", mice: [ "buckethead", "present", "pintail", "dinosuit", "sleepwalker", "terrible_twos", { mouse: "factory_technician", subcategory: "frc" }, { mouse: "cheesy_party", subcategory: "sb" } ] } ], subcategories: [ { id: "frc", name: "Factory Repair Charm" }, { id: "sb", name: "SUPER|brie+" } ] }, bountiful_beanstalk: { categories: [ { name: "Beanstalk", id: "beanstalk", icon: "", color: "#45890e", mice: [ "budrich_thornborn", "leafton_beanwell", "herbaceous_bravestalk", { mouse: "vinneus_stalkhome", subcategory: "boss" } ] }, { name: "Dungeon", id: "dungeon", icon: "", color: "#919ac7", mice: [ "peaceful_prisoner", "diminutive_detainee", "smug_smuggler", { mouse: "cell_sweeper", subcategory: "beanster" }, { mouse: "jovial_jailor", subcategory: "beanster" }, { mouse: "lethargic_guard", subcategory: "beanster" }, { mouse: "gate_keeper", subcategory: "lavish" }, { mouse: "key_master", subcategory: "royal" }, { mouse: "wrathful_warden", subcategory: "royal" }, { mouse: "dungeon_master", subcategory: "boss" } ] }, { name: "Ballroom", id: "ballroom", icon: "", color: "#e0b1b2", mice: [ "whimsical_waltzer", "sassy_salsa_dancer", "baroque_dancer", { mouse: "obstinate_oboist", subcategory: "beanster" }, { mouse: "peevish_piccoloist", subcategory: "beanster" }, { mouse: "sultry_saxophonist", subcategory: "beanster" }, { mouse: "violent_violinist", subcategory: "lavish" }, { mouse: "Chafed Cellis", subcategory: "lavish" }, { mouse: "treacherous_tubaist", subcategory: "royal" }, { mouse: "malevolent_maestro", subcategory: "boss" } ] }, { name: "Great Hall", id: "great-hall", icon: "", color: "#d68d0a", mice: [ "clumsy_cupbearer", "plotting_page", "scheming_squire", { mouse: "vindictive_viscount", subcategory: "beanster" }, { mouse: "baroness_von_bean", subcategory: "beanster" }, { mouse: "cagey_countess", subcategory: "beanster" }, { mouse: "dastardly_duchess", subcategory: "lavish" }, { mouse: "malicious_marquis", subcategory: "lavish" }, { mouse: "pernicious_prince", subcategory: "royal" }, { mouse: "mythical_giant_king", subcategory: "boss" } ] } ], subcategories: [ { id: "beanster", name: "Beanster" }, { id: "Lavish", name: "Lavish Beanster" }, { id: "royal", nme: "Royal Beanster" }, { id: "boss", name: "Boss" } ] } }; } }); // src/modules/better-maps/modules/tab-sorted.js var getMouseDataForMap, makeMouseDiv, makeSortedPageWrapper, makeSortedMiceList, makeScavengerSortedPage, makeGenericSortedPage, moveTabToBody, processSortedTabClick, addSortedMapTab, showSortedTab, hideSortedTab; var init_tab_sorted = __esm({ "src/modules/better-maps/modules/tab-sorted.js"() { init_utils2(); init_toggle_ar(); init_highlighting(); init_map_groups(); getMouseDataForMap = (currentMapData, type = "mouse") => { let unsortedMice = []; if (currentMapData.goals[type]) { unsortedMice = currentMapData.goals[type]; } let caughtMice = []; currentMapData.hunters.forEach((hunter) => { caughtMice = [...caughtMice, ...hunter.completed_goal_ids[type]]; }); unsortedMice = unsortedMice.filter((mouse) => { return !caughtMice.includes(mouse.unique_id); }); let categories2 = []; if (map_groups_default[currentMapData.map_type] && map_groups_default[currentMapData.map_type].categories) { categories2 = map_groups_default[currentMapData.map_type].categories; } let subcategories = []; if (map_groups_default[currentMapData.map_type] && map_groups_default[currentMapData.map_type].subcategories) { subcategories = map_groups_default[currentMapData.map_type].subcategories; } return { unsortedMice, categories: categories2, subcategories, getMouseDataForMap }; }; makeMouseDiv = (mouse, type = "mouse") => __async(void 0, null, function* () { const mouseDiv = makeElement("div", "mouse-container"); mouseDiv.setAttribute("data-mouse-id", mouse.unique_id); mouseDiv.setAttribute("data-mouse-type", mouse.type); mouseDiv.setAttribute("data-type", type); const mouseData = makeElement("div", "mouse-data"); const mouseImage = makeElement("img", "mouse-image"); mouseImage.src = "mouse" === type ? mouse.small : mouse.thumb; mouseImage.alt = mouse.name; mouseData.append(mouseImage); makeElement("div", "mouse-name", mouse.name, mouseData); const mouseAr = yield getArEl(mouse.unique_id, type); if (mouseAr) { mouseData.append(mouseAr); } mouseDiv.append(mouseData); const mouseExtraInfoWrapper = makeElement("div", "mouse-mhct-extra-info-wrapper"); const mouseExtraInfo = makeElement("div", "mouse-extra-info"); if (Array.isArray(mouse.environment_ids)) { const locationText = makeElement("div", "location-text-wrapper"); makeElement("span", "location-text", "Found in ", locationText); mouse.environment_ids.forEach((environmentID, index) => { const environment = mapData().environments.find((env) => env.id === environmentID); if (environment) { const locationLink = makeElement("a", "mouse-location-link", environment.name); locationLink.title = `Travel to ${environment.name}`; locationLink.setAttribute("data-environment-id", environment.id); locationLink.addEventListener("click", () => { showTravelConfirmationNoDetails(environment); }); if (index !== 0) { locationText.append(document.createTextNode(", ")); } locationText.append(locationLink); } }); mouseExtraInfo.append(locationText); } if (mouse.weaknesses) { const weakness = makeElement("div", "mouse-weakness"); mouse.weaknesses.forEach((weaknessType) => { if (weaknessType.power_types.length === 0) { return; } const weaknessTypeDiv = makeElement("div", "weakness-type"); makeElement("div", "weakness-name", weaknessType.name, weaknessTypeDiv); const powerTypes = makeElement("div", "power-types"); weaknessType.power_types.forEach((pType) => { const powerType = document.createElement("img"); powerType.src = `https://www.mousehuntgame.com/images/powertypes/${pType.name}.png`; powerTypes.append(powerType); }); weaknessTypeDiv.append(powerTypes); weakness.append(weaknessTypeDiv); }); mouseExtraInfo.append(weakness); } mouseExtraInfoWrapper.append(mouseExtraInfo); mouseDiv.append(mouseExtraInfoWrapper); mouseDiv.addEventListener("click", () => __async(void 0, null, function* () { const isSelected = mouseDiv.classList.contains("mouse-container-selected"); if (isSelected) { mouseDiv.classList.remove("mouse-container-selected"); return; } addMHCTData(mouse, mouseExtraInfo, type); const addClass2 = !mouseDiv.classList.contains("mouse-container-selected"); const allSelected = document.querySelectorAll(".mouse-container-selected"); if (allSelected) { allSelected.forEach((selected) => { selected.classList.remove("mouse-container-selected"); }); } if (addClass2) { mouseDiv.classList.add("mouse-container-selected"); } })); return mouseDiv; }); makeSortedPageWrapper = () => { const sortedPage = makeElement("div", "sorted-page"); makeElement("div", ["sorted-loading", "mousehuntPage-loading", "active"], "", sortedPage); makeElement("div", "sorted-page-content", "", sortedPage); return sortedPage; }; makeSortedMiceList = () => __async(void 0, null, function* () { const currentMapData = getMapData(mapData().map_id); const { unsortedMice, categories: categories2, subcategories } = getMouseDataForMap(currentMapData); const target = document.querySelector(".sorted-page-content"); if (!target) { return; } const categoriesWrapper = makeElement("div", "mouse-category-container"); for (const category of categories2) { const categoryID = category.id; const categoryWrapper = makeElement("div", "mouse-category-wrapper"); categoryWrapper.classList.add(`mouse-category-${categoryID}`, "mouse-category-wrapper-hidden"); const categoryHeader = makeElement("div", "mouse-category-header"); if (category.color) { categoryWrapper.style.backgroundColor = category.color; } const iconTitleWrapper = makeElement("div", "mouse-category-icon-title-wrapper"); if (category.icon) { const categoryIcon = makeElement("img", "mouse-category-icon"); categoryIcon.src = category.icon.indexOf("/") === 0 ? `https://www.mousehuntgame.com/images${category.icon}` : category.icon; iconTitleWrapper.append(categoryIcon); } const iconTitleTitleWrapper = makeElement("div", "mouse-category-icon-title-title-wrapper"); makeElement("div", "mouse-category-title", category.name, iconTitleTitleWrapper); makeElement("div", "mouse-category-subtitle", category.subtitle, iconTitleTitleWrapper); iconTitleWrapper.append(iconTitleTitleWrapper); categoryHeader.append(iconTitleWrapper); categoryWrapper.append(categoryHeader); const categoryMice = makeElement("div", "mouse-category-mice"); const addToSubCat = []; category.mice.sort((a, b) => { if (a.name < b.name) { return -1; } return 1; }); for (const mouse of category.mice) { let hasSubCat = false; let mouseType = mouse; if (typeof mouse === "object" && mouse.subcategory) { hasSubCat = mouse.subcategory; mouseType = mouse.mouse; } const mouseIndex = unsortedMice.findIndex((unsortedMouse) => { return unsortedMouse.type === mouseType; }); if (mouseIndex === -1) { continue; } const mouseDiv = yield makeMouseDiv(unsortedMice[mouseIndex]); if (hasSubCat) { if (!addToSubCat[hasSubCat]) { addToSubCat[hasSubCat] = []; } addToSubCat[hasSubCat].push(mouseDiv); } else { categoryMice.append(mouseDiv); } categoryWrapper.append(categoryMice); unsortedMice.splice(mouseIndex, 1); categoryWrapper.classList.remove("mouse-category-wrapper-hidden"); } for (const subcategory of subcategories) { if (addToSubCat[subcategory.id] && addToSubCat[subcategory.id].length > 0) { const subcategoryWrapper = document.createElement("div"); subcategoryWrapper.classList.add("mouse-subcategory-wrapper", `mouse-subcategory-${subcategory.id}`); if (subcategory.color) { subcategoryWrapper.style.backgroundColor = subcategory.color; } const currentSubCat = map_groups_default[currentMapData.map_type].subcategories.find((subCat) => { return subCat.id === subcategory.id; }); const subcategoryHeader = makeElement("div", "mouse-subcategory-header"); makeElement("div", "mouse-subcategory-title", currentSubCat.name, subcategoryHeader); subcategoryWrapper.append(subcategoryHeader); const subcategoryMice = makeElement("div", "mouse-subcategory-mice"); addToSubCat[subcategory.id].forEach((mouseDiv) => { subcategoryMice.append(mouseDiv); }); subcategoryWrapper.append(subcategoryMice); categoryWrapper.append(subcategoryWrapper); } } categoriesWrapper.append(categoryWrapper); } if (unsortedMice.length > 0) { const unsortedWrapper = makeElement("div", "mouse-category-wrapper"); unsortedWrapper.classList.add("mouse-category-unsorted"); const unsortedHeader = makeElement("div", "mouse-category-header"); const unsortedTitle = makeElement("div", "mouse-category-title", "Unsorted"); unsortedHeader.append(unsortedTitle); unsortedWrapper.append(unsortedHeader); const unsortedMiceDiv = makeElement("div", "mouse-category-mice"); for (const mouse of unsortedMice) { const mouseDiv = yield makeMouseDiv(mouse); unsortedMiceDiv.append(mouseDiv); } unsortedWrapper.append(unsortedMiceDiv); categoriesWrapper.append(unsortedWrapper); } target.append(categoriesWrapper); }); makeScavengerSortedPage = (isNormal, target) => __async(void 0, null, function* () { target.classList.add("scavenger-sorted-page"); target.classList.add("treasureMapView-block"); target.setAttribute("data-scavenger-sorted-by", "none"); target.setAttribute("data-scavenger-sort-direction", "descending"); const sortMice = (direction = "descending") => { const container = target.querySelector(".sorted-page-content"); if (!container) { return; } const mice = target.querySelectorAll(".mouse-container"); if (!mice) { return; } const miceArray = [...mice]; miceArray.sort((a, b) => { let aAr = 0; let bAr = 0; const aArEl = a.querySelector(".mh-ui-ar"); if (aArEl) { aAr = aArEl.getAttribute("data-ar") || 0; } const bArEl = b.querySelector(".mh-ui-ar"); if (bArEl) { bAr = bArEl.getAttribute("data-ar") || 0; } if (direction === "ascending") { return aAr - bAr; } return bAr - aAr; }); mice.forEach((mouse) => { mouse.remove(); }); const locationHeaders = container.querySelectorAll(".scavenger-location-wrapper"); if (locationHeaders) { locationHeaders.forEach((header) => { header.remove(); }); } miceArray.forEach((mouse) => { container.append(mouse); }); }; const environments5 = yield getData("environments"); if (!environments5) { return; } const sortMiceIntoLocations = (direction = "descending") => __async(void 0, null, function* () { const container = target.querySelector(".sorted-page-content"); if (!container) { return; } const mice = target.querySelectorAll(".mouse-container"); if (!mice) { return; } const miceByLocation = {}; const locations = {}; for (const mouse of mice) { const mouseId = mouse.getAttribute("data-mouse-id"); const location = yield getLocationForMouse(mouseId, isNormal ? "mouse" : "item"); locations[location.id] = location; const locationId = location.id; if (!miceByLocation[locationId]) { miceByLocation[locationId] = []; } miceByLocation[locationId].push(mouse); } mice.forEach((mouse) => { mouse.remove(); }); const locationHeaders = document.querySelectorAll(".scavenger-location-wrapper"); if (locationHeaders) { locationHeaders.forEach((header) => { header.remove(); }); } const sortedLocations = Object.keys(miceByLocation).sort((a, b) => { return miceByLocation[b].length - miceByLocation[a].length; }); sortedLocations.forEach((location) => { const locationWrapper = makeElement("div", ["treasureMapView-goals-groups", "scavenger-location-wrapper"]); const header = makeElement("div", ["treasureMapView-block-content-heading", "scavenger-location-header"]); const locationContent = makeElement("div", "scavenger-location-content"); const environment = environments5.find((env) => env.id === location); if (locations[environment == null ? void 0 : environment.id]) { environment.name = locations[environment.id].name; } if (environment) { if (environment.image) { const headerImage = makeElement("div", ["treasureMapView-block-content-heading-image", "scavenger-location-icon"]); headerImage.style.backgroundImage = `url(${environment.image})`; header.append(headerImage); } if (environment.name) { const envLink = makeElement("a", "scavenger-location-name", environment.name); envLink.title = `Travel to ${environment.name}`; envLink.setAttribute("data-environment-id", location); envLink.addEventListener("click", () => { showTravelConfirmation(environment, mapModel()); }); header.append(envLink); makeElement("span", "scavenger-location-count", ` (${miceByLocation[location].length})`, header); } } locationWrapper.append(header); miceByLocation[location].forEach((mouse) => { if (direction === "ascending") { locationContent.prepend(mouse); } else { locationContent.append(mouse); } }); locationWrapper.append(locationContent); container.append(locationWrapper); }); }); const toggleSortDirection = () => __async(void 0, null, function* () { const currentDirection = target.getAttribute("data-scavenger-sort-direction"); const currentSort2 = target.getAttribute("data-scavenger-sorted-by"); const newDirection = currentDirection === "descending" ? "ascending" : "descending"; target.setAttribute("data-scavenger-sort-direction", newDirection); yield sortMice(newDirection); if (currentSort2 === "location") { yield sortMiceIntoLocations(newDirection); } }); const toggleSortType = () => __async(void 0, null, function* () { const currentSort2 = target.getAttribute("data-scavenger-sorted-by"); const currentDirection = target.getAttribute("data-scavenger-sort-direction"); if (currentSort2 === "location") { target.setAttribute("data-scavenger-sorted-by", "none"); sortMice(currentDirection); } else { target.setAttribute("data-scavenger-sorted-by", "location"); yield sortMiceIntoLocations(currentDirection); } }); const toggleWrapper = makeElement("div", "scavenger-toggle-wrapper"); const toggleByLocation = makeElement("button", ["scavenger-toggle-button", "mousehuntActionButton", "tiny"]); makeElement("span", "scavenger-toggle-text", "Sort by Location", toggleByLocation); toggleByLocation.addEventListener("click", () => __async(void 0, null, function* () { toggleByLocation.classList.add("disabled"); yield toggleSortType(); toggleByLocation.classList.remove("disabled"); })); toggleWrapper.append(toggleByLocation); const toggleByDropRate = makeElement("button", ["scavenger-toggle-button", "mousehuntActionButton", "tiny"]); const text = isNormal ? "Sort by Attraction Rate" : "Sort by Drop Rate"; makeElement("span", "scavenger-toggle-text", text, toggleByDropRate); toggleByDropRate.addEventListener("click", () => __async(void 0, null, function* () { toggleByDropRate.classList.add("disabled"); yield toggleSortDirection(); toggleByDropRate.classList.remove("disabled"); })); toggleWrapper.append(toggleByDropRate); const sortedContainer = document.querySelector("#sorted-mice-container"); if (sortedContainer) { sortedContainer.prepend(toggleWrapper); } else { target.prepend(toggleWrapper); } target.setAttribute("data-scavenger-sorted-by", "location"); target.setAttribute("data-scavenger-sort-direction", "descending"); yield sortMiceIntoLocations("descending"); }); makeGenericSortedPage = (isNormal, sortedPage) => __async(void 0, null, function* () { const target = document.querySelector(".sorted-page-content"); if (!target) { return; } const currentMapData = getMapData(mapData().map_id); const type = isNormal ? "mouse" : "item"; target.classList.add("treasureMapView-block-content", "scavenger-sorted-page"); const { unsortedMice } = getMouseDataForMap(currentMapData, type); const sortedUnsorted = yield Promise.all( unsortedMice.map((mouse) => __async(void 0, null, function* () { const ar = yield getHighestArForMouse(mouse.unique_id, type); return __spreadProps(__spreadValues({}, mouse), { ar }); })) ); sortedUnsorted.sort((a, b) => { if (a.ar > b.ar) { return -1; } return 1; }); for (const mouse of sortedUnsorted) { const mouseDiv = yield makeMouseDiv(mouse, type); target.append(mouseDiv); } yield makeScavengerSortedPage(isNormal, sortedPage); }); moveTabToBody = () => { const sortedMiceContainer = document.querySelector("#sorted-mice-container"); if (!sortedMiceContainer) { return; } const body = document.querySelector("body"); if (!body) { return; } body.append(sortedMiceContainer); }; processSortedTabClick = () => __async(void 0, null, function* () { const currentlyActive = document.querySelector(".treasureMapRootView-subTab.sorted-map-tab.active"); if (currentlyActive) { return; } const otherTabs = document.querySelectorAll(".treasureMapRootView-subTab:not(.sorted-map-tab)"); if (otherTabs) { otherTabs.forEach((tab) => { tab.removeEventListener("click", moveTabToBody); tab.addEventListener("click", moveTabToBody); }); } const currentMapData = mapData(); if (!currentMapData || !currentMapData.goals) { return; } const activeTab = document.querySelector(".treasureMapRootView-subTab.active"); if (activeTab) { activeTab.classList.remove("active"); } const sortedTab = document.querySelector(".treasureMapRootView-subTab.sorted-map-tab"); if (sortedTab) { sortedTab.classList.add("active"); } const mapContainer = document.querySelector(".treasureMapView-blockWrapper"); if (!mapContainer) { return; } const leftBlock = mapContainer.querySelector(".treasureMapView-leftBlock"); if (leftBlock) { leftBlock.style.display = "none"; } const rightBlock = mapContainer.querySelector(".treasureMapView-rightBlock"); if (rightBlock) { rightBlock.style.display = "none"; } const existing = document.querySelector("#sorted-mice-container"); if (existing) { existing.remove(); } const sortedMiceContainer = document.createElement("div"); sortedMiceContainer.id = "sorted-mice-container"; const sortedPage = makeSortedPageWrapper(); sortedMiceContainer.append(sortedPage); mapContainer.append(sortedMiceContainer); if (map_groups_default[currentMapData.map_type]) { yield makeSortedMiceList(); } else if (currentMapData.is_scavenger_hunt) { yield makeGenericSortedPage(false, sortedPage); } else { yield makeGenericSortedPage(true, sortedPage); } const loading = document.querySelector(".sorted-loading"); if (loading) { loading.remove(); } highlighting_default(); }); addSortedMapTab = () => { const mapTabs = document.querySelector(".treasureMapRootView-subTabContainer"); if (!mapTabs || mapTabs.length <= 0) { return false; } if (mapTabs.querySelector(".sorted-map-tab")) { return false; } const sortedTab = makeElement("a", "treasureMapRootView-subTab sorted-map-tab", "Sorted"); sortedTab.setAttribute("data-type", "sorted"); sortedTab.addEventListener("click", processSortedTabClick); const divider = makeElement("div", "treasureMapRootView-subTab-spacer"); mapTabs.insertBefore(divider, mapTabs.children[0]); mapTabs.insertBefore(sortedTab, mapTabs.children[0]); return true; }; showSortedTab = () => { processSortedTabClick(); addArToggle("sorted"); }; hideSortedTab = () => { removeArToggle(); }; } }); // src/modules/better-maps/modules/consolation-prizes.js var consolation_prizes_default; var init_consolation_prizes = __esm({ "src/modules/better-maps/modules/consolation-prizes.js"() { init_utils2(); consolation_prizes_default = () => __async(void 0, null, function* () { const consolationButton = document.querySelector(".treasureMapView-consolationPrize-message"); if (!consolationButton || !mapData().has_consolation_prizes || !mapData().consolation_prizes) { return; } const existing = document.querySelector(".mh-mapper-consolation-prizes"); if (existing) { existing.remove(); } const prizeWrapper = makeElement("div", "mh-mapper-consolation-prizes"); const prizes = mapData().consolation_prizes || []; for (const prize of prizes) { const prizeDiv = makeElement("div", "mh-mapper-consolation-prize"); const prizeImg = makeElement("img", "mh-mapper-consolation-prize"); prizeImg.src = prize.thumb; prizeDiv.append(prizeImg); makeElement("div", "mh-mapper-consolation-prize-text", `${prize.quantity} ${prize.name}`, prizeDiv); prizeWrapper.append(prizeDiv); } consolationButton.parentElement.append(prizeWrapper); }); } }); // src/modules/better-maps/modules/tab-goals.js var getLinkMarkup, getItemLinkMarkup, addMouseLinksToMap, addClassesToGroups, moveLeaveButton, addQuickInvite, addSidebarToggle, makeStickyDraggable, showGoalsTab, hideGoalsTab; var init_tab_goals = __esm({ "src/modules/better-maps/modules/tab-goals.js"() { init_utils2(); init_toggle_ar(); init_consolation_prizes(); getLinkMarkup = (name) => { name = name.replaceAll(" ", "_"); const nameMouse = `${name}_Mouse`.replaceAll("_Mouse_Mouse", "_Mouse"); return makeLink("MHCT AR", `https://www.mhct.win/attractions.php?mouse=${name}`, true) + makeLink("Wiki", `https://mhwiki.hitgrab.com/wiki/index.php/${nameMouse}`) + makeLink("mhdb", `https://dbgames.info/mousehunt/mice/${nameMouse}`); }; getItemLinkMarkup = (name) => { name = name.replace(" ", "_"); return makeLink("MHCT DR", `https://www.mhct.win/loot.php?item=${name}`, true) + makeLink("Wiki", `https://mhwiki.hitgrab.com/wiki/index.php/${name}`) + makeLink("mhdb", `https://dbgames.info/mousehunt/mice/${name}`); }; addMouseLinksToMap = () => __async(void 0, null, function* () { const overlay = document.querySelector("#overlayPopup"); if (!(overlay && overlay.classList.contains("treasureMapPopup"))) { return; } const mouseIcon = document.querySelectorAll(".treasureMapView-goals-group-goal"); if (!mouseIcon || mouseIcon.length === 0) { return; } const mapViewClasses = document.querySelector(".treasureMapView"); if (!mapViewClasses) { return; } let type = "mouse"; if (mapViewClasses.classList.value.includes("scavenger_hunt")) { type = "item"; } mouseIcon.forEach((mouse) => { let mouseType = mouse.classList.value.replace("treasureMapView-goals-group-goal", "").replace(" mouse", "").replace(" item", "").replace(" complete", "").replace("landscape", "").replace("notAvailable", "").replaceAll(" ", "").trim(); if ("item" === type) { mouseType = mouse.getAttribute("data-unique-id"); } mouse.addEventListener("click", () => __async(void 0, null, function* () { const title = document.querySelector(".treasureMapView-highlight-name"); if (!title) { return; } title.classList.add("mh-ui-mouse-links-map-name"); title.addEventListener("click", () => { if (type === "item") { hg.views.ItemView.show(mouseType); } else if (type === "mouse") { hg.views.MouseView.show(mouseType); } }); title.setAttribute("data-mouse-id", mouseType); const existing = document.querySelector(`#mh-ui-mouse-links-map-${mouseType}-${type}`); if (existing) { return; } if ("mouse" === type) { const div = makeElement("div", "mh-ui-mouse-links-map"); div.id = `mh-ui-mouse-links-map-${mouseType}-${type}`; div.innerHTML = getLinkMarkup(title.innerText); const envs = document.querySelector(".treasureMapView-highlight-environments"); if (envs) { envs.parentNode.insertBefore(div, envs.nextSibling); } } else if ("item" === type) { const div = makeElement("div", "mh-ui-mouse-links-map"); div.id = `mh-ui-mouse-links-map-${mouseType}-${type}`; div.innerHTML = getItemLinkMarkup(mouseType); const desc = document.querySelector(".treasureMapView-highlight-description"); if (desc) { desc.prepend(div); } } let appendMHCTto = document.querySelector(".treasureMapView-highlight-weaknessContainer"); if (!appendMHCTto) { appendMHCTto = document.querySelector(".mh-ui-mouse-links-map"); } const existingArs = document.querySelectorAll(".mh-ui-mouse-links-map-ars"); if (existingArs && existingArs.length > 0) { existingArs.forEach((ar) => ar.remove()); } const container = document.querySelector(".treasureMapView-highlight.goal.active"); if (!container) { return; } const arsEl = makeElement("div", "mh-ui-mouse-links-map-ars"); arsEl.id = `mh-ui-mouse-links-map-ars-${mouseType}-${type}`; yield addMHCTData({ unique_id: mouseType }, arsEl, type); if (arsEl.innerHTML === "") { return; } container.classList.add("has-mhct-ars"); container.append(arsEl); })); }); }); addClassesToGroups = (mapData3) => { const groups2 = document.querySelectorAll(".treasureMapView-goals-groups"); groups2.forEach((group) => { const title = group.querySelector(".treasureMapView-block-content-heading"); if (!title) { return; } if (title.classList.contains("mh-ui-goals-group-completed-title")) { return; } const completed = title.innerText.includes(" found these mice:") || title.innerText.includes(" found this mouse:"); group.classList.add("mh-ui-goals-group", completed ? "completed" : "incomplete"); let countText = ""; const count2 = group.querySelector(".treasureMapView-block-content-heading-count"); if (count2) { group.setAttribute("data-mouse-count", count2.innerText.replace("(", "").replace(")", "")); countText = count2.innerText; } if (!completed) { return; } const hunterName = title.innerText.replace(countText, "").replace(" found these mice:", "").replace(" found this mouse:", "").trim(); let hunter = mapData3.hunters.find((h) => h.name.trim() === hunterName); if (!hunter) { const image2 = group.querySelector(".treasureMapView-block-content-heading-image"); if (!image2) { return; } const url = image2.getAttribute("style").replace("background-image:url(", "").replace("background-image: url(", "").replace(");", ""); hunter = mapData3.hunters.find((h) => h.profile_pic === url); } if (!hunter && (hunterName === `${user.firstname} ${user.lastname}` || hunterName === `${user.firstname}${user.lastname}`)) { hunter = { name: `${user.firstname} ${user.lastname}`, sn_user_id: user.sn_user_id }; } if (!hunter) { return; } const image = group.querySelector(".treasureMapView-block-content-heading-image"); if (!image) { image.title = `Go to ${hunter.name}'s profile`; image.classList.add("mh-ui-goals-group-completed-image"); image.addEventListener("click", () => { hg.utils.PageUtil.showHunterProfile(hunter.sn_user_id); }); } const replacementTitle = makeElement("div", "treasureMapView-block-content-heading"); if (image) { replacementTitle.append(image); } const nameLink = makeElement("a", "mh-ui-goals-group-completed-title", hunter.name); nameLink.setAttribute("data-snuid", hunter.sn_user_id); nameLink.addEventListener("click", (e) => { var _a, _b; e.preventDefault(); if ((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.showHunterProfile) { hg.utils.PageUtil.showHunterProfile(hunter.sn_user_id); } }); replacementTitle.append(nameLink); makeElement("span", "mh-ui-goals-group-completed-text", " found these mice:", replacementTitle); if (count2) { replacementTitle.append(count2); } title.replaceWith(replacementTitle); }); }; moveLeaveButton = () => __async(void 0, null, function* () { const leaveButton = document.querySelector(".treasureMapView-mapLeaveContainer .treasureMapView-leaveMapButton"); if (!leaveButton) { return; } const actions = document.querySelector(".treasureMapView-mapMenu-group-actions"); if (!actions) { return; } const existing = document.querySelector(".mh-ui-leave-map-button"); if (existing) { return; } const clone = leaveButton.cloneNode(true); clone.classList.add("mh-ui-leave-map-button"); clone.classList.remove("lightBlue"); clone.addEventListener("click", () => { leaveButton.click(); }); actions.insertBefore(clone, actions.firstChild); }); addQuickInvite = (mapData3) => __async(void 0, null, function* () { const sidebar = document.querySelector(".treasureMapView-rightBlock.treasureMapView-goalSidebar"); if (!sidebar) { return; } const existing = document.querySelector(".mh-ui-quick-invite"); if (existing) { existing.remove(); } if (!(mapData3 == null ? void 0 : mapData3.is_owner)) { return; } const mapId = mapData3 == null ? void 0 : mapData3.map_id; if (!mapId) { return; } const inviteWrapper = makeElement("div", "mh-ui-quick-invite-wrapper"); const inviteInput = makeElement("input", "mh-ui-quick-invite-input"); inviteInput.type = "number"; inviteInput.placeholder = "Hunter ID"; inviteWrapper.append(inviteInput); const inviteButton = makeElement("div", ["mousehuntActionButton", "tiny", "mh-ui-quick-invite"]); makeElement("span", "", "Invite", inviteButton); const indicators = makeElement("div", "mh-ui-quick-invite-indicators"); const spinner = makeElement("div", ["mh-ui-quick-invite-indicator", "mh-ui-quick-invite-spinner", "hidden"]); const success = makeElement("div", ["mh-ui-quick-invite-indicator", "mh-ui-quick-invite-success", "hidden"]); indicators.append(spinner); indicators.append(success); inviteWrapper.append(indicators); const inviteError = (message) => { debuglog("better-maps", `Invite error: ${message}`); inviteInput.disabled = false; inviteButton.classList.remove("disabled"); spinner.classList.add("hidden"); showErrorMessage({ message, append: inviteWrapper }); return false; }; const inviteAction = () => __async(void 0, null, function* () { var _a, _b, _c, _d, _e, _f; if (inviteButton.classList.contains("disabled")) { return; } inviteInput.disabled = true; inviteButton.classList.add("disabled"); spinner.classList.remove("hidden"); const hunterId = Number.parseInt(inviteInput.value, 10); if (!hunterId) { return inviteError("Invalid hunter ID"); } if ((_a = mapData3 == null ? void 0 : mapData3.hunters) == null ? void 0 : _a.find((h) => h.sn_user_id === hunterId && h.is_active)) { return inviteError("Hunter is already on the map"); } debuglog("better-maps", `Inviting hunter ${hunterId} to map ${mapId}`); let snuid; const friendData = sessionGet("cache-maps-hunter-data", {}); if (friendData && friendData[hunterId]) { debuglog("better-maps", `Using cached friend data for ${hunterId}`); snuid = friendData[hunterId]; } else { debuglog("better-maps", `Fetching friend data for ${hunterId}`); const getFriendData = yield doRequest("managers/ajax/pages/friends.php", { action: "community_search_by_id", user_id: hunterId }); if ((getFriendData == null ? void 0 : getFriendData.success) && ((_b = getFriendData == null ? void 0 : getFriendData.friend) == null ? void 0 : _b.sn_user_id)) { snuid = (_c = getFriendData == null ? void 0 : getFriendData.friend) == null ? void 0 : _c.sn_user_id; const canAccept = (_f = (_e = (_d = getFriendData == null ? void 0 : getFriendData.friend.user_interactions) == null ? void 0 : _d.actions) == null ? void 0 : _e.send_map_invite.maps[0]) == null ? void 0 : _f.is_allowed; friendData[hunterId] = { snuid: snuid || false, canAccept: canAccept || false }; if (canAccept) { sessionSet("cache-maps-hunter-data", friendData); } } else { return inviteError("Could not find hunter"); } } debuglog("better-maps", `Inviting hunter ${hunterId} with snuid ${snuid} to map ${mapId}`); const invited = yield doRequest("managers/ajax/users/treasuremap.php", { action: "send_invites", map_id: mapId, "snuids[]": snuid }); if (invited && (invited == null ? void 0 : invited.success)) { debuglog("better-maps", `Successfully invited hunter ${hunterId} to map ${mapId}`); inviteInput.value = ""; inviteInput.disabled = false; inviteButton.classList.remove("disabled"); spinner.classList.add("hidden"); success.classList.remove("hidden"); setTimeout(() => { success.classList.add("hidden"); }, 2e3); } else { return inviteError("Error inviting hunter"); } debuglog("better-maps", "."); }); inviteButton.addEventListener("click", inviteAction); inviteInput.addEventListener("keyup", (e) => { if (e.key === "Enter") { inviteAction(); } }); inviteWrapper.append(inviteButton); sidebar.insertBefore(inviteWrapper, sidebar.firstChild); }); addSidebarToggle = () => __async(void 0, null, function* () { const mapView = document.querySelector(".treasureMapView"); if (!mapView) { return; } const rightBlock = mapView.querySelector(".treasureMapView-rightBlock"); if (!rightBlock) { return; } const leftBlock = mapView.querySelector(".treasureMapView-leftBlock"); if (!leftBlock) { return; } const existing = mapView.querySelector(".mh-ui-goals-sidebar-toggle"); if (existing) { return; } const toggle = makeElement("a", "mh-ui-goals-sidebar-toggle"); const isStartingToggled = sessionGet("better-maps-sidebar-toggled", false); if ("open" === isStartingToggled) { toggle.classList.remove("open"); toggle.classList.add("closed"); toggle.setAttribute("data-state", "closed"); toggle.setAttribute("title", "Show Sidebar"); mapView.classList.add("mh-ui-goals-sidebar-toggled"); rightBlock.classList.add("hidden"); leftBlock.classList.add("full-width"); } else { toggle.classList.remove("closed"); toggle.classList.add("open"); toggle.setAttribute("data-state", "open"); toggle.setAttribute("title", "Hide Sidebar"); mapView.classList.remove("mh-ui-goals-sidebar-toggled"); rightBlock.classList.remove("hidden"); leftBlock.classList.remove("full-width"); } toggle.addEventListener("click", () => { const isToggled = toggle.getAttribute("data-state"); sessionSet("better-maps-sidebar-toggled", isToggled); if ("open" === isToggled) { toggle.setAttribute("data-state", "closed"); toggle.setAttribute("title", "Show Sidebar"); toggle.classList.remove("open"); toggle.classList.add("closed"); mapView.classList.add("mh-ui-goals-sidebar-toggled"); rightBlock.classList.add("hidden"); leftBlock.classList.add("full-width"); } else { toggle.setAttribute("data-state", "open"); toggle.setAttribute("title", "Hide Sidebar"); toggle.classList.remove("closed"); toggle.classList.add("open"); mapView.classList.remove("mh-ui-goals-sidebar-toggled"); rightBlock.classList.remove("hidden"); leftBlock.classList.remove("full-width"); } }); leftBlock.append(toggle); }); makeStickyDraggable = () => { const sticky = document.querySelector(".treasureMapView-highlight"); if (!sticky) { return; } let pos1 = 0; let pos2 = 0; let pos3 = 0; let pos4 = 0; const dragMouseDown = (e) => { e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; }; const elementDrag = (e) => { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; sticky.style.top = `${sticky.offsetTop - pos2}px`; sticky.style.left = `${sticky.offsetLeft - pos1}px`; }; const closeDragElement = () => { document.onmouseup = null; document.onmousemove = null; }; sticky.onmousedown = dragMouseDown; }; showGoalsTab = (mapData3) => __async(void 0, null, function* () { addArToggle(); addMouseLinksToMap(); consolation_prizes_default(); addClassesToGroups(mapData3); moveLeaveButton(); addQuickInvite(mapData3); addSidebarToggle(); makeStickyDraggable(); }); hideGoalsTab = () => { removeArToggle(); }; } }); // src/modules/better-maps/modules/tab-hunters.js var makeUserTableLoading, makeUserTable, getInvitedHunterData, getUserData, removeEmptyHunterSlotsFromList, getLeftHunters, modifyButtons, fixPluralInvites, showHuntersTab; var init_tab_hunters = __esm({ "src/modules/better-maps/modules/tab-hunters.js"() { init_utils2(); makeUserTableLoading = (id, title, appendTo) => { const wrapper = makeElement("div", "treasureMapView-block-title", title); wrapper.id = `hunters-loading-${id}-title`; appendTo.append(wrapper); const loading = makeElement("div", "treasureMapView-block"); loading.id = `hunters-loading-${id}-block`; const loadingWrapper = makeElement("div", "treasureMapView-allyTable", ""); const row = makeElement("div", "treasureMapView-allyRow", ""); makeElement("div", ["mousehuntPage-loading", "active"], "", row); loadingWrapper.append(row); loading.append(loadingWrapper); appendTo.append(loading); }; makeUserTable = (hunters, id, title, appendTo) => __async(void 0, null, function* () { const loadingTitle = document.querySelector(`#hunters-loading-${id}-title`); const loadingBlock = document.querySelector(`#hunters-loading-${id}-block`); if (loadingTitle) { loadingTitle.remove(); } if (loadingBlock) { loadingBlock.remove(); } const existing = document.querySelector(`#hunters-${id}`); if (existing) { return; } const wrapper = makeElement("div", ["mh-ui-custom-map-block", "treasureMapView-block-title"], title.replace("#count#", hunters.length)); wrapper.id = `hunters-${id}`; appendTo.append(wrapper); const block = makeElement("div", "treasureMapView-block"); block.id = `hunters-${id}-block`; const blockContent = makeElement("div", "treasureMapView-block-content"); const table = makeElement("div", "treasureMapView-allyTable"); hunters.forEach((hunter) => { let actions = `<a href="supplytransfer.php?fid=${hunter.sn_user_id}"class="mousehuntActionButton tiny lightBlue"><span>Send<br>Supplies</span></a>`; if ("requests" === id) { const declineAction = `<a class="treasureMapDialogView-deleteInviteRequest reject-invite-request mh-mapper-invite-request-action" data-snuid="${hunter.sn_user_id}" data-snuid="100000830940163">X</a>`; const acceptAction = `<a href="#" class="treasureMapDialogView-continueButton mousehuntActionButton accept-invite-request mh-mapper-invite-request-action" data-snuid="${hunter.sn_user_id}"><span>Accept</span></a>`; actions = `${declineAction}${acceptAction}`; } const markup = `<div class="treasureMapView-allyCell favourite"></div> <div class="treasureMapView-allyCell image" data-snuid="${hunter.sn_user_id}"> <div class="treasureMapView-hunter" data-snuid="${hunter.sn_user_id}"> <div class="treasureMapView-hunter-image-wrapper"> <img src="${hunter.profile_pic}" class="treasureMapView-hunter-image"> </div> </div> </div> <div class="treasureMapView-allyCell name"> <div class="treasureMapView-ally-name"> <a href="https://www.mousehuntgame.com/profile.php?snuid=${hunter.sn_user_id}">${hunter.name}</a> </div> <a href="#" class="treasureMapView-ally-environment treasureMapView-travelButton" data-environment-id="${hunter.environment_id}"> ${hunter.environment_name} </a> </div> <div class="treasureMapView-allyCell lastActive"> <div class="treasureMapView-ally-lastActive ${hunter.is_online ? "online" : ""}"> ${hunter.last_active_formatted} </div> </div> <div class="treasureMapView-allyCell trap"> <div class="treasureMapView-componentContainer"> <div class="treasureMapView-componentThumb" style="background-image: url(${hunter.base_thumb});" title="${hunter.base_name}"></div> <div class="treasureMapView-componentThumb" style="background-image: url(${hunter.weapon_thumb});" title="${hunter.weapon_name}"></div> <div class="treasureMapView-componentThumb" style="background-image: url(${hunter.bait_thumb});" title="${hunter.bait_name}"></div> <div class="treasureMapView-componentThumb" style="background-image: url(${hunter.trinket_thumb});" title="${hunter.trinket_name}"></div> </div> </div> <div class="treasureMapView-allyCell actions">${actions}</div>`; makeElement("div", "treasureMapView-allyRow", markup, table); }); block.append(table); blockContent.append(block); appendTo.append(block); if ("requests" === id) { const actionButtons = document.querySelectorAll(".mh-mapper-invite-request-action"); actionButtons.forEach((button) => { button.addEventListener("click", () => { const snuid = Number.parseInt(button.dataset.snuid, 10); if (button.classList.contains("accept-invite-request")) { hg.utils.TreasureMapUtil.acceptInviteRequests(mapper("mapData").map_id, [snuid], () => { }, () => { }); } else { hg.utils.TreasureMapUtil.declineInviteRequests(mapper("mapData").map_id, [snuid], () => { }, () => { }); } }); }); } }); getInvitedHunterData = (invited) => __async(void 0, null, function* () { if (invited.length === 0) { return []; } if (invited.length <= 12) { const hunters2 = yield getUserData(invited); return hunters2; } const batches = []; for (let i = 0; i < invited.length; i += 12) { batches.push(invited.slice(i, i + 12)); } const hunters = []; for (const batch_ of batches) { const batch = yield getUserData(batch_); hunters.push(...batch); } return hunters; }); getUserData = (userId) => __async(void 0, null, function* () { return new Promise((resolve) => { hg.utils.User.getUserData( userId, [ "bait_name", "bait_thumb", "base_name", "base_thumb", "environment_id", "environment_name", "is_online", "last_active_formatted", "trinket_name", "trinket_thumb", "weapon_name", "weapon_thumb" ], (resp) => { resolve(resp); } ); }); }); removeEmptyHunterSlotsFromList = () => __async(void 0, null, function* () { const emptySlots = document.querySelectorAll(".treasureMapView-allyCell.name"); if (emptySlots.length) { let shouldRemove = false; emptySlots.forEach((slot) => { if (slot.textContent === "The map owner can invite more hunters." || slot.textContent === "Click to invite a friend.") { if (shouldRemove) { shouldRemove.parentNode.remove(); } slot.parentNode.classList.add("hunters-last-slot"); shouldRemove = slot; } }); } }); getLeftHunters = (mapData3) => { const huntersLeft = []; mapData3.hunters.forEach((hunter) => { if (!hunter.is_active) { huntersLeft.push(hunter); } }); return huntersLeft; }; modifyButtons = () => { const buttons = [ { selector: ".mh-ui-find-hunters-block .treasureMapAlliesView-showInviteButton", text: "Invite Friends" }, { selector: ".mh-ui-find-hunters-block .treasureMapAlliesView-showInviteTeamButton", text: "Invite Team" }, { selector: ".mh-ui-map-settings-block .treasureMapView-inviteModeButton", text: "Change Settings" }, { selector: ".mh-ui-share-block .treasureMapView-copyShareLinkButton", text: "Copy" } ]; buttons.forEach((button) => { const el = document.querySelector(button.selector); if (el) { el.classList.add("tiny"); const text = el.querySelector("span"); if (text) { text.textContent = button.text; } } }); }; fixPluralInvites = () => { const invitesEl = document.querySelector(".treasureMapView-numInvitesSent"); if (invitesEl && invitesEl.textContent === "1 invites sent.") { invitesEl.innerHTML = invitesEl.innerHTML.replace("invites", "invite"); } }; showHuntersTab = (mapData3) => __async(void 0, null, function* () { var _a; modifyButtons(); removeEmptyHunterSlotsFromList(); fixPluralInvites(); const leftBlock = document.querySelector(".treasureMapView-leftBlock"); if (!leftBlock) { return; } const huntersLeft = getLeftHunters(mapData3); if (huntersLeft.length) { makeUserTable(huntersLeft, "left", `Hunters that have left map (${huntersLeft.length || 0})`, leftBlock); } if (mapData3.invited_hunters.length) { makeUserTableLoading("invited", `Invited hunters (${mapData3.invited_hunters.length || 0})`, leftBlock); const invitedData = yield getInvitedHunterData(mapData3.invited_hunters); makeUserTable(invitedData, "invited", "Invited hunters (#count#)", leftBlock); } if (((_a = mapData3.invite_requests) == null ? void 0 : _a.length) > 0) { makeUserTableLoading("requests", `Invite Requests (${mapData3.invite_requests.length || 0})`, leftBlock); const requestData = yield getInvitedHunterData(mapData3.invite_requests); makeUserTable(requestData, "requests", "Invite Requests (#count)", leftBlock); } }); } }); // src/modules/better-maps/modules/sidebar.js var getCompletedGoals, addMapToSidebar, refreshMap, mapData2, miceThumbs2, itemThumbs, sidebar_default; var init_sidebar = __esm({ "src/modules/better-maps/modules/sidebar.js"() { init_utils2(); getCompletedGoals = () => { var _a, _b, _c, _d; let goals2 = (mapData2 == null ? void 0 : mapData2.is_scavenger_hunt) ? (_a = mapData2 == null ? void 0 : mapData2.goals) == null ? void 0 : _a.item : (_b = mapData2 == null ? void 0 : mapData2.goals) == null ? void 0 : _b.mouse; if (!goals2) { return []; } const completedGoals = []; const hunters = (mapData2 == null ? void 0 : mapData2.hunters) || []; for (const hunter of hunters) { const completed = (mapData2 == null ? void 0 : mapData2.is_scavenger_hunt) ? (_c = hunter == null ? void 0 : hunter.completed_goal_ids) == null ? void 0 : _c.item : (_d = hunter == null ? void 0 : hunter.completed_goal_ids) == null ? void 0 : _d.mouse; if (completed) { completedGoals.push(...completed); } } goals2 = goals2.filter((goal) => !completedGoals.includes(goal.unique_id)).sort((a, b) => a.name.localeCompare(b.name)); return goals2; }; addMapToSidebar = () => __async(void 0, null, function* () { var _a, _b, _c; const sidebar = document.querySelector(".pageSidebarView .pageSidebarView-block"); if (!sidebar) { return; } const mapId = ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRelicHunter) == null ? void 0 : _b.default_map_id) || false; if (!mapId) { return; } mapData2 = sessionGet(`mh-improved-map-cache-${mapId}`); if (!mapData2) { yield refreshMap(); } const mapSidebar = makeElement("div", "mh-improved-map-sidebar"); const title = makeElement("h3", "mh-improved-map-sidebar-title", ((_c = mapData2 == null ? void 0 : mapData2.name) == null ? void 0 : _c.replaceAll("Treasure Map", "")) || "Map"); title.addEventListener("click", () => __async(void 0, null, function* () { mapSidebar.classList.add("loading"); yield refreshMap(); addMapToSidebar(); setTimeout(() => { mapSidebar.classList.remove("loading"); }, 1e3); })); mapSidebar.append(title); const goals2 = getCompletedGoals(mapData2); const goalsEl = makeElement("div", "mh-improved-map-sidebar-goals"); for (const goal of goals2) { const goalEl = makeElement("div", "mh-improved-map-sidebar-goal"); const goalImage = makeElement("div", "mh-improved-map-sidebar-goal-image"); const thumbnail = mapData2.is_scavenger_hunt ? itemThumbs.find((thumb) => thumb.type === goal.type) : miceThumbs2.find((thumb) => thumb.type === goal.type); goalImage.style.backgroundImage = thumbnail ? `url(${thumbnail.thumb})` : `url(${goal.large})`; goalEl.append(goalImage); makeElement("div", "mh-improved-map-sidebar-goal-name", goal.name, goalEl); const environments5 = (goal == null ? void 0 : goal.environment_ids) || []; if (environments5.includes(user == null ? void 0 : user.environment_id)) { goalEl.classList.add("mh-improved-map-sidebar-goal-active"); } goalEl.addEventListener("click", () => { if (mapData2.is_scavenger_hunt) { hg.views.ItemView.show(goal.type); } else { hg.views.MouseView.show(goal.type); } }); goalsEl.append(goalEl); } mapSidebar.append(goalsEl); const existing = document.querySelector(".mh-improved-map-sidebar"); if (existing) { existing.replaceWith(mapSidebar); } else { sidebar.append(mapSidebar); } }); refreshMap = () => __async(void 0, null, function* () { var _a, _b; const mapId = ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRelicHunter) == null ? void 0 : _b.default_map_id) || false; const newMapData = yield doRequest("managers/ajax/users/treasuremap.php", { action: "map_info", map_id: mapId }); if (!newMapData || !newMapData.treasure_map) { return; } setMapData(mapId, newMapData.treasure_map); const currentMapData = sessionGet(`mh-improved-map-cache-${mapId}`); if (currentMapData) { const currentGoals = getCompletedGoals(currentMapData); const newGoals = getCompletedGoals(mapData2.treasure_map); if (currentGoals.length !== newGoals.length) { addMapToSidebar(); } } else { addMapToSidebar(); } mapData2 = newMapData.treasure_map; return newMapData; }); sidebar_default = () => __async(void 0, null, function* () { miceThumbs2 = yield getData("mice-thumbnails"); itemThumbs = yield getData("item-thumbnails"); addMapToSidebar(); onTurn(() => __async(void 0, null, function* () { yield refreshMap(); addMapToSidebar(); }), 1e3); onTravel(null, { callback: addMapToSidebar }); setInterval(refreshMap, 3e5); }); } }); // src/modules/better-maps/styles/general.css var general_default2; var init_general2 = __esm({ "src/modules/better-maps/styles/general.css"() { general_default2 = '.treasureMapView-singleEnvironment-label{padding-bottom:8px}.treasureMapView-block.treasureMapView-singleEnvironment{border-radius:2px}.treasureMapView-block-content.halfHeight{padding:0;border-radius:0}.treasureMapView-block,.treasureMapView-block>.treasureMapView-block-content{border-radius:3px}.treasureMapView-mapMenu-group.rewards .treasureMapView-mapMenu-group-title,.treasureMapView-ally-ownerLabel{display:none}input.treasureMapView-shareLinkInput{display:inline-block;width:87px;padding:3px;margin-right:2px}.treasureMapView-ownerRequestActions{display:block;width:61px;margin:0 auto}.treasureMapView-mapMenu-group.rewards{display:flex;flex-direction:row-reverse;margin-top:-10px;margin-right:-5px}.rewards .treasureMapView-mapMenu-rewardName{max-width:unset;margin-right:3px;font-size:12px}.rewards .treasureMapView-mapMenu-subgroup.chest.mousehuntTooltipParent{display:flex;flex-direction:row-reverse;gap:5px;align-items:center}.rewards .treasureMapView-mapMenu-group-content{display:flex;flex-wrap:wrap;justify-content:flex-end;max-width:335px}.max_hunters_10 .rewards .treasureMapView-mapMenu-group-content{max-width:200px}.rewards .treasureMapView-mapMenu-auraIcon{width:33px;height:33px;margin-top:-10px}.treasureMapView-mapMenu.max_hunters_8 .treasureMapView-mapMenu-auraIcon,.treasureMapView-mapMenu.max_hunters_9 .treasureMapView-mapMenu-auraIcon,.treasureMapView-mapMenu.max_hunters_10 .treasureMapView-mapMenu-aura-name .treasureMapView-mapMenu-auraIcon,.treasureMapView-mapMenu.max_hunters_10 .treasureMapView-mapMenu-auraIcon{width:44px;height:44px}.rewards .treasureMapView-mapMenu-auraIconContainer{margin:0}.rewards .treasureMapView-mapMenu-group-actions{display:flex;flex-direction:row;justify-content:flex-end;width:auto}.rewards .treasureMapView-mapMenu-group-actions .mousehuntActionButton{margin-top:5px;margin-right:4px;margin-bottom:0!important}.treasureMapView-allyCell.name{padding-left:10px}.treasureMapView-ally-name{padding-bottom:5px}.treasureMapView-mapMenu-mapIcon{width:45px}.max_hunters_10 .treasureMapView-mapMenu-mapIcon{width:60px}img.treasureMapView-reward-chestIcon{box-sizing:border-box;width:160px;height:160px;padding:0;margin:20px auto;background:transparent;box-shadow:none}.treasureMapInvitesView .treasureMapView-leftBlock:first-child .treasureMapView-block-title:first-child{display:none}.treasureMapView-block-content.noMinHeight.noPadding.treasureMapInvitesView-scoreboards .treasureMapView-block-title:nth-child(3),.treasureMapView-block-content.noMinHeight.noPadding.treasureMapInvitesView-scoreboards .treasureMapView-scoreboard:nth-child(4){display:none}.treasureMapInventoryView-scrollCase-aura{overflow:hidden;font-size:9px;line-height:15px}.treasureMapInventoryView-scrollCase-aura br:after{content:" "}.treasureMapInventoryView-scrollCase-aura br{content:""}.treasureMapInventoryView-scrollCase-aura b:first-of-type{display:block;font-size:10px}.treasureMapShopsView .treasureMapView-leftBlock{width:99%}.treasureMapShopsView .treasureMapView-rightBlock{display:none}.treasureMapPopup-shop{padding:10px;margin-bottom:10px;background-color:#fbfbfb;border:1px solid #ccc;border-radius:4px}.treasureMapPopup-shop-environment.active:before{box-shadow:none}.treasureMapView-block-content-heading{margin:10px 0 5px}.treasureMapInventoryView-scrollCase{align-items:center;padding:10px;margin-top:8px;margin-bottom:10px;background-color:#fbfbfb;border:1px solid #ccc;border-radius:4px}.mh-dark-mode .treasureMapInventoryView-scrollCase{color:#000;background-color:#32323240;border-color:#424242}.mh-dark-mode .treasureMapPopup-shop-item-description-costContainer{border-top-color:#424242}.treasureMapView-block-content-heading-image{margin-right:10px}.mh-dark-mode .treasureMapShopsView-shopItems .treasureMapView-block-content-heading,.mh-dark-mode .treasureMapShopsView-shopItems .treasureMapView-block-content-heading-count{color:#000}.mh-dark-mode .pageFrameView .treasureMapPopup-shop-environment.active:before{background-color:transparent}.treasureMapPopup-shop[data-environment-type=rift_valour]{background-color:#e5daed}.treasureMapPopup-shop[data-environment-type=rift_bristle_woods]{background-color:#bda39e}.treasureMapPopup-shop[data-environment-type=rift_furoma]{background-color:#ffdca4}.treasureMapPopup-shop[data-environment-type=rift_whisker_woods]{background-color:#cfe07e}.treasureMapPopup-shop[data-environment-type=rift_burroughs]{background-color:#c6c6c6}.treasureMapPopup-shop[data-environment-type=rift_gnawnia]{background-color:#ffdaf4}.treasureMapPopup-shop[data-environment-type=table_of_contents]{background-color:#dfffd4}.treasureMapPopup-shop[data-environment-type=prologue_pond]{background-color:#d3ffff}.treasureMapPopup-shop[data-environment-type=foreword_farm]{background-color:#faedcd}.treasureMapPopup-shop[data-environment-type=floating_islands]{background-color:#fce0d7}.treasureMapPopup-shop[data-environment-type=moussu_picchu]{background-color:#fed3ff}.treasureMapPopup-shop[data-environment-type=ancient_city]{background-color:#ccc}.treasureMapPopup-shop[data-environment-type=fungal_cavern]{background-color:#c3f3de}.treasureMapPopup-shop[data-environment-type=sunken_city]{background-color:#c8f9ff}.treasureMapPopup-shop[data-environment-type=queso_geyser],.treasureMapPopup-shop[data-environment-type=queso_quarry],.treasureMapPopup-shop[data-environment-type=queso_plains],.treasureMapPopup-shop[data-environment-type=queso_river]{background-color:#f8f3ae}.treasureMapPopup-shop[data-environment-type=fort_rox]{background-color:#f2d5c9}.treasureMapPopup-shop[data-environment-type=desert_oasis]{background-color:#d1e7bf}.treasureMapPopup-shop[data-environment-type=desert_city]{background-color:#e48f89}.treasureMapPopup-shop[data-environment-type=desert_warpath]{background-color:#ffb280}.treasureMapPopup-shop[data-environment-type=slushy_shoreline]{background-color:#a0d3ee}.treasureMapPopup-shop[data-environment-type=seasonal_garden]{background-color:#e8e8e9}.treasureMapPopup-shop[data-environment-type=pollution_outbreak]{background-color:#cde691}.treasureMapPopup-shop[data-environment-type=kings_gauntlet]{background-color:#ccc}.treasureMapPopup-shop[data-environment-type=cape_clawed]{background-color:#b8d3dc}.treasureMapPopup-shop[data-environment-type=catacombs]{background-color:#a88ca4}.treasureMapPopup-shop[data-environment-type=great_gnarled_tree]{background-color:#abd59b}.treasureMapPopup-shop[data-environment-type=town_of_digby]{background-color:#e5e6d8}.treasureMapPopup-shop[data-environment-type=mousoleum]{background-color:#d6c8a2}.treasureMapPopup-shop[data-environment-type=harbour]{background-color:#fffcb6}.treasureMapPopup-shop[data-environment-type=queso_quarry],.treasureMapPopup-shop[data-environment-type=queso_plains]{display:none}.treasureMapPopup-shop-item-description-costContainer{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding-top:5px;margin-top:10px;border-top:1px solid #ccc}.treasureMapInventoryView-scrollCase-name{padding-bottom:5px}.mapper-self img{border-radius:50%;outline:2px solid #73ddff}.treasureMapView-block-title.mh-ui-scavenger-hunt-title,.treasureMapView-block.treasureMapView-scavengerHunt{display:none}.treasureMapView-hunter.empty img.treasureMapView-hunter-image{border:1px solid #aaa;opacity:.4}.treasureMapDialogView-userSelector .userSelectorView-content{height:550px}.treasureMapDialogView .userSelector-cell.name{font-size:12px}td.userSelector-cell.map_num_clues_found.number{font-size:8px}th.userSelector-column.is_favourite{color:transparent}.userSelector-table th.userSelectorView-sortByLink{text-align:center}.userSelector-table th.userSelectorView-sortByLink:after{margin-right:10px;margin-left:1px}.userSelectorView-filterContainer{font-size:12px}label.userSelectorView-filter-label{color:transparent}.treasureMapUserSelectorView-toggleFavouritesContainer.treasureMapView-block-title label{font-weight:400}.treasureMapDialogView .userSelector-cell abbr{text-decoration:none}.treasureMapDialogView-userSelector-selectedUserList-content{counter-reset:sent left}.treasureMapDialogView-userSelector-selectedUser{position:relative;counter-increment:sent}.treasureMapDialogView-userSelector-selectedUser.empty{counter-increment:left}.treasureMapUserSelectorView-actions:hover .treasureMapDialogView-userSelector-selectedUser:after{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:900;color:#fff;text-align:center;text-shadow:-1px 0 1px #000,1px 0 1px #000,0 0 0 #000,0 -1px 1px #000,0 1px 1px #000,0 0 0 #000;content:counter(sent)}.treasureMapUserSelectorView-actions:hover .treasureMapDialogView-userSelector-selectedUser.empty:after{content:counter(left)}.userSelector-table .userSelector-groupHeading td{padding:5px 0 2px 5px;border-right:none;border-left:none}.userSelector-table .userSelector-groupHeading td:first-child{border-top:none}.treasureMapView-environment-hunters .treasureMapView-hunter.captain .treasureMapView-hunter-image{width:20px;height:20px}.mh-mapper-consolation-prizes{display:flex;flex-direction:column;margin:10px 5px}h2.mh-mapper-consolation-prizes-title{padding:5px;margin-top:10px;font-size:12px;font-weight:700}.mh-mapper-consolation-prize{display:flex;flex-direction:row;align-items:center}img.mh-mapper-consolation-prize{width:25px;height:25px;margin-right:5px}.treasureMapView-block-title.mh-ui-environments-title,.treasureMapView-block-title.mh-ui-map-location-title,.treasureMapView-block-title.mh-ui-consolation-prizes-title{display:none}.treasureMapView-block-title.mh-ui-goals-title{margin:-7px;color:transparent}.treasureMapRootView-subTab-label{display:none}.treasureMapView-block-search{right:7px;bottom:15px}input.treasureMapView-block-search-text{height:18px;font-size:12px;border:1px solid #ccc}.treasureMapRootView-subTabRow{align-items:center}.treasureMapView-highlight{padding:0;border-radius:6px;outline:1px solid #505050;box-shadow:0 2px 3px -1px #292929,0 2px 10px -2px #ababab}.treasureMapView-highlight-content{padding:6px 0}.treasureMapView-highlight.goal.active.sticky.mouse.has-mhct-ars{width:40%}.treasureMapView-highlight-weakness-types img{width:17px}.treasureMapView-goals-groups.incomplete{padding-bottom:15px}.treasureMapView-highlight.environment .treasureMapView-highlight-content,.treasureMapView-highlight-description{padding:10px}.mh-ui-environments-block{border:none}.mh-ui-environments-block .treasureMapView-block-content.halfHeight{max-height:unset}.treasureMapView-goals-group-goal{width:calc(33% - 5px);margin:3px 5px 3px 0}.treasureMapView-highlight .treasureMapView-goals-group-goal{width:auto}.treasureMapView-goals-group-goal.notAvailable{opacity:.5}.treasureMapView-goals-group-goal.notAvailable:hover,.treasureMapView-goals-group-goal.notAvailable.sticky{opacity:1}.complete .treasureMapView-goals-group-goal-name,.complete .treasureMapView-goals-group-goal-padding{height:35px}.treasureMapView-goals-group-goal.complete:after{top:12px;left:7px;width:21px;height:21px}.treasureMapView-mapLeaveContainer .mousehuntActionButton.lightBlue.treasureMapView-leaveMapButton,.mousehuntActionButton.mh-ui-leave-map-button{background:#ffa5a5}.treasureMapView-mapLeaveContainer .mousehuntActionButton.lightBlue.treasureMapView-leaveMapButton:before,.mousehuntActionButton.mh-ui-leave-map-button:before{background:#f27b6a;box-shadow:0 0 10px #ffa5a5 inset}.treasureMapView-mapLeaveContainer .mousehuntActionButton.lightBlue.treasureMapView-leaveMapButton:hover:before,.treasureMapView-mapLeaveContainer .mousehuntActionButton.lightBlue.treasureMapView-leaveMapButton:focus:before,.mousehuntActionButton.mh-ui-leave-map-button:hover:before,.mousehuntActionButton.mh-ui-leave-map-button:focus:before{background:#ffa5a5}.treasureMapView-block-content.treasureMapInvitesView-scoreboards{padding:2px;overflow-x:hidden}.mh-dark-mode .pageFrameView #overlayPopup.treasureMapPopup .treasureMapRootView-content a.treasureMapView-block-row.active{color:#000;background:#f2eb6f}.treasureMapView-hunter.upgrader .treasureMapView-hunter-image{box-shadow:0 0 1px 3px #ffb40c}.treasureMapView-hunter-miceCaught.active{background-color:#eee}.mh-dark-mode .pageFrameView .treasureMapView-rightBlock{padding:0;background-color:transparent}.treasureMapView-highlight-catcher{display:inline-block;height:auto;background:none;border:none}.treasureMapView-highlight-group,.treasureMapView-highlight-environments{text-align:center}.treasureMapView-highlight-catcher-title{display:inline-block;margin-top:-20px;margin-left:12px;vertical-align:middle}.treasureMapView-highlight-weakness-title{font-size:8.4px}.treasureMapView-highlight.goal{width:30%}.treasureMapView-highlight-weaknessContainer{display:flex;align-items:baseline;margin:0 1px}.treasureMapInventoryView-relicHunter-hintSuffix{margin-bottom:10px;font-size:10px;font-style:italic;text-align:center}.treasureMapInventoryView-relicHunter{padding-top:120px}.treasureMapInventoryView-relicHunter:before{height:110px;border-bottom:1px solid #ccc}.treasureMapPopup-season-reward-name{padding:2px;font-size:11px}.treasureMapPopup-seasonContainer.mousehuntTooltipParent{font-size:11px}.treasureMapInventoryView .treasureMapView-block-search{right:0}.treasureMapInventoryView .treasureMapView-block-title,.treasureMapShopsView .treasureMapView-block-title{margin-bottom:0;visibility:hidden}.treasureMapInventoryView .treasureMapView-block-search,.treasureMapShopsView .treasureMapView-block-search{visibility:visible}.treasureMapRootView-footer .treasureMapRootView-footer-item{font-size:11px}.treasureMapRootView-footer .treasureMapRootView-footer-item:nth-child(3) .treasureMapRootView-footer-item-thumb,.treasureMapRootView-footer .treasureMapRootView-footer-item:nth-child(4) .treasureMapRootView-footer-item-thumb{height:21px;padding-left:3px;margin-right:-10px;background-color:#7b789a;background-repeat:no-repeat;background-position:center;border-top-right-radius:0;border-bottom-right-radius:0}.treasureMapRootView-footer .treasureMapRootView-footer-item:nth-child(3) .treasureMapRootView-footer-item-quantity,.treasureMapRootView-footer .treasureMapRootView-footer-item:nth-child(4) .treasureMapRootView-footer-item-quantity{height:13px;padding:4px;margin-left:5px;border-top-left-radius:0;border-bottom-left-radius:0}.treasureMapView-mapMenu.treasureMapRootView-padding{margin-bottom:30px}.treasureMapView-mapMenu.treasureMapRootView-padding.max_hunters_10{margin-bottom:50px}.mh-ui-we-did-it-title{display:none}.mh-ui-we-did-it-block{margin-top:3px}.treasureMapView-block.treasureMapView-reward.mh-ui-we-did-it-block{margin-top:3px;background-color:#95ef9b;border-color:#14851b}.treasureMapPopup-mapInvite .treasureMapView-hunter-wrapper.mousehuntTooltipParent{font-size:10px}.treasureMapPopup-mapInvite .treasureMapView-hunter{margin:3px 0}.treasureMapView-mapMenu-group-content.upgraded .treasureMapView-mapMenu-mapIcon,.treasureMapListingsTableView-mapThumbnail.rare{filter:drop-shadow(0 0 2px #ffb40c) drop-shadow(0 0 5px #ffb40c);box-shadow:none}.treasureMapDialogView-inviteFriend-completeContainer{display:grid;grid-template-columns:repeat(4,1fr);place-items:stretch stretch}.treasureMapDialogView-inviteFriend-complete{display:flex;align-items:center;justify-content:flex-start;text-align:left}.treasureMapDialogView-environmentGoals{max-height:unset}.treasureMapView-hunter-icon{top:-9px}.treasureMapTooltipView.active{transform:translateY(0)}.treasureMapView-mapWarning.treasureMapRootView-padding{padding-left:5px;margin-bottom:10px;font-size:10px;line-height:1.5;text-align:center;box-shadow:0 0 1px 1px #ffa5a5}.treasureMapView-consolationPrizeMessage{margin:15px 0;box-shadow:0 0 1px 1px #ffa5a5}.treasureMapView-mapWarning:before{display:none}.treasureMapDialogView-title{margin-bottom:5px}.incomplete .treasureMapView-goals-group-goal-padding{overflow:visible}.treasureMapView-goals-group-goal-image{width:34px;height:100%;border-radius:5px}.treasureMapView-goals-group-goal.landscape .treasureMapView-goals-group-goal-image{height:48px;background-position:center}.treasureMapView-goals-group-goal.complete.landscape .treasureMapView-goals-group-goal-image{height:33px}.treasureMapPopup-shop .treasureMapView-block-content-heading{border-color:transparent}.treasureMapView-goals-group-goal:hover:before,.treasureMapView-goals-group-goal.sticky:before{inset:-1px;outline:1px solid #ccc;box-shadow:none}.treasureMapView-goals-group-goal.item{padding:5px 0}.treasureMapView-goals-group-goal:hover:before{background-color:#ececec}.treasureMapView-goals-group-goal:hover .treasureMapView-goals-group-goal-image{mix-blend-mode:multiply}.treasureMapView-highlight.environment{top:25px;right:175px;left:unset;width:38%}.treasureMapView-highlight-environments{max-height:126px;margin-left:10px;overflow-y:auto}.treasureMapView-scoreboard-table .treasureMapView-block-row:hover{background-color:#eee}.treasureMapView-previewBar{padding-left:15px;background:#d9ffbf}.treasureMapView-previewBar:before{position:absolute;top:0;right:0;display:block;width:100px;height:40px;content:"";background:#d9ffbf url(https://www.mousehuntgame.com/images/ui/elements/larry_circle_large.gif?asset_cache_version=2) 0 -16px no-repeat;background-size:90px;transform:scaleX(-1)}.treasureMapView-previewBar-content{display:flex;justify-content:space-between;margin-right:100px}.treasureMapView-mapMenu-group:first-child .treasureMapView-mapMenu-group-title{margin-bottom:15px}\n'; } }); // src/modules/better-maps/styles/helper.css var helper_default2; var init_helper2 = __esm({ "src/modules/better-maps/styles/helper.css"() { helper_default2 = "#custom-submenu-item-mh-improved-map-helper .name{display:flex;flex-direction:column;justify-content:center;height:30px;line-height:1.3}#custom-submenu-item-mh-improved-map-helper .title{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}#custom-submenu-item-mh-improved-map-helper .subtitle{font-size:10px}.mh-improved-map-helper-popup pre{box-sizing:border-box;width:100%;height:400px;padding:10px;overflow:scroll;font-family:monospace;white-space:normal;background-color:#eee}\n"; } }); // src/modules/better-maps/styles/hunters.css var hunters_default; var init_hunters = __esm({ "src/modules/better-maps/styles/hunters.css"() { hunters_default = ".treasureMapView-componentContainer{width:130px}.treasureMapView-block.treasureMapView-invitedHuntersList{margin:20px 0}.treasureMapView-block.treasureMapView-invitedHuntersList .userSelectorView-user-image{width:20px;height:20px}.treasureMapView-block.treasureMapView-invitedHuntersList .treasureMapView-invitedHuntersList-row-link{font-size:10px}.treasureMapView-invitedHuntersList-row{margin-top:3px}.treasureMapDialogView-deleteInviteRequest.reject-invite-request{display:inline-block;width:12px;padding:3px;margin-right:6px;color:#242424;text-align:center;background-color:#dcd5d5;border-radius:50%}.treasureMapDialogView-deleteInviteRequest.reject-invite-request:hover,.treasureMapDialogView-deleteInviteRequest.reject-invite-request:focus,.treasureMapDialogView-deleteInviteRequest.reject-invite-request:active{text-decoration:none;background-color:#a3a3a3}.treasureMapView-allyRow:last-child .treasureMapView-allyCell.hunters-last-slot{display:inline-block;width:90px;margin-top:16px;margin-left:10px;font-style:italic;white-space:nowrap;vertical-align:middle}.treasureMapView-mapMenu-group-invite.mh-ui-invite-wrapper{display:flex;gap:5px}.treasureMapView-mapMenu-group-invite .mousehuntActionButton.mh-ui-invite-button{margin-bottom:0!important}.mh-ui-find-hunters-title,.mh-ui-map-settings-title,.mh-ui-share-title{display:none}.mh-ui-find-hunters-block{margin-top:18px}.mh-ui-map-settings-block .treasureMapView-block-content{display:flex;flex-direction:column;gap:5px;align-items:stretch;justify-content:center}.treasureMapView-block.mh-ui-share-block .treasureMapView-block-content{display:flex;gap:3px;align-items:center}a.mousehuntActionButton.lightBlue.treasureMapView-inviteModeButton{margin-top:0}.mh-ui-find-hunters-block .treasureMapView-mapMenu-group-invite{display:flex;align-items:stretch;justify-content:space-around}.treasureMapView-mapMenu-group-invite .mousehuntActionButton{margin-bottom:0!important}.treasureMapView-header .treasureMapView-hunter-image{min-width:44px;min-height:44px}.mh-ui-quick-invite-wrapper{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:space-around;max-width:185px;padding:10px;margin-bottom:10px;background-color:#eee;border:1px solid #ccc;border-radius:3px}input.mh-ui-quick-invite-input{width:auto;max-width:100px;padding:5px;margin:0;border:1px solid #c6c6c6}.mh-ui-quick-invite-indicator{position:absolute;top:15px;right:65px;width:20px;height:20px}.mh-ui-quick-invite-indicator.mh-ui-quick-invite-spinner{background-image:url(https://www.mousehuntgame.com/images/ui/loaders/small_spinner.gif?asset_cache_version=2);background-repeat:no-repeat;background-size:16px}.mh-ui-quick-invite-indicator.mh-ui-quick-invite-success{background-image:url(https://www.mousehuntgame.com/images/ui/hud/meadow_checkmark.png?asset_cache_version=2);background-repeat:no-repeat;background-size:16px}.mh-ui-quick-invite-wrapper .mh-ui-error-message{position:absolute;top:42px;right:5px;left:5px;text-align:center}span.treasureMapView-shareLinkInputStatus{display:none}.treasureMapView-mapMenu-group-invite{display:flex;flex-direction:column;gap:10px}.treasureMapView-inviteModeDescription{margin-bottom:5px}\n"; } }); // src/modules/better-maps/styles/map-ar.css var map_ar_default; var init_map_ar = __esm({ "src/modules/better-maps/styles/map-ar.css"() { map_ar_default = ".treasureMapView.treasure .treasureMapView-goals-group-goal[data-mh-ui-ar=true] .treasureMapView-goals-group-goal-name,.treasureMapView.event .treasureMapView-goals-group-goal[data-mh-ui-ar=true] .treasureMapView-goals-group-goal-name{position:relative;display:flex;flex-direction:column;gap:3px;align-items:flex-start;justify-content:center}.mh-ui-ar{padding:3px;font-size:10px;color:#000;background-color:#fff;border:1px solid #d9d9d9;border-radius:4px}.poster .mh-ui-ar{position:absolute;right:0;bottom:-7px;font-family:lucida grande,tahoma,verdana,arial,sans-serif;font-size:10px;color:#000;text-shadow:none}.mh-ui-ar-hidden .mh-ui-ar{display:none}.complete .mh-ui-ar{background-color:#e5e5e5}.mh-ui-ar-guaranteed{background-color:#0ef;border-color:#8fb1b3}.mh-ui-ar-super-easy{background-color:#8ffaab;border-color:#73b484}.mh-ui-ar-easy{background-color:#b9ff9e;border-color:#8fb17a}.mh-ui-ar-medium{background-color:#ffdab9;border-color:#c5a381}.mh-ui-ar-hard{background-color:#ffc440;border-color:#c59c40}.mh-ui-ar-super-hard{background-color:#ff9e9e;border-color:#c55a5a}.mh-ui-ar-extreme{color:#fff;background-color:#ed6464;border-color:#a64a4a}.mh-ui-ar-impossible{color:#fff;background-color:#c92222;border-color:#5a2121}.mh-ui-toggle-ar-button,.mh-ui-ar-failed{margin-left:10px}.treasure .treasureMapView-goals-group-goal[data-mh-ui-ar=true].item .treasureMapView-goals-group-goal-name,.event .treasureMapView-goals-group-goal[data-mh-ui-ar=true].item .treasureMapView-goals-group-goal-name{align-items:center}\n"; } }); // src/modules/better-maps/styles/mhct.css var mhct_default; var init_mhct = __esm({ "src/modules/better-maps/styles/mhct.css"() { mhct_default = ".mhct-data{display:none}.mouse-container-selected .mhct-data{display:block}.treasureMapView-highlight.goal.sticky .mh-ui-mouse-links-map-ars .mhct-data{display:block;margin-top:1px}.mhct-title{display:none;padding:10px;margin-bottom:10px;font-size:12px;border-bottom:1px solid #dedede}.mhct-row{display:grid;grid-template-columns:3fr 3fr 1fr;column-gap:4px;place-items:center stretch;padding:4px;font-size:11px;color:#000}.mhct-row:nth-child(odd){background-color:#e2e2e2}.mhct-location{display:flex;flex-direction:column}.mhct-stage{color:#666}.mh-dark-mode .mhct-stage{color:#a7a7a7}.mhct-rate{font-family:monospace;font-size:13px;text-align:right}.mh-ui-mouse-links-map-ars{display:none}.sticky .mh-ui-mouse-links-map-ars{display:block}.mh-ui-mouse-links-map-ars .mhct-data{position:relative;display:flex;margin:0;color:#000;background-color:#fff;border-top:none;border-radius:6px}.mh-dark-mode .mh-ui-mouse-links-map-ars .mhct-data{color:#fff;border-color:#2c2c2c}.mh-ui-mouse-links-map-ars .mhct-row:nth-child(odd){color:#000;background-color:#f2f2f2}.mh-ui-mouse-links-map-ars .mhct-rate{display:flex;align-items:center;height:100%;font-size:13px}.mh-ui-mouse-links-map-ars .mhct-row{place-items:start stretch}.mh-ui-mouse-links-map-ars .mhct-title{display:flex;align-items:center;justify-content:space-between;padding:5px;font-size:11px;color:#000;background-color:#d6d6d6;border-top:1px solid #dedede;border-bottom:1px solid #2c415a;border-top-left-radius:4px;border-top-right-radius:4px}.mh-dark-mode .mh-ui-mouse-links-map-ars .mhct-title{color:#fff;background-color:#000;border-color:#2c2c2c}.mh-ui-mouse-links-map-ars .mhct-stage{max-width:80px;overflow:hidden;text-overflow:ellipsis}.treasureMapView-highlight-content{border-bottom-right-radius:0;border-bottom-left-radius:0}.mh-ui-mouse-links-map-ars .mhct-title,.mh-ui-mouse-links-map-ars .mhct-data{border-top-left-radius:0;border-top-right-radius:0}.mh-ui-mouse-links-map-ars .mhct-row:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}\n"; } }); // src/modules/better-maps/styles/sidebar.css var sidebar_default2; var init_sidebar2 = __esm({ "src/modules/better-maps/styles/sidebar.css"() { sidebar_default2 = '.pageSidebarView{padding-left:10px}.pageFrameView-column.right{border-left-width:15px}.pageFrameView{grid-template-columns:[first] auto [content-start] 760px [sidebar] 210px [content-end] auto [last]}.mh-improved-map-sidebar{padding:0;margin:5px 0 15px;border:1px solid #ddedff}.mh-improved-map-sidebar-title{position:relative;padding:5px;font-size:11px;text-align:center;background-color:#ddedff}.mh-improved-map-sidebar-title:hover{cursor:pointer}.mh-improved-map-sidebar-goals{display:flex;flex-direction:column}.mh-improved-map-sidebar-goal{display:flex;gap:5px;align-items:center;justify-content:flex-start;padding:1px 5px}.mh-improved-map-sidebar-goal-image{width:20px;height:20px;background-size:cover;border-radius:3px;box-shadow:inset 0 0 0 1px #fff}.mh-improved-map-sidebar-goal-name{font-size:10px}.mh-improved-map-sidebar-goal:hover{cursor:pointer;background-color:#eee}.mh-improved-map-sidebar-goal-active{background-color:#fdfbcc}.mh-improved-map-sidebar-title:after{position:absolute;top:2px;right:0;box-sizing:border-box;display:block;width:17px;height:17px;padding:9px;margin:1px;content:"";background:url(https://www.mousehuntgame.com/images/ui/puzzle/refresh.png) no-repeat center center / contain;border-radius:50%;opacity:.3}.mh-improved-map-sidebar-title:hover:after{opacity:1}.loading .mh-improved-map-sidebar-title:after{animation:mh-improved-spin 1s linear infinite}@media (prefers-reduced-motion: reduce){.loading .mh-improved-map-sidebar-title:after{animation:none}}.mh-improved-map-sidebar-goal-has-hunter:after{position:absolute;top:3px;right:4px;width:15px;height:15px;content:"";background-size:contain;border:1px solid #808080;border-radius:50%}\n'; } }); // src/modules/better-maps/styles/sorted-map.css var sorted_map_default; var init_sorted_map = __esm({ "src/modules/better-maps/styles/sorted-map.css"() { sorted_map_default = "#sorted-mice-container .mouse-category-twilight-midnight-pitch .mouse-category-title{font-size:13px}#sorted-mice-container .mouse-category-first-light-utter-darkness .mouse-category-title{font-size:12px}\n"; } }); // src/modules/better-maps/styles/sorted.css var sorted_default; var init_sorted = __esm({ "src/modules/better-maps/styles/sorted.css"() { sorted_default = `#sorted-mice-container{margin:20px 5px}#sorted-mice-container .mouse-category-container{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:10px;place-items:stretch stretch;margin-bottom:25px}#sorted-mice-container .mouse-category-wrapper{position:relative;color:#000;background-color:#e6e6e6;border:1px solid rgb(5 5 5 / 50%);border-radius:0;box-shadow:0 2px 1px -1px #909090}#sorted-mice-container .mouse-category-header{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding:6px 10px;margin-bottom:3px;color:#000;background-color:#ffffffa6;border-bottom:1px solid rgb(5 5 5)}#sorted-mice-container .mouse-category-icon{width:30px;height:30px;margin-right:10px}#sorted-mice-container .mouse-category-icon-title-wrapper{display:flex;align-items:center}#sorted-mice-container .mouse-category-title{font-size:14px}#sorted-mice-container .mouse-category-subtitle{margin-top:2px;font-size:11px;font-style:italic}#sorted-mice-container .mouse-category-mice{padding:4px}#sorted-mice-container .mouse-container{padding-right:5px;margin-bottom:5px;cursor:pointer;border-radius:4px}#sorted-mice-container .mouse-data{position:relative;display:flex;align-items:center}#sorted-mice-container .mouse-name{flex:1}#sorted-mice-container .mouse-extra-info{display:none}#sorted-mice-container .mouse-container-selected,#sorted-mice-container .mouse-container:hover,#sorted-mice-container .mouse-container:focus{position:relative;background:#ffffff7f;outline:1px solid rgb(25 25 25 / 35%)}#sorted-mice-container .mouse-container-selected .mouse-mhct-extra-info-wrapper{position:absolute;z-index:10;display:block;padding:10px 5px;margin:-5px -10px;background-color:#eaeaea;border:1px solid #000;border-radius:3px;box-shadow:0 10px 15px #00000087}#sorted-mice-container .mouse-subcategory-mice .mouse-container-selected .mouse-mhct-extra-info-wrapper{right:-15px;left:-15px}#sorted-mice-container .mouse-container-selected .mouse-extra-info{display:block}#sorted-mice-container .mouse-image{width:auto;height:35px;margin:5px;border-radius:3px;outline:1px solid #989898}#sorted-mice-container .scavenger-sorted-page .mouse-image{outline:none}.mh-dark-mode #sorted-mice-container .mouse-image{border-radius:3px}#sorted-mice-container .mouse-category-wrapper-hidden{display:none}#sorted-mice-container .mouse-subcategory-wrapper{margin:3px;background-color:#fff9;border:1px solid rgb(0 0 0 / 60%);box-shadow:inset 1px 1px 2px -1px #0009}#sorted-mice-container .mouse-subcategory-header{position:relative;padding:8px;margin-bottom:3px;font-size:11px;border-bottom:1px solid #999}#sorted-mice-container .mouse-subcategory-mice{padding:0 5px}#sorted-mice-container .mouse-locations{display:flex;flex-direction:column}#sorted-mice-container .mouse-location{display:inline-block;margin-bottom:5px}#sorted-mice-container .mhct{margin-top:15px}#sorted-mice-container .location-text-wrapper{text-align:center}#sorted-mice-container .mouse-weakness{display:flex;align-items:center;margin-top:10px}#sorted-mice-container .weakness-type{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}#sorted-mice-container .power-types img{width:15px;height:15px;margin:1px}#sorted-mice-container .weakness-name{flex:0 0 100%;margin-right:2px;margin-bottom:2px;font-size:10px;text-align:center}#sorted-mice-container .mouse-locations-wrapper{display:flex}.mouse-category-wrapper.mouse-category-current-floor .mouse-category-header:after,.mouse-subcategory-wrapper.mouse-subcategory-current-floor .mouse-subcategory-header:after{position:absolute;top:-4px;right:2px;z-index:1;width:25px;height:25px;margin:0;content:"";background-color:#fff;background-image:url(https://www.mousehuntgame.com//images/ui/friends/anonymous_user.png);background-size:cover;border-radius:50%}.mouse-subcategory-wrapper.mouse-subcategory-current-floor .mouse-subcategory-header:after{top:5px;border:1px solid #9f9f9f}.mouse-category-wrapper.mouse-category-current-floor .mouse-category-header:before{position:absolute;top:-8px;right:-4px;width:37px;height:48px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hud/bountiful_beanstalk/player.png?asset_cache_version=2);filter:hue-rotate(275deg);background-repeat:no-repeat;background-position:center;background-position-y:0;background-size:100%}#sorted-mice-container .mouse-subcategory-wrapper .mouse-subcategory-header{margin-bottom:3px;background-color:#ffffffbf;border-bottom:1px solid #070707}.mhct-row.mhct-row-no-env{cursor:not-allowed}.scavenger-location-content,.sorted-page-content.generic-sorted-page{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 30px}.scavenger-location-content .mh-ui-ar{margin-left:5px}.poster .sorted-page-content .mh-ui-ar{position:relative;right:unset;bottom:unset}.sorted-page-content .mhct-stage{max-width:110px;overflow:hidden;text-overflow:ellipsis}.treasureMapView-leftBlock{position:relative}.mh-ui-goals-sidebar-toggle{position:absolute;top:10px;right:20px;width:15px;height:15px;background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" width="28" fill="currentColor"><path d="M4 0h12a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4zm7.828 8L8.293 6.464A1 1 0 0 1 9.707 5.05l4.243 4.243a1 1 0 0 1 0 1.414L9.707 14.95a1 1 0 1 1-1.414-1.414L11.828 10z"></path></svg>');background-repeat:no-repeat;background-size:100%;opacity:.5}.mh-ui-goals-sidebar-toggle.closed{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" width="28" fill="currentColor"><path d="M4 2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4zm0-2h12a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"></path><path d="M8.414 9H14a1 1 0 1 1 0 2H8.414l2.536 2.536a1 1 0 0 1-1.414 1.414l-4.243-4.243a.997.997 0 0 1 0-1.414L9.536 5.05a1 1 0 1 1 1.414 1.414L8.414 9z"></path></svg>')}.mh-ui-goals-sidebar-toggle:hover{opacity:1}.treasureMapView-leftBlock.full-width{width:100%}.full-width .treasureMapView-goals-group-goal{width:calc(20% - 5px)}.scavenger-toggle-wrapper{display:flex;gap:10px;justify-content:flex-start;margin-bottom:20px}.sorted-page[data-scavenger-sorted-by=none] .sorted-page-content.treasureMapView-block-content.scavenger-sorted-page{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 30px} `; } }); // src/modules/better-maps/styles/userscripts.css var userscripts_default; var init_userscripts = __esm({ "src/modules/better-maps/styles/userscripts.css"() { userscripts_default = 'fieldset.tsitu-mapping{display:flex;align-items:center;justify-content:flex-end;float:right;width:200px!important;padding:0!important;margin-right:13px;margin-left:0!important;border:none!important}span.tsitu-mapping{display:flex!important;align-items:center;padding-bottom:8px;margin:0!important}span.tsitu-mapping.tsitu-refresh-span>span{display:none}.tsitu-mapping br,.tsitu-mapping legend,.tsitu-mapping label{display:none}input[name=tsitu-mapping-id-input]{width:100px;height:17px;line-height:20px}.tsitu-mapping button[style="margin-left: 5px;"]{padding:4px 3px;margin-right:4px;margin-left:2px!important;font-size:9px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:5px;box-shadow:0 -5px 8px -2px #ffae00 inset}.tsitu-mapping button[style="margin-left: 5px;"]:hover,.tsitu-mapping button[style="margin-left: 5px;"]:focus{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}button.mousehuntActionButton.tiny.tsitu-mapping{padding:4px!important;margin:0!important}.mh-dark-mode input[name=tsitu-mapping-id-input]{color:#fff;background-color:#636363;border:1px solid #2c2c2c}\n'; } }); // src/modules/better-maps/index.js var imported2, styles2, addBlockClasses, interceptMapRequest, initMapper, intercept, clearStickyMouse, updateRelicHunterHint, relicHunterUpdate, init5, better_maps_default; var init_better_maps = __esm({ "src/modules/better-maps/index.js"() { init_utils2(); init_settings6(); init_helper(); init_tab_sorted(); init_tab_goals(); init_tab_hunters(); init_sidebar(); init_general2(); init_helper2(); init_hunters(); init_map_ar(); init_mhct(); init_sidebar2(); init_sorted_map(); init_sorted(); init_userscripts(); imported2 = [general_default2, helper_default2, hunters_default, map_ar_default, mhct_default, sidebar_default2, sorted_map_default, sorted_default, userscripts_default]; styles2 = imported2; addBlockClasses = () => { const rightBlocks = document.querySelectorAll(".treasureMapView-rightBlock > div"); const leftBlocks = document.querySelectorAll(".treasureMapView-leftBlock > div"); const blocks = [...rightBlocks, ...leftBlocks]; let prevBlockType = ""; blocks.forEach((block) => { if (block.classList.contains("treasureMapView-block-title")) { const blockType = block.innerText.trim().toLowerCase().replaceAll(" ", "-").replaceAll(/[^a-z-]/g, "").replace("--", "-").replace("goalssearch", "goals"); block.classList.add(`mh-ui-${blockType}-title`); prevBlockType = blockType; } else { block.classList.add(`mh-ui-${prevBlockType}-block`); } }); }; interceptMapRequest = (mapId) => { sessionSet("map-refreshed", Date.now()); if (!mapId) { return false; } const init74 = (mapData3) => { setGlobal("mapper", { mapData: mapData3, mapModel: new hg.models.TreasureMapModel(mapData3) }); doEvent2("mapper_loaded", mapData3); return data; }; const data = getMapData(mapId, true); if (data) { return init74(data); } return false; }; initMapper = (map) => { if (!map || !map.map_id || !map.map_type) { return; } const content = document.querySelector(".treasureMapRootView-content"); if (content && content.classList.contains("loading")) { const observer2 = new MutationObserver((mutations, mObserver) => { mutations.forEach((mutation) => { if (mutation.type === "attributes" && mutation.attributeName === "class" && !mutation.target.classList.contains("loading")) { mObserver.disconnect(); initMapper(map); } }); }); const rootOfChanges = document.querySelector(".treasureMapRootView"); observer2.observe(rootOfChanges, { attributes: true, childList: true, subtree: true }); } addSortedMapTab(); const tabs = document.querySelectorAll(".treasureMapRootView-subTab"); tabs.forEach((tab) => { tab.addEventListener("click", () => { addBlockClasses(); doEvent2("map_tab_click", map); doEvent2(`map_${tab.getAttribute("data-type")}_tab_click`, map); }); }); doEvent2("map_show_goals_tab_click", map); addBlockClasses(); }; intercept = () => { const parentShowMap = hg.controllers.TreasureMapController.showMap; hg.controllers.TreasureMapController.showMap = (id = false) => { var _a, _b; parentShowMap(id); const intercepted = interceptMapRequest(id != null ? id : (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRelicHunter) == null ? void 0 : _b.default_map_id); setTimeout(() => { var _a2, _b2; if (!intercepted) { interceptMapRequest(id != null ? id : (_b2 = (_a2 = user == null ? void 0 : user.quests) == null ? void 0 : _a2.QuestRelicHunter) == null ? void 0 : _b2.default_map_id); } }, 1e3); }; onRequest("users/treasuremap.php", (data) => { if (data.treasure_map && data.treasure_map.map_id) { setMapData(data.treasure_map.map_id, data.treasure_map); } }, true); onRequest("board/board.php", (data) => { if (data.treasure_map && data.treasure_map.map_id) { setMapData(data.treasure_map.map_id, data.treasure_map); } }, true); }; clearStickyMouse = () => { const sticky = document.querySelector(".treasureMapView-highlight"); if (sticky) { sticky.classList.remove("sticky"); sticky.classList.remove("active"); } const mapGroupGoal = document.querySelectorAll(".treasureMapView-goals-group-goal"); if (mapGroupGoal) { mapGroupGoal.forEach((goal) => { goal.classList.remove("sticky"); }); } }; updateRelicHunterHint = () => __async(void 0, null, function* () { const relicHunter = document.querySelector(".treasureMapInventoryView-relicHunter-hint"); if (!relicHunter) { return false; } if (relicHunter.getAttribute("data-travel-button-added")) { return true; } relicHunter.setAttribute("data-travel-button-added", true); const hint = relicHunter.innerText.trim(); const relicHunterHints = yield getData("relic-hunter-hints"); let key = false; Object.keys(relicHunterHints).forEach((k) => { if (relicHunterHints[k].includes(hint)) { key = k; } }); if (!key) { return true; } environments = yield getData("environments"); const environment = environments.find((e) => e.id === key); if (!environment) { return true; } let hintWrapper = document.querySelector(".treasureMapInventoryView-relicHunter"); if (!hintWrapper) { hintWrapper = relicHunter; } makeElement("div", "treasureMapInventoryView-relicHunter-hintSuffix", `... in ${environment.article}.`, hintWrapper); const travelButton = makeElement("div", ["mousehuntActionButton", "small"]); makeElement("span", "", "Travel", travelButton); travelButton.addEventListener("click", () => { hg.utils.User.travel(environment.id); }); hintWrapper.append(travelButton); return true; }); relicHunterUpdate = () => { const _showInventory = hg.controllers.TreasureMapController.showInventory; hg.controllers.TreasureMapController.showInventory = () => { _showInventory(); let tries = 0; const interval = setInterval(() => __async(void 0, null, function* () { tries++; if ((yield updateRelicHunterHint()) || tries > 5) { clearInterval(interval); } }), 250); }; }; init5 = () => __async(void 0, null, function* () { addStyles(styles2, "better-maps"); eventRegistry.addEventListener("map_sorted_tab_click", showSortedTab); eventRegistry.addEventListener("map_show_goals_tab_click", showGoalsTab); eventRegistry.addEventListener("map_manage_allies_tab_click", showHuntersTab); eventRegistry.addEventListener("map_tab_click", (map) => { hideGoalsTab(map); hideSortedTab(map); clearStickyMouse(); }); eventRegistry.addEventListener("mapper_loaded", initMapper); intercept(); relicHunterUpdate(); if (getSetting("experiments.better-maps-helper")) { helper_default(); } if (!getSetting("no-sidebar") && getSetting("better-maps.show-sidebar-goals", true)) { sidebar_default(); } }); better_maps_default = { id: "better-maps", name: "Better Maps", type: "better", default: true, description: "Adds a number of features to maps, including showing attracting rates, a sorted tab that categorizes a variety of maps, and showing more information on the Hunters tab.", load: init5, settings: settings_default5 }; } }); // src/modules/better-item-view/hover-item/styles.css var styles_default9; var init_styles10 = __esm({ "src/modules/better-item-view/hover-item/styles.css"() { styles_default9 = "#item-data-wrapper{position:absolute;z-index:999999;box-sizing:border-box;display:block;width:300px;height:100px;background:linear-gradient(#decebb 5%,#f0eddf 50%);border:1px solid #9a8872;border-radius:10px;box-shadow:0 1px 5px -1px #5e5e5e}.item-data-wrapper-loading{display:flex;align-items:flex-end;justify-content:center;height:90%;background-image:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif);background-repeat:no-repeat;background-position:center;background-size:55px}#item-data-wrapper .item-data{display:grid;grid-template-columns:90px 1fr;gap:10px;align-items:center;height:95px}#item-data-wrapper .item-image{height:80px;margin-left:10px;background-color:#fff;border:1px solid #25211e;border-radius:5px}#item-data-wrapper .item-text{display:flex;flex-direction:column;justify-content:space-around;height:80px;margin-right:10px}#item-data-wrapper .item-name{width:160px;font-size:12px;font-weight:900}\n"; } }); // src/modules/better-item-view/hover-item/index.js var fetchAndFillItemData, itemDataWrapper, isLoading, makeMouseMarkup, main2, hoverMice, hover_item_default; var init_hover_item = __esm({ "src/modules/better-item-view/hover-item/index.js"() { init_utils2(); init_styles10(); fetchAndFillItemData = (itemId) => __async(void 0, null, function* () { var _a; if (isLoading) { return; } isLoading = true; let item; const cacheditemData = sessionGet(`better-item-view-hover-mice-${itemId}`, false); if (cacheditemData) { item = cacheditemData; } else { const itemDataRequest = yield doRequest("managers/ajax/users/userInventory.php", { action: "get_items", "item_types[]": itemId }); if (!((_a = itemDataRequest == null ? void 0 : itemDataRequest.items) == null ? void 0 : _a.length)) { return; } item = itemDataRequest == null ? void 0 : itemDataRequest.items[0]; sessionSet(`better-item-view-hover-mice-${itemId}`, item); } const itemData = makeElement("div", "item-data"); const itemImage = makeElement("img", "item-image"); itemImage.src = item.thumbnail; itemData.append(itemImage); const itemText = makeElement("div", "item-text"); makeElement("div", "item-name", item.name, itemText); const quantity = makeElement("div", "item-quanity"); makeElement("span", "", "Quantity: ", quantity); makeElement("span", "", item.quantity.toLocaleString(), quantity); itemText.append(quantity); const description = makeElement("div", "item-description"); const firstSentence = item.description.match(/[^!.?]+[!.?]/); makeElement("div", "item-description-text", firstSentence ? firstSentence[0] : item.description, description); itemData.append(itemText); itemDataWrapper.innerHTML = itemData.outerHTML; isLoading = false; }); isLoading = false; makeMouseMarkup = (itemId, e) => __async(void 0, null, function* () { itemDataWrapper == null ? void 0 : itemDataWrapper.remove(); const existing = document.querySelectorAll("#item-data-wrapper"); if (existing && existing.length) { existing.forEach((el) => { el.remove(); }); } itemDataWrapper = makeElement("div", "item-data-wrapper"); itemDataWrapper.id = "item-data-wrapper"; itemDataWrapper.innerHTML = '<span class="item-data-wrapper-loading">Loading...</span>'; fetchAndFillItemData(itemId); document.body.append(itemDataWrapper); const rect = e.target.getBoundingClientRect(); const top = rect.top + window.scrollY; const left = rect.left + window.scrollX; let tooltipTop = top - itemDataWrapper.offsetHeight - 10; if (tooltipTop < 0) { tooltipTop = top + rect.height + 10; } itemDataWrapper.style.top = `${tooltipTop}px`; itemDataWrapper.style.left = `${left - itemDataWrapper.offsetWidth / 2 + rect.width / 2}px`; let timeoutId; itemDataWrapper.addEventListener("mouseleave", () => { timeoutId = setTimeout(() => { itemDataWrapper.remove(); }, 250); }); itemDataWrapper.addEventListener("mouseenter", () => { clearTimeout(timeoutId); }); const parent = e.target.parentElement; if (parent) { parent.addEventListener("mouseleave", () => { timeoutId = setTimeout(() => { itemDataWrapper.remove(); }, 500); }); parent.addEventListener("mouseenter", () => { clearTimeout(timeoutId); }); } }); main2 = () => { const itemLinks = document.querySelectorAll('.journal .content .entry .journaltext a[onclick*="ItemView.show"]'); if (!itemLinks) { return; } itemLinks.forEach((link) => { const itemType = link.getAttribute("onclick").match(/'([^']+)'/)[1]; link.setAttribute("onclick", `hg.views.ItemView.show('${itemType}'); return false;`); let timer; link.addEventListener("mouseover", (e) => { clearTimeout(timer); timer = setTimeout(() => { makeMouseMarkup(itemType, e); }, 200); }); link.addEventListener("mouseout", () => { clearTimeout(timer); }); }); }; hoverMice = () => { addStyles(styles_default9, "better-item-view-hover-mice"); setTimeout(main2, 500); onRequest("*", () => { setTimeout(main2, 1e3); }); onTurn(() => { sessionsDelete("better-item-view-hover-mice-"); }, 1e3); }; hover_item_default = hoverMice; } }); // src/modules/better-item-view/settings/index.js var settings_default6; var init_settings7 = __esm({ "src/modules/better-item-view/settings/index.js"() { settings_default6 = () => __async(void 0, null, function* () { return [ { id: "better-item-view.show-drop-rates", title: "Show drop rates", default: true }, { id: "better-item-view.show-item-hover", title: "Show item details on hover (in journal)", default: true } ]; }); } }); // src/modules/better-item-view/styles.css var styles_default10; var init_styles11 = __esm({ "src/modules/better-item-view/styles.css"() { styles_default10 = '.itemView-titleContainer{height:26px}.itemView-header-name{display:flex;align-items:center;justify-content:space-between}.mh-item-links{display:flex;justify-content:flex-end;margin-right:-10px}.mh-item-links a{margin-right:5px}.itemView-header-name .mh-item-links span{display:inline-block;font-size:11px;font-weight:400}.itemView-has-mhct .mouse-ar-wrapper{display:grid;grid-template-columns:150px auto 50px;place-items:center stretch;padding:5px;margin:5px 0;font-size:12px}.itemView-has-mhct .has-stages .mouse-ar-wrapper{grid-template-columns:110px 140px auto 50px}.itemView-has-mhct .mouse-ar-wrapper div{padding:0 2px}.itemView-has-mhct .mice-ar-wrapper{margin-right:10px}.mouse-ar-wrapper .stage{font-size:10px}.mouse-ar-wrapper .cheese{font-size:11px}.itemView-has-mhct .ar-header{display:flex;align-items:center;justify-content:space-between;height:26px;padding-bottom:2px;margin-top:10px;margin-bottom:10px;font-size:12px;font-weight:900;border-bottom:1px solid #ccc}.itemView-has-mhct .ar-link{font-size:9px}.itemView-has-mhct .rate{text-align:right}.itemView-has-mhct .mouse-ar-wrapper:nth-child(odd){background-color:#e7e7e7}.itemView-has-mhct .itemView-description{font-weight:500;line-height:19px}.itemView-action.crafting_item b{display:none}.itemView-action.crafting_item:before{content:"This can be used to craft other items!"}.itemViewContainer.map_piece .itemView-action-text.map_piece,.itemViewContainer.base .itemView-action-text.base,.itemViewContainer.weapon .itemView-actio-textn.weapon,.itemViewContainer.bait .itemView-action-text.bait,.itemViewContainer.trinket .itemView-action-text.trinket,.itemViewContainer.potion .itemView-action-text.potion,.itemViewContainer.readiness_item .itemView-action-text.readiness_item,.itemViewContainer.convertible .itemView-action-text.convertible,.itemViewContainer.torn_page .itemView-action-text.torn_page,.itemViewContainer.crafting_item .itemView-action-text.crafting_item,.itemViewContainer.collectible .itemView-action-text.collectible,.itemViewContainer.message_item .itemView-action-text.message_item,.itemViewContainer.bonus_loot .itemView-action-text.bonus_loot,.itemViewContainer.stat .itemView-action-text.stat,.itemViewContainer.quest .itemView-action-text.quest,.itemViewContainer.skin .itemView-action-text.skin{display:none!important}.itemViewContainer .shopCustomization .itemViewStatBlock-stat{display:flex;flex-direction:column;align-items:center}.itemViewContainer .itemViewStatBlock-stat{display:flex;flex-direction:row;align-items:center;justify-content:flex-start}.itemViewContainer .itemViewStatBlock-stat-value{flex:1;text-align:left}.itemViewContainer .itemViewStatBlock-stat.cheeseEffect{font-size:9px;text-align:center}.itemViewContainer .itemViewStatBlock.trinket .itemViewStatBlock-padding{display:flex;flex-direction:column;align-items:stretch;width:100px}.itemViewContainer .itemViewStatBlock.trinket{width:100px;font-size:13px}#overlayPopup.itemViewPopup #jsDialogClose{z-index:1}#overlayPopup.itemViewPopup .itemView-header-classification{right:25px}.itemView-actionContainer{display:flex;flex-wrap:wrap;gap:10px}.itemView-action{border-top:none}.itemViewContainer.potion .inventoryPage-item-recipeOptions li{width:365px}.itemView-character-image{width:auto;height:84px;margin-top:-15px;margin-left:-9px}.itemView-character-name{left:-11px;width:75px;font-size:15px}.itemView-padding{margin-left:70px}.itemView-thumbnail.large{margin-left:-15px}input.itemView-action-convert-quantity{width:50px}.itemViewPopup .itemViewStatBlock-padding{flex-direction:column}.itemView-character .itemView-character-image{transition:all .4s ease-out;transform-origin:bottom}.itemView-character:hover .itemView-character-image{transform:scale(1.2) rotate(-10deg) translate(5px)}.itemView-header-classification{visibility:hidden}.itemView-header-classification span{visibility:visible}.itemViewStatBlock-stat{display:flex;align-items:center}.itemView-sidebar-checklistItem:nth-child(1),.itemView-sidebar-checklistItem:nth-child(2),.itemView-sidebar-checklistItem.checked{display:block}.itemView-sidebar-checklistItem{background:url(https://www.mousehuntgame.com/images/icons/bad_idea.png) 1px 4px no-repeat;background-size:14px}.itemView-partsContainer{display:flex;flex-direction:column;align-items:stretch;padding-top:15px;padding-bottom:10px;margin-top:15px;border-top:1px solid #666}\n'; } }); // src/modules/better-item-view/index.js var getLinkMarkup2, addLinks, updateItemView, init6, better_item_view_default; var init_better_item_view = __esm({ "src/modules/better-item-view/index.js"() { init_utils2(); init_hover_item(); init_settings7(); init_styles11(); getLinkMarkup2 = (name, id) => { return makeLink("MHCT", `https://www.mhct.win/loot.php?item=${id}`, true) + makeLink("Wiki", `https://mhwiki.hitgrab.com/wiki/index.php/${name}`); }; addLinks = (itemId) => { const title = document.querySelector(".itemView-header-name"); if (!title) { return; } const currentLinks = document.querySelector(".mh-item-links"); if (currentLinks) { currentLinks.remove(); } const div = document.createElement("div"); div.classList.add("mh-item-links"); div.innerHTML = getLinkMarkup2(title.innerText, itemId); title.append(div); const values = document.querySelector(".mouseView-values"); const desc = document.querySelector(".mouseView-descriptionContainer"); if (values && desc) { desc.insertBefore(values, desc.firstChild); } }; updateItemView = () => __async(void 0, null, function* () { const itemView = document.querySelector(".itemViewContainer"); if (!itemView) { return; } const itemId = itemView.getAttribute("data-item-id"); if (!itemId) { return; } const sidebar = document.querySelector(".itemView-sidebar"); if (sidebar) { const crafting = document.querySelector(".itemView-action.crafting_item"); if (crafting) { sidebar.append(crafting); } const smashing = document.querySelector(".itemView-partsContainer"); if (smashing) { sidebar.append(smashing); if (smashing.getAttribute("data-has-changed-title")) { return; } const smashingTitle = smashing.querySelector("b"); if (smashingTitle) { smashingTitle.innerText = "Hunter's Hammer to get:"; smashing.setAttribute("data-has-changed-title", "true"); smashing.innerHtml = smashing.innerHTML.replace("If you smash it, you'll get:", ""); } } } addLinks(itemId); if (!getSetting("better-item-view.show-drop-rates", true)) { return; } const id = Number.parseInt(itemId, 10); const ignored = [ 2473, // Mina's gift 823, // party charm 803, // chrome charm 420, // king's credits 1980, // king's keys 585 // scrambles ]; if (ignored.includes(id)) { return; } let mhctJson = yield getArForMouse(itemId, "item"); if (!mhctJson || mhctJson === void 0) { return; } itemView.classList.add("mouseview-has-mhct"); const container = itemView.querySelector(".itemView-padding"); if (!container) { return; } const arWrapper = makeElement("div", "ar-wrapper"); const title = makeElement("div", "ar-header"); const titleText = makeElement("div", "ar-title", "Drop Rates", title); makeTooltip({ appendTo: titleText, text: 'The best location and bait, according to data gathered by <a href="https://mhct.win/" target="_blank" rel="noopener noreferrer">MHCT</a>.' }); const link = makeElement("a", "ar-link", "View on MHCT \u2192"); link.href = `https://www.mhct.win/loot.php?item=${itemId}`; link.target = "_mhct"; title.append(link); arWrapper.append(title); const itemsArWrapper = makeElement("div", "item-ar-wrapper"); const hasStages = mhctJson.some((itemAr) => itemAr.stage); if (hasStages) { itemsArWrapper.classList.add("has-stages"); } mhctJson = mhctJson.filter((itemAr) => Number.parseInt(itemAr.drop_pct, 10) > 0).slice(0, 10); mhctJson.forEach((itemAr) => { const dropPercent = Number.parseInt(itemAr.drop_pct, 10).toFixed(2); if (dropPercent !== "0.00") { const itemArWrapper = makeElement("div", "mouse-ar-wrapper"); makeElement("div", "location", itemAr.location, itemArWrapper); if (hasStages) { makeElement("div", "stage", itemAr.stage, itemArWrapper); } makeElement("div", "cheese", itemAr.cheese, itemArWrapper); makeElement("div", "rate", `${dropPercent}%`, itemArWrapper); itemsArWrapper.append(itemArWrapper); } }); if (mhctJson.length > 0) { arWrapper.append(itemsArWrapper); container.append(arWrapper); } }); init6 = () => __async(void 0, null, function* () { addStyles(styles_default10, "better-item-view"); if (getSetting("better-item-view.show-item-hover", true)) { hover_item_default(); } onOverlayChange({ item: { show: updateItemView } }); onPageChange({ item: { show: updateItemView } }); }); better_item_view_default = { id: "better-item-view", name: "Better Item View", type: "better", default: true, description: "Updates the styles and shows drop rates, links to MHCT, and MH Wiki.", load: init6, settings: settings_default6 }; } }); // src/modules/better-gifts/settings/index.js var settings_default7; var init_settings8 = __esm({ "src/modules/better-gifts/settings/index.js"() { settings_default7 = () => __async(void 0, null, function* () { const orderOptions = [ { name: "Newest to Oldest", value: "default" }, { name: "Oldest to Newest", value: "reverse" } ]; const skipBadGiftOptions = [ { name: "Skip all non-GOTD gifts", value: "skip" }, { name: "Don't skip any gifts", value: "no-skip" }, { name: "Skip Mozzarella Cheese only", value: "mozzarella" }, { name: "Skip Stale Cheese only", value: "stale" }, { name: "Skip Radioactive Sludge only", value: "sludge" }, { name: "Skip Mozz. Cheese & Stale Cheese", value: "mozzarella-stale" }, { name: "Skip Mozz. Cheese & Radioactive Sludge", value: "mozzarella-sludge" }, { name: "Skip Stale Cheese & Radioactive Sludge", value: "stale-sludge" } ]; return [ { id: "better-gifts.send-order", title: "Order to accept/send", default: [orderOptions[0]], description: "", settings: { type: "multi-select", number: 1, options: orderOptions } }, { id: "better-gifts.ignore-bad-gifts", title: "Ignore gifts", default: [skipBadGiftOptions[0]], description: "", settings: { type: "multi-select", number: 1, options: skipBadGiftOptions } } ]; }); } }); // src/modules/better-gifts/styles.css var styles_default11; var init_styles12 = __esm({ "src/modules/better-gifts/styles.css"() { styles_default11 = '.giftSelectorView-giftContainer .giftSelectorView-gift.gift_of_the_day{width:20%}#bulk-gifting-gift-buttons{position:relative;display:flex;justify-content:flex-end;margin-bottom:10px}#bulk-gifting-gift-buttons .mh-gift-button{padding:0 15px;font-weight:400}#bulk-gifting-gift-buttons .mh-gift-buttons-accept{margin-right:5px}#bulk-gifting-gift-buttons .mh-gift-buttons-paid-gifts{margin-right:10px}.giftSelectorView-inbox-giftContainer{height:auto;min-height:300px;max-height:75vh}.giftSelectorView-inbox-giftRow.complete{height:25px;padding-top:5px;padding-left:15px;border:none;box-shadow:none}.giftSelectorView-inbox-giftRow.complete .giftSelectorView-inbox-gift-thumb{display:inline}.giftSelectorView-inbox-giftRow.complete .itemImage{display:inline-block;width:25px;height:25px}.giftSelectorView-inbox-giftRow.complete .giftSelectorView-inbox-gift-details{width:90%}.mh-gift-buttons-send-random,.mh-gift-buttons-send-faves{margin-top:-2px;margin-left:10px}.giftSelectorView-gift.sendable.gift.gift_of_the_day{flex:1}.giftSelectorView-gift .giftSelectorView-gift-padding{min-width:75px;border:1px solid #dcdcdc;box-shadow:none}.giftSelectorView-gift.gift_of_the_day .giftSelectorView-gift-padding{background-color:#a5e3ff}.giftSelectorView-scroller.giftSelectorView-giftContainer{display:flex;flex-wrap:wrap;justify-content:space-around}.giftSelectorView-gift.gift_of_the_day:hover .giftSelectorView-gift-padding{background-color:#0090ff}body #overlayPopup .giftSelectorView-scroller.giftSelectorView-giftContainer{min-height:unset}.giftSelectorView-friend.complete .giftSelectorView-friend-padding:before{bottom:9px;left:10px;z-index:1;filter:drop-shadow(0 0 3px #b9ff5d) drop-shadow(1px 1px 4px #b9ff5d) drop-shadow(-1px -1px 3px #b9ff5d)}.mh-gift-buttons-clone-wrapper{scrollbar-color:#938f83 #e9e1c6;max-height:calc(75vh - 175px);overflow-y:auto}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift-description{display:flex;flex-direction:column-reverse;align-items:stretch}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift-padding{min-width:unset;padding:0 2px;margin:0;border:none}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift-name{height:unset}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift-name span{padding:5px}.mh-gift-buttons-clone-wrapper .giftSelectorView-content-leftBar-highlightBlock{padding:5px;margin:0 5px 0 10px;background-color:transparent}.mh-gift-buttons-clone-wrapper .giftSelectorView-friendRow-returnCost{bottom:3px}.giftSelectorView-content-leftBar>.giftSelectorView-content-leftBar-highlightBlock:before{position:absolute;inset:0;z-index:1;content:"";border-radius:10px 0 0 10px;box-shadow:0 4px 4px -3px #000}.giftSelectorView-content-leftBar>.giftSelectorView-content-leftBar-highlightBlock{position:relative}.giftSelectorView-friend.complete .giftSelectorView-friend-padding:after,.mh-gift-buttons-clone-wrapper .giftSelectorView-gift.gift_of_the_day .giftSelectorView-gift-padding:after{display:none}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift.gift_of_the_day .giftSelectorView-gift-padding{color:#000;background-color:#fff}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift.gift_of_the_day:hover .giftSelectorView-gift-padding{background-color:#a5e3ff}.giftSelectorView-friend-group-title{padding:3px;font-size:11px}.giftSelectorView-friend-padding,.giftSelectorView-confirmPopup-block-actionItem .giftSelectorView-friend:hover .giftSelectorView-friend-padding{border-radius:0}.giftSelectorView-friend .giftSelectorView-friend-padding{height:35px}.mh-gift-buttons-clone-wrapper .giftSelectorView-gift .itemImage{width:50px;height:50px}.giftSelectorView-gift .itemImage{width:100%;height:80px}.giftSelectorView-friend-name{display:flex;flex-flow:column;align-items:flex-start;justify-content:flex-start;width:unset;height:unset;padding:0 3px;line-height:1.1}.giftSelectorView-friend-name span{display:block}#bulk-gifting-gift-buttons.mh-gift-buttons-send-popup{margin-bottom:0}.giftSelectorView-tabContentContainer .giftSelectorView-tabContent.active .giftSelectorView-actionContainer{display:flex;align-items:center;justify-content:flex-end}#bulk-gifting-gift-buttons.mh-gift-buttons-send-popup button{padding:6px;font-size:12px}a.mousehuntActionButton.giftSelectorView-action-confirm span{display:block;width:auto;min-width:80px}.giftSelectorView-friendRow-returnImage:hover{margin-top:-10px;margin-right:10px;margin-left:0;border:none}.giftSelectorView-claimableGift{min-height:100px}.giftSelectorView-claimableGift.accordion_disabled:after,.giftSelectorView-claimableGift.expanded:after{box-shadow:none}.giftSelectorView-claimableGift.accordion_disabled,.giftSelectorView-claimableGift.expanded{padding:5px;margin-bottom:11px;border:1px solid #ccc;border-radius:3px}.giftSelectorView-claimableGift-title-itemName{font-size:13px}.giftSelectorView-content-subtitle{border-bottom:none}.giftSelectorView-inboxGiftOfTheDay{padding:5px 0;border-color:#d1d0cf}.giftSelectorView-inbox-giftRow.paidgift{background-color:#fff08c;border:none}.giftSelectorView-inbox-gift-details .giftSelectorView-inbox-gift-sent{padding-top:3px}.giftSelectorView-inbox-giftRow{display:flex;align-items:center;justify-content:space-between;min-height:40px}.giftSelectorView-inbox-gift-details{flex:1;width:auto;margin:0 0 0 10px}.giftSelectorView-inbox-giftRow.paidgift .giftSelectorView-inbox-gift-actions{padding-bottom:0}.giftSelectorView-inboxGiftOfTheDay-label{margin-right:5px}.giftSelectorView-inboxGiftOfTheDay-gift{font-size:12px}.giftSelectorView-inboxGiftOfTheDay-gift abbr{text-decoration:none;vertical-align:middle}.paidgift a.giftSelectorView-friendRow-action.return{text-indent:-70px}.giftSelectorView-friendRow-returnQuantity{width:30px}.giftSelectorView-gift.paidgift .giftSelectorView-gift-padding{box-shadow:0 0 1px #000 inset}.giftSelectorView-tabContent.hasSidebar .giftSelectorView-content-rightBar{border-bottom-left-radius:10px}.giftSelectorView-friendRow-sender{position:relative}.giftSelectorView-friendRow:hover{padding-bottom:5px;margin-bottom:7px;border-top-left-radius:0;border-bottom-left-radius:0;outline:1px solid #dfdfdf;box-shadow:none}.giftSelectorView-friend-image{top:-7px;left:-7px;width:33px;height:33px;border:1px solid #bdbdbd}.giftSelectorView-friend-image.paidgift{top:-11px;width:31px;height:31px}#giftSelectorView-inbox{border:1px solid #d1d0cf;box-shadow:0 3px 6px -3px #000}.giftSelectorView-inbox-footer-viewMore a{position:relative;font-weight:400;line-height:24px;text-shadow:0 0 1px #fff;background:none;border:none;border-radius:3px;box-shadow:none}.giftSelectorView-inbox-footer-viewMore{position:absolute;right:10px;width:135px;padding:0;font-size:12px;font-weight:700;line-height:30px;color:#000!important;text-align:center;background:#b3edff;border:1px solid #50549c;border-radius:5px;box-shadow:1px 1px 1px #eee}.giftSelectorView-inbox-footer-viewMore:hover{background-color:#b3f4ff;border-color:#000;box-shadow:0 0 5px #fff inset,1px 1px 1px #fff}.giftSelectorView-inbox-footer-viewMore:before{position:absolute;inset:40% 0 0;content:"";background:#b2e2ff;border-radius:5px;box-shadow:0 0 10px #7bf inset}.giftSelectorView-inbox-footer-viewMore:before:hover{background-color:#a5e2ff;box-shadow:0 0 10px #f0f4f7 inset}.giftSelectorView-inbox-footer{padding-bottom:18px}.giftSelectorView-inbox-giftContainer .mousehuntActionButton.return.disabled,.giftSelectorView-inbox-giftContainer .mousehuntActionButton.claim.disabled{opacity:.5}.giftSelectorView-inbox-giftContainer .mousehuntActionButton.return.disabled:hover,.giftSelectorView-inbox-giftContainer .mousehuntActionButton.claim.disabled:hover{opacity:1}.giftSelectorView-friendRow-action.ignore{outline:1px solid #ededed;box-shadow:none}.giftSelectorView-friendRow-action.ignore:hover{background-color:#eee;outline-color:#c6c6c6}.giftSelectorView-friendRow-action.claim,.giftSelectorView-friendRow-action.return{box-sizing:border-box;outline:1px solid #e7e7e7}.giftSelectorView-friendRow-action.claim:hover,.giftSelectorView-friendRow-action.return:hover{box-shadow:0 0 1px #000 inset,0 -1px 1px #fff inset}.giftSelectorView-friendRow.new .giftSelectorView-friend-image:after{top:-4px;left:-4px;border-radius:4px;box-shadow:none}.mh-dark-mode #giftSelectorView-inbox,.mh-dark-mode .giftSelectorView-inboxGiftOfTheDay{border-color:#424242}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer:hover{background-color:#494949}.complete .giftSelectorView-inbox-gift-details{margin-right:150px;margin-left:0}\n'; } }); // src/modules/better-gifts/index.js var getIgnoredGifts, claimGifts, makeAcceptButton, makeReturnButton, fixTypo, lineBreakGiftFooter, getButtons, makeButtons, getLimit, pickFriends, addSendButton, addRandomSendButton, _showTab, _selectGift, _updateGiftMultiplierQuantity, addGiftSwitcher, addButtonsToDropdown, addButtonsToPopup, main3, init7, better_gifts_default; var init_better_gifts = __esm({ "src/modules/better-gifts/index.js"() { init_utils2(); init_settings8(); init_styles12(); getIgnoredGifts = () => { const ignored = getSetting("better-gifts.ignore-bad-gifts-0", "skip"); const skipOptions = { skip: ["mozzarella_cheese", "stale_cheese", "stale_cheese_craft_item"], "no-skip": [], mozzarella: ["mozzarella_cheese"], stale: ["stale_cheese_craft_item"], sludge: ["radioactive_sludge"], "mozzarella-stale": ["mozzarella_cheese", "stale_cheese_craft_item"], "mozzarella-sludge": ["mozzarella_cheese", "radioactive_sludge"], "stale-sludge": ["stale_cheese_craft_item", "radioactive_sludge"] }; return skipOptions[ignored] || skipOptions.skip; }; claimGifts = (send = false, retries = 0) => __async(void 0, null, function* () { hg.views.GiftSelectorView.show(); const isLoaded = document.querySelector(".giftSelectorView-tabContent.active .giftSelectorView-friendRow"); if (!isLoaded) { if (retries <= 10) { setTimeout(() => { claimGifts(send, retries + 1); }, 250); } return; } let gifts = hg.views.GiftSelectorView.getClaimableGiftsSortedByTime(); if (getSetting("better-gifts.send-order-0", "default") === "reverse") { gifts.reverse(); } const ignoredGifts = getIgnoredGifts(); let sendLimit = hg.views.GiftSelectorView.getNumSendableActionsRemaining(); let claimLimit = hg.views.GiftSelectorView.getNumClaimableActionsRemaining(); gifts = gifts.filter((gift) => { if (gift.channel !== "gift") { return false; } if (ignoredGifts.includes(gift.item_type)) { return false; } return true; }); for (const gift of gifts) { let verb = send ? "return" : "claim"; if (send && sendLimit > 0 && gift.is_returnable) { verb = "return"; } const giftEl = document.querySelector(`.giftSelectorView-friendRow[data-gift-id="${gift.gift_id}"] .giftSelectorView-friendRow-action.${verb}`); if (!giftEl) { continue; } const event = { target: giftEl }; if (send && "return" === verb && sendLimit > 0) { hg.views.GiftSelectorView.selectReturnableGift(event, giftEl); sendLimit--; claimLimit--; } else if (!send && "claim" === verb && claimLimit > 0) { hg.views.GiftSelectorView.selectClaimableGift(giftEl); claimLimit--; } } setTimeout(() => { const confirm2 = document.querySelector(".mousehuntActionButton.giftSelectorView-action-confirm.small"); if (confirm2) { setTimeout(() => { hg.views.GiftSelectorView.submitConfirm(confirm2); }, 250); } }, 500); }); makeAcceptButton = (buttonContainer, isTiny = false) => { const acceptButton = makeElement("button", ["mh-gift-button", "mh-gift-buttons-accept", "mousehuntActionButton"]); makeElement("span", "mousehuntActionButton-text", "Accept All", acceptButton); if (isTiny) { acceptButton.classList.add("tiny"); } const acceptLimit = document.querySelector(".giftSelectorView-numClaimActionsRemaining"); if (acceptLimit && acceptLimit.innerText === "0") { acceptButton.classList.add("disabled"); } else { acceptButton.addEventListener("click", () => { claimGifts(); }); } buttonContainer.append(acceptButton); }; makeReturnButton = (buttonContainer, isTiny = false) => { const returnWrapper = makeElement("div", "mh-gift-buttons-return-wrapper"); const returnButton = makeElement("button", ["mh-gift-button", "mh-gift-buttons-return", "mousehuntActionButton"]); makeElement("span", "mousehuntActionButton-text", "Accept & Return All", returnButton); if (isTiny) { returnButton.classList.add("tiny"); } const returnLimit = document.querySelector(".giftSelectorView-numSendActionsRemaining"); if (returnLimit && returnLimit.innerText === "0") { returnButton.classList.add("disabled"); } else { returnButton.addEventListener("click", () => { claimGifts(true); }); } returnWrapper.append(returnButton); buttonContainer.append(returnWrapper); }; fixTypo = () => { replaceInTemplate("ViewGiftSelector", [ [ "You can send 1 free gifts", "You can send 1 free gift" ], [ "<b>1</b> free gifts", "<b>1</b> free gift" ] ]); }; lineBreakGiftFooter = () => { replaceInTemplate("GiftSelectorView", [ [ "more free gifts today. You can", 'more free gifts today. <p class="mh-ui-footer-gifts-second-line">You can' ], [ 'class="giftSelectorView-inboxHeader-closeButton" onclick="hg.views.GiftSelectorView.hideInbox(); return false;">Close</a>', 'class="giftSelectorView-inboxHeader-closeButton" onclick="hg.views.GiftSelectorView.hideInbox(); return false;">\u2715</a>' ] ]); }; getButtons = (className = false, isTiny = false) => { const buttonContainer = document.createElement("div"); buttonContainer.id = "bulk-gifting-gift-buttons"; if (className) { buttonContainer.classList.add(className); } makeAcceptButton(buttonContainer, isTiny); makeReturnButton(buttonContainer, isTiny); return buttonContainer; }; makeButtons = () => { if (document.querySelector("#bulk-gifting-gift-buttons")) { return; } const buttonContainer = document.createElement("div"); buttonContainer.id = "bulk-gifting-gift-buttons"; makeAcceptButton(buttonContainer); makeReturnButton(buttonContainer); const giftFooter = document.querySelector(".giftSelectorView-inbox-footer"); if (giftFooter && giftFooter.firstChild) { giftFooter.insertBefore(buttonContainer, giftFooter.firstChild); } }; getLimit = () => { const limitEl = document.querySelector(".giftSelectorView-tabContent.active .giftSelectorView-actionLimit.giftSelectorView-numSendActionsRemaining"); limit = limitEl ? Number.parseInt(limitEl.innerText, 10) : 0; return limit; }; pickFriends = (friends, useRandom = true) => { const selected = []; let sent = 0; if (useRandom) { const bound = friends.length > 35 ? 35 : friends.length; const firstRandom = Math.floor(Math.random() * bound); selected.push(firstRandom); sent++; } let limit2 = getLimit(); while (sent < limit2) { if (selected.length >= friends.length) { break; } if (useRandom) { const random = Math.floor(Math.random() * friends.length); if (selected.includes(random)) { continue; } selected.push(random); } else { selected.push(sent); } sent++; limit2 = getLimit(); } selected.forEach((index) => { friends[index].click(); }); if (getLimit() < 1) { const buttons = document.querySelectorAll(".mh-gift-buttons"); buttons.forEach((button) => { button.classList.add("disabled"); }); } }; addSendButton = (className, text, selector, buttonContainer) => { const existing = document.querySelector(`.mh-gift-buttons-send-${className}`); if (existing) { existing.remove(); } const sendButton = makeElement("button", ["mousehuntActionButton", "tiny", "mh-gift-buttons", `mh-gift-buttons-send-${className}`]); makeElement("span", "mousehuntActionButton-text", text, sendButton); const limit2 = getLimit(); if (limit2 && limit2 < 1) { sendButton.classList.add("disabled"); } sendButton.addEventListener("click", () => { const friends = document.querySelectorAll(selector); if (!friends.length) { return; } if ("faves" === className) { pickFriends(friends, false); } else { pickFriends(friends); } }); buttonContainer.append(sendButton); }; addRandomSendButton = () => { const _selectGift2 = hg.views.GiftSelectorView.selectGift; hg.views.GiftSelectorView.selectGift = (gift) => { _selectGift2(gift); const title = document.querySelector(".giftSelectorView-tabContent.active .selectFriends .giftSelectorView-content-title"); if (!title) { return false; } addSendButton("random", "Select Random Friends", ".giftSelectorView-tabContent.active .giftSelectorView-friend:not(.disabled, .selected)", title); addSendButton("faves", "Select Frequent Gifters", ".giftSelectorView-tabContent.active .giftSelectorView-friend-group.favorite .giftSelectorView-friend:not(.disabled, .selected)", title); }; }; addGiftSwitcher = () => { if (_showTab || _selectGift || _updateGiftMultiplierQuantity) { return; } _showTab = hg.views.GiftSelectorView.showTab; _selectGift = hg.views.GiftSelectorView.selectGift; _updateGiftMultiplierQuantity = hg.views.GiftSelectorView.updateGiftMultiplierQuantity; hg.views.GiftSelectorView.showTab = (tabType, viewState, preserveVariables, preserveActions) => { _showTab(tabType, viewState, preserveVariables, preserveActions); hg.views.GiftSelectorView.updateGiftMultiplierQuantity = (input) => { if (input && input.hasAttribute("maxlength")) { input.removeAttribute("maxlength"); } return _updateGiftMultiplierQuantity(input); }; hg.views.GiftSelectorView.selectGift = (gift) => { _selectGift(gift); const giftContainer = document.querySelector(".giftSelectorView-tabContent.active.selectFriends .giftSelectorView-content-leftBar"); if (!giftContainer) { return false; } const existing = document.querySelector(".mh-gift-buttons-clone-wrapper"); if (existing) { existing.remove(); } const giftType = tabType === "send_free_gifts" ? "gift" : "paidgift"; const gifts = document.querySelectorAll(`.active .selectGift .giftSelectorView-scroller.giftSelectorView-giftContainer .giftSelectorView-gift.sendable.${giftType}`); if (!gifts.length) { return; } const cloneWrapper = makeElement("div", "mh-gift-buttons-clone-wrapper"); gifts.forEach((toClone) => { const clone = toClone.cloneNode(true); const giftWrap = makeElement("div", "giftSelectorView-content-leftBar-highlightBlock"); giftWrap.append(clone); giftWrap.addEventListener("click", () => { const prevSelected = document.querySelectorAll(".mh-gift-buttons-clone-selected"); prevSelected.forEach((el) => { el.classList.remove("mh-gift-buttons-clone-selected"); }); giftWrap.classList.add("mh-gift-buttons-clone-selected"); }); cloneWrapper.append(giftWrap); }); giftContainer.append(cloneWrapper); }; }; }; addButtonsToDropdown = () => { const buttonLink = document.querySelector("#hgbar_freegifts"); if (!buttonLink) { return; } buttonLink.addEventListener("click", () => { makeButtons(); }); }; addButtonsToPopup = () => { const actionRow = document.querySelector(".giftSelectorView-tabContentContainer .giftSelectorView-tabContent.active .giftSelectorView-actionContainer"); if (!actionRow) { return; } const existing = document.querySelector(".mh-gift-buttons-send-popup"); if (existing) { existing.remove(); } const buttons = getButtons("mh-gift-buttons-send-popup", true); actionRow.insertBefore(buttons, actionRow.firstChild); }; main3 = () => { onRequest("users/socialGift.php", makeButtons); addButtonsToDropdown(); onDialogShow("giftSelectorViewPopup", addButtonsToPopup); addRandomSendButton(); addGiftSwitcher(); fixTypo(); lineBreakGiftFooter(); }; init7 = () => __async(void 0, null, function* () { addStyles(styles_default11, "better-gifts"); main3(); onDeactivation("better-gifts", () => { const buttons = document.querySelectorAll(".mh-gift-buttons"); buttons.forEach((button) => { button.remove(); }); }); }); better_gifts_default = { id: "better-gifts", name: "Better Gifts", type: "better", default: true, description: "Quickly accept and return all your gifts as well as picking random friends to send to.", load: init7, settings: settings_default7 }; } }); // src/modules/better-mice/hover-mice/styles.css var styles_default12; var init_styles13 = __esm({ "src/modules/better-mice/hover-mice/styles.css"() { styles_default12 = '#mouse-data-wrapper{position:absolute;z-index:999999;box-sizing:border-box;display:block;width:300px;height:100px;background:linear-gradient(#decebb 5%,#f0eddf 50%);border:1px solid #9a8872;border-radius:10px;box-shadow:0 1px 5px -1px #5e5e5e}.mouse-data-wrapper-loading{display:flex;align-items:flex-end;justify-content:center;height:90%;background-image:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif?asset_cache_version=2);background-repeat:no-repeat;background-position:center;background-size:55px}#mouse-data-wrapper .mouse-data{display:grid;grid-template-columns:90px 1fr;gap:10px;align-items:center;height:95px}#mouse-data-wrapper .mouse-image{height:80px;margin-left:10px;border:1px solid #25211e;border-radius:5px}#mouse-data-wrapper .mouse-text{display:flex;flex-direction:column;justify-content:space-around;height:80px;margin-right:10px}#mouse-data-wrapper .mouse-name{width:160px;font-size:12px;font-weight:900}.mouse-catch-stats{display:grid;grid-template-columns:2fr 3fr;gap:0 20px;margin-right:10px;font-size:10px}.mouse-catch-stats div{display:flex;flex-direction:row;align-items:center;justify-content:space-between;line-height:1.5}#mouse-data-wrapper .mouse-data.crown:after{position:absolute;top:7px;right:5px;width:30px;height:30px;content:"";background-size:cover}#mouse-data-wrapper .mouse-data.crown.bronze:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_bronze.png)}#mouse-data-wrapper .mouse-data.crown.silver:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_silver.png)}#mouse-data-wrapper .mouse-data.crown.gold:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_gold.png)}#mouse-data-wrapper .mouse-data.crown.platinum:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_platinum.png)}#mouse-data-wrapper .mouse-data.crown.diamond:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_diamond.png)}\n'; } }); // src/modules/better-mice/hover-mice/index.js var fetchAndFillMouseData, mouseDataWrapper, isLoading2, makeMouseMarkup2, main4, hoverMice2, hover_mice_default; var init_hover_mice = __esm({ "src/modules/better-mice/hover-mice/index.js"() { init_utils2(); init_styles13(); fetchAndFillMouseData = (mouseId) => __async(void 0, null, function* () { var _a; if (isLoading2) { return; } isLoading2 = true; let mouse; const cachedMouseData = sessionGet(`better-mice-hover-mice-${mouseId}`, false); if (cachedMouseData) { mouse = cachedMouseData; } else { const mouseDataRequest = yield doRequest("managers/ajax/mice/getstat.php", { action: "get_mice", "mouse_types[]": mouseId }); if (!((_a = mouseDataRequest == null ? void 0 : mouseDataRequest.mice) == null ? void 0 : _a.length)) { return; } mouse = mouseDataRequest == null ? void 0 : mouseDataRequest.mice[0]; sessionSet(`better-mice-hover-mice-${mouseId}`, mouse); } const mouseData = makeElement("div", "mouse-data"); if (mouse.crown && "none" !== mouse.crown) { mouseData.classList.add("crown", mouse.crown); } const mouseImage = makeElement("img", "mouse-image"); mouseImage.src = mouse.square; mouseData.append(mouseImage); const mouseText = makeElement("div", "mouse-text"); makeElement("div", "mouse-name", mouse.name, mouseText); const catchStats = makeElement("div", "mouse-catch-stats"); const catches = makeElement("div", "mouse-catches"); makeElement("span", "", "Catches: ", catches); makeElement("span", "", mouse.num_catches_formatted, catches); catchStats.append(catches); const avgWeight = makeElement("div", "mouse-avg-weight"); makeElement("span", "", "Avg: ", avgWeight); makeElement("span", "", mouse.avg_weight, avgWeight); catchStats.append(avgWeight); const misses = makeElement("div", "mouse-misses"); makeElement("span", "", "Misses: ", misses); makeElement("span", "", mouse.num_misses_formatted, misses); catchStats.append(misses); const heaviest = makeElement("div", "mouse-heaviest"); makeElement("span", "", "Heaviest: ", heaviest); makeElement("span", "", mouse.heaviest_catch, heaviest); catchStats.append(heaviest); mouseText.append(catchStats); mouseData.append(mouseText); mouseDataWrapper.innerHTML = mouseData.outerHTML; isLoading2 = false; }); isLoading2 = false; makeMouseMarkup2 = (mouseId, e) => __async(void 0, null, function* () { mouseDataWrapper == null ? void 0 : mouseDataWrapper.remove(); const existing = document.querySelectorAll("#mouse-data-wrapper"); if (existing && existing.length) { existing.forEach((el) => { el.remove(); }); } mouseDataWrapper = makeElement("div", "mouse-data-wrapper"); mouseDataWrapper.id = "mouse-data-wrapper"; mouseDataWrapper.innerHTML = '<span class="mouse-data-wrapper-loading">Loading...</span>'; fetchAndFillMouseData(mouseId); document.body.append(mouseDataWrapper); const rect = e.target.getBoundingClientRect(); const top = rect.top + window.scrollY; const left = rect.left + window.scrollX; let tooltipTop = top - mouseDataWrapper.offsetHeight - 10; if (tooltipTop < 0) { tooltipTop = top + rect.height + 10; } mouseDataWrapper.style.top = `${tooltipTop}px`; mouseDataWrapper.style.left = `${left - mouseDataWrapper.offsetWidth / 2 + rect.width / 2}px`; let timeoutId; mouseDataWrapper.addEventListener("mouseleave", () => { timeoutId = setTimeout(() => { mouseDataWrapper.remove(); }, 250); }); mouseDataWrapper.addEventListener("mouseenter", () => { clearTimeout(timeoutId); }); const parent = e.target.parentElement; if (parent) { parent.addEventListener("mouseleave", () => { timeoutId = setTimeout(() => { mouseDataWrapper.remove(); }, 500); }); parent.addEventListener("mouseenter", () => { clearTimeout(timeoutId); }); } }); main4 = () => { const miceLinks = document.querySelectorAll('.journal .content .entry .journaltext a[onclick*="MouseView.show"]'); if (!miceLinks) { return; } miceLinks.forEach((link) => { const mouseType = link.getAttribute("onclick").match(/'([^']+)'/)[1]; link.setAttribute("onclick", `hg.views.MouseView.show('${mouseType}'); return false;`); let timer; link.addEventListener("mouseover", (e) => { clearTimeout(timer); timer = setTimeout(() => { makeMouseMarkup2(mouseType, e); }, 200); }); link.addEventListener("mouseout", () => { clearTimeout(timer); }); }); }; hoverMice2 = () => { addStyles(styles_default12, "better-mice-hover-mice"); setTimeout(main4, 500); onRequest("*", () => { setTimeout(main4, 1e3); }); onTurn(() => { sessionsDelete("better-mice-hover-mice-"); }, 1e3); }; hover_mice_default = hoverMice2; } }); // src/modules/better-mice/mouse-page.js var makeKingsCrownsTab, makeKingsCrownsTabContentContent, makeMouseCrownSection, makeKingsCrownsTabContent, addKingsCrownsToMicePage, parseImperialWeight, getSetRowValue, sortStats, addSortButton, getSelectorPrefix, addSortingToCat, hasAddedSortingTabClickListeners, addSortingTabClickListeners, clickCurrentTab, addSortingToStatsPage, mouse_page_default; var init_mouse_page = __esm({ "src/modules/better-mice/mouse-page.js"() { init_utils2(); makeKingsCrownsTab = () => { const tabContainer = document.querySelector(".mousehuntHud-page-tabHeader-container"); if (!tabContainer) { return; } const existingTab = document.querySelector(".mousehuntHud-page-tabHeader.kings-crowns-tab"); if (existingTab) { return; } const kingsCrownsTab = makeElement("a", ["mousehuntHud-page-tabHeader", "groups", "kings-crowns-tab"]); makeElement("span", "", "King's Crowns", kingsCrownsTab); kingsCrownsTab.setAttribute("data-tab", "kings_crowns"); kingsCrownsTab.setAttribute("data-legacy-mode", ""); kingsCrownsTab.setAttribute("onclick", "hg.utils.PageUtil.onclickPageTabHandler(this); return false;"); tabContainer.append(kingsCrownsTab); return kingsCrownsTab; }; makeKingsCrownsTabContentContent = () => { const tabContentContainer = document.querySelector(".mousehuntHud-page-tabContentContainer"); if (!tabContentContainer) { return; } const tabContent = makeElement("div", ["mousehuntHud-page-tabContent", "kings_crowns"]); tabContent.setAttribute("data-tab", "kings_crowns"); tabContent.setAttribute("data-template-file", "AdversariesPage"); makeElement("div", "mousehuntHud-page-tabContent-loading", "", tabContent); const subTabContent = makeElement("div", ["mousehuntHud-page-subTabContent", "all", "active"]); subTabContent.setAttribute("data-tab", "all"); subTabContent.setAttribute("data-template-file", "AdversariesPage"); subTabContent.setAttribute("data-template", "subtab"); subTabContent.setAttribute("data-initialized", ""); subTabContent.setAttribute("data-user-id", ""); makeElement("div", "mouseCrownsView", "", subTabContent); tabContent.append(subTabContent); tabContentContainer.append(tabContent); }; makeMouseCrownSection = (type, mice, header = false, subheader = false) => { const wrapper = makeElement("div", ["kings-crown-section", "mouseCrownsView-group", type]); if (header) { const headerDiv = makeElement("div", "mouseCrownsView-group-header"); makeElement("div", ["mouseCrownsView-crown", type], "", headerDiv); const name = makeElement("div", "mouseCrownsView-group-header-name"); makeElement("b", false, header, headerDiv); if (subheader) { makeElement("div", "mouseCrownsView-group-header-subtitle", subheader, name); } headerDiv.append(name); wrapper.append(headerDiv); } const list = makeElement("div", "mouseCrownsView-group-mice"); mice.forEach((mouse) => { if (!mouse.id) { return; } const mouseWrapper = makeElement("div", "mouseCrownsView-group-mouse"); mouseWrapper.setAttribute("data-mouse-id", mouse.id); mouseWrapper.setAttribute("data-mouse-type", mouse.type); mouseWrapper.setAttribute("data-mouse-large", mouse.large); mouseWrapper.setAttribute("onclick", "hg.views.MouseCrownsView.showMouseImage(this); return false;"); if (mouse.landscape) { mouseWrapper.classList.add("landscape"); } const innerWrapper = makeElement("div", "mouseCrownsView-group-mouse-padding"); const image = makeElement("div", ["mouseCrownsView-group-mouse-image", mouse.type]); image.setAttribute("data-image", mouse.image); image.setAttribute("data-loader", "mouse"); image.setAttribute("style", `background-image: url("${mouse.image}");`); innerWrapper.append(image); makeElement("div", "mouseCrownsView-group-mouse-catches", mouse.num_catches, innerWrapper); const label = makeElement("div", "mouseCrownsView-group-mouse-label"); const nameWrapper = makeElement("span", false, ""); makeElement("div", "mouseCrownsView-group-mouse-name", mouse.name, nameWrapper); label.append(nameWrapper); innerWrapper.append(label); const favoriteButton = makeElement("div", "mouseCrownsView-group-mouse-favouriteButton"); if (mouse.is_favourite) { favoriteButton.classList.add("active"); } favoriteButton.setAttribute("data-mouse-id", mouse.id); favoriteButton.setAttribute("onclick", "hg.views.MouseCrownsView.toggleFavouriteHandler(event); return false;"); innerWrapper.append(favoriteButton); mouseWrapper.append(innerWrapper); list.append(mouseWrapper); }); wrapper.append(list); return wrapper; }; makeKingsCrownsTabContent = () => __async(void 0, null, function* () { var _a, _b, _c, _d; makeKingsCrownsTabContentContent(); let crowns = []; const cachedCrowns = sessionGet("kings-crowns"); const cachedCrownsTime = sessionGet("kings-crowns-time"); if (cachedCrowns && cachedCrownsTime && Date.now() - cachedCrownsTime < 3e5) { crowns = JSON.parse(cachedCrowns); } else { const crownsReq = yield doRequest("managers/ajax/pages/page.php", { page_class: "HunterProfile", "page_arguments[tab]": "kings_crowns", "page_arguments[sub_tab]": false }); crowns = ((_d = (_c = (_b = (_a = crownsReq == null ? void 0 : crownsReq.page) == null ? void 0 : _a.tabs) == null ? void 0 : _b.kings_crowns) == null ? void 0 : _c.subtabs[0]) == null ? void 0 : _d.mouse_crowns) || []; if (crowns.length <= 0) { return; } sessionSet("kings-crowns", crowns); sessionSet("kings-crownsTime", Date.now()); } const tabInnerContent = document.querySelector(".mousehuntHud-page-tabContent.kings_crowns"); if (!tabInnerContent) { return; } if (crowns.favourite_mice_count > 0) { const favorites = makeMouseCrownSection("favorites", crowns.favourite_mice); const existingFavorites = tabInnerContent.querySelector(".mouseCrownsView-group.favorites"); if (existingFavorites) { existingFavorites.replaceWith(favorites); } else { tabInnerContent.append(favorites); } } crowns.badge_groups.forEach((group) => { var _a2, _b2; if (group.mice.length === 0) { return; } group.name = ((_a2 = group == null ? void 0 : group.name) == null ? void 0 : _a2.length) > 0 ? group.name : "No"; group.catches = ((_b2 = group == null ? void 0 : group.catches) == null ? void 0 : _b2.length) > 0 ? group.catches : "0"; const section = makeMouseCrownSection(group.type, group.mice, `${group.name} Crown (${group.count})`, `Earned at ${group.catches} catches`); const existingSection = tabInnerContent.querySelector(`.mouseCrownsView-group.${group.type}`); if (existingSection) { existingSection.replaceWith(section); } else { tabInnerContent.append(section); } }); }); addKingsCrownsToMicePage = () => __async(void 0, null, function* () { makeKingsCrownsTab(); makeKingsCrownsTabContent(); }); parseImperialWeight = (weightText) => { const lbsSplit = weightText.innerText.split("lb."); const lbs = lbsSplit.length > 1 ? lbsSplit[0] : 0; const ozSplit = weightText.innerText.split("oz."); const oz = ozSplit.length > 1 ? ozSplit[0] : 0; return Number.parseInt(lbs) * 16 + Number.parseInt(oz); }; getSetRowValue = (row, type) => { let value = 0; value = row.getAttribute(`data-sort-value-${type}`); if (value) { return Number.parseInt(value); } const valueText = row.querySelector(`${getSelectorPrefix()} .mouseListView-categoryContent-subgroup-mouse-stats.${type}`); if (type === "average_weight" || type === "heaviest_catch") { if (valueText.innerText.includes("lb") || valueText.innerText.includes("oz")) { value = parseImperialWeight(valueText); } else if (valueText.innerText.includes("kg")) { value = valueText.innerText.replace("kg.", ""); } else { value = 0; } } else { value = valueText.innerText ? valueText.innerText.replaceAll(",", "") || 0 : 0; } row.setAttribute(`data-sort-value-${type}`, value); return Number.parseInt(value); }; sortStats = (type, reverse = false) => { reverse = !reverse; let rows = document.querySelectorAll(`${getSelectorPrefix()} .active .mouseListView-categoryContent-subgroup-mouse:not(:first-child)`); if (!rows.length) { return; } const headerRow = document.querySelector(`${getSelectorPrefix()} .active .mouseListView-categoryContent-subgroup-mouse:first-child`); if (!headerRow) { return; } rows.forEach((row) => { getSetRowValue(row, type); }); rows = [...rows].sort((a, b) => { const aVal = getSetRowValue(a, type); const bVal = getSetRowValue(b, type); if (aVal === bVal || type === "name") { const aNameEl = a.querySelector(".mouseListView-categoryContent-subgroup-mouse-stats.name"); if (!aNameEl) { return 0; } const bNameEl = b.querySelector(".mouseListView-categoryContent-subgroup-mouse-stats.name"); if (!bNameEl) { return 0; } const aName = aNameEl.innerText; const bName = bNameEl.innerText; if (aName === bName) { return 0; } return aName > bName ? 1 : -1; } return aVal > bVal ? 1 : -1; }); if (reverse) { rows = rows.reverse(); } rows.forEach((row) => { row.parentNode.append(row); }); }; addSortButton = (elements, type) => { elements.forEach((el) => { const sortButton = makeElement("div", ["sort-button", "unsorted"], ""); el.addEventListener("click", () => { const otherSortButtons = el.parentNode.querySelectorAll(".sort-button"); otherSortButtons.forEach((button) => { if (button !== sortButton) { button.classList.remove("reverse"); button.classList.add("unsorted"); } }); if (sortButton.classList.contains("unsorted")) { sortButton.classList.remove("unsorted"); sortStats(type); return; } if (sortButton.classList.contains("reverse")) { sortButton.classList.remove("reverse"); sortStats(type); return; } sortButton.classList.add("reverse"); sortStats(type, true); }); el.append(sortButton); }); }; getSelectorPrefix = () => { const currentTab = getCurrentTab(); let currentSubtab = getCurrentSubtab(); if (currentTab === currentSubtab) { currentSubtab = false; } return `.${currentTab} .mousehuntHud-page-subTabContent.active${currentSubtab ? `.${currentSubtab}` : ""}`; }; addSortingToCat = (cat, retries = 0) => { const cats = [ "name", "catches", "misses", "average_weight", "heaviest_catch" ]; const selector = `${getSelectorPrefix()} .mouseListView-categoryContent-category[data-category="${cat}"]`; const category = document.querySelector(selector); if (!category || category && category.classList.contains("loading")) { if (retries > 10) { return; } setTimeout(() => addSortingToCat(cat, retries + 1), 300); return; } if (category.getAttribute("data-added-sorting")) { return; } cats.forEach((mCat) => { const els = category.querySelectorAll(`${getSelectorPrefix()} .mouseListView-categoryContent-category.all.active .mouseListView-categoryContent-subgroup-mouse.header .mouseListView-categoryContent-subgroup-mouse-stats.${mCat}`); if (els.length) { addSortButton(els, mCat); } }); category.setAttribute("data-added-sorting", true); const rows = category.querySelectorAll(`${getSelectorPrefix()} .mouseListView-categoryContent-subgroup-mouse:not(:first-child)`); if (!rows.length) { return; } rows.forEach((row) => { const catches = row.querySelector(`${getSelectorPrefix()} .mouseListView-categoryContent-subgroup-mouse-stats.catches`); if (!catches) { return; } const value = catches.innerText ? catches.innerText.replaceAll(",", "") || 0 : 0; if (value >= 2500) { row.classList.add("crown", "diamond"); } else if (value >= 1e3) { row.classList.add("crown", "platinum"); } else if (value >= 500) { row.classList.add("crown", "gold"); } else if (value >= 100) { row.classList.add("crown", "silver"); } else if (value >= 10) { row.classList.add("crown", "bronze"); } }); }; hasAddedSortingTabClickListeners = false; addSortingTabClickListeners = () => { if (hasAddedSortingTabClickListeners) { return; } hasAddedSortingTabClickListeners = true; const _categoryClickHandler = hg.views.MouseListView.categoryClickHandler; hg.views.MouseListView.categoryClickHandler = (el) => { _categoryClickHandler(el); addSortingToCat(el.getAttribute("data-category")); }; }; clickCurrentTab = () => { const activeTab = document.querySelector(".mousehuntHud-page-tabContent.active .mousehuntHud-page-subTabContent.active .mouseListView-categoryContainer.active a"); if (!activeTab) { setTimeout(clickCurrentTab, 250); return; } addSortingToCat(activeTab.getAttribute("data-category")); hg.views.MouseListView.categoryClickHandler(activeTab); }; addSortingToStatsPage = () => { addSortingTabClickListeners(); clickCurrentTab(); }; mouse_page_default = () => __async(void 0, null, function* () { var _a, _b; if ("adversaries" === getCurrentPage() && getCurrentTab() === "kings_crowns") { addKingsCrownsToMicePage(); const tab = document.querySelector(".mousehuntHud-page-tabHeader.kings-crowns-tab"); if (tab && ((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.onclickPageTabHandler)) { hg.utils.PageUtil.onclickPageTabHandler(tab); } } onNavigation(addKingsCrownsToMicePage, { page: "adversaries" }); onNavigation(addSortingToStatsPage, { page: "adversaries", tab: "your_stats", subtab: "group" }); onNavigation(addSortingToStatsPage, { page: "adversaries", tab: "your_stats", subtab: "location" }); onEvent("set_tab", () => { if ("your_stats" === getCurrentTab()) { addSortingToStatsPage(); } }); onNavigation(addSortingToStatsPage, { page: "hunterprofile", tab: "mice" }); }); } }); // src/modules/better-mice/settings/index.js var settings_default8; var init_settings9 = __esm({ "src/modules/better-mice/settings/index.js"() { settings_default8 = () => __async(void 0, null, function* () { return [ { id: "better-mice.show-attraction-rates", title: "Show attraction rates", default: true }, { id: "better-mice.show-mouse-hover", title: "Show mice details on hover (in journal)" }, { id: "better-mice.show-sidebar", title: "Show available mice in sidebar", default: true } ]; }); } }); // src/modules/better-mice/sidebar/styles.css var styles_default13; var init_styles14 = __esm({ "src/modules/better-mice/sidebar/styles.css"() { styles_default13 = ".mh-improved-mice-sidebar{padding:0;margin:5px 0 15px;border:1px solid #ddedff}.mh-improved-mice-sidebar-title{position:relative;padding:5px;font-size:11px;text-align:center;background-color:#ddedff}.mh-improved-mice-sidebar-list{display:flex;flex-direction:column}.mh-improved-mice-sidebar-mouse{display:flex;gap:5px;align-items:center;justify-content:flex-start;padding:1px 5px}.mh-improved-mice-sidebar-mouse-image{width:20px;height:20px;background-size:cover;border-radius:3px;box-shadow:inset 0 0 0 1px #fff}.mh-improved-mice-sidebar-mouse-name{font-size:10px}.mh-improved-mice-sidebar-mouse:hover{cursor:pointer;background-color:#eee}\n"; } }); // src/modules/better-mice/sidebar/index.js var updateSidebarListFromMiceEff, updateSidebarList, sidebar_default3; var init_sidebar3 = __esm({ "src/modules/better-mice/sidebar/index.js"() { init_utils2(); init_styles14(); updateSidebarListFromMiceEff = (data) => __async(void 0, null, function* () { return yield updateSidebarList(data, true); }); updateSidebarList = (data = null, isFromMiceEff = false) => __async(void 0, null, function* () { const sidebar = document.querySelector(".pageSidebarView .pageSidebarView-block"); if (!sidebar) { return; } if (!data || !isFromMiceEff) { data = yield doRequest("managers/ajax/users/getmiceeffectiveness.php"); } const groups2 = (data == null ? void 0 : data.effectiveness) || {}; const mice = Object.values(groups2).reduce((acc, group) => { return [...acc, ...group.mice]; }, []); const existingList = document.querySelector(".mh-improved-mice-sidebar-list"); if (!mice) { if (existingList) { existingList.remove(); } return; } const miceSidebar = makeElement("div", "mh-improved-mice-sidebar"); makeElement("h3", "mh-improved-mice-sidebar-title", "Available Mice", miceSidebar); const miceContainer = makeElement("div", "mh-improved-mice-sidebar-list"); mice.forEach((mouse) => { const mouseEl = makeElement("div", "mh-improved-mice-sidebar-mouse"); mouseEl.addEventListener("click", () => { hg.views.MouseView.show(mouse == null ? void 0 : mouse.type); }); const mouseImage = makeElement("div", "mh-improved-mice-sidebar-mouse-image"); mouseImage.style.backgroundImage = `url(${mouse == null ? void 0 : mouse.thumb})`; mouseEl.append(mouseImage); makeElement("div", "mh-improved-mice-sidebar-mouse-name", mouse.name, mouseEl); miceContainer.append(mouseEl); }); if (existingList) { existingList.replaceWith(miceContainer); return; } miceSidebar.append(miceContainer); if (getSetting("sidebar-stuff.above-map-list", false)) { const mapSidebar = document.querySelector(".pageSidebarView-block .mh-improved-map-sidebar"); if (mapSidebar) { mapSidebar.before(miceSidebar); return; } } sidebar.append(miceSidebar); }); sidebar_default3 = () => __async(void 0, null, function* () { if (getSetting("no-sidebar")) { return; } addStyles(styles_default13, "better-mice-sidebar"); updateSidebarList(); onRequest("users/getmiceeffectiveness.php", updateSidebarListFromMiceEff, true); onRequest("users/changetrap.php", updateSidebarList, true); }); } }); // src/modules/better-mice/styles.css var styles_default14; var init_styles15 = __esm({ "src/modules/better-mice/styles.css"() { styles_default14 = '.mouseView-titleContainer{height:26px}.mouseView-values{float:none;font-size:11px;line-height:unset}.mouseView-title{font-size:1.2em;line-height:24px}.mh-ui-mouse-links{display:inline-block;float:right;margin-right:15px}.mh-ui-mouse-links-map{display:flex;justify-content:center;padding-bottom:5px}.mh-ui-mouse-links a{margin-right:10px}.mh-ui-mouse-links-map a{margin:10px 10px 10px 0}.mouseview-title-group{font-size:11px}.mh-ui-mouse-links-map .mousehuntActionButton.tiny{margin:3px}.mouseView-movedContainer{display:flex;flex-flow:row wrap;gap:10px}.mouseview-has-mhct .mouseView-weaknessContainer{display:flex;flex-direction:column;align-items:center;width:90px}.mouseview-has-mhct .mouseView-categoryContent-subgroup-mouse-weaknesses{width:100%}.mouseview-has-mhct .mouseView-socialContainer{display:none}.mouseview-has-mhct .mouseView-statsContainer{display:flex;align-items:stretch;width:155px}.mouseview-has-mhct .mouseView-statsContainer-block-padding{display:flex;flex-direction:column;align-items:center;min-width:125px;padding:10px}.mouseview-has-mhct .mouseView-descriptionContainer{width:100%}.mouseView-categoryContent-subgroup-mouse-weaknesses-label{font-size:12px;font-weight:400;font-variant:none}.mouseview-has-mhct .mouseView-difficulty{display:none}.mouseview-has-mhct .mouse-ar-wrapper{display:grid;grid-template-columns:1fr 1fr 50px;gap:10px;place-items:center stretch;width:100%;padding:5px;margin:5px 0;font-size:12px}.mouseview-has-mhct .has-stages .mouse-ar-wrapper{grid-template-columns:3fr 2fr 2fr 50px}.mouseview-has-mhct .mouse-ar-wrapper div{padding:0 2px;font-size:12px}.mouseview-has-mhct .mice-ar-wrapper{margin-right:10px}.mouseview-has-mhct .mouse-ar-wrapper div.rate{font-size:13px}.mouseview-has-mhct .ar-header{display:flex;align-items:center;justify-content:space-between;height:26px;padding-bottom:2px;margin-top:10px;font-size:12px;font-weight:900;border-bottom:1px solid #ccc}.mouseview-has-mhct .ar-link{font-weight:400}.mouseview-has-mhct .rate{text-align:right}.mouseview-has-mhct .mouse-ar-wrapper:nth-child(odd){background-color:#e7e7e7}.mouseview-has-mhct .mouseView-description{font-weight:500;line-height:19px}.mh-ui-mouse-links-map-name{color:#3b5998;cursor:pointer}.treasureMapView-highlight-name{padding:5px 0 10px;font-weight:400;text-align:center}.mh-ui-mouse-links-map-name:hover{text-decoration:underline}.mh-ui-mouse-links-map .treasureMapView-highlight-group{text-align:center}.mouseView-image{box-shadow:none}.mouseView-image:hover{box-shadow:1px 1px 2px #e70}.mouseView a.custom-favorite-button,.mouseView a.custom-favorite-button-small{position:absolute;top:15px;left:15px;width:30px;height:30px;background-size:contain}#custom-submenu-item-king-s-crowns .icon{filter:sepia(1) brightness(.5)}.mouseView-statsContainer-block-padding abbr{text-decoration:none}.mouseView-statsContainer-block-padding{padding:5px}a.mouseListView-categoryContent-subgroup-mouse-thumb{position:relative}.crown .mouseListView-categoryContent-subgroup-mouse-thumb:after{position:absolute;top:-4px;left:-8px;z-index:2;width:20px;height:20px;content:"";background-color:#fdfdfa;background-size:contain;border:1px solid #929292;border-radius:50%}.crown.bronze .mouseListView-categoryContent-subgroup-mouse-thumb:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_bronze.png)}.crown.silver .mouseListView-categoryContent-subgroup-mouse-thumb:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_silver.png)}.crown.gold .mouseListView-categoryContent-subgroup-mouse-thumb:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_gold.png)}.crown.diamond .mouseListView-categoryContent-subgroup-mouse-thumb:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_diamond.png)}.crown.platinum .mouseListView-categoryContent-subgroup-mouse-thumb:after{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_platinum.png)}.mouseListView-categoryContent-subgroup-mouse-thumb,.mouseListView-categoryContent-subgroup-mouse .mouseListView-categoryContent-subgroup-mouse-margin{transition:.2s ease-in}.mouseListView-categoryContent-subgroup-mouse-thumb:hover{transform:scale(1.2)}a.mouseListView-categoryContent-subgroup-mouse:hover .mouseListView-categoryContent-subgroup-mouse-margin{background-size:contain}.mouseViewPopup .mouseView-image:hover{box-shadow:none;transform:scale(.95)}.mouseViewPopup .mouseView-image{margin-bottom:10px;transition:.2s ease-in}.mouseViewPopup .mouseView-descriptionContainer{display:grid;grid-template-columns:3fr 2fr;justify-items:stretch}.mouseViewPopup .mouseView-values{margin-left:0}.mouseViewPopup .mouseView-description{grid-column:span 2;padding-top:5px}.mouseViewPopup .mouseView-group.mouseview-title-group{text-align:right}img.minluck-power-type-img{width:20px}li.minluck-item{display:inline-flex;gap:3px;align-items:center;width:auto;padding:2px;margin:2px;font-size:12px;background-color:#f2f2f2;border:1px solid #ccc;border-radius:8px}ul.minluck-list{display:flex;flex-wrap:wrap;place-content:center flex-start;width:auto;margin-right:-5px}.minluck-title{display:flex;align-items:center;justify-content:space-between;padding-bottom:2px;margin-top:10px;margin-bottom:5px;font-size:12px;font-weight:900;border-bottom:1px solid #ccc}.mouseview-relicHunter{display:flex;align-items:center;justify-content:space-around;width:100%;padding:10px;font-size:15px;background-color:#edd1f3;border-radius:10px}\n'; } }); // src/modules/better-mice/index.js var getLinkMarkup3, addLinks2, isFavorite, addFavoriteButton, addMinluck, addWisdom, updateMouseView, _original, replaceShowMouseImage, main5, wisdoms, minlucks, init8, better_mice_default; var init_better_mice = __esm({ "src/modules/better-mice/index.js"() { init_utils2(); init_hover_mice(); init_mouse_page(); init_settings9(); init_sidebar3(); init_styles15(); getLinkMarkup3 = (name) => { return makeLink("MHCT AR", `https://www.mhct.win/attractions.php?mouse_name=${name}`) + makeLink("Wiki", `https://mhwiki.hitgrab.com/wiki/index.php/${name}`); }; addLinks2 = () => { const title = document.querySelector(".mouseView-title"); if (!title) { return; } const currentLinks = document.querySelector(".mh-ui-mouse-links"); if (currentLinks) { currentLinks.remove(); } const div = document.createElement("div"); div.classList.add("mh-ui-mouse-links"); div.innerHTML = getLinkMarkup3(title.innerText); title.parentNode.insertBefore(div, title); const values = document.querySelector(".mouseView-values"); const desc = document.querySelector(".mouseView-descriptionContainer"); if (values && desc) { desc.insertBefore(values, desc.firstChild); } }; isFavorite = (mouseId) => __async(void 0, null, function* () { var _a, _b, _c, _d, _e; const favorites = yield doRequest("managers/ajax/pages/page.php", { page_class: "HunterProfile", "page_arguments[tab]": "kings_crowns", "page_arguments[sub_tab]": false, "page_arguments[snuid]": window.user.sn_user_id }); if (!((_e = (_d = (_c = (_b = (_a = favorites == null ? void 0 : favorites.page) == null ? void 0 : _a.tabs) == null ? void 0 : _b.kings_crowns) == null ? void 0 : _c.subtabs[0]) == null ? void 0 : _d.mouse_crowns) == null ? void 0 : _e.favourite_mice.length)) { return false; } return favorites.page.tabs.kings_crowns.subtabs[0].mouse_crowns.favourite_mice.some((mouse) => { return mouse.id && mouse.id === Number.parseInt(mouseId, 10); }); }); addFavoriteButton = (mouseId, mouseView) => __async(void 0, null, function* () { const state = yield isFavorite(mouseId); const fave = yield makeFavoriteButton({ target: mouseView, size: "large", isSetting: false, state, onChange: () => { doRequest("managers/ajax/mice/mouse_crowns.php", { action: "toggle_favourite", user_id: window.user.user_id, mouse_id: mouseId }); } }); mouseView.append(fave); }); addMinluck = (mouseId, mouseView) => __async(void 0, null, function* () { const appendTo = mouseView.querySelector(".mouseView-contentContainer"); if (!appendTo) { return; } const minluckContainer = makeElement("div", "minluck-container"); const titleText = makeElement("div", "minluck-title", "Minlucks"); makeTooltip({ appendTo: titleText, text: "If your current luck is above the minluck, you are guaranteed to catch the mouse if you attract it." }); minluckContainer.append(titleText); const minluckList = makeElement("ul", "minluck-list"); const minluck = minlucks.find((m) => m.id === Number.parseInt(mouseId, 10)); const mouseMinlucks = (minluck == null ? void 0 : minluck.minlucks) || {}; Object.keys(mouseMinlucks).forEach((powerType) => { if (!mouseMinlucks[powerType] || "\u221E" === mouseMinlucks[powerType]) { return; } const minluckItem = makeElement("li", "minluck-item"); const powerTypeImg = makeElement("img", "minluck-power-type-img"); powerTypeImg.src = `https://www.mousehuntgame.com/images/powertypes/${powerType.toLowerCase()}.png`; minluckItem.append(powerTypeImg); makeElement("div", "minluck-power-type-minluck", mouseMinlucks[powerType], minluckItem); minluckList.append(minluckItem); }); minluckContainer.append(minluckList); appendTo.append(minluckContainer); }); addWisdom = (mouseId, mouseView) => __async(void 0, null, function* () { const values = mouseView.querySelector(".mouseView-values"); if (!values) { return; } let wisdom = wisdoms.find((m) => m.id === Number.parseInt(mouseId, 10)); wisdom = (wisdom == null ? void 0 : wisdom.wisdom) || 0; wisdom = wisdom.toString().replaceAll(/\B(?=(\d{3})+(?!\d))/g, ","); makeElement("span", "wisdom-container", ` / ${wisdom} Wisdom`, values); }); updateMouseView = () => __async(void 0, null, function* () { const mouseView = document.querySelector("#overlayPopup .mouseView"); if (!mouseView) { return; } const mouseId = mouseView.getAttribute("data-mouse-id"); if (!mouseId) { return; } const name = mouseView.querySelector(".mouseView-title"); if (!name) { return; } const catchesEl = document.querySelectorAll(".mouseView-statsContainer-block-padding td abbr"); if (catchesEl && catchesEl.length > 0) { catchesEl.forEach((el) => { const catchesNumber = el.getAttribute("title").replace(" Catches", "").replace(" catches", "").replace(" Misses", "").replace(" misses", "").trim(); if (catchesNumber) { el.innerText = catchesNumber; } }); } addLinks2(); addFavoriteButton(mouseId, mouseView); addMinluck(mouseId, mouseView); addWisdom(mouseId, mouseView); mouseView.classList.add("mouseview-has-mhct"); const group = document.querySelector(".mouseView-group"); if (group) { group.classList.add("mouseview-title-group"); const descContainer = document.querySelector(".mouseView-descriptionContainer"); if (descContainer) { if (descContainer.childNodes.length > 1) { descContainer.insertBefore(group, descContainer.childNodes[1]); } else { descContainer.append(group); } } } const groupTitle = mouseView.querySelector(".mouseView-group.mouseview-title-group"); if (groupTitle) { let newHtml = groupTitle.innerHTML.replace("Group: ", ""); const subGroups = newHtml.split("("); if (subGroups.length > 1) { newHtml = `<span class="mouseview-group">${subGroups[0]}</span><span class="mouseview-subgroup">(${subGroups[1]}</span>`; groupTitle.classList.add("mouseview-title-group-has-subgroup"); } else { newHtml = `<span class="mouseview-group">${newHtml}</span>`; } groupTitle.innerHTML = newHtml; } const container = mouseView.querySelector(".mouseView-contentContainer"); if (!container) { return; } const imageContainer = mouseView.querySelector(".mouseView-imageContainer"); if (imageContainer) { const movedContainer = makeElement("div", "mouseView-movedContainer"); const statsContainer = mouseView.querySelector(".mouseView-statsContainer"); if (statsContainer) { movedContainer.append(statsContainer); } const weaknessContainer = mouseView.querySelector(".mouseView-weaknessContainer"); if (weaknessContainer) { movedContainer.append(weaknessContainer); const weaknesses = weaknessContainer.querySelectorAll(".mouseView-categoryContent-subgroup-mouse-weaknesses-padding"); weaknesses.forEach((w) => { const weakness = w.querySelector(".mouseView-weakness"); if (!weakness) { w.classList.add("mouseview-weakness-empty"); w.classList.add("hidden"); } }); } if (401 === Number.parseInt(mouseId, 10)) { const location = yield getRelicHunterLocation(); if (location && location.name) { const relicHunterBox = makeElement("div", ["mouseview-relicHunter", "mouseview-relicHunter"]); makeElement("div", "hint", location.name, relicHunterBox); const button = makeElement("div", ["mousehuntActionButton", "small"]); makeElement("span", "", "Travel", button); button.addEventListener("click", () => { app.pages.TravelPage.travel(environmentType); setPage("Camp"); }); relicHunterBox.append(button); movedContainer.append(relicHunterBox); } } imageContainer.append(movedContainer); } if (!getSetting("better-mice.show-attraction-rates", true)) { return; } const arWrapper = makeElement("div", "ar-wrapper"); const title = makeElement("div", "ar-header"); const titleText = makeElement("div", "ar-title", "Attraction Rates", title); makeTooltip({ appendTo: titleText, text: 'The best location and bait, according to data gathered by <a href="https://mhct.win/" target="_blank" rel="noopener noreferrer">MHCT</a>.' }); const link = makeElement("a", "ar-link", "View on MHCT \u2192"); link.href = `https://www.mhct.win/attractions.php?mouse_name=${name.innerText}`; link.target = "_mhct"; title.append(link); arWrapper.append(title); let mhctJson = yield getArForMouse(mouseId, "mouse"); if (!mhctJson || mhctJson === void 0 || mhctJson.length === 0 || "error" in mhctJson) { return; } mhctJson = mhctJson.slice(0, 15); const miceArWrapper = makeElement("div", "mice-ar-wrapper"); const hasStages = mhctJson.some((mouseAr) => mouseAr.stage); if (hasStages) { miceArWrapper.classList.add("has-stages"); } mhctJson.forEach((mouseAr) => { const mouseArWrapper = makeElement("div", "mouse-ar-wrapper"); makeElement("div", "location", mouseAr.location, mouseArWrapper); if (hasStages) { makeElement("div", "stage", mouseAr.stage, mouseArWrapper); } makeElement("div", "cheese", mouseAr.cheese, mouseArWrapper); makeElement("div", "rate", `${(mouseAr.rate / 100).toFixed(2)}%`, mouseArWrapper); miceArWrapper.append(mouseArWrapper); }); if (mhctJson.length > 0) { arWrapper.append(miceArWrapper); container.append(arWrapper); } }); replaceShowMouseImage = () => { if (_original) { return; } _original = hg.views.MouseCrownsView.showMouseImage; hg.views.MouseCrownsView.showMouseImage = (element) => { const type = element.getAttribute("data-mouse-type"); if (type) { hg.views.MouseView.show(type); return; } _original(element); }; }; main5 = () => __async(void 0, null, function* () { onOverlayChange({ mouse: { show: updateMouseView } }); minlucks = yield getData("minlucks"); wisdoms = yield getData("wisdom"); addSubmenuItem({ menu: "mice", label: "Groups", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/mice.png?asset_cache_version=2", href: "https://www.mousehuntgame.com/adversaries.php?tab=groups" }); addSubmenuItem({ menu: "mice", label: "Regions", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/travel.png?asset_cache_version=2", href: "https://www.mousehuntgame.com/adversaries.php?tab=regions" }); addSubmenuItem({ menu: "mice", label: "Your Stats", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/special.png?asset_cache_version=2", href: "https://www.mousehuntgame.com/adversaries.php?tab=your_stats" }); addSubmenuItem({ menu: "mice", label: "King's Crowns", icon: "https://www.mousehuntgame.com/images/ui/crowns/crown_silver.png?asset_cache_version=2", href: "https://www.mousehuntgame.com/adversaries.php?tab=kings_crowns" }); }); init8 = () => __async(void 0, null, function* () { addStyles(styles_default14, "better-mice"); main5(); mouse_page_default(); if (getSetting("better-mice.show-mouse-hover", true)) { hover_mice_default(); } if (getSetting("better-mice.show-mice-sidebar", true)) { sidebar_default3(); } replaceShowMouseImage(); }); better_mice_default = { id: "better-mice", name: "Better Mice", type: "better", default: true, description: "Adds attraction rate stats and links to MHWiki and MHCT to mouse dialogs. Adds sorting to the mouse stats pages, and adds the King's Crown tab to the mouse pages.", load: init8, settings: settings_default8 }; } }); // src/modules/better-marketplace/settings/index.js var settings_default9; var init_settings10 = __esm({ "src/modules/better-marketplace/settings/index.js"() { settings_default9 = () => __async(void 0, null, function* () { return [ { id: "better-marketplace.search-all", title: "Default to showing all items in search", default: false }, { id: "better-marketplace.small-images", title: "Smaller images", default: false } ]; }); } }); // src/modules/better-marketplace/styles/small-images.css var small_images_default; var init_small_images = __esm({ "src/modules/better-marketplace/styles/small-images.css"() { small_images_default = ".marketplaceView-table-image .marketplaceView-itemImage{width:40px;height:40px;min-height:unset}\n"; } }); // src/modules/better-marketplace/styles/styles.css var styles_default15; var init_styles16 = __esm({ "src/modules/better-marketplace/styles/styles.css"() { styles_default15 = "div#select2-drop.marketplaceView-header-search-dropdown .select2-result-label{white-space:nowrap}div#select2-drop.marketplaceView-header-search-dropdown .select2-result-sub .select2-result-label{display:grid;grid-template-columns:30px 4fr 1fr;place-items:center start;padding-left:10px}div#select2-drop.marketplaceView-header-search-dropdown .friendsPage-filter-environment-thumb{width:25px;height:25px;border-radius:0;box-shadow:none}.marketplaceView-item-quickListings .marketplaceView-table-listing-quantity:hover,.marketplaceView-item-quickListings .marketplaceView-table-listing-quantity:focus{text-decoration:underline}a.marketplaceView-goldValue.marketplaceView-quantityNotGold:after{display:none;background-image:none}label.mhui-marketplace-search-toggle{display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;border-radius:10px}.marketplaceView-header-searchContainer{top:5px;right:30px!important;height:70px}.marketplaceView-header-search-title{margin-bottom:2px}.marketplaceView-item-leftBlock{margin-top:20px}.marketplaceView-itemImage .limitedEdition{display:none}.marketplaceHome-blockItem.small .marketplaceView-itemImage{width:70px;height:70px;padding-bottom:0;margin-bottom:10px}.marketplaceHome-blockItem.small .marketplaceView-item-imageContainer{width:auto}.marketplaceHome-blockItem.small .marketplaceView-favouriteButton{right:5px}tr.open td.marketplaceView-table-name{white-space:nowrap}.marketplaceListing .marketplaceView-itemImage.favourite{border:none;box-shadow:none}.marketplaceView-item h1{display:flex;align-items:center;justify-content:flex-start}.mh-improved-marketplace-item-title-actions{display:inline-flex;flex-grow:1;gap:5px;justify-content:end;margin-right:5px}.marketplaceView-item.view .mousehuntCharacterGuideBox .mousehuntCharacterGuideBox-content{margin-left:80px}.marketplaceView-item-averagePrice,.marketplaceView-item-averagePrice span{font-size:12px}.marketplaceView-table-chartImage{position:absolute;top:0;right:-30px;bottom:0;height:49px;opacity:.5}.marketplaceView-table-name:hover .marketplaceView-table-chartImage{opacity:1}td.marketplaceView-table-name{position:relative}\n"; } }); // src/modules/better-marketplace/index.js var initSearch, modifySearch, waitForSearchReady, autocloseClaim, getLinkMarkup4, overloadShowItem, waitForFooterReady, addChartToCategories, _showBrowseCategory, _showBrowser, replaceShowBrowseCategory, originalSelect, newSelect, init9, better_marketplace_default; var init_better_marketplace = __esm({ "src/modules/better-marketplace/index.js"() { init_utils2(); init_settings10(); init_small_images(); init_styles16(); initSearch = (searchInputDOM) => { const blankOpt = document.createElement("option"); blankOpt.value = ""; blankOpt.text = ""; blankOpt.disabled = true; blankOpt.selected = true; blankOpt.hidden = true; searchInputDOM.prepend(blankOpt); searchInputDOM = $(".marketplaceView-header-search"); searchInputDOM.select2({ formatResult: hg.views.MarketplaceView.formatSelect2Result, formatSelection: hg.views.MarketplaceView.formatSelect2Result, dropdownAutoWidth: false, placeholder: "Search for items\u2026", minimumInputLength: 0, dropdownCssClass: "marketplaceView-header-search-dropdown", width: "resolve" }).on("change", () => { if (!searchInputDOM.prop("disabled") && searchInputDOM.val()) { hg.views.MarketplaceView.showItem( searchInputDOM.val(), "view", false, false, true ); } }); }; modifySearch = (opts) => __async(void 0, null, function* () { const searchContainer = document.querySelector(".marketplaceView-header-searchContainer"); if (!searchContainer) { return; } let searchInputDOM = $(".marketplaceView-header-search"); searchInputDOM.select2("destroy"); if (originalSelect === null) { const originalSelectNode = document.querySelector(".marketplaceView-header-search"); originalSelect = originalSelectNode.cloneNode(true); originalSelect.classList.remove("marketplaceView-header-search"); } const itemsToRemove = yield getData("marketplace-hidden-items"); opts.forEach((opt) => { if (!opt.value || opt.value === "" || itemsToRemove.some((item) => item.id === opt.value || item.name === opt.text)) { opt.remove(); } }); initSearch(searchInputDOM); newSelect = document.querySelector("select.marketplaceView-header-search"); const toggleSearch = makeElement("input", "mhui-marketplace-search-toggle"); toggleSearch.setAttribute("type", "checkbox"); const label = makeElement("label", "mhui-marketplace-search-toggle"); label.setAttribute("for", "mhui-marketplace-search-toggle"); label.append(toggleSearch); label.append(document.createTextNode("Search all items")); const defaultToAll = getSetting("better-marketplace.search-all"); toggleSearch.checked = defaultToAll; if (defaultToAll) { newSelect.innerHTML = originalSelect.innerHTML; newSelect.value = originalSelect.value; } label.addEventListener("click", () => { toggleSearch.checked = !toggleSearch.checked; toggleSearch.dispatchEvent(new Event("change")); }); toggleSearch.addEventListener("change", () => { searchInputDOM = $(".marketplaceView-header-search"); searchInputDOM.select2("destroy"); const currentOpts = document.querySelector(".marketplaceView-header-search"); if (toggleSearch.checked) { currentOpts.innerHTML = originalSelect.innerHTML; currentOpts.value = originalSelect.value; } else { currentOpts.innerHTML = newSelect.innerHTML; currentOpts.value = newSelect.value; } initSearch(searchInputDOM); }); searchContainer.append(label); }); waitForSearchReady = (attempts = 0) => { const opts = document.querySelectorAll(".marketplaceView-header-search option"); let timeoutPending = false; if (opts.length === 0) { if (attempts < 10) { timeoutPending = setTimeout(() => waitForSearchReady(attempts + 1), 300); } return; } if (timeoutPending) { clearTimeout(timeoutPending); } setTimeout(() => { modifySearch(opts); }, 300); }; autocloseClaim = (resp) => { var _a, _b; if (!(resp && resp.success)) { return; } const journalEntry = (_b = (_a = resp == null ? void 0 : resp.journal_markup[0]) == null ? void 0 : _a.render_data) == null ? void 0 : _b.css_class; if (!journalEntry || journalEntry === "") { return; } if (journalEntry.includes("marketplace_claim_listing") || journalEntry.includes("marketplace_complete_listing")) { setTimeout(() => hg.views.MarketplaceView.hideDialog(), 250); } }; getLinkMarkup4 = (name, id) => { return makeLink("MHCT", `https://www.mhct.win/loot.php?item=${id}`, true) + makeLink("Wiki", `https://mhwiki.hitgrab.com/wiki/index.php/${name}`); }; overloadShowItem = () => { const originalShowItem = hg.views.MarketplaceView.showItem; hg.views.MarketplaceView.showItem = (itemId, action, defaultQuantity, defaultUnitPriceWithTariff, force) => { const actionButton = document.querySelector(".marketplaceView-item-actionType .marketplaceView-listingType"); if (actionButton) { actionButton.addEventListener("click", () => { const actionType = actionButton.classList.contains("buy") ? "sell" : "buy"; originalShowItem(itemId, actionType, defaultQuantity, defaultUnitPriceWithTariff, force); }); } originalShowItem(itemId, action, defaultQuantity, defaultUnitPriceWithTariff, force); const actions = document.querySelector(".marketplaceView-item-titleActions"); if (!actions) { return; } const existing = document.querySelector(".mh-improved-marketplace-item-title-actions"); if (existing) { existing.remove(); } let itemName = document.querySelector(".marketplaceView-item-titleName"); itemName = itemName ? itemName.textContent.trim() : ""; const buttons = makeElement("div", "mh-improved-marketplace-item-title-actions", getLinkMarkup4(itemName, itemId)); actions.insertBefore(buttons, actions.firstChild); }; }; waitForFooterReady = (attempts = 0) => { const opts = document.querySelectorAll(".marketplaceView-table-listing-quantity"); let timeoutPending = false; if (!(opts && opts.length > 0)) { if (attempts < 10) { timeoutPending = setTimeout(() => updateQuantityButtons(attempts + 1), 300); } return; } if (timeoutPending) { clearTimeout(timeoutPending); } setTimeout(() => { opts.forEach((order) => { order.addEventListener("click", () => { const quantity = order.textContent.trim(); hg.views.MarketplaceView.setOrderQuantity(quantity); }); }); }, 300); }; addChartToCategories = () => __async(void 0, null, function* () { const items2 = document.querySelectorAll(".marketplaceView-table tr"); items2.forEach((item) => { const itemId = item.getAttribute("data-item-id"); if (!itemId) { return; } const name = item.querySelector(".marketplaceView-table-name"); if (!name) { return; } const hasChartImage = item.querySelector(".marketplaceView-table-chartImage"); if (hasChartImage) { return; } const chartImage = makeElement("img", "marketplaceView-table-chartImage"); chartImage.src = `https://markethunt-chart.mouse.rip/${itemId}.png?small`; name.append(chartImage); }); }); _showBrowseCategory = null; _showBrowser = null; replaceShowBrowseCategory = () => { if (_showBrowseCategory) { return; } _showBrowseCategory = hg.views.MarketplaceView.showBrowseCategory; hg.views.MarketplaceView.showBrowseCategory = (category) => { _showBrowseCategory(category); addChartToCategories(); }; _showBrowser = hg.views.MarketplaceView.showBrowser; hg.views.MarketplaceView.showBrowser = (category) => { _showBrowser(category); addChartToCategories(); }; }; originalSelect = null; newSelect = null; init9 = () => __async(void 0, null, function* () { const stylesToUse = [styles_default15]; if (getSetting("better-marketplace.small-images")) { stylesToUse.push(small_images_default); } addStyles(stylesToUse, "better-marketplace"); onOverlayChange({ marketplace: { show: () => { waitForSearchReady(); overloadShowItem(); if (getSetting("better-marketplace.show-chart-images")) { replaceShowBrowseCategory(); } } } }); onRequest("users/marketplace.php", autocloseClaim); onRequest("users/marketplace.php", waitForFooterReady, true); }); better_marketplace_default = { id: "better-marketplace", name: "Better Marketplace", type: "better", default: true, description: 'Updates the marketplace layout and appearance and adds a variety of small features, like being able to click the "Buying" or "Selling" text to toggle between the two.', load: init9, settings: settings_default9 }; } }); // src/modules/better-quests/settings/index.js var settings_default10; var init_settings11 = __esm({ "src/modules/better-quests/settings/index.js"() { settings_default10 = () => __async(void 0, null, function* () { return [{ id: "better-quests.m400-helper", title: "M400 Helper", default: true, description: 'Adds a "Travel to next step" button to the M400 quest.' }]; }); } }); // src/modules/better-quests/m400.js var renderButton, main6, m400_default; var init_m400 = __esm({ "src/modules/better-quests/m400.js"() { init_utils2(); renderButton = (location) => { const title = document.querySelector(".campPage-quests-title"); if (!title) { return; } const existingButton = document.querySelector("#mh-improved-m400-travel"); if (existingButton) { existingButton.remove(); } const button = makeElement("div", ["mousehuntActionButton", "tiny", "mh-m400-travel", `mh-m400-travel-${location}`]); button.id = "mh-improved-m400-travel"; if (location === getCurrentLocation()) { button.classList.add("disabled"); } makeElement("span", "mousehuntActionButton-text", "Travel to next step", button); button.setAttribute("data-location", location); button.addEventListener("click", (e) => { let clickedLocation = e.target.getAttribute("data-location"); if (!clickedLocation) { const parent = e.target.parentElement; if (!parent) { return; } clickedLocation = parent.getAttribute("data-location"); } travelTo(clickedLocation); setPage("Camp", null, () => { }); }); title.append(button); }; main6 = () => __async(void 0, null, function* () { var _a, _b, _c; const questTitle = document.querySelector(".campPage-quests-title"); if (!questTitle) { return; } const isM400 = ((_b = (_a = user.quests) == null ? void 0 : _a.QuestLibraryM400Research) == null ? void 0 : _b.is_assignment) || ((_c = user.quests.QuestLibraryM400Research) == null ? void 0 : _c.is_bait_assignment); if (!isM400) { return; } const container = document.querySelector(".campPage-quests-container"); if (!container) { return; } container.classList.add("mh-m400-quest"); const allTasks = document.querySelectorAll(".campPage-quests-objective-container"); if (!allTasks) { return; } const taskNames = document.querySelectorAll(".campPage-quests-objective-task"); if (taskNames) { taskNames.forEach((task) => { const newText = task.innerText.replaceAll("Collect 1 Piece of M400 Intel", "Collect Intel"); task.innerText = newText; }); } const last = [...allTasks].reverse().find((task) => { return !task.classList.contains("locked") && !task.classList.contains("complete"); }); if (!last) { return; } const objective = last.querySelector(".campPage-quests-objective-task"); if (!objective) { return; } let location = objective.innerText.split(" in "); if (location.length === 1) { location = objective.innerText.split(" from "); } if (location.length === 1) { return; } location = location[1].replace("Mice", "").replace("the ", "").trim(); const locations = yield getData("m400-locations"); const locationKey = Object.keys(locations).find((key) => { return locations[key].includes(location); }); if (!locationKey) { return; } renderButton(locationKey); }); m400_default = () => __async(void 0, null, function* () { main6(); onNavigation(main6, { page: "camp" }); }); } }); // src/modules/better-quests/styles.css var styles_default16; var init_styles17 = __esm({ "src/modules/better-quests/styles.css"() { styles_default16 = "#mh-improved-m400-travel{left:15px;cursor:pointer}.m400-helper-hidden,.campPage-quests-objective-container.locked .campPage-quests-objective-content,.campPage-quests-footer-smash-icon,.campPage-quests-footer-smash-warning{display:none}.campPage-quests-objective-container .campPage-quests-objective-thumb{width:35px;height:25px}.campPage-quests-objective-content{width:calc(100% - 35px)}.campPage-quests-objective-container.locked .campPage-quests-objective-thumb{width:100%;margin:0 auto;opacity:.4}.campPage-quests-footer-smash{display:flex;flex-direction:row;place-content:center center;align-items:center;padding:4px;font-size:9.75px;text-decoration:underline;border-radius:3px;box-shadow:none}#mh-research-smash-warning{position:absolute;bottom:28px;left:30px;display:block;max-width:250px;line-height:16px;text-align:left}#overlayPopup.zugzwangsLibraryQuestShopPopup .errorText{padding:10px 0;color:#da1717}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .image{width:57px}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .image img{width:40px;height:40px;margin:0}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .actions{margin-left:-19px}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .content b{display:block;padding:5px 0;font-size:12px;color:#000}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .content{color:#909090}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .requirements b{display:inline-block;padding:7px}#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink .item img,#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink br{display:none}#overlayPopup.zugzwangsLibraryQuestShopPopup .questContainer{height:auto;overflow-y:visible}#overlayPopup.zugzwangsLibraryQuestShopPopup a.questLink{display:flex;align-items:center}#overlayPopup.zugzwangsLibraryQuestShopPopup a.questLink:hover,#overlayPopup.zugzwangsLibraryQuestShopPopup a.questLink:focus,#overlayPopup.zugzwangsLibraryQuestShopPopup a.questLink:active{cursor:default}.mh-m400-travel{margin-top:-2px;margin-left:10px}.mh-m400-quest .campPage-quests-objective-progress,.mh-m400-quest .campPage-quests-objective-progressBar{display:none}\n"; } }); // src/modules/better-quests/index.js var updateObjectiveFooterDisplay, addQuestsTab, addQuestTabEventListener, addResearchSmashWarning, moveErrorText, removeSmashText, assignments, getAssignmentMeta, updateAssignmentList, modifyAvailableQuestsPopup, checkForQuestSmash, m400IfEnabled, main7, init10, better_quests_default; var init_better_quests = __esm({ "src/modules/better-quests/index.js"() { init_utils2(); init_settings11(); init_m400(); init_styles17(); updateObjectiveFooterDisplay = () => { const footerText = document.querySelector(".campPage-quests-footer-smash"); if (!footerText) { return; } const newHref = footerText.getAttribute("href").replace("subtab", "sub_tab"); footerText.setAttribute("href", `${newHref}#smashQuest`); footerText.innerHTML = footerText.innerHTML.replace("Don't like an assignment? Cancel it by smashing the assignment ", "Cancel this assignment by smashing it "); }; addQuestsTab = () => { const tabs = document.querySelector(".campPage-tabs-tabRow"); if (!tabs) { return; } const existing = tabs.querySelector('a[data-tab="quests"]'); if (existing) { return; } const newQuestsButton = document.createElement("a"); newQuestsButton.classList.add("campPage-tabs-tabHeader"); newQuestsButton.classList.add("quests"); newQuestsButton.setAttribute("data-tab", "quests"); newQuestsButton.addEventListener("click", () => { hg.views.HeadsUpDisplayZugswangLibraryView.showPopup(); }); const newQuestsButtonText = document.createElement("span"); newQuestsButtonText.innerText = "Quests"; newQuestsButton.append(newQuestsButtonText); tabs.insertBefore(newQuestsButton, tabs.lastChild); }; addQuestTabEventListener = () => { const questTabContent = document.querySelector('.campPage-tabs-tabContent[data-tab="quests"]'); if (!questTabContent) { return; } const observer2 = new MutationObserver(() => { updateObjectiveFooterDisplay(); m400IfEnabled(); }); observer2.observe(questTabContent, { childList: true }); }; addResearchSmashWarning = () => { const existing = document.querySelector("#mh-research-smash-warning"); if (existing) { existing.remove(); } if ("hammer" !== getCurrentSubtab()) { return; } const confirm2 = document.querySelector(".inventoryPage-confirmPopup"); if (!confirm2) { return; } const type = confirm2.getAttribute("data-item-type"); if (!type) { return; } const assignments2 = [ "double_run_advanced_research_quest", "seasonalgardenresearch_quest_item", "library_adv_hween2013_research_quest_item", "mystickingresearch_quest_item", "extra_spooky_hween2014_assignment_quest_item", "library_m400_research_quest_item", "charming_study_hween2014_assignment_quest_item", "zurreal_trap_research_quest_item", "library_hween2013_research_quest_item", "pagoda_research_quest_item", "techkingresearch_quest_item", "library_power_type_research_quest_item", "library_m400_bait_research_quest_item", "pagoda_advanced_research_quest_item", "furoma_research_quest_item", "library_mice_research_quest_item", "hg_letter_research_quest_item", "library_catalog_quest_item", "mystic_advanced_research_quest_item", "tech_advanced_research_quest_item", "lab_monster_1_quest_item" ]; if (!assignments2.includes(type)) { return; } const warningText = document.createElement("div"); warningText.id = "mh-research-smash-warning"; warningText.innerText = "If you smash an assignment, you will have to wait 1 hour until you can get a new one."; confirm2.insertBefore(warningText, confirm2.firstChild); }; moveErrorText = () => { const errorTextEl = document.querySelectorAll(".questLink .requirements .error"); if (!errorTextEl) { return; } let errorText = ""; errorTextEl.forEach((el) => { if (el.innerText) { errorText = el.innerText; } el.classList.add("hidden"); }); if (!errorText) { return; } errorText = errorText.replace(/ \d\d seconds/, "").replace(" before taking", " for"); const titleBar = document.querySelector("#jsDialogAjaxPrefix h2"); if (!titleBar) { return; } const titleError = makeElement("h3", "errorText", errorText); titleBar.parentNode.insertBefore(titleError, titleBar.nextSibling); }; removeSmashText = () => { const smashText = document.querySelector(".smashQuest"); if (smashText) { smashText.classList.add("hidden"); } }; assignments = [ { id: "library_intro_research_assignment_convertible", name: "Catalog Library Mice", cost: 0, reward: 20, rank: false }, { id: "", name: "Library Research", cost: 20, reward: 30, rank: false }, { id: "zugzwang_research_assignment_convertible", name: "Zugzwang Research", cost: 50, reward: 80, rank: false }, { id: "furoma_research_assignment_convertible", name: "Furoma Research", cost: 130, reward: 90, rank: false }, { id: "adv_zugzwang_research_assignment_convertible", name: "Advanced Zugzwang Research", cost: 150, reward: 150, rank: false }, { id: "zurreal_trap_research_convertible", name: "Zurreal Trap Research", cost: 900, reward: 400, rank: false }, { id: "library_m400_bait_assignment_convertible", name: "M400 Bait Research Assignment", cost: 1500, reward: 200, rank: true }, { id: "library_m400_assignment_convertible", name: "M400 Hunting Research Assignment", cost: 1900, reward: 300, rank: true } ]; getAssignmentMeta = (assignment) => { const wikiLink = `https://mhwiki.hitgrab.com/wiki/index.php/Library_Assignment#${assignment.name.replaceAll(" ", "_")}`; return `<a href="${wikiLink}" target="_blank" rel="noopener noreferrer">Wiki</a> | Requires: ${assignment.cost} | Reward: ${assignment.reward}`; }; updateAssignmentList = () => { const assignmentList = document.querySelectorAll("#overlayPopup.zugzwangsLibraryQuestShopPopup .questLink"); if (!assignmentList) { return; } assignmentList.forEach((outerEl) => { const el = outerEl.querySelector(".content b"); if (!el) { return; } const assignmentName = el.innerText; const assignment = assignments.find((a) => a.name === assignmentName); if (!assignment) { return; } const requirements = el.parentNode.parentNode.querySelector(".requirements"); if (!requirements) { return; } const metaWrapper = makeElement("div", "mh-ui-assignment-meta-wrapper"); makeElement("div", "mh-ui-assignment-meta", getAssignmentMeta(assignment), metaWrapper); requirements.parentNode.insertBefore(metaWrapper, requirements.nextSibling); requirements.remove(); if ("M400 Hunting Research Assignment" === assignmentName) { const m400Wrapper = makeElement("div", ["content", "mh-ui-m400-wrapper"]); makeElement("b", "mh-ui-m400-title", assignmentName, m400Wrapper); makeElement("span", "mh-ui-m400-content", "This envelope contains a Research Assignment that will have you looking for the elusive M400 prototype.", m400Wrapper); el.parentNode.parentNode.querySelector(".content").replaceWith(m400Wrapper); } outerEl.removeAttribute("onclick"); const button = outerEl.querySelector(".actions .mousehuntActionButton"); if (!button) { return; } button.addEventListener("click", () => { hg.views.HeadsUpDisplayZugswangLibraryView.showConfirm(assignment.id); }); }); }; modifyAvailableQuestsPopup = () => { if (!document.querySelector("#overlayPopup.zugzwangsLibraryQuestShopPopup")) { return; } updateAssignmentList(); const isError2 = document.querySelector(".questLink .requirements .error"); if (isError2) { moveErrorText(); removeSmashText(); } }; checkForQuestSmash = () => { if (!window.location.hash || "#smashQuest" !== window.location.hash) { return; } if ("crafting" !== getCurrentTab() || "hammer" !== getCurrentSubtab()) { return; } const assignment = document.querySelector('.inventoryPage-item.quest[data-produced-item="nothing_stat_item"]'); if (!assignment) { return; } app.pages.InventoryPage.useItem(assignment); }; m400IfEnabled = () => { if (!getSetting("better-quests.m400-helper", true)) { return; } m400_default(); }; main7 = () => { if (!isUserTitleAtLeast("lord")) { return; } const activate = () => { addQuestTabEventListener(); addQuestsTab(); checkForQuestSmash(); }; m400IfEnabled(); activate(); onNavigation(activate, { page: "camp" }); onNavigation(checkForQuestSmash, { page: "inventory", tab: "crafting", subtab: "hammer" }); onOverlayChange({ show: () => { addResearchSmashWarning(); modifyAvailableQuestsPopup(); } }); }; init10 = () => __async(void 0, null, function* () { addStyles(styles_default16, "better-quests"); main7(); }); better_quests_default = { id: "better-quests", name: "Better Quests", type: "better", default: true, description: "Allows you to open the assignments popup anywhere, improves the UI of the quests tab, and adds a helper for the M400 assignments.", load: init10, settings: settings_default10 }; } }); // src/modules/better-send-supplies/settings/index.js var settings_default11; var init_settings12 = __esm({ "src/modules/better-send-supplies/settings/index.js"() { init_utils2(); settings_default11 = () => __async(void 0, null, function* () { const tradableItems = yield getTradableItems("truncated_name"); return [{ id: "better-send-supplies.pinned-items", title: "Pinned items", default: [ { name: "SUPER|brie+", value: "SUPER|brie+" }, { name: "Empowered SUPER|brie+", value: "Empowered SUPER|b..." }, { name: "Rift Cherries", value: "Rift Cherries" }, { name: "Rift-torn Roots", value: "Rift-torn Roots" }, { name: "Sap-filled Thorns", value: "Sap-filled Thorns" } ], description: "Items to pin at the top of the send supplies page.", settings: { type: "multi-select", number: 5, options: tradableItems } }]; }); } }); // src/modules/better-send-supplies/styles.css var styles_default17; var init_styles18 = __esm({ "src/modules/better-send-supplies/styles.css"() { styles_default17 = "#supplytransfer .tabContent.recipient .listContainer .actions{display:none}#supplytransfer .listContainer a.element.recipient{width:97px;height:73px;white-space:nowrap}#supplytransfer .tabContent.recipient .listContainer span.content{font-size:12px}#supplytransfer .listContainer a.element:hover{background-color:#d8f0ff}#supplytransfer .listContainer a.element.item{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;width:82px;height:77px}#supplytransfer .itemList a.element .itemImage{width:50px;height:50px}#supplytransfer .tabContent.item .listContainer{width:auto;margin-left:80px}#supplytransfer .categoryMenu{width:70px;padding-left:5px;background-color:#fff}#supplytransfer .categoryMenu a{margin-bottom:1px;font-size:12px;text-align:left}#supplytransfer .itemList a.element .itemImage img{width:45px;height:45px}#supplytransfer .listContainer a.element .details{font-size:11px}#supplytransfer .categoryMenu a:hover,#supplytransfer .categoryMenu a:focus,#supplytransfer .categoryMenu a:active{padding-left:5px;margin-left:-5px;text-decoration:none;background-color:#d8f0ff}#supplytransfer .drawer{padding-bottom:40px;margin-bottom:10px}.mhui-supply-search{display:flex;align-items:center;justify-content:space-between;padding:5px;margin:5px 5px 5px 0;line-height:20px}input.mhui-supply-search-input{padding:9px;margin-right:10px}form.mhui-supply-search-form{display:flex;align-items:center}#supplytransfer .drawer .tabContent .searchContainer{position:absolute;top:-5px;right:26px}#supplytransfer .drawer .tabContent h2{display:inline-block;min-width:230px;padding-bottom:0;margin-bottom:0;margin-left:8px;font-size:15px;font-weight:400;line-height:unset;border:none}#supplytransfer .listContainer a.element.item.hidden{display:none}.mhui-supply-sort-wrapper a,.mhui-supply-sort-wrapper img{width:35px;height:20px}.mhui-supply-sort-wrapper{display:flex;flex-direction:row;gap:5px;align-items:center;justify-content:flex-end;width:30%;margin-right:5px}.mhui-supply-sort-wrapper a{margin:0 4px;line-height:20px;text-align:center;text-decoration:none;border:1px solid #ccc;border-radius:3px;box-shadow:2px 2px 3px #cdc9c6 inset}.mhui-supply-sort-wrapper a:hover,.mhui-supply-sort-wrapper a.focus{background-color:#cac0b2}#supplytransfer .listContainer a.element.item.pinned{background-color:#aef5f7}.mhui-supply-quick-quantity-wrapper{display:flex;align-items:center;justify-content:space-around;max-width:150px;margin:10px auto}\n"; } }); // src/modules/better-send-supplies/index.js var processSearch, addSearch, asNum, resortItems, addSortButtons, highlightFavoritedItems, addQuickQuantityButtons, items, currentSort, upgradeSendSupplies, hasSorted, main8, init11, better_send_supplies_default; var init_better_send_supplies = __esm({ "src/modules/better-send-supplies/index.js"() { init_utils2(); init_settings12(); init_styles18(); processSearch = () => { const currentValue = document.querySelector("#mhui-supply-search-input"); if (!currentValue.value) { items.forEach((item) => { item.classList.remove("hidden"); }); } items.forEach((item) => { const text = item.textContent.toLowerCase(); if (text.includes(currentValue.value.toLowerCase())) { item.classList.remove("hidden"); } else { item.classList.add("hidden"); } }); }; addSearch = () => { const existing = document.querySelector(".mhui-supply-search-wrapper"); if (existing) { return; } const container = document.querySelector("#supplytransfer .tabContent.item"); if (!container) { return; } const form = makeElement("form", "mhui-supply-search-form"); const label = makeElement("label", ["mhui-supply-search-label", "screen-reader-only"]); label.setAttribute("for", "mhui-supply-search-input"); makeElement("span", "", "Search for an item", label); form.append(label); const input = makeElement("input", "mhui-supply-search-input"); input.setAttribute("type", "text"); input.setAttribute("id", "mhui-supply-search-input"); input.setAttribute("placeholder", "Search for an item"); input.setAttribute("autocomplete", "off"); input.addEventListener("keyup", processSearch); form.append(input); const titleWrapper = makeElement("div", "mhui-supply-search"); const title = container.querySelector("h2"); title.textContent = "Send Supplies"; titleWrapper.append(title); titleWrapper.append(form); container.insertBefore(titleWrapper, container.firstChild); setTimeout(() => { input.focus(); }, 100); }; asNum = (number) => { return Number.parseInt(number.replace(",", "")); }; resortItems = (sortType = "alpha") => { const container = document.querySelector("#supplytransfer .tabContent.item .listContainer"); const items2 = container.querySelectorAll(".item"); let sortSelector = ".quantity"; if ("alpha" === sortType || "alpha-reverse" === sortType) { sortSelector = ".details"; } const sorted = [...items2].sort((a, b) => { const aText = a.querySelector(sortSelector).textContent; const bText = b.querySelector(sortSelector).textContent; switch (sortType) { case "alpha": return aText.localeCompare(bText); case "alpha-reverse": return bText.localeCompare(aText); case "qty": return asNum(bText) - asNum(aText); case "qty-reverse": return asNum(aText) - asNum(bText); } return 0; }); for (const item of sorted) { if (item.classList.contains("pinned")) { continue; } container.append(item); } currentSort = sortType; }; addSortButtons = () => { const existing = document.querySelector(".mhui-supply-sort-wrapper"); if (existing) { return; } const container = document.querySelector(".mhui-supply-search"); if (!container) { return; } const sortWrapper = makeElement("div", "mhui-supply-sort-wrapper"); makeElement("span", "mhui-supply-sort-label", "Sort by:", sortWrapper); const alphaSortButton = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-supply-sort-alphabetic"]); makeElement("span", "mousehuntActionButton-text", "Name", alphaSortButton); alphaSortButton.addEventListener("click", () => { resortItems(currentSort === "alpha" ? "alpha-reverse" : "alpha"); }); sortWrapper.append(alphaSortButton); const sortQtyButton = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-supply-sort-quantity"]); makeElement("span", "mousehuntActionButton-text", "Quantity", sortQtyButton); sortQtyButton.addEventListener("click", () => { resortItems(currentSort === "qty" ? "qty-reverse" : "qty"); }); sortWrapper.append(sortQtyButton); container.insertBefore(sortWrapper, container.childNodes[1]); }; highlightFavoritedItems = () => { const itemsToPin = /* @__PURE__ */ new Set([ getSetting("better-send-supplies.pinned-items-0", "SUPER|brie+"), getSetting("better-send-supplies.pinned-items-1", "Empowered SUPER|b..."), getSetting("better-send-supplies.pinned-items-2", "Rift Cherries"), getSetting("better-send-supplies.pinned-items-3", "Rift-torn Roots"), getSetting("better-send-supplies.pinned-items-4", "Sap-filled Thorns") ]); for (const item of items) { const details = item.querySelector(".details"); if (itemsToPin.has(details.textContent)) { item.classList.add("pinned"); } } }; addQuickQuantityButtons = () => { const inputVal = document.querySelector("#supplytransfer-confirm-text input"); if (!inputVal) { return; } const maxquantity = document.querySelector("#supplytransfer-confirm-text .userQuantity"); if (!maxquantity) { return; } const existing = document.querySelector(".mhui-supply-quick-quantity-wrapper"); if (existing) { existing.remove(); } const maxAmount = Number.parseInt(maxquantity.textContent.split("You can send up to: ")[1].split(" ")[0].replace(",", "")); const wrapper = makeElement("div", "mhui-supply-quick-quantity-wrapper"); const buttons = [ 1, 5, 10, 100 ]; for (const button of buttons) { const btn = makeElement("button", ["mousehuntActionButton", "tiny", "mhui-supply-quick-quantity"]); makeElement("span", "", `+${button}`, btn); btn.addEventListener("click", () => { const value = Number.parseInt(inputVal.value || 0); inputVal.value = value + button; const event = new Event("keyup"); inputVal.dispatchEvent(event); }); wrapper.append(btn); } const max = makeElement("button", ["mousehuntActionButton", "tiny", "mhui-supply-quick-quantity"]); makeElement("span", "", "All", max); max.addEventListener("click", () => { inputVal.value = maxAmount; const event = new Event("keyup"); inputVal.dispatchEvent(event); }); wrapper.append(max); inputVal.parentNode.insertBefore(wrapper, inputVal.nextSibling); }; items = []; currentSort = null; upgradeSendSupplies = (initial = false) => { const sendTo = document.querySelector("#supplytransfer .drawer .tabContent.recipient"); const isChoosingUser = sendTo && sendTo.style.display !== "none"; const sending = document.querySelector("#supplytransfer .drawer .tabContent.item"); const isChoosingItem = sending && sending.style.display !== "none"; if (isChoosingUser) { const users = document.querySelectorAll("#supplytransfer .friendList .element.recipient"); for (const user2 of users) { user2.addEventListener("click", () => { upgradeSendSupplies(); }, { once: true }); const search = document.querySelector(".searchContainer input"); if (search) { search.focus(); } } } else if (isChoosingItem) { items = document.querySelectorAll("#supplytransfer .tabContent.item .listContainer .item"); highlightFavoritedItems(); if (initial || !hasSorted) { hasSorted = true; resortItems("alpha"); } addSortButtons(); const itemSearch = document.querySelector(".mhui-supply-search-input"); if (itemSearch) { itemSearch.focus(); } } else { addQuickQuantityButtons(); const inputVal = document.querySelector("#supplytransfer-confirm-text input"); if (inputVal) { inputVal.focus(); } } sendTo.addEventListener("click", () => { upgradeSendSupplies(); }, { once: true }); sending.addEventListener("click", () => { upgradeSendSupplies(); }, { once: true }); }; hasSorted = false; main8 = () => { addSearch(); upgradeSendSupplies(true); }; init11 = () => __async(void 0, null, function* () { addStyles(styles_default17, "better-send-supplies"); onNavigation(main8, { page: "supplytransfer" }); }); better_send_supplies_default = { id: "better-send-supplies", name: "Better Send Supplies", type: "better", default: true, description: "Adds pinned items, search, and sorting to the Send Supplies page.", load: init11, settings: settings_default11 }; } }); // src/modules/better-shops/settings/index.js var settings_default12; var init_settings13 = __esm({ "src/modules/better-shops/settings/index.js"() { settings_default12 = () => __async(void 0, null, function* () { return [ { id: "better-shops.hide-max-owned", title: "Hide items with maximum quantity owned", default: false }, { id: "better-shop.qty-buttons", title: "Show quantity & max buttons", default: true } ]; }); } }); // src/modules/better-shops/qty-buttons.js var qty_buttons_default; var init_qty_buttons = __esm({ "src/modules/better-shops/qty-buttons.js"() { init_utils2(); qty_buttons_default = (block, input, maxQty) => __async(void 0, null, function* () { const existingButtons = block.querySelector(".mh-improved-shop-buy-controls"); if (existingButtons) { return; } maxQty = `${maxQty}`.replaceAll(",", ""); const buyControls = makeElement("div", ["mh-improved-shop-buy-controls"]); const makeMathButton = (amount) => { const button = makeElement("a", ["mousehuntActionButton", "tiny", "gray", "mh-improved-shop-qty"]); makeElement("span", "", amount > 0 ? `+${amount}` : amount, button); button.addEventListener("click", () => { let current = Number.parseInt(input.value, 10); if (Number.isNaN(current)) { current = 0; } if (current + amount >= maxQty) { input.value = maxQty; } else if (current + amount <= 0) { input.value = 0; } else { input.value = current + amount; } }); buyControls.append(button); }; makeMathButton(1); makeMathButton(10); makeMathButton(50); makeMathButton(100); makeMathButton(1e3); const buyMaxButton = makeElement("a", ["mousehuntActionButton", "lightBlue", "tiny", "mh-improved-shop-buy-max"]); const buyMaxButtonText = makeElement("span", "", "Max"); buyMaxButton.append(buyMaxButtonText); let hasMaxed = false; buyMaxButton.addEventListener("click", () => { if (hasMaxed) { input.value = 0; buyMaxButtonText.innerText = "Max"; } else { input.value = maxQty; buyMaxButtonText.innerText = "Reset"; } hasMaxed = !hasMaxed; }); buyControls.append(buyMaxButton); const form = block.querySelector(".itemPurchaseView-action-form"); if (form) { form.append(buyControls); } else { block.append(buyControls); } }); } }); // src/modules/better-shops/qty-buttons.css var qty_buttons_default2; var init_qty_buttons2 = __esm({ "src/modules/better-shops/qty-buttons.css"() { qty_buttons_default2 = ".mh-improved-shop-buy-controls{position:absolute;top:25px;right:0;left:0;display:flex;flex:1 1 100%;flex-flow:row wrap;gap:5px;align-items:center;justify-content:flex-start;margin-top:7px;margin-left:10px}.itemPurchaseView-action-form.clear-block{position:relative;margin-bottom:40px}.mh-improved-shop-buy-max{min-width:25px}.mh-improved-shop-qty,.mh-improved-shop-buy-max{user-select:none}\n"; } }); // src/modules/better-shops/max-owned-hide.css var max_owned_hide_default; var init_max_owned_hide = __esm({ "src/modules/better-shops/max-owned-hide.css"() { max_owned_hide_default = ".mousehuntHud-page-subTabContent.hasShop.active .itemPurchaseView-container.own_max{display:none!important}\n"; } }); // src/modules/better-shops/styles/cost.css var cost_default; var init_cost = __esm({ "src/modules/better-shops/styles/cost.css"() { cost_default = ".itemPurchaseView-action-itemCost-table-row{display:grid;grid-template-columns:1fr 15fr 1fr;place-items:center stretch;width:97%;padding:2px;margin:0}.itemPurchaseView-action-goldGost{padding:5px 5px 5px 20px;font-size:1.3em;font-weight:400;text-align:left;background:#f9f9f9;border:1px solid #ccc;border-right:none;border-left:none}.mh-dark-mode .itemPurchaseView-content-container{border-color:#242424}.itemPurchaseView-image-container,.itemPurchaseView-content-container{background-color:#fff}.itemPurchaseView-action-quantity{flex-grow:1;width:auto;margin:0 5px 0 10px}.itemPurchaseView-action-quantity input{width:100%;padding:3px;margin:0}a.itemPurchaseView-action-form-button.buy,a.itemPurchaseView-action-form-button.sell{width:auto;height:21px;margin-top:0;font-weight:400;line-height:21px}a.itemPurchaseView-action-form-button.buy{height:21px;margin-left:7px;background:#f4e830}a.itemPurchaseView-action-form-button.sell{margin-left:7px;background:#b3edff}.itemPurchaseView-container.cannot_sell .itemPurchaseView-action-form-button.sell,.itemPurchaseView-container.cannot_buy .itemPurchaseView-action-form-button.buy{filter:grayscale(1) opacity(.75)}.itemPurchaseView-action-purchaseHelper{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;margin:0}.itemPurchaseView-container.no_gold_cost .itemPurchaseView-action-goldGost{display:block}.itemPurchaseView-content-name{display:flex;align-items:center;justify-content:space-between;margin-top:6px;margin-bottom:4px}.itemPurchaseView-action-purchaseHelper-owned{padding:4px;margin-right:10px;font-size:11px;white-space:nowrap;background-color:#eee;border:1px solid #ccc;border-radius:5px}.itemPurchaseView-action-purchaseHelper-error{height:auto}.itemPurchaseView-action-purchaseHelper-maxPurchasesLimitReached{margin-bottom:5px;font-size:11px}\n"; } }); // src/modules/better-shops/styles/general.css var general_default3; var init_general3 = __esm({ "src/modules/better-shops/styles/general.css"() { general_default3 = '.shopsPage-header-container,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-content-accordion,.itemPurchaseView-action-itemCost.required .itemPurchaseView-action-itemCost-table-cell.owned,.itemPurchaseView-container.flaming_spice_crafting_item.kingsCartItem,.itemPurchaseView-container.dragonshard_sparkling_nest_convertible.kingsCartItem,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-itemCost-description,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-itemCost-title{display:none!important}.itemPurchaseView-action-form.clear-block,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-form{display:flex;justify-content:center;margin:1em 0}.itemPurchaseView-container.own_max:hover,.itemPurchaseView-container.own_max:focus{opacity:1}.itemPurchaseView-container.own_max .itemPurchaseView-content-container .itemPurchaseView-content-description{overflow-y:auto}.itemPurchaseView-action-quantity span,.itemPurchaseView-action-purchaseHelper-maxPurchases-container,.itemPurchaseView-content-accordion,.itemPurchaseView-action-kingsCreditCostContainer,.itemPurchaseView-container.own_max .itemPurchaseView-action-purchaseHelper-maxPurchasesLimitReached,.shopCustomization .itemPurchaseView-container.own_max .itemPurchaseView-content-container .itemViewStatBlock,.shopCustomization .itemPurchaseView-container.own_max .itemViewStatBlock-stat.title,.shopCustomization .itemPurchaseView-container.own_max .itemViewStatBlock-stat.powerType,.itemPurchaseView-content-skin b,a.itemPurchaseView-image-trapPreview-link,.itemPurchaseView-action-itemCost-title,.itemPurchaseView-action-itemCost-description{display:none}.itemPurchaseView-content-skin{margin-top:-10px;margin-bottom:5px}.itemPurchaseView-content-description{padding-right:5px;padding-bottom:10px;margin-top:0;margin-bottom:0;overflow-y:auto;color:#626262}.itemPurchaseView-action-itemCost-table{width:250px;padding:0;margin-right:-10px;margin-left:-10px;background:#f9f9f9;border-right:none;border-left:none}.itemPurchaseView-action-itemCost-table-cell.cost{padding-left:11px;background-position:0 0;background-size:10px}.itemPurchaseView-action-itemCost-table-row.error{background-color:#ffadad8c}.mh-dark-mode .itemPurchaseView-action-itemCost-table-row.error{background-color:#802d2d8c}.mh-dark-mode .itemPurchaseView-action-itemCost-table-row.error .itemPurchaseView-action-itemCost-table-cell.cost{color:#f66060}.itemPurchaseView-container.own_max .itemPurchaseView-action-container{display:none}.itemPurchaseView-container{width:calc(100% - 1px)}.itemPurchaseView-action-container{padding:8px 0 0;border-right:1px solid #ccc}#overlayPopup .marketplaceView input.button:first-child{position:absolute;top:-3px!important;right:-10px!important;display:block;width:28px;height:27px;padding:0;overflow:hidden;text-align:center;text-indent:34px;background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/jsDialogCloseButton.png?asset_cache_version=2);background-repeat:no-repeat;border:none;border-bottom:0;border-left:0;box-shadow:none}#overlayPopup .marketplaceView input.button:first-child:hover,#overlayPopup .marketplaceView input.button:first-child:focus{background-color:transparent;background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/jsDialogCloseButton.png?asset_cache_version=2);background-repeat:no-repeat;background-position:0 -27px;border-bottom:none;border-left:none}a.itemPurchaseView-content-skin-link{display:flex;align-items:center;min-height:25px;padding-left:30px;line-height:unset;background-size:25px}#overlayPopup.marketplaceViewPopup .suffix{display:none}.shopCustomization .PageShops .itemViewStatBlock-padding{display:flex;align-items:center}.shopCustomization .PageShops .itemViewStatBlock,.shopCustomization .PageShops .itemViewStatBlock-stat{margin-top:10px;border:none}.shopCustomization .PageShops .itemViewStatBlock-stat{padding:2px 4px 2px 2px;margin-top:3px;margin-right:5px;border:1px solid #ccc;border-radius:5px}.shopCustomization .PageShops .itemViewStatBlock-stat-helper{right:unset;left:unset;white-space:nowrap}.shopCustomization .PageShops .itemViewStatBlock-stat-label{margin-right:0;background:none}.shopCustomization .PageShops .itemViewStatBlock-stat-value{max-width:unset;background:none;border-radius:0}.shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock-stat.cheeseEffect{width:auto;border-bottom:1px solid #ccc}.shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock-stat.cheeseEffect .itemViewStatBlock-stat-value{width:auto;max-width:150px}.item_set,.mh-dark-mode .item_set{background-color:#eeab2a45;border:none}.itemPurchaseView-container.kingsCartItem{cursor:initial}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-container{display:table-cell;width:250px;min-height:unset;color:#000;background:#eee;box-shadow:none}.mh-dark-mode .itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-container{color:#fff;background-color:#242424}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-state.view{padding-top:unset}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-itemCost.consumed,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-goldGost,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-marketplace,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-confirm-refund-container{display:block!important}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-goldGost{opacity:.4}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-quantity{display:block;width:auto}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-quantity input{width:100%;margin-top:0}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-content-details:after{display:none}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-confirm-button-row a,.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-complete-title{color:#3b5998}span.itemPurchaseView-action-confirm-refund.noRefund{position:relative;display:block;color:transparent}span.itemPurchaseView-action-confirm-refund.noRefund:after{position:absolute;top:10px;right:0;left:0;height:10px;color:#000;content:"Cannot be refunded."}.itemPurchaseView-container.has_refund_value .itemPurchaseView-action-confirm-refund.hasRefund{margin-top:20px}.itemPurchaseView-action-confirm-title{margin-bottom:10px;font-style:normal;font-weight:400}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-complete-title,.itemPurchaseView-container .itemPurchaseView-action-complete-title,.itemPurchaseView-action-complete-title,.itemPurchaseView-action-armed-title{margin:10px;font-weight:400;color:#000}.itemPurchaseView-container .itemPurchaseView-action-state.complete a.itemPurchaseView-action-complete-return{position:relative;display:block;float:none;margin:0;color:transparent}.itemPurchaseView-container .itemPurchaseView-action-state.complete a.itemPurchaseView-action-complete-return:after{position:absolute;top:10px;right:78px;left:78px;padding:10px 15px;line-height:10px;color:#000;text-shadow:0 0 1px #fff;content:"Continue";background-color:#fff600;border:1px solid #000;border-radius:5px;box-shadow:inset 0 0 5px #fff,1px 1px 1px #fff}.itemPurchaseView-container.marketplace_buy_regal_stool_collectible.kingsCartItem.cannot_sell.own_max,.itemPurchaseView-container.marketplace_sell_regal_display_case_collectible.kingsCartItem.cannot_sell.own_max,.itemPurchaseView-container.kings_calibrator_message_item.kingsCartItem.cannot_sell.own_max{display:none!important}.itemPurchaseView-action-itemCost-table-row.error .itemPurchaseView-action-itemCost-table-cell.cost{color:#a21010}.mh-dark-mode .itemPurchaseView-action-goldGost{background-color:#0e0e0e;border-color:#242424}.itemPurchaseView-content-details{display:flex;flex-direction:column;align-items:stretch;padding-bottom:10px}.itemPurchaseView-content-container .itemViewStatBlock.horizontal.base,.itemPurchaseView-content-container .itemViewStatBlock.horizontal.weapon{width:auto;margin-bottom:10px;margin-left:0}.shopCustomization .PageShops .itemPurchaseView-container .title .itemViewStatBlock-stat-value span a{max-width:60px;font-size:10px;text-overflow:ellipsis}.itemPurchaseView-image-container .itemViewStatBlock-stat.title.error{background-color:#ffc9c9}.itemPurchaseView-image-container .itemViewStatBlock-stat-icon{width:20px;height:17px}.itemViewStatBlock-stat.title .itemPurchaseView-image-container .itemViewStatBlock-stat-icon{background-size:100%}.itemViewStatBlock-stat.error .itemViewStatBlock-stat-value{background-color:unset}a.shopsPage-kingsCalibratorPromo{display:flex;align-items:center;justify-content:center;padding:0;font-size:12px}.shopsPage-kingsCalibratorPromo-button{top:unset}.shopsPage-kingsCalibratorPromo br{display:none}.shopsPage-compareEquipment-stats{width:auto}.shopsPage-compareEquipment-stats .itemViewStatBlock.horizontal.weapon{float:none;width:auto;margin-left:0}.shopsPage-compareEquipment-stats .itemPurchaseView-content-name{display:flex;gap:5px;justify-content:flex-start}.shopsPage-compareEquipment{background-color:#dbe9ff}.itemPurchaseView-container.own_max{display:block!important;height:25px;overflow:hidden;opacity:.3;transition:.4s}.hasShop .itemPurchaseView-container.donation .itemPurchaseView-content-container,.itemPurchaseView-container.own_max .itemPurchaseView-content-container{width:calc(100% - 10px)}.mh-dark-mode .itemPurchaseView-container.own_max{background-color:#000}.itemPurchaseView-container.own_max:hover{display:table!important;height:unset;overflow-y:visible}.itemPurchaseView-container.own_max:hover .itemPurchaseView-action-container{display:table-cell}.mh-dark-mode .itemPurchaseView-container.own_max .itemPurchaseView-content-container{border-color:transparent}.itemPurchaseView-container.own_max .itemPurchaseView-content-name b:after{font-size:10px;content:" (maximum owned)"}.mh-dark-mode .shopCustomization .itemPurchaseView-container .itemViewStatBlock-stat.cheeseEffect,.mh-dark-mode .shopCustomization .itemPurchaseView-container .itemViewStatBlock-stat{background-color:#3d3d3d;border-color:#606060}.shopCustomization .shopCustomization .itemViewStatBlock-stat.powerType{position:absolute;color:#000;background-color:#e6e6e6}.shopCustomization .itemViewStatBlock-stat.powerType .itemViewStatBlock-stat-value{display:none}.mh-dark-mode .itemPurchaseView-container .itemViewStatBlock-stat.title,.mh-dark-mode .itemPurchaseView-container .itemViewStatBlock-stat.powerType{background-color:#3d3d3d;border-color:#606060}.mh-dark-mode .itemPurchaseView-container .itemPurchaseView-image-container .itemViewStatBlock-stat.powerType{background-color:transparent;border:none}.itemPurchaseView-container.new .itemPurchaseView-margin:after{top:5px}.itemPurchaseView-action-marketplace b,.itemPurchaseView-action-marketplace br{display:none}.itemPurchaseView-action-marketplace a:last-of-type:after{content:" in the Marketplace"}.itemPurchaseView-action-marketplace{padding:5px 0}a.itemPurchaseView-action-buySuperBrie{display:inline-block;margin:0 auto}.super_brie_cheese .itemPurchaseView-action-purchaseHelper{display:block}.donation .itemPurchaseView-action-itemCost-table-row{display:flex;justify-content:center;font-size:15px}.itemPurchaseView-container.donation .itemPurchaseView-action-container,.itemPurchaseView-container.donation .itemPurchaseView-action-itemCost-table{border-top-color:#ffc62b;border-bottom-color:#c7991c}.mh-dark-mode .itemPurchaseView-container.donation .itemPurchaseView-action-container{background-color:#e6b963}.mh-dark-mode .itemPurchaseView-container.donation .itemPurchaseView-action-itemCost-table{background-color:#f4eeca}.itemPurchaseView-container:hover .itemPurchaseView-margin,.itemPurchaseView-container:hover .itemPurchaseView-image-container,.itemPurchaseView-container:hover .itemPurchaseView-content-container{background-color:#f9f9f9}.mh-dark-mode .itemPurchaseView-container:hover .itemPurchaseView-margin,.mh-dark-mode .itemPurchaseView-container:hover .itemPurchaseView-image-container,.mh-dark-mode .itemPurchaseView-container:hover .itemPurchaseView-content-container{background-color:#242424}.itemPurchaseView-container.trinket .itemViewStatBlock{margin-top:0;margin-bottom:10px}.itemViewStatBlock-stat-helper{padding:10px;font-size:10px;color:#fff;text-align:center;background:#000;border:none;border-radius:10px}.itemViewStatBlock-stat-helper-arrow:after{border-top:10px solid #000}.itemPurchaseView-container .itemPurchaseView-action-form{min-height:50px}.itemPurchaseView-action-confirm-button:focus,.itemPurchaseView-action-confirm-button:hover{filter:hue-rotate(50deg)}.shopsPageTrapPreview .trapImageView-layerWrapper{top:10px}.shopsPageTrapPreview .trapImageView{height:370px}.itemViewPopup .itemViewStatBlock-stat.title{order:1}.itemViewPopup .itemViewStatBlock-stat.powerType{order:2}.itemViewPopup .itemViewStatBlock-stat.points{order:3}.itemViewPopup .itemViewStatBlock-stat.power,.itemViewPopup .itemViewStatBlock-stat.luck,.itemViewPopup .itemViewStatBlock-stat.powerBonus,.itemViewPopup .itemViewStatBlock-stat.attraction{order:4}.itemViewPopup .itemViewStatBlock-stat.cheeseEffect{order:5}.itemViewPopup .itemView-thumbnailContainer a{display:flex;justify-content:center;padding-top:5px}.itemViewPopup .itemViewStatBlock-stat:last-child .itemViewStatBlock-stat-label{border-radius:0 0 0 5px}.itemViewPopup .itemViewStatBlock-stat.powerType .itemViewStatBlock-stat-icon:after{position:absolute;top:0;bottom:0;left:26px;display:flex;align-items:center;justify-content:center;width:115px;font-weight:900;content:""}.itemViewPopup .itemViewStatBlock-stat.powerType .itemViewStatBlock-stat-label{position:relative;width:26px}.itemViewPopup .itemViewStatBlock-stat-value{display:flex;align-items:center;justify-content:center}.itemPurchaseView-container.kingsCartItem .itemPurchaseView-content-details{height:auto}\n'; } }); // src/modules/better-shops/styles/order.css var order_default; var init_order = __esm({ "src/modules/better-shops/styles/order.css"() { order_default = ".itemViewStatBlock.trinket{order:3}.itemPurchaseView-content-container{display:flex;flex-direction:column}.itemPurchaseView-content-name{order:1}.itemPurchaseView-content-details{display:flex;order:4}.itemPurchaseView-content-description{order:2}\n"; } }); // src/modules/better-shops/styles/retired.css var retired_default; var init_retired = __esm({ "src/modules/better-shops/styles/retired.css"() { retired_default = ".kings_cart .hasShop .cannot_buy.super_dragonbane_trinket,.kings_cart .hasShop .cannot_buy.extrme_dragonbane_trinket,.kings_cart .hasShop .cannot_buy.wild_tonic_remote_pumping_trinket,.kings_cart .hasShop .cannot_buy.hot_spice_crafting_item,.kings_cart .hasShop .cannot_buy.flaming_spice_crafting_item,.kings_cart .hasShop .cannot_buy.dragonshard_sparkling_nest_convertible,.itemPurchaseView-container.eggstra_trinket.cannot_buy.no_gold_cost,.itemPurchaseView-container.eggstra_charge_trinket.cannot_buy.no_gold_cost{display:none!important}\n"; } }); // src/modules/better-shops/styles/riftstalker.css var riftstalker_default; var init_riftstalker = __esm({ "src/modules/better-shops/styles/riftstalker.css"() { riftstalker_default = 'ul.set_bonus_effects{display:inline-block;flex-wrap:nowrap}.item_set .set_bonus_effects li{display:inline;margin:0}.item_set .set_bonus_level{width:40%}.item_set{display:flex;flex-flow:row wrap;align-items:center}.item_set .set_bonus_effects li:after{content:", "}.item_set .set_bonus_effects li:last-of-type:after{content:""}.item_set>b{display:none}.item_set .set_name>img{right:30px;display:none}.item_set .set_name{margin:0;font-size:11px}.item_set .set_name:after{margin-right:5px;margin-left:10px;font-weight:400;content:" Requires: "}\n'; } }); // src/modules/better-shops/styles/stats.css var stats_default; var init_stats = __esm({ "src/modules/better-shops/styles/stats.css"() { stats_default = ".shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-padding{display:flex;flex-flow:row wrap;row-gap:5px;align-items:center;justify-content:flex-start}.shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock.horizontal .itemViewStatBlock-stat.title,.shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock.horizontal .itemViewStatBlock-stat.cheeseEffect{width:70px}.shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock-stat.title,.itemPurchaseView-container .itemViewStatBlock-stat.powerType{display:flex;align-items:center;justify-content:space-evenly;width:auto;line-height:14px;border:1px solid #ccc}.mh-dark-mode .shopCustomization .PageShops .itemPurchaseView-container .itemViewStatBlock-stat.title,.mh-dark-mode .itemPurchaseView-container .itemViewStatBlock-stat.powerType{border-color:#606060}.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat-label{display:inline-block;padding:0}.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat-value{display:inline-flex;align-items:center;justify-content:center;margin-right:3px}.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat{display:flex;align-items:center;justify-content:space-around;min-width:55px;padding:2px;margin:0 5px 0 0;background-color:#f9f9f9;border:1px solid #ccc;border-radius:5px}.mh-dark-mode.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat{background-color:#333;border-color:#606060}.mh-dark-mode.shopCustomization .PageShops .pageFrameView .itemViewStatBlock .itemViewStatBlock-stat-value{background-color:transparent}.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat-value span{display:inline-block;padding:0}.shopCustomization .PageShops .itemViewStatBlock.horizontal .itemViewStatBlock-stat.cheeseEffect .itemViewStatBlock-stat-value{font-size:9px}\n"; } }); // src/modules/better-shops/index.js var imported3, styles3, updateInputField, main9, init12, better_shops_default; var init_better_shops = __esm({ "src/modules/better-shops/index.js"() { init_utils2(); init_settings13(); init_qty_buttons(); init_qty_buttons2(); init_max_owned_hide(); init_cost(); init_general3(); init_order(); init_retired(); init_riftstalker(); init_stats(); imported3 = [cost_default, general_default3, order_default, retired_default, riftstalker_default, stats_default]; styles3 = imported3; updateInputField = () => __async(void 0, null, function* () { const purchaseBlocks = document.querySelectorAll(".itemPurchaseView-action-state.view"); if (!purchaseBlocks) { return; } purchaseBlocks.forEach((block) => { const qty = block.querySelector(".itemPurchaseView-action-maxPurchases"); if (!qty) { return; } let maxQty = qty.innerText; if (maxQty.includes("Inventory max")) { maxQty = 0; } const input = block.querySelector("input"); if (!input) { return; } input.setAttribute("placeholder", maxQty); const buyButton = block.querySelector(".itemPurchaseView-action-form-button.buy"); if (buyButton) { input.addEventListener("focus", () => { const enterEvt = input.addEventListener("keydown", (e) => { if ("Enter" === e.key) { buyButton.click(); setTimeout(() => { const confirmButton = document.querySelector(".itemPurchaseView-container.confirmPurchase .itemPurchaseView-action-confirm-button"); if (confirmButton) { confirmButton.focus(); } }, 200); } }); input.addEventListener("blur", () => { input.removeEventListener("keydown", enterEvt); }); }); } if (getSetting("better-shops.show-qty-buttons", true)) { qty_buttons_default(block, input, maxQty); } }); }); main9 = () => { const body = document.querySelector("body"); if (!body) { return; } if ("item" === getCurrentPage()) { body.classList.remove("shopCustomization"); return; } body.classList.add("shopCustomization"); const golds = document.querySelectorAll(".itemPurchaseView-action-goldGost"); if (golds) { golds.forEach((gold) => { gold.innerText = gold.innerText.replace("Cost:", ""); }); } const buyBtns = document.querySelectorAll(".itemPurchaseView-action-form-button.buy"); if (buyBtns) { buyBtns.forEach((btn) => { btn.classList.add("mousehuntActionButton"); btn.innerHTML = "<span>Buy</span>"; }); } const sellBtns = document.querySelectorAll(".itemPurchaseView-action-form-button.sell"); if (sellBtns) { sellBtns.forEach((btn) => { btn.classList.add("mousehuntActionButton"); btn.classList.add("lightBlue"); btn.innerHTML = "<span>Sell</span>"; }); } updateInputField(); const owned = document.querySelectorAll(".itemPurchaseView-action-purchaseHelper-owned"); if (owned) { owned.forEach((ownedItem) => { if (ownedItem.getAttribute("moved-to-title")) { return; } const container = ownedItem.parentNode.parentNode.parentNode.parentNode.parentNode; const nameEl = container.querySelector(".itemPurchaseView-content-name"); ownedItem.setAttribute("moved-to-title", "true"); nameEl.append(ownedItem); }); } const kingsCart = document.querySelectorAll(".itemPurchaseView-container.kingsCartItem"); if (kingsCart) { kingsCart.forEach((cart) => { cart.querySelector("input").value = ""; }); } const shopQty = document.querySelectorAll(".itemPurchaseView-action-quantity input"); if (!shopQty) { return; } shopQty.forEach((qty) => { qty.setAttribute("maxlength", "100"); }); const itemStats = document.querySelectorAll(".itemViewStatBlock"); if (itemStats) { itemStats.forEach((stat) => { if (stat.classList.contains("horizontal")) { return; } const contentSection = stat.parentNode.parentNode.querySelector(".itemPurchaseView-content-container"); if (contentSection) { contentSection.append(stat); } }); } const itemStatsTitle = document.querySelectorAll(".itemViewStatBlock.horizontal .itemViewStatBlock-stat"); if (itemStatsTitle) { itemStatsTitle.forEach((title) => { if (title.classList.contains("title") || title.classList.contains("powerType")) { const imageContainer = title.parentNode.parentNode.parentNode.parentNode.parentNode.querySelector(".itemPurchaseView-image-container"); if (imageContainer) { imageContainer.append(title); } } }); } }; init12 = () => __async(void 0, null, function* () { const stylesToAdd = [...styles3]; if (getSetting("better-shops.hide-max-owned", false)) { stylesToAdd.push(max_owned_hide_default); } if (getSetting("better-shops.show-qty-buttons", true)) { stylesToAdd.push(qty_buttons_default2); } addStyles(stylesToAdd, "better-shops"); onNavigation(main9, { page: "shops" }); onRequest("purchases/itempurchase.php", updateInputField); }); better_shops_default = { id: "better-shops", name: "Better Shops", type: "better", default: true, description: "Updates the Shop layout and appearance, minimizes owned items that have an inventory limit of 1, and more.", load: init12, settings: settings_default12 }; } }); // src/modules/better-travel/travel-utils.js var getTravelSetting, saveTravelSetting, travelTo2; var init_travel_utils = __esm({ "src/modules/better-travel/travel-utils.js"() { init_utils2(); getTravelSetting = (settingName, defaultValue) => { return getSetting(`better-travel.${settingName}`, defaultValue); }; saveTravelSetting = (settingName, value) => { saveSetting(`better-travel.${settingName}`, value); }; travelTo2 = (location) => { const header = document.querySelector(".mousehuntHeaderView"); if (header) { const existing = header.querySelector(".mh-improved-travel-message"); if (existing) { existing.remove(); } makeElement("div", ["mh-improved-travel-message", "travelPage-map-message"], "Traveling...", header); } app.pages.TravelPage.travel(location); }; } }); // src/modules/better-travel/reminders.js var addReminders, reminders_default; var init_reminders = __esm({ "src/modules/better-travel/reminders.js"() { init_utils2(); addReminders = () => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E; const reminderOpts = { title: "Travel Reminder", dismiss: 4e3 }; switch (getCurrentLocation()) { case "rift_valour": if ((_b = (_a = user.quests) == null ? void 0 : _a.QuestRiftValour) == null ? void 0 : _b.is_fuel_enabled) { reminderOpts.text = "Champion's Fire is active."; reminderOpts.image = "https://www.mousehuntgame.com/images/items/stats/transparent_thumb/6622efd1db7028b30f48b15771138720.png?cv=2"; reminderOpts.button = "Deactivate"; reminderOpts.action = () => { const button = document.querySelector(".valourRiftHUD-fuelContainer-armButton"); if (button) { button.click(); } }; } break; case "queso_river": case "queso_plains": case "queso_quarry": case "queso_geyser": if (((_d = (_c = user.quests) == null ? void 0 : _c.QuestQuesoCanyon) == null ? void 0 : _d.is_wild_tonic_active) || ((_f = (_e = user.quests) == null ? void 0 : _e.QuestQuesoGeyser) == null ? void 0 : _f.is_wild_tonic_enabled)) { reminderOpts.text = "Wild Tonic is active."; reminderOpts.image = "https://www.mousehuntgame.com/images/items/stats/transparent_thumb/b6b9f97a1ee3692fdff0b5a206adf7e1.png?cv=2"; reminderOpts.button = "Deactivate"; reminderOpts.action = () => { const button = document.querySelector(".quesoHUD-wildTonic-button"); if (button) { button.click(); } }; } break; case "floating_islands": if ("launch_pad_island" === ((_i = (_h = (_g = user.quests) == null ? void 0 : _g.QuestFloatingIslands) == null ? void 0 : _h.hunting_site_atts) == null ? void 0 : _i.island_power_type)) { break; } if (!((_l = (_k = (_j = user.quests) == null ? void 0 : _j.QuestFloatingIslands) == null ? void 0 : _k.hunting_site_atts) == null ? void 0 : _l.is_fuel_enabled) && // BW not active. !(((_o = (_n = (_m = user.quests) == null ? void 0 : _m.QuestFloatingIslands) == null ? void 0 : _n.hunting_site_atts) == null ? void 0 : _o.is_vault_island) && // is SP. ((_s = (_r = (_q = (_p = user.quests) == null ? void 0 : _p.QuestFloatingIslands) == null ? void 0 : _q.hunting_site_atts) == null ? void 0 : _r.island_mod_panels[2]) == null ? void 0 : _s.is_complete))) { reminderOpts.text = "Bottled Wind is <strong>not</strong> active."; reminderOpts.image = "https://www.mousehuntgame.com/images/ui/hud/floating_islands/items/bottled_wind_stat_item.png?asset_cache_version=2"; reminderOpts.button = "Activate"; reminderOpts.action = () => { const button = document.querySelector(".floatingIslandsHUD-fuel-button"); if (button) { button.click(); } }; } break; case "foreword_farm": case "prologue_pond": case "table_of_contents": if (((_u = (_t = user.quests) == null ? void 0 : _t.QuestProloguePond) == null ? void 0 : _u.is_fuel_enabled) || ((_w = (_v = user.quests) == null ? void 0 : _v.QuestForewordFarm) == null ? void 0 : _w.is_fuel_enabled) || ((_y = (_x = user.quests) == null ? void 0 : _x.QuestTableOfContents) == null ? void 0 : _y.is_fuel_enabled)) { reminderOpts.text = "Condensed Creativity is active."; reminderOpts.button = "Deactivate"; } else { reminderOpts.text = "Condensed Creativity is <strong>not</strong> active."; reminderOpts.button = "Activate"; } reminderOpts.image = "https://www.mousehuntgame.com/images/items/stats/transparent_thumb/4f5d55c1eff77474c7363f0e52d03e49.png?cv=2"; reminderOpts.action = hg.views.HeadsUpDisplayFolkloreForestRegionView.toggleFuel; break; case "winter_hunt_grove": case "winter_hunt_workshop": case "winter_hunt_fortress": if (((_A = (_z = user.quests) == null ? void 0 : _z.QuestCinnamonTreeGrove) == null ? void 0 : _A.is_fuel_enabled) || ((_C = (_B = user.quests) == null ? void 0 : _B.QuestGolemWorkshop) == null ? void 0 : _C.is_fuel_enabled) || ((_E = (_D = user.quests) == null ? void 0 : _D.QuestIceFortress) == null ? void 0 : _E.is_fuel_enabled)) { reminderOpts.text = "Festive Spirit is active."; reminderOpts.button = "Deactivate"; } else if ("winter_hunt_forest" === getCurrentLocation()) { reminderOpts.text = "Festive Spirit is <strong>not</strong> active."; reminderOpts.button = "Activate"; } reminderOpts.image = "https://www.mousehuntgame.com/images/items/stats/large/cda292833fce3b65b7a6a38c000e8620.png?cv=2"; reminderOpts.action = () => { const toggle = document.querySelector(".headsUpDisplayWinterHuntRegionView__fuelButton"); if (toggle) { toggle.click(); } }; } if (reminderOpts.text) { showHornMessage(reminderOpts); } }; reminders_default = addReminders; } }); // src/modules/better-travel/travel-menu.css var travel_menu_default; var init_travel_menu = __esm({ "src/modules/better-travel/travel-menu.css"() { travel_menu_default = ".mh-improved-travel-window.greatWinterHuntGolemDestinationView{padding:10px 0}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__content{align-items:flex-start;margin-right:5px;background-color:transparent}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environmentsScroller{height:auto;min-height:425px;max-height:650px;padding:0 0 10px 5px;margin-right:-5px}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__regionEnvironments{gap:15px 6px;justify-content:space-evenly}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__regionsContainer{display:none}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__regionName{margin:10px 0;font-size:16px;text-align:center;border:none}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment{width:150px;overflow:hidden;border:1px solid #b4a481;box-shadow:0 2px 2px #7e7e7e}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__regionGroup{margin:0}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environmentName{position:absolute;right:0;left:0;z-index:2;height:20px;background-color:#ffffffe5;border-radius:0;transition:all .2s ease-in-out}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environmentName span{padding:5px;text-align:center}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environmentImage{border-radius:0;transition:all .2s ease-in-out}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment:hover .greatWinterHuntGolemDestinationView__environmentImage,.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment:focus .greatWinterHuntGolemDestinationView__environmentImage{background-position-y:30%}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment:hover .greatWinterHuntGolemDestinationView__environmentName,.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment:focus .greatWinterHuntGolemDestinationView__environmentName{background-color:#fff}.mh-improved-travel-window .greatWinterHuntGolemDestinationView__environment[data-environment-type=train_station] .greatWinterHuntGolemDestinationView__environmentName span{font-size:10px}.mh-improved-travel-window-footer{position:absolute;bottom:20px;display:flex;gap:10px;align-items:center;width:330px}.mh-improved-travel-window-edit{padding:0 15px;font-weight:400;line-height:24px}.mh-improved-travel-window--editing{border-radius:5px;outline:3px solid #f37c7c}.mh-improved-travel-window-description,.mh-improved-travel-window-hidden{display:none}.mh-improved-travel-window--editing .mh-improved-travel-window-hidden{display:block;filter:grayscale(1);opacity:.4}.mh-improved-travel-window--editing .mh-improved-travel-window-description{display:inline-block}.mh-improved-travel-window-environment-icon{cursor:pointer}\n"; } }); // src/modules/better-travel/travel-window.js var getHiddenLocations, toggleLocation, hideLocation, unhideLocation, isLocationHidden, openTravelWindow, isEditing, environments2, makeMenuItem2, addEnvironmentIconListener, travel_window_default; var init_travel_window = __esm({ "src/modules/better-travel/travel-window.js"() { init_utils2(); init_travel_utils(); init_travel_menu(); getHiddenLocations = () => { return getTravelSetting("travel-window-hidden-locations", []); }; toggleLocation = (location) => { if (isLocationHidden(location)) { unhideLocation(location); } else { hideLocation(location); } }; hideLocation = (location) => { const hiddenLocations = getHiddenLocations(); if (hiddenLocations.includes(location)) { return; } hiddenLocations.push(location); saveTravelSetting("travel-window-hidden-locations", hiddenLocations); }; unhideLocation = (location) => { const hiddenLocations = getHiddenLocations(); if (!hiddenLocations.includes(location)) { return; } hiddenLocations.splice(hiddenLocations.indexOf(location), 1); saveTravelSetting("travel-window-hidden-locations", hiddenLocations); }; isLocationHidden = (location) => { const hiddenLocations = getHiddenLocations(); return hiddenLocations.includes(location); }; openTravelWindow = () => __async(void 0, null, function* () { debug("Opening travel window"); const regions2 = [ { type: "gnawnia", name: "Gnawnia" }, { type: "valour", name: "Valour" }, { type: "whisker_woods", name: "Whisker Woods" }, { type: "burroughs", name: "Burroughs" }, { type: "furoma", name: "Furoma" }, { type: "bristle_woods", name: "Bristle Woods" }, { type: "tribal_isles", name: "Tribal Isles" }, { type: "varmint_valley", name: "Varmint Valley" }, { type: "desert", name: "Sandtail Desert" }, { type: "rodentia", name: "Rodentia" }, { type: "queso_canyon", name: "Queso Canyon" }, { type: "zokor_zone", name: "Hollow Heights" }, { type: "folklore_forest", name: "Folklore Forest" }, { type: "riftopia", name: "Rift Plane" } ]; environments2 = yield getData("environments"); const eventEnvironments = yield getData("environments-events"); environments2 = [...environments2, ...eventEnvironments]; const currentEnvironment = environments2.find((e) => e.id === getCurrentLocation()); const locationsToRemove = ["forbidden_grove"]; environments2 = environments2.map((env) => { if (!isUserTitleAtLeast(env.title)) { locationsToRemove.push(env.id); } return env; }); environments2 = environments2.filter((env) => !locationsToRemove.includes(env.id)); let content = '<div class="mh-improved-travel-window greatWinterHuntGolemDestinationView"><div class="greatWinterHuntGolemDestinationView__content">'; content += '<div class="greatWinterHuntGolemDestinationView__regionsContainer">'; for (const region of regions2) { let buttonClass = "greatWinterHuntGolemDestinationView__regionButton"; if ((currentEnvironment == null ? void 0 : currentEnvironment.region) === (region == null ? void 0 : region.type)) { buttonClass += " greatWinterHuntGolemDestinationView__regionButton--active"; } content += `<button class="${buttonClass}" data-region-type="${region.type}">${region.name}</button>`; } content += "</div>"; const hasTitles = false; content += '<div class="greatWinterHuntGolemDestinationView__environmentsContainer"><div class="greatWinterHuntGolemDestinationView__environmentsScroller"><div class="greatWinterHuntGolemDestinationView__regionList">'; if (!hasTitles) { content += `<div class="greatWinterHuntGolemDestinationView__regionGroup" data-region-type="all"> <div class="greatWinterHuntGolemDestinationView__regionEnvironments">`; } for (const region of regions2) { if (hasTitles) { content += `<div class="greatWinterHuntGolemDestinationView__regionGroup" data-region-type="${region.type}"> <div class="greatWinterHuntGolemDestinationView__regionName">${region.name}</div> <div class="greatWinterHuntGolemDestinationView__regionEnvironments">`; } const regionEnvironments = environments2.filter((e) => e.region === region.type); regionEnvironments.forEach((environment) => { let envButtonClass = "greatWinterHuntGolemDestinationView__environment"; if (currentEnvironment.id === environment.id) { envButtonClass += " greatWinterHuntGolemDestinationView__environment--active"; } if (isLocationHidden(environment.id)) { envButtonClass += " mh-improved-travel-window-hidden"; } content += `<button class="${envButtonClass}" data-environment-type="${environment.id}"> <div class="greatWinterHuntGolemDestinationView__environmentName"> <span>${environment.name}</span> </div> <div class="greatWinterHuntGolemDestinationView__environmentImage" style="background-image:url(${environment.headerImage});" data-environment-type="${environment.id}"></div> </button>`; }); if (hasTitles) { content += "</div></div>"; } } if (!hasTitles) { content += "</div></div>"; } content += "</div></div></div>"; content += "</div>"; content += `<div class="mh-improved-travel-window-footer"> <div class="mh-improved-travel-window-edit mousehuntActionButton"><span>Edit</span></div> <div class="mh-improved-travel-window-description">Click on a location to toggle the visibility.</div> </div>`; content += "</div>"; const popup = createPopup({ id: "mh-improved-travel-window", title: "", content, className: "mh-improved-travel-window-popup jsDialogFixed", show: false }); popup.setOffsetHeight(0); popup.setPersistentOffsetHeight(0); popup.setIsModal(false); popup.show(); const travelWindow = document.querySelector(".mh-improved-travel-window"); if (!travelWindow) { return; } const editButton = document.querySelector(".mh-improved-travel-window-edit"); if (!editButton) { return; } const editButtonSpan = editButton.querySelector("span"); if (!editButtonSpan) { return; } const environmentButtons = document.querySelectorAll(".greatWinterHuntGolemDestinationView__environment"); if (!environmentButtons) { return; } editButton.addEventListener("click", () => { isEditing = !isEditing; if (isEditing) { travelWindow.classList.add("mh-improved-travel-window--editing"); editButtonSpan.textContent = "Save"; editButton.classList.add("active"); } else { travelWindow.classList.remove("mh-improved-travel-window--editing"); editButtonSpan.textContent = "Edit"; editButton.classList.remove("active"); } }); environmentButtons.forEach((button) => { const environmentType2 = button.getAttribute("data-environment-type"); button.addEventListener("click", () => { if (isEditing) { toggleLocation(environmentType2); button.classList.toggle("mh-improved-travel-window-hidden"); } else { debug(`Traveling to ${environmentType2}`); travelTo2(environmentType2); setPage("Camp"); popup.hide(); } }); }); onDialogHide(() => { isEditing = false; }); }); isEditing = false; environments2 = []; makeMenuItem2 = () => { addSubmenuItem({ id: "mh-improved-travel-window", menu: "travel", label: "Travel Window", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/special.png?asset_cache_version=2", callback: () => { openTravelWindow(); } }); }; addEnvironmentIconListener = () => { const environmentIcon = document.querySelector(".mousehuntHud-environmentIcon"); if (!environmentIcon) { return; } environmentIcon.classList.add("mh-improved-travel-window-environment-icon"); environmentIcon.title = "Open Travel Window"; environmentIcon.addEventListener("click", () => { openTravelWindow(); }); }; travel_window_default = () => __async(void 0, null, function* () { addStyles(travel_menu_default, "better-travel-travel-window"); makeMenuItem2(); if (getSetting("better-travel.travel-window-environment-icon", true)) { addEnvironmentIconListener(); } onEvent("mh-improved-open-travel-window", openTravelWindow); environments2 = yield getData("environments"); }); } }); // src/modules/better-travel/settings/index.js var settings_default13; var init_settings14 = __esm({ "src/modules/better-travel/settings/index.js"() { settings_default13 = () => __async(void 0, null, function* () { return [ { id: "better-travel.default-to-simple-travel", title: "Show Simple Travel tab by default", default: false, description: "" }, { id: "better-travel.show-alphabetized-list", title: "Show alphabetized list on Simple Travel", default: false, description: "" }, { id: "better-travel.show-reminders", title: "Show Travel Reminders", default: true, description: "" }, { id: "better-travel.travel-window", title: "Travel Window", default: true, description: "" }, { id: "better-travel.travel-window-environment-icon", title: "Environment icon opens Travel Window", default: true, description: "" } ]; }); } }); // src/modules/better-travel/styles.css var styles_default18; var init_styles19 = __esm({ "src/modules/better-travel/styles.css"() { styles_default18 = '.travelPage-map-spacer,.travelPage-map-simpleToggle,.mousehuntHud-page-tabContent.map.full .travelPage-map-simpleToggle.full,.mousehuntHud-page-tabContent.map.full .travelPage-map-prefix.full{display:none}.travelPage-regionMenu{width:22%;overflow:scroll}.travelPage-map-environment-detailContainer{left:22%;width:78%}.travelPage-regionMenu-environmentLink.active{color:#000;background:#a4cafc}.travelPage-regionMenu-stats{color:#4d4d4d;background-color:#d8d8d8}.travelPage-regionMenu-numFriends{padding:0;background:none}.travelPage-mapContainer.full{height:auto;min-height:800px;max-height:900px;border:none}.travelPage-map-imageContainer{width:78%}.travelPage-map-zoomContainer{bottom:300px;transform:scale(1.5)}.travelPage-map-image-environment-name{top:70px;z-index:15;font-size:22px;font-variant:none;text-shadow:1px 1px #000,0 0 10px #000,8px 12px 9px #000}.travelPage-map-image-environment.locked .travelPage-map-image-environment-status{z-index:1;opacity:.5}.travelPage-map-image-environment-star{z-index:10}.travelPage-map-image-environment-button{top:100px;transform:scale(1.2)}.travelPage-regionMenu-environmentLink.mystery{display:inline-block;color:#9e9e9e;pointer-events:none}.travelPage-regionMenu-item[data-region=riftopia],.travelPage-regionMenu-item[data-region=riftopia] .travelPage-regionMenu-item-contents{display:block!important}.travelPage-regionMenu-regionLink:hover,.travelPage-regionMenu-regionLink:focus{cursor:unset}#mh-simple-travel-page .travelPage-map-prefix{display:block}#mh-simple-travel-page .travelPage-regionMenu{display:grid;grid-template-columns:repeat(5,1fr);width:100%;margin-bottom:10px;overflow:visible;background-color:transparent}#mh-simple-travel-page .travelPage-regionMenu-item{box-sizing:border-box;margin:1px;background-color:#e2e2e2;border:1px solid #4c71b4}#mh-simple-travel-page .travelPage-regionMenu-item[data-region=gnawnia],#mh-simple-travel-page .travelPage-regionMenu-item[data-region=valour],#mh-simple-travel-page .travelPage-regionMenu-item[data-region=whisker_woods],#mh-simple-travel-page .travelPage-regionMenu-item[data-region=burroughs],#mh-simple-travel-page .travelPage-regionMenu-item[data-region=furoma]{min-height:215px}#mh-simple-travel-page .travelPage-regionMenu-item[data-region=riftopia]{min-height:250px}#mh-simple-travel-page .travelPage-regionMenu-environments{width:145px;padding-left:2px;box-shadow:none}#mh-simple-travel-page .travelPage-regionMenu-item-contents{overflow:visible!important}#mh-simple-travel-page .travelPage-regionMenu-environmentLink.active{color:#4e6081}#mh-simple-travel-page .travelPage-regionMenu-environmentLink:hover,#mh-simple-travel-page .travelPage-regionMenu-environmentLink:focus{color:#fff;background-color:#6383bf}.huntersHornView__messageContent strong{font-weight:900}#mh-simple-travel-page .travelPage-alpha-wrapper .travelPage-regionMenu{display:block;width:100%}#mh-simple-travel-page .travelPage-alpha-wrapper .travelPage-regionMenu-environments{display:flex;flex-flow:column wrap;align-items:stretch;justify-content:flex-start;width:754px;height:425px;padding:4px 1px}#mh-simple-travel-page .travelPage-alpha-wrapper a.travelPage-regionMenu-environmentLink{width:112px;margin-left:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mhui-region-travel-item .icon{border-radius:5px}.mousehuntHud-menu ul li ul li.mhui-region-travel-item a .icon{top:6px;left:3px;width:22px;height:22px}#mh-simple-travel-page .travelPage-regionMenu .travelPage-regionMenu-environmentLink.active.highlight{margin-right:-3px;border-right:1px solid #4c71b4}#mh-simple-travel-page .travelPage-alpha-wrapper .travelPage-regionMenu-environmentLink.active.highlight{margin-right:0;border-right:none;border-radius:3px}.travelPage-regionMenu-environmentLink.relic-hunter-is-here:after{position:absolute;top:5px;right:5px;display:none;width:20px;height:20px;content:"";background-image:url(https://www.mousehuntgame.com/images/mice/thumb/d6980f1b00ff8ec688804706cba9370c.gif?cv=2);background-repeat:no-repeat;background-size:contain;border-radius:5px}.travelPage-regionMenu-environments:hover .travelPage-regionMenu-environmentLink.relic-hunter-is-here:after,.travelPage-regionMenu-environments:focus .travelPage-regionMenu-environmentLink.relic-hunter-is-here:after,.travelPage-regionMenu-environmentLink.relic-hunter-is-here:hover:after,.travelPage-regionMenu-environmentLink.relic-hunter-is-here:focus:after{display:block}.travelPage-regionMenu-environmentLink.relic-hunter-is-here{background-color:#e0f2d5}.mousehuntHud-page-tabContent.simple-travel .travelPage-regionMenu-environmentLink.relic-hunter-is-here{margin:0;border:none;border-radius:6px;outline:1px solid #ccc}.travelPage-alpha-wrapper .relic-hunter-is-here .travelPage-regionMenu-environmentLink-image{margin-left:0}.travelPage-map-image-environment .map-relic-hunter-is-here-image{position:absolute;top:5px;left:5px;width:60px;height:60px;overflow:hidden;background:url(https://www.mousehuntgame.com/images/mice/thumb/d6980f1b00ff8ec688804706cba9370c.gif?cv=2);filter:hue-rotate(-326deg);background-repeat:no-repeat;background-size:contain;border-radius:50%;transform:rotate(-70deg)}.map-relic-hunter-is-here.travelPage-map-image-environment-pointer{top:41px;left:86px;z-index:9;filter:hue-rotate(326deg);transform:rotate(70deg)}#mh-simple-travel-page .first-letter:first-letter{font-size:12px;font-weight:900}#mh-simple-travel-page .travelPage-alpha-wrapper:hover .first-letter:first-letter{border-bottom:1px solid #4e6081}#mh-simple-travel-page .travelPage-regionMenu .travelPage-regionMenu-environmentLink.active.highlight.event-location,#mh-simple-travel-page .travelPage-regionMenu .travelPage-regionMenu-environmentLink.event-location{color:#c01dff}#mh-simple-travel-page .travelPage-regionMenu .travelPage-regionMenu-environmentLink.active.highlight.event-location:after,#mh-simple-travel-page .travelPage-regionMenu .travelPage-regionMenu-environmentLink.event-location:after{position:absolute;top:1px;left:4px;width:15px;height:15px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/camp/trap/star_favorite.png?asset_cache_version=2);filter:drop-shadow(0 0 1px #fff);background-repeat:no-repeat;background-size:contain}.travelPage-map-environment-detail-title .custom-favorite-button{margin-top:-1px;margin-left:10px}.mousehuntHud-menu ul li ul li.mh-improved-better-travel-favorites-divider{height:1px;pointer-events:none;background-color:#6c3d0e7f}.mh-improved-better-travel-favorite-location:after{position:absolute;top:6px;right:4px;bottom:0;display:block;width:20px;height:20px;content:"";background:url(https://www.mousehuntgame.com/images/ui/map/star_gold_320.png?asset_cache_version=2);background-size:contain;opacity:.3}.mh-improved-better-travel-favorite-location:hover:after,.mh-improved-better-travel-favorite-location:focus:after{opacity:.1}.mh-improved-better-travel-menu-item .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mousehuntHud-environmentName{padding-top:0;margin-top:29px}.mh-improved-better-travel-region-location .icon{border:1px solid #9f9171;border-radius:3px}.mh-improved-travel-message.travelPage-map-message.active{top:46px;box-shadow:0 3px 6px -3px #333}.mh-improved-travel-message.travelPage-map-message .mousehuntActionButton{padding:3px 10px;font-size:11px}\n'; } }); // src/modules/better-travel/travel-menu-hiding.css var travel_menu_hiding_default; var init_travel_menu_hiding = __esm({ "src/modules/better-travel/travel-menu-hiding.css"() { travel_menu_hiding_default = "ul.fast-travel-list>li:not(.custom-submenu-item){display:none}\n"; } }); // src/modules/better-travel/index.js var expandTravelRegions, travelClickHandler, cloneRegionMenu, addTab, addPage, addAlphabetizedList, addSimpleTravelPage, addSimpleTravel, getPreviousLocation, goToPreviousLocation, addToTravelDropdown, onTravelComplete, initSimpleTab, maybeSetTab, addRhToSimpleTravel, addRhToMap, maybeDoMapView, _tabHandler, listenTabChange, saveTravelLocation, getLocationFavorites, isLocationFavorite, saveLocationFavorites, addToLocationFavorites, removeFromLocationFavorites, addFavoriteButtonsToTravelPage, main10, environments3, init13, better_travel_default; var init_better_travel = __esm({ "src/modules/better-travel/index.js"() { init_utils2(); init_travel_utils(); init_reminders(); init_travel_window(); init_settings14(); init_styles19(); init_travel_menu_hiding(); expandTravelRegions = () => { var _a, _b; if ("travel" !== getCurrentPage()) { return; } const hud8 = document.querySelector("#mousehuntHud"); if (hud8) { const hudHeight = hud8.offsetHeight + 30; const map = document.querySelector(".travelPage-mapContainer.full"); if (map) { map.style.height = `calc(100vh - ${hudHeight}px)`; } } const regionHeaders = document.querySelectorAll(".travelPage-regionMenu-regionLink"); if (regionHeaders) { regionHeaders.forEach((regionHeader) => { regionHeader.setAttribute("onclick", "return false;"); }); } const travelAreas = document.querySelectorAll(".travelPage-regionMenu-item"); if (travelAreas && travelAreas.length > 0) { travelAreas.forEach((area) => { area.classList.add("active"); area.classList.remove("contracted"); }); } const locations = document.querySelectorAll(".travelPage-map-image-environment.active"); if (locations && locations.length > 0) { locations.forEach((location) => { location.addEventListener("mouseover", () => { location.classList.add("highlight"); }); location.addEventListener("mouseout", () => { setTimeout(() => { location.classList.remove("highlight"); }, 1e3); }); }); } if ((_b = (_a = app == null ? void 0 : app.pages) == null ? void 0 : _a.TravelPage) == null ? void 0 : _b.zoomOut) { setTimeout(() => { app.pages.TravelPage.zoomOut(); }, 500); } }; travelClickHandler = (event) => { var _a, _b; if ((_b = (_a = app == null ? void 0 : app.pages) == null ? void 0 : _a.TravelPage) == null ? void 0 : _b.travel) { travelTo2(event.target.getAttribute("data-environment")); setPage("Camp"); } }; cloneRegionMenu = () => { const regionMenu = document.querySelector(".travelPage-regionMenu"); if (!regionMenu) { return; } const regionMenuClone = regionMenu.cloneNode(true); const travelLinks = regionMenuClone.querySelectorAll(".travelPage-regionMenu-environmentLink"); if (travelLinks && travelLinks.length > 0) { travelLinks.forEach((link) => { link.setAttribute("onclick", "return false;"); link.addEventListener("click", travelClickHandler); }); } return regionMenuClone; }; addTab = (id, label) => { if ("travel" !== getCurrentPage()) { return; } const exists = document.querySelector(`#mh-${id}-tab`); if (exists) { return; } const tabContainer = document.querySelector(".mousehuntHud-page-tabHeader-container"); if (!tabContainer) { return; } const tab = makeElement("a", "mousehuntHud-page-tabHeader"); tab.id = `mh-${id}-tab`; tab.setAttribute("data-tab", id); tab.setAttribute("onclick", "hg.utils.PageUtil.onclickPageTabHandler(this); return false;"); makeElement("span", "", label, tab); tabContainer.append(tab); }; addPage = (id, content) => { if ("travel" !== getCurrentPage()) { return; } const exists = document.querySelector(`#mh-${id}-page`); if (exists) { return; } const pageContainer = document.querySelector(".mousehuntHud-page-tabContentContainer"); if (!pageContainer) { return; } const page = makeElement("div", ["mousehuntHud-page-tabContent", id]); page.id = `mh-${id}-page`; page.setAttribute("data-tab", id); if (content) { page.append(content); } else { const blank = makeElement("div"); page.append(blank); } pageContainer.append(page); }; addAlphabetizedList = (regionMenu) => { const alphaWrapper = makeElement("div", "travelPage-alpha-wrapper"); const alphaContent = makeElement("div", "travelPage-regionMenu"); const alphaHeader = makeElement("div", ["travelPage-regionMenu-item", "active"]); const alphaList = makeElement("div", "travelPage-regionMenu-item-contents"); const alphaListContent = makeElement("div", "travelPage-regionMenu-environments"); const links = regionMenu.querySelectorAll(".travelPage-regionMenu-environmentLink"); const sortedLinks = [...links].sort((a, b) => { const aName = a.innerText; const bName = b.innerText; if (aName < bName) { return -1; } if (aName > bName) { return 1; } return 0; }); let lastLetter = ""; sortedLinks.forEach((link) => { const linkClone = link.cloneNode(true); alphaListContent.append(linkClone); linkClone.addEventListener("click", travelClickHandler); const firstLetter = linkClone.innerText.charAt(0).toLowerCase(); if (firstLetter !== lastLetter) { linkClone.classList.add("first-letter"); } lastLetter = firstLetter; const environment = environments3.find((env) => { return env.id === link.getAttribute("data-environment"); }); if (!environment) { linkClone.classList.add("event-location"); } }); alphaList.append(alphaListContent); alphaHeader.append(alphaList); alphaContent.append(alphaHeader); alphaWrapper.append(alphaContent); return alphaWrapper; }; addSimpleTravelPage = () => { expandTravelRegions(); const wrapper = makeElement("div", "travelPage-wrapper"); if ("not-set" === getSetting("better-travel.default-to-simple-travel", "not-set")) { const settingTip = makeElement("div", ["travelPage-map-prefix", "simple-travel-tip"], 'You can set this as the default travel tab in the <a href="https://www.mousehuntgame.com/preferences.php?tab=mousehunt-improved-settings">MouseHunt Improved settings</a>.'); wrapper.append(settingTip); } const regionMenu = cloneRegionMenu(); if (getSetting("better-travel.show-alphabetized-list", false)) { wrapper.append(addAlphabetizedList(regionMenu)); } wrapper.append(regionMenu); addPage("simple-travel", wrapper); }; addSimpleTravel = () => { if ("travel" !== getCurrentPage()) { return; } addTab("simple-travel", "Simple Travel"); addSimpleTravelPage(); }; getPreviousLocation = () => { const previousLocation = getSetting("better-travel.previous-location", false); if (previousLocation && previousLocation !== getCurrentLocation()) { return environments3.find((environment) => { return environment.id === previousLocation; }); } return false; }; goToPreviousLocation = () => { const previousLocation = getPreviousLocation(); if (previousLocation) { travelTo2(previousLocation.id); } }; addToTravelDropdown = () => __async(void 0, null, function* () { const currentLocation = getCurrentLocation(); const eventEnvironments = yield getData("environments-events"); environments3.push(...eventEnvironments); let currentRegion = environments3.find((environment) => { return environment.id === currentLocation; }); if (!currentRegion) { currentRegion = eventEnvironments.find((environment) => { return environment.id === currentLocation; }); if (!currentRegion) { return; } } const otherRegions = environments3.filter((environment) => { if (!(environment == null ? void 0 : environment.region) || !(currentRegion == null ? void 0 : currentRegion.region)) { return false; } return environment.region === currentRegion.region; }); otherRegions.splice(otherRegions.findIndex((environment) => { return environment.id === currentLocation; }), 1); const existingCustomSubmenuItems = document.querySelectorAll(".mh-improved-better-travel-menu-item"); if (existingCustomSubmenuItems) { existingCustomSubmenuItems.forEach((item) => { item.remove(); }); } const previousLocation = getPreviousLocation(); if (previousLocation) { addSubmenuItem({ menu: "travel", label: `Back to ${previousLocation.name}`, icon: "https://www.mousehuntgame.com/images/ui/puzzle/refresh.png", callback: goToPreviousLocation, class: "mh-improved-better-travel-menu-item mh-improved-better-travel-previous-location" }); } otherRegions.forEach((region) => { if (region.id === currentLocation) { return; } addSubmenuItem({ menu: "travel", label: region.name, icon: region.image, callback: () => { travelTo2(region.id); }, class: "mh-improved-better-travel-menu-item mh-improved-better-travel-region-location" }); }); const favorites = getLocationFavorites(); if (favorites && favorites.length > 0) { addSubmenuDivider("travel", "mh-improved-better-travel-favorites-divider"); favorites.forEach((favorite) => { const favoriteRegion = environments3.find((environment) => { return environment.id === favorite; }); if (favoriteRegion) { addSubmenuItem({ menu: "travel", label: favoriteRegion.name, icon: favoriteRegion.image, callback: () => { travelTo2(favoriteRegion.id); }, class: "mh-improved-better-travel-menu-item mh-improved-better-travel-favorite-location" }); } }); } }); onTravelComplete = () => { onEvent("travel_complete", () => { saveTravelLocation(); setTimeout(() => { if (getSetting("better-travel.show-reminders", true)) { reminders_default(); } addToTravelDropdown(); }, 250); }); }; initSimpleTab = () => { if ("simple-travel" === getCurrentTab()) { const isActive = document.querySelector(".mousehuntHud-page-tabContent.simple-travel"); if (!isActive || isActive && isActive.classList.contains("active")) { return; } setTab("simple-travel"); } }; maybeSetTab = () => { if ("travel" !== getCurrentPage()) { return; } initSimpleTab(); if ("map" !== getCurrentTab()) { return; } if (!getSetting("better-travel.default-to-simple-travel", false)) { return; } setTab("simple-travel"); }; addRhToSimpleTravel = () => __async(void 0, null, function* () { const location = yield getRelicHunterLocation(); if (!location) { return; } const travelLink = document.querySelectorAll(`.travelPage-regionMenu-environmentLink[data-environment="${location.id}"]`); if (!travelLink.length) { return; } travelLink.forEach((link) => { link.classList.add("relic-hunter-is-here"); }); }); addRhToMap = () => __async(void 0, null, function* () { const location = yield getRelicHunterLocation(); if (!location) { return; } const mapLocation = document.querySelector(`.travelPage-map-image-environment[data-environment-type="${location.id}"]`); if (!mapLocation) { return; } const rh = makeElement("div", ["map-relic-hunter-is-here", "travelPage-map-image-environment-pointer"]); makeElement("div", ["map-relic-hunter-is-here-image", "travelPage-map-image-environment-pointer-image"], "", rh); mapLocation.append(rh); }); maybeDoMapView = () => { if ("travel" !== getCurrentPage()) { return; } if ("map" !== getCurrentTab()) { return; } expandTravelRegions(); addRhToMap(); }; _tabHandler = null; listenTabChange = () => { var _a, _b; if (_tabHandler) { return; } if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.onclickPageTabHandler)) { return; } _tabHandler = hg.utils.PageUtil.onclickPageTabHandler; hg.utils.PageUtil.onclickPageTabHandler = (tab) => { _tabHandler(tab); maybeDoMapView(); }; }; saveTravelLocation = () => { const isLocationDashboardRefreshing = sessionGet("doing-location-refresh", false); if (isLocationDashboardRefreshing) { return; } const previousLocation = getTravelSetting("current-location", "not-set"); const currentLocation = getCurrentLocation(); if (currentLocation === previousLocation) { return; } saveTravelSetting("previous-location", previousLocation); saveTravelSetting("current-location", currentLocation); }; getLocationFavorites = () => { const faves = getSetting("better-travel.favorites", []); return faves; }; isLocationFavorite = (type) => { return getLocationFavorites().includes(type); }; saveLocationFavorites = (favorites) => { saveTravelSetting("favorites", favorites); }; addToLocationFavorites = (type) => { if (!isLocationFavorite(type)) { const faves = getLocationFavorites(); faves.push(type); saveLocationFavorites(faves); } }; removeFromLocationFavorites = (type) => { if (getLocationFavorites()) { const faves = getLocationFavorites(); faves.splice(faves.indexOf(type), 1); saveLocationFavorites(faves); } }; addFavoriteButtonsToTravelPage = () => __async(void 0, null, function* () { const locations = document.querySelectorAll(".travelPage-map-environment-detailContainer .travelPage-map-environment-detail"); if (!locations) { return; } const locationFavorites = getLocationFavorites(); locations.forEach((location) => { const type = location.getAttribute("data-environment-type"); if (!type) { return; } const isEventLocation = environments3.find((environment) => { return environment.id === type; }); if (isEventLocation) { return; } const isFavorite2 = locationFavorites.includes(type); makeFavoriteButton({ id: `better-travel-favorite-${type}`, target: location.querySelector(".travelPage-map-environment-detail-title"), size: "small", state: isFavorite2, isSetting: false, defaultState: false, onActivate: () => { addToLocationFavorites(type); addToTravelDropdown(); }, onDeactivate: () => { removeFromLocationFavorites(type); removeSubmenuItem(type); } }); }); }); main10 = () => { if (getSetting("better-travel.travel-window", true)) { travel_window_default(); } onNavigation(() => { addSimpleTravel(); addRhToSimpleTravel(); addFavoriteButtonsToTravelPage(); }, { page: "travel" }); onPageChange({ travel: { show: maybeSetTab } }); listenTabChange(); initSimpleTab(); maybeDoMapView(); onTravelComplete(); saveTravelLocation(); addToTravelDropdown(); onEvent("mh-improved-goto-previous-location", goToPreviousLocation); }; environments3 = []; init13 = () => __async(void 0, null, function* () { const stylesJoined = [styles_default18]; if (!getFlag("no-travel-menu-hiding")) { stylesJoined.push(travel_menu_hiding_default); } addStyles(stylesJoined, "better-travel"); environments3 = yield getData("environments"); main10(); }); better_travel_default = { id: "better-travel", name: "Better Travel", type: "better", default: true, description: 'Adds locations in the current region to the Travel dropdown menu, a "Simple Travel" tab with a grid of locations, an optional alphabetized list, an indicator for where the Relic Hunter is.', load: init13, settings: settings_default13 }; } }); // src/modules/catch-rate-estimate/data.js var miceEffs, hasGottenEffs, getMiceEffectiveness, getMouse, getMousePower, getMouseEffectiveness, getMinluck, getPercent, getCatchRate; var init_data2 = __esm({ "src/modules/catch-rate-estimate/data.js"() { init_utils2(); init_utils2(); hasGottenEffs = false; getMiceEffectiveness = () => __async(void 0, null, function* () { if (!hasGottenEffs) { miceEffs = yield getData("effs"); hasGottenEffs = true; } const response = yield doRequest("managers/ajax/users/getmiceeffectiveness.php"); return response == null ? void 0 : response.effectiveness; }); getMouse = (mouseId) => __async(void 0, null, function* () { if (!miceEffs || !hasGottenEffs) { miceEffs = yield getData("effs"); hasGottenEffs = true; } const mouse = miceEffs.find((m) => m.type === mouseId); return mouse; }); getMousePower = (mouseId) => __async(void 0, null, function* () { var _a; const mouse = yield getMouse(mouseId); return (_a = mouse == null ? void 0 : mouse.effectivenesses) == null ? void 0 : _a.power; }); getMouseEffectiveness = (mouseId) => __async(void 0, null, function* () { const mouse = yield getMouse(mouseId); return mouse.effectivenesses[user.trap_power_type_name.toLowerCase()]; }); getMinluck = (mousePower, effectiveness2) => __async(void 0, null, function* () { if (effectiveness2 === 0) { return "\u221E"; } const minluck = Math.ceil( Math.ceil(Math.sqrt(mousePower / 2)) / Math.min(effectiveness2 / 100, 1.4) ); const checkCatchRate = getCatchRate(mousePower, effectiveness2, 0, minluck); return checkCatchRate.rate === 1 ? minluck : minluck + 1; }); getPercent = (rate) => { if (rate === 1) { return "100%"; } const percent = (rate * 100).toFixed(2); return `${percent}%`; }; getCatchRate = (mousePower, effectiveness2, power = null, luck = null) => { effectiveness2 = effectiveness2 / 100; if (null === power) { power = user.trap_power; } if (null === luck) { luck = user.trap_luck; } const rate = Math.min( 1, (effectiveness2 * power + 2 * Math.pow(Math.floor(Math.min(effectiveness2, 1.4) * luck), 2)) / (effectiveness2 * power + mousePower) ); return { rate, percent: getPercent(rate) }; }; } }); // src/modules/catch-rate-estimate/styles.css var styles_default19; var init_styles20 = __esm({ "src/modules/catch-rate-estimate/styles.css"() { styles_default19 = '#mh-improved-cre{padding-right:5px;margin:5px 0;cursor:default}#mh-improved-cre table{width:100%}#mh-improved-cre thead{box-shadow:0 -1px #d3cecb inset}.mh-dark-mode #mh-improved-cre thead{box-shadow:0 -1px #5c5c5c inset}#mh-improved-cre table th{font-weight:700;text-align:center}#mh-improved-cre table th.name,#mh-improved-cre table:first-child{text-align:left}.mh-improved-cre-data{min-width:70px;text-align:center}.mh-improved-cre-data-good{color:#138f13}.mh-dark-mode .mh-improved-cre-data-good{color:#4fe54f}.mh-improved-cre-data-bad{color:#bb4646}.mh-dark-mode .mh-improved-cre-data-bad{color:#fb9b9b}.mh-improved-cre-name{padding-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mh-improved-cre-name a{color:inherit}#mh-improved-cre.cre-loading{display:flex;align-items:flex-end;justify-content:center;height:100%;min-height:50px;padding:20px 0;background-image:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif?asset_cache_version=2);background-repeat:no-repeat;background-position:center 10px;background-size:55px}#mh-improved-cre.cre-loading:after{position:absolute;right:0;bottom:-5px;left:0;font-weight:400;color:#926944;text-align:center;content:"Loading Catch Rate Estimator\\2026"}span.mh-improved-cre-no-mice{font-size:12px}\n'; } }); // src/modules/catch-rate-estimate/index.js var lastStats, effectiveness, updateMinLucks, renderList, main11, init14, catch_rate_estimate_default; var init_catch_rate_estimate = __esm({ "src/modules/catch-rate-estimate/index.js"() { init_utils2(); init_data2(); init_styles20(); lastStats = []; effectiveness = null; updateMinLucks = () => __async(void 0, null, function* () { if ("camp" !== getCurrentPage()) { return; } let minluckList = document.querySelector("#mh-improved-cre"); if (!minluckList) { minluckList = makeElement("div", ["campPage-trap-trapEffectiveness", "cre-loading"]); minluckList.id = "mh-improved-cre"; const statsContainer = document.querySelector(".trapSelectorView__trapStatSummaryContainer"); if (!statsContainer) { return; } statsContainer.append(minluckList); } const currentStats = [ user.trap_power, user.trap_luck, user.trap_attraction_bonus, user.trap_cheese_effect, user.trap_luck, user.trap_power, user.trap_power_bonus, user.trap_power_type_name, user.trinket_item_id, user.base_item_id, user.weapon_item_id, user.bait_item_id, user.environment_id ]; if (currentStats !== lastStats) { effectiveness = yield getMiceEffectiveness(); lastStats = currentStats; } if (!effectiveness) { return; } const miceIds = Object.values(effectiveness).flatMap(({ mice }) => mice).map((mouse) => { return { name: mouse.name, type: mouse.type }; }); renderList(miceIds); }); renderList = (list) => __async(void 0, null, function* () { let minluckList = document.querySelector("#mh-improved-cre"); if (!minluckList) { minluckList = makeElement("div", "campPage-trap-trapEffectiveness"); minluckList.id = "mh-improved-cre"; const statsContainer = document.querySelector(".trapSelectorView__trapStatSummaryContainer"); if (!statsContainer) { return; } statsContainer.append(minluckList); doEvent2("mh-improved-cre-list-rendered"); } const existing = document.querySelector("#mh-improved-cre-table"); if (existing) { existing.remove(); } minluckList.classList.remove("cre-loading"); const table = makeElement("table"); table.id = "mh-improved-cre-table"; const tableheader = makeElement("thead"); makeElement("th", "name", "Mouse", tableheader); makeElement("th", "", "Minluck", tableheader); makeElement("th", "", "Catch Rate", tableheader); table.append(tableheader); const rows = []; for (const mouse of list) { const mousePower = yield getMousePower(mouse.type); const mouseEffectiveness = yield getMouseEffectiveness(mouse.type); const minluck = yield getMinluck(mousePower, mouseEffectiveness); const catchRate = yield getCatchRate(mousePower, mouseEffectiveness); const crClass = ["mh-improved-cre-data"]; if (catchRate.rate * 100 >= 100) { crClass.push("mh-improved-cre-data-good"); } else if (catchRate.rate * 100 <= 60) { crClass.push("mh-improved-cre-data-bad"); } if (user.trap_luck >= minluck) { crClass.push("mh-improved-cre-data-minlucked"); } rows.push({ mouse: mouse.name, type: mouse.type, minluck, catchRateValue: catchRate.rate, catchRate: catchRate.percent, crClass }); } rows.sort((a, b) => { if (a.catchRateValue !== b.catchRateValue) { return a.catchRateValue - b.catchRateValue; } return b.minluck - a.minluck; }); if (rows.length === 0) { makeElement("span", "mh-improved-cre-no-mice", "No mice found.", table); minluckList.append(table); return; } rows.forEach(({ mouse, type, minluck, catchRate, crClass }) => { const row = makeElement("tr", "mh-improved-cre-row"); const name = makeElement("td", "mh-improved-cre-name"); const nameLink = makeElement("a", "", mouse); nameLink.addEventListener("click", (e) => { e.preventDefault(); hg.views.MouseView.show(type); }); name.append(nameLink); row.append(name); makeElement("td", crClass, minluck, row); makeElement("td", crClass, catchRate, row); table.append(row); }); minluckList.append(table); }); main11 = () => __async(void 0, null, function* () { if ("camp" === getCurrentPage()) { yield updateMinLucks(); } onPageChange({ camp: { show: updateMinLucks } }); onRequest("*", updateMinLucks); onTravel(null, { callback: updateMinLucks }); }); init14 = () => __async(void 0, null, function* () { addStyles(styles_default19, "catch-rate-estimate"); setTimeout(main11, 240); }); catch_rate_estimate_default = { id: "catch-rate-estimate", name: "Catch Rate Estimator & Minlucks", type: "feature", default: true, description: "Minluck and catch rate estimates.", order: 200, load: init14 }; } }); // src/modules/copy-id/settings/index.js var settings_default14; var init_settings15 = __esm({ "src/modules/copy-id/settings/index.js"() { settings_default14 = () => __async(void 0, null, function* () { return [ { id: "copy-id-button.hide-button", title: "Hide button <em>(click profile pic to copy ID)</em>", default: false } ]; }); } }); // src/modules/copy-id/styles.css var styles_default20; var init_styles21 = __esm({ "src/modules/copy-id/styles.css"() { styles_default20 = ".mousehuntHud-userStatBar .profileImage{position:relative}.mh-copy-id-button{position:absolute;top:30px;left:3px;z-index:10;display:none;padding:2px 4px;font-size:9px;cursor:pointer}.mh-copy-id-success-message{position:absolute;top:32px;left:60px;z-index:10;font-weight:900;color:#fff;text-shadow:1px 1px 1px #000;opacity:0;transition:opacity .2s ease-in-out}\n"; } }); // src/modules/copy-id/index.js var main12, init15, copy_id_default; var init_copy_id = __esm({ "src/modules/copy-id/index.js"() { init_utils2(); init_settings15(); init_styles21(); main12 = () => { const profilePic = document.querySelector(".mousehuntHud-userStatBar .mousehuntHud-profilePic"); if (!profilePic) { return; } const copyIdButton = makeElement("div", ["mh-copy-id-button", "mousehuntActionButton", "tiny"]); makeElement("span", "mh-copy-id-button-text", "Copy ID", copyIdButton); profilePic.parentNode.insertBefore(copyIdButton, profilePic.nextSibling); const successMessage = makeElement("div", "mh-copy-id-success-message", "Copied!"); successMessage.style.opacity = 0; copyIdButton.parentNode.insertBefore(successMessage, copyIdButton.nextSibling); const clickAction = (e) => { e.preventDefault(); const Id = user.user_id; navigator.clipboard.writeText(Id); successMessage.style.opacity = 1; setTimeout(() => { successMessage.style.opacity = 0; }, 1e3); }; copyIdButton.addEventListener("click", clickAction); if (getSetting("copy-id-button.hide-button")) { profilePic.setAttribute("onclick", ""); profilePic.addEventListener("click", clickAction); } profilePic.addEventListener("mouseenter", () => { copyIdButton.style.display = "block"; }); profilePic.addEventListener("mouseleave", () => { copyIdButton.style.display = "none"; }); copyIdButton.addEventListener("mouseenter", () => { copyIdButton.style.display = "block"; }); copyIdButton.addEventListener("mouseleave", () => { copyIdButton.style.display = "none"; }); }; init15 = () => __async(void 0, null, function* () { addStyles(styles_default20, "copy-id"); main12(); }); copy_id_default = { id: "copy-id", name: "Copy ID Button", type: "feature", default: true, description: "Hover over your profile picture in the HUD for a quick 'Copy ID to clipboard' button.", load: init15, settings: settings_default14 }; } }); // src/modules/better-tournaments/settings/index.js var settings_default15; var init_settings16 = __esm({ "src/modules/better-tournaments/settings/index.js"() { settings_default15 = () => __async(void 0, null, function* () { return [{ id: "better-tournaments.time-inline", title: "Display localized times inline", default: false, description: "Display localized tournament times inline, rather than on hover." }]; }); } }); // src/modules/better-tournaments/styles.css var styles_default21; var init_styles22 = __esm({ "src/modules/better-tournaments/styles.css"() { styles_default21 = '.teamPage-memberRow-identity .teamPage-member-nameContainer{width:auto}.tournamentPage-tournamentContainer-customPrizes{display:none}.tournamentPage-tournamentContainer-name{margin-bottom:5px;font-size:13px}.tournamentPage-tournamentContainer-description{padding-top:2px;font-size:9px}.train .tournamentPage-tournamentContainer-description{max-height:35px;padding-right:10px;font-size:9px;line-height:10px}.tournamentPage-tournamentRow .tournamentPage-tournamentContainer-icon{display:none}.tournamentPage-tournament-column.label{text-align:center}.tournamentPage-tournament-column.label.nameIcon{text-align:left}.tournamentPage-tournamentContainer-labels .tournamentPage-tournament-column:nth-child(6){display:none}.tournamentPage-tournament-column.members_5 .tournamentPage-tournament-teamMember{display:block;width:19.6px;height:19.6px}.tournamentPage-tournament-column.value.teamMembers.members_5{display:flex;flex-flow:row wrap;align-items:center}.tournamentPage-tournament-column.members_5 .tournamentPage-tournament-teamMember.empty:after{margin-top:4px;margin-left:-5px}.tournamentPage-tournamentContainer-labels{display:grid;grid-template-columns:305px 100px 80px 55px;justify-items:stretch;margin-left:15px}.tournamentPage-tournament-column .tournamentPage-tournament-teamMember:is(.empty){color:transparent}.tournamentPage-tournament-column .tournamentPage-tournament-teamMember.empty:before{content:counter(team);counter-increment:team}.tournamentPage-tournament-column.value.teamMembers{counter-reset:team}.tournamentPage-tournament-column .tournamentPage-tournament-teamMember.empty:last-child:before{position:absolute;top:4px;right:-1px;display:inline-block;width:22px;height:22px;font-size:18px;line-height:22px;color:#474747;background-color:#e5e5e5;border-radius:50%;box-shadow:1px 1px 1px #c7c7c7}.tournamentPage-tournament-column.members_5 .tournamentPage-tournament-teamMember.empty:last-child:before{top:-2px;right:-4px;width:21px;height:21px;font-size:17px;line-height:20px}.tournamentPage-tournament-column.label,a.tournamentPage-tournament-column.icon,a.tournamentPage-tournament-column.name,.tournamentPage-tournament-column.value,.tournamentPage-tournament-column.actions{width:auto}.tournamentPage-tournamentRow{display:grid;grid-template-columns:0 300px 1fr 1fr 20px 100px 70px;gap:10px;place-items:center stretch;padding:5px 10px 5px 0;border:1px solid #d7d7d7;border-radius:4px}.tournamentPage-tournament-column.label.teamMembers{display:none;text-align:center}.tournamentPage-tournamentRow.train .tournamentPage-tournamentContainer-icon,.tournamentPage-tournamentContainer-icon{width:30px;height:30px;margin:0;background-repeat:no-repeat;background-position:unset;background-size:contain}.tournamentPage-profile-summaryContainer{min-height:100px;padding-left:130px;margin-right:20px;margin-left:20px;background-size:120px}.tournamentPage-profile-description{display:grid;grid-template-columns:1fr 125px;place-items:center end;font-size:13px;line-height:20px}.tournamentPage-profile-action{display:block;order:2;float:none;font-size:14px}.tournamentPage-profile-prizeWaiting{display:grid;grid-template-columns:1fr 100px;align-items:center;justify-content:center;padding:10px 20px;margin:20px 0;font-size:18px;font-weight:400}.tournamentPage-tournamentHeader,.tournamentPage-viewState .mousehuntTabContentContainer{background:#efe9df;border:1px solid #af9969;box-shadow:inset 1px 1px 1px #e2d6b5}.tournamentPage-profile-details-rules h2:first-of-type{display:none}img.tournamentPage-profile-details-rules-icon{display:none}.tournamentPage-profile-details-rules br:first-of-type:after,.tournamentPage-profile-details-rules br:first-of-type:before{display:block}.tournamentPage-profile-details-generalRules ul li:nth-of-type(2),.tournamentPage-profile-details-generalRules ul li:nth-of-type(3){display:none}.tournamentPage-profile-details-generalRules ul{margin:0 0 0 15px;list-style:disc}.tournamentPage-profile-details-generalRules-title{display:none}.tournamentPage-profile-summary{height:auto;min-height:200px;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb}.tournamentPage-tournamentHeader,.tournamentPage-viewState .mousehuntTabContentContainer{background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb}.tournamentPage-viewState .mousehuntTabHeader span{margin-bottom:1px;background:#f6f3eb;border:1px solid #cbc6bb;box-shadow:none}.tournamentPage-viewState .mousehuntTabHeader.active span,.tournamentPage-viewState .mousehuntTabHeader span:hover,.tournamentPage-viewState .mousehuntTabHeader span:focus{border-bottom:none}.tournamentPage-viewState .mousehuntTabHeader:before{background:none;box-shadow:none}.tournamentPage-viewState .mousehuntTabHeader.active span,.tournamentPage-viewState .mousehuntTabHeader:hover span,.tournamentPage-viewState .mousehuntTabHeader:focus span{border-bottom:1px solid #f6f3eb}.tournamentPage-profile-details-rewardContainer h2{display:none}.tournamentPage-profile-details-rewardContainer>div:last-child{display:none}.tournamentPage-profile-details-rewardContainer{background-color:transparent}.tournamentPage-profile-details-padding{position:relative;background-color:#f6f3eb}.tournamentPage-profile-details-reward-name{padding-bottom:20px;margin-left:30px;font-weight:400}.tournamentPage-profile-details-padding div:nth-child(2){position:absolute;top:5px;left:5px;width:30px;height:30px;margin-left:0;color:transparent;background-size:contain}.tournamentPage-profile-details-reward-item{margin-left:5px;mix-blend-mode:multiply}.tournamentPage-profile-details-environmentContainer{position:absolute;right:0;bottom:-10px;display:flex;flex-flow:row wrap;place-content:center center;align-items:stretch;width:290px;padding-top:10px;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb}.tournamentPage-profile-details-rules h2{display:none;padding-bottom:11px}.tournamentPage-profile-details-generalRules{width:270px;font-size:11px;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb}.tournamentPage-profile-details-environmentWarning{display:none}.tournamentPage-profile-details-rules{display:flex;flex-direction:column;justify-content:flex-start;font-size:12px}.tournamentPage-profile-details-mouseGroup{width:auto;padding:10px;margin:0;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb}h2.tournamentPage-profile-details-mouseGroup-name{padding-left:32px;margin-bottom:10px;font-size:14px;font-weight:900}.tournamentPage-profile-details-mouseGroup-miceContainer{display:flex;flex-flow:column wrap;margin:0}.tournamentPage-profile-details-mice{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.tournamentHelp.clear-block img{display:none}.tournamentPage-profile-details-mouseGroup-mouse{width:100%}.tournamentStatusHud .score,.tournamentStatusHud .rank{padding:15px;margin:-15px}.teamMembers:hover .memberHover,.rank:hover .scoreHover{display:block}.score:hover .pointsHover{display:grid}.memberHover,.scoreHover,.pointsHover{position:absolute;top:90%;left:-50%;z-index:31;display:none;width:275px;color:#4e300b;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:inset -1px -1px 1px #d3cecb,1px 3px 3px #939393}.pointsHover{left:-130%;grid-template-columns:1fr 1fr 1fr;place-items:stretch stretch;width:auto}.scoreRow{display:grid;grid-template-columns:25px 1fr 25px;place-items:center start;padding:5px;margin-bottom:5px}.pointsTotal{text-align:center}img.memberImage{width:20px;height:20px;padding:5px}.memberRow{display:flex;padding:2px}.memberHover{left:0;width:auto;min-width:120px;padding:5px}.memberRow:nth-child(2n){background-color:#e8e4d6}.scoreRow:nth-child(2n){background-color:#e5e0de}.scoreIcon{position:relative;width:20px;height:20px;margin-right:5px;overflow:hidden;border-radius:7px}.scoreIcon div{position:absolute;top:0;left:0;width:20px;height:20px;background-repeat:no-repeat;background-size:contain}.teamWrapper{display:flex;align-items:center}.scorePoints{justify-self:end}.pointsRow{width:150px;border:1px solid #cbc6bb}img.pointsMouseIcon{width:15px;height:15px;margin-right:4px;margin-bottom:3px}.pointsMouseWrapper{display:flex;align-items:center;justify-content:flex-start;overflow:hidden}.pointsMouseName{font-size:11px;font-weight:400;text-overflow:ellipsis;white-space:nowrap}.pointsMice{padding:5px}.pointsTitle{padding:5px 0;font-size:12px;text-align:center}.tournamentStatusHud .rank span,.tournamentStatusHud .score span{display:inline-block;font-size:13px;line-height:12px}.tournamentStatusHud a.name,.tournamentStatusHud a.name:visited,.tournamentStatusHud a.name:hover,.tournamentStatusHud a.name:focus{left:33px;font-size:12px}.tournamentStatusHud .timer,.tournamentStatusHud.pending .timer{top:0;left:241px;width:auto;padding-top:3px;padding-right:10px;font-size:11px;line-height:initial;color:#000;background:linear-gradient(166deg,#b4d3da,#acc3ca 50%,#b4d3da 96%);background-color:#acc3ca;border-top-right-radius:15px}.tournamentStatusHud .title{display:none}.tournament-normal-time.tournament-time-display-hover{position:absolute;inset:0 -30px;z-index:6;display:none;padding:5px;text-align:center;white-space:nowrap;background-color:#eee;border:1px solid #3d3d3d;border-radius:5px;box-shadow:1px 1px 3px #191919,0 0 5px 5px #fff}.tournamentPage-tournament-column.value:hover .tournament-time-display-hover{display:block}.tournamentPage-tournamentRow.tournamentPage-tournamentData .tournamentPage-tournament-column.value:nth-child(3),.tournamentPage-tournamentRow.tournamentPage-tournamentData .tournamentPage-tournament-column.value:nth-child(4){height:auto;min-height:25px}.tournament-normal-time.tournament-time-display-inline{margin-top:4px}.tournamentPage-tournamentRow:hover:before{box-shadow:none}.tournamentPage-tournamentRow:hover{background-color:#eee}.tournamentPage-tournamentRow.signed_up:before{background-color:transparent;box-shadow:none}.tournamentPage-tournamentRow.tournamentPage-tournamentData.signed_up{background-color:#feff8d}.tournamentPage-tournamentRow.tournamentPage-tournamentData.signed_up:hover{background-color:#ffda2f}.tournamentPage-tournamentRow.empty .tournamentPage-tournament-empty{white-space:nowrap}.tournamentPage-tournamentButton{padding:2px 15px;line-height:18px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #b9b9b9}.tournamentPage-tournamentButton:hover,.tournamentPage-tournamentButton:focus{background-color:#e4d50c}.tournamentPage-tournamentHeader a{margin:0;font-size:12px;color:#000;text-shadow:0 0 1px #fff;background-color:#f6f3eb;border:1px solid #000;border-radius:4px}.tournamentPage-tournamentHeader a:hover,.tournamentPage-tournamentHeader a:focus{background-color:#fff;border-color:#000}.tournament-team-rank{background-color:#0d7d3a}.tournament-team-rank.rank_1{color:#000}tbody tr.scoreboardTableView-row-separator:nth-child(5){display:none}tr.scoreboardTableView-row.viewer,tr.scoreboardTableView-row.highlight{background-color:#fdfbcc;border-radius:10px;outline:2px solid #fc6;box-shadow:none}.viewer .tournament-team-rank.updated:hover:after{position:absolute;inset:14px 20px 14px 10px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#000;text-align:center;content:"Page " attr(data-rank-page);background-color:#fdfbcce5;border:1px #aaa9a9;border-radius:5px}.scoreboardTableView-row-rank{position:relative}\n'; } }); // src/modules/better-tournaments/index.js var updateTournamentHud, updateTournamentList, updateScoreboard, init16, better_tournaments_default; var init_better_tournaments = __esm({ "src/modules/better-tournaments/index.js"() { init_utils2(); init_settings16(); init_styles22(); updateTournamentHud = () => __async(void 0, null, function* () { var _a, _b; const activeTourney = document.querySelector("#tournamentStatusHud > a.name"); if (!activeTourney) { return; } const tourneyId = activeTourney.href.split("=")[1]; if (!tourneyId) { return; } const tourneyData = yield doRequest("managers/ajax/pages/page.php", { page_class: "Tournament", "page_arguments[tournament_id]": tourneyId }); if (!(tourneyData == null ? void 0 : tourneyData.page)) { return; } if ((_a = tourneyData.page) == null ? void 0 : _a.is_active) { const name = (_b = tourneyData == null ? void 0 : tourneyData.page) == null ? void 0 : _b.name; if (name) { activeTourney.innerText = name; } const rank = document.querySelector(".tournamentStatusHud .rank"); if (rank) { const scoreHover = document.createElement("div"); scoreHover.classList.add("scoreHover"); tourneyData.page.scoreboard.rows.forEach((scoreboard) => { const scoreRow = makeElement("div", "scoreRow"); makeElement("div", "scoreRank", scoreboard.rank, scoreRow); const teamWrapper = makeElement("a", "teamWrapper"); teamWrapper.href = `https://www.mousehuntgame.com/team.php?team_id=${scoreboard.team_id}`; const icon = makeElement("div", "scoreIcon"); const iconLayer1 = makeElement("div", "scoreIconLayer1"); iconLayer1.style.backgroundImage = `url(${scoreboard.emblem.layers[0].image})`; icon.append(iconLayer1); const iconLayer2 = makeElement("div", "scoreIconLayer2"); iconLayer2.style.backgroundImage = `url(${scoreboard.emblem.layers[1].image})`; icon.append(iconLayer2); const iconLayer3 = makeElement("div", "scoreIconLayer3"); iconLayer3.style.backgroundImage = `url(${scoreboard.emblem.layers[2].image})`; icon.append(iconLayer3); teamWrapper.append(icon); makeElement("div", "scoreName", scoreboard.name, teamWrapper); scoreRow.append(teamWrapper); makeElement("div", "scorePoints", scoreboard.points, scoreRow); scoreHover.append(scoreRow); }); rank.append(scoreHover); } const points = document.querySelector(".tournamentStatusHud .score"); if (points) { const pointsHover = document.createElement("div"); pointsHover.classList.add("pointsHover"); tourneyData.page.mouse_groups.reverse().forEach((mouseGroup) => { const pointsRow = makeElement("div", "pointsRow"); makeElement("div", "pointsTotal", mouseGroup.name, pointsRow); const groupMice = document.createElement("div"); groupMice.classList.add("pointsMice"); mouseGroup.mice.forEach((mouse) => { const mouseWrapper = makeElement("div", "pointsMouseWrapper"); const mouseIcon = makeElement("img", "pointsMouseIcon"); mouseIcon.src = mouse.thumb; mouseWrapper.append(mouseIcon); makeElement("div", "pointsMouseName", mouse.name, mouseWrapper); groupMice.append(mouseWrapper); }); pointsRow.append(groupMice); pointsHover.append(pointsRow); }); points.append(pointsHover); } } else { const members = document.querySelector(".tournamentStatusHud a.teamMembers"); if (members) { const memberHover = makeElement("div", "memberHover"); tourneyData.page.members.forEach((member) => { var _a2, _b2; const memberRow = makeElement("div", "memberRow"); if (member.is_empty) { makeElement("div", "memberEmpty", "Empty", memberRow); memberRow.classList.add("empty"); } else { const image = makeElement("img", "memberImage"); image.src = (_a2 = member.profile_pic) != null ? _a2 : "https://www.mousehuntgame.com//images/ui/friends/anonymous_user.png"; memberRow.append(image); makeElement("div", "memberName", (_b2 = member.name) != null ? _b2 : "", memberRow); } memberHover.append(memberRow); }); members.append(memberHover); } } }); updateTournamentList = () => __async(void 0, null, function* () { const beginsRows = document.querySelectorAll(".tournamentPage-tournamentRow.tournamentPage-tournamentData .tournamentPage-tournament-column.value:nth-child(3)"); if (!beginsRows.length) { return; } const durationRows = document.querySelectorAll(".tournamentPage-tournamentRow.tournamentPage-tournamentData .tournamentPage-tournament-column.value:nth-child(4)"); if (!durationRows.length) { return; } const now = /* @__PURE__ */ new Date(); const nowTime = now.getTime(); const dateOptions = { weekday: "short", month: "short", day: "numeric", hour: "numeric", minute: "numeric" }; beginsRows.forEach((beginsRow, i) => { const beginsText = beginsRow.innerText; const beginsParts = beginsText.split(" "); const beginsMinutes = beginsParts.reduce((acc, part) => { if (part === "minutes" || part === "minute") { return acc + Number.parseInt(beginsParts[beginsParts.indexOf(part) - 1], 10); } if (part === "hours" || part === "hour") { return acc + Number.parseInt(beginsParts[beginsParts.indexOf(part) - 1], 10) * 60; } return acc; }, 0); const inlineOrHover = getSetting("better-tournaments.time-inline") ? "tournament-time-display-inline" : "tournament-time-display-hover"; const beginsDate = new Date(nowTime + beginsMinutes * 6e4); const beginsDateString = beginsDate.toLocaleString("en-US", dateOptions); const beginsDateEl = makeElement("div", ["tournament-normal-time", "tournament-begins-date", inlineOrHover], beginsDateString); beginsRow.append(beginsDateEl); const durationText = durationRows[i].innerText; const durationParts = durationText.split(" "); const durationMinutes = durationParts.reduce((acc, part) => { if (part === "minutes" || part === "minute") { return acc + Number.parseInt(durationParts[durationParts.indexOf(part) - 1], 10); } if (part === "hours" || part === "hour") { return acc + Number.parseInt(durationParts[durationParts.indexOf(part) - 1], 10) * 60; } return acc; }, 0); const durationDate = new Date(beginsDate.getTime() + durationMinutes * 6e4); const durationDateString = durationDate.toLocaleString("en-US", dateOptions); const durationDateEl = makeElement("div", ["tournament-normal-time", "tournament-end-date", inlineOrHover], durationDateString); durationRows[i].append(durationDateEl); }); }); updateScoreboard = () => { const getRanks = document.querySelectorAll(".tournament-team-rank:not(.updated)"); getRanks.forEach((rank) => { rank.classList.add("updated"); const rankParts = rank.innerText.split(/(\d+)/); if (rankParts.length !== 3) { return; } const rankNum = Number.parseInt(rankParts[1], 10); if (rankNum <= 25) { rank.classList.add("rank-first-page"); } rank.setAttribute("data-rank", rankNum); rank.setAttribute("data-rank-page", Math.ceil(rankNum / 25)); rank.innerText = rankNum.toLocaleString("en-US") + rankParts[2]; }); }; init16 = () => __async(void 0, null, function* () { addStyles(styles_default21, "better-tournaments"); updateTournamentHud(); onEvent("tournament_status_change", updateTournamentHud); onNavigation(updateTournamentList, { page: "tournament" }); onNavigation(updateScoreboard, { page: "scoreboards" }); onRequest("pages/scoreboards.php", updateScoreboard); }); better_tournaments_default = { id: "better-tournaments", name: "Better Tournaments", type: "better", default: true, description: "Updates the Tournaments UI to show information on hover and a variety of small interface tweaks.", load: init16, settings: settings_default15 }; } }); // src/modules/custom-background/gradients.json var gradients_default; var init_gradients = __esm({ "src/modules/custom-background/gradients.json"() { gradients_default = [ { id: "midnight", name: "Midnight", css: "linear-gradient(220.55deg, #565656 0%, #181818 100%)" }, { id: "night-in-salem", name: "Night in Salem", css: "linear-gradient(#111827, #581c87, #7c3aed)" }, { id: "cosmic-twilight", name: "Cosmic Twilight", css: "linear-gradient(to right, #0f172a, #581c87, #0f172a)" }, { id: "galactic-dusk", name: "Galactic Dusk", css: "linear-gradient(220.55deg, #4063bc 0%, #6b0013 100%)" }, { id: "emerald-lagoon", name: "Emerald Lagoon", css: "radial-gradient(80.99% 100% at 50% 0%, #00ff0a 0%, #36008e 100%), radial-gradient(50% 123.47% at 50% 50%, #efe7c8 0%, #36008e 100%), linear-gradient(301.28deg, #ff006b 0%, #48dd9e 100%), linear-gradient(294.84deg, #5a60e4 0%, #d30000 100%), linear-gradient(52.29deg, #000000 0%, #00ff85 100%), radial-gradient(100% 138.69% at 100% 0%, #0007a5 0%, #ff7a00 100%), radial-gradient(70.41% 100% at 50% 0%, #d5b300 0%, #2200aa 100%)" }, { id: "aurora", name: "Aurora", css: "radial-gradient(65% 100% at 50% 0%, #00ff94 0%, rgba(0, 255, 148, 0.25) 100%), linear-gradient(230deg, #000000 25%, #170059 100%), linear-gradient(215deg, #ffebb9 10%, #19004e 80%), radial-gradient(100% 245% at 100% 100%, #ffffff 0%, #000353 100%), linear-gradient(125deg, #1400ff 0%, #3a0000 100%), linear-gradient(225deg, #00ebfc 3.7%, #00f0ff 11.4%, #000b6f 55.3%, #001676 64.1%, #001676 75%, #00e1f6 100%, #00ecfd 100%, #001676 100%), linear-gradient(135deg, #00f0ff 0%, #000b6f 2.4%, #00ebfc 20.5%, #001676 35%, #00e1f6 47.2%, #001676 66.8%, #00ecfd 84.9%, #001676 100%)" }, { id: "amber-sunrise", name: "Amber Sunrise", css: "radial-gradient(circle at center top, #b45309, #fdba74, #9f1239)" }, { id: "warm-glow", name: "Warm Glow", css: "radial-gradient(at center top, #d1d5db, #c026d3, #ea580c)" }, { id: "aqua-depths", name: "Aqua Depths", css: "linear-gradient(220.55deg, #24cfc5 0%, #001c63 100%)" }, { id: "cobalt-mist", name: "Cobalt Mist", css: "linear-gradient(#3951c6, #8896dd)" }, { id: "crimson-blush", name: "Crimson Blush", css: "linear-gradient(#b9466c, #e3b5c4)" }, { id: "emerald-forest", name: "Emerald Forest", css: "linear-gradient(#43ac20, #76df53)" }, { id: "flamingo-fling", name: "Flamingo Fling", css: "linear-gradient(#e84a8c, #f3a5c5)" }, { id: "glacial-gleam", name: "Glacial Gleam", css: "linear-gradient(220.55deg, #c5edf5 0%, #4a879a 100%)" }, { id: "lavender-lustre", name: "Lavender Lustre", css: "linear-gradient(#de97f9, #9157ff)" }, { id: "mint-surf", name: "Mint Surf", css: "linear-gradient(0deg, #08aeea 0%, #2af598 100%)" }, { id: "orange-coral", name: "Orange Coral", css: "linear-gradient(to top, #fb923c, #fb7185)" }, { id: "radiant-rouge", name: "Radiant Rouge", css: "linear-gradient(161.15deg, #ffa492 12.73%, #ff2c55 72.95%)" }, { id: "sangria-solstice", name: "Sangria Solstice", css: "linear-gradient(181deg, #770738, #ddbb90)" }, { id: "sea-sky", name: "Sea Sky", css: "linear-gradient(to top, #38bdf8, #312e81)" }, { id: "skyline-whisper", name: "Skyline Whisper", css: "linear-gradient(#53a5df, #a9d2ef)" }, { id: "cotton-candy-shores", name: "Cotton Candy Shores", css: "linear-gradient(#32c7e5, #f078d5)" }, { id: "canary-shine", name: "Canary Shine", css: "linear-gradient(220.55deg, #fff500 0%, #ffb800 100%)" }, { id: "oahu-sunset", name: "Oahu Sunset", css: "linear-gradient(to top, #fb923c, #38bdf8)" }, { id: "polaroid-memories", name: "Polaroid Memories", css: "linear-gradient(to top, #040308, #ad4a28, #dd723c, #fc7001, #dcb697, #9ba5ae, #3e5879, #020b1a)" }, { id: "neon-nights", name: "Neon Nights", css: "linear-gradient(#f3b167, #ec38bc, #7303c0, #03001e)" }, { id: "soft-metal", name: "Soft Metal", css: "conic-gradient(at right top, rgb(199, 210, 254), rgb(71, 85, 105), rgb(199, 210, 254))" }, { id: "frosted-orchid", name: "Frosted Orchid", css: "linear-gradient(#ecadaf 0%, #e0b6a5 13.54%, #dc8b9d 30.21%, #c05ac9 44.27%, #b865cf 57.81%, #c3a7d9 71.87%, #c5c1e2 84.9%, #c6d8e4 100%)" }, { id: "spectral-summer", name: "Spectral Summer", css: "linear-gradient(to top, #3f51b1 0%, #5a55ae 13%, #7b5fac 25%, #8f6aae 38%, #a86aa4 50%, #cc6b8e 62%, #f18271 75%, #f3a469 87%, #f7c978 100%)" }, { id: "cold-breeze", name: "Cold Breeze", css: "conic-gradient(at center bottom, #ffffff, #0ea5e9, #0ea5e9)" }, { id: "cyberpop", name: "Cyberpop", css: "linear-gradient(135deg, #0e0220 0%, #000000 6px, #e40475 24.8%, #0e0220 35%, #48e0e4 56.3%, #48e0e4 62.4%, #ff00c8 72.9%, rgba(0, 0, 0, 0.86) 78.5%, #48e0e4 100%)" }, { id: "rainbow", name: "Rainbow", css: "linear-gradient(#e02020 0%, #fa6400 17%, #f7b500 33%, #6dd400 50%, #0091ff 67%, #6236ff 83%, #b620e0 100%)" }, { id: "candy-cane-breeze", name: "Candy Cane Breeze", css: "radial-gradient(at 30% -5%, #92f2f2, #d6cff1, rgba(255, 255, 255, 0) 25%), radial-gradient(at 50% 70%, #c4f2e5, rgba(255, 255, 255, 0) 30%), radial-gradient(at 70% 0%, #d6cff1, rgba(255, 255, 255, 0) 20%), linear-gradient(75deg, #92f2f2 5%, rgba(255, 255, 255, 0), #a8d0f0, rgba(255, 255, 255, 0), #eed5f2, rgba(255, 255, 255, 0), #d6cff1, rgba(255, 255, 255, 0), #c4f2e5 90%), radial-gradient(at 30% 50%, #92f2f2, rgba(255, 255, 255, 0) 30%), radial-gradient(at 30% 50%, #9cb9fc, rgba(255, 255, 255, 0) 30%), radial-gradient(at 100% 50%, #92f2f2, #c2dcf2, rgba(255, 255, 255, 0) 50%), linear-gradient(115deg, #92f2f2 5%, #a8d0f0 10%, #d6cff1, #eed5f2 20%, #a8d0f0, #a8d0f0 30%, #d6cff1, #c2dcf2 40%, #92f2f2, #a8d0f0 70%)" }, { id: "celestial-dreamscape", name: "Celestial Dreamscape", css: "radial-gradient(18% 28% at 24% 50%, #cefaff 7%, rgba(7, 58, 255, 0) 100%), radial-gradient(18% 28% at 18% 71%, rgba(255, 255, 255, 0.35) 6%, rgba(7, 58, 255, 0) 100%), radial-gradient(70% 53% at 36% 76%, #73f2ff 0%, rgba(7, 58, 255, 0) 100%), radial-gradient(42% 53% at 15% 94%, #ffffff 7%, rgba(7, 58, 255, 0) 100%), radial-gradient(42% 53% at 34% 72%, #ffffff 7%, rgba(7, 58, 255, 0) 100%), radial-gradient(18% 28% at 35% 87%, #ffffff 7%, rgba(7, 58, 255, 0) 100%), radial-gradient(31% 43% at 7% 98%, #ffffff 24%, rgba(7, 58, 255, 0) 100%), radial-gradient(21% 37% at 72% 23%, rgba(211, 255, 109, 0.61) 24%, rgba(7, 58, 255, 0) 100%), radial-gradient(35% 56% at 91% 74%, rgba(138, 79, 255, 0.96) 9%, rgba(7, 58, 255, 0) 100%), radial-gradient(74% 86% at 67% 38%, rgba(109, 255, 174, 0.96) 24%, rgba(7, 58, 255, 0) 100%), linear-gradient(125deg, #4eb5ff 1%, #4c00fc 100%)" }, { id: "dreamy-hues", name: "Dreamy Hues", css: "linear-gradient(97.92deg, #bc97c6 0%, #f6d2c8 6.33%, #f5e2c8 12.2%, #bde8d9 21.5%, #e8dfc6 34.83%, #edc7c6 44.22%, #e6bdcf 52.26%, #c7b2e5 60.55%, #b8bfe7 70.29%, #c3e1d3 79.4%, #eedfc5 89.06%, #e5b0c9 94.93%, #b495c5 100.7%)" }, { id: "pastel-daydream", name: "Pastel Daydream", css: "radial-gradient(at 40% 20%, #ffb87a 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 80% 0%, #1fddff 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 0% 50%, #fcdee1 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 73% 51%, #ff85ad 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 0% 100%, #ffb58a 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 80% 100%, #6b66ff 0px, rgba(0, 0, 0, 0) 50%), radial-gradient(at 0% 0%, #ff85a7 0px, rgba(0, 0, 0, 0) 50%)" }, { id: "rainbows-embrace", name: "Rainbow's Embrace", css: "radial-gradient(50% 100% at left -10% top 80%, #db0072, rgba(0, 0, 0, 0)), radial-gradient(50% 100% at left 25% top 60%, #ffe53e, rgba(0, 0, 0, 0)), radial-gradient(50% 100% at left 55% top 40%, #00ffe4, rgba(0, 0, 0, 0)), radial-gradient(50% 100% at left 90% top 20%, #d150ff, rgba(0, 0, 0, 0))" } ]; } }); // src/modules/custom-background/settings/index.js var settings_default16; var init_settings17 = __esm({ "src/modules/custom-background/settings/index.js"() { init_gradients(); settings_default16 = () => __async(void 0, null, function* () { const gradientOptions = gradients_default.map((gradient) => ({ name: gradient.name, value: gradient.id })); const options = [ { name: "Default", value: "default" }, { name: "Events", value: "group", options: [ { name: "Birthday", value: "birthday" }, { name: "Great Winter Hunt", value: "great_winter_hunt" }, { name: "Halloween", value: "halloween" }, { name: "Lunar New Year", value: "lunar_new_year" }, { name: "Spring Egg Hunt", value: "spring_hunt" }, { name: "Valentine's", value: "valentines" } ] }, { name: "Color", value: "group", options: [ { name: "Blue", value: "background-color-blue" }, { name: "Cyan", value: "background-color-cyan" }, { name: "Green", value: "background-color-green" }, { name: "Pink", value: "background-color-pink" }, { name: "Purple", value: "background-color-purple" }, { name: "Red", value: "background-color-red" }, { name: "Faded", value: "background-color-faded" } ] }, { name: "Gradients", value: "group", options: gradientOptions } ]; return [{ id: "custom-background", title: 'Custom Background <a class="mh-improved-custom-bg-preview hidden">Preview</a>', default: [options[0]], description: "Change the background to an event background, a color, or a gradient.", settings: { type: "multi-select", number: 1, options } }]; }); } }); // src/modules/custom-background/styles.css var styles_default22; var init_styles23 = __esm({ "src/modules/custom-background/styles.css"() { styles_default22 = ".pageFrameView-column.left{box-shadow:inset -10px 0 10px -10px #333}.pageFrameView-column.right{box-shadow:inset 10px 0 10px -10px #333}.pageFrameView .pageFrameView-column:before{background:transparent}body.mh-improved-bg-background-color-blue .pageFrameView-column.right,body.mh-improved-bg-background-color-blue .pageFrameView-column.left{filter:none}body.mh-improved-bg-background-color-cyan .pageFrameView-column.right,body.mh-improved-bg-background-color-cyan .pageFrameView-column.left{filter:hue-rotate(312deg)}body.mh-improved-bg-background-color-green .pageFrameView-column.right,body.mh-improved-bg-background-color-green .pageFrameView-column.left{filter:hue-rotate(266deg)}body.mh-improved-bg-background-color-pink .pageFrameView-column.right,body.mh-improved-bg-background-color-pink .pageFrameView-column.left{filter:hue-rotate(80deg)}body.mh-improved-bg-background-color-purple .pageFrameView-column.right,body.mh-improved-bg-background-color-purple .pageFrameView-column.left{filter:hue-rotate(51deg)}body.mh-improved-bg-background-color-red .pageFrameView-column.right,body.mh-improved-bg-background-color-red .pageFrameView-column.left{filter:hue-rotate(146deg)}body.mh-improved-bg-background-color-faded .pageFrameView-column.right,body.mh-improved-bg-background-color-faded .pageFrameView-column.left{filter:sepia(1)}#mousehunt-improved-settings-feature-custom-background .PagePreferences__settingLabel{position:relative}.mh-improved-custom-bg-preview{position:absolute;top:0;right:225px;bottom:0;display:flex;align-items:center;font-size:12px}.mh-improved-custom-background-gradient-preview{display:grid;grid-template-columns:1fr 1fr;gap:20px;height:80vh;padding-right:10px;margin-right:-10px;overflow:auto}.mh-improved-custom-background-gradient-preview .gradient{display:flex;flex-direction:column;place-content:center space-between;align-items:center;width:100%;height:200px;padding:10px 0;border:1px solid #626262;border-radius:5px}.mh-improved-custom-background-gradient-preview .name{font-size:22px;font-weight:900;color:#fff;text-shadow:0 1px 2px #000}\n"; } }); // src/modules/custom-background/index.js var addedClass, addBodyClass2, listenForPreferenceChanges, addPreview, persistBackground, init17, custom_background_default; var init_custom_background = __esm({ "src/modules/custom-background/index.js"() { init_utils2(); init_gradients(); init_settings17(); init_styles23(); addedClass = ""; addBodyClass2 = (preview = false) => { const body = document.querySelector("body"); if (!body) { return; } let setting = getSetting("custom-background-0", "default"); if (preview) { setting = preview; } if (addedClass) { if (Array.isArray(addedClass)) { addedClass.forEach((cls) => { body.classList.remove(cls); }); } else { body.classList.remove(addedClass); } addedClass = ""; } const style = document.querySelector("#mh-improved-custom-background-style"); if (style) { style.remove(); } if ("default" === setting) { return; } const background = `mh-improved-bg-${setting}`; body.classList.add(background, setting); addedClass = [background, setting]; if (setting.startsWith("background-color-")) { body.classList.remove(setting); body.classList.add(background); addedClass = background; } if (!gradients_default) { return; } const gradient = gradients_default.find((g) => g.id === setting); if (!gradient) { return; } const gradientStyle = document.createElement("style"); gradientStyle.id = "mh-improved-custom-background-style"; gradientStyle.innerHTML = `.mh-improved-custom-background-gradient-preview, body.${background} .pageFrameView-column.right.right, body.${background} .pageFrameView-column.left.left { background-color: transparent !important; background-image: none !important; } @media only screen and (max-width: 1000px) { body.${background}.hasSidebar .pageFrameView, body.${background} .pageFrameView-column.right.right, body.${background} .pageFrameView-column.left.left { background-color: transparent !important; background-image: none !important; } } body.${background} { background: ${gradient.css}; background-attachment: fixed; }`; document.head.append(gradientStyle); }; listenForPreferenceChanges = () => { const input = document.querySelector("#mousehunt-improved-settings-design-custom-background select"); if (!input) { return; } input.addEventListener("change", () => { addBodyClass2(); }); }; addPreview = () => { const previewLink = document.querySelector(".mh-improved-custom-bg-preview"); if (!previewLink) { return; } previewLink.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); let content = ""; gradients_default.forEach((gradient) => { content += `<div class="gradient" style="background: ${gradient.css}"> <div class="name">${gradient.name}</div> <div class="controls"> <div class="mousehuntActionButton lightBlue mh-improved-custom-bg-action-button" data-gradient="${gradient.id}" data-action="preview"><span>Preview</span></div> <div class="mousehuntActionButton mh-improved-custom-bg-action-button" data-gradient="${gradient.id}" data-action="use"><span>Use</span></div> </div> </div>`; }); const popup = createPopup({ title: "", className: "mh-improved-custom-background-gradient-preview-popup", content: `<div class="mh-improved-custom-background-gradient-preview">${content}</div>`, show: false }); popup.show(); const previewActions = document.querySelectorAll(".mh-improved-custom-bg-action-button"); previewActions.forEach((action) => { const gradient = action.getAttribute("data-gradient"); const actionType = action.getAttribute("data-action"); action.addEventListener("click", (evt) => { evt.preventDefault(); if ("preview" === actionType) { addBodyClass2(gradient); } else if ("use" === actionType) { const input = document.querySelector("#mousehunt-improved-settings-design-custom-background select"); if (input) { input.value = gradient; input.dispatchEvent(new Event("change")); } popup.hide(); } }); }); }); }; persistBackground = () => { addBodyClass2(); onNavigation(() => { addBodyClass2(); setTimeout(addBodyClass2, 250); setTimeout(addBodyClass2, 500); }); onNavigation(() => { listenForPreferenceChanges(); addPreview(); }, { page: "preferences", onLoad: true }); }; init17 = () => __async(void 0, null, function* () { addStyles(styles_default22, "custom-background"); persistBackground(); }); custom_background_default = { id: "custom-background", type: "design", alwaysLoad: true, load: init17, settings: settings_default16 }; } }); // src/modules/better-ui/friends.js var reorderBlocks, autofocusIdSearch, friends_default; var init_friends = __esm({ "src/modules/better-ui/friends.js"() { init_utils2(); reorderBlocks = () => { if ("friends" !== getCurrentPage()) { return; } const reordered = document.querySelector(".mousehuntHud-page-subTabContent.community"); if (!reordered || reordered.getAttribute("data-reordered")) { return; } const blocks = document.querySelectorAll(".friendsPage-community-channel"); if (!blocks || blocks.length < 3) { return; } const block = blocks[2]; const parent = block.parentNode; block.remove(); parent.insertBefore(block, parent.firstChild); block.classList.add("friends-page-id-search"); const input = block.querySelector("input"); if (input) { input.setAttribute("data-1p-ignore", "true"); } reordered.setAttribute("data-reordered", "true"); }; autofocusIdSearch = () => { const input = document.querySelector(".friendsPage-community-hunterIdForm-input"); if (!input) { return; } input.focus(); }; friends_default = () => __async(void 0, null, function* () { onNavigation(reorderBlocks, { page: "friends" }); onNavigation(autofocusIdSearch, { page: "friends", tab: "requests", subtab: "community" }); }); } }); // src/modules/better-ui/hud.js var showFullTitlePercent, replaceInboxClose, replaceKingdomLink, hud_default; var init_hud = __esm({ "src/modules/better-ui/hud.js"() { init_utils2(); showFullTitlePercent = () => __async(void 0, null, function* () { const title = document.querySelector(".mousehuntHud-userStat.title"); if (!title) { return; } const percent = title.getAttribute("title"); if (!percent) { return; } const target = title.querySelector(".hud_titlePercentage"); if (!target) { return; } const originalText = target.innerText; title.addEventListener("mouseover", () => { target.innerText = percent.includes("%") ? percent.split("%")[0] : percent; }); title.addEventListener("mouseout", () => { target.innerText = originalText; }); }); replaceInboxClose = () => __async(void 0, null, function* () { const template = hg.utils.TemplateUtil.getTemplate("ViewMousehuntHeader_inbox").replace('<a class="messengerUINotificationClose" href="#">X', '<a class="messengerUINotificationClose" href="#">\u2715'); hg.utils.TemplateUtil.addTemplate("ViewMousehuntHeader_inbox", template); }); replaceKingdomLink = () => __async(void 0, null, function* () { const kingdomLink = document.querySelector('.mousehuntHud-menu .kingdom a[href="https://www.mousehuntgame.com/forum.php"]'); if (!kingdomLink) { return; } kingdomLink.href = "https://www.mousehuntgame.com/news.php"; kingdomLink.setAttribute("data-page", "News"); }); hud_default = () => __async(void 0, null, function* () { showFullTitlePercent(); replaceInboxClose(); replaceKingdomLink(); onTurn(showFullTitlePercent, 1e3); }); } }); // src/modules/better-ui/userscript-styles/favorite-setups.css var favorite_setups_default; var init_favorite_setups = __esm({ "src/modules/better-ui/userscript-styles/favorite-setups.css"() { favorite_setups_default = "#tsitu-fave-setups{z-index:100}\n"; } }); // src/modules/better-ui/userscript-styles/journal-historian.css var journal_historian_default; var init_journal_historian = __esm({ "src/modules/better-ui/userscript-styles/journal-historian.css"() { journal_historian_default = '.journalContainer .top:hover .journalContainer-selectTheme[style="position: initial;transform: none;flex: 1 1 auto;height: 20px;background: none rgb(119, 221, 119);padding: 0px 0px 0px 5px;"]:last-child{background-image:none}.journalContainer .top:hover .journalContainer-selectTheme[style="position: initial;transform: none;flex: 1 1 auto;height: 20px;background: none rgb(119, 221, 119);padding: 0px 0px 0px 5px;"]{display:inline-flex;justify-content:center;padding:0!important}.journalContainer .top:hover .journalContainer-selectTheme[style="position: initial;transform: none;flex: 1 1 auto;height: 20px;background: none rgb(119, 221, 119);padding: 0px 0px 0px 5px;"]:hover{background-color:#5dd55d!important}\n'; } }); // src/modules/better-ui/userscript-styles/lgs-reminder.css var lgs_reminder_default; var init_lgs_reminder = __esm({ "src/modules/better-ui/userscript-styles/lgs-reminder.css"() { lgs_reminder_default = "span.shieldDurationText,span.shieldDurationText[data-near-expiry=true]{bottom:-2px;z-index:1;font-size:15px;font-weight:900;text-shadow:0 0 1px #000,0 0 2px #000,0 0 3px #000}span.shieldDurationText[data-near-expiry=true]{color:#f12e2e}\n"; } }); // src/modules/better-ui/userscript-styles/mhct.css var mhct_default2; var init_mhct2 = __esm({ "src/modules/better-ui/userscript-styles/mhct.css"() { mhct_default2 = "#mhhh_flash_message_div{position:fixed!important;top:unset!important;right:10px;bottom:10px;left:unset!important;width:auto!important;font-weight:400!important;white-space:nowrap;background-color:#bff890!important;border-radius:10px;box-shadow:0 1px 3px -1px #000!important;opacity:1!important}\n"; } }); // src/modules/better-ui/userscript-styles/profile-plus.css var profile_plus_default; var init_profile_plus = __esm({ "src/modules/better-ui/userscript-styles/profile-plus.css"() { profile_plus_default = ".mouseCrownsView-group.favourite .mouseCrownsView-group-header .mouseCrownsView-crown,.mouseCrownsView-group.favourite .mouseCrownsView-group-header-name{display:inline-block}.mouseCrownsView-group-header-subtitle{margin-left:0}.mouseCrownsView-group-mouse-favouriteButton{top:2px;left:2px}.mouseCrownsView .pt.event{border-radius:50%}.mouseCrownsView #copyCrownsButton{width:16px!important;height:16px!important;background-color:transparent!important;border:none!important}.mouseCrownsView .pt{position:absolute;top:3px;right:3px;padding:2px;border-radius:50%}.mouseCrownsView button.ptbtn{font-size:14px!important;background-color:#9fcad8!important;border:1px solid #008cba}.mouseCrownsView button.ptbtn img{width:20px!important;height:20px!important}.mouseCrownsView #powerTypeBtns{display:flex;flex-direction:row;gap:5px}.mouseCrownsView .toolBar{position:absolute;top:-1px;right:9px;display:flex;gap:2px;align-items:center;justify-content:flex-end;float:none!important;padding:1px;background-color:#d1d1d1;border:1px solid #a7a7a7;border-radius:0 5px}.powerCrown .mouseCrownsView-group-header-name,.mouseCrownsView-crown.powerCrown{display:none!important}.mouseCrownsView-group-header.powerCrown{padding:0;margin:0;background-color:transparent!important}button.ptbtn img{left:unset!important;width:auto!important;height:50px!important}.mouseCrownsView button.ptbtn>div{top:unset!important;right:unset!important;bottom:unset!important;left:unset!important;width:unset!important}button.ptbtn{display:grid;grid-template-columns:1fr 2fr 2fr;place-content:center flex-start;place-items:center center;width:100%!important;max-width:180px;height:unset!important;background-color:#00b0eb!important;border-width:1px}#powerTypeBtns{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;padding:6px;margin:0;background-color:transparent}.mouseCrownsView-crown.community{padding-right:5px}.mouseCrownsView-group-header.community{margin:10px}.rank.summary{line-height:1.5}img.pt.undefined{display:none}a.mouseListView-categoryContent-subgroup-mouse-thumb{position:relative;border:none!important;border-radius:0!important}.mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.mouseCrownsView-group-mice.favourites img.pt{display:none}\n"; } }); // src/modules/better-ui/userscript-styles/spring-egg-hunt-helper.css var spring_egg_hunt_helper_default; var init_spring_egg_hunt_helper = __esm({ "src/modules/better-ui/userscript-styles/spring-egg-hunt-helper.css"() { spring_egg_hunt_helper_default = ".eggs-wrapper .egg-wrapper-unfound img{filter:sepia(1);mix-blend-mode:multiply;opacity:.5}\n"; } }); // src/modules/better-ui/userscript-styles/tsitu-autoloader.css var tsitu_autoloader_default; var init_tsitu_autoloader = __esm({ "src/modules/better-ui/userscript-styles/tsitu-autoloader.css"() { tsitu_autoloader_default = "#mht-bookmarklet-loader{width:225px!important;padding:0 0 20px!important;color:transparent;background:#f6f3eb!important;border:1px solid #534022!important;border-radius:0!important;box-shadow:1px 1px 1px #9d917f,1px 3px 5px #6a6969}#mht-bookmarklet-loader button:first-of-type{position:absolute;top:7px;right:5px;width:20px;height:20px;padding:0;margin:0;font-size:16px;color:#fff;background-color:transparent;border:none;box-shadow:none}#mht-bookmarklet-loader button:first-of-type:hover{color:#926944;background-color:#eee;border-radius:50%;outline:1px solid #ccc}#mht-bookmarklet-loader br+br,#mht-bookmarklet-loader br:first-of-type,#mht-bookmarklet-loader span[style*=font-size]{display:none}#mht-bookmarklet-loader span:first-of-type{display:flex;align-items:center;justify-content:space-between;padding:10px!important;margin-bottom:-30px;font-weight:400!important;color:#f6f3eb;cursor:grab;background-color:#926944;border-bottom:1px solid #ceb7a6}#mht-bookmarklet-loader button{width:174px;padding:5px 15px;margin:0;color:#000;text-shadow:0 0 1px #fff;background-color:#fff600;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}#mht-bookmarklet-loader button:hover{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}#mht-bookmarklet-loader span{color:#000}#mht-bookmarklet-loader span:nth-of-type(2){position:absolute;right:0;bottom:4px;left:0}#mht-bookmarklet-loader span:nth-of-type(3){position:absolute;right:0;bottom:20px;left:0;display:inline;margin:0}\n"; } }); // src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css var tsitu_location_catch_stats_default; var init_tsitu_location_catch_stats = __esm({ "src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css"() { tsitu_location_catch_stats_default = '#tsitu-location-stats{width:300px!important;padding:0!important;background:#f6f3eb!important;border:1px solid #534022!important;border-radius:0!important;box-shadow:1px 1px 1px #9d917f,1px 3px 5px #6a6969!important}#tsitu-location-stats span[style="font-weight: bold; font-size: 18px; text-decoration: underline; padding-left: 20px;"]{display:flex;align-items:center;justify-content:space-between;padding:10px!important;font-size:1.5em!important;font-weight:400!important;color:#f6f3eb;text-decoration:none!important;cursor:grab;background-color:#926944;border-bottom:1px solid #ceb7a6}#tsitu-location-stats button[style="float: right; font-size: 8px;"]{position:absolute;top:7px;right:5px;width:20px;height:20px;font-size:16px!important;color:#fff;background-color:transparent;border:none}#tsitu-location-stats button[style="float: right; font-size: 8px;"]:hover{color:#926944;background-color:#eee;border-radius:50%;outline:1px solid #926944}#tsitu-location-stats>div br{display:none}#tsitu-location-stats>div span br{display:block}#tsitu-location-stats>div span br:first-child,#tsitu-location-stats>div span br:last-child{display:none}#tsitu-location-stats>div span{line-height:20px}#tsitu-location-stats>div span>button,.tsitu-current-detail>span>button,#tsitu-location-stats>button{padding:2px 15px;margin:10px 0;line-height:1.5;color:#000;text-shadow:0 0 1px #fff;background-color:#fff600;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}#tsitu-location-stats>div span>button:hover,.tsitu-current-detail>span>button:hover,#tsitu-location-stats>button:hover{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}#tsitu-location-stats>div span>button{display:inline;padding:3px 5px;margin:.25em .75em;line-height:1}.tsitu-current-detail>span>button{display:block;margin:.25em auto}#tsitu-hideCaught-box{margin:0 3px;vertical-align:bottom}#tsitu-location-stats>span{padding:.125em;font-size:.9em}#tsitu-location-stats details{position:relative;padding:.5em}#tsitu-location-stats details details:nth-child(2n){background-color:#e8e3d7}#tsitu-location-stats details[style="font-size: 16px;"]{margin:.25em 0;border-top:1px solid #926944}#tsitu-complete-box,#tsitu-incomplete-box{position:absolute;top:0;right:0}.tsitu-complete-box-label,.tsitu-incomplete-box-label{position:absolute;top:3px;right:20px;font-size:10px!important;color:#7b6b47;text-align:right}#tsitu-location-stats details[style="font-size: 16px;"]>summary{margin:.5em 0}.tsitu-current-detail>span{line-height:1.5}#tsitu-location-stats span[style="font-style: italic; font-size: 12px;"]{display:block;margin-left:1.5em;font-size:10px!important;line-height:2;color:#7b6b47}.tsitu-current-detail>br:first-of-type,.tsitu-current-detail>span br:nth-of-type(1),.tsitu-current-detail>span br:nth-of-type(2),.tsitu-current-detail>span br:nth-last-of-type(1),.tsitu-current-detail>span br:nth-last-of-type(2){display:none}#tsitu-location-stats>div>span:last-of-type{display:inline-block;margin-top:5px}\n'; } }); // src/modules/better-ui/userscript-styles/tsitu-qol.css var tsitu_qol_default; var init_tsitu_qol = __esm({ "src/modules/better-ui/userscript-styles/tsitu-qol.css"() { tsitu_qol_default = "#tsitu-hunter-id-nav-ui input{flex:none!important;width:75px!important;margin:3px;border:1px solid #000!important;border-radius:2px}#tsitu-hunter-id-nav-ui button{padding:2px!important;margin:3px 1px!important;background-color:#d8e3f1;border:1px solid #000!important;border-radius:3px!important}#tsitu-hunter-id-nav-ui{display:inline-flex!important;align-items:center;border:none}\n"; } }); // src/modules/better-ui/userscript-styles/tsitu-supply-search.css var tsitu_supply_search_default; var init_tsitu_supply_search = __esm({ "src/modules/better-ui/userscript-styles/tsitu-supply-search.css"() { tsitu_supply_search_default = "#tsitu-supply-search{position:absolute;top:-2px;right:0;display:flex;align-items:center;vertical-align:middle;border:none!important}#tsitu-supply-search label{display:none}#tsitu-supply-search button{height:20px;padding:0 10px;line-height:19px;color:#000;text-shadow:0 0 1px #fff;background-color:#fff600;border:1px solid #000;border-radius:5px;box-shadow:inset 0 0 5px #fff,1px 1px 1px #fff}#tsitu-supply-search input{padding:2px;margin-right:2px;font-size:12px!important}\n"; } }); // src/modules/better-ui/styles/adventure.css var adventure_default; var init_adventure = __esm({ "src/modules/better-ui/styles/adventure.css"() { adventure_default = '.adventureBookBanner-container{padding-bottom:5px;margin-bottom:20px;overflow:hidden;line-height:16px;background-color:#fbf8f6;border:1px solid #d3cecb;border-radius:3px;box-shadow:inset -1px 1px 3px #d3cecb}.adventureBookBanner-adventureName,.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .adventureBookBanner-adventureName{padding:15px 5px 0;margin-left:75px;overflow:hidden;font-size:13px;font-style:italic;font-weight:400;line-height:15px;color:#333;text-overflow:ellipsis;white-space:nowrap;background:transparent;border-radius:0}.mh-dark-mode .adventureBookBanner-container{color:#000;background-color:#999;border:1px solid #d3cecb;border-radius:3px;box-shadow:inset -1px 1px 3px #888}.adventureBookBanner-adventureName span{display:none}.adventureBookBanner-goalContainer{right:0;left:0;display:flex;align-items:flex-start;justify-content:space-between;background:none;box-shadow:none}.adventureBookPopup-adventureContainer.highlight{box-shadow:none}.adventureBookBanner-adventureImage{height:45px;background-image:none!important}.adventureBookBanner-goalPadding{margin-left:75px}.adventureBookBanner-goalImage{position:absolute;top:-25px;left:10px;width:60px;height:60px;border-radius:5px;box-shadow:none}.adventureBookBanner-goalName{width:auto;height:auto}.adventureBookBanner-goalEnvironment{display:inline}.adventureBookBanner-goalName-padding .adventureBookBanner-goalEnvironment:before{content:". "}.adventureBookBanner-moreInfo{position:absolute;right:5px;bottom:-6px;display:inline-block;width:auto;height:auto;padding:1px 1px 1px 10px;font-size:9px;color:#3b5998;background:none;box-shadow:none}.adventureBookBanner-completed b{font-size:10px}.adventureBookBanner-completed{top:0;bottom:20px;left:75px;background:none;box-shadow:none}.adventureBookBanner-completedCheckmark{top:-10px;background-color:#fff;box-shadow:0 0 10px #94ff65,0 0 10px #94ff65}.adventureBookBanner-goalName-padding{display:block;width:auto;height:auto}.adventureBookBanner-goalName-padding span{display:block}.adventureBookBanner-moreInfo:after{content:" \\2192"}.adventureBookBanner-container:hover .adventureBookBanner-moreInfo{color:#3b5998;text-decoration:underline;text-shadow:none;background:none;box-shadow:none}.adventureBookBanner-goalWrapper.multi_choice.spacer{min-width:30px}.adventureBookPopup-adventure-details-block.requirements .adventureBookPopup-adventure-details-block-step.incomplete{box-shadow:0 1px 2px 1px #5c1c1c}.adventureBookPopup-adventure-details-environment-image{width:40px;height:40px;margin-bottom:10px}.adventureBookBanner-complete .adventureBookBanner-adventureName{display:none}.adventureBookBanner-complete .adventureBookBanner-completedCheckmark{top:10px;width:30px;height:30px;background-color:transparent;box-shadow:none}.adventureBookBanner-complete .adventureBookBanner-completed{font-size:11px}.adventureBookBanner-complete .adventureBookBanner-completed b{margin-bottom:5px;font-size:13px}.adventureBookBanner-complete .adventureBookBanner-moreInfo{top:unset}a.adventureBookPopup-title{display:block;height:auto;margin-bottom:4px;margin-left:10px;text-align:right;background:#eee;border:1px solid #ccc;border-right:none;border-radius:10px 0 0 10px}.adventureBookPopup-title-margin{padding:3px 15px}img.adventureBookPopup-title-icon{left:5px;height:20px}.adventureBookPopup-title.complete .adventureBookPopup-title-status{top:3px;left:3px;width:20px;height:20px;padding:2px;background:url(https://www.mousehuntgame.com/images/ui/hud/meadow_checkmark.png?asset_cache_version=3) 0 0 no-repeat;background-color:#eeeeee7f;background-size:cover;border-radius:50px}.adventureBookPopup-title-name{padding-left:16px;margin:0}a.adventureBookPopup-title:hover{background:#dfdcdc}a.adventureBookPopup-title.active{margin-left:2px;color:#fff;background:#354661}.adventureBookPopup-title.active .adventureBookPopup-title-icon{top:6px;left:5px}.adventureBookPopup-titleDirectory{padding-top:5px;padding-bottom:5px;margin-top:-5px;margin-bottom:5px;border-right:1px solid #ccc}.adventureBookPopup-header-title{margin-bottom:5px}.adventureBookPopup-adventureContainer.canClaim .adventureBookPopup-adventure-footer{box-shadow:-120px 0 50px #6bff75 inset}.adventureBookPopup-adventureContainer.claimed .adventureBookPopup-adventure-footer-claim.adventureBookPopup-adventure-button{border:1px solid #158f00;box-shadow:none}\n'; } }); // src/modules/better-ui/styles/corkboard.css var corkboard_default; var init_corkboard = __esm({ "src/modules/better-ui/styles/corkboard.css"() { corkboard_default = '.treasureMapRootView .messageBoardView .messageBoardView-message-container-padding,.teamPage-messageBoard-corkboard .messageBoardView-message-container-padding,.PageHunterProfile .messageBoardView-message-container-padding{background:none}.treasureMapRootView .messageBoardView div.messageBoardView-message-container,.teamPage-messageBoard-corkboard div.messageBoardView-message-container,.hunterInfoView-wrapper div.messageBoardView-message-container{margin:0;background:#e9e1c6;border:1px solid #985f42;border-radius:10px;box-shadow:-1px 2px 1px #a59f8e}.teamPage-messageBoard-corkboard div.messageBoardView-message-container{background:#e2d6b5;border-color:#af9969;box-shadow:1px 1px 1px #e2d6b5 inset}.treasureMapRootView .messageBoardView div.messageBoardView-message-container,.teamPage-messageBoard-corkboard .messageBoardView-message-container{background:#eee;border-color:#ccc;border-radius:0;box-shadow:none}.mh-dark-mode .treasureMapRootView .messageBoardView div.messageBoardView-message-container,.mh-dark-mode .teamPage-messageBoard-corkboard .messageBoardView-message-container{background:#333;border-color:#0c0c0c}.treasureMapRootView .messageBoardView .messageBoardView-message,.teamPage-messageBoard-corkboard .messageBoardView-message,.hunterInfoView-corkBoardBlock .messageBoardView-message{background:#fff;border:1px solid #bea87b;border-radius:8px;box-shadow:none}.teamPage-messageBoard-corkboard .messageBoardView-message.new,.hunterInfoView-corkBoardBlock div.messageBoardView-message.new{border:1px solid #bea87b!important}.treasureMapRootView .messageBoardView div.messageBoardView-message.new{border:1px solid #ccc!important}.mh-dark-mode .treasureMapRootView .messageBoardView div.messageBoardView-message.new{background-color:#191919;border-color:#2c2c2c!important}.treasureMapRootView .messageBoardView input.messageBoardView-message-submit,.teamPage-messageBoard-corkboard input.messageBoardView-message-submit,.hunterInfoView-corkBoardBlock input.messageBoardView-message-submit{margin:6px 0}input.messageBoardView-message-submit,input.messageBoardView-message-submit[type=submit]{padding:2px 15px;line-height:18px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}input.messageBoardView-message-submit:hover,input.messageBoardView-message-submit[type=submit]:hover,input.messageBoardView-message-submit:focus,input.messageBoardView-message-submit[type=submit]:focus{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}.treasureMapRootView .messageBoardView .messageBoardView-message-description,.teamPage-messageBoard-corkboard .messageBoardView-message-description,.hunterInfoView-corkBoardBlock .messageBoardView-message-description{padding-top:12px}.treasureMapRootView .messageBoardView a.messageBoardView-message-image,.teamPage-messageBoard-corkboard a.messageBoardView-message-image,.hunterInfoView-corkBoardBlock a.messageBoardView-message-image{border:1px solid #ccc;box-shadow:none}.treasureMapRootView .messageBoardView a.messageBoardView-message-name,.teamPage-messageBoard-corkboard a.messageBoardView-message-name,.hunterInfoView-corkBoardBlock a.messageBoardView-message-name{display:block;padding-bottom:5px}.treasureMapRootView .messageBoardView .messageBoardView-message-submitted,.teamPage-messageBoard-corkboard .messageBoardView-message-submitted,.hunterInfoView-corkBoardBlock .messageBoardView-message-submitted{color:#767676}.treasureMapRootView .messageBoardView .messageBoardView-message-body,.teamPage-messageBoard-corkboard .messageBoardView-message-body,.hunterInfoView-corkBoardBlock .messageBoardView-message-body{font-size:11px;font-weight:400;line-height:16px;color:#454545}.treasureMapRootView .messageBoardView .messageBoardView-message:after,.teamPage-messageBoard-corkboard .messageBoardView-message:after,.hunterInfoView-corkBoardBlock .messageBoardView-message:after{display:none}.treasureMapRootView .messageBoardView .pagerView-section.previous .pagerView-link,.teamPage-messageBoard-corkboard .pagerView-section.previous .pagerView-link,.hunterInfoView-corkBoardBlock .pagerView-section.previous .pagerView-link{color:#525252}a.messageBoardView-message-image{background-position:center;background-size:cover}a.messageBoardView-message-delete{right:10px;color:transparent}a.messageBoardView-message-delete:after{font-size:16px;color:#e03a3a;content:"\\2715"}a.messageBoardView-message-delete:hover:after,a.messageBoardView-message-delete:focus:after{color:#b72929}.friendsProfileView-selfStats{padding-top:15px}.mh-dark-mode .pageFrameView .hunterInfoView-wrapper .hunterInfoView-left a.friendsProfileView-randomFriend,.mh-dark-mode .pageFrameView .hunterInfoView-wrapper .messageBoardView-title{color:#242424}.mh-dark-mode .treasureMapRootView .messageBoardView .messageBoardView-message-body,.mh-dark-mode .teamPage-messageBoard-corkboard .messageBoardView-message-body,.mh-dark-mode .hunterInfoView-corkBoardBlock .messageBoardView-message-body{color:#fff}.mh-dark-mode .treasureMapView .messageBoardView-message{background:#333}.mh-dark-mode .messageBoardView-message-submitted{color:#ccc}.mh-dark-mode.PageHunterProfile .pageFrameView .hunterInfoView-wrapper .hunterInfoView-left a.messageBoardView-message-delete{color:transparent}\n'; } }); // src/modules/better-ui/styles/daily-draw.css var daily_draw_default; var init_daily_draw = __esm({ "src/modules/better-ui/styles/daily-draw.css"() { daily_draw_default = '.dailydraw{display:grid;grid-template-columns:1fr 1fr;gap:10px;place-content:space-evenly center;place-items:stretch stretch;margin:0 auto}.drawPage-ballot{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;float:none;margin:0}.drawPage-ballot .entries{background-color:#ffe8aa;border-radius:10px}.ballotEntry{display:flex;flex-direction:column;align-items:center;float:none;padding:0;margin:0;background-color:#ffe8aa}.dailydraw div[style="clear: both; padding-top: 10px;"],.dailydraw div[style="clear: both; padding-top: 20px;"]{display:none}.ballotEntry .prizeHeader{width:100%;padding:0;margin:0}.dailydraw h2,.ballotEntry .prizeHeader h3{width:auto;padding:10px;margin:0;font-size:15px;font-weight:400;background-color:transparent}.recentWinners,.socialBallots,.drawPage-ballot,.ballotEntry{border:1px solid #fc6}.drawPage-ballot img{width:150px}.recentWinners .draw{display:flex;float:none;width:auto;padding:10px}.recentWinners .draw img{width:60px}.prizeContent{display:flex;align-items:center;padding:10px}.ballotEntry .prizeContent .prizeDesc{float:none;line-height:20px}.ballotEntry .entryForm span,.ballotEntry .entryForm br{display:none}form#ballotPurchaseForm{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;width:a}.ballotEntry .entryForm .confirmTotal{margin:10px}div#ballotPurchase input{padding:2px 15px;margin-left:5px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}div#ballotPurchase input:hover,div#ballotPurchase input:focus{background-color:#e4d50c}div#ballotConfirm input{height:25px;margin-left:10px!important}div#ballotConfirm{position:relative}div#ballotConfirm a{position:absolute;top:5px;right:-25px}div#ballotPurchase,div#ballotConfirm{width:110px;height:21px}.socialBallots p{padding:0 10px;line-height:16px}.recentWinners .draw:last-child{border-bottom:none}.PageDraw .flexibleDialogWarmBrown.shopDescription{height:25px;visibility:hidden}.flexibleDialogWarmBrown.shopDescription img{float:none}.flexibleDialogWarmBrown.shopDescription b{position:absolute;top:-40px;right:0;left:0;display:block;font-size:19px;color:#261900;text-align:center;text-shadow:0 1px 1px #fc6;visibility:visible}.recentWinners .draw .drawContent{display:flex;flex-direction:column;align-items:stretch;justify-content:space-around;float:none}.ballot_qty{text-align:center}div#ballotTotal:after{content:" gold"}div#ballotTotal.error:after{content:""}\n'; } }); // src/modules/better-ui/styles/events.css var events_default2; var init_events3 = __esm({ "src/modules/better-ui/styles/events.css"() { events_default2 = ".MiniEventGiveawayCampHUD-popup-content-prize-name span{font-size:11px}.MiniEventGiveawayCampHud-popup-recruit-info{padding:10px;color:#939393}\n"; } }); // src/modules/better-ui/styles/footer.css var footer_default; var init_footer = __esm({ "src/modules/better-ui/styles/footer.css"() { footer_default = '.pageFrameView-footer{position:relative;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-start;margin:-40px 55px 0 70px;line-height:17px}.pageFrameView-footer a img{width:auto;max-height:25px;margin:5px 10px 0 0;opacity:.2;transition:.2s ease-in}.pageFrameView-footer a:nth-child(4){margin-right:auto}.pageFrameView-footer a:nth-child(4) img{filter:sepia(1);opacity:.7}.pageFrameView-footer:hover a img,.pageFrameView-footer:hover a:nth-child(4) img{filter:none;opacity:1}.pageFrameView-footer-linksContainer{display:block;width:auto;margin-right:auto;font-weight:900}.pageFrameView-footer br{display:none}.pageFrameView-footer-ad{position:absolute;right:-40px;bottom:-160px;left:-60px}.mousehuntFooter{position:relative;margin-top:0;border-top:none}.pageFrameView-content{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.mousehuntFooter-image{display:flex;flex-direction:row-reverse;color:transparent;background:url(https://i.mouse.rip/footer.png?1) no-repeat top center;border-top:none;border-bottom:none;border-radius:5px}.mousehuntFooter-image:before{position:absolute;top:0;right:0;left:0;width:100%;height:44px;content:"";box-shadow:inset 0 -4px 7px -6px #755e40}.mousehuntFooter-toggleMobile{position:absolute;display:flex;align-items:center;width:0;height:0;color:transparent;opacity:.4;transition:.3s;transform-origin:center}.mousehuntFooter-toggleMobile:hover{opacity:1}.mousehuntFooter-toggleMobile:after{position:absolute;inset:-15px 0 0 -30px;display:block;width:28px;height:28px;padding:8px;margin:0;font-size:11px;font-weight:100;line-height:10px;color:#000;text-align:center;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hud/menu/camp.png?asset_cache_version=2);filter:grayscale(1);background-repeat:no-repeat;background-position:center;background-size:50%}\n'; } }); // src/modules/better-ui/styles/friends.css var friends_default2; var init_friends2 = __esm({ "src/modules/better-ui/styles/friends.css"() { friends_default2 = ".sendMapInvite .userInteractionButtonsView-button-buttonOptionContainer .userInteractionButtonsView-button-buttonOption-name{padding:3px 3px 8px;margin:-3px;font-size:10px;line-height:11px}.sendMapInvite .userInteractionButtonsView-button-buttonOptionContainer .userInteractionButtonsView-button-buttonOption-image{padding-top:2px;margin-top:2px}.sendMapInvite .mousehuntTooltip.top.tight.hasBuffer{font-size:11px}.sendMapInvite .userInteractionButtonsView-button-buttonOptionContainer .userInteractionButtonsView-button-buttonOption:before{background:none}.sendMapInvite .userInteractionButtonsView-button-buttonOptionContainer:hover .userInteractionButtonsView-button-buttonOption:hover .userInteractionButtonsView-button-buttonOption-image,.sendMapInvite .userInteractionButtonsView-button-buttonOptionContainer:hover .userInteractionButtonsView-button-buttonOption:hover .userInteractionButtonsView-button-buttonOption-name{background-color:#eaf6ea}.friendsPage-community-channel.friends-page-id-search{display:flex;align-items:center;justify-content:space-between;background-color:#dcf7ff;border:1px solid #a1a1a1;box-shadow:0 1px 2px -1px #b5b5b5}.friends-page-id-search .friendsPage-community-channel-text{display:none}.friends-page-id-search .friendsPage-community-channel-action{position:relative;right:0;margin:0}.friends-page-id-search input.friendsPage-community-hunterIdForm-input{width:175px;padding:5px;border:1px solid #767676}.friends-page-id-search .friendsPage-community-channel-hunterId{display:none}.friends-page-id-search label{padding:0}.friends-page-id-search form.friendsPage-community-hunterIdForm{display:flex;flex-direction:row;align-items:center;justify-content:flex-end}.friendsPage-friendRow-stat-label{display:none}.friendsPage-friendRow-stat.online .friendsPage-friendRow-stat-label{display:inline-block}.friendsPage-friendRow-stat.map span{width:180px}.friendsPage-friendRow-stat.points,.friendsPage-friendRow-stat.gold{width:16%}.friendsPage-friendRow-stat.map{width:28%}\n"; } }); // src/modules/better-ui/styles/general.css var general_default4; var init_general4 = __esm({ "src/modules/better-ui/styles/general.css"() { general_default4 = '#mousehuntContainer.PageCamp{background:url(https://i.mouse.rip/bg-wood.png);box-shadow:inset 0 0 8px #755e40}.campPage-trap-friendList.full,.campPage-trap-itemStats,.campPage-trap-trapEffectiveness,.campPage-trap-armedItem,.campPage-trap-armedItem.bait.active,.campPage-trap-armedItem.bait,.campPage-trap-armedItem.skin,.campPage-trap-armedItem.mh-favorite-setups-button{border:1px solid #d3cecb;border-radius:4px;box-shadow:-1px 1px 3px #d3cecb inset}.campPage-trap-itemStats{background-color:transparent}.campPage-trap-armedItem.bait.active{box-shadow:-1px -1px 1px #d3cecb inset}.campPage-trap-armedItem:hover,.campPage-trap-armedItem:focus,.campPage-trap-armedItem.inactive:hover,.campPage-trap-armedItem.inactive:focus,.campPage-trap-armedItem.active:hover,.campPage-trap-armedItem.active:focus{background-color:#e9e6df}.campPage-trap-armedItem.active,.campPage-trap-armedItem.skin.active{top:0}.mh-favorite-setups-button.campPage-trap-armedItem.active,.campPage-trap-armedItem.active{background-color:#e9e6df}.campPage-trap-friendList.full{background-color:#fbf8f6}.campPage-trap-armedItem.weapon .campPage-trap-armedItem-image,.campPage-trap-armedItem.base .campPage-trap-armedItem-image{background-position:-1px -1px;background-size:72px}span.campPage-trap-baitQuantity{right:-1px;bottom:-1px;border-color:#d3cecb;border-right:none;border-bottom:none}.span.campPage-trap-baitQuantity,.campPage-trap-armedItem .quantity span{border-bottom-right-radius:0}.mousehuntHud-page-tabContent.crafting .mousehuntHud-page-subTabContent{padding:none;background:none;border:none;box-shadow:none}.mousehuntHud-page-tabContent.crafting .mousehuntHud-page-subTabContent-margin{padding:0;border:none;box-shadow:none}.mousehuntHud-page-subTabContent-prefix-filter-options{border:1px solid #8595b0;border-radius:10px}.active.mousehuntHud-page-subTabContent-prefix-filter-option:first-child{border-top-left-radius:7px;border-bottom-left-radius:7px}.active.mousehuntHud-page-subTabContent-prefix-filter-option:last-child{border-top-right-radius:7px;border-bottom-right-radius:7px}a.mousehuntHud-page-subTabContent-prefix-filter-option{border:1px solid #8595b0;border-top:none;border-bottom:none}.mousehuntHud-page-subTabContent-prefix-filter-option:first-child,.mousehuntHud-page-subTabContent-prefix-filter-option:last-child{border:none}.mousehuntHud-page-subTabHeader.active span,.mousehuntHud-page-subTabHeader:hover span,.mousehuntHud-page-subTabHeader:focus span{color:#fff;background-color:#8595b0;box-shadow:none}.mousehuntHud-page-subTabHeader span{color:#3b5998;background:none;border-color:#3b5998}.mousehuntHud-page-subTabHeader-prefix,.mousehuntHud-page-subTabContent-prefix-filter span:first-child{display:none}.mousehuntHud-page-subTabHeader-container{text-align:center}.mousehuntHud-page-subTabContent-prefix.clear-block{margin-left:30px}.mouseCrownsView-group-mice.favourites>.empty~.empty{display:none}.scoreboardTableView-availableScoreboards{width:180px}.giftSelectorView-content-subtitle{padding:10px 0}.teamPage-memberRow-identity .teamPage-member-nameContainer{width:auto}.mousehuntArmNowButton.active{filter:hue-rotate(104deg)}.mousehuntArmNowButton.active:hover{filter:hue-rotate(104deg) brightness(1.2)}.mousehuntArmNowButton{filter:brightness(1)}.mousehuntArmNowButton:hover{filter:brightness(1.2)}.mousehuntHeaderView a.superBrie .quantity{font-weight:600}a.huntersHornView__horn.huntersHornView__horn--default.huntersHornView__horn--ready{transition:all .2s;transform-origin:left;will-change:transform}a.huntersHornView__horn.huntersHornView__horn--default.huntersHornView__horn--ready:hover{transform:scale(1.1) rotate(-1deg)}a.huntersHornView__horn.huntersHornView__horn--default.huntersHornView__horn--ready .huntersHornView__hornBannerImage{transition:all .6s}a.huntersHornView__horn.huntersHornView__horn--default.huntersHornView__horn--ready:hover .huntersHornView__hornBannerImage{filter:saturate(1.8)}.huntersHornView__hornImage{filter:drop-shadow(1px 1px 0 #fff) drop-shadow(-1px 1px 0 #fff) drop-shadow(1px -1px 0 #fff) drop-shadow(-1px -1px 0 #fff) drop-shadow(1px 4px 3px #6b6b6b)}.mousehuntHud-menu ul li ul li a .icon{top:5px;left:2px;width:22px;height:22px}.MiniEventRonzaChromeBitCampHUD-completeQuantity.MiniEventRonzaChromeBitCampHUD-chromeBitQuantity{padding:2px 3px;font-size:13px}.trapImageView-layer.limitedEdition{top:unset;bottom:-270px;left:-135px;background-size:200px}.trapImageView-layer.limitedEdition,.trapImageView-trapAura,.trapImageView-trapAura.active,.trapImageView-trapAura.inactive,.trapImageView-zoomButton,.min-luck-button{visibility:hidden;opacity:0;transition:opacity .2s ease-in-out}.trapImageView:hover .trapImageView-layer.limitedEdition,.trapImageView:hover .trapImageView-trapAura,.trapImageView:hover .trapImageView-trapAura.active,.trapImageView:hover .trapImageView-trapAura.inactive,.trapImageView:hover .trapImageView-zoomButton,.trapImageView:hover .min-luck-button{visibility:visible;opacity:1}.trapImageView-trapAura.active.expiring-soon{visibility:visible;border-radius:50%;box-shadow:inset 0 0 10px 1px #ff4d4d;opacity:1}a.trapImageView-zoomButton{top:85%}.mousehuntHud-page-subTabContent.group .header .mouseListView-categoryContent-subgroup-mouse-stats.catches,.mousehuntHud-page-subTabContent.group .header .mouseListView-categoryContent-subgroup-mouse-stats.misses{width:12%}.mousehuntHud-page-subTabContent.group .header .mouseListView-categoryContent-subgroup-mouse-stats.name{width:36%}.mousehuntHud-page-subTabContent.group .header .mouseListView-categoryContent-subgroup-mouse-stats.average_weight,.mousehuntHud-page-subTabContent.group .header .mouseListView-categoryContent-subgroup-mouse-stats.heaviest_catch{width:20%}.mousehuntHud-page-subTabContent.location .header .mouseListView-categoryContent-subgroup-mouse-stats.catches,.mousehuntHud-page-subTabContent.location .header .mouseListView-categoryContent-subgroup-mouse-stats.misses{width:13%}.mousehuntHud-page-subTabContent.location .header .mouseListView-categoryContent-subgroup-mouse-stats.average_weight,.mousehuntHud-page-subTabContent.location .header .mouseListView-categoryContent-subgroup-mouse-stats.heaviest_catch{width:15%;text-align:center}.hunterInfoView-idCardTooltipBox-content{min-width:80px;text-align:center}.journalThemeSelectorView-preview{min-height:600px}a.inventoryPage-tagDirectory-tag{border:1px solid #ccc;border-right:none}.inventoryPage-tagDirectory-tag:hover{color:#3b5998;background-color:#dfdcdc;box-shadow:0 0 1px #354661}.claimGiftPage{margin-top:0}.notificationMessageList .message img.profilePic{width:30px;height:30px}#OnboardArrow.onboardPopup.celebrationPopup .firstCatch .introPopupImage img{margin-top:0}#OnboardArrow.onboardPopup.celebrationPopup .firstCatch .content{padding-top:30px}#OnboardArrow.onboardPopup.celebrationPopup .introPopupContent .clear-block img{float:none;margin-top:-10px;margin-left:-10px}#OnboardArrow.onboardPopup.celebrationPopup .closeButton{background:url(https://www.mousehuntgame.com/images/ui/buttons/continue.png?asset_cache_version=2) 0 0 no-repeat}@media only screen and (max-width: 1000px){body.hasSidebar .pageFrameView-column{background-color:#bad4ed!important}}.campPage-trap-blueprintContainer{border-color:#315871;border-width:1px;box-shadow:none}.campPage-trap-itemBrowser-item-description.shortDescription{margin-top:5px}.campPage-trap-itemBrowser-item-image:after{border-color:#ccc;box-shadow:2px 2px 3px -1px #cdc9c6 inset}.campPage-trap-itemBrowser-item{overflow:hidden}.itemView-action-convertForm{font-size:13px}input.itemView-action-convert-quantity{padding:2px 5px;text-align:left}.menuItem.myProfile{display:none}.mousehuntHeaderView .menuItem.freeGifts,.mousehuntHeaderView-gameTabs.small .menuItem.freeGifts{padding-right:12px;padding-left:12px}.mousehuntHeaderView a.superBrie .getMore{top:4px}.mousehuntPage-loading{position:absolute;right:0;left:0;z-index:51;box-shadow:2px 2px 10px #999,-1px -1px 1px #ccc inset,0 0 25px 25px #ffffff7f}.mousehuntPage-content.hidden{display:block;margin-top:35px}.journalThemeSelectorView-preview .journalThemeSelectorView-preview-details{display:none}.journalThemeSelectorView-preview .journal>.content{padding:5px 10px!important}.mousehuntHud-page-subTabContent.trinket .mousehuntHud-page-subTabContent-prefix{display:none}.mousehuntHud-userStat-row{line-height:14px}.newsPostBody .flexCenter{justify-content:space-evenly}.newsPostBody #news-post-responsive .flexCenter img{max-width:100px;transition:.2s ease-in}.newsPostBody #news-post-responsive .flexCenter img.huge{max-width:100%}.newsPostBody #news-post-responsive img.huge:hover,.newsPostBody #news-post-responsive img[style*="width:100%"]:hover{transform:none}.newsPostBody #news-post-responsive img{transition:.2s ease-in}.newsPostBody #news-post-responsive img:hover{transform:rotate(4deg) scale(1.1)}#overlayPopup{animation:MHCheckoutDialogView-frameReveal .2s ease-out}@media (prefers-reduced-motion: reduce){#overlayPopup{animation:none}}.mousehuntHeaderView .dropdownContent a{background-position-x:8px}.tsitu-maptem .notification{left:0!important}.tsitu-maptem .notification[title="No uncaught map mice with this setup (according to TEM)"]{display:none}.campPage-trap-itemBrowser-armed-itemContainer.empty .campPage-trap-itemBrowser-item-subtitle{color:#671d1d}.mh-dark-mode .campPage-trap-itemBrowser-item.largeQuantity .campPage-trap-itemBrowser-item-quantity .quantity{background-color:#333}.mh-dark-mode .campPage-trap-itemBrowser-item-image:after{border-color:#000;box-shadow:2px 2px 3px -1px #000 inset}\n'; } }); // src/modules/better-ui/styles/gifts.css var gifts_default; var init_gifts = __esm({ "src/modules/better-ui/styles/gifts.css"() { gifts_default = ".giftSelectorView-friendRow-returnImage{width:40px;height:40px;margin-top:-10px;margin-right:10px;background-color:transparent;background-size:cover;border:none;outline:none;box-shadow:none}.giftSelectorView-friendRow-action.disabled .giftSelectorView-friendRow-returnImage{box-shadow:none}.giftSelectorView-content-title{padding-bottom:5px 0}.giftSelectorView-claimWarning{padding:10px}#overlayPopup.dailyRewardPopup .todaysRewards .reward{width:100px;font-size:13px;transition:all .25s ease-in-out}.dailyRewardPopup .todaysRewards .reward img{width:100%;height:100%}.dailyRewardPopup .todaysRewards .reward .quantity{display:none}.dailyRewardPopup .progress .chest .image{transition:.2s ease-in}#overlayPopup.dailyRewardPopup .todaysRewards .reward:hover{margin-top:-15px;margin-bottom:15px;transform:scale(1.2)}.dailyRewardPopup .progress .chest:hover .image{transform:scale(1.1);transform-origin:bottom}.dailyRewardPopup .chest.active .image{filter:drop-shadow(0 3px 3px #faae4c)}.dailyRewardPopup h2:last-of-type{padding-top:0;margin-top:-15px}#overlayPopup.dailyRewardPopup .todaysRewards.day_1{padding-left:190px;background-image:url(https://i.mouse.rip/popup_todays_reward_day1_chest.png)}#overlayPopup.dailyRewardPopup .todaysRewards.day_2{background-image:url(https://i.mouse.rip/popup_todays_reward_day2_chest.png)}#overlayPopup.dailyRewardPopup .todaysRewards.day_5{background-image:url(https://i.mouse.rip/popup_todays_reward_day5_chest.png);background-size:222px 221px}#overlayPopup.dailyRewardPopup .progress .chest_1.open .image{background-image:url(https://i.mouse.rip/popup_todays_reward_day1_chest.png);background-size:cover}#overlayPopup.dailyRewardPopup .progress .chest_2.open .image{margin-left:-10px;background-image:url(https://i.mouse.rip/popup_todays_reward_day2_chest.png);background-size:cover}#overlayPopup.dailyRewardPopup .closed .status{filter:opacity(.5)}\n"; } }); // src/modules/better-ui/styles/hud.css var hud_default2; var init_hud2 = __esm({ "src/modules/better-ui/styles/hud.css"() { hud_default2 = ".mousehuntHud-userStat.bait:hover .label,.mousehuntHud-userStat.trinket:hover .label,.mousehuntHud-userStat.treasureMap:hover .label{position:absolute;top:7px;z-index:11;width:auto;padding:3px 10px 2px 0;background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/hud_bg_blue_repeating.png?asset_cache_version=2);border-radius:5px;mix-blend-mode:luminosity}.mousehuntHud-userStat.treasureMap:hover .label{padding-right:3px}.mousehuntHud-userStat.bait:hover .value,.mousehuntHud-userStat.trinket:hover .value,.mousehuntHud-userStat.treasureMap:hover .value{margin-top:14px}.mousehuntHud-environmentName{width:auto;overflow:visible;text-shadow:2px 2px 2px #d6c8a2,-2px -2px 2px #d6c8a2,2px -2px 2px #d6c8a2,-2px 2px 2px #d6c8a2,2px 0 2px #d6c8a2,0 2px 2px #d6c8a2,-2px 0 2px #d6c8a2,0 -2px 2px #d6c8a2;filter:drop-shadow(0 1px 1px #d6c8a2) drop-shadow(0 2px 1px #d6c8a2) drop-shadow(-1px 4px 1px #d6c8a2)}.mousehuntHud-userStatBar .profileImage{box-shadow:0 2px 2px 1px #0e2c4f}.mousehuntHud-userStat.title .shield{width:19px;height:19px;margin-top:-4px}.mousehuntHud-userStat .title-container span.label{position:absolute;top:2px;left:25px;overflow:visible}.mousehuntHud-userStat .title-container span.label.hud_title{overflow:hidden}.mousehuntHud-userStat .title-container{position:relative;min-height:15px}.mousehuntHud-titleProgressBar .dot,.mousehuntHud-titleProgressBar .wrapper .bar{opacity:.8;transition:all .4s ease-out}.mousehuntHud-userStat.title:hover .mousehuntHud-titleProgressBar .dot,.mousehuntHud-userStat.title:hover .mousehuntHud-titleProgressBar .wrapper .bar{opacity:1}.mousehuntHud-userStat.empty .icon{box-shadow:none}\n"; } }); // src/modules/better-ui/styles/inbox.css var inbox_default; var init_inbox = __esm({ "src/modules/better-ui/styles/inbox.css"() { inbox_default = '.notificationMessageList .message{padding:5px 10px;border-left:1px solid #c8c8c8}.notificationMessageList .message .clear-block{padding-top:5px}.notificationMessageList .message.ballot .clear-block{display:flex;flex-direction:row;align-items:center;order:5}.notificationMessageList .message.ballot img.item{height:25px;margin:-5px 5px 0 -5px}.notificationMessageList .message.ballot .date{flex-grow:1;order:2;font-size:9px;text-align:right;white-space:nowrap}.notificationMessageList .message.ballot.new .date{font-size:8px}.notificationMessageList .message.friend_invite_pending .clear-block,.notificationMessageList .message.friend_invite_accepted .clear-block{display:flex;align-items:center}.notificationMessageList .message .messageText{padding:5px 0}.message.notification.ballot,.message.notification.ballot.new{display:flex;flex-direction:row-reverse;align-items:center;justify-content:space-between;padding:10px 10px 10px 20px}.message.notification .actions.ballot{float:none}.notificationMessageList .message .actions.friendRequest,.notificationMessageList .message .actions.friendRequestAccepted{margin-top:15px}#messengerUINotification .tabs{display:flex;flex-direction:column}#messengerUINotification .tabs a[data-tab=general]{order:-500}#messengerUINotification .tabs a[data-tab=daily_draw]{order:-400}#messengerUINotification .tabs a[data-tab=friend_requests]{order:-300}#messengerUINotification .tabs a[data-tab=marketplace]{order:-200}#messengerUINotification .tabs a[data-tab=news]{order:-100}#messengerUINotification .notificationMessageList .tab{background-color:#f9f9f9}.mh-dark-mode #messengerUINotification .notificationMessageList .tab{background-color:#242424}div#messengerUINotification{background-color:#f9f9f9!important}#messengerUINotification .tabs a:hover{background-color:#eee}#messengerUINotification .tabs a .counter{background-color:#e33f3f;box-shadow:inset 0 0 5px 1px #a90000}#messengerUINotification .messengerUINotificationClose{top:-15px;right:-5px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:25px;height:25px;padding:5px;font-size:14px;line-height:unset;color:#e03a3a;text-align:center;border-color:#d1d0cf;box-shadow:1px 2px 6px -4px #3e3e3e}#messengerUINotification .messengerUINotificationClose:hover{color:#fff;background-color:#e03a3a}.journal.jsingle .close{float:none;padding:0;margin:0;background-color:transparent;border:none}.journal.jsingle .close a:after{position:absolute;top:5px;right:5px;z-index:15;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:25px;height:25px;padding:5px;font-size:14px;font-weight:700;line-height:unset;color:#e03a3a;text-align:center;content:"\\2715";background:#fff;border:1px solid #ccc;border-color:#d1d0cf;border-radius:20px}.giftSelectorView-inboxHeader-closeButton{position:absolute;top:3px;right:5px;z-index:15;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:23px;height:23px;padding:5px;font-size:12px;font-weight:700;line-height:unset;color:#e03a3a;text-align:center;content:"\\2715";background:#fff;border:1px solid #d1d0cf;border-color:#d1d0cf;border-radius:20px;box-shadow:inset 0 0 3px -1px #d1d0cf}.journal.jsingle .close a{display:block;width:0;height:0;color:transparent}.giftSelectorView-inboxHeader-closeButton:hover,.giftSelectorView-inboxHeader-closeButton:focus,.journal.jsingle .close a:hover:after,.journal.jsingle .close a:focus:after{color:#fff;background-color:#e03a3a}.giftSelectorView-inbox-footer-label{margin-top:-30px;text-align:left}#messengerUINotification .notificationMessageList .tab[data-tab=marketplace] .message .clear-block{order:1}#messengerUINotification .notificationMessageList .tab[data-tab=marketplace] .message .date{order:3;margin-left:0}.notificationMessageList .message.marketplace .actions{transform:translateY(10px)}.notificationMessageList .message .date{margin:5px 0}#messengerUINotification .tabs a{display:flex;align-items:center;height:15px;border-right:1px solid #dcdedd}#messengerUINotification .notificationMessageList{box-sizing:border-box;width:calc(100% - 150px);border-left-width:0}.notificationMessageList .message .actions.newsPost input[type=button]{padding:5px 10px;border:none;outline:1px solid #000;box-shadow:0 -5px 8px -2px #ffae00 inset}.notificationMessageList .news.message a{display:inline-block;margin-bottom:10px;font-size:14px}.notificationMessageList .news.message .messageText{display:block;padding:0;font-size:12px}.notificationMessageList .tab[data-tab=news] .message{background-color:#fdf5bf}.notificationMessageList .tab[data-tab=news] .message:hover input[type=button]{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}#messengerUINotification .bumper{display:none}#messengerUINotification{box-shadow:0 3px 6px -3px #3e3e3e}\n'; } }); // src/modules/better-ui/styles/login.css var login_default; var init_login = __esm({ "src/modules/better-ui/styles/login.css"() { login_default = ".loginPageContainer .loginFormContainer .scrollContainer .scrollingContainer .backButton{position:absolute;top:145px;left:30px;filter:hue-rotate(321deg)}.PageLogin .loginPageContainer .loginFormContainer .scrollContainer .scrollingContainer{position:relative}.PageLogin .pageFrameView-column.left,.PageLogin .pageFrameView-column.right{margin-bottom:0}.loginPageContainer .loginFormContainer .scrollContainer .scrollingContainer .fb-login-button div{margin-top:10px;margin-left:50px}\n"; } }); // src/modules/better-ui/styles/mobile-camp.css var mobile_camp_default; var init_mobile_camp = __esm({ "src/modules/better-ui/styles/mobile-camp.css"() { mobile_camp_default = '.mobile.MobilePageCamp #mobileHorn img{display:none}.mobile.MobilePageCamp #mobileHorn{position:relative;display:block;width:237px;height:57px;margin:10px auto;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hunters_horn/horn_background.png);background-repeat:no-repeat;background-position:0 0;transition:all .2s}.mobile.MobilePageCamp #mobileHorn:after{position:absolute;inset:0;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hunters_horn/horn_foreground.png);background-repeat:no-repeat;background-position:0 0}.mobile.MobilePageCamp #mobileHorn:before{position:absolute;top:20px;left:78px;z-index:1;width:101px;height:41px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hunters_horn/banner.png)}body.mobile.MobilePageCamp #mobileHorn:hover,body.mobile.MobilePageCamp #mobileHorn:active{transform:scale(1.1) rotate(-1deg)}body.mobile.MobilePageCamp .mobileHeader img{display:none}body.mobile.MobilePageCamp div[data-role=header]:after{position:absolute;top:15px;left:15px;width:85px;height:85px;content:"";background:url(https://www.mousehuntgame.com/images/ui/elements/golden_shield_page_shield_disabled_320.png) no-repeat;background-position:right;background-size:cover;opacity:.3;transform:scaleX(-1)}body.mobile.MobilePageCamp .headerText>div:first-child{font-size:17px}body.mobile.MobilePageCamp .pageFrameView,body.mobile.MobilePageCamp.noSidebar .pageFrameView{grid-template-columns:[first] auto [content-start] 485px [content-end] auto [last]}body.mobile.MobilePageCamp .pageFrameView-column.right,body.mobile.MobilePageCamp .pageFrameView-column.left{border-width:5px}div#mobileCountdown{margin:10px;font-size:15px}div#mobileJournal{margin-top:10px}\n'; } }); // src/modules/better-ui/styles/overlays.css var overlays_default; var init_overlays = __esm({ "src/modules/better-ui/styles/overlays.css"() { overlays_default = '#overlayPopup .imgArray{overflow:visible}#overlayPopup .button,.notificationMessageList .message .actions input[type=button],.notificationMessageList .message .actions input[value="View Profile"],.notificationMessageList .message .actions input[value="View Profile"].ignoreRequest.ignoreRequest{padding:2px 15px;line-height:18px;color:#000;text-shadow:0 0 1px #fff;background-color:#f4e830;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #ffae00 inset,1px 1px 1px #eee}#overlayPopup .button:hover,#overlayPopup .button:focus,.notificationMessageList .message .actions input[type=button]:hover,.notificationMessageList .message .actions input[type=button]:focus,.notificationMessageList .message .actions input[value="View Profile"]:hover,.notificationMessageList .message .actions input[value="View Profile"]:focus,.notificationMessageList .message .actions input[value="View Profile"].ignoreRequest.ignoreRequest:hover,.notificationMessageList .message .actions input[value="View Profile"].ignoreRequest.ignoreRequest:focus{background-color:#e4d50c}#overlayPopup .button:hover,#overlayPopup .button:focus,.notificationMessageList .message .actions input[type=button]:hover,.notificationMessageList .message .actions input[type=button]:focus,.notificationMessageList .message .actions input[value="View Profile"]:hover,.notificationMessageList .message .actions input[value="View Profile"]:focus,.notificationMessageList .message .actions input[value="View Profile"].ignoreRequest:hover,.notificationMessageList .message .actions input[value="View Profile"].ignoreRequest:focus{background-color:#fff600;box-shadow:inset 0 0 16px 2px #fffaab}.notificationMessageList .message .actions input[type=button]{padding:1px 10px;font-size:12px;line-height:14px}.notificationMessageList .tab[data-tab=news] .message{line-height:18px}.notificationMessageList .tab[data-tab=news] .message .actions.newsPost{padding:2px 15px;transform:translateY(65%)}.notificationMessageList .tab[data-tab=news] .message .date{margin-left:0}.notificationMessageList .message .actions input[type=button].delete{margin:0 2px}.notificationMessageList .message .actions.friendRequestAccepted input[type=button].delete{padding:4px;margin-left:4px}.message.notification .actions.ballot{display:flex;gap:3px;float:none}.notificationMessageList .message input[type=button].delete,.notificationMessageList .message .actions input[type=button].ignoreRequest{padding:1px 10px;color:#000;text-shadow:0 0 1px #fff;background-color:#ffa5a5;border:1px solid #000;border-radius:4px;box-shadow:0 -5px 8px -2px #f27b6a inset,1px 1px 1px #eee}.notificationMessageList .message .actions input[type=button].delete:hover,.notificationMessageList .message .actions input[type=button].delete:focus,.notificationMessageList .message .actions input[type=button].ignoreRequest:hover,.notificationMessageList .message .actions input[type=button].ignoreRequest:focus{background-color:#f48686}.mouseView-categoryContent-subgroup-mouse-weaknesses-label{border-color:#33333357}#messengerUINotification .notificationMessageList .tab{max-height:50vh;overflow:auto}#overlayPopup .jsDialogContainer a.shopsPage-kingsCalibratorPromo-button{margin-top:20px;margin-left:10px}#overlayPopup .jsDialogContainer .content .itemImage[style="background-image:url(https://www.mousehuntgame.com/images/items/message_items/c6fa46d329c1c7436acad084773c05c6.jpg);"]{margin-right:10px}.kingsGiveawayCalibratorPopup-upgradeContainer{display:flex;flex-wrap:wrap;justify-content:center;margin:0 6px;box-shadow:none}.kingsGiveawayCalibratorPopup-upgrade.unlocked{background-color:#c8d2f2}.kingsGiveawayCalibratorPopup-tabHeaderContainer{margin:0 1px}.kingsGiveawayCalibratorPopup-tabHeader span{box-shadow:none}.kingsGiveawayCalibratorPopup-upgrade-day-name{padding-bottom:10px;margin-top:10px;font-size:14px;border-bottom:1px solid #ccc}.kingsGiveawayCalibratorPopup-upgrade-day-itemContainer:after{box-shadow:none}.kingsGiveawayCalibratorPopup-upgrade-day-item .itemImage{width:100px;height:100px;background-size:cover}.kingsGiveawayCalibratorPopup-upgrade-day-item-name{width:100%;margin-top:7px;font-size:13px;text-align:center}.kingsGiveawayCalibratorPopup-numCreditsContainer{position:absolute;top:30px;right:50px;float:none;margin-right:-10px;margin-left:10px;visibility:visible}.kingsGiveawayCalibratorPopup-numCredits{padding:7px}.kingsGiveawayCalibratorPopup-header{position:absolute;top:0;right:0;display:inline;visibility:hidden}span.kingsGiveawayCalibratorPopup-upgrade-action-cost{font-size:14px;vertical-align:middle}.kingsGiveawayCalibratorPopup-upgrade-action-kingsCredits{width:21px;height:21px;margin:0 4px;background-color:#fff;background-position:center;background-size:18px;box-shadow:none;opacity:.9}.kingsGiveawayCalibratorPopup-upgrade.locked .kingsGiveawayCalibratorPopup-upgrade-action.locked{display:flex;justify-content:space-evenly}.kingsGiveawayCalibratorPopup-upgrade.active{background-color:#a6d392;border:1px solid #55913b}.kingsGiveawayCalibratorPopup-upgrade.active .kingsGiveawayCalibratorPopup-upgrade-actionContainer{border-top:1px solid #55913b}.kingsGiveawayCalibratorPopup-upgrade-image{height:85px}.kingsGiveawayCalibratorPopup-upgrade.locked .kingsGiveawayCalibratorPopup-upgrade-image{filter:saturate(.3);opacity:.6}.kingsGiveawayCalibratorPopup-upgrade:hover .kingsGiveawayCalibratorPopup-upgrade-image{filter:none;opacity:1}.kingsGiveawayCalibratorPopup-upgrade{box-sizing:border-box;border:1px solid #ccc;box-shadow:none}.kingsGiveawayCalibratorPopup-upgrade-name{display:block;width:auto;margin:5px 0;text-align:center}.kingsGiveawayCalibratorPopup-upgrade-name span{display:inline-block;font-size:12px}.upgrade_gifts .kingsGiveawayCalibratorPopup-upgrade-description{font-size:14px}#messengerUINotification .tabs a.active .arrow{right:-19px}#messengerUINotification .tabs a.active .arrowShadow{right:-20px}\n'; } }); // src/modules/better-ui/styles/profile.css var profile_default; var init_profile = __esm({ "src/modules/better-ui/styles/profile.css"() { profile_default = ".PageHunterProfile .campPage-trap-trapStat.power .icon{display:none}.PageHunterProfile .campPage-trap-trapStat.cheese_effect .value span{width:10px;font-size:11px}.hunterInfoView-wrapper .messageBoardView-title{height:30px;margin-bottom:-1px;font-size:14px;font-weight:700;line-height:30px;color:#772b0a;text-align:center;background:linear-gradient(#fff9dc 45%,#f1dc8a 55%);border:1px solid #985f42;border-bottom:1px solid #e9be6c;border-radius:10px 10px 0 0;box-shadow:-1px 2px 1px #a59f8e}.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader{height:33px;margin-top:1px;margin-bottom:2px;font-size:14px;font-weight:700;line-height:30px;color:#ab755d;text-align:center;background:linear-gradient(#f6f3e2 45%,#fdf3cb 55%);border:1px solid #985f42;border-bottom:none;border-radius:10px 10px 0 0;box-shadow:-1px 1px 1px #a59f8e}.hunterInfoView-wrapper div.messageBoardView-message-container{border-bottom:0;border-top-left-radius:0;border-top-right-radius:0}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabHeader span{margin:0;line-height:23px;background:none;border:none;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabHeader:before{background:none;box-shadow:none}.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:first-child{margin-right:5px;margin-left:-10px}.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:last-child{margin-right:-10px;margin-left:5px}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabContentContainer{background:#e9e1c6;border:1px solid #985f42;border-top-color:#e9be6c;border-radius:0 0 10px 10px;box-shadow:-1px 2px 1px #a59f8e}.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader.active{color:#772b0a;background:linear-gradient(#fff9dc 45%,#f1dc8a 55%)}.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:hover,.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:focus{color:#772b0a;background:linear-gradient(#fff9dc 45%,#f1dc8a 55%)}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabHeader:hover span{background:none}.hunterInfoView-achievementsBlock .mousehuntTabContentContainer-padding{background:#e9e1c6;border:none;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-treasureMaps-left-currentMap-image{width:55px;height:55px;border:none}.hunterInfoView-treasureMaps-left{vertical-align:middle}.hunterInfoView-wrapper .hunterInfoView-treasureMaps-left-currentMap-content{display:flex;flex-direction:row;align-items:center;height:50px}.hunterInfoView-wrapper .hunterInfoView-treasureMaps-right-cluesFound-ranking{width:110px;margin-top:10px;margin-bottom:-5px;font-size:11px;color:#772b0a}.hunterInfoView-treasureMaps-right{display:flex;flex-direction:column;align-items:center;margin-top:-10px;margin-right:-5px}.hunterInfoView-wrapper .hunterInfoView-treasureMaps-right-cluesFound{font-size:17px}.hunterInfoView-wrapper .hunterInfoView-treasureMaps-right-cluesFound-label{font-size:11px}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .itemImage{width:45px;height:45px;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .itemImage-container{display:block;padding:3px}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .hunterInfoView-teamTab-content-wrapper{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-around;width:338px}.hunterInfoView-wrapper .hunterInfoView-achievementsBlock .hunterInfoView-teamTab-content .quantity{right:0;bottom:0;background-color:#fff}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock .hunterInfoView-favoritesBlock-body{background:#e9e1c6}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage.empty{background-color:#e9e1c6;border:1px solid #a0a0a0;box-shadow:none;opacity:.75}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage{border-width:2px;transition:.2s ease-in}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage-overlay-container,.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage-overlay{width:54px;height:54px}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage:hover{background-size:120%}.mouseCrownsView-group-mouse-catches{padding:2px 6px;margin-top:-5px;margin-bottom:5px;font-size:14px}.mouseCrownsView-group-mouse-name{font-size:11px}.mouseCrownsView-group-mouse.empty.highlight{display:none}.mouseCrownsView-group-mouse.highlight .mouseCrownsView-group-mouse-image{width:auto;height:200px}.mouseCrownsView-group-mouse.highlight .mouseCrownsView-group-mouse-image .mouseCrownsView-crown{top:5px;right:5px;left:unset}.mouseCrownsView-group-mouse:hover .mouseCrownsView-group-mouse-image{background-size:120%}.mouseCrownsView-group-mouse.landscape:hover .mouseCrownsView-group-mouse-image{background-size:auto 230px}.mouseCrownsView-group-mouse.highlight .mouseCrownsView-group-mouse-padding{padding:0;margin:0;border-radius:0}.highlight a.mouseCrownsView-group-mouse-favouriteButton.active{top:0;right:0}.mouseCrownsView-group-mouse-padding{padding:0;overflow:hidden}.mouseCrownsView-group-mice{display:grid;grid-template-columns:repeat(5,1fr);align-items:stretch;justify-content:start;max-width:720px;margin-right:-2px;margin-left:-5px}.mouseCrownsView-group-mice.favourites{gap:5px}.mouseCrownsView-group-header b{font-size:13px}.mouseCrownsView-group-header-subtitle{margin-left:10px}.mouseCrownsView-group-mouse{width:auto}.mouseCrownsView-group-mouse-image{width:100%;height:200px;border:none!important;border-bottom-right-radius:0;border-bottom-left-radius:0;transition:.2s ease-in}.mouseCrownsView-crown.none{background-image:url(https://www.mousehuntgame.com/images/ui/crowns/crown_none.png?asset_cache_version=3)!important}.mouseCrownsView-group-header-name{margin-left:10px}.mouseCrownsView-group{padding:10px;margin:10px;background-color:#f5f5f5;border-radius:5px;box-shadow:0 0 1px 1px #cbcbcb}.mouseCrownsView-group.platinum{background-color:#d6d6fb;box-shadow:0 0 1px 1px #7e6af9}.mouseCrownsView-group.platinum .mouseCrownsView-group-header{box-shadow:inset 0 0 1px 1px #bfb6fc}.mouseCrownsView-group.gold{background-color:#fbf5ce;box-shadow:0 0 1px 1px #cfc791}.mouseCrownsView-group.gold .mouseCrownsView-group-header{box-shadow:0 0 1px 1px #ded9b5}.mouseCrownsView-group.silver{background-color:#d2e7fe;box-shadow:0 0 1px 1px #8fb9e6}.mouseCrownsView-group.silver .mouseCrownsView-group-header{box-shadow:0 0 1px 1px #b4d0ee}.mouseCrownsView-group.bronze{background-color:#ffe6d4;box-shadow:0 0 1px 1px #d8af91}.mouseCrownsView-group.bronze .mouseCrownsView-group-header{box-shadow:0 0 1px 1px #ead3c3}.mouseCrownsView-group.none .mouseCrownsView-group-header{box-shadow:0 0 1px 1px #c5c5c5}.mouseCrownsView-group-header{display:flex;align-items:center;padding:5px;border:none!important;border-radius:5px}.mh-dark-mode.PageHunterProfile .pageFrameView .mouseCrownsView-group-header-subtitle{color:#787}.mouseCrownsView-group .mouseCrownsView-group-header{background-color:#fafafa99!important}.mouseCrownsView-group-mouse-favouriteButton.active{opacity:0;transition:.4s ease-in}.mouseCrownsView-group-mouse.favourite:hover .mouseCrownsView-group-mouse-favouriteButton,.mouseCrownsView-group-mouse.favourite:hover .mouseCrownsView-group-mouse-favouriteButton.active{opacity:1}.mouseCrownsView-group .mouseCrownsView-group-mouse-padding{background-color:#fff}.mouseCrownsView-group-mouse.highlight.favourite{width:auto;background-color:#fff;border:1px solid #ccc;border-radius:5px}.mouseCrownsView-group.favourite .mouseCrownsView-group-header .mouseCrownsView-crown,.mouseCrownsView-group.favourite .mouseCrownsView-group-header-name{display:none}.favourite .mouseCrownsView-group-header{padding:0}.hideLeContainer{position:absolute;top:-9px;right:0;display:flex;flex-direction:row-reverse;opacity:.5}.hideLeContainer:hover{opacity:1}.hideLeContainer #hideLeCb{width:auto!important}.hideLeContainer label{font-size:10px!important}a.friendsProfileView-randomFriend{float:right;width:120px;margin-top:-25px;text-align:center;background-color:#e9e1c6;border:1px solid #a0a0a0}.friendsProfileView-selfStats{font-size:11px}.friendsProfileView-randomFriend:hover{background-color:#c7bfa3}.eggMasterIcon{position:absolute;top:0;right:-10px;float:none!important;width:40px!important;height:40px!important;filter:drop-shadow(2px 2px 2px #e9e1c6);background-size:cover!important}.mh-dark-mode.PageHunterProfile .pageFrameView .mouseCrownsView-group-mouse.highlight .mouseCrownsView-group-mouse-name,.mh-dark-mode.PageHunterProfile .pageFrameView .mouseCrownsView-group-mouse:not(.favourite) .mouseCrownsView-group-mouse-name,.mh-dark-mode.PageHunterProfile .pageFrameView .mouseCrownsView-group{color:#333}.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot-noBait{display:flex;align-items:center;width:100%;height:100%;border:none;box-shadow:none}.hunterProfileItemsView-categoryContent-item-padding{height:auto;padding:0}.hunterProfileItemsView-categoryContent-item-name{width:95%;padding:0 1px 3px}.hunterProfileItemsView-categoryContent-item-padding .itemImage .quantity{right:0;bottom:5px;padding:5px}.hunterProfileItemsView-categoryContent-item .itemImage{width:90px;height:100px;background-repeat:no-repeat;background-position:center;background-size:100%;transition:.2s ease-in}.hunterProfileItemsView-categoryContent[data-category=map_piece] .hunterProfileItemsView-categoryContent-item .itemImage,.hunterProfileItemsView-categoryContent[data-category=collectible] .hunterProfileItemsView-categoryContent-item .itemImage{padding-top:10px;background-position-y:5px}.hunterProfileItemsView-categoryContent-item.uncollected .itemImage{opacity:.3}.hunterProfileItemsView-categoryContent-item.uncollected .hunterProfileItemsView-categoryContent-item-padding{background-color:#eee}.hunterInfoView-wrapper .hunterInfoView-idCardBlock-teamName{width:89px;margin-left:-3px}.hunterInfoView-wrapper .hunterInfoView-idCardBlock-teamName span{top:0;right:0;left:0;transform:none}.loyaltyBadgeView .loyaltyBadgeView-years-text{top:6px;right:0;left:0;font-size:22px;text-align:center;filter:drop-shadow(0 0 2px #fff);transform:none}.loyaltyBadgeView{width:50px;height:50px}.loyaltyBadgeView.badgeLevel15 .loyaltyBadgeView-years-text{top:14px}.hunterInfoView-verifiedUserImage{width:14.5px;height:17.5px}.hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-container{padding-top:15px}.hunterInfoView-wrapper .hunterInfoView-idCardBlock-goldenShield-image{left:-5px;width:26px;height:26px}.hunterInfoView-wrapper .hunterInfoView-idCardBlock-goldenShield-text{width:auto;padding:2px 7px 3px 20px;font-size:12px;white-space:nowrap}.mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image,.mouseCrownsView-group-mouse-image{background-position:center;background-size:100%;transition:.4s ease-in}.mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image{background-position:center;background-size:auto 200px}.mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image.ful_mina_mountain_queen{background-position:80% center}.mouseCrownsView-group-mouse.landscape:hover .mouseCrownsView-group-mouse-image.ful_mina_mountain_queen{background-position:78% center}.mouseView-group.mouseview-title-group{display:flex;flex-direction:column}.mh-dark-mode.PageHunterProfile .pageFrameView .mouseCrownsView-group-mouse:hover .mouseCrownsView-group-mouse-padding,.mouseCrownsView-group-mouse:hover .mouseCrownsView-group-mouse-padding{background-color:#fff}.mouseCrownsView-group-mouse-favouriteButton{top:0;right:0}.mouseCrownsView-group-mouse-favouriteButton:hover{background-color:transparent;border:none}.mouseCrownsView-group-mouse .mouseCrownsView-group-mouse-favouriteButton{pointer-events:all!important}.mouseCrownsView-group-mouse .mouseCrownsView-group-mouse-favouriteButton:hover{top:2px;right:2px;background:url(https://www.mousehuntgame.com/images/ui/camp/trap/star_favorite.png?asset_cache_version=3) 0 0 / cover no-repeat}.hunterProfileItemsView-categoryContent-item:hover .itemImage{background-size:125%}.hunterProfileItemsView-categoryContent-item .itemImage .quantity{opacity:1;transition:.2s ease-in}.hunterProfileItemsView-categoryContent-item:hover .itemImage .quantity{opacity:0}\n"; } }); // src/modules/better-ui/styles/scoreboards.css var scoreboards_default; var init_scoreboards = __esm({ "src/modules/better-ui/styles/scoreboards.css"() { scoreboards_default = ".scoreboardRelativeRankingTableView table{border:1px solid #ddedff}.scoreboardRelativeRankingTableView th{display:flex;grid-column:1 / 6;align-items:center;justify-content:space-around;font-size:10px;font-weight:400;background-color:#dbecff;border-bottom:1px solid #b7c4d2}.scoreboardRelativeRankingTableView td:nth-of-type(3){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scoreboardRelativeRankingTableView tr{display:grid;grid-template-columns:25px 20px auto 68px;overflow:hidden}.scoreboardTableView-profilePic{box-sizing:border-box;border:1px solid #e9e9e9;box-shadow:none}.viewer .tournament-team-rank.updated:hover:after{border-radius:2px}\n"; } }); // src/modules/better-ui/styles/scrambles.css var scrambles_default; var init_scrambles = __esm({ "src/modules/better-ui/styles/scrambles.css"() { scrambles_default = "#overlayPopup.spring_chick_message_item{background:#f8f8f4;border:2px solid #bdb1d8;border-radius:50px/90%;box-shadow:0 3px 3px -2px #ababab;animation:.2s MHCheckoutDialogView-frameReveal 1 ease-out,.9s bannerSoundNew 1 .2s}#overlayPopup.spring_chick_message_item .jsDialog.top,#overlayPopup.spring_chick_message_item .jsDialog.bottom,#overlayPopup.spring_chick_message_item .jsDialogContainer .prefix,#overlayPopup.spring_chick_message_item #jsDialogClose,#overlayPopup.spring_chick_message_item .jsDialog .quantity,#overlayPopup.spring_chick_message_item .description{display:none}#overlayPopup.spring_chick_message_item .jsDialogContainer .content{flex-grow:1;margin:0;font-size:1.75em;text-align:center;animation:1s claimWiggle 1 1s}@media (prefers-reduced-motion: reduce){#overlayPopup.spring_chick_message_item .jsDialogContainer .content{animation:none}}#overlayPopup.spring_chick_message_item .jsDialogContainer{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;height:120px}#overlayPopup.spring_chick_message_item .imgArray .img img{width:100px;max-width:unset;height:100px;filter:drop-shadow(0 2px 1px #505050);transform:scaleX(-1)}#overlayPopup.spring_chick_message_item .jsDialogContainer .suffix{background:transparent;border:none}#overlayPopup.spring_chick_message_item.singleItemLeft .jsDialogContainer .items{float:none;width:150px;padding:0}#overlayPopup.spring_chick_message_item.singleItemLeft .img{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}#overlayPopup.spring_chick_message_item .jsDialog.background{background:transparent}#overlayPopup.spring_chick_message_item .button{padding:2px 6px}#overlayPopup.spring_chick_message_item .img .itemImage{width:100px;height:100px}#overlayPopup.spring_chick_message_item .img .name{font-size:1.25em}\n"; } }); // src/modules/better-ui/styles/select2.css var select2_default; var init_select2 = __esm({ "src/modules/better-ui/styles/select2.css"() { select2_default = ".select2-result-sub .select2-result-label{display:grid;grid-template-columns:1fr 4fr 1fr;place-items:center start}.select2-results li.select2-result-with-children>.select2-result-label{padding:3px;font-size:12px}.friendsPage-filter-environment-quantity{min-width:25px;text-align:center;vertical-align:middle}.PageAdversaries #select2-drop li,.PageFriends #select2-drop li{padding:3px;font-size:12px}.PageAdversaries #select2-drop li:nth-child(2n){background-color:#eae9e9}.PageAdversaries #select2-drop li:nth-child(2n).select2-highlighted{background-color:#3875d7}.select2-search input{padding:6px 0 6px 5px;font-size:15px;vertical-align:middle;background:url(https://www.mousehuntgame.com/images/select2/select2.png?asset_cache_version=2) no-repeat 100% -26px,linear-gradient(to bottom,#fff 85%,#eee 99%) 0 0;background-size:70px}.friendsPage-list-filter-select .select2-drop ul.select2-results li:first-of-type{display:none}.friendsPage-list-filter-select .select2-drop ul.select2-result-sub li:first-of-type{display:grid}\n"; } }); // src/modules/better-ui/styles/settings.css var settings_default17; var init_settings18 = __esm({ "src/modules/better-ui/styles/settings.css"() { settings_default17 = ".PagePreferences__section{padding:10px;margin:10px 0;border:1px solid #e0cfb4}.PreferencesPage__formInputDescription{position:relative}.PagePreferences__profilePicContainer{padding-top:10px}.PagePreferences__settingDefault{display:none}.PagePreferences__title{padding-bottom:10px;margin:0}\n"; } }); // src/modules/better-ui/styles/sidebar.css var sidebar_default4; var init_sidebar4 = __esm({ "src/modules/better-ui/styles/sidebar.css"() { sidebar_default4 = ".pageSidebarView-user{border-bottom:none}.pageSidebarView-block-description{display:none}\n"; } }); // src/modules/better-ui/styles/skins.css var skins_default; var init_skins = __esm({ "src/modules/better-ui/styles/skins.css"() { skins_default = ".skin .campPage-trap-itemBrowser-items{top:50px}.skin .campPage-trap-itemBrowser-item-image,.skin .campPage-trap-itemBrowser-item-description.shortDescription{display:none}.skin .campPage-trap-itemBrowser-item-content .campPage-trap-itemBrowser-item-name{margin-top:11px}\n"; } }); // src/modules/better-ui/styles/tabs.css var tabs_default; var init_tabs = __esm({ "src/modules/better-ui/styles/tabs.css"() { tabs_default = '.campPage-tabs-tabContentContainer{margin-bottom:10px;background-color:#f6f3eb;border:1px solid #cbc6bb;border-radius:5px;box-shadow:-1px -1px 1px #d3cecb inset}.campPage-tabs-tabRow{top:0}.campPage-tabs-tabRow:hover .campPage-tabs-tabHeader span,.campPage-tabs-tabRow:focus .campPage-tabs-tabHeader span,.campPage-tabs-tabHeader span{border-bottom:1px solid #f6f3eb}.campPage-tabs-tabHeader.active span,.campPage-tabs-tabRow a.campPage-tabs-tabHeader:hover span,.campPage-tabs-tabRow a.campPage-tabs-tabHeader:focus span{border:1px solid #f7f5ee;border-bottom:none;box-shadow:0 1px #f7f5ee}.campPage-tabs-tabContent[data-tab=quests],.campPage-tabs-tabContent[data-tab=journal]{background:none}a.campPage-daily-chest-info,.campPage-daily-chest-label,.campPage-daily-tomorrow-title,.campPage-daily-tomorrow-availableIn,.campPage-daily-today,.campPage-daily-progress.clear-block,.campPage-daily-draw-details,.shopsPage-kingsCalibratorPromo b{display:none}.campPage-daily-tomorrow{position:relative;height:140px;overflow:hidden;background-position:center;border:1px solid #7d3a08;box-shadow:-1px -1px 2px #d3cecb inset}.campPage-daily-tomorrow-reward{display:inline-block;width:100%;padding:5px 0;margin-top:0;font-size:12px;font-weight:900;color:#87430d;text-shadow:0 0 2px #ffcd6f;background-color:#ffffff57}.campPage-daily-draw-prize-description{margin:10px 20px}div#dailyRewardTimer{position:absolute;right:0;bottom:1px;display:block;width:100%;padding:3px 0;font-size:13px;font-weight:400;color:#904811;text-align:center;background-color:#ffd8987f;border-top:10px}.campPage-tabs-tabContent.active[data-tab=daily]{margin:5px;background:#f6f3eb;border-radius:3px;box-shadow:inset 0 0 5px #707070}.campPage-daily-container{padding:15px;margin:0;background:none;border:none;box-shadow:none}.campPage-daily-container.draw{margin-top:-15px;background:none;border:none;box-shadow:none}.campPage-daily-container.draw .campPage-daily-content{height:230px;padding-top:0;background:url(https://www.mousehuntgame.com/images/ui/daily/next_day_bkg.png?asset_cache_version=2);background-position-x:center;background-position-y:7px;background-size:cover;border:1px solid #7d3a08;border-radius:0;box-shadow:-1px -1px 2px #d3cecb inset}.campPage-daily-draw-title,.campPage-daily-draw-prize-name{display:inline-block;width:100%;padding:5px 0;margin-top:0;font-size:12px;font-weight:900;color:#87430d;text-shadow:0 0 2px #ffcd6f}.campPage-daily-draw-prize-name{font-size:12px}img.campPage-daily-draw-prize-image{padding:0;background:none}.shopsPage-kingsCalibratorPromo:after{top:5px;width:45px;height:45px;background-image:url(https://i.mouse.rip/mh-improved/kings-calibrator.png);filter:drop-shadow(0 1px 1px #7d3a08)}div#dailyRewardTimer:before{content:"Available in "}.shopsPage-kingsCalibratorPromo{height:55px;padding:0 55px;margin-top:2px;line-height:13px;color:#412814;text-align:center;background:#ffe8aa;border:1px solid #7d3a08;border-radius:0;box-shadow:inset -1px -1px 2px #d3cecb}.campPage-daily-container .shopsPage-kingsCalibratorPromo-button{margin:0;background:#2a98ff;border-radius:5px;box-shadow:inset 0 -1px 1px 1px #2d76ba}.campPage-daily-container .shopsPage-kingsCalibratorPromo-button:hover,.campPage-daily-container .shopsPage-kingsCalibratorPromo-button:active,.campPage-daily-container .shopsPage-kingsCalibratorPromo-button:focus{background:#2d76ba}.campPage-tabs-tabContent.active[data-tab=daily],.campPage-tabs-tabContent-larryTip-container,.campPage-quests-container{line-height:16px;background-color:#fbf8f6;border:1px solid #d3cecb;border-radius:3px;box-shadow:-1px 1px 3px #d3cecb inset}.campPage-daily-container.daily .campPage-daily-content{margin-top:15px}.campPage-tabs-tabContent-larryTip-container a.campPage-tabs-tabContent-larryTip-byLine,img.campPage-larryTip-external-link-icon{display:none}.campPage-tabs-tabContent-larryTip-environment{padding-bottom:1em}.campPage-tabs-tabContent-larryTip-container p:last-of-type a{display:block;padding:1em 0 0;text-align:right}.campPage-tabs-tabContent-larryTip-container p:last-of-type a:after{content:"\\2192"}.campPage-daily-container .shopsPage-kingsCalibratorPromo{display:flex;align-items:center}.mousehuntHud-menu ul li a{text-shadow:0 0 1px #cbbba9}\n'; } }); // src/modules/better-ui/styles/team.css var team_default; var init_team = __esm({ "src/modules/better-ui/styles/team.css"() { team_default = '.teamPage-container .userInteractionButtonsView.small_buttons .userInteractionButtonsView-button{width:33px!important;height:33px!important;background-size:cover!important}.teamPage-container .teamPage-memberRow-actions .mousehuntTooltip{right:-40px;left:-40px}.teamPage-container .userInteractionButtonsView-unfriendLink{display:none}.teamPage-profile-header-controls{top:0;bottom:0;display:flex;align-items:center}.teamPage-profile-header-controls br{content:""}.teamPage-profile-header-controls br:after{content:" "}.teamPageConfirm-dialog input.userSelectorView-filter-input{width:600px;padding:10px;margin:0 10px}.teamPageConfirm-dialog .userSelectorView-filterContainer{width:100%;padding:0 0 10px}.teamPageConfirm-dialog a.userSelectorView-filter-clear.active{top:15px;right:15px;font-size:14px;color:transparent}.teamPageConfirm-dialog a.userSelectorView-filter-clear.active:hover:after{color:#f55}.teamPageConfirm-dialog a.userSelectorView-filter-clear.active:after{font-size:16px;color:#b72929;content:"\\2715"}.teamPage-memberJournal-empty{line-height:30px;color:#575757}.teamPage-memberJournal-list{height:unset;min-height:30px}.teamPage-memberJournals{display:grid;grid-template-columns:1fr 1fr 1fr}.teamPage-memberJournalContainer{width:auto}.tournamentPage-tournamentContainer-prizeInfo,.teamPage-memberJournal-trapSetup b{display:none}.teamPage-memberJournal-trapSetup i{margin-left:9px;font-size:12px;line-height:17px}.teamPage-memberJournal-identity a.teamPage-member-image.online:before{position:absolute;top:0;right:-180px;width:10px;height:10px;content:"";background-color:#8ff309;border:1px solid #355c1d;border-radius:50%}.teamPage-profile-awardContainer-awardList{position:relative}.teamPage-profile-awardContainerInfo{position:absolute;top:-32px;right:0;display:block;width:250px;font-size:10px;color:#451e00;text-shadow:1px 1px 1px #eee;opacity:0;transition:.2s ease-in}.teamPage-profile-awardContainer-awardList:hover .teamPage-profile-awardContainerInfo{opacity:1}\n'; } }); // src/modules/better-ui/styles/trap-selector.css var trap_selector_default; var init_trap_selector = __esm({ "src/modules/better-ui/styles/trap-selector.css"() { trap_selector_default = ".campPage-trap-itemBrowser-item.largeQuantity .campPage-trap-itemBrowser-item-quantity .quantity{display:inline-block;font-size:12px;background-color:#fff}.campPage-trap-itemBrowser-item-description.shortDescription{width:auto;margin-left:62px;font-size:10px}.campPage-trap-itemBrowser-item-content{width:81%}.campPage-trap-itemBrowser-item-favorite{position:absolute;top:0;right:0;width:30px;height:30px;padding:5px;margin-top:0;background-color:#fff;border-radius:50%;opacity:0;transition:.2s ease-in}.campPage-trap-itemBrowser-item:hover .campPage-trap-itemBrowser-item-favorite{opacity:1}.campPage-trap-itemBrowser-item-armButton{height:25px;line-height:25px;color:#fff;background-color:#40f446;box-shadow:0 -13px 11px 2px #22b227 inset}.campPage-trap-itemBrowser-item-armButton:hover{background-color:#00e608;box-shadow:0 0 1px #26d42c inset}.armed .campPage-trap-itemBrowser-item-armButton{box-shadow:0 -13px 7px #d57229 inset}.armed.canDisarm .campPage-trap-itemBrowser-item-armButton:hover{box-shadow:0 -13px 7px #e87c2d inset}.campPage-trap-itemBrowser-item{min-height:80px}.campPage-trap-itemBrowser-item-name{margin-bottom:5px}.trapSelectorView__activeCodex{width:50px;height:50px}.campPage-trap-itemBrowser-armed-item.trinket .campPage-trap-itemBrowser-item-statContainer{position:absolute;top:20px;left:60px;display:block}.campPage-trap-itemBrowser-armed-item-content{position:relative;height:auto}.campPage-trap-itemBrowser-armed-item .campPage-trap-itemBrowser-item-quantity{display:flex;flex-direction:column;align-items:center;width:50px}a.campPage-trap-itemBrowser-item-disarmButton{position:absolute;top:50px;left:-85px;width:74px;font-weight:400;line-height:20px;color:#fff;background-color:#ff6161;border:1px solid #666;box-shadow:0 -13px 7px #b30000 inset}a.campPage-trap-itemBrowser-item-disarmButton:hover{box-shadow:0 -20px 5px #ff7070 inset}\n"; } }); // src/modules/better-ui/styles/traps.css var traps_default; var init_traps = __esm({ "src/modules/better-ui/styles/traps.css"() { traps_default = '.campPage-trap-baitLabel{display:none}.campPage-trap-armedItem.bait{display:flex;align-items:center;justify-content:flex-start}.campPage-trap-armedItem.bait.active{top:338px}.campPage-trap-baitDetails{color:transparent!important;text-shadow:none}.campPage-trap-baitName,.campPage-trap-baitQuantity{color:#926944;text-shadow:0 0 1px #ae9b6d,1px 1px #fff}.mh-dark-mode .campPage-trap-baitName,.mh-dark-mode .campPage-trap-baitQuantity{right:0;bottom:0;color:#ffe6d0;text-shadow:0 0 1px #ae9b6d,1px 1px #000}.trapSelectorView__armedItemQuantity span,.campPage-trap-baitQuantity{position:absolute;right:0;bottom:0;box-sizing:border-box;padding:5px;font-size:16px;font-weight:400;line-height:11px;text-align:right;background-color:#ffffffb3;border:1px solid #9d917f;border-right:none;border-bottom:none;border-bottom-right-radius:3px;box-shadow:-1px -1px 1px #d3cecb inset}.mh-dark-mode .trapSelectorView__armedItemQuantity span{color:#ffe6d0;text-shadow:none;background-color:#333}.campPage-trap-armedItem.bait .campPage-trap-armedItem-image{width:60px;margin-right:0;background-repeat:no-repeat;background-position:center;background-size:100%}.mh-dark-mode .campPage-trap-baitQuantity,.mh-dark-mode .campPage-trap-armedItem .quantity span{color:#ffe6d0;background-color:#333}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-trapEffectiveness{background:#424242;border:1px solid #888;box-shadow:1px 1px 1px #535151}.mh-dark-mode .campPage-trap-trapStat .value{color:#fff;background-color:#333;border-color:#5c5c5c}.campPage-trap-armedItem .quantity span{position:absolute;right:-6px;bottom:3px;padding:3px;text-align:right;background-color:#fffc;border:1px solid #d3cecb;border-right:none;border-bottom:none;border-radius:0 0 4px;box-shadow:-1px -1px 1px #d3cecb inset}.campPage-trap-statsContainer{border:1px solid #d3cecb;border-radius:4px;box-shadow:-1px 1px 3px #d3cecb inset}.campPage-trap .trapImageView{width:352px;height:352px;margin-top:0;margin-left:0;background:transparent;border:none;border-bottom:1px solid #ceb7a6;border-radius:0}.campPage-trap{border:1px solid #9d917f;border-top-left-radius:5px;border-top-right-radius:5px}.hunterInfoView-wrapper .hunterInfoView-trapBlock-header-container,.hunterInfoView-wrapper .hunterInfoView-trapBlock-footer{border-width:1px;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-container{margin-right:-9px;margin-left:-9px;border-bottom:1px solid #ceb7a6;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-trapBlock-footer-stats{padding-top:35px;margin-right:-9px;margin-left:-9px;box-shadow:none}.hunterInfoView-wrapper .trapImageView{width:368px;height:368px;margin:0 auto}.hunterInfoView-wrapper a.trapImageView-zoomButton{top:80%}.hunterInfoView-wrapper .hunterInfoView-trapBlock-header-title-container{left:1px;border-width:1px;border-bottom:none}.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-items{background:none;border:none}.hunterInfoView-wrapper .hunterInfoView-trapBlock-footer{background:#f6f3eb;border-top:0;box-shadow:none}.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot-quantity{bottom:0;width:100%;background-color:#ffffffe5;border-color:#d3cecb;border-right:none;border-bottom:none;border-left:none;border-radius:0}.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot,.hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot.middle{width:60px;height:60px;margin:0;background-position:-1px;background-size:61px;border:1px solid #000;box-shadow:none}.hunterInfoView-wrapper .campPage-trap-trapStat{display:flex;background:#fff;border:1px solid #e2d3c8;border-radius:3px}.mh-dark-mode .hunterInfoView-wrapper .campPage-trap-trapStat{background:#424242;border-color:#5c5c5c}.hunterInfoView-wrapper .campPage-trap-itemStats{display:flex;padding-bottom:0;margin:0 5px}.hunterInfoView-wrapper .campPage-trap-trapStat .value{background:transparent;border:none}.trapImageView-trapAura{opacity:.9}.largerTrapView-popup-name,span.campPage-trap-armedItem-skin-description-content b,span.campPage-trap-armedItem-skin-description-content br{display:none}.campPage-trap-trapEffectivenessBar{height:12px;margin-top:-1px;background:#c6bea8;border:1px solid #9c938e}.mh-dark-mode .campPage-trap-trapEffectivenessBar{background-color:#424242;border-color:#5c5c5c}.campPage-trap-trapEffectivenessBar.easy:after,.campPage-trap-trapEffectivenessBar.effortless:after,.campPage-trap-trapEffectivenessBar.strong:after,.campPage-trap-trapEffectivenessBar.excellent:after{background:#5ccd5e}.campPage-trap-trapEffectivenessBar.near_impossible:after,.campPage-trap-trapEffectivenessBar.very_poor:after,.campPage-trap-trapEffectivenessBar.overpowering:after{background:#dc7878}.campPage-trap-trapEffectivenessBar.difficult:after,.campPage-trap-trapEffectivenessBar.challenging:after,.campPage-trap-trapEffectivenessBar.mild:after,.campPage-trap-trapEffectivenessBar.moderate:after,.campPage-trap-trapEffectivenessBar.medium:after{background:#e6cd66}.campPage-trap-trapEffectivenessBar.impossible:after{width:100%;background:#a83030}.campPage-trap-trapEffectiveness-header{color:transparent}.campPage-trap-trapEffectiveness-header b{color:#926944}.campPage-trap-trapEffectiveness-content{top:50px}.campPage-trap-trapEffectiveness-difficultyGroup{background:#f6f3eb;border-color:#e3dbd5;border-radius:3px;box-shadow:inset 0 0 1px #755e40}.campPage-trap-trapEffectiveness-difficultyGroup-label{grid-column:span 2;font-weight:400;text-align:center;border:none}.campPage-trap-armedItem.skin .campPage-trap-armedItem-skin-description-content span{font-size:12px;vertical-align:middle}.trapSelectorView__browserContainer .campPage-trap-trapEffectivenessBar{display:none}.campPage-trap-armedItem.inactive{background:#f6f3eb}.campPage-trap-trapStat.power .value b{line-height:17px}.itembrowser-skin-image-wrapper{background-image:url(https://www.mousehuntgame.com/images/items/bases/trap_small/a44d6a59ca9c0d11224bb36fd4e16378.png?cv=2);background-position:center}img.itembrowser-skin-image{width:332px}.campPage-trap-trapStat-mathRow{font-size:12px;line-height:23px}.campPage-trap-trapStat-mathRow.label{font-size:17px}.campPage-trap-trapStat .math{bottom:90px;left:-18px;width:337px}.campPage-trap-trapStat .math .arrow{display:none}.campPage-trap-trapStat .value span{font-size:14px}.campPage-trap-trapStat.cheese_effect .value span{font-size:12px}.campPage-trap-itemBrowser-armed-item-image-frame{background:none;border:none;box-shadow:none}.campPage-trap-armedItem.empty .quantity{display:none}.empty .campPage-trap-armedItem-empty{top:11px;right:2px;bottom:10px;display:flex;align-items:center;justify-content:center;width:auto;height:auto;font-size:12px;color:#671d1d;border-radius:10px;box-shadow:none}.campPage-trap-itemBrowser-armed-item.empty.clear-block{display:flex;align-items:center;background-color:#e3d4d1}.campPage-trap-itemBrowser-armed-item.empty.clear-block .campPage-trap-itemBrowser-armed-item-content{display:flex;flex-direction:column;gap:10px;align-items:stretch}.campPage-trap-itemBrowser-armed-item.empty.clear-block .campPage-trap-itemBrowser-armed-item-content .campPage-trap-itemBrowser-item-name{font-size:18px;font-variant:none;color:#671d1d;background:#e3d4d1}.campPage-trap-itemBrowser-item-disarmButton{width:100px;margin-top:10px;color:#000;background-color:#ffbfbf;box-shadow:0 -20px 5px #ffbfbf inset,1px 1px 1px #671d1d}a.campPage-trap-itemBrowser-item-disarmButton:hover{box-shadow:0 -20px 5px #cc8b8b inset,1px 1px 1px #671d1d}.campPage-trap-armedItem.bait.empty .campPage-trap-armedItem-image{background-image:url(https://www.mousehuntgame.com/images/ui/hunters_horn/sandwich_board/icons/bait_empty.png)}.campPage-trap-baitDetails .campPage-trap-baitName{position:absolute;inset:0 0 0 70px;display:flex;align-items:center}.campPage-trap-trapStat-mathRow-name{padding-right:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campPage-trap-itemBrowser-item-description-consumeMethod{white-space:nowrap}.trapSelectorView__browserContainer{animation:mh-improved-in-from-left .2s ease-in-out}@media (prefers-reduced-motion: reduce){.trapSelectorView__browserContainer{animation:none}}.trapSelectorView__armedItemBorder,.trapSelectorView__weaponSkinGroup button{border:1px solid #d3cecb;border-radius:5px 5px 4px 4px;box-shadow:-1px 1px 3px #d3cecb inset}.mh-dark-mode .trapSelectorView__armedItemBorder,.mh-dark-mode .trapSelectorView__weaponSkinGroup button,.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-armedItem.bait{border:1px solid #5c5c5c;border-radius:5px 5px 4px 4px;box-shadow:-1px 1px 3px #515151 inset}.trapSelectorView__weaponSkinGroup{padding:0;margin:0;border:none;box-shadow:none}.trapSelectorView__armedItem[data-item-classification=skin] .trapSelectorView__armedItemImage,.trapSelectorView__armedItem[data-item-classification=weapon] .trapSelectorView__armedItemImage{margin:3px;background-position:-1px -1px;background-size:72px}.trapSelectorView__trapStatSummaryContainer{background:#f6f3eb;border-color:#e3dbd5;border-radius:3px;box-shadow:none}.mh-dark-mode .trapSelectorView__trapStatSummaryContainer{background:#333;border-color:#fff;border-radius:3px;box-shadow:none}.trapSelectorView__trapStatSummary,.trapSelectorView__outerBlock{border:1px solid #d3cecb;border-radius:4px;box-shadow:-1px 1px 3px #d3cecb inset}.mh-dark-mode .trapSelectorView__trapStatSummary,.mh-dark-mode .trapSelectorView__outerBlock,.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-trapEffectiveness,.mh-dark-mode .mh-improved-favorite-setups-button{background:#424242;border:1px solid #888;box-shadow:1px 1px 1px #535151}.mh-dark-mode .mh-improved-favorite-setups-button{background-color:#424242;border-color:#5c5c5c}.trapSelectorView__activeCodexList.trapSelectorView__innerBlock{background:transparent;border:none}.trapSelectorView__activeCodexHeader{display:none}.trapSelectorView__armedItemQuantity span{position:absolute;right:-6px;bottom:3px;box-sizing:border-box;text-shadow:0 0 1px #ae9b6d,1px 1px #fff;background-color:#fcfbf9;border-color:#d3cecb;border-right:none;border-bottom:none;border-radius:0 0 3px}.trapSelectorView__armedItem[data-item-classification=skin]{margin-right:0}.trapSelectorView__armedItem[data-item-classification=skin] .trapSelectorView__armedItemImage,.trapSelectorView__armedItemImage{width:65px}.trapSelectorView__trap{padding-top:0}.trapSelectorView__activeCodexContainer:hover{background-color:#fdfaf2;filter:none}.mh-dark-mode .trapSelectorView__activeCodexContainer:hover{background-color:#494949}.trapSelectorView__armedItem--empty .trapSelectorView__armedItemImage{background:transparent;box-shadow:none}.campPage-trap-itemBrowser-item.codex .campPage-trap-itemBrowser-item-description{line-height:1.5}input.trapSelectorView__codexListSearch{width:auto;max-width:100px}.PageCamp .trapImageView-layer{border-top-left-radius:4px;border-top-right-radius:4px}#overlayPopup.LargerTrapView #jsDialogClose{display:none}#overlayPopup.LargerTrapView .trapImageView-layerWrapper{border-top-left-radius:7px;border-top-right-radius:7px}#overlayPopup.LargerTrapView .trapImageView{top:1px}.mh-dark-mode .trapSelectorView__trapStatSummary,.mh-dark-mode .trapSelectorView__outerBlock,.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-trapEffectiveness,.mh-dark-mode .trapSelectorView__armedItemBorder,.mh-dark-mode .trapSelectorView__weaponSkinGroup button,.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-armedItem.bait{border:1px solid #5c5c5c;border-radius:5px 5px 4px 4px;box-shadow:-1px 1px 3px #515151 inset}.mh-dark-mode .trapSelectorView__armedItemQuantity span,.mh-dark-mode .campPage-trap-baitName,.mh-dark-mode .campPage-trap-baitQuantity{border-color:#5a5a5a;box-shadow:-1px -1px 1px #5c5c5c inset}.mh-dark-mode .mh-improved-favorite-setups-button-label{color:#e0d3b3}.campPage-trap-itemBrowser-favorite-item-image-frame{top:-1px;left:-1px;width:50px;height:50px;overflow:hidden}.trapSelectorView__armedItem--empty[data-item-classification=bait] .trapSelectorView__armedItemImage:after{position:absolute;top:0;bottom:0;left:0;width:70px;content:"";background:url(https://www.mousehuntgame.com/images/ui/hunters_horn/sandwich_board/icons/bait_empty.png) no-repeat 50% 50% / contain}\n'; } }); // src/modules/better-ui/styles/tutorial.css var tutorial_default; var init_tutorial = __esm({ "src/modules/better-ui/styles/tutorial.css"() { tutorial_default = "#overlayPopup.chooseTrap .weapon .trapDamageType{display:none}#overlayPopup.chooseTrap .weapon .trapDetails{display:flex;flex-direction:column;gap:10px}#OnboardArrow.larryCircle .whiteboard .action{bottom:-25px}#OnboardArrow.larryCircle .whiteboard .action:after{font-size:12px}.campPage-trap-baitQuantity.highlight{transform-origin:bottom right;animation:mh-improved-scale-large .6s ease-in-out}@media screen and (prefers-reduced-motion: reduce){.campPage-trap-baitQuantity{animation:none}}#OnboardArrow.larryCircle .whiteboard{line-height:20px}.guideArrowView.animated.show.topLeft{margin-top:-30px;margin-left:-100px}.onboarding .mousehuntHud-marketPlace.disabled,.onboarding .mousehuntHud-marketPlace.disabled:hover,.onboarding .mousehuntHud-premiumShop.premium_items{opacity:.6}.onboarding .mousehuntHud-shield{display:block}.onboarding.hide_favorites .campPage-trap-itemBrowser-items{top:60px}a.mousehuntHud-userStat.trap.base.hidden,a.mousehuntHud-userStat.trap.weapon.hidden{display:inline-block;visibility:visible}.onboarding.hide_favorites .campPage-trap-itemBrowser-quickLinks.campPage-trap-itemBrowser-quickLinks-power{display:none}\n"; } }); // src/modules/better-ui/index.js var imported4, styles4, kingsPromoTextChange, addAdventureBookClass, addUserscriptStyles, init18, better_ui_default; var init_better_ui = __esm({ "src/modules/better-ui/index.js"() { init_utils2(); init_friends(); init_hud(); init_favorite_setups(); init_journal_historian(); init_lgs_reminder(); init_mhct2(); init_profile_plus(); init_spring_egg_hunt_helper(); init_tsitu_autoloader(); init_tsitu_location_catch_stats(); init_tsitu_qol(); init_tsitu_supply_search(); init_adventure(); init_corkboard(); init_daily_draw(); init_events3(); init_footer(); init_friends2(); init_general4(); init_gifts(); init_hud2(); init_inbox(); init_login(); init_mobile_camp(); init_overlays(); init_profile(); init_scoreboards(); init_scrambles(); init_select2(); init_settings18(); init_sidebar4(); init_skins(); init_tabs(); init_team(); init_trap_selector(); init_traps(); init_tutorial(); imported4 = [adventure_default, corkboard_default, daily_draw_default, events_default2, footer_default, friends_default2, general_default4, gifts_default, hud_default2, inbox_default, login_default, mobile_camp_default, overlays_default, profile_default, scoreboards_default, scrambles_default, select2_default, settings_default17, sidebar_default4, skins_default, tabs_default, team_default, trap_selector_default, traps_default, tutorial_default]; styles4 = imported4; kingsPromoTextChange = () => { const kingsPromo = document.querySelector(".shopsPage-kingsCalibratorPromo"); if (kingsPromo) { kingsPromo.innerHTML = kingsPromo.innerHTML.replace("and even", "and"); } }; addAdventureBookClass = () => { var _a, _b, _c; if (!((_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestAdventureBook) == null ? void 0 : _b.adventure) == null ? void 0 : _c.can_claim) || !getCurrentPage("camp")) { return; } const adventureBook = document.querySelector(".adventureBookBanner"); if (!adventureBook) { return; } adventureBook.classList.add("adventureBookBanner-complete"); }; addUserscriptStyles = () => __async(void 0, null, function* () { const userscriptStyles = [ { id: "userscript-styles-no-mhct-styles", styles: mhct_default2 }, { id: "userscript-styles-no-tsitu-qol-styles", styles: tsitu_qol_default }, { id: "userscript-styles-no-profile-plus-styles", styles: profile_plus_default }, { id: "userscript-styles-no-spring-egg-hunt-helper-styles", styles: spring_egg_hunt_helper_default }, { id: "userscript-styles-no-lgs-reminder-styles", styles: lgs_reminder_default }, { id: "userscript-styles-no-favorite-setups-styles", styles: favorite_setups_default }, { id: "userscript-styles-no-tsitu-autoloader-styles", styles: tsitu_autoloader_default }, { id: "userscript-styles-no-journal-historian-styles", styles: journal_historian_default }, { id: "userscript-styles-no-tsitu-supply-search-styles", styles: tsitu_supply_search_default }, { id: "userscript-styles-no-tsitu-location-catch-stats-styles", styles: tsitu_location_catch_stats_default } ]; if (getFlag("no-userscript-styles")) { return; } userscriptStyles.forEach((userscript) => { if (!getFlag(userscript.id)) { addStyles(userscript.styles, userscript.id); } }); }); init18 = () => __async(void 0, null, function* () { addStyles(styles4, "better-ui"); addUserscriptStyles(); friends_default(); hud_default(); onNavigation(addAdventureBookClass, { page: "camp" }); onRequest("*", addAdventureBookClass); onRequest("users/dailyreward.php", kingsPromoTextChange); }); better_ui_default = { id: "better-ui", name: "Better UI", type: "better", default: true, description: "Updates the MH interface with a variety of UI and style changes.", order: -1, load: init18 }; } }); // src/modules/custom-css/settings/index.js var settings_default18; var init_settings19 = __esm({ "src/modules/custom-css/settings/index.js"() { settings_default18 = () => __async(void 0, null, function* () { return [{ id: "override-styles", title: "Custom Styles", default: "", description: '<a href="https://github.com/MHCommunity/mousehunt-improved/wiki/Custom-CSS" target="_blank" rel="noopener noreferrer">Custom CSS</a> to apply to MouseHunt.', settings: { type: "textarea" } }]; }); } }); // src/modules/custom-css/index.js var loadStyleOverrides, init19, custom_css_default; var init_custom_css = __esm({ "src/modules/custom-css/index.js"() { init_utils2(); init_settings19(); loadStyleOverrides = () => { const customStyles = getSetting("override-styles"); if (customStyles) { addStyles(customStyles, "mousehunt-improved-override-styles"); } }; init19 = () => __async(void 0, null, function* () { onEvent("mh-improved-loaded", loadStyleOverrides); }); custom_css_default = { id: "custom-css", type: "advanced", alwaysLoad: true, load: init19, settings: settings_default18 }; } }); // src/modules/custom-horn/settings/index.js var settings_default19; var init_settings20 = __esm({ "src/modules/custom-horn/settings/index.js"() { settings_default19 = () => __async(void 0, null, function* () { const options = [ { name: "Default", value: "default" }, { name: "Tournament Horn", value: "huntersHornView__horn--tournament" }, { name: "Events", value: "group", options: [ { name: "Birthday", value: "huntersHornView--seasonalEvent-birthday" }, { name: "Great Winter Hunt", value: "huntersHornView--seasonalEvent-greatWinterHunt" }, { name: "Halloween", value: "huntersHornView--seasonalEvent-halloween" }, { name: "Lunar New Year", value: "huntersHornView--seasonalEvent-lunarNewYear" }, { name: "Spring Egg Hunt", value: "huntersHornView--seasonalEvent-springEggHunt" } ] }, { name: "Color", value: "group", options: [ { name: "Blue", value: "horn-color-blue" }, { name: "Cyan", value: "horn-color-cyan" }, { name: "Green", value: "horn-color-green" }, { name: "Pink", value: "horn-color-pink" }, { name: "Purple", value: "horn-color-purple" }, { name: "Red", value: "horn-color-red" }, { name: "Faded", value: "horn-color-faded" }, { name: "Rainbow", value: "horn-color-rainbow" } ] } ]; return [{ id: "custom-horn", title: 'Custom Horn <a class="mh-improved-custom-horn-show-horn">Show Horn</a>', default: [options[0]], description: "Change the horn to an event horn or a different color.", settings: { type: "multi-select", number: 1, options } }]; }); } }); // src/modules/custom-horn/styles.css var styles_default23; var init_styles24 = __esm({ "src/modules/custom-horn/styles.css"() { styles_default23 = ".huntersHornView.horn-color-blue .huntersHornView__horn{filter:hue-rotate(158deg)}.huntersHornView.horn-color-cyan .huntersHornView__horn{filter:hue-rotate(112deg)}.huntersHornView.horn-color-green .huntersHornView__horn{filter:hue-rotate(66deg)}.huntersHornView.horn-color-pink .huntersHornView__horn{filter:hue-rotate(280deg)}.huntersHornView.horn-color-purple .huntersHornView__horn{filter:hue-rotate(195deg)}.huntersHornView.horn-color-red .huntersHornView__horn{filter:hue-rotate(317deg) saturate(1.6)}.huntersHornView.horn-color-faded .huntersHornView__horn{filter:sepia(1)}.huntersHornView.horn-color-rainbow .huntersHornView__horn{animation:mh-improved-hue-rotate 30s infinite}@media (prefers-reduced-motion: reduce){.huntersHornView.horn-color-rainbow .huntersHornView__horn{animation:none}}.mh-improved-custom-horn-show-horn{position:absolute;top:0;right:225px;bottom:0;display:flex;align-items:center;font-size:12px}\n"; } }); // src/modules/custom-horn/index.js var addedClass2, addHornClass, listenForPreferenceChanges2, addPreview2, persistHornClass, init20, custom_horn_default; var init_custom_horn = __esm({ "src/modules/custom-horn/index.js"() { init_utils2(); init_settings20(); init_styles24(); addedClass2 = ""; addHornClass = (preview = false) => { const hornView = document.querySelector(".huntersHornView"); if (!hornView) { return; } const horn = document.querySelector(".huntersHornView__horn"); if (!horn) { return; } horn.classList.add("huntersHornView__horn--default"); let setting = getSetting("custom-horn-0", "default"); if (preview) { setting = preview; } hornView.classList.add(); if (addedClass2) { hornView.classList.remove(addedClass2); } if ("default" !== setting) { hornView.classList.add(setting); addedClass2 = setting; } }; listenForPreferenceChanges2 = () => { const input = document.querySelector("#mousehunt-improved-settings-design-custom-horn select"); if (!input) { return; } input.addEventListener("change", () => { addHornClass(); }); }; addPreview2 = () => { const previewLink = document.querySelector(".mh-improved-custom-horn-show-horn"); if (!previewLink) { return; } let isShowing = false; let timeout = null; previewLink.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); const horn = document.querySelector(".huntersHornView__horn"); if (!horn) { return; } const backdrop = document.querySelector(".huntersHornView__backdrop"); if (!backdrop) { return; } if (isShowing) { isShowing = false; previewLink.textContent = "Show Horn"; clearTimeout(timeout); horn.classList.add("huntersHornView__horn--reveal"); horn.classList.remove("huntersHornView__horn--ready"); setTimeout(() => { backdrop.classList.remove("huntersHornView__backdrop--active"); }, 400); timeout = setTimeout(() => { horn.classList.remove("huntersHornView__horn--reveal"); }, 1e3); return; } isShowing = true; previewLink.textContent = "Hide Horn"; backdrop.classList.add("huntersHornView__backdrop--active"); horn.classList.add("huntersHornView__horn--ready", "huntersHornView__horn--reveal"); clearTimeout(timeout); }); }; persistHornClass = () => { addHornClass(); onNavigation(() => { setTimeout(addHornClass, 1e3); }); onNavigation(() => { listenForPreferenceChanges2(); addPreview2(); }, { page: "preferences", onLoad: true }); }; init20 = () => __async(void 0, null, function* () { addStyles(styles_default23, "custom-horn"); persistHornClass(); }); custom_horn_default = { id: "custom-horn", type: "design", alwaysLoad: true, load: init20, settings: settings_default19 }; } }); // src/modules/custom-hud/settings/index.js var settings_default20; var init_settings21 = __esm({ "src/modules/custom-hud/settings/index.js"() { settings_default20 = () => __async(void 0, null, function* () { const options = [ { name: "Default", value: "default" }, { name: "Color", value: "group", options: [ { name: "Cyan", value: "hud-cyan" }, { name: "Green", value: "hud-green" }, { name: "Pink", value: "hud-pink" }, { name: "Purple", value: "hud-purple" }, { name: "Red", value: "hud-red" }, { name: "Teal", value: "hud-teal" }, { name: "Faded", value: "hud-faded" }, { name: "Gray", value: "hud-gray" } ] }, { name: "Midnight", value: "hud-midnight" }, { name: "Blueprint", value: "hud-blueprint" }, { name: "Suede", value: "hud-suede" }, { name: "Groovy Green", value: "hud-groovy-green" } ]; return [{ id: "custom-hud", title: "Custom HUD background", default: [options[0]], description: "Change the marbled HUD background.", settings: { type: "multi-select", number: 1, options } }]; }); } }); // src/modules/custom-hud/styles/blueprint.css var blueprint_default2; var init_blueprint3 = __esm({ "src/modules/custom-hud/styles/blueprint.css"() { blueprint_default2 = "body .mousehuntHud-marbleDrawer{background:url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) -46px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) 731px 0 no-repeat,url(https://i.mouse.rip/mh-improved/custom-hud/hud-blueprint.png) repeat-y top center}\n"; } }); // src/modules/custom-hud/styles/groovy-green.css var groovy_green_default; var init_groovy_green = __esm({ "src/modules/custom-hud/styles/groovy-green.css"() { groovy_green_default = "body .mousehuntHud-marbleDrawer{background:url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) -46px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) 731px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/folklore_forest_region/pattern.png) repeat-y bottom center/cover}\n"; } }); // src/modules/custom-hud/styles/midnight.css var midnight_default; var init_midnight = __esm({ "src/modules/custom-hud/styles/midnight.css"() { midnight_default = ".pageFrameView #mousehuntContainer.PageCamp .gameHeader:before,.pageFrameView #mousehuntContainer.PageJournal .gameHeader:before{background:transparent}.pageFrameView #mousehuntContainer.PageCamp,.pageFrameView #mousehuntContainer.PageJournal{background-color:#383e49}body .mousehuntHud-marbleDrawer{background:url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) -46px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) 731px 0 no-repeat;background-color:#383e49}.pageFrameView .pageFrameView-contentContainer,.pageFrameView .pageFrameView-column.right,.pageFrameView .pageFrameView-column.left{background-color:#111;border-color:#111}\n"; } }); // src/modules/custom-hud/styles/suede.css var suede_default; var init_suede = __esm({ "src/modules/custom-hud/styles/suede.css"() { suede_default = ".mousehuntHud-marbleDrawer{background:url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) -51px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) 736px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/suede.jpg) repeat bottom left/760px}#mousehuntContainer.PageCamp{background:url(https://www.mousehuntgame.com/images/ui/hud/suede.jpg) repeat-y}\n"; } }); // src/modules/custom-hud/index.js var addStyleEl, listenForPreferenceChanges3, persistBackground2, init21, custom_hud_default; var init_custom_hud = __esm({ "src/modules/custom-hud/index.js"() { init_utils2(); init_settings21(); init_blueprint3(); init_groovy_green(); init_midnight(); init_suede(); addStyleEl = () => { const setting = getSetting("custom-hud-0", "default"); const stylesEl = document.querySelector("#mh-improved-custom-hud-style"); if (stylesEl) { stylesEl.remove(); } if ("default" === setting) { return; } const mapping2 = { "hud-blueprint": blueprint_default2, "hud-suede": suede_default, "hud-groovy-green": groovy_green_default, "hud-midnight": midnight_default }; const styleEl = document.createElement("style"); styleEl.id = "mh-improved-custom-hud-style"; if (mapping2[setting]) { styleEl.innerHTML = mapping2[setting]; } else { styleEl.innerHTML = `body .mousehuntHud-marbleDrawer { background: url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) -46px 0 no-repeat, url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif) 731px 0 no-repeat, url(https://i.mouse.rip/mh-improved/marble-shadow.png) 6px 0 no-repeat, url(https://i.mouse.rip/mh-improved/custom-hud/${setting}.png) repeat-y top center; } .mousehuntHud-titleProgressBar { mix-blend-mode: luminosity; }`; } document.head.append(styleEl); }; listenForPreferenceChanges3 = () => { const input = document.querySelector("#mousehunt-improved-settings-design-custom-hud select"); if (!input) { return; } input.addEventListener("change", () => { addStyleEl(); }); }; persistBackground2 = () => { addStyleEl(); onNavigation(listenForPreferenceChanges3, { page: "preferences", onLoad: true }); }; init21 = () => __async(void 0, null, function* () { persistBackground2(); }); custom_hud_default = { id: "custom-hud", type: "design", alwaysLoad: true, load: init21, settings: settings_default20 }; } }); // src/modules/custom-shield/settings/index.js var settings_default21; var init_settings22 = __esm({ "src/modules/custom-shield/settings/index.js"() { settings_default21 = () => __async(void 0, null, function* () { let options = [ { name: "Default", value: "default" }, { name: "Default (normal resolution)", value: "default-normal" }, { name: "Events", value: "group", options: [ { name: "Birthday (Generic)", value: "birthday" }, { name: "Birthday (Year 10)", value: "birthday.year10" }, { name: "Birthday (Year 11)", value: "birthday.year11" }, { name: "Birthday (Year 12)", value: "birthday.year12" }, { name: "Birthday (Year 13)", value: "birthday.year13" }, { name: "Birthday (Year 14)", value: "birthday.year14" }, { name: "Birthday (Year 15)", value: "birthday.year15" }, { name: "Birthday (Year 16)", value: "birthday.year16" }, { name: "Great Winter Hunt", value: "winter_hunt" }, { name: "Halloween", value: "halloween" }, { name: "Larry's Football Challenge", value: "larrys_football_challenge" }, { name: "Pride (LGS Required)", value: "pride" }, { name: "Remembrance Day", value: "remembrance_day" }, { name: "Spring Egg Hunt (LGS Required)", value: "spring-egg-hunt" }, { name: "Spring Egg Hunt Alt (LGS Required)", value: "spring-egg-hunt-alt" }, { name: "Valentine's", value: "valentines" } ] }, { name: "Color (LGS required)", value: "group", options: [ { name: "Blue", value: "color-blue" }, { name: "Blue with matching timer", value: "color-blue-timer" }, { name: "Cyan", value: "color-cyan" }, { name: "Cyan with matching timer", value: "color-cyan-timer" }, { name: "Green", value: "color-green" }, { name: "Green with matching timer", value: "color-green-timer" }, { name: "Pink", value: "color-pink" }, { name: "Pink with matching timer", value: "color-pink-timer" }, { name: "Purple", value: "color-purple" }, { name: "Purple with matching timer", value: "color-purple-timer" }, { name: "Red", value: "color-red" }, { name: "Red with matching timer", value: "color-red-timer" }, { name: "Faded", value: "color-faded" }, { name: "Rainbow", value: "color-rainbow" }, { name: "Rainbow with matching timer", value: "color-rainbow-timer" }, { name: "Cotton Candy", value: "color-cotton-candy" } ] }, { name: "Title Shields", value: "group", options: [ { name: "Current Title ", value: "title" }, { name: "Novice", value: "title.novice" }, { name: "Recruit", value: "title.recruit" }, { name: "Apprentice", value: "title.apprentice" }, { name: "Initiate", value: "title.initiate" }, { name: "Journeyman / Journeywoman", value: "title.journeyman" }, { name: "Master", value: "title.master" }, { name: "Grandmaster", value: "title.grandmaster" }, { name: "Legendary", value: "title.legendary" }, { name: "Hero", value: "title.hero" }, { name: "Knight", value: "title.knight" }, { name: "Lord / Lady", value: "title.lord" }, { name: "Baron / Baroness", value: "title.baron" }, { name: "Count / Countess", value: "title.count" }, { name: "Duke / Duchess", value: "title.duke" }, { name: "Grand Duke / Duchess", value: "title.grandduke" }, { name: "Archduke / Archduchess", value: "title.archduke" }, { name: "Viceroy", value: "title.viceroy" }, { name: "Elder", value: "title.elder" }, { name: "Sage", value: "title.sage" }, { name: "Fabled", value: "title.fabled" } ] }, { name: "Silly", value: "group", options: [ { name: "Scrambles ", value: "scrambles" }, { name: "Jerry ", value: "jerry" }, { name: "Romeno ", value: "romeno" } ] } ]; if (!user.has_shield) { const toDisable = /* @__PURE__ */ new Set([ "pride", "spring-egg-hunt", "spring-egg-hunt-alt", "Color (LGS required)" ]); options = options.map((option) => { if ("group" === option.value) { const disabledParent = toDisable.has(option.name) || toDisable.has(option.value); if (disabledParent) { option.disabled = true; } option.options = option.options.map((groupOption) => { if (toDisable.has(groupOption.value) || disabledParent) { groupOption.disabled = true; } return groupOption; }); } return option; }); } return [{ id: "custom-shield", title: "Custom Shield", default: [options[0]], description: "Change the shield to an event shield, a color, a title shield, or a silly shield.", settings: { type: "multi-select", number: 1, options } }]; }); } }); // src/modules/custom-shield/styles.css var styles_default24; var init_styles25 = __esm({ "src/modules/custom-shield/styles.css"() { styles_default24 = '.mousehuntHud-shield.golden.default{top:2px;left:10px;background-image:url(https://www.mousehuntgame.com/images/mousehunt_gold_logo.png?asset_cache_version=2);filter:drop-shadow(0 0 5px #e8dbb8);background-size:contain;transition:opacity .3s ease-in-out}.mousehuntHud-shield.golden.default-normal{top:unset;left:unset;background-image:url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?asset_cache_version=2);filter:none}.mousehuntHud-shield.golden.default-fancy:hover,.mousehuntHud-shield.golden.default-fancy:focus{opacity:.9}.mousehuntHud-shield.mhui-custom-shield.pride,.mousehuntHud-shield.golden.mhui-custom-shield.pride{background:url(https://i.mouse.rip/shield-pride.png) 0 0/105%}.mousehuntHud-shield.scrambles{background-image:url(https://i.mouse.rip/shield-scrambles-bawk.png)}.mousehuntHud-shield.golden.scrambles{background-image:url(https://i.mouse.rip/shield-scrambles-bawk.png),url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?cv=2)}.mousehuntHud-shield.jerry{background-image:url(https://i.mouse.rip/shield-jerry.png)}.mousehuntHud-shield.golden.jerry{background-image:url(https://i.mouse.rip/shield-jerry.png),url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?cv=2)}.mousehuntHud-shield.golden.spring-egg-hunt{background:url(https://i.mouse.rip/shield-seh.png) 1px 1px/104%}.mousehuntHud-shield.golden.spring-egg-hunt-alt{background:url(https://i.mouse.rip/shield-seh-alt.png) 1px 1px/104%}.mousehuntHud-shield.romeno:after{position:absolute;bottom:0;left:-69px;z-index:1;width:140px;height:140px;content:"";background-image:url(https://i.mouse.rip/shield-romeno.png);filter:drop-shadow(6px 0 14px #fff);background-repeat:no-repeat;background-size:contain}.mousehuntHud-shield.title,.mousehuntHud-shield.golden.title{top:2px;left:2px;background:url(https://i.mouse.rip/shield-blank-2.png) 0 0 / contain no-repeat}.mousehuntHud-shield.title:after{position:absolute;inset:0;content:"";filter:drop-shadow(0 0 10px #e8dbb8);background-repeat:no-repeat;background-position:center;background-size:105px;transition:background-image .5s}.mousehuntHud-shield.title.novice:after,.mousehuntHud-shield.golden.title.novice:after{background-image:url(https://www.mousehuntgame.com/images/titles/84bc1109b5cd7aa8c24d195bc8207c38.png?cv=2)}.mousehuntHud-shield.title.recruit:after,.mousehuntHud-shield.golden.title.recruit:after{background-image:url(https://www.mousehuntgame.com/images/titles/3f1e44bbaa7138da4c326819e9f3f0a8.png?cv=2)}.mousehuntHud-shield.title.apprentice:after,.mousehuntHud-shield.golden.title.apprentice:after{background-image:url(https://www.mousehuntgame.com/images/titles/6f4673dd2d9d1e98b4569667d702a775.png?cv=2)}.mousehuntHud-shield.title.initiate:after,.mousehuntHud-shield.golden.title.initiate:after{background-image:url(https://www.mousehuntgame.com/images/titles/e96387f7261b95c0eeab9291e4e594e1.png?cv=2)}.mousehuntHud-shield.title.journeyman:after,.mousehuntHud-shield.golden.title.journeyman:after{background-image:url(https://www.mousehuntgame.com/images/titles/ad6875955f541159133c6d3798519f81.png?cv=2)}.mousehuntHud-shield.title.master:after,.mousehuntHud-shield.golden.title.master:after{background-image:url(https://www.mousehuntgame.com/images/titles/35ee6056a09037fb13a9195881875045.png?cv=2)}.mousehuntHud-shield.title.grandmaster:after,.mousehuntHud-shield.golden.title.grandmaster:after{background-image:url(https://www.mousehuntgame.com/images/titles/0da3761747914f497c16dc2051ba132d.png?cv=2)}.mousehuntHud-shield.title.legendary:after,.mousehuntHud-shield.golden.title.legendary:after{background-image:url(https://www.mousehuntgame.com/images/titles/fca35751046f4bcc972716ca484b6d61.png?cv=2)}.mousehuntHud-shield.title.hero:after,.mousehuntHud-shield.golden.title.hero:after{background-image:url(https://www.mousehuntgame.com/images/titles/0567284d6e12aaaed35ca5912007e070.png?cv=2)}.mousehuntHud-shield.title.knight:after,.mousehuntHud-shield.golden.title.knight:after{background-image:url(https://www.mousehuntgame.com/images/titles/398dca9a8c7703de969769491622ca32.png?cv=2)}.mousehuntHud-shield.title.lord:after,.mousehuntHud-shield.golden.title.lord:after{background-image:url(https://www.mousehuntgame.com/images/titles/9a6acd429a9a3a4849ed13901288b0b8.png?cv=2)}.mousehuntHud-shield.title.baron:after,.mousehuntHud-shield.golden.title.baron:after{background-image:url(https://www.mousehuntgame.com/images/titles/ea9c0ec2e6d3d81c14e61f5ce924d0e1.png?cv=2)}.mousehuntHud-shield.title.count:after,.mousehuntHud-shield.golden.title.count:after{background-image:url(https://www.mousehuntgame.com/images/titles/dd11711a25b80db90e0306193f2e8d78.png?cv=2)}.mousehuntHud-shield.title.duke:after,.mousehuntHud-shield.golden.title.duke:after{background-image:url(https://www.mousehuntgame.com/images/titles/eb46ac1e8197b13299ab860f07d963db.png?cv=2)}.mousehuntHud-shield.title.grandduke:after,.mousehuntHud-shield.golden.title.grandduke:after{background-image:url(https://www.mousehuntgame.com/images/titles/87937fa96bbb3b2dd3225df883002642.png?cv=2)}.mousehuntHud-shield.title.archduke:after,.mousehuntHud-shield.golden.title.archduke:after{background-image:url(https://www.mousehuntgame.com/images/titles/043efe31de4f0f2e0ddca590fe829032.png?cv=2)}.mousehuntHud-shield.title.viceroy:after,.mousehuntHud-shield.golden.title.viceroy:after{background-image:url(https://www.mousehuntgame.com/images/titles/e2e79f6f9201a4d4e7a89684fbb5356f.png?cv=2)}.mousehuntHud-shield.title.elder:after,.mousehuntHud-shield.golden.title.elder:after{background-image:url(https://www.mousehuntgame.com/images/titles/0f3cf224bf98457f6b5bad91ab1c7bd2.png?cv=2)}.mousehuntHud-shield.title.sage:after,.mousehuntHud-shield.golden.title.sage:after{background-image:url(https://www.mousehuntgame.com/images/titles/cb49e43c5e4460da7c09fe28ca4f44ce.png?cv=2)}.mousehuntHud-shield.title.fabled:after,.mousehuntHud-shield.golden.title.fabled:after{background-image:url(https://www.mousehuntgame.com/images/titles/5daba92a8d609834aa8b789f37544e08.png?cv=2)}.mousehunt-improved-lgs-reminder-new.color-blue,.huntersHornView__timer--default.color-blue,.mousehuntHud-shield.golden.color-blue{filter:hue-rotate(158deg) drop-shadow(0 0 5px #e8dbb8)}.mousehunt-improved-lgs-reminder-new.color-cyan,.huntersHornView__timer--default.color-cyan,.mousehuntHud-shield.golden.color-cyan{filter:hue-rotate(112deg) drop-shadow(0 0 5px #e8dbb8)}.mousehunt-improved-lgs-reminder-new.color-green,.huntersHornView__timer--default.color-green,.mousehuntHud-shield.golden.color-green{filter:hue-rotate(66deg) drop-shadow(0 0 5px #e8dbb8)}.mousehunt-improved-lgs-reminder-new.color-pink,.huntersHornView__timer--default.color-pink,.mousehuntHud-shield.golden.color-pink{filter:hue-rotate(280deg) drop-shadow(0 0 5px #e8dbb8)}.mousehunt-improved-lgs-reminder-new.color-purple,.huntersHornView__timer--default.color-purple,.mousehuntHud-shield.golden.color-purple{filter:hue-rotate(195deg) drop-shadow(0 0 5px #e8dbb8)}.mousehunt-improved-lgs-reminder-new.color-red,.huntersHornView__timer--default.color-red,.mousehuntHud-shield.golden.color-red{filter:hue-rotate(317deg) saturate(1.6) drop-shadow(0 0 5px #e8dbb8)}.mousehuntHud-shield.golden.color-faded{filter:sepia(1) drop-shadow(0 0 5px #e8dbb8)}.huntersHornView__timer--default.color-blue .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown,.huntersHornView__timer--default.color-cyan .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown,.huntersHornView__timer--default.color-green .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown,.huntersHornView__timer--default.color-pink .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown,.huntersHornView__timer--default.color-purple .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown,.huntersHornView__timer--default.color-red .huntersHornView__timerState.huntersHornView__timerState--type-countdown.huntersHornView__countdown{mix-blend-mode:color-burn}@keyframes mh-improved-shield-hue-rotate{0%{filter:hue-rotate(0deg) drop-shadow(0 0 5px #e8dbb8)}50%{filter:hue-rotate(360deg) drop-shadow(0 0 5px #e8dbb8)}to{filter:hue-rotate(0deg) drop-shadow(0 0 5px #e8dbb8)}}.mousehunt-improved-lgs-reminder-new.color-rainbow,.huntersHornView__timer--default.color-rainbow,.mousehuntHud-shield.golden.color-rainbow,.mousehuntHud-shield.golden.color-rainbow2{animation:mh-improved-shield-hue-rotate 30s infinite}@media (prefers-reduced-motion: reduce){.mousehunt-improved-lgs-reminder-new.color-rainbow,.huntersHornView__timer--default.color-rainbow,.mousehuntHud-shield.golden.color-rainbow,.mousehuntHud-shield.golden.color-rainbow2{animation:none}}\n'; } }); // src/modules/custom-shield/cotton-candy.css var cotton_candy_default; var init_cotton_candy = __esm({ "src/modules/custom-shield/cotton-candy.css"() { cotton_candy_default = ".huntersHornView__backdrop{filter:hue-rotate(180deg);opacity:1;transition:none}.huntersHornView__horn--ready{filter:hue-rotate(275deg);transition:none}.huntersHornMessageView{filter:hue-rotate(200deg)}.mousehuntHud-menu.default>ul li a{filter:hue-rotate(298deg);backdrop-filter:hue-rotate(245deg)}.mousehuntHud-environmentName{text-shadow:0 0 1px #eab9cd,1px 1px #ffe1f5}.mousehuntHud-environmentIcon{box-shadow:2px 2px 2px #ffe1f5 inset,-2px -2px 2px #eab9cd inset}.mousehuntHud-menu ul li.active .mousehuntHud-menu-item.root,.mousehuntHud-menu ul li:hover .mousehuntHud-menu-item.root{background:url(https://www.mousehuntgame.com/images/ui/hud/menu/menu_seperator.png?asset_cache_version=2) 100% 0 no-repeat;filter:hue-rotate(328deg);backdrop-filter:hue-rotate(292deg)}\n"; } }); // src/modules/custom-shield/index.js var doClass, addClass, removeClass, lastShield, changeShield, getTitle, watchForPreferenceChanges, init22, custom_shield_default; var init_custom_shield = __esm({ "src/modules/custom-shield/index.js"() { init_utils2(); init_settings22(); init_styles25(); init_cotton_candy(); doClass = (el, shieldClass, verb) => { if (Array.isArray(shieldClass)) { shieldClass = shieldClass.join(" "); } if (!shieldClass) { return; } let classToAdd = shieldClass.replace(".", " "); classToAdd = classToAdd.split(" "); if (!Array.isArray(classToAdd)) { classToAdd = [classToAdd]; } classToAdd.forEach((className) => { if (el && el.classList && el.classList[verb]) { if ("remove" === verb && !el.classList.contains(className)) { return; } el.classList[verb](className); } }); }; addClass = (el, shieldClass) => { doClass(el, shieldClass, "add"); }; removeClass = (el, shieldClass) => { doClass(el, shieldClass, "remove"); }; lastShield = ""; changeShield = () => { const shieldEl = document.querySelector(".mousehuntHud-shield"); if (!shieldEl) { return; } const timer = document.querySelector(".huntersHornView__timer--default"); if (!timer) { return; } if (lastShield) { const remove = [ ...lastShield, "mhui-custom-shield", "birthday", "year16" // TODO: remove this after the event. ]; remove.forEach((className) => { removeClass(shieldEl, className); timer.classList.remove(className); }); } let shield = getSetting("custom-shield-0", "default"); if ("default" === shield) { shieldEl.classList.add("default", "default-fancy"); lastShield = ["default", "default-fancy"]; return; } if (shield === "color-cotton-candy") { makeElement("style", "mh-improved-cotton-candy-style", cotton_candy_default, document.head); shield = "color-pink-timer"; } else { const cottonCandyStyle = document.querySelector(".mh-improved-cotton-candy-style"); if (cottonCandyStyle) { cottonCandyStyle.remove(); } } lastShield = [shield]; if (shield.startsWith("color-")) { shieldEl.classList.add("default"); shieldEl.classList.add("color"); lastShield.push("color"); } if (shield.endsWith("-timer")) { shield = shield.replace("-timer", ""); timer.classList.add(shield); lastShield.push(shield); } if (shield.endsWith("-alt")) { const altClass = shield.replace("-alt", ""); shieldEl.classList.add(altClass, "alt"); lastShield.push(altClass, "alt"); } if (shield.includes("title")) { shieldEl.classList.add("title"); shield = "title" === shield ? getTitle() : shield; lastShield.push("title", shield); } shieldEl.classList.add("mhui-custom-shield"); addClass(shieldEl, shield); }; getTitle = () => { let title = user.title_name || "novice"; title = title.toLowerCase(); title.replace("lady", "lord"); title.replace("wo", ""); title.replace("ess", ""); title.replace("duch", "duke"); return title; }; watchForPreferenceChanges = () => { const input = document.querySelector("#mousehunt-improved-settings-design-custom-shield select"); if (!input) { return; } input.addEventListener("change", () => { changeShield(); }); }; init22 = () => __async(void 0, null, function* () { addStyles(styles_default24, "custom-shield"); lastShield = getSetting("custom-shield-0", "default"); changeShield(); onNavigation(watchForPreferenceChanges, { page: "preferences", onLoad: true }); }); custom_shield_default = { id: "custom-shield", type: "design", alwaysLoad: true, load: init22, settings: settings_default21 }; } }); // src/modules/dark-mode/styles.css var styles_default25; var init_styles26 = __esm({ "src/modules/dark-mode/styles.css"() { styles_default25 = ":root{--mhdm-dimming-filter: transparent}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .adventureBookBanner-goalPadding{background-color:transparent}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .adventureBookBanner-adventureName{color:#000}.mh-dark-mode .journal a{color:#0174a7}.mh-dark-mode .entry.short.supplytransferitem{background:url(https://i.mouse.rip/upscaled/item-add.png) no-repeat 10px center;background-color:#a0a0a0}.mh-dark-mode .entry.short.supplytransferitem a{color:#0c5271}.mh-dark-mode .itemPurchaseView-action-goldGost{background-color:#0e0e0e;border-color:#242424}.mh-dark-mode .itemPurchaseView-container.kingsCartItem .itemPurchaseView-action-container{color:#fff;background-color:#242424}.mh-dark-mode .inventoryPage-item-recipeOptions li{color:#2c2c2c}.mh-dark-mode .treasureMapView-environment.active .treasureMapView-environment-title{background-color:#38727b}.mh-dark-mode #overlayPopup.treasureMapPopup .treasureMapView-environment.active .treasureMapView-environment-title a,.mh-dark-mode #overlayPopup.treasureMapPopup .treasureMapView-environment.wrong .treasureMapView-environment-title a,.mh-dark-mode .treasureMapView-environment-progress{color:#fff}.mh-dark-mode .treasureMapView-environment.wrong .treasureMapView-environment-title{background-color:#862f2f}.mh-dark-mode .pageFrameView #overlayPopup.treasureMapPopup .treasureMapRootView-content a.messageBoardView-message-delete{color:transparent}.mh-dark-mode .itemPurchaseView-margin,.mh-dark-mode .itemPurchaseView-image-container,.mh-dark-mode .itemPurchaseView-content-container{background-color:#000}.mh-dark-mode .itemPurchaseView-action-purchaseHelper-owned{background-color:#3d3d3d;border-color:#606060}.mh-dark-mode .entry.short.misc.custom.unstable_charm_trigger{background:#7ae4ff}.mh-dark-mode .journal .entry.winterTaiga,.mh-dark-mode .entry.short.misc.custom.winter_hunt_2021.instantReturnGolem.jhMisc,.mh-dark-mode .entry.short.misc.custom.winter_hunt_2021.claimGolemReward.jhMisc,.mh-dark-mode .winter_hunt_2021.sendGolem{background-color:#7ae4ff}.mh-dark-mode #jhButton{color:#3b5998}.mh-dark-mode .pageFrameView #overlayPopup.treasureMapPopup .treasureMapRootView-content a.treasureMapView-block-search-clear{color:#ccc;border-left:none}.mh-dark-mode .treasureMapView-block-search-text{color:#fff;background-color:#636363;border:1px solid #2c2c2c}.mh-dark-mode #tsitu-hunter-id-nav-ui input{color:#fff;background-color:#636363;border-color:#2c2c2c!important}.mh-dark-mode #tsitu-hunter-id-nav-ui input::placeholder{color:#ccc}.mh-dark-mode .marketplaceView-listing-progressLabel{color:#fff;text-shadow:0 1px #000}.mh-dark-mode .marketplaceView-listing-progressBar-padding{background-color:#424140}.mh-dark-mode .marketplaceView-listing-progressBar span{background-color:#956ab4}.mh-dark-mode .marketplaceMyListings s{color:#969696}.mh-dark-mode .pageFrameView .itemViewStatBlock .itemViewStatBlock-stat-label{background-color:transparent}.mh-dark-mode.shopCustomization .itemViewStatBlock-stat{border-color:#404040}.mh-dark-mode .journal .entry.larryGift{background:#deffc7}.mh-dark-mode .pageFrameView .mousehuntHeaderView .menuItem:hover{background-color:#000}.mh-dark-mode .pageFrameView .mousehuntHeaderView .menuItem.dropdown:hover .arrow{border-bottom-color:#666}.mh-dark-mode .trapSelectorView__trapStatSummaryContainer{background:#333}.mh-dark-mode .pageFrameView .campPage-trap-itemBrowser-armed-item-content .campPage-trap-itemBrowser-item-disarmButton{color:#000}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .trapImageView{background:#000!important;border:none}.mh-dark-mode .mh-ui-goals-sidebar-toggle{filter:invert(1)}.mh-dark-mode .giftSelectorView-gift.gift_of_the_day .giftSelectorView-gift-padding{color:#000}.mh-dark-mode .mousehuntHeaderView .dropdownContent a span,.mh-dark-mode .pageFrameView .giftSelectorView-friend>.giftSelectorView-friend-padding{color:#fff}.mh-dark-mode .regionName{background-color:#1c1c1c;border-color:#000}.mh-dark-mode .regionWrapper{border-color:#0c0c0c}.mh-dark-mode .locationWrapper{background-color:#2e2e2e}.mh-dark-mode .locationWrapper:nth-child(2n){background-color:#242424}.mh-dark-mode .dashboardWrapper{border-color:#0c0c0c}.mh-dark-mode .scoreboardRelativeRankingTableView-table,.mh-dark-mode .mousehuntHeaderView .dropdownContent{color:#fff;background-color:#252525;border-color:#666;border-radius:0}.mh-dark-mode .mousehuntHeaderView .menuItem.sidebar .dropdownContent a.pageSidebarView-user-logout,.mh-dark-mode .mousehuntHeaderView .menuItem.sidebar .dropdownContent .pageSidebarView-user a:nth-child(2),.mh-dark-mode .mousehuntHeaderView .menuItem.sidebar .dropdownContent .scoreboardRankingsWrapper a,.mh-dark-mode .mousehuntHeaderView .dropdownContent a{color:#009adf}.mh-dark-mode .mousehuntHeaderView .dropdownContent a{border-color:#666}.mh-dark-mode .pageFrameView #mousehuntContainer.PageHunterProfile .trapImageView{background:none;border:none}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp{box-shadow:none}.mh-dark-mode .trapSelectorView__codexBrowser .loading,.mh-dark-mode .campPage-trap-itemBrowser-empty-container{color:#fff;background-color:#424242;border-color:#5c5c5c}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .journal:before,.mh-dark-mode .pageFrameView #mousehuntContainer.PageJournal .journal:before{background:none}.mh-dark-mode .giftSelectorView-confirmPopup-content{color:#dcddde;background-color:#242424}.mh-dark-mode .giftSelectorView-confirmPopup-padding{background-color:#0f0f0f;border-color:#0f0f0f;box-shadow:0 0 10px #c8c8c8}.mh-dark-mode .campPage-trap-itemBrowser-item.largeQuantity .campPage-trap-itemBrowser-item-quantity .quantity{background-color:#333}.mh-dark-mode .campPage-trap-itemBrowser-item-image:after,.mh-dark-mode .pageFrameView .campPage-trap-itemBrowser-favorite-item-image-frame{border-color:#000;box-shadow:2px 2px 3px -1px #000 inset}.mh-dark-mode .campPage-trap-itemBrowser-filter input{background-color:#333;border-color:#000}.mh-dark-mode .campPage-trap-itemBrowser-filterContainer .label,.mh-dark-mode .campPage-trap-itemBrowser-quickLinks-header{color:#fff}.mh-dark-mode .campPage-trap-itemBrowser .campPage-trap-itemBrowser-filter select{color:#fff;background-color:#333;border-color:#000}.mh-dark-mode .campPage-trap-itemBrowser-item-favorite,.mh-dark-mode .pageFrameView .campPage-trap-itemBrowser-tagGroup-name{background-color:#333}.mh-dark-mode .trapSelectorView__blueprint{border-color:#0e7fbf;box-shadow:-1px -1px 2px #0e7fbf inset,0 0 10px #333 inset,3px 3px 3px #000}.mh-dark-mode a.campPage-trap-blueprint-closeButton{border-color:#0e7fbf}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .adventureBookBanner:before{background:transparent}.mh-dark-mode .adventureBookBanner-container{background-color:#bbb;border-color:#333}.mh-dark-mode .mousehuntHeaderView a.superBrie .getMore{background-color:#0e7fbf}\n"; } }); // src/modules/dark-mode/index.js var isDarkMode, checkForDarkModeAndAddBodyClass, addDarkModeBodyClass, init23, dark_mode_default; var init_dark_mode = __esm({ "src/modules/dark-mode/index.js"() { init_utils2(); init_styles26(); isDarkMode = () => { return !!getComputedStyle(document.documentElement).getPropertyValue("--mhdm-white"); }; checkForDarkModeAndAddBodyClass = () => { if (!isDarkMode()) { return false; } document.body.classList.add("mh-dark-mode"); return true; }; addDarkModeBodyClass = () => { let added = checkForDarkModeAndAddBodyClass(); if (!added) { setTimeout(() => { added = checkForDarkModeAndAddBodyClass(); if (!added) { setTimeout(() => { checkForDarkModeAndAddBodyClass(); }, 1e3); } }, 500); } }; init23 = () => __async(void 0, null, function* () { addStyles(styles_default25, "dark-mode"); addDarkModeBodyClass(); onNavigation(addDarkModeBodyClass); onRequest("*", addDarkModeBodyClass); }); dark_mode_default = { id: "dark-mode", name: "Dark Mode Updates & Tweaks", type: "feature", default: true, description: "Improves and tweaks dark mode. Requires either the standalone extension or enabling the setting in MHCT.", load: init23 }; } }); // src/modules/data-exporters/exporter.js var recursiveFetch, addDownloadToButton, addJsonDownloadToButton, addCsvDownloadToButton, getFormattedDate, addDownloadButtons, resultReducer, updateSingleTotalEl, exportPopup; var init_exporter = __esm({ "src/modules/data-exporters/exporter.js"() { init_utils2(); recursiveFetch = (data, callbackToRun) => { return data.reduce((promiseChain, item) => { return promiseChain.then((chainResults) => { return new Promise((resolve) => { callbackToRun(item).then((currentResult) => { chainResults.push(currentResult); resolve(chainResults); }); }); }); }, Promise.resolve([])); }; addDownloadToButton = (opts, callback) => { let { buttonSelector, results, filename, beforeDownload } = opts; const exportButton = document.querySelector(buttonSelector); exportButton.classList.remove("disabled"); exportButton.addEventListener("click", () => { if (beforeDownload) { results = opts.beforeDownload(); } callback(results, filename); }); }; addJsonDownloadToButton = (opts) => { addDownloadToButton(opts, (results, filename) => { const data = JSON.stringify({ type: opts.type, generated: (/* @__PURE__ */ new Date()).toISOString(), data: results }); const blob = new Blob([data], { type: "application/json" }); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.download = `${filename}.json`; link.href = url; link.click(); URL.revokeObjectURL(url); }); }; addCsvDownloadToButton = (opts) => { addDownloadToButton(opts, (results, filename) => { if (opts.reduceResults) { results = resultReducer(results); } let csv = results.map((row) => { return Object.values(row).map((value) => `"${value}"`).join(","); }).join("\n"); if (opts.headers) { csv = `${opts.headers.join(",")} ${csv}`; } const blob = new Blob([csv], { type: "text/csv" }); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.download = `${filename}.csv`; link.href = url; link.click(); URL.revokeObjectURL(url); }); }; getFormattedDate = () => { const date = /* @__PURE__ */ new Date(); return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; }; addDownloadButtons = (opts) => { const { type, results, headers, reduceResults } = opts; const filename = `${type}-${getFormattedDate()}`; const buttonSelector = `#export-${type}`; addJsonDownloadToButton({ buttonSelector, type, results, filename }); addCsvDownloadToButton({ buttonSelector: `${buttonSelector}-csv`, results, filename, headers, reduceResults }); }; resultReducer = (results) => { return results.reduce((acc, { category, items: items2 }) => { items2.forEach((data) => { acc.push(__spreadValues({ region: category }, data)); }); return acc; }, []); }; updateSingleTotalEl = (results) => { const totalItemsEl = document.querySelector(".export-items-footer .total-items"); if (!totalItemsEl) { return; } const totalItems = results.reduce((acc, { items: items2 }) => { return acc + items2.length; }, 0); totalItemsEl.textContent = totalItems.toLocaleString(); }; exportPopup = (opts) => { const { type, text, headerMarkup, itemsMarkup, footerMarkup, fetch: fetch4, afterFetch: afterFetch3, download, updateSingleTotal, dataIsAvailable } = opts; createPopup({ title: `Export ${text}`, content: ` <div class="export-wrapper ${type}"> <div class="export-items-header item-wrapper ${headerMarkup ? "" : "hidden"}"> ${headerMarkup || ""} </div> <div class="export-items-wrapper ${itemsMarkup ? "" : "hidden"}"> ${itemsMarkup || ""} </div> <div class="export-items-footer item-wrapper ${footerMarkup ? "" : "hidden"}"> ${footerMarkup || ""} </div> <div class="actions-wrapper"> <div class="mousehuntActionButton tiny lightBlue" id="export-back"> <span>Back</span> </div> <div class="mousehuntActionButton tiny fetch-data ${dataIsAvailable ? "hidden" : ""}" id="fetch-${type}"> <span>Fetch ${text}</span> </div> <div class="mousehuntActionButton tiny ${dataIsAvailable ? "" : "disabled"} export-json" id="export-${type}"> <span>Export as JSON</span> </div> <div class="mousehuntActionButton tiny ${dataIsAvailable ? "" : "disabled"} export-csv" id="export-${type}-csv"> <span>Export as CSV</span> </div> </div> </div>` }); const exportBackButton = document.querySelector("#export-back"); if (!exportBackButton) { return; } exportBackButton.addEventListener("click", () => { doEvent2("show-export-data"); }); const fetchButton = document.querySelector(`#fetch-${type}`); if (!fetchButton) { return; } fetchButton.addEventListener("click", () => { fetchButton.classList.add("disabled"); fetch4().then((results) => { if (afterFetch3) { afterFetch3(results); } if (updateSingleTotal) { updateSingleTotalEl(results); } addDownloadButtons(__spreadValues({ results, type }, download)); fetchButton.classList.remove("disabled"); }); }); if (dataIsAvailable) { fetchButton.click(); } }; } }); // src/modules/data-exporters/export-favorite-setups.js var hasFavoriteSetups, fetch2, afterFetch, exportFavoriteSetups; var init_export_favorite_setups = __esm({ "src/modules/data-exporters/export-favorite-setups.js"() { init_exporter(); hasFavoriteSetups = () => { return localStorage.getItem("favorite-setups-saved"); }; fetch2 = () => __async(void 0, null, function* () { const setups = JSON.parse(localStorage.getItem("favorite-setups-saved")); const flattenedSetups = []; for (const setupName in setups) { const setup = setups[setupName]; flattenedSetups.push({ name: setupName, bait: setup.bait, base: setup.base, weapon: setup.weapon, trinket: setup.trinket, skin: setup.skin, location: setup.location, sort: setup.sort }); } return flattenedSetups; }); afterFetch = (data) => { const totalItemsEl = document.querySelector(".export-items-footer .total-items"); totalItemsEl.textContent = data.length.toLocaleString(); }; exportFavoriteSetups = () => { exportPopup({ type: "favorite-setups-saved", text: "Favorite Setups", footerMarkup: '<div class="region-name">Total Values</div><div class="total-items">-</div>', fetch: fetch2, afterFetch, dataIsAvailable: true, download: { headers: [ "Name", "Bait", "Base", "Weapon", "Trinket", "Skin", "Location", "Sort" ] } }); }; } }); // src/modules/data-exporters/export-rankup-forecaster.js var hasRankupForecaster, fetch3, afterFetch2, exportRankupForecaster; var init_export_rankup_forecaster = __esm({ "src/modules/data-exporters/export-rankup-forecaster.js"() { init_exporter(); hasRankupForecaster = () => { return localStorage.getItem("Chro-forecaster-time"); }; fetch3 = () => __async(void 0, null, function* () { return JSON.parse(localStorage.getItem("Chro-forecaster-time")); }); afterFetch2 = (data) => { const totalItemsEl = document.querySelector(".export-items-footer .total-items"); totalItemsEl.textContent = data.length.toLocaleString(); }; exportRankupForecaster = () => { exportPopup({ type: "rankup-forecaster-history", text: "Rankup Forecaster History", footerMarkup: '<div class="region-name">Total Values</div><div class="total-items">-</div>', fetch: fetch3, afterFetch: afterFetch2, dataIsAvailable: true, download: { headers: ["Date", "Wisdom"] } }); }; } }); // src/modules/data-exporters/export-inventory.js var itemCategories, getData2, exportInventory, export_inventory_default; var init_export_inventory = __esm({ "src/modules/data-exporters/export-inventory.js"() { init_utils2(); init_exporter(); itemCategories = [ { id: "weapon", name: "Weapons" }, { id: "base", name: "Bases" }, { id: "trinket", name: "Charms" }, { id: "bait", name: "Cheeses" }, { id: "skin", name: "Skins" }, { id: "crafting_item", name: "Crafting Items" }, { id: "convertible", name: "Convertible Items" }, { id: "potion", name: "Potions" }, { id: "stat", name: "Misc. Items" }, { id: "collectible", name: "Collectibles" }, { id: "map_piece", name: "Map Pieces" }, { id: "adventure", name: "Adventure Items" } ]; getData2 = (classification) => __async(void 0, null, function* () { const regionEl = document.querySelector(`.item-wrapper[data-region="${classification.id}"]`); const totalItemsEl = regionEl.querySelector(".total-items"); totalItemsEl.textContent = "\u2026"; totalItemsEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); const response = yield doRequest("managers/ajax/users/userInventory.php", { action: "get_items_by_classification", "classifications[]": classification.id }); const items2 = []; response.items.forEach((item) => { const itemData = { item_id: item.item_id || 0, type: item.type || "", name: item.name || "", classification: item.classification || classification.id, quantity: item.quantity || 0, thumbnail: item.thumbnail || "", limited_edition: item.limited_edition || false, is_tradable: item.is_tradable || false, is_givable: item.is_givable || false }; items2.push(itemData); totalItemsEl.textContent = items2.length.toLocaleString(); }); return { category: classification.name, items: items2 }; }); exportInventory = () => { let inventoryMarkup = ""; itemCategories.forEach((region) => { inventoryMarkup += `<div class="item-wrapper inventory" data-region="${region.id}"> <div class="region-name">${region.name}</div> <div class="total-items">-</div> </div>`; }); exportPopup({ type: "inventory", text: "Inventory", headerMarkup: '<div class="region-name">Category</div><div class="total-items">Items</div>', itemsMarkup: inventoryMarkup, footerMarkup: '<div class="region-name">Total</div><div class="total-items">0</div>', fetch: () => recursiveFetch(itemCategories, getData2), updateSingleTotal: true, download: { headers: [ "Category", "Item ID", "Item Type", "Item Name", "Classification", "Quantity", "Thumbnail", "Limited Edition", "Tradable", "Givable" ], reduceResults: true } }); }; export_inventory_default = exportInventory; } }); // src/modules/data-exporters/export-marketplace.js var fetchPage, fetchTransactions, exportMarketplace, export_marketplace_default; var init_export_marketplace = __esm({ "src/modules/data-exporters/export-marketplace.js"() { init_utils2(); init_utils2(); init_exporter(); fetchPage = (page) => __async(void 0, null, function* () { const response = yield doRequest("managers/ajax/users/marketplace.php", { action: "get_my_history", page }); return (response == null ? void 0 : response.marketplace_history) || []; }); fetchTransactions = () => __async(void 0, null, function* () { var _a; const totalItemsEl = document.querySelector(".export-items-footer .total-items"); totalItemsEl.textContent = "\u2026"; totalItemsEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); let page = 1; let response; let transactions = []; page = Number.parseInt(sessionGet("export-marketplace-page"), 10) || 1; transactions = sessionGet("export-marketplace-transactions", []); const tradableItems = yield getData("items-tradable"); do { response = yield fetchPage(page); for (const item of response) { transactions.push({ listing_id: item.listing_id, listing_type: item.listing_type, item_id: item.item_id, item_name: ((_a = tradableItems.find(({ id }) => id === item.item_id)) == null ? void 0 : _a.name) || "", initial_quantity: item.initial_quantity, remaining_quantity: item.remaining_quantity, unit_price: item.unit_price, unit_price_without_tariff: item.unit_price_without_tariff, total_price: item.total_price, total_price_without_tariff: item.total_price_without_tariff, average: item.average, is_active: item.is_active === "1", date_updated: item.date_updated, date_closed: item.date_closed }); } yield new Promise((resolve) => setTimeout(resolve, 100)); page++; sessionSet("export-marketplace-page", page); sessionSet("export-marketplace-transactions", transactions); totalItemsEl.textContent = transactions.length.toLocaleString(); } while (response.length > 0); return transactions; }); exportMarketplace = () => { exportPopup({ type: "marketplace-transactions", text: "Marketplace Transactions", footerMarkup: '<div class="region-name">Total Transactions</div><div class="total-items">0</div>', fetch: fetchTransactions, download: { headers: [ "Listing ID", "Listing Type", "Item ID", "Item Name", "Initial Quantity", "Remaining Quantity", "Unit Price", "Unit Price Without Tariff", "Total Price", "Total Price Without Tariff", "Average", "Is Active", "Date Updated", "Date Closed" ] } }); }; export_marketplace_default = exportMarketplace; } }); // src/modules/data-exporters/export-mice.js var seenMice, getWeight, getWeightFormatted, getDataForRegion, processWeights, groups, regions, exportMicePopup, exportType, exportMice, export_mice_default; var init_export_mice = __esm({ "src/modules/data-exporters/export-mice.js"() { init_utils2(); init_utils2(); init_exporter(); seenMice = []; getWeight = (weight) => { weight = weight.toString().replaceAll(",", "").trim(); const ozSplit = weight.split(" oz."); const lbSplit = weight.split(" lb."); let weightOz = 0; if (ozSplit.length === 1 && lbSplit.length === 1) { weightOz = Number.parseFloat(weight); } if (ozSplit.length > 1) { weightOz = Number.parseFloat(ozSplit[0].trim()); } else if (lbSplit.length > 1) { const lb = Number.parseInt(lbSplit[0].trim(), 10); const oz = Number.parseFloat(lbSplit[1].trim()); weightOz = lb * 16 + oz; } return weightOz; }; getWeightFormatted = (weight) => { const weightOz = getWeight(weight); const weightLbs = Math.floor(weightOz / 16); const weightOzRemainder = weightOz % 16; if (weightLbs > 0) { return `${weightLbs.toLocaleString()} lb. ${weightOzRemainder} oz.`; } return `${weightOzRemainder} oz.`; }; getDataForRegion = (region) => __async(void 0, null, function* () { const regionEl = document.querySelector(`.item-wrapper[data-region="${region.id}"]`); regionEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); const miceCaughtEl = regionEl.querySelector(".mice-caught"); const totalCatchesEl = regionEl.querySelector(".total-catches"); const totalWeightEl = regionEl.querySelector(".total-weight"); miceCaughtEl.textContent = "\u2026"; totalCatchesEl.textContent = "\u2026"; totalWeightEl.textContent = "\u2026"; let action; let view; if ("group" === exportType) { action = "get_group"; view = "ViewMouseListGroups"; } else { action = "get_environment"; view = "ViewMouseListEnvironments"; } const miceData = yield doRequest("managers/ajax/mice/mouse_list.php", { action, category: region.id, user_id: user.user_id, display_mode: "stats", view }); const mice = miceData.mouse_list_category.subgroups.reduce((acc, cur) => { return [...acc, ...cur.mice]; }, []); const weights = []; let totalCatches = 0; let totalWeight = 0; let regionSubtract = 0; mice.forEach((mouse) => { if ("region" === exportType && seenMice.includes(mouse.type)) { regionSubtract++; return; } seenMice.push(mouse.type); mouse.num_catches = Number.parseInt(mouse.num_catches.toString().replace(",", ""), 10); const avgWeight = getWeight(mouse.avg_weight); totalCatches += mouse.num_catches; totalWeight += avgWeight * mouse.num_catches; const mouseWeight = { name: mouse.name, type: mouse.type, crown: mouse.crown, catches: mouse.num_catches, misses: mouse.num_misses, avgWeight, avgWeightFormatted: getWeightFormatted(mouse.avg_weight), heaviest: getWeight(mouse.heaviest_catch), heaviestFormatted: getWeightFormatted(mouse.heaviest_catch) }; weights.push(mouseWeight); miceCaughtEl.textContent = `${miceData.mouse_list_category.caught}/${miceData.mouse_list_category.total}`; const totalCatchesFormatted = totalCatches.toLocaleString(); totalCatchesEl.textContent = totalCatchesFormatted; const totalWeightLbs = Math.floor(totalWeight / 16); const totalWeightOz = totalWeight % 16; const totalWeightLbsFormatted = totalWeightLbs.toLocaleString(); totalWeightEl.textContent = totalWeightLbs > 0 ? `${totalWeightLbsFormatted} lb. ${totalWeightOz} oz` : `${totalWeightOz} oz`; }); return { category: region.id, regionName: region.name, caughtMice: miceData.mouse_list_category.caught - regionSubtract, uniqueMice: miceData.mouse_list_category.total - regionSubtract, totalCatches, totalWeight, items: weights }; }); processWeights = (results) => { seenMice = []; const totalUniqueMiceEl = document.querySelector(".export-items-footer .mice-caught"); const totalCatchesEl = document.querySelector(".export-items-footer .total-catches"); const totalWeightEl = document.querySelector(".export-items-footer .total-weight"); if (!totalUniqueMiceEl || !totalCatchesEl || !totalWeightEl) { return; } const totals = results.reduce((acc, { caughtMice, uniqueMice, totalCatches, totalWeight }) => { acc.caughtMice += caughtMice; acc.uniqueMice += uniqueMice; acc.totalCatches += totalCatches; acc.totalWeight += totalWeight; return acc; }, { caughtMice: 0, uniqueMice: 0, totalCatches: 0, totalWeight: 0 }); totalUniqueMiceEl.textContent = `${totals.caughtMice}/${totals.uniqueMice}`; totalCatchesEl.textContent = totals.totalCatches.toLocaleString(); totalWeightEl.textContent = getWeightFormatted(totals.totalWeight); }; groups = []; regions = []; exportMicePopup = () => { let itemTypes; let title; if ("group" === exportType) { title = "Group"; itemTypes = groups; } else if ("region" === exportType) { title = "Region"; itemTypes = regions; } else { title = "Location"; itemTypes = environments; } let itemsMarkup = ""; itemTypes.forEach((region) => { itemsMarkup += `<div class="item-wrapper" data-region="${region.id}"> <div class="region-name">${region.name}</div> <div class="mice-caught">0/0</div> <div class="total-catches">0</div> <div class="total-weight">0</div> </div>`; }); exportPopup({ type: `mouse-stats_${exportType}`, text: `Mouse Stats by ${exportType === "group" ? "Group" : "Region"}`, headerMarkup: `<div class="region-name">Group</div> <div class="mice-caught">Unique Mice</div> <div class="total-catches">Total Catches</div> <div class="total-weight">Total Weight</div>`, itemsMarkup, footerMarkup: `<div class="region-name">Total</div> <div class="mice-caught">0/0</div> <div class="total-catches">0</div> <div class="total-weight">0</div>`, fetch: () => recursiveFetch(itemTypes, getDataForRegion), afterFetch: processWeights, download: { headers: [ title, "Name", "Type", "Crown", "Catches", "Misses", "Avg. Weight (oz)", "Avg. Weight", "Heaviest (oz)", "Heaviest" ], reduceResults: true } }); }; exportMice = (type) => __async(void 0, null, function* () { exportType = type; regions = yield getData("mice-regions"); groups = yield getData("mice-groups"); environments = yield getData("environments"); exportMicePopup(); }); export_mice_default = exportMice; } }); // src/modules/data-exporters/export-scoreboards.js var getScoreboardData, exportScoreboards, export_scoreboards_default; var init_export_scoreboards = __esm({ "src/modules/data-exporters/export-scoreboards.js"() { init_utils2(); init_utils2(); init_exporter(); getScoreboardData = (scoreboard, useWeekly = false, useFriendsOnly = false) => __async(void 0, null, function* () { var _a; const totalItemsEl = document.querySelector(`.item-wrapper[data-region="${scoreboard.id}"] .total-items`); totalItemsEl.textContent = "\u2026"; totalItemsEl.scrollIntoView({ behavior: "smooth", block: "nearest" }); const response = yield doRequest("managers/ajax/pages/scoreboards.php", { action: "get_page", category: "main", scoreboard: scoreboard.id, page: 1, weekly: useWeekly ? 1 : 0, friends_only: useFriendsOnly ? 1 : 0, search: "" }); if (null === ((_a = response.scoreboard_page) == null ? void 0 : _a.viewer_row)) { totalItemsEl.textContent = "-"; return { scoreboard: scoreboard.name, rank: "", value: "" }; } const entry = { rank: response.scoreboard_page.viewer_row.rank, points: response.scoreboard_page.viewer_row.points }; const rankSuffix = response.scoreboard_page.viewer_row.rank_formatted.replaceAll(/[\d\s]+/g, ""); totalItemsEl.textContent = `${entry.rank.toLocaleString()}${rankSuffix}`; return { scoreboard: scoreboard.name, rank: entry.rank, value: entry.points }; }); exportScoreboards = (..._0) => __async(void 0, [..._0], function* ({ useWeekly = false, useFriendsOnly = false } = {}) { let inventoryMarkup = ""; let scoreboardsToUse = yield getData("scoreboards"); if (useWeekly) { scoreboardsToUse = scoreboards.filter((scoreboard) => scoreboard.weekly); } for (const region of scoreboardsToUse) { inventoryMarkup += `<div class="item-wrapper scoreboard" data-region="${region.id}"> <div class="region-name">${region.name}</div> <div class="total-items">-</div> </div>`; } exportPopup({ type: `scoreboard-rankings${useWeekly ? "-weekly" : ""}${useFriendsOnly ? "-friends" : ""}`, text: `Scoreboard Rankings${useWeekly ? useFriendsOnly ? " (Weekly, Friends)" : " (Weekly)" : useFriendsOnly ? " (Friends)" : ""}`, headerMarkup: '<div class="region-name">Scoreboard</div><div class="total-items">Place</div>', itemsMarkup: inventoryMarkup, fetch: () => recursiveFetch(scoreboardsToUse, (scoreboard) => getScoreboardData(scoreboard, useWeekly, useFriendsOnly)), download: { headers: ["Scoreboard", "Rank", "Value"] } }); }); export_scoreboards_default = exportScoreboards; } }); // src/modules/data-exporters/styles.css var styles_default26; var init_styles27 = __esm({ "src/modules/data-exporters/styles.css"() { styles_default26 = "#custom-submenu-item-export-data .icon{filter:sepia(1) brightness(.7)}.export-wrapper{display:flex;flex-direction:column;justify-content:space-around}.export-items-wrapper{max-height:70vh;overflow:auto;border:1px solid #7e7e7e}.item-wrapper{display:grid;grid-template-columns:2fr repeat(3,1fr);padding:3px 5px;margin-bottom:2px;font-size:11px}.inventory .item-wrapper,.scoreboard-rankings .item-wrapper,.rankup-forecaster-history .item-wrapper,.marketplace-transactions .item-wrapper{grid-template-columns:2fr 1fr}.item-wrapper .total-items{text-align:right}.item-wrapper:nth-child(odd){background-color:#e2e2e2}.item-wrapper.hidden{display:none}.item-wrapper.export-items-header,.item-wrapper.export-items-footer{padding:5px;margin-bottom:0;font-size:12px;text-align:center;background-color:#bcbcbc;border:1px solid #7e7e7e}.item-wrapper.export-items-header{border-bottom:none}.item-wrapper.export-items-footer{border-top:none}.rankup-forecaster-history .item-wrapper,.marketplace-transactions .item-wrapper{border-top:1px solid #7e7e7e}.export-items-header .region-name,.export-items-footer .region-name{text-align:left}.item-wrapper:nth-last-child(2){margin-bottom:0}.actions-wrapper{display:grid;grid-template-columns:1fr 3fr 1fr 1fr;place-items:center end;margin-top:10px}.actions-wrapper .hidden{display:block;visibility:hidden}.actions-wrapper #export-back{justify-self:start}.actions-wrapper .fetch-data{justify-self:center}.mh-improved-export-data-landing{margin-left:20px;line-height:2;list-style:disc}.item-wrapper .mice-caught,.item-wrapper .total-catches{text-align:center}.item-wrapper .total-weight{text-align:right}\n"; } }); // src/modules/data-exporters/index.js var exportDataPopup, init24, data_exporters_default; var init_data_exporters = __esm({ "src/modules/data-exporters/index.js"() { init_utils2(); init_export_favorite_setups(); init_export_rankup_forecaster(); init_export_inventory(); init_export_marketplace(); init_export_mice(); init_export_scoreboards(); init_styles27(); exportDataPopup = () => { const exporters = [ { id: "mouse-stats-by-group", name: "Mouse Stats by Group", callback: () => export_mice_default("group") }, { id: "mouse-stats-by-region", name: "Mouse Stats by Region", callback: () => export_mice_default("region") }, { id: "mouse-stats-by-location", name: "Mouse Stats by Location", callback: () => export_mice_default("location") }, { id: "inventory", name: "Inventory", callback: export_inventory_default }, { id: "marketplace-transactions", name: "Marketplace Transactions", callback: export_marketplace_default }, { id: "scoreboard-rankings", name: "Scoreboard Rankings", callback: () => export_scoreboards_default() }, { id: "scoreboard-rankings-weekly", name: "Scoreboard Rankings (Weekly)", callback: () => export_scoreboards_default({ useWeekly: true }) }, { id: "scoreboard-rankings-friends", name: "Scoreboard Rankings (Friends)", callback: () => export_scoreboards_default({ useFriendsOnly: true }) }, { id: "scoreboard-rankings-weekly-friends", name: "Scoreboard Rankings (Weekly, Friends)", callback: () => export_scoreboards_default({ useWeekly: true, useFriendsOnly: true }) } ]; if (hasFavoriteSetups()) { exporters.push({ id: "favorite-setups", name: "Favorite Setups (userscript)", callback: exportFavoriteSetups }); } if (hasRankupForecaster()) { exporters.push({ id: "rankup-forecaster-history", name: "Rankup Forecaster History", callback: exportRankupForecaster }); } let exporterList = ""; exporters.forEach(({ id, name }) => { exporterList += `<li><a href="#" id="export-${id}">${name}</a></li>`; }); createPopup({ title: "Export Data", content: `<ul class="mh-improved-export-data-landing">${exporterList}</ul>` }); exporters.forEach(({ id, callback }) => { const button = document.querySelector(`#export-${id}`); if (button) { button.addEventListener("click", (e) => { e.preventDefault(); callback(); }); } }); }; init24 = () => __async(void 0, null, function* () { addStyles(styles_default26, "data-exporters"); onEvent("show-export-data", exportDataPopup); addSubmenuItem({ menu: "kingdom", label: "Export Data", icon: "https://www.mousehuntgame.com/images/items/crafting_items/transparent_thumb/c6f39c2b522f114c788f5fb65e3ab8d7.png", class: "export-data", callback: exportDataPopup }); }); data_exporters_default = { id: "data-exporters", name: "Data Exporters", type: "feature", default: true, description: "Export data from the game.", load: init24 }; } }); // src/modules/debug/settings/index.js var settings_default22; var init_settings23 = __esm({ "src/modules/debug/settings/index.js"() { settings_default22 = () => __async(void 0, null, function* () { return [ { id: "debug.utils-data", title: "Log data caching and retrieval" }, { id: "debug.events", title: "Log events" }, { id: "debug.dialog", title: "Log IDs of opening and closing dialogs/popups" }, { id: "debug.all", title: "Log module debug messages" }, { id: "debug.module-loading", title: "Log module loading" }, { id: "debug.navigation", title: "Log page, tab, and subtab navigation" }, { id: "debug.request", title: "Log remote requests and responses" }, { id: "debug.sentry", title: "Set Sentry to debug mode" }, { id: "debug.disable-cache", title: "Disable caching", description: "Disable caching of data and settings" } ]; }); } }); // src/modules/debug/index.js var debug2, main13, init25, debug_default; var init_debug2 = __esm({ "src/modules/debug/index.js"() { init_utils2(); init_settings23(); debug2 = (message, ...args) => { const textMessages = []; const objectMessages = []; for (const arg of args) { if (typeof arg === "string") { textMessages.push(arg); } else { objectMessages.push(arg); } } console.log( `%cMH Improved:%c ${message}`, "color: #ff3434; font-weight: 900; font-size: 1.1em", "color: inherit; font-weight: inherit; font-size: inherit", ...textMessages, ...objectMessages ); }; main13 = () => { window.app = window.app || {}; window.app.mhutils = utils_exports; if (getSetting("debug.dialog", false)) { let currentDialog = null; onDialogHide(() => { debug2(`Dialog hidden: ${currentDialog}`); }); onDialogShow("all", () => { currentDialog = getCurrentDialog(); debug2(`Dialog shown: ${currentDialog}`); }); } if (getSetting("debug.navigation", false)) { onNavigation(() => { debug2("onNavigation", { page: getCurrentPage(), tab: getCurrentTab(), subtab: getCurrentSubtab() }); }); onTravel(null, () => { debug2("onTravel", getCurrentLocation()); }); } if (getSetting("debug.request", false)) { onRequest("*", (response) => { debug2("onRequest", response); }); } if (getSetting("debug.events", false)) { let events = [ "camp_page_arm_item", "camp_page_toggle_blueprint", "camp_page_update_item_array", "camp_quest_hud_view_initialize", "checkout_cart_update", "info_arrow_hide", "info_arrow_show", "spring_hunt_claim_hidden_egg", "tournament_status_change", "treasure_map_update_favourite_friends", "treasure_map_update_sent_requests", "treasure_map_update", "user_interaction_update", "user_inventory_update", "user_inventory_use_convertible", "user_recipe_update", "user_relationship", "user_trap_update" ]; let hasSingleEvent = false; const ignoredEvents = []; for (const flag in getFlags()) { if (flag.startsWith("debug-events-only-")) { const event = flag.replace("debug-events-only-", ""); hasSingleEvent = event; } else if (flag.startsWith("debug-events-")) { const event = flag.replace("debug-events-", ""); events.push(event); } else if (flag.startsWith("debug-events-no-")) { const event = flag.replace("debug-events-no-", ""); ignoredEvents.push(event); } } if (ignoredEvents.length > 0) { events = events.filter((event) => !ignoredEvents.includes(event)); } if (hasSingleEvent) { events = [hasSingleEvent]; } events.forEach((event) => { onEvent(event, (...data) => { debug2(`onEvent: ${event}`, data); }); }); } }; init25 = () => { main13(); onActivation("dev", main13); onDeactivation("dev", () => { window.location.reload(); }); }; debug_default = { id: "debug", name: "Debug", description: "Adds all utility functions to <code>app.mhutils</code>, adds debug logs, and other development tools.", type: "advanced", default: false, order: 900, load: init25, settings: settings_default22 }; } }); // src/modules/delayed-tooltips/styles.css var styles_default27; var init_styles28 = __esm({ "src/modules/delayed-tooltips/styles.css"() { styles_default27 = ".mousehuntTooltipParent>.mousehuntTooltip{will-change:transform}.mousehuntTooltipParent:hover>.mousehuntTooltip{animation:mh-improved-in-scale .35s 1 forwards cubic-bezier(.4,0,1,1) 0s}.PageHunterProfile .userInteractionButtonsView-button .mousehuntTooltip,.no-delayed-tooltips .mousehuntTooltip{animation:none!important}\n"; } }); // src/modules/delayed-tooltips/index.js var init26, delayed_tooltips_default; var init_delayed_tooltips = __esm({ "src/modules/delayed-tooltips/index.js"() { init_utils2(); init_styles28(); init26 = () => __async(void 0, null, function* () { addStyles(styles_default27, "delayed-tooltips"); document.addEventListener("keydown", (e) => { if (e.shiftKey) { document.body.classList.add("no-delayed-tooltips"); } }); document.addEventListener("keyup", (e) => { if (!e.shiftKey) { document.body.classList.remove("no-delayed-tooltips"); } }); }); delayed_tooltips_default = { id: "delayed-tooltips", name: "Delayed Tooltips", type: "feature", default: false, description: "Delays the display of tooltips when you mouse over something. If you hold down the shift key, the tooltips will be displayed immediately.", load: init26 }; } }); // src/modules/error-reporting/index.js var error_reporting_default; var init_error_reporting = __esm({ "src/modules/error-reporting/index.js"() { error_reporting_default = { id: "error-reporting", name: "Error Reporting", type: "advanced", description: "Send anonymous error reports to the developers.", default: true, order: 1e3, load: () => { } }; } }); // src/modules/experiments/modules/codex-at-bottom/styles.css var styles_default28; var init_styles29 = __esm({ "src/modules/experiments/modules/codex-at-bottom/styles.css"() { styles_default28 = ".trapSelectorView__activeCodexContainer--visible{order:100}\n"; } }); // src/modules/experiments/modules/codex-at-bottom/index.js var moveCodex, codex_at_bottom_default; var init_codex_at_bottom = __esm({ "src/modules/experiments/modules/codex-at-bottom/index.js"() { init_utils2(); init_styles29(); moveCodex = () => __async(void 0, null, function* () { const codex = document.querySelector(".trapSelectorView__activeCodexContainer"); if (!codex) { return; } const statsContainer = document.querySelector(".trapSelectorView__trapStatSummaryContainer"); if (!statsContainer) { return; } statsContainer.append(codex); }); codex_at_bottom_default = () => __async(void 0, null, function* () { addStyles(styles_default28, "codex-at-bottom"); moveCodex(); onNavigation(moveCodex, { page: "camp" }); onEvent("mh-improved-cre-list-rendered", moveCodex); }); } }); // src/modules/experiments/modules/new-settings-styles-columns/styles.css var styles_default29; var init_styles30 = __esm({ "src/modules/experiments/modules/new-settings-styles-columns/styles.css"() { styles_default29 = ".mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings.active.two-column{display:grid;grid-template-columns:49% 49%;justify-content:space-between}.two-column.mousehunt-improved-settings .PagePreferences__title{max-width:350px}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-location-hud.PagePreferences__title{grid-column:1 / 3;max-width:unset}.two-column.mousehunt-improved-settings .PagePreferences__setting{flex-wrap:wrap}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-design-wrapper .PagePreferences__setting{display:flex;flex-direction:column;align-items:stretch;margin:0}.two-column.mousehunt-improved-settings .mh-improved-custom-bg-preview,.two-column.mousehunt-improved-settings .mh-improved-custom-horn-show-horn{top:10px;right:0}#mousehunt-improved-settings-design .PagePreferences__settingAction{max-width:200px}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-ultimate-checkmark-show.PagePreferences__subSetting .multi-toggle-row .PagePreferences__settingName{max-width:65px;padding:0;overflow:hidden;line-height:14px;text-overflow:ellipsis;white-space:nowrap}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-ultimate-checkmark-show.PagePreferences__subSetting .multi-toggle-row{gap:0;justify-items:stretch}.two-column.mousehunt-improved-settings .PagePreferences__settingsList.PagePreferences__subSetting{margin-left:5px}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.PagePreferences__subSetting{padding:0 5px;border-right:1px solid #e0cfb4;border-radius:0}.two-column.mousehunt-improved-settings .PagePreferences__settingsList-textarea .PagePreferences__setting,.two-column.mousehunt-improved-settings .PagePreferences__settingsList-input .PagePreferences__setting{display:flex;flex-direction:column;gap:0;align-items:stretch;padding:0;margin:0}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-advanced-mh-improved-advanced-settings{position:relative;top:unset;right:unset;display:flex;align-items:flex-start;padding:0 0 10px;margin:0 0 10px;border-bottom:1px solid #e0cfb4}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-quick-send-supplies-items .inputBoxContainer.multiSelect{display:grid;grid-template-columns:1fr 1fr}.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-quick-send-supplies-items .multiSelect{width:auto;max-width:140px}.two-column #mousehunt-improved-settings-better-better-gifts-ignore-bad-gifts select.inputBox.multiSelect{max-width:200px}.two-column select.inputBox.multiSelect{max-width:140px;margin:0}.two-column .inputBoxContainer.multiSelect{gap:5px 10px;justify-content:flex-start;margin-top:5px}.two-column #mousehunt-improved-settings-location-hud{padding-bottom:0}.two-column #mousehunt-improved-settings-location-hud-wrapper{gap:0;height:700px;padding:10px 0 0;margin:0 -11px;border-left:1px solid #e0cfb4}.two-column #mousehunt-improved-settings-location-hud .PagePreferences__title{border-bottom:1px solid #f2ebde}.two-column.mousehunt-improved-settings .PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .mhui-setting-toggle,.PagePreferences .mousehuntHud-page-tabContent.game_settings.two-column.mousehunt-improved-settings .mhui-setting-toggle,.two-column #mousehunt-improved-settings-feature-quick-send-supplies-items .PagePreferences__settingLabel{display:none}.two-column #mousehunt-improved-settings-better-better-send-supplies-pinned-items .settingRow-action-inputContainer{width:300px}.two-column #mousehunt-improved-settings-advanced-override-styles,.two-column #mousehunt-improved-settings-advanced-override-flags{margin-left:0}.two-column #mousehunt-improved-settings-advanced-override-styles .PagePreferences__settingName,.two-column #mousehunt-improved-settings-advanced-override-flags .PagePreferences__settingName{margin-bottom:10px}.two-column .PagePreferences__settingsList .PagePreferences__subSetting{opacity:.4}.two-column .PagePreferences__settingsList:hover .PagePreferences__subSetting{opacity:1}.two-column .mousehunt-improved-settings .PagePreferences__titleText{padding-bottom:0}.two-column .mousehunt-improved-settings .PagePreferences__settingsList-textarea .PagePreferences__setting,.two-column .mousehunt-improved-settings .PagePreferences__settingsList-input .PagePreferences__setting{gap:5px}.two-column .mousehunt-improved-settings .PagePreferences__settingDescription{display:none}.two-column .mousehunt-improved-settings .PagePreferences__subSetting .PagePreferences__settingName{font-size:11px;line-height:1.5}\n"; } }); // src/modules/experiments/modules/new-settings-styles-columns/index.js var new_settings_styles_columns_default; var init_new_settings_styles_columns = __esm({ "src/modules/experiments/modules/new-settings-styles-columns/index.js"() { init_utils2(); init_styles30(); new_settings_styles_columns_default = () => __async(void 0, null, function* () { addStyles(styles_default29, "new-settings-styles-columns"); onNavigation(() => __async(void 0, null, function* () { const settings = document.querySelectorAll(".PagePreferences__settingsWrapper > .PagePreferences__settingsList"); settings.forEach((setting) => { setting.addEventListener("click", () => { setting.classList.toggle("hover"); }); }); }), { page: "preferences" }); }); } }); // src/modules/experiments/modules/raffle/raffle.css var raffle_default; var init_raffle = __esm({ "src/modules/experiments/modules/raffle/raffle.css"() { raffle_default = ".mh-return-raffles.message{position:sticky;top:0;right:0;left:0;z-index:10;background-color:#f9f9f9}.notificationMessageList .tab{scroll-behavior:smooth}.mh-return-raffles.message .actions{display:flex;gap:10px;align-items:center;justify-content:flex-start;float:none}.notificationMessageList .message.done{background-color:#bffdd2}.notificationMessageList .message.skipped{background-color:#dfdfdf}\n"; } }); // src/modules/experiments/modules/raffle/index.js var getBallotsToSend, getSavedSentBallots, getSavedSentBallot, saveSentBallot, sendBallot, returnRaffles, _inboxOpen, replaceInboxMethods, raffle_default2; var init_raffle2 = __esm({ "src/modules/experiments/modules/raffle/index.js"() { init_utils2(); init_raffle(); getBallotsToSend = () => { const ballotsToSend = []; const ballots = document.querySelectorAll(".message.notification.ballot"); if (!ballots.length) { return ballotsToSend; } ballots.forEach((ballot) => { if (ballot.classList.contains("done") || ballot.classList.contains("skipped")) { return; } const name = ballot.querySelector(".messageText a"); const action = ballot.querySelector(".sendBallot"); if (!action || !name) { return; } ballotsToSend.push({ id: action.getAttribute("data-sender"), name: name.innerText ? name.innerText.trim() : "", element: ballot }); }); return ballotsToSend; }; getSavedSentBallots = () => { return sessionGet("sent-ballots", []); }; getSavedSentBallot = (id) => { const savedSentBallots = getSavedSentBallots(); return savedSentBallots.includes(id); }; saveSentBallot = (id) => { const savedSentBallots = getSavedSentBallots(); savedSentBallots.push(id); sessionSet("sent-ballots", savedSentBallots); }; sendBallot = (ballot) => __async(void 0, null, function* () { debuglog("feature-flags-raffle", `Returning ballot for ${ballot.name} (${ballot.id})\u2026`); const button = document.querySelector(`.sendBallot[data-sender="${ballot.id}"]`); if (!button) { debuglog("feature-flags-raffle", `Could not find button for ${ballot.name} (${ballot.id})`); return { status: "error", proceed: false }; } const buttonParent = button.parentElement.parentElement; if (buttonParent) { const id = buttonParent.getAttribute("data-id"); if (id) { if (getSavedSentBallot(id)) { debuglog("feature-flags-raffle", `Already returned ballot for ${ballot.name} (${ballot.id})`); return { status: "skipped", proceed: true }; } saveSentBallot(id); } } const response = yield doRequest("managers/ajax/users/givefriendballot.php", { snuid: ballot.id }); if (response.error && !response.error.includes("You have already entered ")) { debuglog("feature-flags-raffle", `Error returning ballot for ${ballot.name}: ${response.error}`); return { status: "error", proceed: false }; } debuglog("feature-flags-raffle", `Returned ballot for ${ballot.name} (${ballot.id})`); button.classList.add("disabled"); button.setAttribute("disabled", true); yield sleep(250); return { status: "done", proceed: true }; }); returnRaffles = () => __async(void 0, null, function* () { const drawTab = document.querySelector('.notificationMessageList .tab.active[data-tab="daily_draw"]'); if (!drawTab) { return; } const existing = document.querySelector(".mh-return-raffles.message"); if (existing) { existing.remove(); } const messageWrapper = makeElement("div", ["mh-return-raffles", "message"]); const actionsWrapper = makeElement("div", ["actions"]); const returnButton = makeElement("input", ["mh-return-raffles-button", "sendBallot"]); returnButton.setAttribute("type", "button"); returnButton.setAttribute("value", "Return Raffles"); const statusEl = makeElement("div", ["status"]); let isReturning = false; returnButton.addEventListener("click", () => __async(void 0, null, function* () { if (isReturning) { returnButton.value = "Return Raffles"; statusEl.innerText = "Stopped returning ballots."; setTimeout(() => { statusEl.innerText = ""; }, 1e3); isReturning = false; return; } isReturning = true; returnButton.value = "Stop Returning"; statusEl.innerText = "Returning ballots\u2026"; const ballotsToSend = getBallotsToSend(); if (!ballotsToSend.length) { return; } debuglog("feature-flags-raffle", `Returning ${ballotsToSend.length} ballots\u2026`, ballotsToSend); const tab = document.querySelector('.notificationMessageList .tab.active[data-tab="daily_draw"]'); if (!tab) { return; } for (const ballot of ballotsToSend) { if (!isReturning) { break; } ballot.element.scrollIntoView({ behavior: "smooth", block: "nearest" }); statusEl.innerText = `Returning ballot for ${ballot.name}\u2026`; ballot.element.classList.add("hover"); const { status, proceed } = yield sendBallot(ballot, tab); if ("skipped" === status) { statusEl.innerText = `Already returned ballot for ${ballot.name}!`; } ballot.element.classList.remove("hover"); if (!proceed) { statusEl.innerText = "Ballots returned!"; break; } ballot.element.classList.add(status); } if (!isReturning) { return; } isReturning = false; returnButton.value = "Return Raffles"; statusEl.innerText = "Ballots returned!"; setTimeout(() => { statusEl.innerText = ""; }, 1e3); })); actionsWrapper.append(returnButton); actionsWrapper.append(statusEl); messageWrapper.append(actionsWrapper); drawTab.insertBefore(messageWrapper, drawTab.firstChild); }); replaceInboxMethods = () => { var _a, _b; if (!messenger || !((_b = (_a = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _a.notification) == null ? void 0 : _b.showTab)) { return; } if (_inboxOpen) { return; } _inboxOpen = messenger.UI.notification.showTab; messenger.UI.notification.showTab = (tab) => { const toReturn = _inboxOpen(tab); if (tab === "daily_draw") { returnRaffles(); } return toReturn; }; const _inboxPopup = messenger.UI.notification.togglePopup; messenger.UI.notification.togglePopup = (e) => { const toReturn = _inboxPopup(e); onEvent("ajax_response", () => { setTimeout(() => { const activeTab = document.querySelector(".notificationHeader .tab.active"); if (activeTab && activeTab.getAttribute("data-tab") === "daily_draw") { returnRaffles(); } }, 100); }, true); return toReturn; }; }; raffle_default2 = () => __async(void 0, null, function* () { if (getSetting("hide-daily-draw", false)) { return; } addStyles(raffle_default, "feature-flags-raffle"); replaceInboxMethods(); }); } }); // src/modules/experiments/modules/troll-mode/styles.css var styles_default30; var init_styles31 = __esm({ "src/modules/experiments/modules/troll-mode/styles.css"() { styles_default30 = "*+*{transition:.3s}*+*+*{filter:hue-rotate(90deg);transform:rotate(.5deg)}*+*+*+*{transform:rotate(-.6deg)}*+*>*{transform:rotate(-.1deg)}*+*+*>*{transform:rotate(.2deg)}div+div+div{filter:hue-rotate(90deg)}*>*>*>*>*>*>*>*>*>*>*{transition:.9s}*>*>*>*>*>*>*>*>*>*:hover *{transform:rotateX(20deg)}*>*>*>*>*>*>*>*>*>*>*:hover{transform:rotateX(-20deg)}.lolspin{animation:mh-improved-spin 1s linear infinite}@media (prefers-reduced-motion: reduce){.lolspin{animation:none}}\n"; } }); // src/modules/experiments/modules/troll-mode/index.js var trollEm, trollem2, troll_mode_default; var init_troll_mode = __esm({ "src/modules/experiments/modules/troll-mode/index.js"() { init_utils2(); init_styles31(); trollEm = () => { const domQuery = "#journallatestentry"; const lastCatch = document.querySelector(domQuery); const status = ["attractionfailure", "catchfailure", "catchfailuredamage"]; const isFtcOrFta = lastCatch && status.some((s) => lastCatch.classList.contains(s)); if (isFtcOrFta) { hg.views.MessengerView.addMessage({ content: { body: app.views.OnboardingTutorialView.tutorial.wrapInfoArrow(`wow you really are an amazing mousehunter ${user.username}`, "lol") }, highlight_dom: domQuery, highlight_padding: { top: 0, left: 0, right: 0, bottom: 1 }, css_class: "larryCircle", on_show_callback: () => { app.views.OnboardingTutorialView.tutorial.showBouncyArrow(domQuery, "top"); }, on_close_callback: () => { app.views.OnboardingTutorialView.tutorial.hideBouncyArrow(); }, show_overlay: true }); hg.views.MessengerView.go(); } }; trollem2 = () => { const banner = document.querySelector(".campPage-banner"); if (!banner) { return; } const bannerLink = document.createElement("a"); const newbieImg = document.createElement("img"); newbieImg.src = "https://www.mousehuntgame.com/images/promo/campbanners/groups/newbie.png"; bannerLink.append(newbieImg); bannerLink.addEventListener("click", () => { addStyles(styles_default30, "troll-mode"); banner.classList.add("lolspin"); setTimeout(() => { banner.classList.remove("lolspin"); }, 1e3); const elements = document.querySelectorAll("body * *"); const randomElement = elements[Math.floor(Math.random() * elements.length)]; randomElement.classList.add("lolspin"); setInterval(() => { const randomElement2 = elements[Math.floor(Math.random() * elements.length)]; randomElement2.classList.add("lolspin"); }, 500); }); banner.append(bannerLink); banner.classList.remove("hidden"); }; troll_mode_default = () => __async(void 0, null, function* () { trollEm(); onTurn(trollEm, 1e3); trollem2(); }); } }); // src/modules/experiments/index.js var experiments, init27, experiments_default; var init_experiments = __esm({ "src/modules/experiments/index.js"() { init_utils2(); init_codex_at_bottom(); init_new_settings_styles_columns(); init_raffle2(); init_troll_mode(); experiments = [ { id: "experiments.favorite-setups-toggle", title: "Favorite Setups button in top menu" }, { id: "experiments.location-hud-toggle", title: "Location HUD toggle button in top menu" }, { id: "experiments.lol-gottem", title: "Troll mode", load: troll_mode_default }, { id: "experiments.raffle", title: "Return Raffles button", load: raffle_default2 }, { id: "experiments.new-settings-styles-columns", title: "Settings: Columns", load: new_settings_styles_columns_default }, { id: "experiments.codex-at-bottom", title: "Move Codex section to the bottom of the trap selector", load: codex_at_bottom_default }, { id: "better-marketplace.show-chart-images", title: "Better Marketplace: Show charts on category pages" }, { id: "location-huds.bountiful-beanstalk-invetory-in-one-row", title: "Location HUD - Bountiful Beanstalk: Inventory box in one row" }, { id: "experiments.iceberg-always-show-progress", title: "Location HUD - Iceberg: Always show progress details" }, { id: "experiments.fi-draggable-airship", title: "Location HUD - Floating Islands: Make airship draggable" } ]; init27 = () => __async(void 0, null, function* () { for (const experiment of experiments) { if (experiment.load && getSetting(experiment.id, false)) { experiment.load(); } } }); experiments_default = { id: "experiments", name: "Experiments", description: "", type: "beta", default: true, order: -1, load: init27, settings: () => experiments }; } }); // src/modules/favorite-setups/styles.css var styles_default31; var init_styles32 = __esm({ "src/modules/favorite-setups/styles.css"() { styles_default31 = `.mh-improved-favorite-setups-button{position:relative;display:block;padding:5px 10px;margin:5px 0;font-size:12px;font-weight:700;line-height:31px;color:#4e300b;cursor:pointer;background:#f6f3eb;border:1px solid #d3cecb;border-radius:4px;box-shadow:-1px 1px 3px #d3cecb inset}.mh-improved-favorite-setups-button-label{position:absolute;top:0;right:10px;bottom:0;display:flex;align-items:center;font-size:13px;font-weight:100;color:#926944;vertical-align:bottom}.mh-improved-favorite-setups-button:hover{text-decoration:none}.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover{background-color:#494949}.mh-improved-favorite-setups-blueprint-container{position:absolute;inset:0;color:#4e300b}.mh-improved-favorite-setups-blueprint-container .header{margin-top:10px;font-size:13px;color:#926944;text-align:center}.mh-improved-favorite-setups-blueprint-container .content{position:absolute;inset:35px 5px 10px;overflow-y:auto}.mh-improved-favorite-setups-blueprint-container .row{display:grid;grid-template-columns:1fr 30px repeat(4,45px);align-items:center;height:auto;min-height:50px;padding:3px;margin-bottom:7px;background:#fff;border:1px solid #ceb7a6;border-radius:5px}.mh-improved-favorite-setups-blueprint-container .location-favorites{padding:10px 0;margin:10px 0}.mh-improved-favorite-setups-blueprint-container .row.location-favorite{background-color:#fdfacf}.mh-improved-favorite-setups-blueprint-container .row.location-favorite:last-child{margin-bottom:0}.mh-improved-favorite-setups-blueprint-container .row .campPage-trap-itemBrowser-favorite-item-image{width:100%;height:45px;border-radius:0}.mh-improved-favorite-setups-blueprint-container .row.editing{grid-template-columns:1fr repeat(4,40px);align-items:start}.mh-improved-favorite-setups-blueprint-container .controls{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-around;height:50px}.mh-improved-favorite-setups-blueprint-container .row.editing .controls{align-items:flex-end}.mh-improved-favorite-setups-blueprint-container .button-wrapper{display:flex;gap:5px;align-items:center;justify-content:center}.mh-improved-favorite-setups-blueprint-container .row.editing .button-wrapper{align-self:flex-end;margin-right:5px}.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-favorite-item{width:100%}.mh-improved-favorite-setups-blueprint-container .controls .label{padding:0;font-size:12px;text-align:center}.mh-improved-favorite-setups-blueprint-container .controls .action{padding:4px 6px;font-size:11px;font-weight:400;line-height:inherit}.mh-improved-favorite-setups-blueprint-container .controls .action.arm{padding:4px 10px}.mh-improved-favorite-setups-blueprint-container .edit{position:absolute;right:10px}.mh-improved-favorite-setups-blueprint-container .controls .delete,.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,.mh-improved-favorite-setups-blueprint-container .editing .controls .edit-setup,.mh-improved-favorite-setups-blueprint-container.editing .controls .edit-setup,.mh-improved-favorite-setups-blueprint-container .controls .save-setup,.mh-improved-favorite-setups-blueprint-container .controls .cancel-setup,.mh-improved-favorite-setups-blueprint-container.editing .controls .arm,.mh-improved-favorite-setups-blueprint-container .editing .controls .arm{display:none}.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,.mh-improved-favorite-setups-blueprint-container .editing .controls .save-setup,.mh-improved-favorite-setups-blueprint-container .editing .controls .cancel-setup{display:block}.mh-improved-favorite-setups-blueprint-container .row.flash{background-color:#b9ffb9}.mh-improved-favorite-setups-blueprint-container .controls input{width:150px}.row.editing .campPage-trap-itemBrowser-favorite-item:after{position:absolute;right:5px;bottom:-8px;left:5px;display:flex;align-items:center;justify-content:center;padding:2px 0;content:"edit";background-color:#eeeeeeed;border:1px solid #585858;border-radius:5px}.row.editing .campPage-trap-itemBrowser-favorite-item:hover:after{background-color:#ccc}.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-favorite-item:hover .campPage-trap-itemBrowser-favorite-item-image{opacity:.8}.mh-improved-favorite-setups-component-picker-popup-body-items{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mh-improved-favorite-setups-component-picker .prefix,.mh-improved-favorite-setups-component-picker .content{background-color:#f6f3eb}.mh-improved-favorite-setups-component-picker .content .content{max-height:90vh;overflow:auto}.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item{width:auto;max-width:300px}.mh-improved-favorite-setups-component-picker-popup-search{display:flex;align-items:center;justify-content:space-around;margin-bottom:20px}.mh-improved-favorite-setups-component-picker-popup-search input{width:350px;padding:10px}.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item-description{margin-left:0}.mh-improved-favorite-setups-component-picker .trinket .campPage-trap-itemBrowser-item-content{width:80%}a.random-title:after{position:absolute;top:2px;right:-18px;box-sizing:border-box;display:block;width:17px;height:17px;padding:9px;margin:1px;content:"";background:url(https://www.mousehuntgame.com/images/ui/puzzle/refresh.png) no-repeat center center / contain;border-radius:50%}a.random-title:hover:after{background-color:#ddd}a.random-title.loading:after{animation:mh-improved-spin 1s linear infinite}@media (prefers-reduced-motion: reduce){a.random-title.loading:after{animation:none}}.mh-improved-favorite-setups-blueprint-container .editing .controls .label{position:relative;align-self:flex-start}.mh-improved-favorite-setups-blueprint-container .row .mh-improved-favorite-setups-power-type-wrapper .campPage-trap-itemBrowser-favorite-item-image{width:25px;height:25px;opacity:.8}.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-statContainer{width:75%;margin-top:5px}.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-content{width:80%}.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-item-powerType{display:none}.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType{display:flex;flex-direction:column;align-items:center;justify-content:center;width:25px}.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType.hidden{visibility:hidden}.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType:before{box-sizing:border-box;background-color:transparent;border:none}.mh-improved-favorite-setups-blueprint-container .row:hover .controls .action.arm{outline:2px solid #eab35d}.mh-improved-favorite-setups-blueprint-container .row.editing .campPage-trap-itemBrowser-favorite-item-image{height:40px}.mh-improved-favorite-setups-blueprint-container .row.editing .move-buttons{display:flex}.mh-improved-favorite-setups-blueprint-container .row .move-buttons{position:absolute;bottom:20px;left:28px;display:none;flex-direction:row;align-items:center}.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down:after,.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up:after{position:absolute;top:0;right:0;width:18px;height:18px;content:"";background-repeat:no-repeat;background-size:contain;opacity:.4}.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up:after{position:absolute;right:13px;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 17a.75.75 0 0 1-.75-.75V5.612L5.29 9.77a.75.75 0 0 1-1.08-1.04l5.25-5.5a.75.75 0 0 1 1.08 0l5.25 5.5a.75.75 0 1 1-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0 1 10 17Z" clip-rule="evenodd" /></svg>')}.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down:after{background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 3a.75.75 0 0 1 .75.75v10.638l3.96-4.158a.75.75 0 1 1 1.08 1.04l-5.25 5.5a.75.75 0 0 1-1.08 0l-5.25-5.5a.75.75 0 1 1 1.08-1.04l3.96 4.158V3.75A.75.75 0 0 1 10 3Z" clip-rule="evenodd" /></svg>')}.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down:hover:after,.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up:hover:after{opacity:1}.mh-improved-favorite-setups-blueprint-container .row:last-child .move-down{display:none}.mh-improved-favorite-setups-blueprint-container .row:nth-child(2) .move-up{display:none}.pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover{background-color:#fdfaf2}.mh-dark-mode .pageFrameView .mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType:after{color:#000}.mh-dark-mode .mh-improved-favorite-setups-button-label{color:#e0d3b3}.mh-dark-mode .mh-improved-favorite-setups-button-text{color:#ebebeb}.mousehuntHeaderView .menuItem.mousehunt-improved-favorite-setups-icon{display:flex;align-items:center;justify-content:center;width:20px;height:25px;padding:0;opacity:.5}.mousehuntHeaderView .menuItem.mousehunt-improved-favorite-setups-icon:hover{opacity:1}.mousehunt-improved-favorite-setups-icon:before{display:block;width:15px;height:15px;content:"";background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401Z" clip-rule="evenodd" /></svg>');background-repeat:no-repeat;background-size:contain}.mh-improved-favorite-setups-blueprint-container .editing .controls .action{padding:2px 6px} `; } }); // src/modules/favorite-setups/index.js var getFavoriteSetups, saveFavoriteSetup, normalizeSetup, getCurrentSetup, makeImage, makeButton2, getCheeseEffect, getPowerTypeId, makeImagePicker, armItem, makeBlueprintRow, makeBlueprintContainer, getNameOfCurrentSetup, updateFavoriteSetupName, addFavoriteSetupsButton, toggleFavoriteSetups, addIcon, init28, favorite_setups_default2; var init_favorite_setups2 = __esm({ "src/modules/favorite-setups/index.js"() { init_utils2(); init_styles32(); getFavoriteSetups = () => { const faves = getSetting("favorite-setups.setups", []); if (!faves || !Array.isArray(faves) || !faves.length) { return []; } return faves.filter(Boolean); }; saveFavoriteSetup = (setup, useGeneratedName = true) => __async(void 0, null, function* () { let setups = getFavoriteSetups(); if (!setups.length) { setups = []; } const normalizedSetup = normalizeSetup(setup); if (useGeneratedName) { const setupName = yield fetch("https://setup-namer.mouse.rip", { method: "POST", headers: getHeaders(), body: JSON.stringify([ normalizedSetup.bait_id, normalizedSetup.base_id, normalizedSetup.weapon_id, normalizedSetup.trinket_id ]) }); const setupNameData = yield setupName.json(); if (setupNameData.name) { normalizedSetup.name = setupNameData.name; } } else { normalizedSetup.name = user.environment_name; } try { setups.push(normalizedSetup); } catch (e) { setups = [normalizedSetup]; } saveSetting("favorite-setups.setups", setups); return normalizedSetup; }); normalizeSetup = (setup) => { return Object.keys(setup).reduce((acc, key) => { acc[key] = setup[key] ? setup[key].toString() : ""; return acc; }, {}); }; getCurrentSetup = () => { return normalizeSetup({ id: "current", name: "Current Setup", bait_id: user.bait_item_id, base_id: user.base_item_id, weapon_id: user.weapon_item_id, trinket_id: user.trinket_item_id, power_type: user == null ? void 0 : user.trap_power_type_name.toLowerCase(), location: getCurrentLocation() }); }; makeImage = (type, id, thumbnail) => { const wrapper = makeElement("div", "campPage-trap-itemBrowser-favorite-item"); wrapper.setAttribute("data-item-id", id); wrapper.setAttribute("data-item-type", type); wrapper.setAttribute("title", `Click to change ${type}`); const item = makeElement("div", ["campPage-trap-itemBrowser-favorite-item-image"]); item.style.backgroundImage = `url(${thumbnail})`; makeElement("div", "campPage-trap-itemBrowser-favorite-item-frame", "", item); wrapper.append(item); return wrapper; }; makeButton2 = (button) => { const buttonElement = makeElement("a", ["mousehuntActionButton", "action", ...button.className]); makeElement("span", "", button.text, buttonElement); buttonElement.addEventListener("click", button.callback); return buttonElement; }; getCheeseEffect = (textValue) => { const data = { "Uber Fresh": 13, "Ultimately Fresh": 12, "Insanely Fresh": 11, "Extremely Fresh": 10, "Very Fresh": 9, Fresh: 8, "No Effect": 7, Stale: 6, "Very Stale": 5, "Extremely Stale": 4, "Insanely Stale": 3, "Ultimately Stale": 2, "Uber Stale": 1 }; return data[textValue]; }; getPowerTypeId = (powerType) => { const data = { arcane: "arcn", draconic: "drcnc", forgotten: "frgttn", hydro: "hdr", law: "law", parental: "prntl", physical: "phscl", rift: "rift", shadow: "shdw", tactical: "tctcl" }; return data[powerType] || powerType; }; makeImagePicker = (setupId, type, currentId, callback) => __async(void 0, null, function* () { const response = yield doRequest("managers/ajax/users/gettrapcomponents.php", { classification: type }); const items2 = (response == null ? void 0 : response.components) || []; items2.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); let content = '<div class="mh-improved-favorite-setups-component-picker-popup">'; content += '<div class="mh-improved-favorite-setups-component-picker-popup-body">'; content += '<div class="mh-improved-favorite-setups-component-picker-popup-search">'; content += '<input type="text" placeholder="Search" id="mh-improved-favorite-setups-component-picker-popup-search-input" />'; content += '<div class="mh-improved-favorites-setups-component-picker-popup-use-current mousehuntActionButton" title="Use current item"><span>Use currently armed item</span></div>'; content += "</div>"; content += '<div class="mh-improved-favorite-setups-component-picker-popup-body-items">'; for (const item of items2) { const getStatRow = (stat, title, formatted, compare) => { let compareStat = item[stat]; if ("cheese_effect" === stat) { compareStat = getCheeseEffect(item); compare = getCheeseEffect(compare); } const compareClass = compare === compareStat ? "" : compare > compareStat ? "better" : "worse"; return `<div class="campPage-trap-itemBrowser-item-stat ${stat} ${compareClass}" title="${title}"> <div class="value"><span>${formatted}</span></div> </div>`; }; content += `<div class="campPage-trap-itemBrowser-item loaded ${type}" data-item-id="${item.item_id}">`; content += ' <div class="campPage-trap-itemBrowser-item-leftBar">'; content += ` <a href="#"><div class="campPage-trap-itemBrowser-item-image" style="background-image:url(${item.thumbnail});"></div></a>`; content += ` <a href="#" class="campPage-trap-itemBrowser-item-armButton save-button" data-item-id="${item.item_id}" data-item-classification="${type}" data-item-image="${item.thumbnail}" data-power-type="${item.power_type_image_name}">Use</a>`; content += " </div>"; content += ' <div class="campPage-trap-itemBrowser-item-content">'; content += ` <div class="campPage-trap-itemBrowser-item-name">${item.name}</div>`; if ("bait" === type || "trinket" === type) { const quantityFormatted = item.quantity.toLocaleString(); content += `<div class="campPage-trap-itemBrowser-item-quantity"><span class="quantity">${quantityFormatted}</span><span class="label">Quantity</span></div>`; } if (item.power_type) { content += `<div class="campPage-trap-itemBrowser-item-powerType ${item.power_type}"></div>`; } if (item.has_stats) { content += '<div class="campPage-trap-itemBrowser-item-statContainer">'; content += item.has_power ? getStatRow("power", "Power", item.power_formatted, user.trap_power) : ""; content += item.has_power_bonus ? getStatRow("power_bonus", "Power Bonus", item.power_bonus_formatted, user.trap_power_bonus) : ""; content += item.has_attraction_bonus ? getStatRow("attraction_bonus", "Attraction Bonus", item.attraction_bonus_formatted, user.trap_attraction_bonus) : ""; content += item.has_luck ? getStatRow("luck", "Luck", item.luck_formatted, user.trap_luck) : ""; content += getStatRow("cheese_effect", "Cheese Effect", item.cheese_effect, user.trap_cheese_effect); content += "</div>"; } content += '<div class="campPage-trap-itemBrowser-item-description shortDescription">'; content += item.consume_method ? `<div class="campPage-trap-itemBrowser-item-description-consumeMethod"><b>Consumed on:</b> ${item.consume_method}</div>` : ""; if ("bait" === type) { let description = item.description.replaceAll(/<\/?[^>]+(>|$)/g, ""); description = description.slice(0, 200); if (item.description.length > 150) { description += "\u2026"; } content += `<div class="campPage-trap-itemBrowser-item-description-text">${description}</div>`; } content += "</div>"; content += "</div>"; content += "</div>"; } content += "</div>"; content += "</div>"; content += "</div>"; const popup = createPopup({ id: "mh-improved-favorite-setups-component-picker", title: "", content, className: "mh-improved-favorite-setups-component-picker" }); popup.show(); const saveButtons = document.querySelectorAll(".campPage-trap-itemBrowser-item-armButton.save-button"); saveButtons.forEach((saveButton) => { saveButton.addEventListener("click", (event) => __async(void 0, null, function* () { event.preventDefault(); event.stopPropagation(); callback( saveButton.getAttribute("data-item-id"), saveButton.getAttribute("data-item-classification"), saveButton.getAttribute("data-item-image"), saveButton.getAttribute("data-power-type") ); popup.hide(); })); }); const searchInput = document.querySelector("#mh-improved-favorite-setups-component-picker-popup-search-input"); if (!searchInput) { return; } searchInput.focus(); searchInput.addEventListener("keyup", () => { const filter = searchInput.value.toLowerCase(); const searchItems = document.querySelectorAll(".campPage-trap-itemBrowser-item"); searchItems.forEach((item) => { const name = item.querySelector(".campPage-trap-itemBrowser-item-name"); if (name.textContent.toLowerCase().includes(filter)) { item.classList.remove("hidden"); } else { item.classList.add("hidden"); } }); }); const useCurrentItemButton = document.querySelector(".mh-improved-favorites-setups-component-picker-popup-use-current"); useCurrentItemButton.addEventListener("click", () => { const item = document.querySelector(`.campPage-trap-itemBrowser-item[data-item-id="${user[`${type}_item_id`]}"]`); if (!item) { return; } const saveButton = item.querySelector(".campPage-trap-itemBrowser-item-armButton.save-button"); if (!saveButton) { return; } callback( saveButton.getAttribute("data-item-id"), saveButton.getAttribute("data-item-classification"), saveButton.getAttribute("data-item-image"), saveButton.getAttribute("data-power-type") ); popup.hide(); }); }); armItem = (items2) => __async(void 0, null, function* () { return new Promise((resolve, reject2) => { items2.forEach(({ id, type }) => { hg.utils.TrapControl.armItem(id, type); }); hg.utils.TrapControl.go(resolve, reject2); }); }); makeBlueprintRow = (setup, isCurrent = false) => __async(void 0, null, function* () { if (!setup) { return; } const setupContainer = makeElement("div", ["row"]); const controls = makeElement("div", ["controls"]); makeElement("div", ["label"], (setup == null ? void 0 : setup.name) || "", controls); let hasHighlighted = false; const buttonWrapper = makeElement("div", ["button-wrapper"]); if (isCurrent) { buttonWrapper.append(makeButton2({ text: "Save", className: ["save", "lightBlue"], callback: () => __async(void 0, null, function* () { let currentSetup = getCurrentSetup(); currentSetup.id = `${setup == null ? void 0 : setup.bait_id}-${setup == null ? void 0 : setup.base_id}-${setup == null ? void 0 : setup.weapon_id}-${setup == null ? void 0 : setup.trinket_id}`; const setups = getFavoriteSetups(); if (setups.length) { const existingSetup = setups.find((s) => (s == null ? void 0 : s.id) && s.id === currentSetup.id); if (existingSetup && !hasHighlighted) { const row = document.querySelector(`.mh-improved-favorite-setups-blueprint-container .row[data-setup-id="${currentSetup.id}"]`); row.classList.add("flash"); setTimeout(() => { row.classList.remove("flash"); }, 1e3); hasHighlighted = true; return; } } currentSetup = yield saveFavoriteSetup(currentSetup, false); const setupRow = yield makeBlueprintRow(currentSetup); setupRow.setAttribute("data-setup-id", currentSetup.id); const body = document.querySelector(".mh-improved-favorite-setups-blueprint-container .content"); body.append(setupRow); updateFavoriteSetupName(); }) })); } else { buttonWrapper.append(makeButton2({ text: "Arm", className: ["arm"], callback: () => __async(void 0, null, function* () { const setupId = setupContainer.getAttribute("data-setup-id"); debuglog("favorite-setups", `Arming setup ${setupId}`); const setups = getFavoriteSetups(); if (!setups.length) { return; } if (!setupId) { return; } const index = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === setupId); const thisSetup = setups[index]; if (!thisSetup) { return; } const toArm = []; if (thisSetup.base_id && thisSetup.base_id != user.base_item_id) { toArm.push({ id: thisSetup.base_id, type: "base" }); } if (thisSetup.weapon_id && thisSetup.weapon_id != user.weapon_item_id) { toArm.push({ id: thisSetup.weapon_id, type: "weapon" }); } if (thisSetup.trinket_id && thisSetup.trinket_id != user.trinket_item_id) { toArm.push({ id: thisSetup.trinket_id, type: "trinket" }); } if (thisSetup.bait_id && thisSetup.bait_id != user.bait_item_id) { toArm.push({ id: thisSetup.bait_id, type: "bait" }); } if (toArm.length) { yield armItem(toArm); } updateFavoriteSetupName(); }) })); buttonWrapper.append(makeButton2({ text: "Edit", className: ["edit-setup"], callback: () => { const setupId = setupContainer.getAttribute("data-setup-id"); debuglog("favorite-setups", `Editing setup ${setupId}`); setupContainer.classList.add("editing"); const title = setupContainer.querySelector(".label"); const randomTitleButton = makeElement("a", "random-title"); randomTitleButton.setAttribute("title", "Generate a random name for this setup"); randomTitleButton.addEventListener("click", (e) => __async(void 0, null, function* () { e.preventDefault(); e.target.classList.add("loading"); const response = yield fetch("https://setup-namer.mouse.rip", { method: "POST", headers: getHeaders(), body: JSON.stringify([ setup.bait_id, setup.base_id, setup.weapon_id, setup.trinket_id ]) }); const setupNameData = yield response.json(); if (setupNameData.name) { title.querySelector("input").value = setupNameData.name; } e.target.classList.remove("loading"); })); const titleInput = document.createElement("input"); titleInput.value = title.textContent; title.textContent = ""; title.append(titleInput); title.prepend(randomTitleButton); const powerTypeInput = makeElement("input", ["hidden", "power-type-input"]); powerTypeInput.setAttribute("data-power-type", setup.power_type); title.append(powerTypeInput); const images = setupContainer.querySelectorAll(".campPage-trap-itemBrowser-favorite-item"); images.forEach((image) => { image.classList.add("clickable"); image.addEventListener("click", () => __async(void 0, null, function* () { const itemType = image.getAttribute("data-item-type"); const itemId = image.getAttribute("data-item-id"); const imageDisplay = image.querySelector(".campPage-trap-itemBrowser-favorite-item-image"); yield makeImagePicker(setupId, itemType, itemId, (newItemId, newItemType, newItemImageUrl, newItemPowerType) => { if (itemType !== newItemType) { return; } if (itemId == newItemId) { return; } image.setAttribute("data-new-item-id", newItemId); image.setAttribute("data-new-item-image", newItemImageUrl); image.setAttribute("data-old-image-url", imageDisplay.style.backgroundImage); if (newItemPowerType && "undefined" !== newItemPowerType) { const ptInput = setupContainer.querySelector(".power-type-input"); ptInput.setAttribute("data-power-type", newItemPowerType); } imageDisplay.style.backgroundImage = `url(${newItemImageUrl})`; }); })); }); const existing = setupContainer.querySelector(".move-buttons"); if (existing) { existing.remove(); } const moveUpButton = makeElement("a", ["move-up"]); moveUpButton.addEventListener("click", (event) => { const previous = event.target.closest(".row").previousElementSibling; if (previous) { const setups = getFavoriteSetups(); if (!setups.length) { return; } const index = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === setupId); const previousIndex = setups.findIndex((s) => (s == null ? void 0 : s.id) === previous.getAttribute("data-setup-id")); const temp = setups[index]; setups[index] = setups[previousIndex]; setups[previousIndex] = temp; saveSetting("favorite-setups.setups", setups); previous.before(setupContainer); } }); const moveDownButton = makeElement("a", ["move-down"]); moveDownButton.addEventListener("click", (event) => { const next = event.target.closest(".row").nextElementSibling; if (next) { const setups = getFavoriteSetups(); if (!setups.length) { return; } const index = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === setupId); const nextIndex = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === next.getAttribute("data-setup-id")); const temp = setups[index]; setups[index] = setups[nextIndex]; setups[nextIndex] = temp; saveSetting("favorite-setups.setups", setups); next.after(setupContainer); } }); const moveButtons = makeElement("div", ["move-buttons"]); moveButtons.append(moveUpButton); moveButtons.append(moveDownButton); controls.append(moveButtons); } })); buttonWrapper.append(makeButton2({ text: "Save", className: ["save-setup"], callback: () => { const setupId = setupContainer.getAttribute("data-setup-id"); debuglog("favorite-setups", `Saving setup ${setupId}`); setupContainer.classList.remove("editing"); const newSetup = setup; const title = setupContainer.querySelector(".label"); const titleInput = title.querySelector("input"); setup.name = titleInput.value; const powerTypeInput = setupContainer.querySelector(".power-type-input"); if (powerTypeInput) { const lastPowerType = setup.power_type; const newPowerType = powerTypeInput.getAttribute("data-power-type"); if (newPowerType && lastPowerType !== newPowerType) { setup.power_type = newPowerType; const powerTypeImage = setupContainer.querySelector(".campPage-trap-itemBrowser-item-powerType"); if (powerTypeImage) { const lastPowerTypeClass = lastPowerType ? getPowerTypeId(lastPowerType) : "hidden"; const newPowerTypeClass = newPowerType ? getPowerTypeId(newPowerType) : "hidden"; powerTypeImage.classList.remove(lastPowerTypeClass); powerTypeImage.classList.add(newPowerTypeClass); powerTypeImage.classList.remove("hidden"); } } } const images = setupContainer.querySelectorAll(".campPage-trap-itemBrowser-favorite-item"); images.forEach((image) => { const newItemId = image.getAttribute("data-new-item-id"); if (!newItemId) { return; } const itemType = image.getAttribute("data-item-type"); newSetup[`${itemType}_id`] = newItemId; image.removeAttribute("data-new-item-id"); image.removeAttribute("data-new-item-image"); image.removeAttribute("data-old-image-url"); }); let setups = getFavoriteSetups(); if (!setups.length) { setups = []; } const index = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === setupId); newSetup.id = Math.random().toString(36).slice(2, 15) + Math.random().toString(36).slice(2, 15); setups[index] = newSetup; saveSetting("favorite-setups.setups", setups); title.textContent = newSetup.name; titleInput.remove(); updateFavoriteSetupName(); } })); buttonWrapper.append(makeButton2({ text: "Cancel", className: ["cancel-setup"], callback: () => { setupContainer.classList.remove("editing"); const titleInput = setupContainer.querySelector(".label input"); const title = setupContainer.querySelector(".label"); title.textContent = setup.name; titleInput.remove(); const images = setupContainer.querySelectorAll(".campPage-trap-itemBrowser-favorite-item"); images.forEach((image) => { const newItemId = image.getAttribute("data-new-item-id"); if (!newItemId) { return; } const imageDisplay = image.querySelector(".campPage-trap-itemBrowser-favorite-item-image"); imageDisplay.style.backgroundImage = image.getAttribute("data-old-image-url"); image.removeAttribute("data-new-item-id"); image.removeAttribute("data-new-item-image"); image.removeAttribute("data-old-image-url"); }); } })); buttonWrapper.append(makeButton2({ text: "Delete", className: ["delete", "danger"], callback: () => { const setupId = setupContainer.getAttribute("data-setup-id"); debuglog("favorite-setups", `Deleting setup ${setupId}`); const confirmed = confirm("Are you sure you want to delete this setup?"); if (!confirmed) { return; } let setups = getFavoriteSetups(); if (!setups.length) { setups = []; } const index = setups.findIndex((s) => (s == null ? void 0 : s.id) && s.id === setupId); setups.splice(index, 1); saveSetting("favorite-setups.setups", setups); setupContainer.remove(); } })); } controls.append(buttonWrapper); setupContainer.append(controls); let cachedThumbnails = sessionGet("favorite-setups-thumbnails", {}); const needThumbnails = []; const items2 = [ (setup == null ? void 0 : setup.bait_id) || 0, (setup == null ? void 0 : setup.base_id) || 0, (setup == null ? void 0 : setup.weapon_id) || 0, (setup == null ? void 0 : setup.trinket_id) || 0 ]; for (const item of items2) { if (!cachedThumbnails[item]) { needThumbnails.push(item); } } if (needThumbnails.length) { const grabbedThumbnailsReq = yield fetch("https://images.mouse.rip", { method: "POST", headers: getHeaders(), body: JSON.stringify(needThumbnails) }); const grabbedThumbnails = yield grabbedThumbnailsReq.json(); const thumbnails = __spreadValues(__spreadValues({}, cachedThumbnails), grabbedThumbnails); sessionSet("favorite-setups-thumbnails", thumbnails); cachedThumbnails = thumbnails; } const powerTypeId = getPowerTypeId(setup == null ? void 0 : setup.power_type); const powertype = makeElement("div", ["campPage-trap-itemBrowser-item-powerType", powerTypeId]); if (!powerTypeId) { powertype.classList.add("hidden"); } setupContainer.append(powertype); setupContainer.append(makeImage("bait", setup.bait_id, cachedThumbnails[setup.bait_id])); setupContainer.append(makeImage("base", setup.base_id, cachedThumbnails[setup.base_id])); setupContainer.append(makeImage("weapon", setup.weapon_id, cachedThumbnails[setup.weapon_id])); setupContainer.append(makeImage("trinket", setup.trinket_id, cachedThumbnails[setup.trinket_id])); return setupContainer; }); makeBlueprintContainer = () => __async(void 0, null, function* () { const existing = document.querySelector(".mh-improved-favorite-setups-blueprint-container"); if (existing) { existing.remove(); } const container = makeElement("div", "mh-improved-favorite-setups-blueprint-container"); const header = makeElement("div", ["header"]); makeElement("b", ["title"], "Favorite Setups", header); container.append(header); const body = makeElement("div", ["content"]); const currentSetupRow = yield makeBlueprintRow(getCurrentSetup(), true); currentSetupRow.classList.add("current-setup"); body.append(currentSetupRow); const setups = getFavoriteSetups(); if (setups.length) { const locationFavorites = []; for (const setup of setups) { if (!setup || !setup.id) { continue; } if (setup.location && setup.location === getCurrentLocation()) { locationFavorites.push(setup); } } if (locationFavorites.length) { const locationWrapper = makeElement("div", ["location-favorites"]); for (const setup of locationFavorites) { if (!setup || !setup.id) { continue; } const setupContainer = yield makeBlueprintRow(setup); setupContainer.setAttribute("data-setup-id", setup.id); setupContainer.classList.add("location-favorite"); locationWrapper.append(setupContainer); } body.append(locationWrapper); } for (const setup of setups) { if (!setup || !setup.id) { continue; } const setupContainer = yield makeBlueprintRow(setup); setupContainer.setAttribute("data-setup-id", setup.id); body.append(setupContainer); } } container.append(body); return container; }); getNameOfCurrentSetup = () => { const setups = getFavoriteSetups(); if (!setups.length) { return ""; } const currentSetup = getCurrentSetup(); const setup = setups.find((s) => { return (s == null ? void 0 : s.bait_id) === (currentSetup == null ? void 0 : currentSetup.bait_id) && (s == null ? void 0 : s.base_id) === (currentSetup == null ? void 0 : currentSetup.base_id) && (s == null ? void 0 : s.weapon_id) === (currentSetup == null ? void 0 : currentSetup.weapon_id) && (s == null ? void 0 : s.trinket_id) === (currentSetup == null ? void 0 : currentSetup.trinket_id); }); if (setup && setup.name) { return setup.name; } return ""; }; updateFavoriteSetupName = () => { const label = document.querySelector(".mh-improved-favorite-setups-button-label"); if (!label) { return; } label.innerHTML = getNameOfCurrentSetup() || ""; }; addFavoriteSetupsButton = () => { if ("camp" !== getCurrentPage()) { return; } const existingButton = document.querySelector(".mh-improved-favorite-setups-button"); if (existingButton) { return; } const appendTo = document.querySelector(".trapSelectorView__trapStatSummaryContainer"); if (!appendTo) { return; } const button = makeElement("a", ["mh-improved-favorite-setups-button"]); makeElement("div", ["mh-improved-favorite-setups-button-text"], "Favorite Setups", button); const label = makeElement("div", ["mh-improved-favorite-setups-button-label"]); label.innerHTML = getNameOfCurrentSetup(); button.append(label); button.addEventListener("click", toggleFavoriteSetups); appendTo.append(button); }; toggleFavoriteSetups = () => __async(void 0, null, function* () { const content = yield makeBlueprintContainer(); toggleBlueprint("favorite-setups", content); }); addIcon = () => { addIconToMenu({ id: "favorite-setups", classname: "mousehunt-improved-favorite-setups-icon", title: "Favorite Setups", action: toggleFavoriteSetups, position: "prepend" }); }; init28 = () => __async(void 0, null, function* () { addStyles(styles_default31, "favorite-setups"); addFavoriteSetupsButton(); onNavigation(addFavoriteSetupsButton, { page: "camp" }); let timeoutId; onEvent("camp_page_arm_item", () => { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(updateFavoriteSetupName, 500); }); if (getSetting("experiments.favorite-setups-toggle", false)) { addIcon(); } onEvent("mh-improved-toggle-favorite-setups", toggleFavoriteSetups); }); favorite_setups_default2 = { id: "favorite-setups", name: "Favorite Setups", type: "feature", default: false, description: "Save your favorite setups and arm them with a single click.", order: 100, load: init28 }; } }); // src/modules/feature-flags/modules/rank-up-forecaster.js var exportRankupForecasterData, exportRankupForecasterDataAsCsv, importRankupForecassterData, addRankupForecasterButtons, rank_up_forecaster_default; var init_rank_up_forecaster = __esm({ "src/modules/feature-flags/modules/rank-up-forecaster.js"() { init_utils2(); exportRankupForecasterData = () => { const allArea = localStorage.getItem("Chro-forecaster-all-area"); const currentArea = localStorage.getItem("Chro-forecaster-current-area"); const time = localStorage.getItem("Chro-forecaster-time"); const data = { allArea, currentArea, time }; const dataStr = JSON.stringify(data); const base64 = btoa(dataStr); const link = document.createElement("a"); const date = /* @__PURE__ */ new Date(); const dateString = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; link.download = `rank-up-forecaster-${dateString}.json`; link.href = `data:application/json;base64,${base64}`; link.click(); }; exportRankupForecasterDataAsCsv = () => { const time = localStorage.getItem("Chro-forecaster-time"); const data = JSON.parse(time); const csv = ["Time,Wisdom"]; data.forEach((row) => { const date2 = new Date(row[0]); csv.push(`"${date2.toLocaleString()}",${row[1]}`); }); const csvStr = csv.join("\n"); const link = document.createElement("a"); const date = /* @__PURE__ */ new Date(); const dateString = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; link.download = `rank-up-forecaster-${dateString}.csv`; link.href = `data:text/csv;charset=utf-8,${csvStr}`; link.click(); }; importRankupForecassterData = () => { const input = document.createElement("input"); input.type = "file"; input.accept = ".json"; input.addEventListener("change", (e) => { const file = e.target.files[0]; if (!file) { return; } const reader = new FileReader(); reader.onload = (re) => { const contents = re.target.result; const data = JSON.parse(contents); localStorage.setItem("Chro-forecaster-all-area", data.allArea); localStorage.setItem("Chro-forecaster-current-area", data.currentArea); localStorage.setItem("Chro-forecaster-time", data.time); }; reader.readAsText(file); }); input.click(); const points = document.querySelector(".mousehuntHud-userStat-row.points"); if (points) { points.click(); } }; addRankupForecasterButtons = () => { const forecastOpen = document.querySelector(".mousehuntHud-userStat-row.points"); if (!forecastOpen) { return; } forecastOpen.addEventListener("click", () => { setTimeout(() => { const rankup = document.querySelector("#forecaster-content-div"); if (!rankup) { return; } const existing = document.querySelector(".mh-ui-forecaster-buttons"); if (existing) { return; } const wrapper = makeElement("div", "mh-ui-forecaster-buttons"); const exportButton = makeElement("button", "mh-ui-export-forecaster-data", "Export Data"); exportButton.addEventListener("click", exportRankupForecasterData); wrapper.append(exportButton); const importButton = makeElement("button", "mh-ui-import-forecaster-data", "Import Data"); importButton.addEventListener("click", importRankupForecassterData); wrapper.append(importButton); const exportCsvButton = makeElement("button", "mh-ui-export-forecaster-csv", "Export as CSV"); exportCsvButton.addEventListener("click", exportRankupForecasterDataAsCsv); wrapper.append(exportCsvButton); rankup.append(wrapper); }, 250); }); }; rank_up_forecaster_default = () => __async(void 0, null, function* () { addStyles(`.mh-ui-forecaster-buttons { display: flex; flex-wrap: wrap; gap: 5px; justify-content: space-around; max-width: 180px; margin-top: 10px; }`, "rank-up-forecaster"); addRankupForecasterButtons(); }); } }); // src/modules/feature-flags/modules/social.js var social_default; var init_social = __esm({ "src/modules/feature-flags/modules/social.js"() { social_default = () => { window.twttr = { widgets: { load: () => { }, createShareButton: () => { } } }; class SocialLink { constructor(url) { this.url = url; } appendTo() { } setFacebookLikeUrl() { } setFacebookShareUrl() { } setImage() { } setTitle() { } setTwitterUrl() { } } hg.classes.SocialLink = SocialLink; }; } }); // src/modules/feature-flags/settings/index.js var settings_default23; var init_settings24 = __esm({ "src/modules/feature-flags/settings/index.js"() { settings_default23 = () => __async(void 0, null, function* () { return [{ id: "override-flags", title: "Feature Flags", default: "", description: 'Comma separated list of <a href="https://github.com/MHCommunity/mousehunt-improved/blob/c0bec5ea0f0b5f34b179507891e294559e39f34d/docs/feature-flags.md" target="_blank" rel="noopener noreferrer">feature flags</a> to enable.', settings: { type: "input" } }]; }); } }); // src/modules/feature-flags/index.js var init29, feature_flags_default; var init_feature_flags = __esm({ "src/modules/feature-flags/index.js"() { init_utils2(); init_rank_up_forecaster(); init_social(); init_settings24(); init29 = () => __async(void 0, null, function* () { if (getFlag("social-noop") || getFlag("twitter")) { social_default(); } if (!getFlag("rankup-forecaster")) { rank_up_forecaster_default(); } }); feature_flags_default = { id: "feature-flags", type: "advanced", alwaysLoad: true, load: init29, settings: settings_default23, order: 200 }; } }); // src/modules/fixes/fixes/item-page.js var fixItemPage, fixItemPageReceiver, item_page_default; var init_item_page = __esm({ "src/modules/fixes/fixes/item-page.js"() { init_utils2(); fixItemPage = () => { if ("item" !== getCurrentPage()) { return; } const currentType = document.querySelector(".itemViewContainer"); if (!currentType) { return; } const classes = currentType.classList.toString(); const type = classes.replace("itemViewContainer ", "").split(" "); if (!type || !type[0]) { return; } if (type.includes("message_item")) { return; } const link = document.querySelector(`.itemView-header-classification-link.${type[0]} a`); if (!link) { return; } const onclick = link.getAttribute("onclick"); if (!onclick) { return; } const page = onclick.match(/setPage\('(.+?)'.+tab:'(.+)'/); if (!page) { return; } const pageTitle = page[1]; let tab = page[2]; let subtab = null; if ("skin" === tab || "trinket" === tab) { subtab = tab; tab = "traps"; } let url = `https://www.mousehuntgame.com/${pageTitle.toLowerCase()}.php?tab=${tab}`; if (subtab) { url += `&sub_tab=${subtab}`; } const itemType = currentType.getAttribute("data-item-type"); url += `&viewing-item-id=${itemType}`; window.location = url; }; fixItemPageReceiver = () => { const itemId = window.location.href.match(/viewing-item-id=(.+)/); if (!itemId || !itemId[1]) { return; } hg.views.ItemView.show(itemId[1]); }; item_page_default = () => __async(void 0, null, function* () { if ("item" === getCurrentPage()) { fixItemPage(); } onNavigation(fixItemPage, { page: "item", onLoad: true }); onNavigation(fixItemPageReceiver, { page: "inventory", onLoad: true }); }); } }); // src/modules/fixes/fixes/marketplace-buy-button.js var fixMpBuyButton, marketplace_buy_button_default; var init_marketplace_buy_button = __esm({ "src/modules/fixes/fixes/marketplace-buy-button.js"() { fixMpBuyButton = () => { hg.views.MarketplaceView.setOrderPrice = (price) => { const input = document.querySelector(".marketplaceView-item-unitPriceWithTariff"); if (input) { input.value = price; hg.views.MarketplaceView.blurInput(input); } }; }; marketplace_buy_button_default = () => __async(void 0, null, function* () { fixMpBuyButton(); }); } }); // src/modules/fixes/fixes/passing-parcel.js var fixPassingParcel, passing_parcel_default; var init_passing_parcel = __esm({ "src/modules/fixes/fixes/passing-parcel.js"() { init_utils2(); fixPassingParcel = () => { const passingParcel = document.querySelector('.inventoryPage-item[data-item-type="passing_parcel_message_item"]'); if (!passingParcel) { return; } const quantity = passingParcel.querySelector(".quantity"); if (!quantity) { return; } const newMarkup = `<div class="inventoryPage-item full convertible " onclick="app.pages.InventoryPage.useItem(this); return false;" data-item-id="1281" data-item-type="passing_parcel_message_item" data-item-classification="convertible" data-name="Passing Parcel" data-display-order="0"> <div class="inventoryPage-item-margin clear-block"> <div class="inventoryPage-item-name"> <a href="#" class="" onclick="hg.views.ItemView.show('passing_parcel_message_item'); return false;"> <abbr title="Passing Parcel">Passing Parcel (collectible)</abbr> </a> </div> <a href="#" class="inventoryPage-item-larryLexicon" onclick="hg.views.ItemView.show('passing_parcel_message_item'); return false;">?</a> <div class="inventoryPage-item-imageContainer"> <div class="itemImage"><a href="#" class="" onclick="hg.views.ItemView.show('passing_parcel_message_item'); return false;"> <img src="https://www.mousehuntgame.com/images/items/message_items/5591e5c34f081715aaca4e95e97a3379.jpg?cv=2"></a> <div class="quantity">${quantity.innerText}</div> </div> </div> <div class="inventoryPage-item-contentContainer"> <div class="inventoryPage-item-content-description"> <div class="inventoryPage-item-content-description-text"> This parcel is meant to be passed along to a friend! If a friend sends one to you, tear away a layer and see if there's something inside! </div> <div class="inventoryPage-item-content-action"> <input type="button" id="passing-parcel-action" class="inventoryPage-item-button button" value="Pass Along"> </div> </div> </div> </div>`; passingParcel.outerHTML = newMarkup; const passingParcelAction = document.querySelector("#passing-parcel-action"); passingParcelAction.addEventListener("click", () => { window.location.href = "https://www.mousehuntgame.com/supplytransfer.php?item_type=passing_parcel_message_item"; }); }; passing_parcel_default = () => __async(void 0, null, function* () { onNavigation(fixPassingParcel, { page: "inventory", tab: "special", onLoad: true }); }); } }); // src/modules/fixes/fixes/rift-tooltip-quantities.js var fixRiftTooltipQuantities, rift_tooltip_quantities_default; var init_rift_tooltip_quantities = __esm({ "src/modules/fixes/fixes/rift-tooltip-quantities.js"() { init_utils2(); fixRiftTooltipQuantities = () => __async(void 0, null, function* () { var _a, _b; if ("rift_gnawnia" !== getCurrentLocation()) { return; } const cheeseQtys = yield getUserItems(["gnawnia_boss_cheese", "riftiago_cheese"]); if (!cheeseQtys || !cheeseQtys.length) { return; } const craft = document.querySelector(".riftGnawniaHud-craftingBait .riftGnawniaHud-tooltip-quantity"); if (craft) { craft.textContent = ((_a = cheeseQtys[0]) == null ? void 0 : _a.quantity) || 0; } const potion = document.querySelector(".riftGnawniaHud-potion .riftGnawniaHud-tooltip-quantity"); if (potion) { craft.textContent = ((_b = cheeseQtys[1]) == null ? void 0 : _b.quantity) || 0; } }); rift_tooltip_quantities_default = () => __async(void 0, null, function* () { fixRiftTooltipQuantities(); onTravel("rift_gnawnia", { callback: fixRiftTooltipQuantities }); }); } }); // src/modules/fixes/styles/backgrounds.css var backgrounds_default2; var init_backgrounds2 = __esm({ "src/modules/fixes/styles/backgrounds.css"() { backgrounds_default2 = "@media only screen and (max-width: 1000px){body.halloween .pageFrameView-column.left,body.halloween .pageFrameView-column.right{background-color:#e87e33!important;background-repeat:no-repeat!important;background-position:0 0!important}body.halloween .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/halloween/left.png?asset_cache_version=2)!important;background-position-x:100%!important}body.halloween .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/halloween/right.png?asset_cache_version=2)!important}body.lunar_new_year .pageFrameView-column.left,body.lunar_new_year .pageFrameView-column.right{background-color:#7f051b!important;background-repeat:no-repeat!important;background-position:0 0!important}body.lunar_new_year .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/lunar_new_year/left.png?asset_cache_version=2)!important;background-position-x:100%!important}body.lunar_new_year .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/lunar_new_year/right.png?asset_cache_version=2)!important}body.great_winter_hunt .pageFrameView-column.left,body.great_winter_hunt .pageFrameView-column.right{background-color:#bad4ed!important}body.great_winter_hunt .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/great_winter_hunt/left.jpg?asset_cache_version=2)!important}body.great_winter_hunt .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/great_winter_hunt/right.jpg?asset_cache_version=2)!important}body.birthday .pageFrameView-column.left,body.birthday .pageFrameView-column.right{background-color:#bad4ed!important;background-repeat:no-repeat!important;background-position:0 0!important}body.birthday .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/birthday/left.png?asset_cache_version=2)!important;background-position-x:100%!important}body.birthday .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/birthday/right.png?asset_cache_version=2)!important}body.valentines .pageFrameView-column.left,body.valentines .pageFrameView-column.right{background-color:#f69798!important}body.valentines .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/valentines/left.png?asset_cache_version=2)!important}body.valentines .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/valentines/right.png?asset_cache_version=2)!important}body.spring_hunt .pageFrameView-column.left,body.spring_hunt .pageFrameView-column.right{background-color:#86ce5c!important;background-repeat:no-repeat!important}body.spring_hunt .pageFrameView-column.left{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/spring_hunt/left.png?asset_cache_version=2)!important}body.spring_hunt .pageFrameView-column.right{background-image:url(https://www.mousehuntgame.com/images/ui/backgrounds/events/spring_hunt/right.png?asset_cache_version=2)!important}}\n"; } }); // src/modules/fixes/styles/claim-gift.css var claim_gift_default; var init_claim_gift = __esm({ "src/modules/fixes/styles/claim-gift.css"() { claim_gift_default = ".claimGiftPage__giftQuantity{background:#fff777;border:1px solid #b5814e}\n"; } }); // src/modules/fixes/styles/colors.css var colors_default2; var init_colors2 = __esm({ "src/modules/fixes/styles/colors.css"() { colors_default2 = ".halloweenBoilingCauldronRecipeView-cauldronTooltip{background:#333aaa}.eggSweeper-control-boundingBox:hover{box-shadow:5px 5px 10px #fff82f inset}.greatWinterHuntRewardTrackView__claimButton{text-shadow:1px 1px 1px #fff777}.forewordFarmPlotView-plot-help{box-shadow:2px 3px 3px 1px #333666}.floatingIslandsHUD.unlockedSkyPalace .floatingIslandsHUD-overlay{background:linear-gradient(to right,#000999,transparent)}.tableOfContentsProgressView-claimButton.busy:after,.folkloreForestRegionView-button.busy:after{background:#000888 url(https://www.mousehuntgame.com/images/ui/loaders/round_bar_green.gif?asset_cache_version=2) 50% 50% no-repeat}.halloweenBoilingCauldronHUD-dialog-reward.complete:after{box-shadow:5px 5px 5px #000888}.folkloreForestRegionView-dialogContainer{box-shadow:10px 10px 4px 1px #000333 inset}.folkloreForestRegionView-boost{box-shadow:2px 2px 2px #333111}.MHCheckout-featuredItemTransparent.small .MHCheckout-featuredItemTransparent-backlight{background:linear-gradient(-45deg,#fff,#fffaaa)}.MHCheckout-relicHunterGrouped{background:#fff555}.MHCheckout-splash.halloween_skins .MHCheckout-link{background:#000999}.MHCheckout-splash.lunar_new_year_2023 .MHCheckout-featuredItem-actions{border:1px solid #ff351f}.tableOfContentsProgressView-reward-quantity{background:#fffaaa}.MHCheckoutDialogView-overlay{background:#fffa8a}.eggSweeper-viewAllRewardsButton:hover{background-color:#228b22}\n"; } }); // src/modules/fixes/styles/convertibles.css var convertibles_default; var init_convertibles = __esm({ "src/modules/fixes/styles/convertibles.css"() { convertibles_default = ".itemView-action-convertForm{display:flex;align-items:center}.itemView-action-convert-quantity{top:0}\n"; } }); // src/modules/fixes/styles/dropdown.css var dropdown_default; var init_dropdown = __esm({ "src/modules/fixes/styles/dropdown.css"() { dropdown_default = ".mousehuntHeaderView .menuItem.dropdown .arrow{top:10px;transform:rotate(180deg)}.mousehuntHeaderView .menuItem.dropdown.expanded .arrow{top:5px}.dropdownContent{color:#000}.mousehuntHeaderView .support .dropdownContent{right:-.5px;border-top:1px solid #ccc}\n"; } }); // src/modules/fixes/styles/fb-img-size.css var fb_img_size_default; var init_fb_img_size = __esm({ "src/modules/fixes/styles/fb-img-size.css"() { fb_img_size_default = 'img[src*="https://graph.facebook.com"].treasureMapView-hunter-image{width:44px;height:44px}.treasureMapView-environment-hunters img[src*="https://graph.facebook.com"].treasureMapView-hunter-image{width:20px;height:20px}\n'; } }); // src/modules/fixes/styles/font-sizes.css var font_sizes_default; var init_font_sizes = __esm({ "src/modules/fixes/styles/font-sizes.css"() { font_sizes_default = ".riftWhiskerWoodsHUD-zone-rageLevel{font-size:14px}.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity{font-size:9px}\n"; } }); // src/modules/fixes/styles/footer.css var footer_default2; var init_footer2 = __esm({ "src/modules/fixes/styles/footer.css"() { footer_default2 = ".pageFrameView-column.left,.pageFrameView-column.right{margin-bottom:-140px}\n"; } }); // src/modules/fixes/styles/hud-shadow.css var hud_shadow_default; var init_hud_shadow = __esm({ "src/modules/fixes/styles/hud-shadow.css"() { hud_shadow_default = ".mousehuntHud-marbleDrawer{background:url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif?asset_cache_version=2) -46px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif?asset_cache_version=2) 731px 0 no-repeat,url(https://i.mouse.rip/mh-improved/marble-shadow.png) 6px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/backgrounds/hud_bg_blue_repeating.png?asset_cache_version=2) repeat-y top center}\n"; } }); // src/modules/fixes/styles/hunter-title.css var hunter_title_default; var init_hunter_title = __esm({ "src/modules/fixes/styles/hunter-title.css"() { hunter_title_default = ".hunterTitle .titles .title:nth-child(17) .description ul li:last-child,.hunterTitle .titles .title:nth-child(18) .description ul li:last-child,.hunterTitle .titles .title:nth-child(19) .description ul li:last-child{display:none}.hunterTitle .titles .userLevel .description{border-color:#957432}\n"; } }); // src/modules/fixes/styles/labyrinth.css var labyrinth_default2; var init_labyrinth2 = __esm({ "src/modules/fixes/styles/labyrinth.css"() { labyrinth_default2 = ".labyrinthHUD.exit.secret{background-position-y:-184px}\n"; } }); // src/modules/fixes/styles/location-names-overflow.css var location_names_overflow_default; var init_location_names_overflow = __esm({ "src/modules/fixes/styles/location-names-overflow.css"() { location_names_overflow_default = ".mh-location-ss_huntington_ii .mousehuntHud-environmentName,.mh-location-pinnacle_chamber .mousehuntHud-environmentName,.mh-location-great_gnarled_tree .mousehuntHud-environmentName,.mh-location-rift_bristle_woods .mousehuntHud-environmentName{position:absolute;top:-5px;left:0;padding:4px 13px 3px 0;margin-top:32px;overflow:visible;background:linear-gradient(1deg,#d8c8a0 1%,#ddcfaa 61%,#efe3ce);border-top-right-radius:75px}\n"; } }); // src/modules/fixes/styles/maps.css var maps_default2; var init_maps3 = __esm({ "src/modules/fixes/styles/maps.css"() { maps_default2 = '.treasureMapView-hunter.empty .treasureMapView-hunter-miceCaught{display:none}input.treasureMapView-shareLinkInput{width:95%;margin:0 auto}.treasureMapInviteSettingsView-listing-visibility.active:before{content:"\\2713"}\n'; } }); // src/modules/fixes/styles/menu.css var menu_default; var init_menu = __esm({ "src/modules/fixes/styles/menu.css"() { menu_default = "body .mousehuntHud-menu .friends .team .icon{background-image:url(https://www.mousehuntgame.com/images/ui/hud/menu/team.png?asset_cache_version=2)}body .mousehuntHud-menu .scoreboards .icon{background-image:url(https://www.mousehuntgame.com/images/ui/hud/menu/scoreboard.png?asset_cache_version=2)}body .mousehuntHud-menu .forum .icon{background-image:url(https://www.mousehuntgame.com/images/ui/hud/menu/forum.png?asset_cache_version=2)}\n"; } }); // src/modules/fixes/styles/other.css var other_default2; var init_other2 = __esm({ "src/modules/fixes/styles/other.css"() { other_default2 = ".mousehuntHud-shield.larrys_football_challenge.golden{background-image:url(https://www.mousehuntgame.com/images/ui/elements/header_world_cup_golden_shield.png?asset_cache_version=2)}.itemView-loading{border-top-right-radius:20px}\n"; } }); // src/modules/fixes/styles/preferences.css var preferences_default; var init_preferences = __esm({ "src/modules/fixes/styles/preferences.css"() { preferences_default = ".PreferencesPage__dialogForm .PreferencesPage__formLabel{flex:1}.PreferencesPage__dialogForm .PreferencesPage__formInput{flex:1.8}.PreferencesPage__dialogForm form{padding-left:18px}.accountVerificationRewardsView__step.can_claim{background-image:none}\n"; } }); // src/modules/fixes/styles/ronza.css var ronza_default; var init_ronza = __esm({ "src/modules/fixes/styles/ronza.css"() { ronza_default = "span.chromeBitImage,span.voucherImage{vertical-align:middle}\n"; } }); // src/modules/fixes/styles/scoreboard.css var scoreboard_default; var init_scoreboard = __esm({ "src/modules/fixes/styles/scoreboard.css"() { scoreboard_default = ".scoreboardTableView-friends,.scoreboardTableView-weekly{margin-top:1px;vertical-align:middle}\n"; } }); // src/modules/fixes/styles/tabs.css var tabs_default2; var init_tabs2 = __esm({ "src/modules/fixes/styles/tabs.css"() { tabs_default2 = "a.mousehuntHud-page-tabHeader.collectibles span{overflow:visible!important;font-size:13px;text-overflow:unset!important;white-space:normal!important}#messengerUINotification .tabs a:hover .arrow{border-color:transparent transparent transparent #eee}.mousehuntHud-page-tabHeader-container{margin-bottom:-1px}.mousehuntHud-page-tabHeader.active span{background-color:#fff;border-bottom:1px solid #fff}.mousehuntHud-page-tabHeader{height:29px}.mousehuntHud-page-tabHeader span{height:16px;margin-top:4px}.mousehuntHud-page-tabHeader.active span,.mousehuntHud-page-tabHeader:hover span{padding-bottom:7px;margin-top:0;border-bottom:none}\n"; } }); // src/modules/fixes/styles/tem.css var tem_default; var init_tem = __esm({ "src/modules/fixes/styles/tem.css"() { tem_default = ".pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer:hover{background-color:#fdfaf2}body .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer{padding-left:10px;margin:5px 0}\n"; } }); // src/modules/fixes/styles/tooltips.css var tooltips_default; var init_tooltips = __esm({ "src/modules/fixes/styles/tooltips.css"() { tooltips_default = ".mousehuntTooltip.top .mousehuntTooltip-arrow:after{top:-16px;left:-13px;border-width:13px}.mousehuntTooltip.left .mousehuntTooltip-arrow:after{right:-10px;bottom:-13px;border-width:13px}.mousehuntTooltip.right .mousehuntTooltip-arrow:after{bottom:-13px;left:-10px;border-width:13px}.mousehuntTooltip.bottom .mousehuntTooltip-arrow:after{bottom:-16px;left:-13px;border-width:13px}\n"; } }); // src/modules/fixes/styles/tutorial-overlay.css var tutorial_overlay_default; var init_tutorial_overlay = __esm({ "src/modules/fixes/styles/tutorial-overlay.css"() { tutorial_overlay_default = '#overlayBg.larryOffice{width:100%;height:100%;background:transparent}#overlayBg.larryOffice:after{position:fixed;top:0;right:0;left:0;height:100vh;content:"";background-color:#505050e5}\n'; } }); // src/modules/fixes/index.js var imported5, styles5, init30, fixes_default; var init_fixes = __esm({ "src/modules/fixes/index.js"() { init_utils2(); init_item_page(); init_marketplace_buy_button(); init_passing_parcel(); init_rift_tooltip_quantities(); init_backgrounds2(); init_claim_gift(); init_colors2(); init_convertibles(); init_dropdown(); init_fb_img_size(); init_font_sizes(); init_footer2(); init_hud_shadow(); init_hunter_title(); init_labyrinth2(); init_location_names_overflow(); init_maps3(); init_menu(); init_other2(); init_preferences(); init_ronza(); init_scoreboard(); init_tabs2(); init_tem(); init_tooltips(); init_tutorial_overlay(); imported5 = [backgrounds_default2, claim_gift_default, colors_default2, convertibles_default, dropdown_default, fb_img_size_default, font_sizes_default, footer_default2, hud_shadow_default, hunter_title_default, labyrinth_default2, location_names_overflow_default, maps_default2, menu_default, other_default2, preferences_default, ronza_default, scoreboard_default, tabs_default2, tem_default, tooltips_default, tutorial_overlay_default]; styles5 = imported5; init30 = () => __async(void 0, null, function* () { addStyles(styles5, "fixes"); item_page_default(); marketplace_buy_button_default(); passing_parcel_default(); rift_tooltip_quantities_default(); }); fixes_default = { id: "fixes", name: "Fixes", type: "feature", description: "Fixes various bugs and issues in the game.", default: true, load: init30 }; } }); // src/modules/flrt-helper/styles.css var styles_default32; var init_styles33 = __esm({ "src/modules/flrt-helper/styles.css"() { styles_default32 = '.mh-improved-flrt-helper-popup{display:grid;grid-template-columns:1fr 1fr;justify-items:center}.mh-improved-flrt-helper-popup .flrt-search-form{display:flex;align-items:center;justify-content:space-around;padding:10px;background-color:#dcf7ff;border:1px solid #a1a1a1;border-radius:5px;box-shadow:0 1px 2px -1px #b5b5b5}.mh-improved-flrt-helper-popup .flrt-friend-finder{display:flex;flex-direction:column}.mh-improved-flrt-helper-popup .friendsPage-friendRow.friendsPage-requestRow{border-radius:5px;box-shadow:1px 1px 4px #cdb495}.mh-improved-flrt-helper-popup .friendsPage-friendRow-imageContainer{width:75px;height:75px;margin-left:3px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-content{max-width:226px;min-height:75px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-titleBar-icon{top:-10px;left:0;height:35px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-titleBar-name{padding-left:15px;font-size:14px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-titleBar{padding-left:20px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-titleBar-titleDetail{left:7px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-environment{position:relative;margin-left:-10px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-environment-icon{position:absolute;top:-5px;left:0;width:20px;height:20px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-environment-name{position:absolute;left:25px;font-size:10px;vertical-align:top}.mh-improved-flrt-helper-popup .friendsPage-friendRow .friendsPage-friendRow-actions{top:40px;right:0}.mh-improved-flrt-helper-popup .friendsPage-friendRow-actions-interactionButtons{padding-right:0}.mh-improved-flrt-helper-popup .friendsPage-friendRow-actions .mousehuntTooltip,.mh-improved-flrt-helper-popup .friendsPage-requestRow-actionStatus.accepted,.mh-improved-flrt-helper-popup .userInteractionButtonsView-action[data-action=send_daily_gift],.mh-improved-flrt-helper-popup .userInteractionButtonsView-action[data-action=send_draw_ballot]{display:none!important}.mh-improved-flrt-helper-popup .userInteractionButtonsView-button{width:45px;height:45px;background-size:45px}.mh-improved-flrt-helper-popup .friendsPage-friendRow-statsContainer{border-radius:0}.mh-improved-flrt-helper-popup .friendsPage-friendRow-stat.map,.mh-improved-flrt-helper-popup .friendsPage-friendRow-stat.team,.mh-improved-flrt-helper-popup .friendsPage-friendRow-stat-label{display:none!important}.mh-improved-flrt-helper-popup .friendsPage-friendRow-stat.online span{width:auto}.mh-improved-flrt-helper-popup .friendsPage-friendRow-stat{width:auto;margin-right:10px}.mh-improved-flrt-helper-popup .instructions{padding:10px;margin-top:auto;font-style:italic}.mh-improved-flrt-helper-popup .flrt-items-to-send{min-width:80%}.mh-improved-flrt-helper-popup .flrt-item{display:flex;flex-direction:row;align-items:center;width:100%;padding:5px;margin-bottom:5px;cursor:pointer;background-color:#eee;border:1px solid #ddd;border-radius:5px;box-shadow:0 1px 2px -1px #b5b5b5}.mh-improved-flrt-helper-popup .flrt-item .itemImage,.mh-improved-flrt-helper-popup .flrt-item .itemImage img{width:45px;height:45px}.mh-improved-flrt-helper-popup .flrt-item-info{display:flex;align-items:center;margin-left:5px}.mh-improved-flrt-helper-popup .flrt-item-name{font-weight:900;vertical-align:top}.mh-improved-flrt-helper-popup .flrt-item-disabled .itemImage{filter:grayscale(1);opacity:.5}.mh-improved-flrt-helper-popup .flrt-item-info input[type=checkbox]:disabled{opacity:0}.mh-improved-flrt-helper-popup .flrt-item.flrt-item-sending{background-color:#f3c019}.mh-improved-flrt-helper-popup .flrt-item.flrt-item-sent{position:relative;background-color:#3fcd84}.mh-improved-flrt-helper-popup .flrt-item.flrt-item-sent:after{position:absolute;right:0;display:inline-block;width:25px;height:25px;margin-right:5px;margin-bottom:-2px;vertical-align:middle;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/events/winter_hunt_2013/checkmark.png?asset_cache_version=2);background-repeat:no-repeat;background-size:100%}\n'; } }); // src/modules/flrt-helper/index.js var addFlrtButtonToConvertible, sendItemsToMaptain, flrtPopup, init31, flrt_helper_default; var init_flrt_helper = __esm({ "src/modules/flrt-helper/index.js"() { init_utils2(); init_utils2(); init_styles33(); addFlrtButtonToConvertible = (response) => __async(void 0, null, function* () { if (!(response.convertible_open && response.convertible_open.name && response.convertible_open.items)) { return; } const items2 = []; const tradableItems = yield getData("type"); for (const element of response.convertible_open.items) { const itemData = { type: element.type, name: element.name, image: element.thumb, quantity: element.quantity }; if (tradableItems) { const tradable = tradableItems.find((tradableItem) => { return tradableItem.type === element.type; }); if (tradable) { items2.push(itemData); } } else { items2.push(itemData); } } const buttons = document.querySelector(".jsDialogContainer .suffix"); if (!buttons) { return; } const flrtBtn = makeElement("button", ["mousehuntActionButton", "small", "button"]); makeElement("span", [], "Return to Maptain", flrtBtn); flrtBtn.addEventListener("click", () => { flrtPopup(items2); }); buttons.prepend(flrtBtn); }); sendItemsToMaptain = (snuid, items2) => __async(void 0, null, function* () { for (const item of items2) { item.element.classList.add("flrt-item-sending"); yield doRequest("managers/ajax/users/supplytransfer.php", { item: item.type, item_quantity: item.quantity, receiver: snuid }); item.element.classList.remove("flrt-item-sending"); item.element.classList.add("flrt-item-sent"); } const sendButton = document.querySelector(".flrt-send-items"); if (sendButton) { sendButton.outerHTML = '<input type="submit" value="Continue" class="jsDialogClose button">'; } }); flrtPopup = (items2) => { const lastMaptain = getLastMaptain(); let itemContent = ""; items2.forEach((item) => { itemContent += `<div class="flrt-item" data-item-type="${item.type}" data-item-quantity="${item.quantity}"> <div class="itemImage"> <img src="${item.image}"> <div class="quantity">${item.quantity}</div> </div> <div class="flrt-item-info"> <input type="checkbox" checked data-item-type="${item.type}"> <span class="flrt-item-name">${item.name}</span> </div> </div>`; }); const popup = createPopup({ template: "ajax", title: "Send tradables to Maptain", content: `<div class="mh-improved-flrt-helper-popup"> <div class="flrt-friend-finder"> <form action="https://www.mousehuntgame.com/friends.php?tab=requests&sub_tab=community" method="post" class="flrt-search-form friends-page-id-search friendsPage-community-hunterIdForm" onsubmit="app.pages.FriendsPage.submitHunterIdForm(this); return false;"> <input type="number" value="${lastMaptain || ""}" name="user_id" maxlength="10" class="friendsPage-community-hunterIdForm-input"> <a class="mousehuntActionButton small search-for-hunter" href="#" onclick="app.pages.FriendsPage.triggerHunterForm(this); return false;"><span>Search</span></a> </form> <div class="friendsPage-community-hunterResult"></div> <div class="instructions"> Select the tradable items you want to send. </div> </div> <div class="flrt-items-to-send"> ${itemContent} </div> </div>` }); popup.addToken("{*prefix*}", '<h2 class="title">Send tradable items</h2>'); popup.addToken("{*suffix*}", '<div class="mousehuntActionButton flrt-send-items"><span>Send items to Maptain</span></div>'); popup.show(); const flrtItems = document.querySelectorAll(".flrt-item"); flrtItems.forEach((item) => { const checkbox = item.querySelector('input[type="checkbox"]'); const toggle = () => { checkbox.checked = !checkbox.checked; item.classList.toggle("flrt-item-disabled", !checkbox.checked); }; item.addEventListener("click", toggle); }); if (lastMaptain) { const search = document.querySelector(".search-for-hunter"); if (search) { app.pages.FriendsPage.triggerHunterForm(search); } } const sendBtn = document.querySelector(".flrt-send-items"); if (!sendBtn) { return; } sendBtn.addEventListener("click", () => { sendBtn.disabled = true; sendBtn.classList.add("disabled"); const id = document.querySelector(".friendsPage-community-hunterIdForm-input"); if (!id) { return; } const sendingItems = document.querySelectorAll(".flrt-item"); const itemsToSend = []; sendingItems.forEach((item) => { const checkbox = item.querySelector('input[type="checkbox"]'); if (!checkbox) { return; } if (checkbox.checked) { const itemData = { type: item.getAttribute("data-item-type"), quantity: Number.parseInt(item.getAttribute("data-item-quantity"), 10), element: item }; itemsToSend.push(itemData); } checkbox.disabled = true; }); const row = document.querySelector(".friendsPage-friendRow.friendsPage-requestRow"); if (!row) { return; } const snuid = row.getAttribute("data-snuid") || id.value; sendItemsToMaptain(snuid, itemsToSend); }); }; init31 = () => __async(void 0, null, function* () { addStyles(styles_default32, "flrt-helper"); onDialogShow("treasureMapPopup", cacheFinishedMap); onRequest("users/useconvertible.php", addFlrtButtonToConvertible); }); flrt_helper_default = { id: "flrt-helper", name: "FLRT Helper", type: "feature", default: false, description: 'When opening a chest from a map, adds a "Return to Maptain" button that will let you choose which tradable items to send directly to the Maptain.', load: init31 }; } }); // src/modules/global-styles/styles/animations.css var animations_default; var init_animations = __esm({ "src/modules/global-styles/styles/animations.css"() { animations_default = ".mh-ui-fade{opacity:0;transition:opacity .3s ease-in-out}.mh-ui-fade-in{opacity:1}.mh-ui-fade-out{opacity:0}@keyframes mh-improved-fade-slightly{0%{opacity:1}50%{opacity:.75}to{opacity:1}}@keyframes mh-improved-fade-in{0%{opacity:0}to{opacity:1}}@keyframes mh-improved-fade-out{0%{opacity:1}to{opacity:0}}@keyframes mh-improved-in-from-left{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translateZ(0)}}@keyframes mh-improved-in-from-top{0%{visibility:visible;transform:translate3d(0,-100%,0)}to{transform:translateZ(0)}}@keyframes mh-improved-in-scale{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes mh-improved-shake{0%{transform:rotate(0)}25%{transform:rotate(5deg)}50%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}to{transform:rotate(0)}}@keyframes mh-improved-shake-scaled{0%{transform:scale(1.2) rotate(0)}25%{transform:scale(1.2) rotate(5deg)}50%{transform:scale(1.2) rotate(-5deg)}75%{transform:scale(1.2) rotate(5deg)}to{transform:scale(1.2) rotate(0)}}@keyframes mh-improved-shake-light{0%{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}to{transform:rotate(0)}}@keyframes mh-improved-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes mh-improved-spin-flipped{0%{transform:scaleX(-1) rotate(0)}to{transform:scaleX(-1) rotate(360deg)}}@keyframes mh-improved-spin-large{0%{transform:scale(2) rotate(0)}to{transform:scale(2) rotate(360deg)}}@keyframes mh-improved-spin-large-flipped{0%{transform:scale(-2,2) rotate(0)}to{transform:scale(-2,2) rotate(360deg)}}@keyframes mh-improved-right-to-left{0%{right:100%}to{right:0}}@keyframes mh-improved-background-slide{0%{background-position:left}50%{background-position:right}to{background-position:left}}@keyframes mh-improved-bounce-and-stretch{0%{transform:scaleX(1) translate(-10px)}60%{transform:scaleX(1)}75%{transform:scaleX(.98)}90%{transform:scaleX(.999)}}@keyframes mh-improved-hue-rotate{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(360deg)}to{filter:hue-rotate(0deg)}}@keyframes mh-improved-hue-rotate-and-scale{0%{filter:hue-rotate(0deg);transform:scale(1)}50%{filter:hue-rotate(360deg);transform:scale(1.5)}to{filter:hue-rotate(0deg);transform:scale(1)}}@keyframes mh-improved-glow{0%{filter:brightness(1)}50%{filter:brightness(1.1)}to{filter:brightness(1)}}@keyframes mh-improved-dim{0%{filter:brightness(1)}50%{filter:brightness(.8)}to{filter:brightness(1)}}@keyframes mh-improved-scale-large{0%{transform:scale(1)}50%{transform:scale(2.7)}to{transform:scale(1)}}\n"; } }); // src/modules/global-styles/styles/buttons.css var buttons_default; var init_buttons = __esm({ "src/modules/global-styles/styles/buttons.css"() { buttons_default = '.sort-button{display:inline-block;width:0;height:0;margin-left:1px;cursor:pointer;content:"";border-top:9px solid #777;border-right:6px solid transparent;border-left:6px solid transparent}.sort-button.reverse{border-top:0;border-right:6px solid transparent;border-bottom:9px solid #777;border-left:6px solid transparent}.sort-button.unsorted{opacity:.5}.mousehuntActionButton.success:before{background-color:#00ff59;box-shadow:0 0 10px #beff99 inset}.mousehuntActionButton.success{background-color:#97f990}.mousehuntActionButton.success:hover:before,.mousehuntActionButton.success:focus:before{background-color:#00ff59}.mousehuntActionButton.danger:before{background-color:#f27b6a;box-shadow:0 0 10px #ffa5a5 inset}.mousehuntActionButton.danger{background-color:#ffa5a5}.mousehuntActionButton.danger:hover:before,.mousehuntActionButton.danger:focus:before{background-color:#ffa5a5}.mousehuntActionButton:hover:before{pointer-events:none}.mousehuntActionButton.gray{background-color:#e5e5e5;border:1px solid #8e8e8e;box-shadow:1px 1px 1px #eee}.mousehuntActionButton.gray:before{background:#dedede;box-shadow:0 0 10px #e8e8e8 inset}.mousehuntActionButton.gray:hover,.mousehuntActionButton.gray:focus{background-color:#f3f3f3}\n'; } }); // src/modules/global-styles/styles/error-page.css var error_page_default; var init_error_page = __esm({ "src/modules/global-styles/styles/error-page.css"() { error_page_default = '.PageLockError .pageFrameView-content{min-height:calc(100vh - 130px)}.PageLockError .pageFrameView-column{min-height:100vh}.PageLockError .pageFrameView-footer{display:flex;flex-flow:row wrap;row-gap:20px;align-items:center;justify-content:center}.PageLockError .pageFrameView-footer-linksContainer{flex:0 0 100%}.PageLockError .pageFrameView-footer a img{opacity:.4;transition:.3s;transform:scale(.8)}.PageLockError .pageFrameView-footer-links.terms{text-align:center}.PageLockError .pageFrameView-content>div:first-of-type{border:none!important}.PageLockError .pageFrameView-content>div:first-of-type>div:nth-of-type(2){display:flex;flex-direction:column;justify-content:space-evenly;min-height:200px;padding:0 10px}.PageLockError .pageFrameView-footer a:hover img{opacity:1;transform:scale(1)}div[style="margin: 0 auto; text-align: center; width: 100%; font-size: 20px;"] img{transform-origin:bottom;animation-name:.7s mh-improved-shake-light infinite}@media (prefers-reduced-motion: reduce){div[style="margin: 0 auto; text-align: center; width: 100%; font-size: 20px;"] img{animation:none}}div[style="margin: 0 auto; text-align: center; width: 100%; font-size: 20px;"] a:hover{text-decoration:underline}div[style="margin: 0 auto; text-align: center; width: 100%; font-size: 20px;"] a{color:#00901c;text-decoration:none}\n'; } }); // src/modules/global-styles/styles/general.css var general_default5; var init_general5 = __esm({ "src/modules/global-styles/styles/general.css"() { general_default5 = '.pageFrameView-column{min-height:100vh}code{padding:0 3px;font-family:ui-monospace,Menlo,Monaco,Cascadia Mono,Segoe UI Mono,Roboto Mono,Oxygen Mono,"Ubuntu Monospace",Source Code Pro,Fira Mono,Droid Sans Mono,Courier New,monospace;background-color:#eee;border-radius:3px}.mousehuntHud-page-tabHeader.userscript-settings span{height:16px;font-size:12px;white-space:nowrap}.pageSidebarView-block{display:flex;flex-direction:column;align-items:stretch}.pageSidebarView .fb-page{order:1000}\n'; } }); // src/modules/global-styles/styles/messages.css var messages_default; var init_messages2 = __esm({ "src/modules/global-styles/styles/messages.css"() { messages_default = ".mh-ui-error-message,.mh-ui-success-message{z-index:21;padding:10px;font-size:10px;color:#160404;background-color:#f5b9b9;border:1px solid #803e3e;border-radius:5px;box-shadow:0 1px 5px -1px #5e5e5e}.mh-ui-success-message{background-color:#a3ea85;border:1px solid #3e803e}\n"; } }); // src/modules/global-styles/styles/tooltips.css var tooltips_default2; var init_tooltips2 = __esm({ "src/modules/global-styles/styles/tooltips.css"() { tooltips_default2 = ".PreferencesPage__blackTooltip.mh-improved-tooltip{width:20px;height:20px;margin-right:auto;margin-left:5px}.PreferencesPage__blackTooltip.mh-improved-tooltip:hover .PreferencesPage__blackTooltipText{right:-65px;bottom:165%;left:-65px;font-weight:400;line-height:16px}.mh-improved-tooltip-stay-open,.mousehuntTooltip.mh-improved-tooltip-stay-open,.mousehuntTooltipParent:hover>.mousehuntTooltip.mh-improved-tooltip-stay-open{display:block;transition:none;animation:none}\n"; } }); // src/modules/global-styles/styles/trap-qty.css var trap_qty_default; var init_trap_qty = __esm({ "src/modules/global-styles/styles/trap-qty.css"() { trap_qty_default = ".campPage-trap-itemBrowser-favorite-item-image-frame{top:-1px;left:-1px;width:50px;height:50px;overflow:hidden}.campPage-trap-itemBrowser-favorites .campPage-trap-itemBrowser-favorite-item-quantity span.campPage-trap-baitQuantity,.campPage-trap-itemBrowser-item-leftBar span.campPage-trap-baitQuantity{right:1px;bottom:1px;left:1px;padding:3px;font-size:13px;text-align:center;background-color:#fffc;border-radius:0 0 3px 3px}.campPage-trap-itemBrowser-favorites .campPage-trap-itemBrowser-favorite-item-quantity span.campPage-trap-baitQuantity{right:-1px;bottom:-1px;left:-1px;border:1px solid #4e2e0b}\n"; } }); // src/modules/global-styles/styles/utility.css var utility_default; var init_utility = __esm({ "src/modules/global-styles/styles/utility.css"() { utility_default = ".transparent-text{color:transparent}.text-black{color:#000}.hidden{display:none}.visible{display:block}.full-opacity{opacity:1}.screen-reader-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.outline{outline:1px solid #f00}.no-click{pointer-events:none}\n"; } }); // src/modules/global-styles/index.js var imported6, styles6, init32, global_styles_default; var init_global_styles = __esm({ "src/modules/global-styles/index.js"() { init_utils2(); init_animations(); init_buttons(); init_error_page(); init_general5(); init_messages2(); init_tooltips2(); init_trap_qty(); init_utility(); imported6 = [animations_default, buttons_default, error_page_default, general_default5, messages_default, tooltips_default2, trap_qty_default, utility_default]; styles6 = imported6; init32 = () => __async(void 0, null, function* () { addStyles(styles6, "global-styles"); }); global_styles_default = { id: "global-styles", type: "required", alwaysLoad: true, load: init32 }; } }); // src/modules/hide-codices/styles.css var styles_default33; var init_styles34 = __esm({ "src/modules/hide-codices/styles.css"() { styles_default33 = ".trapSelectorView__activeCodexContainer,.trapSelectorView__activeCodexContainer--visible{display:none}\n"; } }); // src/modules/hide-codices/index.js var init33, hide_codices_default; var init_hide_codices = __esm({ "src/modules/hide-codices/index.js"() { init_utils2(); init_styles34(); init33 = () => __async(void 0, null, function* () { addStyles(styles_default33, "hide-codices"); }); hide_codices_default = { id: "hide-codices", name: "Hide Codices", type: "element-hiding", default: false, description: "Hide the codices on the trap selector.", load: init33 }; } }); // src/modules/hide-daily-draw/styles.css var styles_default34; var init_styles35 = __esm({ "src/modules/hide-daily-draw/styles.css"() { styles_default34 = "#messengerUINotification .tabs a[data-tab=daily_draw]{display:none}\n"; } }); // src/modules/hide-daily-draw/index.js var _togglePopup, replaceInboxOpen, isSelfRequest, removeDailyDrawNotifications, init34, hide_daily_draw_default; var init_hide_daily_draw = __esm({ "src/modules/hide-daily-draw/index.js"() { init_utils2(); init_styles35(); replaceInboxOpen = () => { var _a, _b; if (!messenger || !((_b = (_a = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _a.notification) == null ? void 0 : _b.togglePopup)) { return; } if (!_togglePopup) { _togglePopup = messenger.UI.notification.togglePopup; } messenger.UI.notification.togglePopup = () => { messenger.UI.notification.showPopup(); messenger.UI.notification.setActiveTab("general"); messenger.UI.notification.showTab("general"); onEvent("ajax_response", () => { setMultipleTimeout(() => { messenger.UI.notification.showTab("general"); }, [10, 100]); }, true); }; }; isSelfRequest = false; removeDailyDrawNotifications = (data) => __async(void 0, null, function* () { var _a, _b, _c; if (isSelfRequest) { return; } if (!(data == null ? void 0 : data.messageData) || !((_a = data == null ? void 0 : data.messageData) == null ? void 0 : _a.notification)) { return; } const messageBar = document.querySelector("#hgbar_messages"); if (!messageBar) { return; } if (!messageBar.classList.contains("new")) { return; } const displayedNotificationsEl = messageBar.querySelector(".mousehuntHeaderView-menu-notification"); if (!displayedNotificationsEl) { return; } const displayedNotifications = Number.parseInt(displayedNotificationsEl.innerText, 10); if (displayedNotifications <= 0) { return; } const notification = data.messageData.notification || {}; const newNotifications = (notification == null ? void 0 : notification.messageCount) || 0; if (newNotifications <= 0) { return; } isSelfRequest = true; const notificationData = yield doRequest("managers/ajax/users/messages.php", { action: "fetch_messages", "message_types[]": "notification" }); isSelfRequest = false; let notificationsToSubtract = 0; (_c = (_b = notificationData == null ? void 0 : notificationData.messageData) == null ? void 0 : _b.notification) == null ? void 0 : _c.messages.forEach((message) => { var _a2; if (!(message == null ? void 0 : message.isNew)) { return; } if ("Daily Draw" === ((_a2 = message == null ? void 0 : message.messageData) == null ? void 0 : _a2.tab)) { notificationsToSubtract++; } }); if (notificationsToSubtract <= 0) { return; } const newDisplayedNotifications = displayedNotifications - notificationsToSubtract; if (newDisplayedNotifications <= 0) { messageBar.classList.remove("new"); } displayedNotificationsEl.innerText = newDisplayedNotifications; }); init34 = () => __async(void 0, null, function* () { addStyles(styles_default34, "hide-daily-draw"); if ("undefined" !== typeof messenger) { replaceInboxOpen(); } setTimeout(removeDailyDrawNotifications, 1e3); onRequest("*", removeDailyDrawNotifications); }); hide_daily_draw_default = { id: "hide-daily-draw", name: "Hide Daily Draw", type: "beta", // will be 'element-hiding', default: false, description: "Hides the daily draw from the inbox", load: init34 }; } }); // src/modules/hide-daily-reward-popup/index.js var hidePopup, init35, hide_daily_reward_popup_default; var init_hide_daily_reward_popup = __esm({ "src/modules/hide-daily-reward-popup/index.js"() { init_utils2(); hidePopup = () => { if (activejsDialog) { const attrs = activejsDialog.getAttributes(); if (attrs && attrs.className && attrs.className === "dailyRewardPopup") { activejsDialog.hide(); } } }; init35 = () => __async(void 0, null, function* () { onDialogShow("dailyRewardPopup", () => { setTimeout(() => { if (activejsDialog) { activejsDialog.hide(); } }, 500); }); hidePopup(); setTimeout(hidePopup, 1e3); setTimeout(hidePopup, 2e3); onRequest("*", hidePopup); }); hide_daily_reward_popup_default = { id: "hide-daily-reward-popup", name: "Hide Daily Reward Popup", type: "element-hiding", default: false, description: "Automatically hide the daily reward popup.", load: init35 }; } }); // src/modules/hide-footer/styles.css var styles_default35; var init_styles36 = __esm({ "src/modules/hide-footer/styles.css"() { styles_default35 = ".pageFrameView-footer,.mousehuntFooter{display:none}.no-footer .pageFrameView-column.left,.no-footer .pageFrameView-column.right{margin-bottom:0}\n"; } }); // src/modules/hide-footer/index.js var init36, hide_footer_default; var init_hide_footer = __esm({ "src/modules/hide-footer/index.js"() { init_utils2(); init_styles36(); init36 = () => __async(void 0, null, function* () { addStyles(styles_default35, "no-footer"); addBodyClass("no-footer"); onActivation("no-footer", () => { addBodyClass("no-footer"); }); onActivation("no-footer", () => { removeBodyClass("no-footer"); }); }); hide_footer_default = { id: "no-footer", name: "Hide Footer", type: "element-hiding", default: false, description: "Hides the footer.", load: init36 }; } }); // src/modules/hide-news-ticker/styles.css var styles_default36; var init_styles37 = __esm({ "src/modules/hide-news-ticker/styles.css"() { styles_default36 = ".mousehuntHeaderView-newsTicker{display:none}\n"; } }); // src/modules/hide-news-ticker/index.js var init37, hide_news_ticker_default; var init_hide_news_ticker = __esm({ "src/modules/hide-news-ticker/index.js"() { init_utils2(); init_styles37(); init37 = () => __async(void 0, null, function* () { addStyles(styles_default36, "hide-news-ticker"); }); hide_news_ticker_default = { id: "hide-news-ticker", name: "Hide News Ticker", type: "element-hiding", default: true, description: "Hides the news ticker in the header.", load: init37 }; } }); // src/modules/hide-share/styles.css var styles_default37; var init_styles38 = __esm({ "src/modules/hide-share/styles.css"() { styles_default37 = '.actionportfolio,.canShare .larryTip,.journalactions a[data-share-type=journal],.journalactions a[data-type=journal],.pageSidebarView .fb-page,.socialLink,*[src="https://www.mousehuntgame.com//images/ui/buttons/share_green.gif"],#jsDialog-publishToOwnWall,.publishToWall,#OnboardArrow.onboardPopup.top .canShare .larryTip img{display:none}#OnboardArrow.onboardPopup.canShare .shareButton{display:none!important}#OnboardArrow.onboardPopup.canShare .closeButton{right:43px;left:unset;z-index:2}#OnboardArrow.onboardPopup.top .canShare .larryTip{color:#fff;background-color:#fff;border-color:#fff}\n'; } }); // src/modules/hide-share/index.js var init38, hide_share_default; var init_hide_share = __esm({ "src/modules/hide-share/index.js"() { init_utils2(); init_styles38(); init38 = () => __async(void 0, null, function* () { addStyles(styles_default37, "no-share"); }); hide_share_default = { id: "no-share", name: "Hide Share Buttons", type: "element-hiding", default: true, description: "Hides the share buttons.", load: init38 }; } }); // src/modules/hide-sidebar/styles.css var styles_default38; var init_styles39 = __esm({ "src/modules/hide-sidebar/styles.css"() { styles_default38 = ".pageFrameView{-ms-grid-columns:[first] auto [content-start] 760px [content-end] auto [last];grid-template-columns:[first] auto [content-start] 760px [content-end] auto [last]}.pageFrameView .pageSidebarView-user{padding:0 0 10px;border-bottom:none}.pageSidebarView{display:none}.mousehuntHeaderView .menuItem.sidebar.dropdown{cursor:unset}.mousehuntHeaderView .menuItem.sidebar .dropdownContent{width:365px;padding:10px}.mousehuntHeaderView .menuItem.sidebar .dropdownContent a{display:unset;height:auto;padding:0;font-variant:none;border-bottom:none}.mousehuntHeaderView .menuItem.sidebar .dropdownContent a:hover,.mousehuntHeaderView .menuItem.sidebar .dropdownContent a:focus{text-decoration:underline;background-color:unset}.mousehuntHeaderView .menuItem.sidebar .dropdownContent a.pageSidebarView-user-image{width:30px;height:30px;padding:0;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;border:1px solid #808080}.mousehuntHeaderView .menuItem.sidebar .dropdownContent .pageSidebarView-user a:nth-child(2){display:inline;padding:0;font-size:inherit;font-variant:none;color:#3b5998;border-bottom:none}.mousehuntHeaderView .menuItem.sidebar .dropdownContent .pageSidebarView-user br{display:none}.mousehuntHeaderView .menuItem.sidebar .dropdownContent a.pageSidebarView-user-logout{display:inline-block;float:right;height:auto;padding:5px 0;margin-right:10px;font-size:inherit;font-variant:none;color:#3b5998;border-bottom:none;border-radius:0}.scoreboardRankingsWrapper{display:grid;grid-template-columns:1fr 1fr;grid-gap:5px;line-height:14px}.scoreboardRelativeRankingTableView-table{padding-top:5px;background:#fff}.mousehuntHeaderView .menuItem.sidebar .dropdownContent .scoreboardRankingsWrapper a{font-size:9px;color:#3b5998;text-decoration:none;vertical-align:middle;border-radius:0}.mousehuntHeaderView .menuItem.sidebar .dropdownContent .scoreboardRankingsWrapper a:hover,.mousehuntHeaderView .menuItem.sidebar .dropdownContent .scoreboardRankingsWrapper a:focus,.mousehuntHeaderView .menuItem.sidebar .dropdownContent .scoreboardRankingsWrapper a:active{text-decoration:underline}\n"; } }); // src/modules/hide-sidebar/index.js var moveSidebar, init39, hide_sidebar_default; var init_hide_sidebar = __esm({ "src/modules/hide-sidebar/index.js"() { init_utils2(); init_styles39(); moveSidebar = () => { const menuTab = document.createElement("div"); menuTab.classList.add("menuItem"); menuTab.classList.add("dropdown"); menuTab.classList.add("sidebar"); menuTab.addEventListener("click", () => { menuTab.classList.toggle("expanded"); }); const menuTabTitle = document.createElement("span"); menuTabTitle.innerText = "Sidebar"; const menuTabArrow = document.createElement("div"); menuTabArrow.classList.add("arrow"); const dropdownContent = document.createElement("div"); dropdownContent.classList.add("dropdownContent"); const sidebarUser = document.querySelector(".pageSidebarView-user"); if (sidebarUser) { const sidebarUserClone = sidebarUser.cloneNode(true); dropdownContent.append(sidebarUserClone); } const scoreBoardRankings = document.querySelectorAll(".scoreboardRelativeRankingTableView-table"); if (scoreBoardRankings) { const scoreBoardRankingWrapper = document.createElement("div"); scoreBoardRankingWrapper.classList.add("scoreboardRankingsWrapper"); scoreBoardRankings.forEach((scoreBoardRanking) => { const scoreBoardRankingClone = scoreBoardRanking.cloneNode(true); scoreBoardRankingWrapper.append(scoreBoardRankingClone); }); dropdownContent.append(scoreBoardRankingWrapper); } menuTab.append(menuTabTitle); menuTab.append(menuTabArrow); menuTab.append(dropdownContent); const tabsContainer = document.querySelector(".mousehuntHeaderView-dropdownContainer"); if (!tabsContainer) { return; } tabsContainer.insertBefore(menuTab, tabsContainer.lastChild); }; init39 = () => __async(void 0, null, function* () { addStyles(styles_default38, "no-sidebar"); addBodyClass("no-sidebar"); moveSidebar(); hg.views.PageFrameView.setShowSidebar(false); onActivation("no-sidebar", () => { moveSidebar(); addBodyClass("no-sidebar"); hg.views.PageFrameView.setShowSidebar(false); }); onDeactivation("no-sidebar", () => { hg.views.PageFrameView.setShowSidebar(true); const menuTab = document.querySelector(".menuItem.sidebar"); if (menuTab) { menuTab.remove(); } }); }); hide_sidebar_default = { id: "no-sidebar", name: "Hide Sidebar", type: "element-hiding", default: true, description: "Hides the sidebar and adds a 'Sidebar' dropdown in the top menu.", load: init39 }; } }); // src/modules/hover-profiles/styles.css var styles_default39; var init_styles40 = __esm({ "src/modules/hover-profiles/styles.css"() { styles_default39 = ".message .messageText,.journal .entry .journalbody{position:relative}#friend-data-wrapper{position:absolute;top:-125px;z-index:999999;box-sizing:border-box;display:block;width:325px;height:125px;background:linear-gradient(#decebb 5%,#f0eddf 50%);border:1px solid #9a8872;border-radius:10px;box-shadow:0 1px 5px -1px #5e5e5e}.treasureMapTooltipView #friend-data-wrapper{display:none}[data-friend-hover]:hover #friend-data-wrapper,[data-friend-hover]:focus #friend-data-wrapper,#friend-data-wrapper:hover,#friend-data-wrapper:focus{display:block}#friend-data-wrapper .friendsPage-friendRow{position:relative;box-sizing:border-box;height:100%;padding-top:3px;margin:0;border:none}#friend-data-wrapper .friendsPage-friendRow-imageContainer{position:relative;display:inline-block;width:65px;height:65px;margin-left:5px;vertical-align:top}#friend-data-wrapper .friendsPage-friendRow-content{box-sizing:border-box;width:245px}#friend-data-wrapper .friendsPage-friendRow-titleBar{position:relative;box-sizing:border-box;padding-left:20px;margin-right:-8px;margin-bottom:5px;margin-left:-15px;line-height:20px}#friend-data-wrapper .friendsPage-friendRow-titleBar-titleDetail{display:none}#friend-data-wrapper .friendsPage-friendRow-titleBar-icon{left:0;width:35px;height:35px}#friend-data-wrapper .friendsPage-friendRow-titleBar-name{display:block;margin-left:20px;overflow:hidden;font-size:14px;color:#000;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}#friend-data-wrapper .friendsPage-friendRow-environment-icon{width:27px;height:27px;margin-right:3px}#friend-data-wrapper .friendsPage-friendRow-environment-name{width:140px;font-size:11px;line-height:14px}#friend-data-wrapper .friendsPage-friendRow .friendsPage-friendRow-actions{position:absolute;top:35px;right:2px}#friend-data-wrapper .friendsPage-friendRow-actionsContainer{top:0}#friend-data-wrapper .friendsPage-friendRow-actions-interactionButtons{padding-right:0}#friend-data-wrapper .userInteractionButtonsView-button{width:38px;height:38px;background-size:38px}#friend-data-wrapper .userInteractionButtonsView-button.sendTicket,#friend-data-wrapper .userInteractionButtonsView-button.sendTournamentInvite{display:none}#friend-data-wrapper .mousehuntTooltip{opacity:0;animation:none}#friend-data-wrapper .friendsPage-friendRow-environment{box-sizing:border-box;display:flex;align-items:center;height:40px;margin-left:-10px}#friend-data-wrapper .friendsPage-friendRow-statsContainer{position:relative;box-sizing:border-box;display:grid;grid-template-columns:repeat(3,1fr);place-items:center center;align-content:stretch;width:100%;height:auto;padding:2px;margin:0}#friend-data-wrapper .friendsPage-friendRow-stat{display:flex!important;align-items:center;width:auto;margin:0;font-size:10px}#friend-data-wrapper .friendsPage-friendRow-stat-icon{width:15px;height:15px;margin-left:5px}#friend-data-wrapper .friendsPage-friendRow-stat.map .friendsPage-friendRow-stat-icon,#friend-data-wrapper .friendsPage-friendRow-stat.team .friendsPage-friendRow-stat-icon{margin-right:3px}#friend-data-wrapper .friendsPage-friendRow-stat-value{font-size:10px;font-weight:400}#friend-data-wrapper .friendsPage-friendRow-stat-label{display:none}#friend-data-wrapper .friendsPage-friendRow-stat.map{grid-column:span 2}#friend-data-wrapper .friendsPage-friendRow-stat.map .friendsPage-friendRow-stat-value span,#friend-data-wrapper .friendsPage-friendRow-stat.online span{width:auto;max-width:190px}#friend-data-wrapper .friendsPage-friendRow-stat.team .friendsPage-friendRow-stat-value a{width:auto;max-width:70px}#friend-data-wrapper .friendsPage-friendRow-stat:hover .friendsPage-friendRow-stat-fullValue{display:none}#friend-data-wrapper .friendsPage-friendRow-stat.hasHover:hover{text-decoration:underline;background:unset}.mh-dark-mode #friend-data-wrapper .friendsPage-friendRow{color:#87270e;background:linear-gradient(#decebb 5%,#f0eddf 50%)}.mh-dark-mode #friend-data-wrapper .friendsPage-friendRow-statsContainer{color:#87270e;box-shadow:0 10px 30px #cdb495 inset}.mh-dark-mode #friend-data-wrapper .friendsPage-friendRow-stat-value a{color:#87270e}.friend-data-wrapper-loading{display:flex;align-items:flex-end;justify-content:center;height:90%;background-image:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif?asset_cache_version=2);background-repeat:no-repeat;background-position:center;background-size:55px}.friendsPage-friendRow.loading .friendsPage-friendRow-titleBar-icon:after{top:2px;left:2px;width:30px;height:30px;background:#eee;border:2px solid #7b7b7b}.friendsPage-friendRow.loading .friendsPage-friendRow-image,.friendsPage-friendRow.loading .friendsPage-friendRow-environment-icon{background:#eee;box-shadow:none}.friendsPage-friendRow.loading .friendsPage-friendRow-image{inset:7px}\n"; } }); // src/modules/hover-profiles/index.js var cleanId, getFriendId, friendDataWrapper, makeFriendMarkup, onFriendLinkHover, addFriendLinkEventListener, onTabChangeCallback, onTabChange, onInboxOpen, main14, init40, hover_profiles_default; var init_hover_profiles = __esm({ "src/modules/hover-profiles/index.js"() { init_utils2(); init_styles40(); cleanId = (id) => { return id.replaceAll("#", ""); }; getFriendId = (target) => __async(void 0, null, function* () { if (target.getAttribute("data-snuid")) { return cleanId(target.getAttribute("data-snuid")); } if (target.href) { let href = target.href; const hrefMatch = target.href.match(/(.+?)&/); if (hrefMatch && hrefMatch.length) { href = hrefMatch[1]; } const urlMatch = href.replace("https://www.mousehuntgame.com/hunterprofile.php?snuid=", "").replace("https://www.mousehuntgame.com/profile.php?snuid=", ""); if (urlMatch && urlMatch !== href) { return cleanId(urlMatch); } const pMatch = href.replace("https://www.mousehuntgame.com/p.php?id=", ""); if (pMatch && pMatch !== href) { const snuid = yield doRequest("managers/ajax/pages/friends.php", { action: "community_search_by_id", user_id: pMatch }); if (snuid.friend.sn_user_id) { return cleanId(snuid.friend.sn_user_id); } } } if (target.onclick) { const giftMatch = target.onclick.toString().match(/show\('(.+)'\)/); if (giftMatch && giftMatch.length) { return cleanId(giftMatch[1]); } } return false; }); makeFriendMarkup = (friendId, data = null, skipCache = false, e) => { if (!skipCache) { sessionSet(`mh-improved-cache-friend-${friendId}`, data); sessionSet(`mh-improved-cache-friend-${friendId}-timestamp`, Date.now()); } friendDataWrapper == null ? void 0 : friendDataWrapper.remove(); let content; if (data) { const templateType = data[0].user_interactions.relationship.is_stranger ? "PageFriends_request_row" : "PageFriends_view_friend_row"; content = hg.utils.TemplateUtil.render(templateType, data[0]); } else { content = hg.utils.TemplateUtil.render("PageFriends_view_friend_row", hg.pages.FriendsPage().getPlaceholderData()); } const existing = document.querySelectorAll("#friend-data-wrapper"); if (existing && existing.length) { existing.forEach((el) => { el.remove(); }); } friendDataWrapper = makeElement("div", "friend-data-wrapper"); friendDataWrapper.id = "friend-data-wrapper"; friendDataWrapper.innerHTML = content || '<span class="friend-data-wrapper-loading">Loading\u2026</span>'; document.body.append(friendDataWrapper); const rect = e.target.getBoundingClientRect(); const top = rect.top + window.scrollY; const left = rect.left + window.scrollX; let tooltipTop = top - friendDataWrapper.offsetHeight - 10; if (tooltipTop < 0) { tooltipTop = top + rect.height + 10; } friendDataWrapper.style.top = `${tooltipTop}px`; friendDataWrapper.style.left = `${left - friendDataWrapper.offsetWidth / 2 + rect.width / 2}px`; let timeoutId; friendDataWrapper.addEventListener("mouseleave", () => { timeoutId = setTimeout(() => { friendDataWrapper.remove(); }, 250); }); friendDataWrapper.addEventListener("mouseenter", () => { clearTimeout(timeoutId); }); doEvent2("profile_hover"); }; onFriendLinkHover = (e) => __async(void 0, null, function* () { const friendId = yield getFriendId(e.target); if (!friendId || friendId == user.sn_user_id) { return; } e.target.setAttribute("data-snuid", friendId); const parent = e.target.parentElement; if (!parent) { return; } parent.setAttribute("data-friend-hover", true); const existing = document.querySelectorAll("#friend-data-wrapper"); if (existing && existing.length) { existing.forEach((el) => { el.remove(); }); } const cached = sessionGet(`mh-improved-cache-friend-${friendId}`); const cachedTimestamp = sessionGet(`mh-improved-cache-friend-${friendId}-timestamp`); if (cached && cachedTimestamp && Date.now() - cachedTimestamp < 15e4) { makeFriendMarkup(friendId, cached, true, e); } else { makeFriendMarkup(null, null, true, e); app.pages.FriendsPage.getFriendDataBySnuids([friendId], (data) => { if (!data || !data.length) { return; } makeFriendMarkup(friendId, data, false, e); }); } }); addFriendLinkEventListener = (selector) => { const friendLinks = document.querySelectorAll(selector); if (!friendLinks || !friendLinks.length) { return; } friendLinks.forEach((friendLink) => { if (friendLink.classList.contains("friendsPage-friendRow-image")) { return; } let timer; friendLink.addEventListener("mouseover", (e) => { clearTimeout(timer); timer = setTimeout(() => onFriendLinkHover(e), 200); }); friendLink.addEventListener("mouseout", () => { clearTimeout(timer); }); }); }; onTabChangeCallback = (callback, attempts = 0) => { const tabs = document.querySelectorAll(".notificationHeader .tabs a"); if (!tabs || tabs.length === 0) { if (attempts > 2) { return; } setTimeout(() => { onTabChangeCallback(callback, attempts + 1); }, 250); return; } tabs.forEach((tab) => { tab.addEventListener("click", () => { callback(); }); }); }; onTabChange = (callback) => { onEvent("ajax_response", () => { onTabChangeCallback(callback); }); }; onInboxOpen = (callback) => { const inboxBtn = document.querySelector("#hgbar_messages"); if (!inboxBtn) { return; } inboxBtn.addEventListener("click", () => { onTabChange(callback); }); }; main14 = () => { const selectors = [ 'a[href*="https://www.mousehuntgame.com/hunterprofile.php"]', 'a[href*="https://www.mousehuntgame.com/profile.php"]', ".entry.socialGift .journaltext a", '.notificationMessageList .messageText a[href*="https://www.mousehuntgame.com/p"]', 'tr.teamPage-memberRow-identity a[href*="https://www.mousehuntgame.com/profile.php"]', '.treasureMapView-scoreboard-table a[href*="https://www.mousehuntgame.com/profile.php"]' ]; selectors.forEach((selector) => { addFriendLinkEventListener(selector); }); }; init40 = () => __async(void 0, null, function* () { addStyles(styles_default39, "hover-profiles"); setTimeout(main14, 500); onRequest("*", () => { setTimeout(main14, 1e3); }); onInboxOpen(main14); }); hover_profiles_default = { id: "hover-profiles", name: "Hover Profiles", type: "feature", default: true, description: "Hover over a friend's name in your journal, inbox, or elsewhere and get a mini-profile popup.", load: init40 }; } }); // src/data/upscaled-images-to-skip.json var upscaled_images_to_skip_default; var init_upscaled_images_to_skip = __esm({ "src/data/upscaled-images-to-skip.json"() { upscaled_images_to_skip_default = [ "mice/*", "ui/auras/*", "ui/hud/menu/*", "ui/crowns/*", "ui/camp/*", "ui/hunters_horn/*", "items/skins/*", "items/weapons/*", "powertypes/*", "teams/*", "environments/*", "folklore_forest_upgrades/*", "promo/page_banners/*", "grouplogos/*", "ui/adventure_book/*", "map/dynamic/*", "io_appstore_button.png", "google-play-badge.png", "icons/externalLink.png", "buttons/discord.png", "hg_logo.png", "payment/thumb/logo_paypal.png" ]; } }); // src/modules/image-upscaling/journal-themes.css var journal_themes_default; var init_journal_themes = __esm({ "src/modules/image-upscaling/journal-themes.css"() { journal_themes_default = ".journal.theme_living_garden .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_living_garden_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_living_garden .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_living_garden_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom;background-position:top;background-size:contain}.journal.theme_living_garden .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_living_garden_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_halloween_2013 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2013_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_halloween_2013 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2013_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_halloween_2013 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2013_wide_bottom.png?asset_cache_version=2) no-repeat scroll right bottom}.journal.theme_halloween_2014 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2014_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_halloween_2014 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2014_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_halloween_2014 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2014_wide_bottom.png?asset_cache_version=2) no-repeat scroll right bottom}.journal.theme_winter_hunt_2012 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2012_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2012 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2012_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2012 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2012_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2013 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2013_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2013 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2013_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2013 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2013_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_western .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_western_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_western .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_western_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_western .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_western_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_regal .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_regal_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_regal .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_regal_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_regal .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_regal_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_polluted .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_polluted_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_polluted .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_polluted_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_polluted .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_polluted_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_six .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_six_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_six .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_six_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_six .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_six_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_seven .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_seven_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_seven .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_seven_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_seven .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_seven_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_eight .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_eight_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_eight .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_eight_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_eight .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_eight_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_nine .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_nine_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_nine .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_nine_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_nine .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_nine_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_airship .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_airship_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_airship .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_airship_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_airship .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_airship_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_chrome .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_chrome_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_chrome .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_chrome_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_chrome .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_chrome_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_football .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_football_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_football .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_football_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_football .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_football_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_mega_tournament .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_mega_tournament_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_mega_tournament .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_mega_tournament_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_mega_tournament .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_mega_tournament_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_burroughs_rift .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_burroughs_rift_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_burroughs_rift .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_burroughs_rift_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_burroughs_rift .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_burroughs_rift_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_bristle_woods_rift .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bristle_woods_rift_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_bristle_woods_rift .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bristle_woods_rift_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_bristle_woods_rift .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bristle_woods_rift_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2014 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2014_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2014 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2014_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2014 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2014_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_fungal .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_fungal_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_fungal .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_fungal_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_fungal .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_fungal_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_relic_hunter .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_relic_hunter_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_relic_hunter .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_relic_hunter_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_relic_hunter .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_relic_hunter_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_labyrinth .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_labyrinth_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_labyrinth .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_labyrinth_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_labyrinth .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_labyrinth_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_rift_hallowen .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_rift_halloween_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_rift_hallowen .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_rift_halloween_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_rift_hallowen .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_rift_halloween_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2015 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2015_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2015 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2015_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2015 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2015_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_gnawnian_games .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gnawnian_games_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_gnawnian_games .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gnawnian_games_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_gnawnian_games .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gnawnian_games_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_pillowcase .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pillowcase_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_pillowcase .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pillowcase_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_pillowcase .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pillowcase_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_ghostship .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_ghostship_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_ghostship .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_ghostship_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_ghostship .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_ghostship_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_moussu_picchu .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_moussu_picchu_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_moussu_picchu .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_moussu_picchu_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_moussu_picchu .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_moussu_picchu_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lightning_slayer .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lightning_slayer_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lightning_slayer .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lightning_slayer_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lightning_slayer .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lightning_slayer_wide_bottom.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2016 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2016_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2016 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2016_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2016 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2016_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_snow_golem .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_snow_golem_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_snow_golem .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_snow_golem_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_snow_golem .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_snow_golem_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_ten .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_ten_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_ten .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_ten_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_ten .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_ten_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_queso_canyon .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_queso_canyon_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_queso_canyon .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_queso_canyon_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_queso_canyon .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_queso_canyon_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_admirals_ship .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_admirals_ship_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_admirals_ship .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_admirals_ship_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_admirals_ship .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_admirals_ship_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2018 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2018_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2018 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2018_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2018 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2018_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_lny_2019 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2019_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lny_2019 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2019_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lny_2019 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2019_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_lny_2020 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2020_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lny_2020 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2020_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lny_2020 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2020_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_lny_2021 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2021_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lny_2021 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2021_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lny_2021 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2021_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_lny_2022 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2022_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lny_2022 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2022_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lny_2022 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2022_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_lny_2023 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2023_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_lny_2023 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2023_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_lny_2023 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_lny_2023_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_super_brie_factory .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_super_brie_factory_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_super_brie_factory .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_super_brie_factory_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_super_brie_factory .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_super_brie_factory_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_party_charm .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_party_charm_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_party_charm .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_party_charm_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_party_charm .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_party_charm_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_halloween_2019 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2019_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_halloween_2019 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2019_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_halloween_2019 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_halloween_2019_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2019 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2019_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2019 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2019_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2019 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2019_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2020 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2020_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2020 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2020_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2020 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2020_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2021 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2021_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2021 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2021_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2021 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2021_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_winter_hunt_2022 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2022_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_winter_hunt_2022 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2022_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_winter_hunt_2022 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_winter_hunt_2022_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_pumpkin_patch .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pumpkin_patch_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_pumpkin_patch .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pumpkin_patch_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_pumpkin_patch .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_pumpkin_patch_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_spring_hunt_2021 .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_spring_hunt_2021_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_spring_hunt_2021 .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_spring_hunt_2021_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_spring_hunt_2021 .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_spring_hunt_2021_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_gloomy_greenwood .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gloomy_greenwood_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_gloomy_greenwood .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gloomy_greenwood_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_gloomy_greenwood .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_gloomy_greenwood_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_birthday_thirteen .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_thirteen_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_thirteen .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_thirteen_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_thirteen .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_thirteen_wide_bottom.png?asset_cache_version=2) no-repeat scroll left top}.journal.theme_birthday_fourteen .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fourteen_wide_top.png?v=2&asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_fourteen .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fourteen_wide_middle.png?v=2&asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_fourteen .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fourteen_wide_bottom.png?v=2&asset_cache_version=2) no-repeat scroll left top}.journal.theme_birthday_fifteen .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fifteen_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_birthday_fifteen .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fifteen_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_birthday_fifteen .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_birthday_fifteen_bottom.png?asset_cache_version=2) no-repeat scroll left top}.journal.theme_table_of_contents .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_table_of_contents_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_table_of_contents .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_table_of_contents_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_table_of_contents .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_table_of_contents_wide_bottom.png?asset_cache_version=2) no-repeat scroll center bottom}.journal.theme_bountiful_beanstalk .top{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bountiful_beanstalk_wide_top.png?asset_cache_version=2) no-repeat scroll left bottom}.journal.theme_bountiful_beanstalk .content{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bountiful_beanstalk_wide_middle.png?asset_cache_version=2) repeat-y scroll left bottom}.journal.theme_bountiful_beanstalk .bottom{background:url(https://www.mousehuntgame.com/images/ui/journal/themes/journal_bountiful_beanstalk_wide_bottom.png?asset_cache_version=2) no-repeat scroll 100% 0}.journal.theme_halloween .top{background:url(https://i.mouse.rip/upscaled-themes/journal_halloween_wide_top.png) no-repeat scroll left bottom}.journal.theme_halloween .content{background:url(https://i.mouse.rip/upscaled-themes/journal_halloween_wide_middle.png) repeat-y scroll left bottom}.journal.theme_halloween .bottom{background:url(https://i.mouse.rip/upscaled-themes/journal_halloween_wide_bottom.png) no-repeat scroll left bottom}.journal.theme_halloween_2013 .top,.journal.theme_halloween_2014 .top,.journal.theme_winter_hunt_2013 .top,.journal.theme_regal .top,.journal.theme_polluted .top,.journal.theme_birthday_six .top,.journal.theme_birthday_seven .top,.journal.theme_birthday_eight .top,.journal.theme_birthday_nine .top,.journal.theme_airship .top,.journal.theme_chrome .top,.journal.theme_football .top,.journal.theme_mega_tournament .top,.journal.theme_burroughs_rift .top,.journal.theme_bristle_woods_rift .top,.journal.theme_winter_hunt_2014 .top,.journal.theme_fungal .top,.journal.theme_relic_hunter .top,.journal.theme_labyrinth .top,.journal.theme_rift_hallowen .top,.journal.theme_winter_hunt_2015 .top,.journal.theme_gnawnian_games .top,.journal.theme_pillowcase .top,.journal.theme_ghostship .top,.journal.theme_moussu_picchu .top,.journal.theme_lightning_slayer .top,.journal.theme_winter_hunt_2016 .top,.journal.theme_snow_golem .top,.journal.theme_birthday_ten .top,.journal.theme_queso_canyon .top,.journal.theme_admirals_ship .top,.journal.theme_winter_hunt_2018 .top,.journal.theme_lny_2019 .top,.journal.theme_lny_2020 .top,.journal.theme_lny_2021 .top,.journal.theme_lny_2022 .top,.journal.theme_lny_2023 .top,.journal.theme_super_brie_factory .top,.journal.theme_party_charm .top,.journal.theme_halloween_2019 .top,.journal.theme_winter_hunt_2019 .top,.journal.theme_winter_hunt_2020 .top,.journal.theme_winter_hunt_2021 .top,.journal.theme_winter_hunt_2022 .top,.journal.theme_pumpkin_patch .top,.journal.theme_spring_hunt_2021 .top,.journal.theme_gloomy_greenwood .top,.journal.theme_birthday_thirteen .top,.journal.theme_birthday_fourteen .top,.journal.theme_birthday_fifteen .top,.journal.theme_table_of_contents .top,.journal.theme_bountiful_beanstalk .top,.journal.theme_halloween .bottom,.journal.theme_halloween_2013 .bottom,.journal.theme_halloween_2014 .bottom,.journal.theme_winter_hunt_2013 .bottom,.journal.theme_regal .bottom,.journal.theme_polluted .bottom,.journal.theme_birthday_six .bottom,.journal.theme_birthday_seven .bottom,.journal.theme_birthday_eight .bottom,.journal.theme_birthday_nine .bottom,.journal.theme_airship .bottom,.journal.theme_chrome .bottom,.journal.theme_football .bottom,.journal.theme_mega_tournament .bottom,.journal.theme_burroughs_rift .bottom,.journal.theme_bristle_woods_rift .bottom,.journal.theme_winter_hunt_2014 .bottom,.journal.theme_fungal .bottom,.journal.theme_relic_hunter .bottom,.journal.theme_labyrinth .bottom,.journal.theme_rift_hallowen .bottom,.journal.theme_winter_hunt_2015 .bottom,.journal.theme_gnawnian_games .bottom,.journal.theme_pillowcase .bottom,.journal.theme_ghostship .bottom,.journal.theme_moussu_picchu .bottom,.journal.theme_lightning_slayer .bottom,.journal.theme_winter_hunt_2016 .bottom,.journal.theme_snow_golem .bottom,.journal.theme_birthday_ten .bottom,.journal.theme_queso_canyon .bottom,.journal.theme_admirals_ship .bottom,.journal.theme_winter_hunt_2018 .bottom,.journal.theme_lny_2019 .bottom,.journal.theme_lny_2020 .bottom,.journal.theme_lny_2021 .bottom,.journal.theme_lny_2022 .bottom,.journal.theme_lny_2023 .bottom,.journal.theme_super_brie_factory .bottom,.journal.theme_party_charm .bottom,.journal.theme_halloween_2019 .bottom,.journal.theme_winter_hunt_2019 .bottom,.journal.theme_winter_hunt_2020 .bottom,.journal.theme_winter_hunt_2021 .bottom,.journal.theme_winter_hunt_2022 .bottom,.journal.theme_pumpkin_patch .bottom,.journal.theme_spring_hunt_2021 .bottom,.journal.theme_gloomy_greenwood .bottom,.journal.theme_birthday_fourteen .bottom,.journal.theme_birthday_fifteen .bottom,.journal.theme_table_of_contents .bottom,.journal.theme_bountiful_beanstalk .bottom,.journal.theme_birthday_thirteen .bottom{background-size:cover}.journal.theme_living_garden .top,.journal.theme_western .top,.journal.theme_halloween .top,.journal.theme_winter_hunt_2012 .top{background-size:contain}.journal.theme_living_garden .bottom,.journal.theme_western .bottom,.journal.theme_halloween .bottom,.journal.theme_winter_hunt_2012 .top{background-position:top center;background-size:contain}.journal.theme_halloween .content,.journal.theme_halloween_2013 .content,.journal.theme_halloween_2014 .content,.journal.theme_winter_hunt_2012 .content,.journal.theme_winter_hunt_2013 .content,.journal.theme_regal .content,.journal.theme_polluted .content,.journal.theme_birthday_six .content,.journal.theme_birthday_seven .content,.journal.theme_birthday_eight .content,.journal.theme_birthday_nine .content,.journal.theme_airship .content,.journal.theme_chrome .content,.journal.theme_football .content,.journal.theme_mega_tournament .content,.journal.theme_burroughs_rift .content,.journal.theme_bristle_woods_rift .content,.journal.theme_winter_hunt_2014 .content,.journal.theme_fungal .content,.journal.theme_relic_hunter .content,.journal.theme_labyrinth .content,.journal.theme_rift_hallowen .content,.journal.theme_winter_hunt_2015 .content,.journal.theme_gnawnian_games .content,.journal.theme_pillowcase .content,.journal.theme_ghostship .content,.journal.theme_moussu_picchu .content,.journal.theme_lightning_slayer .content,.journal.theme_winter_hunt_2016 .content,.journal.theme_snow_golem .content,.journal.theme_birthday_ten .content,.journal.theme_queso_canyon .content,.journal.theme_admirals_ship .content,.journal.theme_winter_hunt_2018 .content,.journal.theme_lny_2019 .content,.journal.theme_lny_2020 .content,.journal.theme_lny_2021 .content,.journal.theme_lny_2022 .content,.journal.theme_lny_2023 .content,.journal.theme_super_brie_factory .content,.journal.theme_party_charm .content,.journal.theme_halloween_2019 .content,.journal.theme_winter_hunt_2019 .content,.journal.theme_winter_hunt_2020 .content,.journal.theme_winter_hunt_2021 .content,.journal.theme_winter_hunt_2022 .content,.journal.theme_pumpkin_patch .content,.journal.theme_spring_hunt_2021 .content,.journal.theme_gloomy_greenwood .content,.journal.theme_birthday_fourteen .content,.journal.theme_birthday_fifteen .content,.journal.theme_table_of_contents .content,.journal.theme_bountiful_beanstalk .content,.journal.theme_birthday_thirteen .content{background-size:contain}\n"; } }); // src/modules/image-upscaling/styles.css var styles_default40; var init_styles41 = __esm({ "src/modules/image-upscaling/styles.css"() { styles_default40 = ".giftSelectorView-inbox-gift-thumb .itemImage,.giftSelectorView-inbox-giftRow.paidgift .giftSelectorView-inbox-gift-thumb .itemImage,.giftSelectorView-claimableGift-itemContainer .itemImage,.adventureBookPopup-adventure-details-block-step-thumb,.valourRiftPopupClaim-lootLog .itemImage,.valourRiftPopupClaim-cacheLoot-image,.MHCheckoutCartTableView-reward-image,.MHCheckoutCartTableView .trapImageView,.labyrinthHUD-confirmItem,.travelPage-map-pieces-detail-image img,.halloweenBoilingCauldronRecipeView-thumb,.lunarNewYear2018-claimRow-image .itemImage,.forewordFarmHarvestBin-itemImage.itemImage,.lunarNewYearCampPopup-content-block-image,.superBrieFactoryVendingMachineView-item-imageContainer,.campPage-trap-armedItem-empty{box-shadow:none}.springHuntHUD-dialog-item-image .itemImage.large,.springHuntHUD-dialog-item-image .floatingIslandsAirship,.MiniEventBigJackPopup-block-item-image,.forewordFarmHarvestBin-itemImage.itemImage,.marketplaceView-itemImage,.mousehuntHud-userStat.bait .icon,.itemView-thumbnail.large,.itemView-thumbnail{background-color:transparent}.springHuntHUD-dialog-item-image,.journal .entry.convertible_open img,.MiniEventGiveawayCampHUD-dialog-item .itemImage,.journal .entry.craft.item img,.itemPurchaseView-container.apothecary .itemPurchaseView-image,.marketplaceView-itemImage,.itemView-thumbnail,.campPage-trap-armedItem.bait .campPage-trap-armedItem-image,.mousoleumHUD-crafting-recipe-result-image,.floatingIslandsHUD .upsellItemActionView-cost-image,.enterPortal .warpathHUD-dialog-image .itemImage,.campPage-trap-armedItem-image{border:none}.notificationMessageList .message img.item{border:none!important}.campPage-trap-armedItem-empty{background:none}.treasureMapDialogView.acknowledge .treasureMapDialogView-highlightItem .itemImage,.greatWinterHuntNewYearsDialogView__itemImage,.convertibleOpenView-item-image{background-size:cover}.marketplaceView-item-image,.itemImage{background-size:100%}.treasureMapOpenChestView-chestImage,.campPage-trap-armedItem.bait .campPage-trap-armedItem-image,.campPage-trap-armedItem-image{background-size:contain}.MHCheckout-featuredItem-image.large{background-size:100px}.campPage-trap-armedItem.skin .campPage-trap-armedItem-empty{color:transparent}.mousehuntHud-userStat .icon{width:27px;height:27px;border:none;box-shadow:none}.inventoryPage-confirmPopup-itemRow-image .itemImage img{width:80px;height:80px}.treasureMapView-allyCell{padding:5px 2px}.treasureMapView-allyCell .treasureMapView-componentContainer{width:170px;background:none}.treasureMapView-allyCell .treasureMapView-componentThumb{width:40px;height:40px}.treasureMapRootView-footer-item-thumb{background-color:#fff}.mousehuntHud-userStat:hover .icon,.mousehuntHud-userStat:focus .icon,.mousehuntHud-userStat.active .icon{filter:drop-shadow(0 0 3px #ffde00);box-shadow:none}.springEggHuntCampHUD-charm-thumb.active{background-color:#79a32c87}.springEggHuntCampHUD-charm-thumb{padding:1px;border:none}.marketplaceView-itemImage img{border-radius:0}.travelPage-map-pieces-detail-environment-title img{width:auto;height:20px}.travelPage-map-pieces-detail-environment-title{display:inline-flex;align-items:center;justify-content:flex-start}.travelPage-map-pieces-detail-environment-title-name{margin-left:5px}.travelPage-map-pieces-detail-environments-label{margin-bottom:10px}.travelPage-map-environment-detail-title img{max-width:25px}.gift-padding img{width:75px}.itemImage img{width:auto;max-width:80px}.journal .relicHunter_slayer_aura_relic_bonus{background-image:url(https://www.mousehuntgame.com/images/items/collectibles/large/a6e804d0d9eeb22ff01660a144521ff1.png?cv=2)}.adventureBookPopup-title-icon{top:5px;width:auto;height:25px}.adventureBookPopup-title.active .adventureBookPopup-title-icon{left:5px}\n"; } }); // src/modules/image-upscaling/views.css var views_default; var init_views = __esm({ "src/modules/image-upscaling/views.css"() { views_default = ".mousehuntHud-page-tabContent.kings_cart .shopsPage-header-icon{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/7340a24e5bf4defcc5d855bdb56776c3.png)}.shopsPage-kingsCalibratorPromo:after{background-image:url(https://i.mouse.rip/upscaled/c6fa46d329c1c7436acad084773c05c6.png)}.dragonSlayerTeaser{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/d513d3d88b83e0cbce3be1ca70f8c6c0.png)}.fortRoxHUD-dialog-requiredItem.fort_rox_lair_cheese .itemImage{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/da61a59109bfc60c1d9db20f54c75e63.png)}.fortRoxHUD-dialog-requiredItem.fort_rox_lair_key_stat_item .itemImage{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/312d0ec2cf4e4cc10a223ef1ed7eb1cf.png)}.giftSelectorView-gift-cost-name{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/f659a8a07d3877df4165b188f13bb0db.png)}.greatWinterHuntClaimRewardDialogView__item--hat:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/f2ec13c0297687cbe50c7c35312966b7.png)}.greatWinterHuntClaimRewardDialogView__item--scarf:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/b07954771f93d36f125caab617573edf.png)}.headsUpDisplayWinterHuntRegionView__golemUpgradeCost:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/a9f0d6cba3beb00ad97a543b5e3ec8f9.png)}.headsUpDisplayWinterHuntRegionView__hailstoneImage{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/972937f8febcda1ed8e6f592ce34d1eb.png)}.journal .entry.aurora_base_trigger{background-image:url(https://i.mouse.rip/upscaled/bases/20ffa4c4c656ac931e4881d98bda5713.png)}.journal .entry.burroughs_rift.regulator_base_trigger{background-image:url(https://i.mouse.rip/upscaled/bases/aeeb39277ee5bb21bffd2d8e5eb91203.png)}.journal .entry.christmas_crystalabra_trigger{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/54e6ff0e1a145b4ae1a702dae67f302c.png)}.journal .entry.electromagnetic_base_trigger{background-image:url(https://i.mouse.rip/upscaled/af1aa7a2f55acbce605abc65be1d22e1.png)}.journal .entry.living_grove_base_trigger.cavern_fungus{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/6b849e20a0a0e8034697dfc0034f20e0.png)}.journal .entry.living_grove_base_trigger.nightshade{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/075a2bbef9d263b41822be1c318e9ee0.png)}.journal .entry.mousehunt_birthday_cake_claim{background-image:url(https://i.mouse.rip/upscaled/8e4f8ee414643d3dcb39e5bb7df429ed.png)}.journal .entry.rift_mist_diffuser_trigger{background-image:url(https://i.mouse.rip/upscaled/bases/40b591abddca5fa4b1cefb1d1a5c0116.png)}.journal .entry.valour_rift_map_quest_entry{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/b88046add58f39243c14740d7179446e.png)}.journal .entry.vegetation_base_trigger.blue{background-image:url(https://i.mouse.rip/upscaled/12adb0973256a6f3f7061925940593e9.png)}.journal .entry.vegetation_base_trigger.red{background-image:url(https://i.mouse.rip/upscaled/8dff0d6bc2e6d9be450da9bc0d3ab678.png)}.journal .entry.vegetation_base_trigger.yellow{background-image:url(https://i.mouse.rip/upscaled/1a0063f4d3a1995dc23105c4e6db85aa.png)}.journal .halloween-candy{background-image:url(https://i.mouse.rip/upscaled/1682084bc7d5208b582b66476c090a3b.png)}.journal .relicHunter_slayer_aura_relic_bonus{background-image:url(https://i.mouse.rip/upscaled/f21a0fde04887958de39f9e40b8f588e.png)}.kingsGiveawayCalibratorPopup-upgrade-action-kingsCredits{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/7340a24e5bf4defcc5d855bdb56776c3.png)}.labyrinthHUD-confirmItem.labyrinth_scramble_clues_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/4af4321a64beff9406d1931e5ea79855.png)}.labyrinthHUD-confirmItem.labyrinth_scramble_doors_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/3f408cc3012bf15bd07d9bce8a6eec75.png)}.MiniEventGiveawayCampHUD:before{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/6391b886b424174996329aa1eb186a10.png)}.mountainHUD-conduit-purchase .mousehuntItem-image.charm_level_1_trinket_slot{background-image:url(https://i.mouse.rip/upscaled/06e0b1849d75003231f4cbd8eab65a1a.png)}.mountainHUD-footer-item .mousehuntItem-image.abominable_asiago_cheese,.mountainHUD-craftDialog .mousehuntItem-image.abominable_asiago_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/7a83faafedc2d9e81cdf7aec4f1eb9a2.png)}.mountainHUD-footer-item .mousehuntItem-image.cheddore_cheese,.mountainHUD-craftDialog .mousehuntItem-image.cheddore_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/b5dde0c4643e52b8bee8b5d35529bc6e.png)}.mountainHUD-footer-item .mousehuntItem-image.faceted_sugar_crafting_item,.mountainHUD-craftDialog .mousehuntItem-image.faceted_sugar_crafting_item{background-image:url(https://i.mouse.rip/upscaled/faceted_sugar_crafting_item.png)}.mountainHUD-footer-item .mousehuntItem-image.ice_curd_crafting_item,.mountainHUD-craftDialog .mousehuntItem-image.ice_curd_crafting_item{background-image:url(https://i.mouse.rip/upscaled/ice_curd_crafting_item.png)}.mountainHUD-footer-item .mousehuntItem-image.magic_essence_craft_item,.mountainHUD-craftDialog .mousehuntItem-image.magic_essence_craft_item{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/1a5559b59d141e76dec3fe4b8780e5e3.png)}.mountainHUD-phaseContainer.bait .mousehuntItem-image.cheddore_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/b5dde0c4643e52b8bee8b5d35529bc6e.png)}.mountainHUD-phaseContainer.boss .mousehuntItem-image.abominable_asiago_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/7a83faafedc2d9e81cdf7aec4f1eb9a2.png)}.mountainHUD-phaseContainer.boulder .mousehuntItem-image.brie_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/9a8d8cd30ea217263779c4bbef463d69.png)}.mountainHUD-phaseContainer.boulder .mousehuntItem-image.super_brie_cheese{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/32b20c3984d2f03b132c295ea3b99e7e.png)}.mousoleumHUD-crafting-recipe-result-image{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/c2300f93eaaff7c48a78c1520b53ac12.png)}.riftBristleWoodsHUD-portalEquipment.acolyteHourglass .riftBristleWoodsHUD-portalEquipment-image{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/ee5ef616058313371f7779297bce4524.png)}.riftBristleWoodsHUD-portalEquipment.portalScrambler .riftBristleWoodsHUD-portalEquipment-image{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/092ff4aa80863a405073ee9685c4710f.png)}.riftBristleWoodsHUD-portalEquipment.portalWarmer .riftBristleWoodsHUD-portalEquipment-image{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/81e3257baf10421af2fb22d9beeaf89c.png)}.riftFuromaHUD-craftingPopup-recipe-action-magicEssence:after{background-image:url(https://www.mousehuntgame.com/images/items/crafting_items/large/1a5559b59d141e76dec3fe4b8780e5e3.png)}.springEggHuntCampHUD-missingDetector-cost{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/f659a8a07d3877df4165b188f13bb0db.png)}.springHuntHUD-interfaceEgg.century_egg_convertible:after{background-image:url(https://www.mousehuntgame.com/images/items/convertibles/large/d64fc795e30b46f5f8a92f0949ab6988.png)}.springHuntHUD-interfaceEgg.explorers_egg_convertible:after{background-image:url(https://www.mousehuntgame.com/images/items/convertibles/large/fadab13dcd382ee0eb1876ca0c08abd6.png)}.springHuntHUD-interfaceEgg.freshly_painted_egg_convertible:after{background-image:url(https://www.mousehuntgame.com/images/items/convertibles/large/ce737544556d685e1f874c4fd87501ab.png)}.springHuntHUD-interfaceEgg.market_mogul_egg_convertible:after{background-image:url(https://www.mousehuntgame.com/images/items/convertibles/large/6af4279a524e8981a4f77e6cd0c1a8fb.png)}.springHuntHUD-interfaceEgg.workshop_egg_convertible:after{background-image:url(https://www.mousehuntgame.com/images/items/convertibles/large/215cb37ca633fed6e55b1014a371acd6.png)}.townOfGnawniaHUD-bountyRewardContainer{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/f659a8a07d3877df4165b188f13bb0db.png)}.valourRiftHUD-towerUpgradeLevel-costIcon.rift_gaunt_upgrade_a_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/6b1ff750750b9c48dd330bdb9861ed7e.png)}.valourRiftHUD-towerUpgradeLevel-costIcon.rift_gaunt_upgrade_b_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/d4d052ac03c581e15699333f61618e9d.png)}.valourRiftHUD-towerUpgradeLevel-costIcon.shade_eclipse_resource_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/e987c0769410db8389c1b299af66710d.png)}.valourRiftHUD-towerUpgradeLevel-costIcon.total_eclipse_resource_stat_item{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/150c36547680239500d7f75221c5cfac.png)}.warpathHUD-dialog-state.clearWave .warpathHUD-dialog-image .itemImage{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/ef8fb33edf7ca54d7ddfc91a215e4845.png)}.warpathHUD-dialog-state.enterPortal .warpathHUD-dialog-image .itemImage{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/26383ddab530a128c32fb2cc5e9e7405.png)}.campPage-daily-draw-prize-image{background-image:url(https://i.mouse.rip/upscaled/raffle_ticket.png)}.journal .entry.ronza_chrome_voucher_claim{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/a3be8c11176c289f6c79068cbe813968.png)}\n"; } }); // src/modules/image-upscaling/index.js var stripUrl, getMappedUrl, shouldSkipUpdate, shouldSkipUrl, upscaleImageElements, upscaleBackgroundImages, debounceDelay, debounce, upscaleImages, mapping, observer, unupscaledImages, upscaledImages, lastCheck, isUpscaling, observerOptions, main15, handleUpscalingImages, init41, image_upscaling_default; var init_image_upscaling = __esm({ "src/modules/image-upscaling/index.js"() { init_utils2(); init_utils2(); init_upscaled_images_to_skip(); init_journal_themes(); init_styles41(); init_views(); stripUrl = (url) => { return url.replaceAll("//images", "/images").replace("https://www.mousehuntgame.com/images/", "").replaceAll("cv=1", "").replaceAll("cv=2", "").replaceAll("cv=3", "").replaceAll("asset_cache_version=1", "").replaceAll("asset_cache_version=2", "").replaceAll("?", "").replaceAll("&", ""); }; getMappedUrl = (strippedUrl) => { if (!strippedUrl) { return; } const mappedUrl = mapping[strippedUrl]; if (!mappedUrl) { return; } if (mappedUrl.includes("https://")) { return mappedUrl; } if (mappedUrl) { upscaledImages.push(mappedUrl); } return `https://www.mousehuntgame.com/images/${mappedUrl}`; }; shouldSkipUpdate = (type, attribute, items2) => { const itemHash = [...items2].map((item) => { const itemAttribute = item.getAttribute(attribute); if (!itemAttribute) { return ""; } return itemAttribute; }).join(","); if (lastCheck[type] && lastCheck[type] === itemHash) { return true; } lastCheck[type] = itemHash; return false; }; shouldSkipUrl = (url) => { if (unupscaledImages.includes(url) || // Don't re-upscale images that have already been upscaled. upscaledImages.includes(url) || url.startsWith("https://www.gravatar.com") || // Skip some external images. url.startsWith("https://graph.facebook.com") || url.startsWith("https://i.mouse.rip")) { return true; } const skip = upscaled_images_to_skip_default.some((path) => { if (path.includes("*")) { return url.startsWith(path.replace("*", "")); } return url === path; }); return skip; }; upscaleImageElements = () => __async(void 0, null, function* () { const images = document.querySelectorAll("img"); if (!images) { return; } if (shouldSkipUpdate("images", "src", images)) { return; } images.forEach((image) => { const source = image.getAttribute("src"); if (!source) { return; } const url = stripUrl(source); if (shouldSkipUrl(url)) { return; } const mappedUrl = getMappedUrl(url); if (mappedUrl && mappedUrl !== url) { image.setAttribute("src", mappedUrl); } else { unupscaledImages.push(url); } }); }); upscaleBackgroundImages = () => __async(void 0, null, function* () { const backgrounds = document.querySelectorAll('[style*="background-image"]'); if (!backgrounds) { return; } if (shouldSkipUpdate("backgrounds", "style", backgrounds)) { return; } backgrounds.forEach((background) => { const style = background.getAttribute("style"); if (!style || !style.includes("background-image")) { return; } const urls = style.match(/url\((.*?)\)/); if (!urls || !urls[1]) { return; } const url = stripUrl(urls[1].replaceAll(/["']+/g, "")); if (shouldSkipUrl(url)) { return; } const mappedUrl = getMappedUrl(url); if (mappedUrl && mappedUrl !== url) { background.setAttribute("style", style.replace(urls[1], mappedUrl)); } else { unupscaledImages.push(url); } }); }); debounceDelay = 0; debounce = (func, delay) => { debounceDelay = 250; let timeout; return (...args) => __async(void 0, null, function* () { clearTimeout(timeout); timeout = setTimeout(() => __async(void 0, null, function* () { return yield func(...args); }), delay); }); }; upscaleImages = debounce(() => __async(void 0, null, function* () { if (isUpscaling) { return; } isUpscaling = true; observer.disconnect(); yield upscaleImageElements(); yield upscaleBackgroundImages(); isUpscaling = false; observer.observe(document, observerOptions); return true; }), debounceDelay); mapping = []; unupscaledImages = []; upscaledImages = []; lastCheck = { backgrounds: "", images: "" }; isUpscaling = false; observerOptions = { attributes: true, attributeFilter: ["style"], childList: true, subtree: true }; main15 = () => __async(void 0, null, function* () { if (observer) { return; } observer = new MutationObserver((mutations) => __async(void 0, null, function* () { const skipClasses = /* @__PURE__ */ new Set([ "huntersHornView__timerState", "mousehuntHud-gameInfo", "campPage-daily-tomorrow-countDown", "ticker", "mousehuntHeaderView-menu-notification", "mousehunt-improved-lgs-reminder-new", "mousehunt-improved-lgs-reminder", // Select2, search boxes on marketplace and friends list.. "select2-chosen", "select2-offscreen", "select2-container", "select2-search", "select2-drop", "marketplaceView-header-searchContainer", // Markethunt. "highcharts-tracker", "highcharts-grid", "highcharts-axis", "highcharts-axis-labels" ]); const skipIds = /* @__PURE__ */ new Set([ "mh-improved-cre", "mhhh_flast_message_div" ]); const skipElements = /* @__PURE__ */ new Set([ "head", "title", "optgroup", "option" ]); for (const mutation of mutations) { if ((mutation.type === "childList" || mutation.type === "attributes") && (mutation.target.classList && [...mutation.target.classList].some((c) => skipClasses.has(c)) || mutation.target.id && skipIds.has(mutation.target.id) || mutation.target.nodeName && skipElements.has(mutation.target.nodeName.toLowerCase()))) { continue; } yield upscaleImages(mutation.target); } })); observer.observe(document, observerOptions); }); handleUpscalingImages = () => __async(void 0, null, function* () { if (!observer) { yield main15(); } if (isUpscaling) { return; } yield upscaleImages(document.querySelector("body")); }); init41 = () => __async(void 0, null, function* () { addStyles([styles_default40, journal_themes_default, views_default], "image-upscaling"); mapping = yield getData("upscaled-images"); onEvent("mh-improved-init", handleUpscalingImages); onDialogShow("all", handleUpscalingImages); onRequest("*", handleUpscalingImages); }); image_upscaling_default = { id: "image-upscaling", name: "Image Upscaling & Transparency", type: "feature", default: true, description: "Updates all images to use higher resolution versions with transparent backgrounds.", load: init41 }; } }); // src/modules/inline-wiki/styles.css var styles_default41; var init_styles42 = __esm({ "src/modules/inline-wiki/styles.css"() { styles_default41 = "#wiki-iframe{width:100%;height:100%;min-height:100vh}.mousehuntHud-menu .wiki .external_icon{display:none}\n"; } }); // src/modules/inline-wiki/index.js var openWiki, getLink, wikiListener, addMenuListener, removeMenuListener, clickWiki, listener, main16, init42, inline_wiki_default; var init_inline_wiki = __esm({ "src/modules/inline-wiki/index.js"() { init_utils2(); init_styles42(); openWiki = () => { const iframe = document.createElement("iframe"); iframe.id = "wiki-iframe"; iframe.src = "https://mhwiki.hitgrab.com/wiki/index.php/MouseHunt_Wiki"; makePage(iframe); }; getLink = () => { const wikiLink = document.querySelector(".mousehuntHud-menu ul li ul li.wiki a"); if (wikiLink) { return wikiLink; } return null; }; wikiListener = (e) => { e.preventDefault(); openWiki(); }; addMenuListener = () => { const wikiLink = getLink(); if (wikiLink && !listener) { listener = wikiLink.addEventListener("click", wikiListener); } }; removeMenuListener = () => { const wikiLink = getLink(); if (wikiLink && listener) { wikiLink.removeEventListener("click", wikiListener); listener = null; } }; clickWiki = () => { const wikiLink = getLink(); if (wikiLink) { wikiLink.click(); } }; listener = null; main16 = () => { addMenuListener(); onEvent("mh-improved-open-wiki", clickWiki); }; init42 = () => __async(void 0, null, function* () { addStyles(styles_default41, "inline-wiki"); main16(); onActivation("inline-wiki", main16); onDeactivation("inline-wiki", removeMenuListener); }); inline_wiki_default = { id: "inline-wiki", name: "Inline Wiki", type: "feature", default: true, description: "Clicking 'Wiki' in the menu will load it right in the page, rather than opening a new tab.", load: init42 }; } }); // src/modules/inventory-lock-and-hide/styles.css var styles_default42; var init_styles43 = __esm({ "src/modules/inventory-lock-and-hide/styles.css"() { styles_default42 = ".mhui-inventory-lock-and-hide-controls-wrapper{position:absolute;top:0;right:10px;display:flex;gap:10px}.mousehuntHud-page-tabContent.traps .mhui-inventory-lock-and-hide-controls-wrapper{top:-30px}.mhui-inventory-lock-and-hide-bulk-controls{display:none;gap:10px;margin-left:10px}.mhui-inventory-lock-and-hide-controls-active .mhui-inventory-lock-and-hide-bulk-controls{display:inline-flex}.inventoryPage-tagContent.mhui-inventory-lock-and-hide-controls-active{border-radius:5px;outline:3px solid #f37c7c}.mhui-inventory-lock-and-hide-item-controls{position:absolute;inset:0;display:none;flex-flow:row nowrap;align-items:flex-start;justify-content:space-evenly;background-color:#ffffff7f}.mhui-inventory-lock-and-hide-controls-active .mhui-inventory-lock-and-hide-item-controls{display:flex}.mhui-inventory-lock-and-hide-controls-active .inventoryPage-item.hidden{display:inline-block}.mhui-inventory-lock-and-hide-controls-active .inventoryPage-item.hidden .inventoryPage-item-margin{background-color:#939393}.mhui-inventory-lock-and-hide-controls-active .inventoryPage-item.locked{display:inline-block}.mhui-inventory-lock-and-hide-controls-active .inventoryPage-item.locked .inventoryPage-item-margin{background-color:#ff7b00}.mhui-inventory-lock-and-hide-controls-active .locked.message_item.inventoryPage-item.small,.mhui-inventory-lock-and-hide-controls-active .locked.bait.inventoryPage-item.small{pointer-events:auto}.mhui-inventory-lock-and-hide-controls-active .tooltip{display:none;visibility:hidden;opacity:0}.locked .inventoryPage-item-content-action,.locked.message_item.inventoryPage-item.small .inventoryPage-item-button,.locked.bait.inventoryPage-item.small .inventoryPage-item-button,.locked .inventoryPage-item-recipeOptions,.locked .campPage-trap-itemBrowser-item-armButton,.locked .inventoryPage-item-imageContainer-action{pointer-events:none;filter:grayscale(1)}.locked.message_item.inventoryPage-item.small,.locked.bait.inventoryPage-item.small{pointer-events:none}.mousehuntHud-page-subTabContent.trinket .mousehuntHud-page-subTabContent-prefix{display:none}.inventoryPage-tagContent-tagTitle{display:flex;align-items:center;padding:0 5px 10px;margin:0;font-size:1.4em;border:none}span.inventoryPage-tagContent-tagTitle.tsitu-lock-convertible{top:-5px;right:110px;font-size:.75em}span.inventoryPage-tagContent-tagTitle.tsitu-lock-convertible button{padding:2px;font-size:1em}.mhui-inventory-lock-and-hide-hidden-count{margin-left:5px}.mhui-inventory-lock-and-hide-controls-lock{min-width:35px}.mhui-inventory-lock-and-hide-controls-hide{min-width:25px}\n"; } }); // src/modules/inventory-lock-and-hide/index.js var saveSettings, getSettings2, shouldAddLocks, addControlsToItems, updateGroupTitles, maybeLockOrHideItems, addBulkControls, getCurrentTabContainer, addLockAndHideControls, hideItemsInTrapBrowser, itemSettings, main17, toggleControls, onSetPage, init43, inventory_lock_and_hide_default; var init_inventory_lock_and_hide = __esm({ "src/modules/inventory-lock-and-hide/index.js"() { init_utils2(); init_styles43(); saveSettings = (shouldUpdateTitles = true) => { saveSetting("inventory-lock-and-hide.items", itemSettings); if (shouldUpdateTitles) { updateGroupTitles(); } }; getSettings2 = () => { return getSetting("inventory-lock-and-hide.items", { locked: [], hidden: [] }); }; shouldAddLocks = (currentTab) => { return "collectibles" !== currentTab || "bait" !== currentTab; }; addControlsToItems = () => __async(void 0, null, function* () { const items2 = document.querySelectorAll(".inventoryPage-item"); if (!items2) { return; } const currentTab = getCurrentTab(); items2.forEach((item) => { let id = item.getAttribute("data-item-id"); id = Number.parseInt(id, 10); if (!id) { return; } const hasControls = item.querySelector(".mhui-inventory-lock-and-hide-item-controls"); if (hasControls) { return; } let isLocked = (itemSettings == null ? void 0 : itemSettings.locked) ? itemSettings.locked.includes(id) : false; let isHidden2 = (itemSettings == null ? void 0 : itemSettings.hidden) ? itemSettings.hidden.includes(id) : false; const controls = makeElement("div", "mhui-inventory-lock-and-hide-item-controls"); if (shouldAddLocks(currentTab)) { const lock = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-inventory-lock-and-hide-controls-lock"]); const lockText = makeElement("span", "", isLocked ? "Unlock" : "Lock"); lock.append(lockText); const clickLock = (e) => { e.preventDefault(); e.stopPropagation(); if (isLocked) { itemSettings.locked = itemSettings.locked.filter((i) => i !== id); lockText.innerText = "Lock"; isLocked = false; item.classList.remove("locked"); } else { itemSettings.locked.push(id); lockText.innerText = "Unlock"; isLocked = true; item.classList.add("locked"); } saveSettings(); }; lock.addEventListener("click", clickLock); controls.addEventListener("click", (e) => { if (e.altKey && e.shiftKey || e.metaKey) { clickLock(e); } }); controls.append(lock); } const hide = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-inventory-lock-and-hide-controls-hide"]); const hideText = makeElement("span", "", isHidden2 ? "Show" : "Hide"); hide.append(hideText); const clickHide = (e) => { e.preventDefault(); e.stopPropagation(); if (isHidden2) { itemSettings.hidden = itemSettings.hidden.filter((i) => i !== id); hideText.innerText = "Hide"; isHidden2 = false; item.classList.remove("hidden"); } else { itemSettings.hidden.push(id); hideText.innerText = "Show"; isHidden2 = true; item.classList.add("hidden"); } saveSettings(); }; hide.addEventListener("click", clickHide); controls.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); if (e.altKey && !e.shiftKey) { clickHide(e); } }); controls.append(hide); item.append(controls); }); }); updateGroupTitles = () => { const container = getCurrentTabContainer(); if (!container) { return; } const groups2 = container.querySelectorAll(".inventoryPage-tagContent-tagGroup"); if (!groups2) { return; } groups2.forEach((group) => { const title = group.querySelector(".inventoryPage-tagContent-tagTitle"); if (!title) { return; } const hiddenItems = group.querySelectorAll(".inventoryPage-item.hidden"); if (!hiddenItems) { return; } const existingCount = title.querySelector(".mhui-inventory-lock-and-hide-hidden-count"); if (existingCount) { existingCount.remove(); } if (0 === hiddenItems.length) { return; } makeElement("span", "mhui-inventory-lock-and-hide-hidden-count", ` (${hiddenItems.length} hidden)`, title); }); }; maybeLockOrHideItems = () => __async(void 0, null, function* () { var _a, _b; const items2 = document.querySelectorAll(".inventoryPage-item"); if (!items2) { return; } for (const item of items2) { let id = item.getAttribute("data-item-id"); id = Number.parseInt(id, 10); if (!id) { return; } if (((_a = itemSettings == null ? void 0 : itemSettings.locked) == null ? void 0 : _a.length) > 0 && itemSettings.locked.includes(id)) { item.classList.add("locked"); } if (((_b = itemSettings == null ? void 0 : itemSettings.hidden) == null ? void 0 : _b.length) > 0 && itemSettings.hidden.includes(id)) { item.classList.add("hidden"); } } updateGroupTitles(); }); addBulkControls = () => { if (!shouldAddLocks(getCurrentTab())) { return; } const container = getCurrentTabContainer(); if (!container) { return; } const groups2 = container.querySelectorAll(".inventoryPage-tagContent-tagGroup"); if (!groups2) { return; } groups2.forEach((group) => { const title = group.querySelector(".inventoryPage-tagContent-tagTitle"); if (!title) { return; } const existingControls = title.querySelector(".mhui-inventory-lock-and-hide-bulk-controls"); if (existingControls) { return; } const controls = makeElement("div", "mhui-inventory-lock-and-hide-bulk-controls"); const lock = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-inventory-lock-and-hide-controls-lock"]); const lockText = makeElement("span", "", "Lock All"); lock.append(lockText); lock.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); const items2 = group.querySelectorAll(".inventoryPage-item"); if (!items2) { return; } items2.forEach((item) => { const id = item.getAttribute("data-item-id"); if (!id) { return; } if (itemSettings.locked.includes(id)) { return; } itemSettings.locked.push(id); item.classList.add("locked"); const lockButtonText = item.querySelector(".mhui-inventory-lock-and-hide-controls-lock span"); if (lockButtonText) { lockButtonText.innerText = "Unlock"; } }); saveSettings(false); }); controls.append(lock); const unlock = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-inventory-lock-and-hide-controls-lock"]); const unlockText = makeElement("span", "", "Unlock All"); unlock.append(unlockText); unlock.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); const items2 = group.querySelectorAll(".inventoryPage-item"); if (!items2) { return; } items2.forEach((item) => { const id = item.getAttribute("data-item-id"); if (!id) { return; } if (!itemSettings.locked.includes(id)) { return; } itemSettings.locked = itemSettings.locked.filter((i) => i !== id); item.classList.remove("locked"); const lockButtonText = item.querySelector(".mhui-inventory-lock-and-hide-controls-lock span"); if (lockButtonText) { lockButtonText.innerText = "Lock"; } }); saveSettings(); }); controls.append(unlock); title.append(controls); }); }; getCurrentTabContainer = () => { let currentTab = getCurrentTab(); if (!currentTab || "inventory" === currentTab) { currentTab = "cheese"; } return document.querySelector(`.mousehuntHud-page-tabContent.${currentTab} .mousehuntHud-page-subTabContent.active`); }; addLockAndHideControls = () => { if ("inventory" !== getCurrentPage()) { return; } let currentTab = getCurrentTab(); if (!currentTab || "inventory" === currentTab) { currentTab = "cheese"; } if ("crafting" === currentTab || "plankrun" === currentTab) { return; } const container = getCurrentTabContainer(); if (!container) { return; } if (container.hasAttribute("mh-improved-inventory-lock-and-hide")) { return; } container.setAttribute("mh-improved-inventory-lock-and-hide", true); const controlsWrapper = makeElement("div", "mhui-inventory-lock-and-hide-controls-wrapper"); const controls = makeElement("div", ["mousehuntActionButton", "tiny", "mhui-inventory-lock-and-hide-controls"]); const text = makeElement("span", "", "Toggle Lock/Hide"); controls.append(text); let isEditing3 = false; controls.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); addBulkControls(); addControlsToItems(); isEditing3 = !isEditing3; container.setAttribute("mhui-inventory-lock-and-hide-controls-active", isEditing3); container.classList.toggle("mhui-inventory-lock-and-hide-controls-active"); }); controlsWrapper.append(controls); container.prepend(controlsWrapper); }; hideItemsInTrapBrowser = () => __async(void 0, null, function* () { const items2 = document.querySelectorAll(".campPage-trap-itemBrowser-item"); if (!items2) { return; } itemSettings = getSettings2(); items2.forEach((item) => { let id = item.getAttribute("data-item-id"); id = Number.parseInt(id, 10); if (!id) { return; } if (itemSettings.hidden.includes(id)) { item.classList.add("hidden"); } if (itemSettings.locked.includes(id)) { item.classList.add("locked"); } }); }); main17 = () => __async(void 0, null, function* () { itemSettings = getSettings2(); maybeLockOrHideItems(); addLockAndHideControls(); }); toggleControls = () => { const button = document.querySelector(".mhui-inventory-lock-and-hide-controls"); if (button) { button.click(); } }; onSetPage = () => { main17(); addEvent("ajax_request", main17, { removeAfterFire: true, id: "inventory-lock-and-hide" }); }; init43 = () => __async(void 0, null, function* () { addStyles(styles_default42, "inventory-lock-and-hide"); main17(); onNavigation(onSetPage, { page: "inventory", anyTab: true, anySubTab: true }); onEvent("camp_page_toggle_blueprint", hideItemsInTrapBrowser); onEvent("mh-improved-toggle-inventory-lock", toggleControls); }); inventory_lock_and_hide_default = { id: "inventory-lock-and-hide", name: "Inventory - Lock and Hide", type: "feature", default: true, description: "Lock and hide items in your inventory. Will also hide items in the trap browser.", load: init43 }; } }); // src/modules/inventory-only-open-multiple/styles.css var styles_default43; var init_styles44 = __esm({ "src/modules/inventory-only-open-multiple/styles.css"() { styles_default43 = ".inventoryPage-item.convertible .inventoryPage-item-content-action input:first-of-type:not(:only-of-type){pointer-events:all;filter:grayscale(0)}.inventoryPage-item.convertible .inventoryPage-item-content-action input[data-item-action=all],.inventoryPage-item.convertible .inventoryPage-item-content-action input[data-item-action=single]{pointer-events:none;filter:grayscale(1)}.inventoryPage-item.convertible .inventoryPage-item-content-action input.allButOne{pointer-events:all;filter:none}.inventoryPage-item.convertible .inventoryPage-item-content-action input:first-of-type:not(:only-of-type),.inventoryPage-item.convertible .inventoryPage-item-content-action input.allButOne{pointer-events:none}\n"; } }); // src/modules/inventory-only-open-multiple/index.js var init44, inventory_only_open_multiple_default; var init_inventory_only_open_multiple = __esm({ "src/modules/inventory-only-open-multiple/index.js"() { init_utils2(); init_styles44(); init44 = () => __async(void 0, null, function* () { addStyles(styles_default43, "only-open-multiple"); }); inventory_only_open_multiple_default = { id: "only-open-multiple", name: "Inventory - Only Open Multiple", type: "feature", default: false, description: "Lock opening things in your inventory unless you have multiple of them.", load: init44 }; } }); // src/modules/inventory-open-all-but-one/styles.css var styles_default44; var init_styles45 = __esm({ "src/modules/inventory-open-all-but-one/styles.css"() { styles_default44 = ""; } }); // src/modules/inventory-open-all-but-one/index.js var getQuantityInput, replaceOpenAction, addOpenAllButOneButton, init45, inventory_open_all_but_one_default; var init_inventory_open_all_but_one = __esm({ "src/modules/inventory-open-all-but-one/index.js"() { init_utils2(); init_styles45(); getQuantityInput = () => { const quantity = document.querySelector(".itemView-action-convert-quantity"); if (!quantity) { return false; } return quantity; }; replaceOpenAction = () => { const _original2 = app.pages.InventoryPage.useConvertible; app.pages.InventoryPage.useConvertible = (element) => { if (element.getAttribute("data-item-action") === "all-but-one") { const itemType = element.getAttribute("data-item-type"); hg.views.ItemView.show(itemType); const interval = setInterval(() => { const quantityEl = document.querySelector(".itemView-action-convertForm"); let maxQuantity = 0; if (quantityEl && quantityEl.innerText.includes("/")) { maxQuantity = Number.parseInt(quantityEl.innerText.split("/")[1].trim(), 10); } const quantity = maxQuantity - 1; const quantityInput = getQuantityInput(); if (quantityInput) { clearInterval(interval); quantityInput.value = quantity; const useButton = document.querySelector(".itemView-action-convert-actionButton"); if (useButton) { useButton.click(); } } }, 100); } else { _original2(element); } }; }; addOpenAllButOneButton = () => { const convertibleItems = document.querySelectorAll('.inventoryPage-item.convertible[data-item-classification="convertible"]'); if (!convertibleItems.length) { return; } const existingButtons = document.querySelectorAll(".open-all-but-one"); existingButtons.forEach((button) => { button.remove(); }); convertibleItems.forEach((item) => { const button = item.querySelector('.inventoryPage-item-button[data-item-action="all"]'); if (!button) { return; } const newButton = button.cloneNode(true); newButton.classList.add("open-all-but-one"); newButton.textContent = "All but One"; newButton.value = "All but One"; newButton.setAttribute("data-item-action", "all-but-one"); button.parentNode.insertBefore(newButton, button.nextSibling); }); }; init45 = () => __async(void 0, null, function* () { addStyles(styles_default44, "open-all-but-one"); replaceOpenAction(); addOpenAllButOneButton(); onNavigation(() => { addOpenAllButOneButton(); }, { page: "inventory" }); }); inventory_open_all_but_one_default = { id: "open-all-but-one", name: "Inventory - Open All but One", type: "feature", default: true, description: "Adds 'Open All But One' buttons to convertible items in your inventory.", load: init45 }; } }); // src/modules/journal-changer/journals.json var journals_default; var init_journals = __esm({ "src/modules/journal-changer/journals.json"() { journals_default = [ { type: "theme_bristle_woods_rift", environments: [ "rift_bristle_woods" ] }, { type: "theme_burroughs_rift", environments: [ "rift_burroughs" ] }, { type: "theme_fungal", environments: [ "fungal_cavern" ] }, { type: "theme_labyrinth", environments: [ "labyrinth", "ancient_city" ] }, { type: "theme_living_garden", environments: [ "desert_oasis", "lost_city", "sand_dunes" ] }, { type: "theme_western", environments: [ "claw_shot_city" ] }, { type: "theme_moussu_picchu", environments: [ "moussu_picchu" ] }, { type: "theme_polluted", environments: [ "pollution_outbreak" ] }, { type: "theme_queso_canyon", environments: [ "queso_river", "queso_plains", "queso_quarry", "queso_geyser" ] }, { type: "theme_bountiful_beanstalk", environments: [ "bountiful_beanstalk" ] }, { type: "theme_table_of_contents", environments: [ "table_of_contents", "prologue_pond", "foreword_farm" ] } ]; } }); // src/modules/journal-changer/settings/index.js var settings_default24; var init_settings25 = __esm({ "src/modules/journal-changer/settings/index.js"() { settings_default24 = () => __async(void 0, null, function* () { return [ { id: "journal-changer.change-daily", title: "Randomize daily", default: false, description: "" }, { id: "journal-changer.change-location", title: "Change based on location", default: false, description: "" } ]; }); } }); // src/modules/journal-changer/styles.css var styles_default45; var init_styles46 = __esm({ "src/modules/journal-changer/styles.css"() { styles_default45 = ".journalContainer .top{display:flex;gap:3px;align-items:flex-start;justify-content:flex-end}.journalContainer-selectTheme{position:relative;background-color:#e6e6e6}.mh-improved-random-journal{background-image:url(https://i.mouse.rip/mh-improved/journal-random.png)}#journalContainer .journal__privacy-button{margin-right:85px;background:#e6e6e6;border:1px solid #333}\n"; } }); // src/modules/journal-changer/index.js var themes, getJournalThemes, updateJournalTheme, getCurrentJournalTheme, getJournalThemeForLocation, changeForLocation, randomizeTheme, addRandomButton, changeJournalDaily, init46, journal_changer_default; var init_journal_changer = __esm({ "src/modules/journal-changer/index.js"() { init_utils2(); init_journals(); init_settings25(); init_styles46(); themes = []; getJournalThemes = () => __async(void 0, null, function* () { const req = yield doRequest("managers/ajax/users/journal_theme.php", { action: "get_themes" }); if (!req || !req.journal_themes) { return []; } return req.journal_themes.theme_list.filter((theme) => theme.can_equip === true); }); updateJournalTheme = (theme) => __async(void 0, null, function* () { const current = getCurrentJournalTheme(); const req = yield doRequest("managers/ajax/users/journal_theme.php", { action: "set_theme", theme }); if (req.success) { const journal = document.querySelector("#journalContainer"); if (journal) { journal.classList.remove(current); journal.classList.add(theme); } } return req; }); getCurrentJournalTheme = () => { const journal = document.querySelector("#journalContainer"); if (!journal) { return false; } return [...journal.classList].find((cls) => cls.startsWith("theme_")); }; getJournalThemeForLocation = () => { const location = getCurrentLocation(); const journalTheme = journals_default.find((j) => j.environments.includes(location)); if (!journalTheme) { return false; } if (themes.some((t) => t.type === journalTheme.type)) { return journalTheme.type; } return journalTheme.type; }; changeForLocation = () => __async(void 0, null, function* () { const newTheme = getJournalThemeForLocation(); if (!newTheme) { return; } if (themes.length === 0) { themes = yield getJournalThemes(); } const currentTheme = getCurrentJournalTheme(); if (!currentTheme) { return; } if (!themes.some((t) => t.type === newTheme)) { return; } if (currentTheme === newTheme) { return; } updateJournalTheme(newTheme); const journal = document.querySelector("#journalContainer"); if (journal) { journal.classList.remove(currentTheme); journal.classList.add(newTheme); } }); randomizeTheme = (skip = false) => __async(void 0, null, function* () { if (themes.length === 0) { themes = yield getJournalThemes(); } if (skip) { themes = themes.filter((t) => t.type !== skip); } const current = getCurrentJournalTheme(); if (current) { themes = themes.filter((t) => t.type !== current); } const theme = themes[Math.floor(Math.random() * themes.length)]; updateJournalTheme(theme.type); return theme.type; }); addRandomButton = () => { const journal = document.querySelector("#journalContainer .top"); if (!journal) { return; } const button = makeElement("a", ["journalContainer-selectTheme", "mh-improved-random-journal"], "Randomize"); button.addEventListener("click", randomizeTheme); journal.append(button); }; changeJournalDaily = () => __async(void 0, null, function* () { const lastChangeValue = getSetting("journal-changer.last-change", 0); const lastChange = new Date(Number.parseInt(lastChangeValue, 10)); const now = /* @__PURE__ */ new Date(); if (!lastChange || lastChange.getDate() !== now.getDate() || lastChange.getMonth() !== now.getMonth() || lastChange.getFullYear() !== now.getFullYear()) { const lastTheme = getSetting("journal-changer.last-theme", false); const theme = yield randomizeTheme(lastTheme); saveSetting("journal-changer.last-change", now.getTime()); saveSetting("journal-changer.last-theme", theme); } }); init46 = () => __async(void 0, null, function* () { addStyles(styles_default45, "journal-changer"); if (getSetting("journal-changer.change-daily", false)) { changeJournalDaily(); } if (getSetting("journal-changer.change-location", true)) { changeForLocation(); onEvent("travel_complete", changeForLocation); } onNavigation(addRandomButton, { page: "camp" }); }); journal_changer_default = { id: "journal-changer", name: "Journal Theme Changer", type: "feature", default: false, description: "Randomize your journal theme, randomize it daily, or change it based on your location.", load: init46, settings: settings_default24 }; } }); // src/modules/journal-privacy/settings/index.js var settings_default25; var init_settings26 = __esm({ "src/modules/journal-privacy/settings/index.js"() { settings_default25 = () => __async(void 0, null, function* () { return [ { id: "journal-privacy.show-toggle-icon", title: "Show toggle icon in top menu", default: true } ]; }); } }); // src/modules/journal-privacy/icon.css var icon_default; var init_icon = __esm({ "src/modules/journal-privacy/icon.css"() { icon_default = `.mousehuntHeaderView .menuItem.mousehunt-improved-journal-privacy-icon{display:flex;align-items:center;justify-content:center;width:20px;height:25px;padding:0;opacity:.5}.mousehuntHeaderView .menuItem.mousehunt-improved-journal-privacy-icon:hover{opacity:1}.mh-journal-privacy-enabled .mousehunt-improved-journal-privacy-icon:before,.mh-journal-privacy-disabled .mousehunt-improved-journal-privacy-icon:before{display:block;width:15px;height:15px;content:"";background-repeat:no-repeat;background-size:contain}.mh-journal-privacy-enabled .mousehunt-improved-journal-privacy-icon:before{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path d="M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" /><path fill-rule="evenodd" d="M.664 10.59a1.651 1.651 0 0 1 0-1.186A10.004 10.004 0 0 1 10 3c4.257 0 7.893 2.66 9.336 6.41.147.381.146.804 0 1.186A10.004 10.004 0 0 1 10 17c-4.257 0-7.893-2.66-9.336-6.41ZM14 10a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z" clip-rule="evenodd" /></svg>')}.mh-journal-privacy-disabled .mousehunt-improved-journal-privacy-icon:before{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M3.28 2.22a.75.75 0 0 0-1.06 1.06l14.5 14.5a.75.75 0 1 0 1.06-1.06l-1.745-1.745a10.029 10.029 0 0 0 3.3-4.38 1.651 1.651 0 0 0 0-1.185A10.004 10.004 0 0 0 9.999 3a9.956 9.956 0 0 0-4.744 1.194L3.28 2.22ZM7.752 6.69l1.092 1.092a2.5 2.5 0 0 1 3.374 3.373l1.091 1.092a4 4 0 0 0-5.557-5.557Z" clip-rule="evenodd" /><path d="m10.748 13.93 2.523 2.523a9.987 9.987 0 0 1-3.27.547c-4.258 0-7.894-2.66-9.337-6.41a1.651 1.651 0 0 1 0-1.186A10.007 10.007 0 0 1 2.839 6.02L6.07 9.252a4 4 0 0 0 4.678 4.678Z" /></svg>')} `; } }); // src/modules/journal-privacy/styles.css var styles_default46; var init_styles47 = __esm({ "src/modules/journal-privacy/styles.css"() { styles_default46 = '.mh-journal-privacy-enabled #journalContainer .entry:not(.badge) a[href*="profile.php"],.mh-journal-privacy-enabled #journalContainer .entry.socialGift .journaltext a,.mh-journal-privacy-enabled #journalContainer .relicHunter_complete>.journalbody>.journaltext>b:nth-child(6),.mh-journal-privacy-enabled #journalContainer .wanted_poster-complete>.journalbody>.journaltext>b:nth-child(8),.mh-journal-privacy-enabled #journalContainer .journal__hunter-name,.mh-journal-privacy-enabled .mh-journal-privacy-name{display:inline-block;color:transparent;transition:color .3s}.mh-journal-privacy-enabled #journalContainer .entry:not(.badge) #friend-data-wrapper a[href*="profile.php"]{color:#000}.mh-journal-privacy-enabled #journalContainer .entry:not(.badge) a[href*="profile.php"]:hover,.mh-journal-privacy-enabled #journalContainer .entry:not(.badge) a[href*="profile.php"]:focus,.mh-journal-privacy-enabled #journalContainer .entry.socialGift .journaltext a:hover,.mh-journal-privacy-enabled #journalContainer .entry.socialGift .journaltext a:focus,.mh-journal-privacy-enabled #journalContainer .relicHunter_complete>.journalbody>.journaltext>b:nth-child(6):hover,.mh-journal-privacy-enabled #journalContainer .relicHunter_complete>.journalbody>.journaltext>b:nth-child(6):focus,.mh-journal-privacy-enabled #journalContainer .wanted_poster-complete>.journalbody>.journaltext>b:nth-child(8):hover,.mh-journal-privacy-enabled #journalContainer .wanted_poster-complete>.journalbody>.journaltext>b:nth-child(8):focus #journalContainer .journal__hunter-name:hover,.mh-journal-privacy-enabled #journalContainer .journal__hunter-name:focus,.mh-journal-privacy-enabled .mh-journal-privacy-name:hover,.mh-journal-privacy-enabled .mh-journal-privacy-name:focus{display:inline;color:#3b5998}\n'; } }); // src/modules/journal-privacy/index.js var applyClassToNames, removeClassFromNames, enablePrivacy, disablePrivacy, addIcon2, removeIcon, isPrivacyEnabled, init47, journal_privacy_default; var init_journal_privacy = __esm({ "src/modules/journal-privacy/index.js"() { init_utils2(); init_settings26(); init_icon(); init_styles47(); applyClassToNames = () => { if (!isPrivacyEnabled) { return; } const entries = document.querySelectorAll("#journalContainer .entry.relicHunter_start .journaltext"); if (!entries) { return; } entries.forEach((entry) => { if (!entry || !entry.textContent) { return; } if (entry.getAttribute("replaced") === "true") { return; } const match = entry.textContent.match(/(.*)( has joined the | has left the | used Rare Map Dust |, the map owner, has )/); if (match && match[1]) { const span = document.createElement("span"); span.classList.add("mh-journal-privacy-name"); span.textContent = match[1]; entry.setAttribute("data-original", match[1]); entry.setAttribute("replaced", "true"); entry.innerHTML = entry.innerHTML.replace(match[1], span.outerHTML); } }); }; removeClassFromNames = () => { if (isPrivacyEnabled) { return; } const entries = document.querySelectorAll("#journalContainer .entry.relicHunter_start .journaltext"); if (!entries) { return; } entries.forEach((entry) => { if (!entry || !entry.textContent) { return; } if (entry.getAttribute("replaced") !== "true") { return; } const span = entry.querySelector(".mh-journal-privacy-name"); if (span) { entry.innerHTML = entry.innerHTML.replace(span.outerHTML, span.textContent); entry.removeAttribute("replaced"); } }); }; enablePrivacy = () => { addBodyClass("mh-journal-privacy-enabled", true); removeBodyClass("mh-journal-privacy-disabled"); applyClassToNames(); }; disablePrivacy = () => { removeBodyClass("mh-journal-privacy-enabled"); addBodyClass("mh-journal-privacy-disabled", true); removeClassFromNames(); }; addIcon2 = () => { if (!getSetting("journal-privacy.show-toggle-icon", false)) { return; } const existingIcon = document.querySelector("#mousehunt-improved-journal-privacy"); if (existingIcon) { existingIcon.style.display = ""; existingIcon.style.visibility = ""; return; } addIconToMenu({ id: "mousehunt-improved-journal-privacy", classname: "mousehunt-improved-journal-privacy-icon", title: "Toggle Journal Privacy", position: "prepend", action: () => { isPrivacyEnabled = !isPrivacyEnabled; if (isPrivacyEnabled) { disablePrivacy(); } else { enablePrivacy(); } } }); }; removeIcon = () => { if (getSetting("journal-privacy.show-toggle-icon", false)) { return; } const icon = document.querySelector("#mousehunt-improved-journal-privacy"); if (icon) { icon.style.display = "none"; icon.style.visibility = "hidden"; } }; isPrivacyEnabled = true; init47 = () => __async(void 0, null, function* () { addStyles([styles_default46, icon_default], "journal-privacy"); enablePrivacy(); if (getSetting("journal-privacy.show-toggle-icon", false)) { addIcon2(); disablePrivacy(); } onRequest("pages/journal.php", applyClassToNames); onActivation(() => { addIcon2(); enablePrivacy(); }); onDeactivation(() => { removeIcon(); disablePrivacy(); }); onSettingsChange("journal-privacy.show-toggle-icon", { enable: addIcon2, disable: removeIcon }); }); journal_privacy_default = { id: "journal-privacy", name: "Journal Privacy", type: "element-hiding", default: false, description: "Hides player names in the journal. Good for screenshots that won't dox them.", load: init47, settings: settings_default25 }; } }); // src/modules/keyboard-shortcuts/actions.js var actions_default; var init_actions = __esm({ "src/modules/keyboard-shortcuts/actions.js"() { init_utils2(); actions_default = () => { const shortcuts = [ { id: "goto-travel", key: "t", description: "Travel", action: () => setPage("Travel"), category: "navigation" }, { id: "goto-camp", key: "j", description: "Camp", action: () => setPage("Camp"), category: "navigation" }, { id: "goto-friends", key: "f", description: "Friends", action: () => setPage("Friends"), category: "navigation" }, { id: "goto-shops", key: "s", description: "Shops", action: () => setPage("Shops"), category: "navigation" }, { id: "goto-profile", key: "p", description: "Your Hunter Profile", action: () => setPage("HunterProfile"), category: "navigation" }, { id: "goto-send-supplies", description: "Send Supplies", action: () => setPage("SupplyTransfer"), category: "navigation" }, { id: "goto-scoreboards", description: "Scoreboards", action: () => setPage("Scoreboards"), category: "navigation" }, { id: "goto-team", description: "Team", action: () => setPage("Team"), category: "navigation" }, { id: "goto-tournaments", description: "Tournaments", action: () => setPage("Tournament"), category: "navigation" }, { id: "goto-wiki", description: "Wiki", action: () => setPage("Wiki"), category: "navigation" }, { id: "goto-marketplace", description: "Open the Marketplace", action: () => hg.views.MarketplaceView.show(), category: "open-dialog" }, { id: "open-inbox", description: "Open the Inbox", action: () => messenger.UI.notification.togglePopup(), category: "open-dialog" }, { id: "open-gifts", description: "Open the Gifts popup", action: () => hg.views.GiftSelectorView.show(), category: "open-dialog" }, { id: "open-map", key: "m", description: "Open your Map", action: () => hg.controllers.TreasureMapController.show(), category: "open-dialog" }, { id: "open-map-invites", key: "i", description: "Open your Map Invites", action: () => hg.controllers.TreasureMapController.showCommunity(), category: "open-dialog" }, { id: "open-travel-window", description: "Open the Travel Window", action: () => doEvent2("mh-improved-open-travel-window"), category: "open-dialog" }, { id: "change-weapon", key: "w", description: "Change Weapon", action: () => hg.views.TrapSelectorView().show("weapon"), category: "trap-setup" }, { id: "change-base", key: "b", description: "Change Base", action: () => hg.views.TrapSelectorView().show("base"), category: "trap-setup" }, { id: "change-charm", key: "r", description: "Change Charm", action: () => hg.views.TrapSelectorView().show("trinket"), category: "trap-setup" }, { id: "change-cheese", key: "c", description: "Change Cheese", action: () => hg.views.TrapSelectorView().show("bait"), category: "trap-setup" }, { id: "change-skin", description: "Change Trap Skin", action: () => hg.views.TrapSelectorView().show("skin"), category: "trap-setup" }, { id: "show-tem", key: "e", description: 'Show the <abbr title="Trap Effectiveness Meter">TEM</abbr>', action: () => { const tem = document.querySelector("button.campPage-trap-trapEffectiveness.campPage-trap-statsContainer"); if (tem) { tem.click(); } }, category: "trap-setup" }, { id: "disarm-cheese", description: "Disarm your Cheese", action: () => hg.utils.TrapControl.disarmBait().go(), category: "trap-setup" }, { id: "disarm-charm", description: "Disarm your Charm", action: () => hg.utils.TrapControl.disarmTrinket().go(), category: "trap-setup" }, { id: "travel-to-previous-location", description: "Travel to previous location", action: () => doEvent2("mh-improved-goto-previous-location"), category: "misc" }, { id: "toggle-inventory-lock", description: "Toggle Inventory Lock & Hide", action: () => doEvent2("mh-improved-toggle-inventory-lock"), category: "misc" }, { id: "favorite-setups", description: "Open Favorite Setups", action: () => doEvent2("mh-improved-toggle-favorite-setups"), category: "trap-setup" } ]; if (hasMiniCRE()) { shortcuts.push({ id: "show-mini-cre", key: "l", description: "Open Mini CRE", action: () => { const minluckButton = document.querySelector(".min-luck-button"); if (minluckButton) { minluckButton.click(); } }, category: "misc" }); } return shortcuts; }; } }); // src/modules/keyboard-shortcuts/styles.css var styles_default47; var init_styles48 = __esm({ "src/modules/keyboard-shortcuts/styles.css"() { styles_default47 = ".mh-ui-keyboard-shortcuts-popup-content h2{margin-bottom:10px}.mh-ui-keyboard-shortcut{display:flex;align-items:center;justify-content:space-between;padding:5px;font-size:12px;border-bottom:1px solid #ccc}.mh-ui-keyboard-shortcut:last-child{border-bottom:none}.mh-ui-keyboard-shortcut .description{flex-grow:1;font-size:11px}.mh-ui-keyboard-shortcut kbd{width:175px;height:11px;padding:3px;font-family:monospace;font-size:12px;text-align:center;white-space:nowrap;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px #0003,0 0 0 2px #fff inset}.mh-ui-keyboard-shortcut .edit-controls{margin-right:10px}.mh-ui-keyboard-shortcut .edit-controls a{display:none}.mh-ui-keyboard-shortcut .edit-controls .edit,.mh-ui-keyboard-shortcuts-popup-content.editing .mh-ui-keyboard-shortcut.editing .edit-controls a,.mh-ui-keyboard-shortcut:focus .edit-controls .reset,.mh-ui-keyboard-shortcut:active .edit-controls .reset,.mh-ui-keyboard-shortcut:focus .edit-controls .edit,.mh-ui-keyboard-shortcut:active .edit-controls .edit,.mh-ui-keyboard-shortcut:focus .edit-controls .clear,.mh-ui-keyboard-shortcut:active .edit-controls .clear,.mh-ui-keyboard-shortcut.editing .edit-controls .edit{display:inline-block;margin-left:10px}.mh-ui-keyboard-shortcuts-popup-content.editing .mh-ui-keyboard-shortcut .edit-controls a{display:none}.mh-ui-keyboard-shortcut.saved kbd{background-color:#baf3ba;box-shadow:0 1px #0003,0 0 0 2px #daffda inset}.mh-ui-keyboard-shortcut.error kbd{background-color:#fda0a0;box-shadow:0 1px #0003,0 0 0 2px #ff8e8e inset}.mh-ui-keyboard-shortcut.editing kbd{background-color:#cce8ff;box-shadow:0 1px #0003,0 0 0 2px #acd9ff inset}.mh-ui-keyboard-shortcut.editing .description{color:#3b5998}.mh-ui-keyboard-shortcut.editing{background-color:#eff8ff}.mh-ui-keyboard-shortcuts-popup-content-category summary{padding:10px;font-size:14px;background-color:#eee}.mh-ui-keyboard-shortcuts-popup-content-category{margin:10px 0;border:1px solid #929292}.mh-ui-keyboard-shortcut:nth-child(2n){background-color:#eee}.mh-ui-keyboard-shortcuts-popup-content-category-list{border-top:1px solid #929292}\n"; } }); // src/modules/keyboard-shortcuts/index.js var getBaseShortcuts, getShortcuts, saveShortcut, getKeyForDisplay, isHelpPopupOpen, showHelpPopup, isEditing2, listenForKeypresses, openFromSettings, init48, keyboard_shortcuts_default; var init_keyboard_shortcuts = __esm({ "src/modules/keyboard-shortcuts/index.js"() { init_utils2(); init_actions(); init_styles48(); getBaseShortcuts = () => { return [ { id: "help", key: "?", shiftKey: true, description: "Help", action: showHelpPopup, category: "hidden" }, { id: "close-popup", key: "Escape", description: "Close the current popup", action: () => { if (activejsDialog && activejsDialog.hide) { activejsDialog.hide(); } }, category: "hidden" }, ...actions_default() ]; }; getShortcuts = () => { const shortcuts = getBaseShortcuts(); const saved = getSetting("keyboard-shortcuts.shortcuts", []); if (!saved || !saved.length) { return shortcuts; } saved.forEach((savedShortcut) => { const shortcut = shortcuts.find((s) => s.id === savedShortcut.id); if (!shortcut) { return; } shortcut.key = savedShortcut.key; shortcut.ctrlKey = savedShortcut.ctrlKey; shortcut.metaKey = savedShortcut.metaKey; shortcut.altKey = savedShortcut.altKey; shortcut.shiftKey = savedShortcut.shiftKey; }); return shortcuts; }; saveShortcut = (shortcutId, shortcutKey) => { let saved = getSetting("keyboard-shortcuts.shortcuts", []); if (!saved || !saved.length) { saved = []; } const toSave = { id: shortcutId, key: shortcutKey.key, ctrlKey: shortcutKey.ctrlKey, metaKey: shortcutKey.metaKey, altKey: shortcutKey.altKey, shiftKey: shortcutKey.shiftKey }; const existingShortcut = saved.find((s) => s.id === shortcutId); if (existingShortcut) { saved = saved.filter((s) => s.id !== shortcutId); } if (toSave.key !== "Backspace" && toSave.key !== "Delete" && toSave.key !== " ") { saved.push(toSave); } saveSetting("keyboard-shortcuts.shortcuts", saved); const savedElement = document.querySelector(`.mh-ui-keyboard-shortcut[data-shortcut-id="${shortcutId}"]`); if (savedElement) { savedElement.classList.add("saved"); setTimeout(() => { savedElement.classList.remove("saved"); }, 300); } }; getKeyForDisplay = (keyEvent) => { let keyString = ""; const keysToShow = []; if (keyEvent.metaKey) { keysToShow.push(isAppleOS() ? "\u2318" : "\u229E"); } if (keyEvent.ctrlKey) { keysToShow.push(isAppleOS() ? "\u2303" : "Ctrl"); } if (keyEvent.altKey) { keysToShow.push(isAppleOS() ? "\u2325" : "Alt"); } if (keyEvent.shiftKey) { keysToShow.push("Shift"); } switch (keyEvent.key) { case " ": keysToShow.push("Space"); break; case "ArrowUp": keysToShow.push("\u2191"); break; case "ArrowDown": keysToShow.push("\u2193"); break; case "ArrowLeft": keysToShow.push("\u2190"); break; case "ArrowRight": keysToShow.push("\u2192"); break; case "Backspace": keysToShow.push(""); break; default: if (keyEvent.key && keyEvent.key.length === 1) { keysToShow.push(keyEvent.key.toUpperCase()); } else { keysToShow.push(keyEvent.key); } break; } keyString = keysToShow.join('<span class="connector"> + </span>'); return keyString; }; isHelpPopupOpen = () => { const overlay = getCurrentDialog(); if (!overlay) { return false; } return "mh-ui-keyboard-shortcuts-popup" === overlay; }; showHelpPopup = () => { if (activejsDialog && activejsDialog.hide) { if (isHelpPopupOpen()) { activejsDialog.hide(); return; } activejsDialog.hide(); } const shortcuts = getShortcuts(); let innerContent = ""; const categories2 = [ { id: "navigation", name: "Page Navigation", startOpen: true }, { id: "open-dialog", name: "Open Dialogs/Popups", startOpen: true }, { id: "trap-setup", name: "Modify Trap Setup", startOpen: false }, { id: "misc", name: "Miscellaneous", startOpen: false } ]; categories2.forEach((category) => { innerContent += `<details class="mh-ui-keyboard-shortcuts-popup-content-category" ${category.startOpen ? "open" : ""}> <summary>${category.name}</summary> <div class="mh-ui-keyboard-shortcuts-popup-content-category-description"> ${category.description || ""} </div> <div class="mh-ui-keyboard-shortcuts-popup-content-category-list">`; const categoryShortcuts = shortcuts.filter((s) => s.category === category.id); categoryShortcuts.sort((a, b) => { if (a.description < b.description) { return -1; } if (a.description > b.description) { return 1; } return 0; }); categoryShortcuts.forEach((shortcut) => { if ("hidden" === shortcut.category) { return; } innerContent += `<div class="mh-ui-keyboard-shortcut" data-shortcut-id="${shortcut.id}"> <div class="description">${shortcut.description}</div> <div class="edit-controls"> <a class="clear">Clear</a> <a class="reset">Reset</a> <a class="edit">Edit</a> </div> <kbd>${getKeyForDisplay(shortcut)}</kbd> </div>`; }); innerContent += "</div></details>"; }); const content = `<div class="mh-ui-keyboard-shortcuts-popup-content"> <h2 class="mh-ui-keyboard-shortcuts-edit-content"> To edit a shortcut, click on <em>Edit</em> on the shortcut, then press the key combination you want to use. </h2> <div class="mh-ui-keyboard-shortcuts-popup-content-list"> ${innerContent} </div> </div>`; createPopup({ title: "MouseHunt Improved Keyboard Shortcuts", content, hasCloseButton: true, show: true, className: "mh-ui-keyboard-shortcuts-popup" }); const shortcutsWrapper = document.querySelector(".mh-ui-keyboard-shortcuts-popup-content"); const shortcutButtons = document.querySelectorAll(".mh-ui-keyboard-shortcuts-popup-content-list .mh-ui-keyboard-shortcut"); shortcutButtons.forEach((shortcut) => { const shortcutId = shortcut.getAttribute("data-shortcut-id"); const editButton = shortcut.querySelector(".edit"); const resetButton = shortcut.querySelector(".reset"); const clearButton = shortcut.querySelector(".clear"); const kbd = shortcut.querySelector("kbd"); const startEditing = () => { isEditing2 = true; editButton.innerText = "Cancel"; shortcut.classList.add("editing"); shortcutsWrapper.classList.add("editing"); document.addEventListener("keydown", keypressListener); }; const finishEditing = (id = false, key = false) => { isEditing2 = false; editButton.innerText = "Edit"; shortcut.classList.remove("editing"); shortcutsWrapper.classList.remove("editing"); document.removeEventListener("keydown", keypressListener); if (!id || !key) { return; } saveShortcut(id, key); kbd.innerHTML = getKeyForDisplay(key); }; const keypressListener = (event) => { if (["Alt", "Shift", "Control", "Meta"].includes(event.key)) { return; } const theShortcut = getShortcuts().find((s) => { return s.key === event.key && event.ctrlKey === (s.ctrlKey || false) && event.metaKey === (s.metaKey || false) && event.altKey === (s.altKey || false) && event.shiftKey === (s.shiftKey || false); }); if (theShortcut) { const matchingShortcut = document.querySelector(`.mh-ui-keyboard-shortcut[data-shortcut-id="${theShortcut.id}"]`); if (!matchingShortcut) { return; } if (shortcutId === theShortcut.id) { finishEditing(shortcutId, event); return; } matchingShortcut.classList.add("error"); shortcut.classList.add("error"); setTimeout(() => { matchingShortcut.classList.remove("error"); shortcut.classList.remove("error"); }, 300); return; } finishEditing(shortcutId, event); }; editButton.addEventListener("click", () => { if (isEditing2) { finishEditing(); } else { startEditing(); } }); resetButton.addEventListener("click", () => { const defaultShortcut = getBaseShortcuts().find((s) => s.id === shortcutId); if (!defaultShortcut) { return; } finishEditing(shortcutId, defaultShortcut); }); clearButton.addEventListener("click", () => { finishEditing(shortcutId, { key: "", ctrlKey: false, metaKey: false, altKey: false, shiftKey: false }); }); }); }; isEditing2 = false; listenForKeypresses = () => { document.addEventListener("keydown", (event) => { var _a, _b; if (isHelpPopupOpen() || isEditing2 || user.has_puzzle) { return; } const tagName = (_b = (_a = event == null ? void 0 : event.target) == null ? void 0 : _a.tagName) == null ? void 0 : _b.toLowerCase(); if ("input" === tagName || "textarea" === tagName || "select" === tagName) { return; } const shortcuts = getShortcuts(); const shortcut = shortcuts.find((s) => { s.ctrlKey = s.ctrlKey || false; s.metaKey = s.metaKey || false; s.altKey = s.altKey || false; s.shiftKey = s.shiftKey || false; return s.key === event.key && s.ctrlKey === event.ctrlKey && s.metaKey === event.metaKey && s.altKey === event.altKey && s.shiftKey === event.shiftKey; }); if (shortcut && shortcut.action) { event.preventDefault(); event.stopPropagation(); shortcut.action(); } }); }; openFromSettings = () => { if ("preferences" !== getCurrentPage()) { return; } const openLink = document.querySelector(".mh-ui-keyboard-shortcuts-edit"); if (!openLink) { return; } openLink.addEventListener("click", (event) => { event.preventDefault(); showHelpPopup(); }); }; init48 = () => __async(void 0, null, function* () { addStyles(styles_default47, "keyboard-shortcuts"); listenForKeypresses(); onNavigation(hasMiniCRE, { page: "camp" }); onNavigation(openFromSettings, { page: "preferences", tab: "mousehunt-improved-settings" }); }); keyboard_shortcuts_default = { id: "keyboard-shortcuts", name: "Keyboard Shortcuts", type: "feature", default: true, description: `Press '?' to see and edit the keyboard shortcuts. You can also <a href="#" class="mh-ui-keyboard-shortcuts-edit">edit them here</a>.`, load: init48 }; } }); // src/modules/larger-codices/styles.css var styles_default48; var init_styles49 = __esm({ "src/modules/larger-codices/styles.css"() { styles_default48 = ".campPage-trap-itemBrowser-item.codex .campPage-trap-itemBrowser-item-leftBar,.campPage-trap-itemBrowser-item.codex .campPage-trap-itemBrowser-item-content{display:block;width:auto}.campPage-trap-itemBrowser-item.codex{position:relative;display:flex;flex-direction:column;align-items:center}.campPage-trap-itemBrowser-item.codex a.campPage-trap-itemBrowser-item-image{width:125px;height:125px}.campPage-trap-itemBrowser-item.codex .campPage-trap-itemBrowser-item-description{position:absolute;inset:-10px 0 0;padding:15px;overflow-y:scroll;background-color:#fffc;opacity:0;transition:.5s}.campPage-trap-itemBrowser-item.codex:hover .campPage-trap-itemBrowser-item-description{opacity:1}.mh-dark-mode .campPage-trap-itemBrowser-item.codex .campPage-trap-itemBrowser-item-description{background-color:#000c}.codex .campPage-trap-itemBrowser-item-image:after{border:none;box-shadow:none}\n"; } }); // src/modules/larger-codices/index.js var init49, larger_codices_default; var init_larger_codices = __esm({ "src/modules/larger-codices/index.js"() { init_utils2(); init_styles49(); init49 = () => { addStyles(styles_default48, "larger-codices"); }; larger_codices_default = { id: "larger-codices", name: "Larger Codices", type: "feature", default: true, description: "Shows larger images for codices in the trap selector.", load: init49 }; } }); // src/modules/larger-skin-images/styles.css var styles_default49; var init_styles50 = __esm({ "src/modules/larger-skin-images/styles.css"() { styles_default49 = ".skin .campPage-trap-itemBrowser-items{top:50px}.skin .campPage-trap-itemBrowser-item-description.shortDescription,.skin .campPage-trap-itemBrowser-item-image{display:none}.skin .campPage-trap-itemBrowser-item-content .campPage-trap-itemBrowser-item-name{margin-top:11px}.trapSelectorView__itemBrowserContainer.skin .campPage-trap-itemBrowser-tagGroup-name{display:none}.trapSelectorView__itemBrowserContainer.skin .campPage-trap-itemBrowser-items{right:5px;left:5px}\n"; } }); // src/modules/larger-skin-images/index.js var addSkinImages, updateSkinCache, getSkinCache, skinCache, init50, larger_skin_images_default; var init_larger_skin_images = __esm({ "src/modules/larger-skin-images/index.js"() { init_utils2(); init_styles50(); addSkinImages = (panel) => __async(void 0, null, function* () { if ("item_browser" !== panel) { return; } const blueprint = document.querySelector(".trapSelectorView__blueprint--active .trapSelectorView__browserStateParent"); if (!blueprint) { return; } const type = blueprint.getAttribute("data-blueprint-type"); if (!type || type !== "skin") { return; } const items2 = document.querySelectorAll(".campPage-trap-itemBrowser-item.skin"); if (!items2) { return; } const existingImages = document.querySelectorAll(".itembrowser-skin-image-wrapper"); if (existingImages) { existingImages.forEach((img) => { img.remove(); }); } yield getSkinCache(); items2.forEach((item) => __async(void 0, null, function* () { const id = item.getAttribute("data-item-id"); if (!id) { return; } skin = skinCache.find((s) => s.item_id == id); if (!skin || !skin.image_trap) { const itemData = yield fetch(`https://api.mouse.rip/item/${id}`).then((res) => res.json()); if (!(itemData && itemData.images.trap)) { return; } skin = { item_id: id, image_trap: itemData.images.trap }; skinCache.push(skin); } const imageWrapper = makeElement("div", "itembrowser-skin-image-wrapper"); const imageEl = makeElement("img", "itembrowser-skin-image"); imageEl.setAttribute("src", skin.image_trap); imageEl.setAttribute("data-item-classification", "skin"); imageEl.setAttribute("data-item-id", id); imageEl.addEventListener("click", (e) => { var _a, _b; e.preventDefault(); if ((_b = (_a = app == null ? void 0 : app.pages) == null ? void 0 : _a.CampPage) == null ? void 0 : _b.armItem) { app.pages.CampPage.armItem(e.target); } }); imageWrapper.append(imageEl); item.insertBefore(imageWrapper, item.firstChild); })); }); updateSkinCache = (data) => __async(void 0, null, function* () { skinCache = data; cacheSet("skin-cache", data); }); getSkinCache = () => __async(void 0, null, function* () { const cache = yield cacheGet("skin-cache"); if (cache) { skinCache = cache; } return skinCache; }); skinCache = []; init50 = () => { addStyles(styles_default49, "larger-skin-images"); onEvent("camp_page_toggle_blueprint", addSkinImages); onRequest("users/gettrapcomponents.php", (data) => { var _a; if ((data == null ? void 0 : data.components) && "skin" === ((_a = data == null ? void 0 : data.components[0]) == null ? void 0 : _a.classification)) { updateSkinCache(data.components); } }); }; larger_skin_images_default = { id: "larger-skin-images", name: "Larger Skin Images", type: "feature", default: true, description: "Shows larger images for skins in the trap selector.", load: init50 }; } }); // node_modules/humanize-duration/humanize-duration.js var require_humanize_duration = __commonJS({ "node_modules/humanize-duration/humanize-duration.js"(exports, module) { (function() { var GREEK = language( function(c) { return c === 1 ? "\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2" : "\u03C7\u03C1\u03CC\u03BD\u03B9\u03B1"; }, function(c) { return c === 1 ? "\u03BC\u03AE\u03BD\u03B1\u03C2" : "\u03BC\u03AE\u03BD\u03B5\u03C2"; }, function(c) { return c === 1 ? "\u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B1" : "\u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B5\u03C2"; }, function(c) { return c === 1 ? "\u03BC\u03AD\u03C1\u03B1" : "\u03BC\u03AD\u03C1\u03B5\u03C2"; }, function(c) { return c === 1 ? "\u03CE\u03C1\u03B1" : "\u03CE\u03C1\u03B5\u03C2"; }, function(c) { return c === 1 ? "\u03BB\u03B5\u03C0\u03C4\u03CC" : "\u03BB\u03B5\u03C0\u03C4\u03AC"; }, function(c) { return c === 1 ? "\u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03BF" : "\u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1"; }, function(c) { return (c === 1 ? "\u03C7\u03B9\u03BB\u03B9\u03BF\u03C3\u03C4\u03CC" : "\u03C7\u03B9\u03BB\u03B9\u03BF\u03C3\u03C4\u03AC") + " \u03C4\u03BF\u03C5 \u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03BF\u03BB\u03AD\u03C0\u03C4\u03BF\u03C5"; }, "," ); var LANGUAGES = { af: language( "jaar", function(c) { return "maand" + (c === 1 ? "" : "e"); }, function(c) { return c === 1 ? "week" : "weke"; }, function(c) { return c === 1 ? "dag" : "dae"; }, function(c) { return c === 1 ? "uur" : "ure"; }, function(c) { return c === 1 ? "minuut" : "minute"; }, function(c) { return "sekonde" + (c === 1 ? "" : "s"); }, function(c) { return "millisekonde" + (c === 1 ? "" : "s"); }, "," ), ar: assign( language( function(c) { return ["\u0633\u0646\u0629", "\u0633\u0646\u062A\u0627\u0646", "\u0633\u0646\u0648\u0627\u062A"][getArabicForm(c)]; }, function(c) { return ["\u0634\u0647\u0631", "\u0634\u0647\u0631\u0627\u0646", "\u0623\u0634\u0647\u0631"][getArabicForm(c)]; }, function(c) { return ["\u0623\u0633\u0628\u0648\u0639", "\u0623\u0633\u0628\u0648\u0639\u064A\u0646", "\u0623\u0633\u0627\u0628\u064A\u0639"][getArabicForm(c)]; }, function(c) { return ["\u064A\u0648\u0645", "\u064A\u0648\u0645\u064A\u0646", "\u0623\u064A\u0627\u0645"][getArabicForm(c)]; }, function(c) { return ["\u0633\u0627\u0639\u0629", "\u0633\u0627\u0639\u062A\u064A\u0646", "\u0633\u0627\u0639\u0627\u062A"][getArabicForm(c)]; }, function(c) { return ["\u062F\u0642\u064A\u0642\u0629", "\u062F\u0642\u064A\u0642\u062A\u0627\u0646", "\u062F\u0642\u0627\u0626\u0642"][getArabicForm(c)]; }, function(c) { return ["\u062B\u0627\u0646\u064A\u0629", "\u062B\u0627\u0646\u064A\u062A\u0627\u0646", "\u062B\u0648\u0627\u0646\u064A"][getArabicForm(c)]; }, function(c) { return ["\u062C\u0632\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629", "\u062C\u0632\u0622\u0646 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629", "\u0623\u062C\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629"][getArabicForm(c)]; }, "," ), { delimiter: " \uFEED ", _digitReplacements: ["\u06F0", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667", "\u0668", "\u0669"] } ), bg: language( function(c) { return ["\u0433\u043E\u0434\u0438\u043D\u0438", "\u0433\u043E\u0434\u0438\u043D\u0430", "\u0433\u043E\u0434\u0438\u043D\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0435\u0441\u0435\u0446\u0430", "\u043C\u0435\u0441\u0435\u0446", "\u043C\u0435\u0441\u0435\u0446\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0435\u0434\u043C\u0438\u0446\u0438", "\u0441\u0435\u0434\u043C\u0438\u0446\u0430", "\u0441\u0435\u0434\u043C\u0438\u0446\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0434\u043D\u0438", "\u0434\u0435\u043D", "\u0434\u043D\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0447\u0430\u0441\u0430", "\u0447\u0430\u0441", "\u0447\u0430\u0441\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043D\u0443\u0442\u0438", "\u043C\u0438\u043D\u0443\u0442\u0430", "\u043C\u0438\u043D\u0443\u0442\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0435\u043A\u0443\u043D\u0434\u0438", "\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438", "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][getSlavicForm(c)]; }, "," ), bn: language( "\u09AC\u099B\u09B0", "\u09AE\u09BE\u09B8", "\u09B8\u09AA\u09CD\u09A4\u09BE\u09B9", "\u09A6\u09BF\u09A8", "\u0998\u09A8\u09CD\u099F\u09BE", "\u09AE\u09BF\u09A8\u09BF\u099F", "\u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1", "\u09AE\u09BF\u09B2\u09BF\u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1" ), ca: language( function(c) { return "any" + (c === 1 ? "" : "s"); }, function(c) { return "mes" + (c === 1 ? "" : "os"); }, function(c) { return "setman" + (c === 1 ? "a" : "es"); }, function(c) { return "di" + (c === 1 ? "a" : "es"); }, function(c) { return "hor" + (c === 1 ? "a" : "es"); }, function(c) { return "minut" + (c === 1 ? "" : "s"); }, function(c) { return "segon" + (c === 1 ? "" : "s"); }, function(c) { return "milisegon" + (c === 1 ? "" : "s"); }, "," ), ckb: language( "\u0633\u0627\u06B5", "\u0645\u0627\u0646\u06AF", "\u0647\u06D5\u0641\u062A\u06D5", "\u0695\u06C6\u0698", "\u06A9\u0627\u0698\u06CE\u0631", "\u062E\u0648\u0644\u06D5\u06A9", "\u0686\u0631\u06A9\u06D5", "\u0645\u06CC\u0644\u06CC \u0686\u0631\u06A9\u06D5", "." ), cs: language( function(c) { return ["rok", "roku", "roky", "let"][getCzechOrSlovakForm(c)]; }, function(c) { return ["m\u011Bs\xEDc", "m\u011Bs\xEDce", "m\u011Bs\xEDce", "m\u011Bs\xEDc\u016F"][getCzechOrSlovakForm(c)]; }, function(c) { return ["t\xFDden", "t\xFDdne", "t\xFDdny", "t\xFDdn\u016F"][getCzechOrSlovakForm(c)]; }, function(c) { return ["den", "dne", "dny", "dn\xED"][getCzechOrSlovakForm(c)]; }, function(c) { return ["hodina", "hodiny", "hodiny", "hodin"][getCzechOrSlovakForm(c)]; }, function(c) { return ["minuta", "minuty", "minuty", "minut"][getCzechOrSlovakForm(c)]; }, function(c) { return ["sekunda", "sekundy", "sekundy", "sekund"][getCzechOrSlovakForm(c)]; }, function(c) { return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][getCzechOrSlovakForm(c)]; }, "," ), cy: language( "flwyddyn", "mis", "wythnos", "diwrnod", "awr", "munud", "eiliad", "milieiliad" ), da: language( "\xE5r", function(c) { return "m\xE5ned" + (c === 1 ? "" : "er"); }, function(c) { return "uge" + (c === 1 ? "" : "r"); }, function(c) { return "dag" + (c === 1 ? "" : "e"); }, function(c) { return "time" + (c === 1 ? "" : "r"); }, function(c) { return "minut" + (c === 1 ? "" : "ter"); }, function(c) { return "sekund" + (c === 1 ? "" : "er"); }, function(c) { return "millisekund" + (c === 1 ? "" : "er"); }, "," ), de: language( function(c) { return "Jahr" + (c === 1 ? "" : "e"); }, function(c) { return "Monat" + (c === 1 ? "" : "e"); }, function(c) { return "Woche" + (c === 1 ? "" : "n"); }, function(c) { return "Tag" + (c === 1 ? "" : "e"); }, function(c) { return "Stunde" + (c === 1 ? "" : "n"); }, function(c) { return "Minute" + (c === 1 ? "" : "n"); }, function(c) { return "Sekunde" + (c === 1 ? "" : "n"); }, function(c) { return "Millisekunde" + (c === 1 ? "" : "n"); }, "," ), el: GREEK, en: language( function(c) { return "year" + (c === 1 ? "" : "s"); }, function(c) { return "month" + (c === 1 ? "" : "s"); }, function(c) { return "week" + (c === 1 ? "" : "s"); }, function(c) { return "day" + (c === 1 ? "" : "s"); }, function(c) { return "hour" + (c === 1 ? "" : "s"); }, function(c) { return "minute" + (c === 1 ? "" : "s"); }, function(c) { return "second" + (c === 1 ? "" : "s"); }, function(c) { return "millisecond" + (c === 1 ? "" : "s"); } ), eo: language( function(c) { return "jaro" + (c === 1 ? "" : "j"); }, function(c) { return "monato" + (c === 1 ? "" : "j"); }, function(c) { return "semajno" + (c === 1 ? "" : "j"); }, function(c) { return "tago" + (c === 1 ? "" : "j"); }, function(c) { return "horo" + (c === 1 ? "" : "j"); }, function(c) { return "minuto" + (c === 1 ? "" : "j"); }, function(c) { return "sekundo" + (c === 1 ? "" : "j"); }, function(c) { return "milisekundo" + (c === 1 ? "" : "j"); }, "," ), es: language( function(c) { return "a\xF1o" + (c === 1 ? "" : "s"); }, function(c) { return "mes" + (c === 1 ? "" : "es"); }, function(c) { return "semana" + (c === 1 ? "" : "s"); }, function(c) { return "d\xEDa" + (c === 1 ? "" : "s"); }, function(c) { return "hora" + (c === 1 ? "" : "s"); }, function(c) { return "minuto" + (c === 1 ? "" : "s"); }, function(c) { return "segundo" + (c === 1 ? "" : "s"); }, function(c) { return "milisegundo" + (c === 1 ? "" : "s"); }, "," ), et: language( function(c) { return "aasta" + (c === 1 ? "" : "t"); }, function(c) { return "kuu" + (c === 1 ? "" : "d"); }, function(c) { return "n\xE4dal" + (c === 1 ? "" : "at"); }, function(c) { return "p\xE4ev" + (c === 1 ? "" : "a"); }, function(c) { return "tund" + (c === 1 ? "" : "i"); }, function(c) { return "minut" + (c === 1 ? "" : "it"); }, function(c) { return "sekund" + (c === 1 ? "" : "it"); }, function(c) { return "millisekund" + (c === 1 ? "" : "it"); }, "," ), eu: language( "urte", "hilabete", "aste", "egun", "ordu", "minutu", "segundo", "milisegundo", "," ), fa: language( "\u0633\u0627\u0644", "\u0645\u0627\u0647", "\u0647\u0641\u062A\u0647", "\u0631\u0648\u0632", "\u0633\u0627\u0639\u062A", "\u062F\u0642\u06CC\u0642\u0647", "\u062B\u0627\u0646\u06CC\u0647", "\u0645\u06CC\u0644\u06CC \u062B\u0627\u0646\u06CC\u0647" ), fi: language( function(c) { return c === 1 ? "vuosi" : "vuotta"; }, function(c) { return c === 1 ? "kuukausi" : "kuukautta"; }, function(c) { return "viikko" + (c === 1 ? "" : "a"); }, function(c) { return "p\xE4iv\xE4" + (c === 1 ? "" : "\xE4"); }, function(c) { return "tunti" + (c === 1 ? "" : "a"); }, function(c) { return "minuutti" + (c === 1 ? "" : "a"); }, function(c) { return "sekunti" + (c === 1 ? "" : "a"); }, function(c) { return "millisekunti" + (c === 1 ? "" : "a"); }, "," ), fo: language( "\xE1r", function(c) { return c === 1 ? "m\xE1na\xF0ur" : "m\xE1na\xF0ir"; }, function(c) { return c === 1 ? "vika" : "vikur"; }, function(c) { return c === 1 ? "dagur" : "dagar"; }, function(c) { return c === 1 ? "t\xEDmi" : "t\xEDmar"; }, function(c) { return c === 1 ? "minuttur" : "minuttir"; }, "sekund", "millisekund", "," ), fr: language( function(c) { return "an" + (c >= 2 ? "s" : ""); }, "mois", function(c) { return "semaine" + (c >= 2 ? "s" : ""); }, function(c) { return "jour" + (c >= 2 ? "s" : ""); }, function(c) { return "heure" + (c >= 2 ? "s" : ""); }, function(c) { return "minute" + (c >= 2 ? "s" : ""); }, function(c) { return "seconde" + (c >= 2 ? "s" : ""); }, function(c) { return "milliseconde" + (c >= 2 ? "s" : ""); }, "," ), gr: GREEK, he: language( function(c) { return c === 1 ? "\u05E9\u05E0\u05D4" : "\u05E9\u05E0\u05D9\u05DD"; }, function(c) { return c === 1 ? "\u05D7\u05D5\u05D3\u05E9" : "\u05D7\u05D5\u05D3\u05E9\u05D9\u05DD"; }, function(c) { return c === 1 ? "\u05E9\u05D1\u05D5\u05E2" : "\u05E9\u05D1\u05D5\u05E2\u05D5\u05EA"; }, function(c) { return c === 1 ? "\u05D9\u05D5\u05DD" : "\u05D9\u05DE\u05D9\u05DD"; }, function(c) { return c === 1 ? "\u05E9\u05E2\u05D4" : "\u05E9\u05E2\u05D5\u05EA"; }, function(c) { return c === 1 ? "\u05D3\u05E7\u05D4" : "\u05D3\u05E7\u05D5\u05EA"; }, function(c) { return c === 1 ? "\u05E9\u05E0\u05D9\u05D4" : "\u05E9\u05E0\u05D9\u05D5\u05EA"; }, function(c) { return c === 1 ? "\u05DE\u05D9\u05DC\u05D9\u05E9\u05E0\u05D9\u05D9\u05D4" : "\u05DE\u05D9\u05DC\u05D9\u05E9\u05E0\u05D9\u05D5\u05EA"; } ), hr: language( function(c) { if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) { return "godine"; } return "godina"; }, function(c) { if (c === 1) { return "mjesec"; } else if (c === 2 || c === 3 || c === 4) { return "mjeseca"; } return "mjeseci"; }, function(c) { if (c % 10 === 1 && c !== 11) { return "tjedan"; } return "tjedna"; }, function(c) { return c === 1 ? "dan" : "dana"; }, function(c) { if (c === 1) { return "sat"; } else if (c === 2 || c === 3 || c === 4) { return "sata"; } return "sati"; }, function(c) { var mod10 = c % 10; if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) { return "minute"; } return "minuta"; }, function(c) { var mod10 = c % 10; if (mod10 === 5 || Math.floor(c) === c && c >= 10 && c <= 19) { return "sekundi"; } else if (mod10 === 1) { return "sekunda"; } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) { return "sekunde"; } return "sekundi"; }, function(c) { if (c === 1) { return "milisekunda"; } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) { return "milisekunde"; } return "milisekundi"; }, "," ), hi: language( "\u0938\u093E\u0932", function(c) { return c === 1 ? "\u092E\u0939\u0940\u0928\u093E" : "\u092E\u0939\u0940\u0928\u0947"; }, function(c) { return c === 1 ? "\u0939\u095E\u094D\u0924\u093E" : "\u0939\u092B\u094D\u0924\u0947"; }, "\u0926\u093F\u0928", function(c) { return c === 1 ? "\u0918\u0902\u091F\u093E" : "\u0918\u0902\u091F\u0947"; }, "\u092E\u093F\u0928\u091F", "\u0938\u0947\u0915\u0902\u0921", "\u092E\u093F\u0932\u0940\u0938\u0947\u0915\u0902\u0921" ), hu: language( "\xE9v", "h\xF3nap", "h\xE9t", "nap", "\xF3ra", "perc", "m\xE1sodperc", "ezredm\xE1sodperc", "," ), id: language( "tahun", "bulan", "minggu", "hari", "jam", "menit", "detik", "milidetik" ), is: language( "\xE1r", function(c) { return "m\xE1nu\xF0" + (c === 1 ? "ur" : "ir"); }, function(c) { return "vik" + (c === 1 ? "a" : "ur"); }, function(c) { return "dag" + (c === 1 ? "ur" : "ar"); }, function(c) { return "klukkut\xEDm" + (c === 1 ? "i" : "ar"); }, function(c) { return "m\xEDn\xFAt" + (c === 1 ? "a" : "ur"); }, function(c) { return "sek\xFAnd" + (c === 1 ? "a" : "ur"); }, function(c) { return "millisek\xFAnd" + (c === 1 ? "a" : "ur"); } ), it: language( function(c) { return "ann" + (c === 1 ? "o" : "i"); }, function(c) { return "mes" + (c === 1 ? "e" : "i"); }, function(c) { return "settiman" + (c === 1 ? "a" : "e"); }, function(c) { return "giorn" + (c === 1 ? "o" : "i"); }, function(c) { return "or" + (c === 1 ? "a" : "e"); }, function(c) { return "minut" + (c === 1 ? "o" : "i"); }, function(c) { return "second" + (c === 1 ? "o" : "i"); }, function(c) { return "millisecond" + (c === 1 ? "o" : "i"); }, "," ), ja: language("\u5E74", "\u30F6\u6708", "\u9031", "\u65E5", "\u6642\u9593", "\u5206", "\u79D2", "\u30DF\u30EA\u79D2"), km: language( "\u1786\u17D2\u1793\u17B6\u17C6", "\u1781\u17C2", "\u179F\u1794\u17D2\u178F\u17B6\u17A0\u17CD", "\u1790\u17D2\u1784\u17C3", "\u1798\u17C9\u17C4\u1784", "\u1793\u17B6\u1791\u17B8", "\u179C\u17B7\u1793\u17B6\u1791\u17B8", "\u1798\u17B7\u179B\u17D2\u179B\u17B8\u179C\u17B7\u1793\u17B6\u1791\u17B8" ), kn: language( function(c) { return c === 1 ? "\u0CB5\u0CB0\u0CCD\u0CB7" : "\u0CB5\u0CB0\u0CCD\u0CB7\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CA4\u0CBF\u0C82\u0C97\u0CB3\u0CC1" : "\u0CA4\u0CBF\u0C82\u0C97\u0CB3\u0CC1\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CB5\u0CBE\u0CB0" : "\u0CB5\u0CBE\u0CB0\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CA6\u0CBF\u0CA8" : "\u0CA6\u0CBF\u0CA8\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0C97\u0C82\u0C9F\u0CC6" : "\u0C97\u0C82\u0C9F\u0CC6\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CA8\u0CBF\u0CAE\u0CBF\u0CB7" : "\u0CA8\u0CBF\u0CAE\u0CBF\u0CB7\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CB8\u0CC6\u0C95\u0CC6\u0C82\u0CA1\u0CCD" : "\u0CB8\u0CC6\u0C95\u0CC6\u0C82\u0CA1\u0CC1\u0C97\u0CB3\u0CC1"; }, function(c) { return c === 1 ? "\u0CAE\u0CBF\u0CB2\u0CBF\u0CB8\u0CC6\u0C95\u0CC6\u0C82\u0CA1\u0CCD" : "\u0CAE\u0CBF\u0CB2\u0CBF\u0CB8\u0CC6\u0C95\u0CC6\u0C82\u0CA1\u0CC1\u0C97\u0CB3\u0CC1"; } ), ko: language("\uB144", "\uAC1C\uC6D4", "\uC8FC\uC77C", "\uC77C", "\uC2DC\uAC04", "\uBD84", "\uCD08", "\uBC00\uB9AC \uCD08"), ku: language( "sal", "meh", "hefte", "roj", "seet", "deqe", "saniye", "m\xEEl\xEE\xE7irk", "," ), lo: language( "\u0E9B\u0EB5", "\u0EC0\u0E94\u0EB7\u0EAD\u0E99", "\u0EAD\u0EB2\u0E97\u0EB4\u0E94", "\u0EA1\u0EB7\u0EC9", "\u0E8A\u0EBB\u0EC8\u0EA7\u0EC2\u0EA1\u0E87", "\u0E99\u0EB2\u0E97\u0EB5", "\u0EA7\u0EB4\u0E99\u0EB2\u0E97\u0EB5", "\u0EA1\u0EB4\u0E99\u0EA5\u0EB4\u0EA7\u0EB4\u0E99\u0EB2\u0E97\u0EB5", "," ), lt: language( function(c) { return c % 10 === 0 || c % 100 >= 10 && c % 100 <= 20 ? "met\u0173" : "metai"; }, function(c) { return ["m\u0117nuo", "m\u0117nesiai", "m\u0117nesi\u0173"][getLithuanianForm(c)]; }, function(c) { return ["savait\u0117", "savait\u0117s", "savai\u010Di\u0173"][getLithuanianForm(c)]; }, function(c) { return ["diena", "dienos", "dien\u0173"][getLithuanianForm(c)]; }, function(c) { return ["valanda", "valandos", "valand\u0173"][getLithuanianForm(c)]; }, function(c) { return ["minut\u0117", "minut\u0117s", "minu\u010Di\u0173"][getLithuanianForm(c)]; }, function(c) { return ["sekund\u0117", "sekund\u0117s", "sekund\u017Ei\u0173"][getLithuanianForm(c)]; }, function(c) { return ["milisekund\u0117", "milisekund\u0117s", "milisekund\u017Ei\u0173"][getLithuanianForm(c)]; }, "," ), lv: language( function(c) { return getLatvianForm(c) ? "gads" : "gadi"; }, function(c) { return getLatvianForm(c) ? "m\u0113nesis" : "m\u0113ne\u0161i"; }, function(c) { return getLatvianForm(c) ? "ned\u0113\u013Ca" : "ned\u0113\u013Cas"; }, function(c) { return getLatvianForm(c) ? "diena" : "dienas"; }, function(c) { return getLatvianForm(c) ? "stunda" : "stundas"; }, function(c) { return getLatvianForm(c) ? "min\u016Bte" : "min\u016Btes"; }, function(c) { return getLatvianForm(c) ? "sekunde" : "sekundes"; }, function(c) { return getLatvianForm(c) ? "milisekunde" : "milisekundes"; }, "," ), mk: language( function(c) { return c === 1 ? "\u0433\u043E\u0434\u0438\u043D\u0430" : "\u0433\u043E\u0434\u0438\u043D\u0438"; }, function(c) { return c === 1 ? "\u043C\u0435\u0441\u0435\u0446" : "\u043C\u0435\u0441\u0435\u0446\u0438"; }, function(c) { return c === 1 ? "\u043D\u0435\u0434\u0435\u043B\u0430" : "\u043D\u0435\u0434\u0435\u043B\u0438"; }, function(c) { return c === 1 ? "\u0434\u0435\u043D" : "\u0434\u0435\u043D\u0430"; }, function(c) { return c === 1 ? "\u0447\u0430\u0441" : "\u0447\u0430\u0441\u0430"; }, function(c) { return c === 1 ? "\u043C\u0438\u043D\u0443\u0442\u0430" : "\u043C\u0438\u043D\u0443\u0442\u0438"; }, function(c) { return c === 1 ? "\u0441\u0435\u043A\u0443\u043D\u0434\u0430" : "\u0441\u0435\u043A\u0443\u043D\u0434\u0438"; }, function(c) { return c === 1 ? "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430" : "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438"; }, "," ), mn: language( "\u0436\u0438\u043B", "\u0441\u0430\u0440", "\u0434\u043E\u043B\u043E\u043E \u0445\u043E\u043D\u043E\u0433", "\u04E9\u0434\u04E9\u0440", "\u0446\u0430\u0433", "\u043C\u0438\u043D\u0443\u0442", "\u0441\u0435\u043A\u0443\u043D\u0434", "\u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434" ), mr: language( function(c) { return c === 1 ? "\u0935\u0930\u094D\u0937" : "\u0935\u0930\u094D\u0937\u0947"; }, function(c) { return c === 1 ? "\u092E\u0939\u093F\u0928\u093E" : "\u092E\u0939\u093F\u0928\u0947"; }, function(c) { return c === 1 ? "\u0906\u0920\u0935\u0921\u093E" : "\u0906\u0920\u0935\u0921\u0947"; }, "\u0926\u093F\u0935\u0938", "\u0924\u093E\u0938", function(c) { return c === 1 ? "\u092E\u093F\u0928\u093F\u091F" : "\u092E\u093F\u0928\u093F\u091F\u0947"; }, "\u0938\u0947\u0915\u0902\u0926", "\u092E\u093F\u0932\u093F\u0938\u0947\u0915\u0902\u0926" ), ms: language( "tahun", "bulan", "minggu", "hari", "jam", "minit", "saat", "milisaat" ), nl: language( "jaar", function(c) { return c === 1 ? "maand" : "maanden"; }, function(c) { return c === 1 ? "week" : "weken"; }, function(c) { return c === 1 ? "dag" : "dagen"; }, "uur", function(c) { return c === 1 ? "minuut" : "minuten"; }, function(c) { return c === 1 ? "seconde" : "seconden"; }, function(c) { return c === 1 ? "milliseconde" : "milliseconden"; }, "," ), no: language( "\xE5r", function(c) { return "m\xE5ned" + (c === 1 ? "" : "er"); }, function(c) { return "uke" + (c === 1 ? "" : "r"); }, function(c) { return "dag" + (c === 1 ? "" : "er"); }, function(c) { return "time" + (c === 1 ? "" : "r"); }, function(c) { return "minutt" + (c === 1 ? "" : "er"); }, function(c) { return "sekund" + (c === 1 ? "" : "er"); }, function(c) { return "millisekund" + (c === 1 ? "" : "er"); }, "," ), pl: language( function(c) { return ["rok", "roku", "lata", "lat"][getPolishForm(c)]; }, function(c) { return ["miesi\u0105c", "miesi\u0105ca", "miesi\u0105ce", "miesi\u0119cy"][getPolishForm(c)]; }, function(c) { return ["tydzie\u0144", "tygodnia", "tygodnie", "tygodni"][getPolishForm(c)]; }, function(c) { return ["dzie\u0144", "dnia", "dni", "dni"][getPolishForm(c)]; }, function(c) { return ["godzina", "godziny", "godziny", "godzin"][getPolishForm(c)]; }, function(c) { return ["minuta", "minuty", "minuty", "minut"][getPolishForm(c)]; }, function(c) { return ["sekunda", "sekundy", "sekundy", "sekund"][getPolishForm(c)]; }, function(c) { return ["milisekunda", "milisekundy", "milisekundy", "milisekund"][getPolishForm(c)]; }, "," ), pt: language( function(c) { return "ano" + (c === 1 ? "" : "s"); }, function(c) { return c === 1 ? "m\xEAs" : "meses"; }, function(c) { return "semana" + (c === 1 ? "" : "s"); }, function(c) { return "dia" + (c === 1 ? "" : "s"); }, function(c) { return "hora" + (c === 1 ? "" : "s"); }, function(c) { return "minuto" + (c === 1 ? "" : "s"); }, function(c) { return "segundo" + (c === 1 ? "" : "s"); }, function(c) { return "milissegundo" + (c === 1 ? "" : "s"); }, "," ), ro: language( function(c) { return c === 1 ? "an" : "ani"; }, function(c) { return c === 1 ? "lun\u0103" : "luni"; }, function(c) { return c === 1 ? "s\u0103pt\u0103m\xE2n\u0103" : "s\u0103pt\u0103m\xE2ni"; }, function(c) { return c === 1 ? "zi" : "zile"; }, function(c) { return c === 1 ? "or\u0103" : "ore"; }, function(c) { return c === 1 ? "minut" : "minute"; }, function(c) { return c === 1 ? "secund\u0103" : "secunde"; }, function(c) { return c === 1 ? "milisecund\u0103" : "milisecunde"; }, "," ), ru: language( function(c) { return ["\u043B\u0435\u0442", "\u0433\u043E\u0434", "\u0433\u043E\u0434\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0435\u0441\u044F\u0446\u0435\u0432", "\u043C\u0435\u0441\u044F\u0446", "\u043C\u0435\u0441\u044F\u0446\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043D\u0435\u0434\u0435\u043B\u044C", "\u043D\u0435\u0434\u0435\u043B\u044F", "\u043D\u0435\u0434\u0435\u043B\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0434\u043D\u0435\u0439", "\u0434\u0435\u043D\u044C", "\u0434\u043D\u044F"][getSlavicForm(c)]; }, function(c) { return ["\u0447\u0430\u0441\u043E\u0432", "\u0447\u0430\u0441", "\u0447\u0430\u0441\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043D\u0443\u0442", "\u043C\u0438\u043D\u0443\u0442\u0430", "\u043C\u0438\u043D\u0443\u0442\u044B"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0435\u043A\u0443\u043D\u0434", "\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043A\u0443\u043D\u0434\u044B"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434", "\u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u044B"][getSlavicForm(c)]; }, "," ), sq: language( function(c) { return c === 1 ? "vit" : "vjet"; }, "muaj", "jav\xEB", "dit\xEB", "or\xEB", function(c) { return "minut" + (c === 1 ? "\xEB" : "a"); }, function(c) { return "sekond" + (c === 1 ? "\xEB" : "a"); }, function(c) { return "milisekond" + (c === 1 ? "\xEB" : "a"); }, "," ), sr: language( function(c) { return ["\u0433\u043E\u0434\u0438\u043D\u0438", "\u0433\u043E\u0434\u0438\u043D\u0430", "\u0433\u043E\u0434\u0438\u043D\u0435"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0435\u0441\u0435\u0446\u0438", "\u043C\u0435\u0441\u0435\u0446", "\u043C\u0435\u0441\u0435\u0446\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043D\u0435\u0434\u0435\u0459\u0438", "\u043D\u0435\u0434\u0435\u0459\u0430", "\u043D\u0435\u0434\u0435\u0459\u0435"][getSlavicForm(c)]; }, function(c) { return ["\u0434\u0430\u043D\u0438", "\u0434\u0430\u043D", "\u0434\u0430\u043D\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0430\u0442\u0438", "\u0441\u0430\u0442", "\u0441\u0430\u0442\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043D\u0443\u0442\u0430", "\u043C\u0438\u043D\u0443\u0442", "\u043C\u0438\u043D\u0443\u0442\u0430"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0435\u043A\u0443\u043D\u0434\u0438", "\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043A\u0443\u043D\u0434\u0435"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438", "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0435"][getSlavicForm(c)]; }, "," ), ta: language( function(c) { return c === 1 ? "\u0BB5\u0BB0\u0BC1\u0B9F\u0BAE\u0BCD" : "\u0B86\u0BA3\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD"; }, function(c) { return c === 1 ? "\u0BAE\u0BBE\u0BA4\u0BAE\u0BCD" : "\u0BAE\u0BBE\u0BA4\u0B99\u0BCD\u0B95\u0BB3\u0BCD"; }, function(c) { return c === 1 ? "\u0BB5\u0BBE\u0BB0\u0BAE\u0BCD" : "\u0BB5\u0BBE\u0BB0\u0B99\u0BCD\u0B95\u0BB3\u0BCD"; }, function(c) { return c === 1 ? "\u0BA8\u0BBE\u0BB3\u0BCD" : "\u0BA8\u0BBE\u0B9F\u0BCD\u0B95\u0BB3\u0BCD"; }, function(c) { return c === 1 ? "\u0BAE\u0BA3\u0BBF" : "\u0BAE\u0BA3\u0BBF\u0BA8\u0BC7\u0BB0\u0BAE\u0BCD"; }, function(c) { return "\u0BA8\u0BBF\u0BAE\u0BBF\u0B9F" + (c === 1 ? "\u0BAE\u0BCD" : "\u0B99\u0BCD\u0B95\u0BB3\u0BCD"); }, function(c) { return "\u0BB5\u0BBF\u0BA9\u0BBE\u0B9F\u0BBF" + (c === 1 ? "" : "\u0B95\u0BB3\u0BCD"); }, function(c) { return "\u0BAE\u0BBF\u0BB2\u0BCD\u0BB2\u0BBF \u0BB5\u0BBF\u0BA8\u0BBE\u0B9F\u0BBF" + (c === 1 ? "" : "\u0B95\u0BB3\u0BCD"); } ), te: language( function(c) { return "\u0C38\u0C02\u0C35\u0C24\u0C4D\u0C38" + (c === 1 ? "\u0C30\u0C02" : "\u0C30\u0C3E\u0C32"); }, function(c) { return "\u0C28\u0C46\u0C32" + (c === 1 ? "" : "\u0C32"); }, function(c) { return c === 1 ? "\u0C35\u0C3E\u0C30\u0C02" : "\u0C35\u0C3E\u0C30\u0C3E\u0C32\u0C41"; }, function(c) { return "\u0C30\u0C4B\u0C1C\u0C41" + (c === 1 ? "" : "\u0C32\u0C41"); }, function(c) { return "\u0C17\u0C02\u0C1F" + (c === 1 ? "" : "\u0C32\u0C41"); }, function(c) { return c === 1 ? "\u0C28\u0C3F\u0C2E\u0C3F\u0C37\u0C02" : "\u0C28\u0C3F\u0C2E\u0C3F\u0C37\u0C3E\u0C32\u0C41"; }, function(c) { return c === 1 ? "\u0C38\u0C46\u0C15\u0C28\u0C41" : "\u0C38\u0C46\u0C15\u0C28\u0C4D\u0C32\u0C41"; }, function(c) { return c === 1 ? "\u0C2E\u0C3F\u0C32\u0C4D\u0C32\u0C40\u0C38\u0C46\u0C15\u0C28\u0C4D" : "\u0C2E\u0C3F\u0C32\u0C4D\u0C32\u0C40\u0C38\u0C46\u0C15\u0C28\u0C4D\u0C32\u0C41"; } ), uk: language( function(c) { return ["\u0440\u043E\u043A\u0456\u0432", "\u0440\u0456\u043A", "\u0440\u043E\u043A\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0456\u0441\u044F\u0446\u0456\u0432", "\u043C\u0456\u0441\u044F\u0446\u044C", "\u043C\u0456\u0441\u044F\u0446\u0456"][getSlavicForm(c)]; }, function(c) { return ["\u0442\u0438\u0436\u043D\u0456\u0432", "\u0442\u0438\u0436\u0434\u0435\u043D\u044C", "\u0442\u0438\u0436\u043D\u0456"][getSlavicForm(c)]; }, function(c) { return ["\u0434\u043D\u0456\u0432", "\u0434\u0435\u043D\u044C", "\u0434\u043D\u0456"][getSlavicForm(c)]; }, function(c) { return ["\u0433\u043E\u0434\u0438\u043D", "\u0433\u043E\u0434\u0438\u043D\u0430", "\u0433\u043E\u0434\u0438\u043D\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0445\u0432\u0438\u043B\u0438\u043D", "\u0445\u0432\u0438\u043B\u0438\u043D\u0430", "\u0445\u0432\u0438\u043B\u0438\u043D\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u0441\u0435\u043A\u0443\u043D\u0434", "\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][getSlavicForm(c)]; }, function(c) { return ["\u043C\u0456\u043B\u0456\u0441\u0435\u043A\u0443\u043D\u0434", "\u043C\u0456\u043B\u0456\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u043C\u0456\u043B\u0456\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][getSlavicForm(c)]; }, "," ), ur: language( "\u0633\u0627\u0644", function(c) { return c === 1 ? "\u0645\u06C1\u06CC\u0646\u06C1" : "\u0645\u06C1\u06CC\u0646\u06D2"; }, function(c) { return c === 1 ? "\u06C1\u0641\u062A\u06C1" : "\u06C1\u0641\u062A\u06D2"; }, "\u062F\u0646", function(c) { return c === 1 ? "\u06AF\u06BE\u0646\u0679\u06C1" : "\u06AF\u06BE\u0646\u0679\u06D2"; }, "\u0645\u0646\u0679", "\u0633\u06CC\u06A9\u0646\u0688", "\u0645\u0644\u06CC \u0633\u06CC\u06A9\u0646\u0688" ), sk: language( function(c) { return ["rok", "roky", "roky", "rokov"][getCzechOrSlovakForm(c)]; }, function(c) { return ["mesiac", "mesiace", "mesiace", "mesiacov"][getCzechOrSlovakForm(c)]; }, function(c) { return ["t\xFD\u017Ede\u0148", "t\xFD\u017Edne", "t\xFD\u017Edne", "t\xFD\u017Ed\u0148ov"][getCzechOrSlovakForm(c)]; }, function(c) { return ["de\u0148", "dni", "dni", "dn\xED"][getCzechOrSlovakForm(c)]; }, function(c) { return ["hodina", "hodiny", "hodiny", "hod\xEDn"][getCzechOrSlovakForm(c)]; }, function(c) { return ["min\xFAta", "min\xFAty", "min\xFAty", "min\xFAt"][getCzechOrSlovakForm(c)]; }, function(c) { return ["sekunda", "sekundy", "sekundy", "sek\xFAnd"][getCzechOrSlovakForm(c)]; }, function(c) { return ["milisekunda", "milisekundy", "milisekundy", "milisek\xFAnd"][getCzechOrSlovakForm(c)]; }, "," ), sl: language( function(c) { if (c % 10 === 1) { return "leto"; } else if (c % 100 === 2) { return "leti"; } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c && c % 100 <= 5) { return "leta"; } else { return "let"; } }, function(c) { if (c % 10 === 1) { return "mesec"; } else if (c % 100 === 2 || Math.floor(c) !== c && c % 100 <= 5) { return "meseca"; } else if (c % 10 === 3 || c % 10 === 4) { return "mesece"; } else { return "mesecev"; } }, function(c) { if (c % 10 === 1) { return "teden"; } else if (c % 10 === 2 || Math.floor(c) !== c && c % 100 <= 4) { return "tedna"; } else if (c % 10 === 3 || c % 10 === 4) { return "tedne"; } else { return "tednov"; } }, function(c) { return c % 100 === 1 ? "dan" : "dni"; }, function(c) { if (c % 10 === 1) { return "ura"; } else if (c % 100 === 2) { return "uri"; } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) { return "ure"; } else { return "ur"; } }, function(c) { if (c % 10 === 1) { return "minuta"; } else if (c % 10 === 2) { return "minuti"; } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c && c % 100 <= 4) { return "minute"; } else { return "minut"; } }, function(c) { if (c % 10 === 1) { return "sekunda"; } else if (c % 100 === 2) { return "sekundi"; } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) { return "sekunde"; } else { return "sekund"; } }, function(c) { if (c % 10 === 1) { return "milisekunda"; } else if (c % 100 === 2) { return "milisekundi"; } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) { return "milisekunde"; } else { return "milisekund"; } }, "," ), sv: language( "\xE5r", function(c) { return "m\xE5nad" + (c === 1 ? "" : "er"); }, function(c) { return "veck" + (c === 1 ? "a" : "or"); }, function(c) { return "dag" + (c === 1 ? "" : "ar"); }, function(c) { return "timm" + (c === 1 ? "e" : "ar"); }, function(c) { return "minut" + (c === 1 ? "" : "er"); }, function(c) { return "sekund" + (c === 1 ? "" : "er"); }, function(c) { return "millisekund" + (c === 1 ? "" : "er"); }, "," ), sw: assign( language( function(c) { return c === 1 ? "mwaka" : "miaka"; }, function(c) { return c === 1 ? "mwezi" : "miezi"; }, "wiki", function(c) { return c === 1 ? "siku" : "masiku"; }, function(c) { return c === 1 ? "saa" : "masaa"; }, "dakika", "sekunde", "milisekunde" ), { _numberFirst: true } ), tr: language( "y\u0131l", "ay", "hafta", "g\xFCn", "saat", "dakika", "saniye", "milisaniye", "," ), th: language( "\u0E1B\u0E35", "\u0E40\u0E14\u0E37\u0E2D\u0E19", "\u0E2A\u0E31\u0E1B\u0E14\u0E32\u0E2B\u0E4C", "\u0E27\u0E31\u0E19", "\u0E0A\u0E31\u0E48\u0E27\u0E42\u0E21\u0E07", "\u0E19\u0E32\u0E17\u0E35", "\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35", "\u0E21\u0E34\u0E25\u0E25\u0E34\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35" ), uz: language( "yil", "oy", "hafta", "kun", "soat", "minut", "sekund", "millisekund" ), uz_CYR: language( "\u0439\u0438\u043B", "\u043E\u0439", "\u04B3\u0430\u0444\u0442\u0430", "\u043A\u0443\u043D", "\u0441\u043E\u0430\u0442", "\u043C\u0438\u043D\u0443\u0442", "\u0441\u0435\u043A\u0443\u043D\u0434", "\u043C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434" ), vi: language( "n\u0103m", "th\xE1ng", "tu\u1EA7n", "ng\xE0y", "gi\u1EDD", "ph\xFAt", "gi\xE2y", "mili gi\xE2y", "," ), zh_CN: language("\u5E74", "\u4E2A\u6708", "\u5468", "\u5929", "\u5C0F\u65F6", "\u5206\u949F", "\u79D2", "\u6BEB\u79D2"), zh_TW: language("\u5E74", "\u500B\u6708", "\u5468", "\u5929", "\u5C0F\u6642", "\u5206\u9418", "\u79D2", "\u6BEB\u79D2") }; function language(y, mo, w, d, h, m, s, ms, decimal) { var result = { y, mo, w, d, h, m, s, ms }; if (typeof decimal !== "undefined") { result.decimal = decimal; } return result; } function getArabicForm(c) { if (c === 2) { return 1; } if (c > 2 && c < 11) { return 2; } return 0; } function getPolishForm(c) { if (c === 1) { return 0; } if (Math.floor(c) !== c) { return 1; } if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) { return 2; } return 3; } function getSlavicForm(c) { if (Math.floor(c) !== c) { return 2; } if (c % 100 >= 5 && c % 100 <= 20 || c % 10 >= 5 && c % 10 <= 9 || c % 10 === 0) { return 0; } if (c % 10 === 1) { return 1; } if (c > 1) { return 2; } return 0; } function getCzechOrSlovakForm(c) { if (c === 1) { return 0; } if (Math.floor(c) !== c) { return 1; } if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) { return 2; } return 3; } function getLithuanianForm(c) { if (c === 1 || c % 10 === 1 && c % 100 > 20) { return 0; } if (Math.floor(c) !== c || c % 10 >= 2 && c % 100 > 20 || c % 10 >= 2 && c % 100 < 10) { return 1; } return 2; } function getLatvianForm(c) { return c % 10 === 1 && c % 100 !== 11; } function assign(destination) { var source; for (var i = 1; i < arguments.length; i++) { source = arguments[i]; for (var prop in source) { if (has(source, prop)) { destination[prop] = source[prop]; } } } return destination; } var isArray = Array.isArray || function(arg) { return Object.prototype.toString.call(arg) === "[object Array]"; }; function has(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); } function getLanguage(options) { var possibleLanguages = [options.language]; if (has(options, "fallbacks")) { if (isArray(options.fallbacks) && options.fallbacks.length) { possibleLanguages = possibleLanguages.concat(options.fallbacks); } else { throw new Error("fallbacks must be an array with at least one element"); } } for (var i = 0; i < possibleLanguages.length; i++) { var languageToTry = possibleLanguages[i]; if (has(options.languages, languageToTry)) { return options.languages[languageToTry]; } if (has(LANGUAGES, languageToTry)) { return LANGUAGES[languageToTry]; } } throw new Error("No language found."); } function renderPiece(piece, language2, options) { var unitName = piece.unitName; var unitCount = piece.unitCount; var spacer = options.spacer; var maxDecimalPoints = options.maxDecimalPoints; var decimal; if (has(options, "decimal")) { decimal = options.decimal; } else if (has(language2, "decimal")) { decimal = language2.decimal; } else { decimal = "."; } var digitReplacements; if ("digitReplacements" in options) { digitReplacements = options.digitReplacements; } else if ("_digitReplacements" in language2) { digitReplacements = language2._digitReplacements; } var formattedCount; var normalizedUnitCount = maxDecimalPoints === void 0 ? unitCount : Math.floor(unitCount * Math.pow(10, maxDecimalPoints)) / Math.pow(10, maxDecimalPoints); var countStr = normalizedUnitCount.toString(); if (digitReplacements) { formattedCount = ""; for (var i = 0; i < countStr.length; i++) { var char = countStr[i]; if (char === ".") { formattedCount += decimal; } else { formattedCount += digitReplacements[char]; } } } else { formattedCount = countStr.replace(".", decimal); } var languageWord = language2[unitName]; var word; if (typeof languageWord === "function") { word = languageWord(unitCount); } else { word = languageWord; } if (language2._numberFirst) { return word + spacer + formattedCount; } return formattedCount + spacer + word; } function getPieces(ms, options) { var unitName; var i; var unitCount; var msRemaining; var units = options.units; var unitMeasures = options.unitMeasures; var largest = "largest" in options ? options.largest : Infinity; if (!units.length) return []; var unitCounts = {}; msRemaining = ms; for (i = 0; i < units.length; i++) { unitName = units[i]; var unitMs = unitMeasures[unitName]; var isLast = i === units.length - 1; unitCount = isLast ? msRemaining / unitMs : Math.floor(msRemaining / unitMs); unitCounts[unitName] = unitCount; msRemaining -= unitCount * unitMs; } if (options.round) { var unitsRemainingBeforeRound = largest; for (i = 0; i < units.length; i++) { unitName = units[i]; unitCount = unitCounts[unitName]; if (unitCount === 0) continue; unitsRemainingBeforeRound--; if (unitsRemainingBeforeRound === 0) { for (var j = i + 1; j < units.length; j++) { var smallerUnitName = units[j]; var smallerUnitCount = unitCounts[smallerUnitName]; unitCounts[unitName] += smallerUnitCount * unitMeasures[smallerUnitName] / unitMeasures[unitName]; unitCounts[smallerUnitName] = 0; } break; } } for (i = units.length - 1; i >= 0; i--) { unitName = units[i]; unitCount = unitCounts[unitName]; if (unitCount === 0) continue; var rounded = Math.round(unitCount); unitCounts[unitName] = rounded; if (i === 0) break; var previousUnitName = units[i - 1]; var previousUnitMs = unitMeasures[previousUnitName]; var amountOfPreviousUnit = Math.floor( rounded * unitMeasures[unitName] / previousUnitMs ); if (amountOfPreviousUnit) { unitCounts[previousUnitName] += amountOfPreviousUnit; unitCounts[unitName] = 0; } else { break; } } } var result = []; for (i = 0; i < units.length && result.length < largest; i++) { unitName = units[i]; unitCount = unitCounts[unitName]; if (unitCount) { result.push({ unitName, unitCount }); } } return result; } function formatPieces(pieces, options) { var language2 = getLanguage(options); if (!pieces.length) { var units = options.units; var smallestUnitName = units[units.length - 1]; return renderPiece( { unitName: smallestUnitName, unitCount: 0 }, language2, options ); } var conjunction = options.conjunction; var serialComma = options.serialComma; var delimiter; if (has(options, "delimiter")) { delimiter = options.delimiter; } else if (has(language2, "delimiter")) { delimiter = language2.delimiter; } else { delimiter = ", "; } var renderedPieces = []; for (var i = 0; i < pieces.length; i++) { renderedPieces.push(renderPiece(pieces[i], language2, options)); } if (!conjunction || pieces.length === 1) { return renderedPieces.join(delimiter); } if (pieces.length === 2) { return renderedPieces.join(conjunction); } return renderedPieces.slice(0, -1).join(delimiter) + (serialComma ? "," : "") + conjunction + renderedPieces.slice(-1); } function humanizer4(passedOptions) { var result = function humanizer5(ms, humanizerOptions) { ms = Math.abs(ms); var options = assign({}, result, humanizerOptions || {}); var pieces = getPieces(ms, options); return formatPieces(pieces, options); }; return assign( result, { language: "en", spacer: " ", conjunction: "", serialComma: true, units: ["y", "mo", "w", "d", "h", "m", "s"], languages: {}, round: false, unitMeasures: { y: 315576e5, mo: 26298e5, w: 6048e5, d: 864e5, h: 36e5, m: 6e4, s: 1e3, ms: 1 } }, passedOptions ); } var humanizeDuration4 = humanizer4({}); humanizeDuration4.getSupportedLanguages = function getSupportedLanguages() { var result = []; for (var language2 in LANGUAGES) { if (has(LANGUAGES, language2) && language2 !== "gr") { result.push(language2); } } return result; }; humanizeDuration4.humanizer = humanizer4; if (typeof define === "function" && define.amd) { define(function() { return humanizeDuration4; }); } else if (typeof module !== "undefined" && module.exports) { module.exports = humanizeDuration4; } else { this.humanizeDuration = humanizeDuration4; } })(); } }); // src/modules/lgs-reminder/settings/index.js var settings_default26; var init_settings27 = __esm({ "src/modules/lgs-reminder/settings/index.js"() { settings_default26 = () => __async(void 0, null, function* () { return [ { id: "lgs-reminder.new-style", title: 'Use "new" style' }, { id: "lgs-reminder.show-seconds", title: "Show exact time", description: "Show exact time, including seconds" }, { id: "lgs-reminder.days-and-lower", title: "Convert weeks and months to days" } ]; }); } }); // src/modules/lgs-reminder/styles.css var styles_default50; var init_styles51 = __esm({ "src/modules/lgs-reminder/styles.css"() { styles_default50 = ".mousehunt-improved-lgs-reminder,.default.mhui-custom-shield .mousehunt-improved-lgs-reminder{position:absolute;right:8px;bottom:4px;left:13px;z-index:1;font-size:11px;color:#684434;text-align:center;background-color:#ddcda2d9;border:1px solid #9d9a91;border-radius:5px}.default .mousehunt-improved-lgs-reminder{left:-5px}.default-fancy .mousehunt-improved-lgs-reminder{right:15px}.mousehuntHud-shield.color .mousehunt-improved-lgs-reminder{right:20px;left:0}.mhui-custom-shield .mousehunt-improved-lgs-reminder.exact{font-size:10px}.mousehunt-improved-lgs-reminder-new.lgs-warning,.mousehunt-improved-lgs-reminder.lgs-warning,.default.mhui-custom-shield .mousehunt-improved-lgs-reminder.lgs-warning{background-color:#ffbfbf}.mousehunt-improved-lgs-reminder-new.lgs-danger,.mousehunt-improved-lgs-reminder.lgs-danger,.default.mhui-custom-shield .mousehunt-improved-lgs-reminder.lgs-danger{color:#f1d7d7;background-color:#b32d26;border-color:#af8080;transition:1.75s;animation:mh-improved-fade-slightly 1.75s infinite}@media (prefers-reduced-motion: reduce){.mousehunt-improved-lgs-reminder-new.lgs-danger,.mousehunt-improved-lgs-reminder.lgs-danger,.default.mhui-custom-shield .mousehunt-improved-lgs-reminder-new.lgs-danger{animation:none}}.mousehunt-improved-lgs-reminder-wrapper{position:absolute;right:642px;bottom:0;left:15px;font-size:9px;white-space:nowrap}.mousehunt-improved-lgs-reminder-new{display:flex;align-items:center;justify-content:center;padding:2px 5px;background:linear-gradient(#fff 45%,#f8e7bb 55%);border:1px solid #d4af37;border-bottom:none;border-radius:6px 6px 0 0}.mousehunt-improved-lgs-reminder-new.lgs-warning{background:linear-gradient(#fff,#ffbfbf)}.mousehunt-improved-lgs-reminder-new.lgs-danger{background:#b32d26;border:none}\n"; } }); // src/modules/lgs-reminder/index.js var import_humanize_duration, humanizer, isExact, getShieldEndDateTime, getShieldTime, getShieldTimeFormatted, updateLgsReminder, main18, setOffset, offset, init51, lgs_reminder_default2; var init_lgs_reminder2 = __esm({ "src/modules/lgs-reminder/index.js"() { import_humanize_duration = __toESM(require_humanize_duration()); init_utils2(); init_settings27(); init_styles51(); humanizer = import_humanize_duration.default.humanizer({ language: "shortEn", languages: { shortEn: { y: () => "y", mo: () => "mo", w: () => "w", d: () => "d", h: () => "h", m: () => "m", s: () => "s", ms: () => "ms" } } }); isExact = () => { return getSetting("lgs-reminder.show-seconds"); }; getShieldEndDateTime = () => { const shieldExpiry = user.shield_expiry; if (!shieldExpiry) { return; } const expiry = Date.parse(shieldExpiry); const realExpiry = expiry - offset; return new Date(realExpiry); }; getShieldTime = () => { const expiry = getShieldEndDateTime(); const now = /* @__PURE__ */ new Date(); return Math.floor(expiry - now); }; getShieldTimeFormatted = () => { const time = getShieldTime(); if (!time) { return ""; } let units = ["y", "mo", "w", "d", "h", "m"]; if (getSetting("lgs-reminder.days-and-lower")) { units = ["d", "h", "m"]; } if (isExact()) { units.push("s"); } const duration = humanizer(time, { round: true, units, spacer: "", delimiter: " " }); return duration; }; updateLgsReminder = (el) => { const time = getShieldTime(); if (time <= 60 * 60 * 24 * 2) { el.classList.add("lgs-warning"); } if (time <= 60 * 60) { el.classList.add("lgs-danger"); } el.innerText = getShieldTimeFormatted(); }; main18 = () => { startingTime = getShieldTime(); const shieldEl = document.querySelector(".mousehuntHud-shield.golden"); if (!shieldEl) { return; } const newStyle = getSetting("lgs-reminder.new-style", false); let wrapper; let reminder; if (newStyle) { wrapper = makeElement("div", "mousehunt-improved-lgs-reminder-wrapper"); reminder = makeElement("div", "mousehunt-improved-lgs-reminder-new"); } else { reminder = makeElement("div", "mousehunt-improved-lgs-reminder"); } const exact = isExact(); if (exact) { reminder.classList.add("exact"); } const endDate = getShieldEndDateTime().toLocaleDateString("en-US", { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }); reminder.title = `LGS Expires on ${endDate} (${getShieldTimeFormatted()} remaining)`; if (newStyle) { const existing = document.querySelector(".mousehunt-improved-lgs-reminder-wrapper"); if (existing) { existing.remove(); } wrapper.append(reminder); shieldEl.after(wrapper); } else { const existing = document.querySelector(".mousehunt-improved-lgs-reminder"); if (existing) { existing.remove(); } shieldEl.append(reminder); } updateLgsReminder(reminder); if (isExact()) { onEvent("horn-countdown-tick", () => { updateLgsReminder(reminder); }); } else { onEvent("horn-countdown-tick-minute", () => { updateLgsReminder(reminder); }); } }; setOffset = () => { const userShieldExpiry = new Date(Date.parse(user.shield_expiry)); const userShieldSeconds = new Date((/* @__PURE__ */ new Date()).setSeconds((/* @__PURE__ */ new Date()).getSeconds() + user.shield_seconds)); const difference = userShieldExpiry - userShieldSeconds; offset = Math.round(difference / 1e3) * 1e3; }; init51 = () => __async(void 0, null, function* () { if (!user.has_shield) { return; } setOffset(); addStyles(styles_default50, "lgs-reminder"); main18(); onSettingsChange("lgs-reminder.new-style", () => { const selectors = [ ".mousehunt-improved-lgs-reminder", ".mousehunt-improved-lgs-reminder-new", ".mousehunt-improved-lgs-reminder-wrapper" ]; selectors.forEach((selector) => { const el = document.querySelector(selector); if (el) { el.remove(); } }); main18(); }); onActivation("lgs-reminder", main18); onDeactivation("lgs-reminder", () => { const reminder = document.querySelector(".mousehunt-improved-lgs-reminder"); if (reminder) { reminder.remove(); } }); }); lgs_reminder_default2 = { id: "lgs-reminder", name: `${getSetting("experiments.new-settings-styles-columns", false) ? "LGS" : "Lucky Golden Shield"} Duration & Reminder`, type: "feature", description: "Show your LGS duration in the HUD and warn you when it's about to expire.", default: false, load: init51, settings: settings_default26 }; } }); // src/modules/links/index.js var addHelpLinks, init52, links_default; var init_links2 = __esm({ "src/modules/links/index.js"() { init_utils2(); addHelpLinks = () => { const supportDropdown = document.querySelector(".menuItem.dropdown.support .dropdownContent"); if (!supportDropdown) { return; } const helpLinks = [ { id: "mouserip", class: "rules", title: "MOUSE.RIP", // caps to look better href: "https://mouse.rip", text: "MH guides, tools, and more." }, { id: "mhui", class: "fanPage", title: "MH Improved", href: "https://github.com/MHCommunity/mousehunt-improved", text: "Bug reports and feature requests." } ]; helpLinks.forEach((helpLink) => { const link = makeElement("a", [helpLink.id, helpLink.class]); makeElement("b", "title", helpLink.title, link); makeElement("span", "text", helpLink.text, link); link.setAttribute("href", helpLink.href); link.setAttribute("target", "_blank"); link.setAttribute("rel", "noopener noreferrer"); supportDropdown.append(link); }); }; init52 = () => __async(void 0, null, function* () { addHelpLinks(); addSubmenuItem({ menu: "kingdom", label: "mouse.rip", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/prize_shoppe.png", href: "https://mouse.rip", external: true }); }); links_default = { id: "links", type: "required", alwaysLoad: true, load: init52 }; } }); // src/modules/location-catch-stats/styles.css var styles_default51; var init_styles52 = __esm({ "src/modules/location-catch-stats/styles.css"() { styles_default51 = "#mh-catch-stats{position:absolute;top:25px;left:25px;z-index:50}@media screen and (prefers-reduced-motion: reduce){.mh-catch-stats-wrapper{transition:none}}.mh-catch-stats-wrapper{width:275px;background:#f6f3eb;border:1px solid #534022;box-shadow:1px 1px 1px #9d917f,1px 3px 5px #6a6969;transition:box-shadow .25s}.mh-is-dragging .mh-catch-stats-wrapper{box-shadow:1px 1px 1px #9d917f,0 7px 9px 2px #6a6969}.mh-catch-stats-header{display:flex;align-items:center;justify-content:space-between;padding:10px;color:#f6f3eb;cursor:grab;background-color:#926944;border-bottom:1px solid #ceb7a6}.mh-catch-stats-header h1{color:#f6f3eb}.mh-catch-stats-close{cursor:pointer}.mh-catch-stats-close:hover,.mh-catch-stats-close:focus{color:#926944;background-color:#eee;border-radius:50%;outline:1px solid #ccc}.mh-catch-stats-body{max-height:90vh;overflow:hidden auto}.mh-catch-stats-wrapper .mh-catch-stats:nth-child(odd){background-color:#e8e3d7}.mh-catch-stats{display:flex;align-items:center;justify-content:space-between;padding:10px;color:#000}.mh-catch-stats:hover,.mh-catch-stats-wrapper .mh-catch-stats:nth-child(odd):hover,.mh-catch-stats:focus,.mh-catch-stats-wrapper .mh-catch-stats:nth-child(odd):focus{color:#665f5f;text-decoration:none;background-color:#eee;outline:1px solid #ccc}.mh-catch-stats-image{position:relative;display:inline-block;width:40px;height:40px;vertical-align:middle;background-repeat:no-repeat;background-size:contain;border-radius:2px;box-shadow:1px 1px 1px #999}.mh-catch-stats-crown{position:absolute;right:-5px;bottom:-5px;width:20px;height:20px;background-color:#fff;background-repeat:no-repeat;background-position:50% 50%;background-size:80%;border:1px solid #333;border-radius:50%}.mh-catch-stats-name{display:inline-block;padding-left:10px;vertical-align:middle}.mh-catch-stats-catches{padding-right:5px}\n"; } }); // src/modules/location-catch-stats/index.js var getMouseStats, buildMouseMarkup, showModal, init53, location_catch_stats_default; var init_location_catch_stats = __esm({ "src/modules/location-catch-stats/index.js"() { init_utils2(); init_styles52(); getMouseStats = () => __async(void 0, null, function* () { var _a, _b; const data = yield doRequest("managers/ajax/mice/mouse_list.php", { action: "get_environment", category: user.environment_type, user_id: user.user_id, display_mode: "stats", view: "ViewMouseListEnvironments" }); const mouseData = (_b = (_a = data == null ? void 0 : data.mouse_list_category) == null ? void 0 : _a.subgroups[0]) == null ? void 0 : _b.mice; mouseData.sort((a, b) => { return b.num_catches - a.num_catches; }); return mouseData != null ? mouseData : []; }); buildMouseMarkup = (mouseData) => { const mouse = Object.assign({}, { name: "", type: "", image: "", crown: "none", num_catches: 0 }, mouseData); const mouseEl = document.createElement("a"); mouseEl.classList.add("mh-catch-stats"); mouseEl.title = mouse.name; mouseEl.addEventListener("click", () => { var _a, _b; if ("undefined" !== ((_b = (_a = hg == null ? void 0 : hg.views) == null ? void 0 : _a.MouseView) == null ? void 0 : _b.show)) { hg.views.MouseView.show(mouse.type); } }); const image = document.createElement("div"); image.classList.add("mh-catch-stats-image"); image.style.backgroundImage = `url('${mouse.image}')`; if (mouse.crown && "none" !== mouse.crown) { const crown = document.createElement("div"); crown.classList.add("mh-catch-stats-crown"); crown.style.backgroundImage = `url('https://www.mousehuntgame.com/images/ui/crowns/crown_${mouse.crown}.png')`; image.append(crown); } const name = document.createElement("div"); name.classList.add("mh-catch-stats-name"); name.innerText = mouse.name; const imageNameContainer = document.createElement("div"); imageNameContainer.append(image); imageNameContainer.append(name); const catches = document.createElement("div"); catches.classList.add("mh-catch-stats-catches"); catches.innerText = mouse.num_catches; mouseEl.append(imageNameContainer); mouseEl.append(catches); return mouseEl; }; showModal = () => __async(void 0, null, function* () { const existing = document.querySelector("#mh-catch-stats"); if (existing) { existing.remove(); } const modalWrapper = document.createElement("div"); modalWrapper.id = "mh-catch-stats"; const modal = document.createElement("div"); modal.classList.add("mh-catch-stats-wrapper"); const header = document.createElement("div"); header.classList.add("mh-catch-stats-header"); const title = document.createElement("h1"); title.innerText = "Location Catch Stats"; header.append(title); const closeIcon = document.createElementNS("http://www.w3.org/2000/svg", "svg"); closeIcon.classList.add("mh-catch-stats-close"); closeIcon.setAttribute("viewBox", "0 0 24 24"); closeIcon.setAttribute("width", "18"); closeIcon.setAttribute("height", "18"); closeIcon.setAttribute("fill", "none"); closeIcon.setAttribute("stroke", "currentColor"); closeIcon.setAttribute("stroke-width", "1.5"); const closePath = document.createElementNS("http://www.w3.org/2000/svg", "path"); closePath.setAttribute("d", "M18 6L6 18M6 6l12 12"); closeIcon.append(closePath); closeIcon.addEventListener("click", () => { modalWrapper.remove(); }); header.append(closeIcon); modal.append(header); const mouseBody = document.createElement("div"); mouseBody.classList.add("mh-catch-stats-body"); const mouseStats2 = yield getMouseStats(); mouseStats2.forEach((mouseData) => { mouseBody.append(buildMouseMarkup(mouseData, mouseBody)); }); modal.append(mouseBody); modalWrapper.append(modal); document.body.append(modalWrapper); makeElementDraggable("#mh-catch-stats", ".mh-catch-stats-header", 25, 25, "mh-catch-stats-position"); }); init53 = () => __async(void 0, null, function* () { addStyles(styles_default51, "location-catch-stats"); addSubmenuItem({ menu: "mice", label: "Location Catch Stats", icon: "https://www.mousehuntgame.com/images/ui/hud/menu/prize_shoppe.png?", callback: showModal }); }); location_catch_stats_default = { id: "location-catch-stats", name: "Location Catch Stats", type: "feature", default: true, description: 'Adds a "Location Catch Stats" to the Mice menu to see your catch stats for the current location.', load: init53 }; } }); // src/modules/location-dashboard/styles.css var styles_default52; var init_styles53 = __esm({ "src/modules/location-dashboard/styles.css"() { styles_default52 = '.mousehuntHeaderView-gameTabs .menuItem.chat,.mousehuntHeaderView-gameTabs .community{display:none}.mousehuntHeaderView .menuItem.dropdown.dashboard{cursor:initial}.mousehuntHeaderView .dashboard .dropdownContent{width:420px;border-radius:0}.dashboardWrapper{max-height:60vh;padding:5px;overflow:hidden auto;border:1px solid #d7e2f1;box-shadow:0 5px 10px #8f8f8f}.dashboardRefresh{display:block;margin:10px auto}.regionWrapper{margin-bottom:5px;border:1px solid #c6c6c6}.regionName{padding:3px 0 2px 5px;margin-top:10px;font-size:12px;font-weight:900;background-color:#f4f7fc;border-bottom:1px solid #c6c6c6}.regionName:first-child{margin-top:0}.locationWrapper{display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:26px;padding:9px 5px;background-color:#fff}.locationWrapper.locationWrapper-rift_valour{height:35px}.locationWrapper:nth-child(2n){background-color:#eee}.locationImageWrapper{display:inline-flex;flex:0}img.locationImage{width:28px;height:28px;border-radius:3px;outline:1px solid #838282}.locationName{position:relative;flex-grow:1;min-width:105px;padding-left:10px;font-size:12px}.locationProgress p{margin:0;line-height:1;text-align:right}.locationProgress{font-size:11px;line-height:17px;text-align:right;white-space:pre-line}.locationProgress .stats{text-align:right}.noLocationData{font-size:12px;text-align:center}.dashboard-fi-tiles span{display:inline-block;width:18px;height:24px;color:transparent;background-image:url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/mods.png?v=1&asset_cache_version=2);background-position-x:354px;background-size:354px}.dashboard-fi-tiles .glass,.dashboard-fi-tiles .gem_bonus{background-position-x:0}.dashboard-fi-tiles .ore,.dashboard-fi-tiles .ore_bonus{background-position-x:6.6%}.dashboard-fi-tiles .curd,.dashboard-fi-tiles .sky_cheese{background-position-x:13.3%}.dashboard-fi-tiles .pirate,.dashboard-fi-tiles .sky_pirates{background-position-x:20%}.dashboard-fi-tiles .key,.dashboard-fi-tiles .loot_cache{background-position-x:26.6%}.dashboard-fi-tiles .warden-wind,.dashboard-fi-tiles .wind_shrine{background-position-x:33.3%}.dashboard-fi-tiles .warden-rain,.dashboard-fi-tiles .rain_shrine{background-position-x:40%}.dashboard-fi-tiles .warden-frost,.dashboard-fi-tiles .frost_shrine{background-position-x:46.6%}.dashboard-fi-tiles .warden-fog,.dashboard-fi-tiles .fog_shrine{background-position-x:53.3%}.dashboard-fi-tiles .sprocket,.dashboard-fi-tiles .paragon_cache_a{background-position-x:60%}.dashboard-fi-tiles .bangle,.dashboard-fi-tiles .paragon_cache_d{background-position-x:66.6%}.dashboard-fi-tiles .wing,.dashboard-fi-tiles .paragon_cache_c{background-position-x:73.3%}.dashboard-fi-tiles .silk,.dashboard-fi-tiles .paragon_cache_b{background-position-x:80%}.dashboard-fi-tiles .glore,.dashboard-fi-tiles .ore_gem_bonus{background-position-x:86.6%}.dashboard-fi-tiles .seal,.dashboard-fi-tiles .cloudstone_bonus{background-position-x:93.3%}.dashboard-fi-tiles .jade,.dashboard-fi-tiles .charm_bonus{background-position-x:100%}.location-refresh-item{display:flex;align-items:stretch;border:1px solid #ccc;border-radius:5px;box-shadow:0 1px 1px -1px #7e7e7e}.mh-improved-location-refresh-popup-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.location-refresh-item.done{background-color:#3fcd84;border-color:#adadad}.location-refresh-item .locationName{position:relative;display:flex;align-items:center;overflow:hidden}.location-refresh-item .locationName .name{z-index:1}.location-refresh-item.traveling .locationName .progress:after{position:absolute;top:0;right:100%;bottom:0;width:100%;content:"";background:#f3c019;animation:mh-improved-right-to-left 1s linear forwards}@media (prefers-reduced-motion: reduce){.location-refresh-item.traveling .locationName .progress:after{animation:none}}.mh-improved-location-refresh-confirm-popup #overlayPopup .jsDialogContainer .suffix{display:none}.mh-improved-location-refresh-confirm-popup-buttons{display:flex;align-items:center;justify-content:space-around;margin-top:30px}.dashboard-fi-tiles{vertical-align:middle}\n'; } }); // src/modules/location-dashboard/location/desert-warpath.js var getFieryWarpathText, setFieryWarpathData; var init_desert_warpath = __esm({ "src/modules/location-dashboard/location/desert-warpath.js"() { init_utils2(); getFieryWarpathText = (quests) => { var _a, _b, _c, _d; if (!quests.QuestFieryWarpath) { return ""; } const quest = { wave: ((_a = quests == null ? void 0 : quests.QuestFieryWarpath) == null ? void 0 : _a.wave) || 0, streak: ((_b = quests == null ? void 0 : quests.QuestFieryWarpath) == null ? void 0 : _b.streak) || 0, remaining: ((_c = quests == null ? void 0 : quests.QuestFieryWarpath) == null ? void 0 : _c.remaining) || 0, percent: ((_d = quests == null ? void 0 : quests.QuestFieryWarpath) == null ? void 0 : _d.percent) || 100 }; let streakText = ""; if (quest.streak !== 0) { streakText = `, ${quest.streak} streak`; } return `Wave ${quest.wave}: ${quest.percent}% remaining${streakText} `; }; setFieryWarpathData = () => { if ("desert_warpath" !== getCurrentLocation()) { return false; } let wave = 0; let streak = "No Streak"; let remaining = 0; let percent = 100; const waveEl = document.querySelector(".warpathHUD.showPortal"); if (waveEl) { const waveClass = [...waveEl.classList].find((className) => className.startsWith("wave")); wave = Number.parseInt(waveClass.replace("wave", "").replace("_", "")); } const streakEl = document.querySelector(".warpathHUD-streakBoundingBox"); if (streakEl) { streak = Number.parseInt(streakEl.innerText.replaceAll("\n", " ").replace(" 0", "").trim()); } const remainingEl = document.querySelectorAll(".warpathHUD-wave-mouse-population"); if (remainingEl.length) { remaining = [...remainingEl].reduce((sum, el) => { if (el.innerText) { sum += Number.parseInt(el.innerText); } return sum; }, 0); remaining = remaining - 2; } const percentEl = document.querySelector(".warpathHUD-moraleBar span"); if (percentEl) { const style = percentEl.getAttribute("style"); if (style) { percent = Number.parseInt(style.replace("width:", "").replace("%;", "")); } } return { wave, streak, remaining, percent }; }; } }); // src/modules/location-dashboard/location/seasonal-garden.js var getSeasonalGardenText, setSeasonalGardenData; var init_seasonal_garden = __esm({ "src/modules/location-dashboard/location/seasonal-garden.js"() { getSeasonalGardenText = (quests) => { var _a, _b; if (!quests.QuestSeasonalGarden) { return ""; } const quest = { amp: ((_a = quests == null ? void 0 : quests.QuestSeasonalGarden) == null ? void 0 : _a.amp) || 0, max: ((_b = quests == null ? void 0 : quests.QuestSeasonalGarden) == null ? void 0 : _b.max) || 0 }; return `Amp: ${quest.amp}% / ${quest.max}%`; }; setSeasonalGardenData = () => { const quest = { amp: 0, max: 0 }; const amp = document.querySelector(".seasonalGardenHUD-currentAmplifier-value"); if (amp) { quest.amp = Number.parseInt(amp.textContent, 10); } const max = document.querySelector(".seasonalGardenHUD-maxAmplifier-value"); if (max) { quest.max = Number.parseInt(max.textContent, 10); } return quest; }; } }); // src/modules/location-dashboard/location/zugzwang-tower.js var getChessProgress, getZugzwangTowerText, setZugzwangTowerData; var init_zugzwang_tower = __esm({ "src/modules/location-dashboard/location/zugzwang-tower.js"() { getChessProgress = (pieces) => { if (pieces <= 8) { return "Pawns"; } if (pieces <= 10) { return "Knights"; } if (pieces <= 12) { return "Bishops"; } if (pieces <= 14) { return "Rooks"; } if (pieces <= 15) { return "Queen"; } return "King"; }; getZugzwangTowerText = (quests) => { if (!quests.QuestZugzwangTower) { return; } const returnText = `${quests.QuestZugzwangTower.amp || 0}%`; const techProgress = quests.QuestZugzwangTower.tech_progress || 0; const mythProgress = quests.QuestZugzwangTower.myth_progress || 0; if (techProgress >= 16 && mythProgress >= 16) { return `${returnText} Amp, Chessmaster`; } return `${returnText} Amp, Technic: ${getChessProgress(techProgress)}, Mystic: ${getChessProgress(mythProgress)}`; }; setZugzwangTowerData = () => { const ampEl = document.querySelector(".zuzwangsTowerHUD-currentAmplifier span"); const amp = ampEl ? Number.parseInt(ampEl.innerText, 10) : 0; const techProgressEl = document.querySelectorAll(".zuzwangsTowerHUD-progress.tech img"); const techProgress = techProgressEl ? techProgressEl.length : 0; const mythProgressEl = document.querySelectorAll(".zuzwangsTowerHUD-progress.magic img"); const mythProgress = mythProgressEl ? mythProgressEl.length : 0; return { amp, techProgress, mythProgress }; }; } }); // src/modules/location-dashboard/location/bountiful-beanstalk.js var bountiful_beanstalk_default; var init_bountiful_beanstalk = __esm({ "src/modules/location-dashboard/location/bountiful-beanstalk.js"() { bountiful_beanstalk_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y; if (!quests.QuestBountifulBeanstalk) { return ""; } if ((_a = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _a.in_castle) { const room2 = ((_d = (_c = (_b = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _b.castle) == null ? void 0 : _c.current_room) == null ? void 0 : _d.name) || ""; const floor = ((_g = (_f = (_e = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _e.castle) == null ? void 0 : _f.current_floor) == null ? void 0 : _g.name) || false; const huntsRemaining2 = ((_i = (_h = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _h.castle) == null ? void 0 : _i.hunts_remaining_text) || ""; const isBoss2 = ((_k = (_j = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _j.castle) == null ? void 0 : _k.is_boss_encounter) || false; const isChase = ((_m = (_l = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _l.castle) == null ? void 0 : _m.is_boss_chase) || false; const noise = ((_o = (_n = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _n.castle) == null ? void 0 : _o.noise_level) || 0; const noiseFormatted = noise.toLocaleString(); const maxNoise = ((_q = (_p = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _p.castle) == null ? void 0 : _q.max_noise_level) || 0; const maxNoiseFormatted = maxNoise.toLocaleString(); const embellishments = (_r = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _r.embellishments.map((item) => { return item.is_active ? item.name : null; }).filter((item) => item !== null); const noiseString = isBoss2 ? "Boss" : isChase ? "Chase" : `Noise: ${noiseFormatted}/${maxNoiseFormatted}`; const floorText = floor ? `(${floor.replace(/ Floor$/, "")})` : ""; return `${room2} ${floorText}<div class="stats">${noiseString} \xB7 ${huntsRemaining2}</div><div class="embelishments">${embellishments.join(", ")}</div>`; } const room = ((_u = (_t = (_s = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _s.beanstalk) == null ? void 0 : _t.current_zone) == null ? void 0 : _u.name) || ""; const huntsRemaining = ((_w = (_v = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _v.beanstalk) == null ? void 0 : _w.hunts_remaining_text) || ""; const isBoss = ((_y = (_x = quests == null ? void 0 : quests.QuestBountifulBeanstalk) == null ? void 0 : _x.beanstalk) == null ? void 0 : _y.is_boss_encounter) || false; return `${room} (Beanstalk) <div class="stats">${isBoss ? "At Boss" : ""} \xB7 ${huntsRemaining}</div>`; }; } }); // src/modules/location-dashboard/location/rift-bristle-woods.js var rift_bristle_woods_default; var init_rift_bristle_woods = __esm({ "src/modules/location-dashboard/location/rift-bristle-woods.js"() { rift_bristle_woods_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i; if (!quests.QuestRiftBristleWoods) { return ""; } const quest = { progress_goal: ((_a = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _a.progress_goal) || null, progress_remaining: ((_b = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _b.progress_remaining) || null, chamber_name: ((_c = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _c.chamber_name) || null, chamber_type: ((_d = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _d.chamber_type) || null, obelisk_percent: ((_e = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _e.obelisk_percent) || null, aco_sand: ((_f = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _f.acolyte_sand) || 0, time_sand: ((_i = (_h = (_g = quests == null ? void 0 : quests.QuestRiftBristleWoods) == null ? void 0 : _g.items) == null ? void 0 : _h.rift_hourglass_sand_stat_item) == null ? void 0 : _i.quantity) || 0 }; if ("acolyte_chamber" === quest.chamber_type) { return `Acolyte chamber: ${quest.obelisk_percent}% charged \xB7 <div class="stats">${quest.aco_sand} Acolyte sand \xB7 ${quest.time_sand} time sand</div>`; } return `${quest.chamber_name} \xB7 ${quest.progress_goal - quest.progress_remaining} / ${quest.progress_goal} loot`; }; } }); // src/modules/location-dashboard/location/rift-burroughs.js var rift_burroughs_default; var init_rift_burroughs = __esm({ "src/modules/location-dashboard/location/rift-burroughs.js"() { rift_burroughs_default = (quests) => { var _a; if (!quests.QuestRiftBurroughs) { return ""; } const quest = { mist_released: ((_a = quests == null ? void 0 : quests.QuestRiftBurroughs) == null ? void 0 : _a.mist_released) || null }; return `Mist: ${quest.mist_released} / 20`; }; } }); // src/modules/location-dashboard/location/floating-islands.js var floating_islands_default; var init_floating_islands = __esm({ "src/modules/location-dashboard/location/floating-islands.js"() { floating_islands_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n; if (!quests.QuestFloatingIslands || !quests.QuestFloatingIslands.hunting_site_atts) { return ""; } const powerTypes = { arcn: "Arcane", frgttn: "Forgotten", hdr: "Hydro", shdw: "Shadow", drcnc: "Draconic", law: "Law", phscl: "Physical", tctcl: "Tactical", launch_pad_island: "Launch Pad" }; const quest = { activated_island_mod_types: ((_b = (_a = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _a.hunting_site_atts) == null ? void 0 : _b.activated_island_mod_types) || null, island_mod_panels: ((_d = (_c = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _c.hunting_site_atts) == null ? void 0 : _d.island_mod_panels) || null, island_power_type: ((_f = (_e = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _e.hunting_site_atts) == null ? void 0 : _f.island_power_type) || null, isHai: ((_h = (_g = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _g.hunting_site_atts) == null ? void 0 : _h.is_high_tier_island) || false, isSp: ((_j = (_i = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _i.hunting_site_atts) == null ? void 0 : _j.is_vault_island) || false, isLai: false, hunts_remaining: ((_l = (_k = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _k.hunting_site_atts) == null ? void 0 : _l.hunts_remaining) || null, wardens_caught: ((_n = (_m = quests == null ? void 0 : quests.QuestFloatingIslands) == null ? void 0 : _m.hunting_site_atts) == null ? void 0 : _n.sky_wardens_caught) || 0 }; quest.isLai = !quest.isHai && !quest.isSp; const isLaunchPad = quest.island_power_type === "launch_pad_island"; if (isLaunchPad) { return `Launch Pad \xB7 <p>${quest.wardens_caught} wardens caught`; } let type = "LAI"; if (quest.isHai) { type = "HAI"; } else if (quest.isSp) { type = "SP"; } let tileText = ""; quest.island_mod_panels.forEach((panel) => { const panelType = panel.type.toLowerCase().replaceAll("loot_cache", "key").replaceAll("charm_bonus", "J"); const complete = panel.is_complete ? "complete" : "incomplete"; tileText += `<span class="tile ${panelType} ${complete}">${panelType}</span>`; }); const powerType = powerTypes[quest.island_power_type]; let returnText = `<div class='dashboard-fi-tiles'>${tileText}</div> ${powerType} ${type}`; if (quest.isLai) { returnText += `<div class="stats">${quest.hunts_remaining} hunts remaining, ${quest.wardens_caught} wardens caught</div>`; } else { return returnText += ` \xB7 ${quest.hunts_remaining} hunts remaining`; } return returnText; }; } }); // src/modules/location-dashboard/location/foreword-farm.js var foreword_farm_default; var init_foreword_farm = __esm({ "src/modules/location-dashboard/location/foreword-farm.js"() { foreword_farm_default = (quests) => { if (!quests.QuestForewordFarm) { return ""; } const plants = { empty: 0, ordinary_farm_plant: 0, legendary_farm_plant: 0, twisted_legendary_magic_farm_plant: 0 }; quests.QuestForewordFarm.plots.forEach((plot) => { const name = plot.is_growing ? plot.plant.type : "empty"; plants[name] += 1; }); if (plants.empty === 3) { return "No plants growing"; } let returnText = ""; if (plants.ordinary_farm_plant > 0) { returnText += `${plants.ordinary_farm_plant} Mulch, `; } if (plants.legendary_farm_plant > 0) { returnText += `${plants.legendary_farm_plant} Papyrus, `; } if (plants.twisted_legendary_magic_farm_plant > 0) { returnText += `${plants.twisted_legendary_magic_farm_plant} Twisted Papyrus, `; } returnText = returnText.slice(0, -2); return `Growing ${returnText}`; }; } }); // src/modules/location-dashboard/location/fort-rox.js var fort_rox_default; var init_fort_rox = __esm({ "src/modules/location-dashboard/location/fort-rox.js"() { fort_rox_default = (quests) => { if (!quests.QuestFortRox) { return ""; } const quest = { stage: quests.QuestFortRox.current_stage || "stage_none", hp: quests.QuestFortRox.hp || 0, max_hp: quests.QuestFortRox.max_hp || 0, is_dawn: quests.QuestFortRox.is_dawn || false }; let phase = "Day"; const phases = { stage_none: "Day", stage_one: "Twilight", stage_two: "Midnight", stage_three: "Pitch", stage_four: "Utter Darkness", stage_five: "First Light" }; phase = quest.is_dawn ? "Dawn" : phases[quest.stage]; return `${phase}: ${quest.hp}/${quest.max_hp} HP`; }; } }); // src/modules/location-dashboard/location/rift-furoma.js var rift_furoma_default; var init_rift_furoma = __esm({ "src/modules/location-dashboard/location/rift-furoma.js"() { rift_furoma_default = (quests) => { if (!quests.QuestRiftFuroma) { return ""; } const q = quests.QuestRiftFuroma; const map = { one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10 }; const location = q.view_state.includes("pagoda") ? "inside" : "outside"; if ("inside" === location) { const droidLevel = map[q.droid.charge_level.split("_")[2]]; const batteryPercent = Math.floor(q.batteries[q.droid.charge_level].percent); return `Pagoda \xB7 Battery ${droidLevel} (${batteryPercent}%) \xB7 ${q.droid.remaining_energy} Enerchi`; } const unlockedBatteries = Object.keys(q.batteries).filter((battery) => { return q.batteries[battery].status.includes("unlocked"); }); const highestBattery = unlockedBatteries.reduce((highest, battery) => { const batteryLevel = map[battery.split("_")[2]]; return batteryLevel > highest ? batteryLevel : highest; }, 0); return `Outside \xB7 Battery ${highestBattery} \xB7 ${q.items.combat_energy_stat_item.quantity} Enerchi`; }; } }); // src/modules/location-dashboard/location/iceberg.js var iceberg_default2; var init_iceberg2 = __esm({ "src/modules/location-dashboard/location/iceberg.js"() { iceberg_default2 = (quests) => { if (!quests.QuestIceberg) { return ""; } const quest = { phase: quests.QuestIceberg.current_phase || "Iceberg", progress: quests.QuestIceberg.user_progress || 0, hunts: quests.QuestIceberg.turns_taken || 0 }; return `${quest.phase}: ${quest.progress} ft.<div class="stats">Hunt #${quest.hunts}</div>`; }; } }); // src/modules/location-dashboard/location/labyrinth.js var labyrinth_default3; var init_labyrinth3 = __esm({ "src/modules/location-dashboard/location/labyrinth.js"() { labyrinth_default3 = (quests) => { var _a, _b, _c; if (!quests.QuestLabyrinth) { return ""; } const quest = { clues: ((_a = quests == null ? void 0 : quests.QuestLabyrinth) == null ? void 0 : _a.clues) || 0, hallway_name: ((_b = quests == null ? void 0 : quests.QuestLabyrinth) == null ? void 0 : _b.hallway_name) || "", status: ((_c = quests == null ? void 0 : quests.QuestLabyrinth) == null ? void 0 : _c.status) || null }; let clueText = ""; if (quest.clues) { const clueTexts = []; quest.clues.forEach((clue) => { const clueName = clue.name.replace("Farming", "Farm").replace("Dead End", "DEC"); clueTexts.push(`${clue.quantity} ${clueName}`); }); if (clueTexts.length > 0) { clueText = `: ${clueTexts.join(", ")} clues`; } } const hallwayName = quest.hallway_name.replace(" Hallway", ""); const currentLocation = quest.status === "intersection" ? "Intersection" : hallwayName; return `${currentLocation}${clueText}`; }; } }); // src/modules/location-dashboard/location/desert-oasis.js var desert_oasis_default; var init_desert_oasis = __esm({ "src/modules/location-dashboard/location/desert-oasis.js"() { desert_oasis_default = (quests) => { var _a, _b, _c, _d; if (!quests.QuestLivingGarden) { return ""; } const twistedText = quests.QuestLivingGarden.is_normal ? "Not twisted" : "Twisted"; let minigameText = ""; if ("drops" === ((_a = quests.QuestLivingGarden.minigame) == null ? void 0 : _a.type)) { minigameText = `: Thirsty mice for ${(_b = quests.QuestLivingGarden.minigame) == null ? void 0 : _b.estimate} hunts`; } else if ("hunts" === ((_c = quests.QuestLivingGarden.minigame) == null ? void 0 : _c.bucket_state)) { minigameText = `: ${(_d = quests.QuestLivingGarden.minigame) == null ? void 0 : _d.bucket_state} bucket`; } return `${twistedText}${minigameText}`; }; } }); // src/modules/location-dashboard/location/lost-city.js var lost_city_default; var init_lost_city = __esm({ "src/modules/location-dashboard/location/lost-city.js"() { lost_city_default = (quests) => { var _a, _b, _c, _d; if (!quests.QuestLostCity) { return ""; } if (!((_b = (_a = quests.QuestLostCity) == null ? void 0 : _a.minigame) == null ? void 0 : _b.is_cursed)) { return "Not cursed"; } const curses = (_d = (_c = quests.QuestLostCity) == null ? void 0 : _c.minigame) == null ? void 0 : _d.curses; const cursesText = curses.map((curse) => curse.name).join(", ").replaceAll("!", "").replace(/,([^,]*)$/, "$1"); return `Cursed with ${cursesText}`; }; } }); // src/modules/location-dashboard/location/mousoleum.js var mousoleum_default2; var init_mousoleum2 = __esm({ "src/modules/location-dashboard/location/mousoleum.js"() { mousoleum_default2 = (quests) => { var _a, _b, _c, _d; if (!quests.QuestMousoleum) { return ""; } const quest = { has_wall: ((_a = quests == null ? void 0 : quests.QuestMousoleum) == null ? void 0 : _a.has_wall) || false, wall_health: ((_b = quests == null ? void 0 : quests.QuestMousoleum) == null ? void 0 : _b.wall_health) || 0, max_wall_health: ((_c = quests == null ? void 0 : quests.QuestMousoleum) == null ? void 0 : _c.max_wall_health) || 0, planks: ((_d = quests == null ? void 0 : quests.QuestMousoleum) == null ? void 0 : _d.wall_materials) || 0 }; if (quest.has_wall) { return `Wall, ${quest.wall_health}/${quest.max_wall_health} HP`; } return `No Wall, ${quest.planks} planks`; }; } }); // src/modules/location-dashboard/location/moussu-picchu.js var moussu_picchu_default; var init_moussu_picchu = __esm({ "src/modules/location-dashboard/location/moussu-picchu.js"() { init_utils2(); moussu_picchu_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r; if (!(quests.QuestMoussuPicchu && quests.QuestMoussuPicchu.elements)) { return ""; } const quest = { rainPercent: ((_c = (_b = (_a = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _a.elements) == null ? void 0 : _b.rain) == null ? void 0 : _c.percent) || 0, rainLevel: ((_f = (_e = (_d = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _d.elements) == null ? void 0 : _e.rain) == null ? void 0 : _f.level) || null, stormPercent: ((_i = (_h = (_g = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _g.elements) == null ? void 0 : _h.storm) == null ? void 0 : _i.percent) || 0, stormLevel: ((_l = (_k = (_j = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _j.elements) == null ? void 0 : _k.storm) == null ? void 0 : _l.level) || null, windPercent: ((_o = (_n = (_m = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _m.elements) == null ? void 0 : _n.wind) == null ? void 0 : _o.percent) || 0, windLevel: ((_r = (_q = (_p = quests == null ? void 0 : quests.QuestMoussuPicchu) == null ? void 0 : _p.elements) == null ? void 0 : _q.wind) == null ? void 0 : _r.level) || null }; if ("none" !== quest.stormLevel) { return `${uppercaseFirstLetter(quest.stormLevel)} Storm`; } return `${uppercaseFirstLetter(quest.windLevel)} Wind (${quest.windPercent}%), ${uppercaseFirstLetter(quest.rainLevel)} Rain (${quest.rainPercent}%)`; }; } }); // src/modules/location-dashboard/location/queso-geyser.js var queso_geyser_default; var init_queso_geyser = __esm({ "src/modules/location-dashboard/location/queso-geyser.js"() { queso_geyser_default = (quests) => { var _a, _b; if (!quests.QuestQuesoGeyser) { return ""; } const quest = { state_name: ((_a = quests == null ? void 0 : quests.QuestQuesoGeyser) == null ? void 0 : _a.state_name) || "Cork Gathering", // add check for pressure building here hunts_remaining: ((_b = quests == null ? void 0 : quests.QuestQuesoGeyser) == null ? void 0 : _b.hunts_remaining) || 0 }; return `${quest.state_name}: ${quest.hunts_remaining} hunts remaining`; }; } }); // src/modules/location-dashboard/location/sand-dunes.js var sand_dunes_default; var init_sand_dunes = __esm({ "src/modules/location-dashboard/location/sand-dunes.js"() { sand_dunes_default = (quests) => { var _a; if (!quests.QuestSandDunes) { return ""; } return ((_a = quests.QuestSandDunes.minigame) == null ? void 0 : _a.has_stampede) ? "Stampeding" : "Not stampeding"; }; } }); // src/modules/location-dashboard/location/sunken-city.js var sunken_city_default; var init_sunken_city = __esm({ "src/modules/location-dashboard/location/sunken-city.js"() { sunken_city_default = (quests) => { var _a; if (!quests.QuestSunkenCity) { return ""; } const oxygen = ((_a = quests.QuestSunkenCity.items) == null ? void 0 : _a.oxygen_stat_item) || 0; if (!quests.QuestSunkenCity.is_diving) { const canDive = quests.QuestSunkenCity.can_dive ? "can dive" : "cannot dive"; return `Docked (${canDive}), ${oxygen} O\u2082`; } const zone = quests.QuestSunkenCity.zone_name; const depth = quests.QuestSunkenCity.distance; return `${zone}, ${depth}m, ${oxygen} O\u2082`; }; } }); // src/modules/location-dashboard/location/table-of-contents.js var table_of_contents_default; var init_table_of_contents = __esm({ "src/modules/location-dashboard/location/table-of-contents.js"() { table_of_contents_default = (quests) => { if (!quests.QuestTableOfContents) { return ""; } const q = quests.QuestTableOfContents; if (!q.is_writing) { return "Not writing"; } return `Writing: ${q.current_book.name} (${q.current_book.percent}%) <div class="stats">${q.current_book.word_count_formatted} words \xB7 ${q.current_book.hunts_remaining} hunts remaining</div>`; }; } }); // src/modules/location-dashboard/location/pollution-outbreak.js var pollution_outbreak_default; var init_pollution_outbreak = __esm({ "src/modules/location-dashboard/location/pollution-outbreak.js"() { pollution_outbreak_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g; if (!quests.QuestPollutionOutbreak) { return ""; } const crude = ((_c = (_b = (_a = quests.QuestPollutionOutbreak) == null ? void 0 : _a.items) == null ? void 0 : _b.crude_pollutinum_stat_item) == null ? void 0 : _c.quantity) || 0; const refined = ((_f = (_e = (_d = quests.QuestPollutionOutbreak) == null ? void 0 : _d.items) == null ? void 0 : _e.refined_pollutinum_stat_item) == null ? void 0 : _f.quantity) || 0; const max = ((_g = quests.QuestPollutionOutbreak) == null ? void 0 : _g.max_pollutinum) || 0; return `${crude.toLocaleString()}/${max} Pollutinum<div class="stats">${refined.toLocaleString()} Refined Pollutinum</div>`; }; } }); // src/modules/location-dashboard/location/rift-valour.js var rift_valour_default; var init_rift_valour = __esm({ "src/modules/location-dashboard/location/rift-valour.js"() { rift_valour_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n; if (!quests.QuestRiftValour) { return ""; } const quest = { floor: ((_a = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _a.floor) || 0, floor_name: ((_b = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _b.floor_name) || "Outside", floor_steps: ((_c = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _c.floor_steps) || 0, hunts_remaining: ((_d = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _d.hunts_remaining) || 0, current_step_formatted: ((_e = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _e.current_step_formatted) || "0", speed: ((_h = (_g = (_f = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _f.power_up_data) == null ? void 0 : _g.long_stride) == null ? void 0 : _h.current_level) + 1 || 1, sync: ((_k = (_j = (_i = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _i.power_up_data) == null ? void 0 : _j.hunt_limit) == null ? void 0 : _k.current_level) + 1 || 1, siphon: ((_n = (_m = (_l = quests == null ? void 0 : quests.QuestRiftValour) == null ? void 0 : _l.power_up_data) == null ? void 0 : _m.boss_extension) == null ? void 0 : _n.current_level) + 1 || 1 }; let text = ""; text = quest.floor === 0 ? "Outside" : `Floor ${quest.floor} (${quest.floor_name}) \xB7 ${quest.hunts_remaining} hunts remaining`; return `${text} <div class="stats">Speed ${quest.speed} \xB7 Sync ${quest.sync} \xB7 Siphon ${quest.siphon}</div>`; }; } }); // src/modules/location-dashboard/location/whisker-woods-rift.js var whisker_woods_rift_default; var init_whisker_woods_rift = __esm({ "src/modules/location-dashboard/location/whisker-woods-rift.js"() { whisker_woods_rift_default = (quests) => { var _a, _b, _c, _d, _e, _f, _g, _h, _i; if (!(quests.QuestRiftWhiskerWoods && quests.QuestRiftWhiskerWoods.zones)) { return ""; } const quest = { clearing: ((_c = (_b = (_a = quests == null ? void 0 : quests.QuestRiftWhiskerWoods) == null ? void 0 : _a.zones) == null ? void 0 : _b.clearing) == null ? void 0 : _c.level) || 0, lagoon: ((_f = (_e = (_d = quests == null ? void 0 : quests.QuestRiftWhiskerWoods) == null ? void 0 : _d.zones) == null ? void 0 : _e.lagoon) == null ? void 0 : _f.level) || 0, tree: ((_i = (_h = (_g = quests == null ? void 0 : quests.QuestRiftWhiskerWoods) == null ? void 0 : _g.zones) == null ? void 0 : _h.tree) == null ? void 0 : _i.level) || 0 }; return `Rage: ${quest.clearing} / ${quest.lagoon} / ${quest.tree}`; }; } }); // src/modules/location-dashboard/location/ancient-city.js var ancient_city_default; var init_ancient_city = __esm({ "src/modules/location-dashboard/location/ancient-city.js"() { ancient_city_default = (quests) => { var _a, _b; if (!quests.QuestAncientCity) { return ""; } const quest = { district_name: ((_a = quests == null ? void 0 : quests.QuestAncientCity) == null ? void 0 : _a.district_name) || null, remaining: ((_b = quests == null ? void 0 : quests.QuestAncientCity) == null ? void 0 : _b.remaining) || null }; if (!quest.district_name || !quest.remaining) { return ""; } return `${quest.district_name.replace("The ", "")}, ${quest.remaining} stealth`; }; } }); // src/modules/location-dashboard/index.js var cacheLocationData, waitForTravel, disarmBait, doLocationRefresh, makeDashboardTab, makeRegionMarkup, makeLocationMarkup, getDashboardContents, environments4, init54, location_dashboard_default; var init_location_dashboard = __esm({ "src/modules/location-dashboard/index.js"() { init_utils2(); init_utils2(); init_styles53(); init_desert_warpath(); init_seasonal_garden(); init_zugzwang_tower(); init_bountiful_beanstalk(); init_rift_bristle_woods(); init_rift_burroughs(); init_floating_islands(); init_foreword_farm(); init_fort_rox(); init_rift_furoma(); init_iceberg2(); init_labyrinth3(); init_desert_oasis(); init_lost_city(); init_mousoleum2(); init_moussu_picchu(); init_queso_geyser(); init_sand_dunes(); init_sunken_city(); init_table_of_contents(); init_pollution_outbreak(); init_rift_valour(); init_whisker_woods_rift(); init_ancient_city(); cacheLocationData = () => __async(void 0, null, function* () { if (!user.environment_type || !user.quests) { return; } if (user.environment_type === "desert_warpath") { const fwQuestData = setFieryWarpathData(); if (fwQuestData) { user.quests.QuestFieryWarpath = fwQuestData; } } else if (user.environment_type === "zugzwang_tower") { const ztQuestData = setZugzwangTowerData(); if (ztQuestData) { user.quests.QuestZugzwangTower = ztQuestData; } } else if (user.environment_type === "seasonal_garden") { const sgQuestData = setSeasonalGardenData(); if (sgQuestData) { user.quests.QuestSeasonalGarden = sgQuestData; } } const questsCached = yield cacheGet("quests", {}); const questsCombined = Object.assign({}, questsCached, user.quests); if (user.environment_type === "labyrinth") { questsCombined.QuestAncientCity = {}; } else if (user.environment_type === "ancient_city") { questsCombined.QuestLabyrinth = {}; } else if (user.environment_type === "zugzwang_tower") { questsCombined.QuestSeasonalGarden = {}; } else if (user.environment_type === "seasonal_garden") { questsCombined.QuestZugzwangTower = {}; } try { cacheSet("quests", questsCombined); } catch (error) { debug("Error saving location data to localStorage:", error); } }); waitForTravel = (environment) => __async(void 0, null, function* () { return new Promise((resolve) => { hg.utils.User.travel( environment, (success) => { debug(`Travel success: ${success}`); resolve(); }, (error) => { debug(`Travel error: ${error}`); resolve(); } ); debug(`Traveled to ${environment}.`); }); }); disarmBait = () => __async(void 0, null, function* () { return new Promise((resolve) => { hg.utils.TrapControl.disarmBait().go(() => { resolve(); }, () => { reject(); }); }); }); doLocationRefresh = () => __async(void 0, null, function* () { sessionSet("doing-location-refresh", true); const locationProgress = []; const environmentsToUse = /* @__PURE__ */ new Set([ "ancient_city", "bountiful_beanstalk", "desert_warpath", "floating_islands", "foreword_farm", "fort_rox", "iceberg", "labyrinth", "desert_oasis", "lost_city", "mousoleum", "moussu_picchu", "pollution_outbreak", "queso_geyser", "rift_bristle_woods", "rift_burroughs", "rift_furoma", "rift_valour", "rift_whisker_woods", "sand_dunes", "seasonal_garden", "sunken_city", "table_of_contents", "zugzwang_tower" ]); const environmentsToTravel = environments4.filter((env) => { return environmentsToUse.has(env.id) && isUserTitleAtLeast(env.title); }); debug(`Environments to travel: ${environmentsToTravel.map((env) => env.name).join(", ")}`); environmentsToTravel.sort((a, b) => { return a.order - b.order; }); debug(`Sorted environments to travel: ${environmentsToTravel.map((env) => env.name).join(", ")}`); let locationProgressMarkup = ""; environmentsToTravel.forEach((env) => { locationProgressMarkup += `<div class="location-refresh-item" data-environment-type="${env.id}"> <div class="locationImageWrapper"> <img class="locationImage" src="${env.image}"> </div> <div class="locationName"> <div class="name">${env.name}</div> <div class="progress"></div> </div> </div>`; locationProgress.push(env.id); debug(`Adding ${env.name} to the to-travel list.`); }); const popup = createPopup({ title: "Refreshing Location Data", content: `<div class="mh-improved-location-refresh-popup"> <div class="mh-improved-location-refresh-popup-progress">${locationProgressMarkup}</div> </div>`, hasCloseButton: false, show: true }); const originalLocation = user.environment_type; debug(`Original location: ${user.environment_type}.`); const equippedBait = user.bait_item_id || "disarmed"; debug(`Equipped bait: ${equippedBait}.`); yield disarmBait(); for (const location of locationProgress) { if (originalLocation === location) { continue; } const locationData = environments4.find((env) => env.id === location); if (!locationData) { continue; } debug(`Traveling to ${locationData.name}.`); const progressItem = document.querySelector(`.location-refresh-item[data-environment-type="${location}"]`); if (!progressItem) { continue; } progressItem.classList.add("traveling"); yield waitForTravel(location); yield cacheLocationData(); progressItem.classList.remove("traveling"); progressItem.classList.add("done"); debug(`Traveled to ${locationData.name}.`); } yield waitForTravel(originalLocation); debug(`Traveled back to ${user.environment_type}.`); hg.utils.TrapControl.setBait(equippedBait).go(); debug(`Re-equipped bait: ${equippedBait}.`); popup.hide(); const dashboardMenu = document.querySelector(".mousehuntHeaderView .menuItem.dropdown.dashboard"); if (dashboardMenu) { dashboardMenu.classList.add("expanded"); const existing = document.querySelector(".dashboardContents"); if (existing) { const refreshedContents = yield getDashboardContents(); existing.replaceWith(refreshedContents); } const wrapper = document.querySelector(".dashboardWrapper"); if (wrapper) { wrapper.scrollTop = 0; } } sessionSet("doing-location-refresh", false); doEvent2("travel_complete"); }); makeDashboardTab = () => { const tabsContainer = document.querySelector(".mousehuntHeaderView-dropdownContainer"); if (!tabsContainer) { return; } const menuTab = document.createElement("div"); menuTab.classList.add("menuItem"); menuTab.classList.add("dropdown"); menuTab.classList.add("dashboard"); menuTab.addEventListener("click", () => __async(void 0, null, function* () { menuTab.classList.toggle("expanded"); const existing = document.querySelector(".dashboardContents"); if (existing) { const refreshedContents = yield getDashboardContents(); existing.replaceWith(refreshedContents); } sessionSet("doing-location-refresh", false); })); makeElement("span", "", "Dashboard", menuTab); makeElement("div", "arrow", "", menuTab); const dropdownContent = makeElement("div", "dropdownContent"); const dashboardWrapper = makeElement("div", "dashboardWrapper"); makeElement("div", "dashboardContents", "", dashboardWrapper); const refreshWrapper = makeElement("div", "refreshWrapper"); const refreshButton = makeElement("button", ["mousehuntActionButton", "dashboardRefresh"]); makeElement("span", "", "Refresh", refreshButton); refreshButton.addEventListener("click", () => { const confirmPopup = createPopup({ title: "Refresh Location Data", content: `<div class="mh-improved-location-refresh-confirm-popup"> <div class="mh-improved-location-refresh-confirm-popup-content"> <p>This will refresh the location data for all locations by traveling to each location and caching the data.</p> <div class="mh-improved-location-refresh-confirm-popup-buttons"> <div class="mousehuntActionButton mh-improved-location-refresh-confirm-popup-button mh-improved-location-refresh-confirm-popup-button-cancel"><span>Cancel</span></div> <div class="mousehuntActionButton mh-improved-location-refresh-confirm-popup-button mh-improved-location-refresh-confirm-popup-button-confirm"><span>Start Traveling</span></div> </div> </div> </div>`, className: "mh-improved-location-refresh-confirm-popup", hasCloseButton: false, show: true }); const cancelButton = document.querySelector(".mh-improved-location-refresh-confirm-popup-button-cancel"); if (cancelButton) { cancelButton.addEventListener("click", () => { confirmPopup.hide(); }); } const confirmButton = document.querySelector(".mh-improved-location-refresh-confirm-popup-button-confirm"); if (confirmButton) { confirmButton.addEventListener("click", () => { confirmPopup.hide(); doLocationRefresh(); }); } doLocationRefresh(); }); refreshWrapper.append(refreshButton); dashboardWrapper.append(refreshWrapper); dropdownContent.append(dashboardWrapper); menuTab.append(dropdownContent); tabsContainer.insertBefore(menuTab, tabsContainer.lastChild); }; makeRegionMarkup = (name, childContent, appendTo) => { const firstChild = childContent.firstChild; if (!firstChild) { return; } const regionWrapper = makeElement("div", "regionWrapper"); makeElement("div", "regionName", name, regionWrapper); regionWrapper.append(childContent); appendTo.append(regionWrapper); }; makeLocationMarkup = (id, name, progress, appendTo, quests) => { const markup = progress(quests); if (!markup) { return; } const locationWrapper = makeElement("div", "locationWrapper"); locationWrapper.setAttribute("data-location", id); locationWrapper.classList.add(`locationWrapper-${id}`); const locationImageWrapper = makeElement("div", "locationImageWrapper"); const image = environments4.find((env) => env.id === id); if (image.image) { const locationImage = makeElement("img", "locationImage"); locationImage.setAttribute("src", image.image); locationImageWrapper.append(locationImage); } locationWrapper.append(locationImageWrapper); makeElement("div", "locationName", name, locationWrapper); makeElement("div", "locationProgress", markup, locationWrapper); appendTo.append(locationWrapper); }; getDashboardContents = () => __async(void 0, null, function* () { const quests = yield cacheGet("quests", {}); const contentsWrapper = document.createElement("div"); contentsWrapper.classList.add("dashboardContents"); const burroughs = document.createElement("div"); makeLocationMarkup("mousoleum", "Mousoleum", mousoleum_default2, burroughs, quests); makeLocationMarkup("pollution_outbreak", "Toxic Spill", pollution_outbreak_default, burroughs, quests); makeRegionMarkup("Burroughs", burroughs, contentsWrapper); const varmintValley = document.createElement("div"); makeLocationMarkup("fort_rox", "Fort Rox", fort_rox_default, varmintValley, quests); makeRegionMarkup("Varmint Valley", varmintValley, contentsWrapper); const sandtailDesert = document.createElement("div"); makeLocationMarkup("desert_warpath", "Fiery Warpath", getFieryWarpathText, sandtailDesert, quests); makeLocationMarkup("desert_oasis", "Living Garden", desert_oasis_default, sandtailDesert, quests); makeLocationMarkup("lost_city", "Lost City", lost_city_default, sandtailDesert, quests); makeLocationMarkup("sand_dunes", "Sand Dunes", sand_dunes_default, sandtailDesert, quests); makeRegionMarkup("Sandtail Desert", sandtailDesert, contentsWrapper); const rodentia = document.createElement("div"); makeLocationMarkup("seasonal_garden", "Seasonal Garden", getSeasonalGardenText, rodentia, quests); makeLocationMarkup("zugzwang_tower", "Zugzwang's Tower", getZugzwangTowerText, rodentia, quests); makeLocationMarkup("iceberg", "Iceberg", iceberg_default2, rodentia, quests); makeLocationMarkup("sunken_city", "Sunken City", sunken_city_default, rodentia, quests); makeRegionMarkup("Rodentia", rodentia, contentsWrapper); const quesoCanyon = document.createElement("div"); makeLocationMarkup("queso_geyser", "Queso Geyser", queso_geyser_default, quesoCanyon, quests); makeRegionMarkup("Queso Canyon", quesoCanyon, contentsWrapper); const hollowHeights = document.createElement("div"); makeLocationMarkup("labyrinth", "Labyrinth", labyrinth_default3, hollowHeights, quests); makeLocationMarkup("ancient_city", "Zokor", ancient_city_default, hollowHeights, quests); makeLocationMarkup("moussu_picchu", "Moussu Picchu", moussu_picchu_default, hollowHeights, quests); makeLocationMarkup("floating_islands", "Floating Islands", floating_islands_default, hollowHeights, quests); makeRegionMarkup("Hollow Heights", hollowHeights, contentsWrapper); const folkloreForest = document.createElement("div"); makeLocationMarkup("bountiful_beanstalk", "Bountiful Beanstalk", bountiful_beanstalk_default, folkloreForest, quests); makeLocationMarkup("foreword_farm", "Foreword Farm", foreword_farm_default, folkloreForest, quests); makeLocationMarkup("table_of_contents", "Table of Contents", table_of_contents_default, folkloreForest, quests); makeRegionMarkup("Folklore Forest", folkloreForest, contentsWrapper); const rift = document.createElement("div"); makeLocationMarkup("rift_burroughs", "Burroughs Rift", rift_burroughs_default, rift, quests); makeLocationMarkup("rift_whisker_woods", "Whisker Woods Rift", whisker_woods_rift_default, rift, quests); makeLocationMarkup("rift_furoma", "Furoma Rift", rift_furoma_default, rift, quests); makeLocationMarkup("rift_bristle_woods", "Bristle Woods Rift", rift_bristle_woods_default, rift, quests); makeLocationMarkup("rift_valour", "Valour Rift", rift_valour_default, rift, quests); makeRegionMarkup("Rift", rift, contentsWrapper); if (burroughs.children.length === 0 && varmintValley.children.length === 0 && sandtailDesert.children.length === 0 && rodentia.children.length === 0 && quesoCanyon.children.length === 0 && hollowHeights.children.length === 0 && folkloreForest.children.length === 0 && rift.children.length === 0) { const noLocation = makeElement("div", "noLocationDataWrapper"); makeElement("div", "noLocationData", "No location data found. Refresh data to populate the dashboard.", noLocation); contentsWrapper.append(noLocation); } return contentsWrapper; }); environments4 = []; init54 = () => __async(void 0, null, function* () { addStyles(styles_default52, "location-dashboard"); environments4 = yield getData("environments"); sessionSet("doing-location-refresh", false); cacheLocationData(); onEvent("travel_complete", cacheLocationData); onRequest("*", cacheLocationData); makeDashboardTab(); }); location_dashboard_default = { id: "location-dashboard", name: "Location Dashboard", type: "feature", default: true, description: "See location HUD information in a dashboard available in the top dropdown menu.", load: init54 }; } }); // src/modules/metric/index.js var imperialToMetric, convertInDialog, replaceInJournal, replaceOnMousePage, convertOnPage, init55, metric_default; var init_metric = __esm({ "src/modules/metric/index.js"() { init_utils2(); imperialToMetric = (text) => { const lb = text.match(/(\d+? )lb./i); const oz = text.match(/(\d+? )oz./i); if (!(lb || oz)) { return; } const lbValue = lb ? lb[1] : 0; const ozValue = oz ? oz[1] : 0; const totalWeight = Number.parseInt(lbValue) + Number.parseInt(ozValue) / 16; const totalWeightMetric = (Math.round(totalWeight * 0.45359237 * 100) / 100).toString(); return text.replace(/(\d+? lb.\s)?(\d+? oz.)/i, totalWeightMetric + " kg. "); }; convertInDialog = () => { const mouseViewWeights = document.querySelectorAll(".mouseView-statsContainer .mouseView-statsContainer-block-padding table tbody tr"); if (mouseViewWeights.length) { mouseViewWeights.forEach((row) => { const firstCell = row.querySelector("td"); const secondCell = firstCell.nextSibling; if (firstCell.innerText === "Avg. Weight:" || firstCell.innerText === "Heaviest:") { const converted = imperialToMetric(secondCell.innerText); if (converted) { secondCell.innerText = converted; } } }); } }; replaceInJournal = () => { const entries = document.querySelectorAll(".journal .entry .journalbody .journaltext"); if (!entries.length) { return; } entries.forEach((entry) => { const converted = imperialToMetric(entry.innerHTML); if (converted) { entry.innerHTML = converted; } }); }; replaceOnMousePage = () => { const mouseWeightsStats = document.querySelectorAll(".mouseListView-categoryContent-subgroupContainer .mouseListView-categoryContent-subgroup-mouse-stats"); if (!mouseWeightsStats.length) { return; } mouseWeightsStats.forEach((stat) => { if (stat.classList.contains("average_weight") || stat.classList.contains("heaviest_catch")) { const converted = imperialToMetric(stat.innerText); if (converted) { stat.innerText = converted; } } }); }; convertOnPage = () => { replaceOnMousePage(); replaceInJournal(); }; init55 = () => __async(void 0, null, function* () { onDialogShow("all", convertInDialog); onRequest("*", convertOnPage); convertOnPage(); }); metric_default = { id: "metric", name: "Metric Units", type: "feature", default: false, description: "Use metric units instead of imperial units.", load: init55 }; } }); // src/modules/paste-hunter-id/index.js var maybeRedirectToHunterProfile, listenForIDPaste, init56, paste_hunter_id_default; var init_paste_hunter_id = __esm({ "src/modules/paste-hunter-id/index.js"() { maybeRedirectToHunterProfile = (text) => { var _a, _b; if (text.length > 30) { return; } const url = text.match(/https:\/\/www.mousehuntgame.com/); if (url) { window.location.href = text; return; } const id = text.match(/\d+/); if (!id) { return; } if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.setPage)) { return; } hg.utils.PageUtil.setPage("HunterProfile", { id: id[0] }, (data) => { var _a2, _b2; const snuid = data.tabs.profile.subtabs[0].snuid; if (snuid && ((_b2 = (_a2 = hg == null ? void 0 : hg.utils) == null ? void 0 : _a2.PageUtil) == null ? void 0 : _b2.showHunterProfile)) { hg.utils.PageUtil.showHunterProfile(snuid); } }); }; listenForIDPaste = () => { window.addEventListener("paste", (e) => { if ( /* eslint-disable @wordpress/no-global-active-element */ document.activeElement instanceof HTMLInputElement || document.activeElement instanceof HTMLTextAreaElement || document.activeElement instanceof HTMLSelectElement ) { return; } maybeRedirectToHunterProfile(e.clipboardData.getData("text")); }); }; init56 = () => __async(void 0, null, function* () { listenForIDPaste(); }); paste_hunter_id_default = { id: "paste-hunter-id", name: "Paste Hunter ID", type: "feature", default: true, description: "Copy a Hunter ID to your clipboard and then press Ctrl/Cmd+v anywhere to go directly to that hunter's profile.", load: init56 }; } }); // src/modules/prestige-base-stats/index.js var updateStats, setPrestigeStats, isModifying, modifyPB, isSaving, savePbStats, run, init57, prestige_base_stats_default; var init_prestige_base_stats = __esm({ "src/modules/prestige-base-stats/index.js"() { init_utils2(); updateStats = (selector, pbStats) => { const stats = selector.querySelector(".campPage-trap-itemBrowser-item-statContainer"); if (!stats) { return; } const currentSetup = getUserSetupDetails(); const power = stats.querySelector(".campPage-trap-itemBrowser-item-stat.power"); if (power) { const powerValue = power.querySelector(".value span"); if (powerValue) { powerValue.innerText = pbStats.power; power.classList.remove("better", "worse"); if (currentSetup.base.power < pbStats.power) { power.classList.add("better"); } else if (currentSetup.base.power > pbStats.power) { power.classList.add("worse"); } } } const luck = stats.querySelector(".campPage-trap-itemBrowser-item-stat.luck"); if (luck) { const luckValue = luck.querySelector(".value span"); if (luckValue) { luckValue.innerText = pbStats.luck; luck.classList.remove("better", "worse"); if (currentSetup.base.luck < pbStats.luck) { luck.classList.add("better"); } else if (currentSetup.base.luck > pbStats.luck) { luck.classList.add("worse"); } } } }; setPrestigeStats = () => __async(void 0, null, function* () { const prestige = document.querySelector(".campPage-trap-itemBrowser-item.base.valour_rift_prestige_base"); if (!prestige) { return; } const pbStats = yield cacheGet("pb-stats", false); if (!pbStats) { return; } updateStats(prestige, pbStats); const armed = document.querySelector(".campPage-trap-itemBrowser-armed-item.base"); if (!armed) { return; } const name = armed.querySelector(".campPage-trap-itemBrowser-item-name"); if (!name) { return; } if (name.innerText.includes("Prestige Base")) { updateStats(armed, pbStats); } }); isModifying = false; modifyPB = (opts) => __async(void 0, null, function* () { if (isModifying) { return; } isModifying = true; const activeBp = document.querySelector(".trapSelectorView__blueprint--active .trapSelectorView__browserStateParent"); if (!activeBp) { isModifying = false; return; } const bpType = activeBp.getAttribute("data-blueprint-type"); if (!bpType || bpType !== "base") { isModifying = false; return; } const { retryPrestige } = opts || {}; const savedStats = yield cacheGet("pb-stats", false); debuglog("prestige-base-stats", "Saved Prestige Base stats:", savedStats); if (!savedStats) { isModifying = false; return; } const prestige = document.querySelector(".campPage-trap-itemBrowser-item.base.valour_rift_prestige_base"); if (!prestige) { if (!retryPrestige) { setTimeout(() => { modifyPB({ retryPrestige: true }); }, 500); } isModifying = false; return; } if (prestige.getAttribute("data-pinned")) { isModifying = false; return; } const recommended = document.querySelector('.trapSelectorView__browserStateParent--items[data-blueprint-type="base"] .recommended'); if (!recommended) { isModifying = false; return; } const header = recommended.querySelector(".campPage-trap-itemBrowser-tagGroup-name"); if (header) { header.after(prestige); } prestige.setAttribute("data-pinned", true); setPrestigeStats(); isModifying = false; }); isSaving = false; savePbStats = () => { if (isSaving) { return; } isSaving = true; const setup = getUserSetupDetails(); if (setup.base.id !== 2904) { isSaving = false; return; } debuglog("prestige-base-stats", "Saving Prestige Base stats\u2026"); const trapMath = document.querySelectorAll(".campPage-trap-trapStat-mathRow"); if (!trapMath.length) { isSaving = false; return; } const stats = {}; trapMath.forEach((row) => { const stat = row.querySelector(".campPage-trap-trapStat-mathRow-name"); if (!stat) { isSaving = false; return; } if (!stat.innerText.includes("Prestige Base")) { isSaving = false; return; } const value = row.querySelector(".campPage-trap-trapStat-mathRow-value"); if (!value) { isSaving = false; return; } let parsedValue = Number.parseInt(value.innerText.replaceAll(",", ""), 10); const type = row.parentElement.parentElement; const typeClass = type.className.replace("campPage-trap-trapStat", "").trim(); if (typeClass === "power") { parsedValue = parsedValue + 490; } else if (typeClass === "luck") { parsedValue = parsedValue + 5; } stats[typeClass] = parsedValue; }); if (!stats.power || !stats.luck) { isSaving = false; return; } debuglog("prestige-base-stats", "Prestige Base stats:", stats); cacheSet("pb-stats", stats); isSaving = false; }; run = () => __async(void 0, null, function* () { modifyPB(); savePbStats(); }); init57 = () => __async(void 0, null, function* () { onEvent("camp_page_toggle_blueprint", run); onRequest("users/changetrap.php", run); }); prestige_base_stats_default = { id: "prestige-base-stats", name: "Prestige Base Stats", type: "feature", default: true, description: "Shows the correct stats for the Prestige Base in the base selector.", load: init57 }; } }); // src/modules/printing-press-paper-counter/index.js var init58, printing_press_paper_counter_default; var init_printing_press_paper_counter = __esm({ "src/modules/printing-press-paper-counter/index.js"() { init_utils2(); init58 = () => __async(void 0, null, function* () { addTrapQuantity({ baseIds: [3628], baseSlugs: ["naughty_list_printing_press_base"], itemId: "printing_press_charge_stat_item" }); }); printing_press_paper_counter_default = { id: "printing-press-paper-counter", name: "Printing Press Paper Counter", type: "feature", default: true, description: "Shows the number of Prolific Printing Papers you have when Naughty List Printing Press Base is equipped.", load: init58 }; } }); // src/modules/quick-filters-and-sort/styles.css var styles_default53; var init_styles54 = __esm({ "src/modules/quick-filters-and-sort/styles.css"() { styles_default53 = ".campPage-trap-itemBrowser-filter input[data-filter=search]{width:315px;padding:10px}.campPage-trap-itemBrowser-filter:first-child{flex:0 0 100%;margin-bottom:5px}.campPage-trap-itemBrowser-filterContainer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}.campPage-trap-itemBrowser-favorites{margin-top:10px}.campPage-trap-itemBrowser .campPage-trap-itemBrowser-filter select{width:100px}.campPage-trap-itemBrowser.weapon .campPage-trap-itemBrowser-filter select{width:75px}.campPage-trap-itemBrowser-quickLinks{z-index:1;display:flex;justify-content:space-evenly;padding:5px 10px;background-color:#f6f3eb}.mh-dark-mode .pageFrameView .campPage-trap-itemBrowser-favorites,.mh-dark-mode .campPage-trap-itemBrowser-quickLinks{background-color:#424242}.campPage-trap-itemBrowser-quickLinks-power{padding:10px 15px}.campPage-trap-itemBrowser-quickLinks-header{position:absolute;left:0;padding:5px;margin-top:10px;color:#96704b;text-align:center;transform:rotate(-90deg)}.campPage-trap-itemBrowser-quickLinks-header.filter-header{left:-2px;margin-top:5px}.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image{width:40px;height:40px;background-position:center}.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image-frame{width:40px;height:40px}.campPage-trap-itemBrowser-quickLinks-power .campPage-trap-itemBrowser-favorite-item-image{width:31px;height:30px;background-position:50%;background-size:25px}.campPage-trap-itemBrowser-quickLinks-power .campPage-trap-itemBrowser-favorite-item-image-frame{width:29px;height:29px}.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image:hover,.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image:focus{background-color:#cac0b2}.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image:hover .campPage-trap-itemBrowser-favorite-item-image-frame,.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item-image:focus .campPage-trap-itemBrowser-favorite-item-image-frame{box-shadow:none}.campPage-trap-itemBrowser-quickLinks .campPage-trap-itemBrowser-favorite-item{width:auto}.campPage-trap-itemBrowser-quickLinks-power .campPage-trap-itemBrowser-favorite-item{margin:0 2px}.campPage-trap-itemBrowser-quickLinks-power .campPage-trap-itemBrowser-favorite-item:first-child{margin-left:0}.campPage-trap-itemBrowser-quickLinks-power .campPage-trap-itemBrowser-favorite-item:last-child{margin-right:0}.quicklinks-filter-sortBy-name .campPage-trap-itemBrowser-favorite-item-image{background-position:center;background-size:30px}.weapon .campPage-trap-itemBrowser-items{top:250px}.campPage-trap-itemBrowser-items{top:200px}.campPage-wrapper[data-blueprint-type=weapon] .campPage-trap-itemBrowser-itemDescriptionHover.mousehuntTooltip.tight.left.noEvents,.campPage-wrapper[data-blueprint-type=base] .campPage-trap-itemBrowser-itemDescriptionHover.mousehuntTooltip.tight.left.noEvents{margin-top:170px}.campPage-trap-itemBrowser-itemDescriptionHover.mousehuntTooltip.tight.left.noEvents{margin-top:125px}.mh-dark-mode .quicklinks-filter-sortBy-name a,.mh-dark-mode .quicklinks-filter-sortBy-quantity a{background-color:#f2f2f2}.trapSelectorView__browserStateParent--items[data-blueprint-type=skin] .campPage-trap-itemBrowser-quickLinks{display:none}.campPage-trap-itemBrowser-favorite-item.quicklinks-filter.quicklinks-filter-sortBy-name a{background-position:5px 4px}\n"; } }); // src/modules/quick-filters-and-sort/index.js var addItemToQuickLinks, addQuickLinksToTrap, init59, quick_filters_and_sort_default; var init_quick_filters_and_sort = __esm({ "src/modules/quick-filters-and-sort/index.js"() { init_utils2(); init_styles54(); addItemToQuickLinks = (link, appendTo, filter) => { const existing = document.querySelector(`.campPage-trap-itemBrowser-favorite-item.quicklinks-filter.quicklinks-filter-${filter}-${link.id}`); if (existing) { existing.remove(); } const item = document.createElement("div"); item.classList.add("campPage-trap-itemBrowser-favorite-item", "quicklinks-filter", `quicklinks-filter-${filter}-${link.id}`); const itemAnchor = document.createElement("a"); itemAnchor.classList.add("campPage-trap-itemBrowser-favorite-item-image"); itemAnchor.setAttribute("href", "#"); itemAnchor.setAttribute("title", filter === "sortBy" ? `Sort by ${link.name}` : `Filter by ${link.name}`); itemAnchor.style.backgroundImage = `url(${link.image})`; const frame = document.createElement("div"); frame.classList.add("campPage-trap-itemBrowser-favorite-item-image-frame"); itemAnchor.append(frame); const hiddenInput = document.createElement("input"); hiddenInput.setAttribute("type", "hidden"); hiddenInput.setAttribute("data-filter", filter); hiddenInput.setAttribute("value", link.id); item.append(itemAnchor); item.append(hiddenInput); const filterInput = document.querySelector(".campPage-trap-itemBrowser-filter.powerType select"); const sortInput = document.querySelector(".campPage-trap-itemBrowser-filter.sortBy select"); item.addEventListener("click", (e) => { e.preventDefault(); const input = filter === "sortBy" ? sortInput : filterInput; let reset = false; if (item.getAttribute("data-selected") === "true") { reset = true; item.setAttribute("data-selected", false); } else { const items2 = document.querySelectorAll('.quicklinks-filter[data-selected="true"]'); items2.forEach((i) => { i.setAttribute("data-selected", false); }); item.setAttribute("data-selected", true); } let option; if (reset) { if (filter === "sortBy") { option = input.querySelector('option[value="default"]'); } else if (filter === "powerType") { option = input.querySelector('option[value="no_tag_selected"]'); } } else { option = input.querySelector(`option[value="${link.id}"]`); } if (option) { option.selected = true; input.dispatchEvent(new Event("change")); } }); appendTo.append(item); }; addQuickLinksToTrap = () => __async(void 0, null, function* () { const itemBrowser = document.querySelector(".trapSelectorView__itemBrowserContainer"); if (!itemBrowser) { return; } const type = itemBrowser.classList.value.replaceAll("trapSelectorView__itemBrowserContainer", "").replaceAll("trapSelectorView__outerBlock", "").replaceAll("campPage-trap-itemBrowser", "").replaceAll(" ", "").trim(); if (!type || "bai" === type) { return; } itemBrowser.parentNode.parentNode.setAttribute("data-blueprint-type", type); const favorites = document.querySelector(".campPage-trap-itemBrowser-favorites"); if (!favorites) { return; } const existing = document.querySelector(".campPage-trap-itemBrowser-quickLinks"); if (existing) { existing.remove(); } const existingPower = document.querySelector(".campPage-trap-itemBrowser-quickLinks-power"); if (existingPower) { existingPower.remove(); } const quickLinks = document.createElement("div"); quickLinks.classList.add("campPage-trap-itemBrowser-quickLinks"); makeElement("div", "campPage-trap-itemBrowser-quickLinks-header", "Sort", quickLinks); const links = [ { id: "power", name: "Power", image: "https://www.mousehuntgame.com/images/ui/camp/trap/stat_power.png?asset_cache_version=2" }, { id: "power_bonus", name: "Power Bonus", image: "https://www.mousehuntgame.com/images/ui/camp/trap/stat_power_bonus.png?asset_cache_version=2" }, { id: "luck", name: "Luck", image: "https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2" }, { id: "attraction_bonus", name: "Attraction Bonus", image: "https://www.mousehuntgame.com/images/ui/camp/trap/stat_attraction_bonus.png?asset_cache_version=2" }, { id: "name", name: "Name", image: "https://i.mouse.rip/sort-a-z-icon.png" } ]; if ("trinket" === type) { links.push({ id: "quantity", name: "Quantity", image: "https://i.mouse.rip/sort-qty-icon.png" }); } const sortByInput = document.querySelector(".campPage-trap-itemBrowser-filter.sortBy select"); links.forEach((link) => { addItemToQuickLinks(link, quickLinks, "sortBy", sortByInput); }); favorites.parentNode.insertBefore(quickLinks, favorites.nextSibling); if ("weapon" === type) { const powerQuickLinks = document.createElement("div"); powerQuickLinks.classList.add("campPage-trap-itemBrowser-quickLinks", "campPage-trap-itemBrowser-quickLinks-power"); makeElement("div", ["campPage-trap-itemBrowser-quickLinks-header", "filter-header"], "Filter", powerQuickLinks); const powerLinks = [ { id: "arcane", name: "Arcane", image: "https://www.mousehuntgame.com/images/powertypes/arcane.png?asset_cache_version=2" }, { id: "draconic", name: "Draconic", image: "https://www.mousehuntgame.com/images/powertypes/draconic.png?asset_cache_version=2" }, { id: "forgotten", name: "Forgotten", image: "https://www.mousehuntgame.com/images/powertypes/forgotten.png?asset_cache_version=2" }, { id: "hydro", name: "Hydro", image: "https://www.mousehuntgame.com/images/powertypes/hydro.png?asset_cache_version=2" }, { id: "law", name: "Law", image: "https://www.mousehuntgame.com/images/powertypes/law.png?asset_cache_version=2" }, { id: "physical", name: "Physical", image: "https://www.mousehuntgame.com/images/powertypes/physical.png?asset_cache_version=2" }, { id: "rift", name: "Rift", image: "https://www.mousehuntgame.com/images/powertypes/rift.png?asset_cache_version=2" }, { id: "shadow", name: "Shadow", image: "https://www.mousehuntgame.com/images/powertypes/shadow.png?asset_cache_version=2" }, { id: "tactical", name: "Tactical", image: "https://www.mousehuntgame.com/images/powertypes/tactical.png?asset_cache_version=2" } ]; const powerInput = document.querySelector(".campPage-trap-itemBrowser-filter.powerType select"); powerLinks.forEach((link) => { addItemToQuickLinks(link, powerQuickLinks, "powerType", powerInput); }); quickLinks.parentNode.insertBefore(powerQuickLinks, quickLinks.nextSibling); } else { const powerQuickLinks = document.querySelector(".campPage-trap-itemBrowser-quickLinks-power"); if (powerQuickLinks) { powerQuickLinks.remove(); } } }); init59 = () => __async(void 0, null, function* () { addStyles(styles_default53, "quick-filters-and-sort"); onRequest("users/gettrapcomponents.php", addQuickLinksToTrap); onEvent("camp_page_toggle_blueprint", addQuickLinksToTrap); }); quick_filters_and_sort_default = { id: "quick-filters-and-sort", name: "Quick Filters and Sort", type: "feature", default: true, description: "Add quick filters and sorting to the trap, base, charm, and cheese selectors.", load: init59 }; } }); // src/modules/location-huds/toggle-icon.js var getCurrentLocationForSettings, getIconSettings, addToggleIcon, toggle_icon_default; var init_toggle_icon = __esm({ "src/modules/location-huds/toggle-icon.js"() { init_utils2(); getCurrentLocationForSettings = () => __async(void 0, null, function* () { const currentLocation = getCurrentLocation(); const eventEnvironments = yield getData("environments-events"); const eventLocation = eventEnvironments.find((event) => event.id === currentLocation); if (eventLocation) { return "event-locations"; } return currentLocation; }); getIconSettings = () => __async(void 0, null, function* () { let key = yield getCurrentLocationForSettings(); key = `location-huds-enabled.${key}`; let value = getSetting(key, true); return { id: "mousehunt-improved-location-huds", classname: "mousehunt-improved-location-huds-icon", text: value ? "Disable HUD" : "Enable HUD", position: "prepend", action: (e, icon) => { value = getSetting(key, true); saveSetting(key, !value); if (value) { icon.textContent = "Enable HUD"; icon.classList.add("disabled"); icon.classList.remove("enabled"); } else { icon.textContent = "Disable HUD"; icon.classList.remove("disabled"); icon.classList.add("enabled"); } window.location.reload(); } }; }); addToggleIcon = () => __async(void 0, null, function* () { addIconToMenu(yield getIconSettings()); }); toggle_icon_default = addToggleIcon; } }); // src/modules/location-huds/settings.js var settings_default27; var init_settings28 = __esm({ "src/modules/location-huds/settings.js"() { init_utils2(); settings_default27 = () => __async(void 0, null, function* () { const locationsToUnset = /* @__PURE__ */ new Set([ "desert_oasis", "lost_city", "sand_dunes", "queso_geyser", "queso_plains", "queso_quarry", "queso_river", // Don't have HUD changes for these. "meadow", "training_grounds", "zugzwang_library" ]); const locationsToAdd = [ { name: "Region: Living Garden", id: "region-living-garden" }, { name: "Region: Queso Canyon", id: "region-queso" }, { name: "Event Locations", id: "event-locations" } ]; const options = []; const environments5 = yield getData("environments"); const eventEnvironments = yield getData("environments-events"); for (const environment of environments5) { if (locationsToUnset.has(environment.id)) { continue; } if (eventEnvironments.some((event) => event.id === environment.id)) { continue; } options.push(environment); } options.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); locationsToAdd.forEach((location) => { options.push(location); }); const optionsToReturn = []; for (const location of options) { optionsToReturn.push({ id: `location-huds-enabled.${location.id}`, title: location.name, default: true, description: location.description }); } return optionsToReturn; }); } }); // src/modules/location-huds/styles.css var styles_default54; var init_styles55 = __esm({ "src/modules/location-huds/styles.css"() { styles_default54 = ".mh-ui-cheese-selector-wrapper{margin-top:10px}.mh-ui-cheese-selector.townOfGnawniaHUD-baitContainer{flex-wrap:wrap}.mh-ui-cheese-selector .townOfGnawniaHUD-bait{width:145px;margin:3px 0;cursor:pointer}.mh-ui-cheese-selector .townOfGnawniaHUD-bait-image{left:2px;filter:none;background-repeat:no-repeat;background-size:75%}.mh-ui-cheese-selector .townOfGnawniaHUD-bait-name{margin-left:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mh-ui-cheese-selector .townOfGnawniaHUD-bait.active{background-color:#c2dbef}.mh-ui-cheese-selector .townOfGnawniaHUD-bait.active .townOfGnawniaHUD-bait-name{text-shadow:none}\n"; } }); // src/modules/location-huds/shared/cheese-selectors/index.js var makeCheeseSelector, getCheeses, replaced, replaceCampShowTab, isProcessing2, cheese_selectors_default; var init_cheese_selectors = __esm({ "src/modules/location-huds/shared/cheese-selectors/index.js"() { init_utils2(); makeCheeseSelector = (location, cheesesToUse) => __async(void 0, null, function* () { if (location.replaceAll("-", "_") !== getCurrentLocation()) { yield new Promise((resolve) => { const remove = () => { const existingCheeseSelector2 = document.querySelector(".mh-ui-cheese-selector-wrapper"); if (existingCheeseSelector2) { existingCheeseSelector2.remove(); resolve(); } return false; }; let tries = 0; const interval = setInterval(() => { if (remove()) { clearInterval(interval); } tries += 1; if (tries >= 10) { clearInterval(interval); resolve(); } }, 250); }); return; } if (isProcessing2) { return; } isProcessing2 = true; const hud8 = document.querySelector("#hudLocationContent"); if (!hud8) { return; } hud8.classList.remove("empty"); const wrapper = document.createElement("div"); wrapper.classList.add("townOfGnawniaHUD", "allBountiesComplete", "mh-ui-cheese-selector-wrapper"); const cheesesContainer = document.createElement("div"); cheesesContainer.classList.add("townOfGnawniaHUD-baitContainer", "mh-ui-cheese-selector"); const cheeses = yield getUserItems(cheesesToUse); for (const cheese of cheeses) { const cheeseContainer = document.createElement("div"); cheeseContainer.classList.add("townOfGnawniaHUD-bait", `mh-ui-cheese-selector-${cheese.type}`); if (user.bait_item_id === cheese.item_id) { cheeseContainer.classList.add("active"); } else { cheeseContainer.classList.remove("active"); } const cheeseImage = document.createElement("div"); cheeseImage.classList.add("townOfGnawniaHUD-bait-image"); const thumbnail = cheese.thumbnail_transparent || cheese.thumbnail; cheeseImage.style.backgroundImage = `url(${thumbnail})`; const cheeseName = document.createElement("div"); cheeseName.classList.add("townOfGnawniaHUD-bait-name", "quantity"); cheeseName.innerText = cheese.name.replace(" Cheese", ""); const cheeseQuantity = document.createElement("div"); cheeseQuantity.classList.add("townOfGnawniaHUD-bait-quantity", "quantity"); cheeseQuantity.innerText = numberFormat(cheese.quantity); const tooltipArrow = document.createElement("div"); tooltipArrow.classList.add("mousehuntTooltip-arrow"); cheeseContainer.append(cheeseImage); cheeseContainer.append(cheeseName); cheeseContainer.append(cheeseQuantity); cheeseContainer.setAttribute("data-item-type", cheese.type); cheeseContainer.setAttribute("data-item-classification", "bait"); cheeseContainer.setAttribute("onclick", "hg.utils.TrapControl.toggleItem(this); return false;"); cheesesContainer.append(cheeseContainer); } wrapper.append(cheesesContainer); const existingCheeseSelector = hud8.querySelector(".mh-ui-cheese-selector-wrapper"); if (existingCheeseSelector) { existingCheeseSelector.replaceWith(wrapper); } else { hud8.append(wrapper); } isProcessing2 = false; doEvent2("mh-improved-cheese-selector-added", location, cheesesToUse); }); getCheeses = (cheeses) => { const defaultCheeses = [ "cheddar_cheese", "brie_cheese", "gouda_cheese", "super_brie_cheese" ]; while (cheeses.length < 4) { cheeses.unshift(defaultCheeses.pop()); } return cheeses; }; replaced = false; replaceCampShowTab = () => { if (replaced) { return; } replaced = true; const _original2 = app.pages.CampPage.showTab; app.pages.CampPage.showTab = (...args) => { _original2(...args); doEvent2("set_camp_tab", ...args); }; }; isProcessing2 = false; cheese_selectors_default = (location, cheeses) => { replaceCampShowTab(); const main24 = () => { makeCheeseSelector(location, getCheeses(cheeses)); }; main24(); onNavigation(main24); onEvent("ajax_response", main24); onEvent("travel_complete", main24); }; } }); // src/modules/location-huds/acolyte-realm/index.js var acolyte_realm_default; var init_acolyte_realm = __esm({ "src/modules/location-huds/acolyte-realm/index.js"() { init_cheese_selectors(); acolyte_realm_default = () => __async(void 0, null, function* () { cheese_selectors_default("acolyte-realm", [ "ancient_cheese", "runic_cheese", "radioactive_blue_cheese", "magical_radioactive_blue_cheese" ]); }); } }); // src/modules/location-huds/ancient-city/styles.css var styles_default55; var init_styles56 = __esm({ "src/modules/location-huds/ancient-city/styles.css"() { styles_default55 = ".ancientCityHUD-total.mousehuntTooltipParent{top:35px;left:550px;padding:11px 5px;font-size:13px;background:linear-gradient(180deg,#785c3c,#422b14);border-radius:10px}.ancientCityHUD-countDown{top:0;right:10px;font-size:36px;text-shadow:2px 2px 2px #171717}.ancientCityHUD-bossLabel{text-shadow:2px 2px 2px #171717}.ancientCityHUD-tier-number{text-shadow:1px 1px 2px #171717}.ancientCityHUD-progress{background:#cfc634}span.ancientCityHUD-alertLevel{position:absolute;bottom:1px;left:4px;text-shadow:1px 1px 2px #171717}.ancientCityHUD-districtName{font-size:13px;color:#c6c6c6}.ancientCityHUD-item-quantity{position:absolute;top:1px;padding:0 4px;margin-left:3px!important;font-size:11px;line-height:unset;text-align:center;background-color:#000;border-radius:5px}.ancientCityHUD-item:nth-child(1) .ancientCityHUD-item-name,.ancientCityHUD-item:nth-child(2) .ancientCityHUD-item-name,.ancientCityHUD-item:nth-child(3) .ancientCityHUD-item-name,.ancientCityHUD-item:nth-child(4) .ancientCityHUD-item-name,.ancientCityHUD-item:nth-child(5) .ancientCityHUD-item-name{width:96px;margin-left:47px;font-size:11px;font-weight:900;text-align:center;text-shadow:0 0 1px #000;background:linear-gradient(180deg,#70707000,#a8a8a8,#70707000);border-radius:20px}.ancientCityHUD-item:hover .ancientCityHUD-item-location,.ancientCityHUD-item:focus .ancientCityHUD-item-location{position:absolute;top:unset;bottom:-25px;padding:3px;font-size:9px;color:#000;text-align:center;background:#fff;border:2px solid #000;border-radius:10px;box-shadow:2px 3px 4px #666}.ancientCityHUD-item{top:5px}.ancientCityHUD-bossSecretLabel{font-size:13px;text-shadow:0 1px 1px #3d3d3d}.ancientCityHUD.secret .ancientCityHUD-bossContainer:hover{background-position:0 0}.ancientCityHUD{filter:drop-shadow(0 3px 5px #0a0803)}\n"; } }); // src/modules/location-huds/ancient-city/index.js var ancient_city_default2; var init_ancient_city2 = __esm({ "src/modules/location-huds/ancient-city/index.js"() { init_utils2(); init_styles56(); ancient_city_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default55); }); } }); // src/modules/location-huds/balacks-cove/styles.css var styles_default56; var init_styles57 = __esm({ "src/modules/location-huds/balacks-cove/styles.css"() { styles_default56 = ".balacksCoveHUD-tideContainer-timeLeft{position:absolute;top:9px;right:55px;padding:3px 10px;font-size:12px;color:#5f463d;background-color:#8ad3d5;border-radius:23% 23% 0 0;box-shadow:0 -.5px 1px 1px #d6f1f2}\n"; } }); // src/modules/location-huds/balacks-cove/index.js var getClosingText, updateClosingTime, hud, balacks_cove_default; var init_balacks_cove = __esm({ "src/modules/location-huds/balacks-cove/index.js"() { init_utils2(); init_styles57(); init_cheese_selectors(); getClosingText = (closes, stage, nextStageOffsetMinutes, nextStageText) => { const hours = Math.floor(closes); const minutes = Math.ceil((closes - Math.floor(closes)) * 60); let timeLeftText = `${hours}h ${minutes}m until ${stage}`; if (nextStageOffsetMinutes && nextStageText) { const totTimeMinutes = hours * 60 + minutes + nextStageOffsetMinutes; timeLeftText += `, <span class="offset">${Math.floor(totTimeMinutes / 60)}h ${totTimeMinutes % 60}m until ${nextStageText}</span>`; } return timeLeftText; }; updateClosingTime = () => { let timeLeftText = ""; const today = /* @__PURE__ */ new Date(); const rotationLength = 18.66666; const rotationsExact = (today.getTime() / 1e3 - 1294680060) / 3600 / rotationLength; const rotationsInteger = Math.floor(rotationsExact); const partialRotation = (rotationsExact - rotationsInteger) * rotationLength; if (partialRotation < 16) { const closes = 16 - partialRotation; timeLeftText = getClosingText(closes, "Mid Tide", 60, "High Tide"); } else if (partialRotation >= 16 && partialRotation < 17) { const closes = 1 - (partialRotation - 16); timeLeftText = getClosingText(closes, "High Tide", 40, "Low Tide"); } else if (partialRotation >= 17 && partialRotation < 17.66666) { const closes = 0.66666 - (partialRotation - 17); timeLeftText = getClosingText(closes, "Low Tide", 60, "Mid Tide"); } const timeLeftEl = document.createElement("div"); timeLeftEl.classList.add("balacksCoveHUD-tideContainer-timeLeft"); timeLeftEl.innerHTML = timeLeftText; return timeLeftEl; }; hud = () => { const hudBar = document.querySelector(".balacksCoveHUD-tideContainer"); if (!hudBar) { return; } const existing = document.querySelector(".balacksCoveHUD-tideContainer-timeLeft"); if (existing) { existing.remove(); } const timeLeftEl = updateClosingTime(); hudBar.append(timeLeftEl); const timer = setInterval(updateClosingTime, 60 * 1e3); onEvent("travel_complete", () => { clearInterval(timer); }); }; balacks_cove_default = () => __async(void 0, null, function* () { addHudStyles(styles_default56); cheese_selectors_default("balacks-cove", [ "vanilla_stilton_cheese", "vengeful_vanilla_stilton_cheese" ]); hud(); }); } }); // src/modules/location-huds/bazaar/index.js var bazaar_default; var init_bazaar = __esm({ "src/modules/location-huds/bazaar/index.js"() { init_cheese_selectors(); bazaar_default = () => __async(void 0, null, function* () { cheese_selectors_default("bazaar", ["gilded_cheese"]); }); } }); // src/modules/location-huds/shared/folklore-forest/styles.css var styles_default57; var init_styles58 = __esm({ "src/modules/location-huds/shared/folklore-forest/styles.css"() { styles_default57 = '.folkloreForestRegionView-dialog-help .folkloreForestRegionView-dialog-tabContentContainer{max-width:560px;padding:10px;margin:0 auto;font-size:13px;line-height:1.4}.folkloreForestRegionView-dialog-help h3{font-size:17px;color:#fff5cb}.folkloreForestRegionView-dialog-tabHeaderContainer:before,.folkloreForestRegionView-dialog-tabHeaderContainer:after{background:transparent}.folkloreForestRegionView-dialog-tabHeaderContainer{padding:0 20px;margin-right:-5px;margin-left:-5px;border-bottom-color:#416f2a}a.folkloreForestRegionView-dialog-tabHeader{background-color:#4d3d00;border:1px solid #416f2a;border-bottom:none}#overlayPopup.fabledForestDialog .title{margin-top:-19px}.folkloreForestRegionView-environmentInventory-block-quantity{font-size:12px;font-weight:400}.folkloreForestRegionView-environmentInventory-label{font-size:11px;line-height:18px}a.folkloreForestRegionView-upgradeButton.canUnlock:after{position:absolute;top:3px;right:5px;width:14px;height:14px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/hud/folklore_forest_region/upgrade_arrow_small.png?asset_cache_version=2);filter:hue-rotate(300deg) brightness(1.1);background-repeat:no-repeat;background-size:contain;border-radius:50%}.mh-location-prologue_pond a.folkloreForestRegionView-upgradeButton.canUnlock:after{filter:hue-rotate(300deg) brightness(1.1)}.mh-location-table_of_contents a.folkloreForestRegionView-upgradeButton.canUnlock:after{filter:none}a.folkloreForestRegionView-upgradeButton{font-size:13px}.folkloreForestRegionView-upgrade{width:25px;height:25px;margin-right:3px;box-shadow:0 0 17px #54290a inset,0 0 2px 1px #999}.folkloreForestRegionView-upgradeContainer{top:3px;left:20px;width:auto}.folkloreForestRegionView-upgrade.active{box-shadow:inset 0 0 2px 1px #b4e2ee}.folkloreForestRegionView-environmentTitle .folkloreForestRegionView-environmentState{font-size:21px}.folkloreForestRegionView-trapWarningContainer{padding:20px;font-size:12px;color:#870808;background-color:#ffbfbf}.folkloreForestRegionView-trapWarningContainer a{color:#870808}.folkloreForestRegionView-warning{border:none}.folkloreForestRegionView-warning:before{display:none}a.folkloreForestRegionView__estimate-button{top:9px!important;right:-7px!important;font-size:20px!important;color:#1a5162!important}a.folkloreForestRegionView__estimate-button:hover{color:#064155!important}.folkloreForestRegionView-dialog-footer{margin-top:5px;margin-bottom:15px}.folkloreForestRegionView-footer-spacer{display:none}.folkloreForestRegionView-dialog-block-cost{border:1px solid #ccc;box-shadow:none}.folkloreForestRegionView-dialog-block-cost-image{height:40px;background-size:contain}.upgrades .folkloreForestRegionView-dialog-block-item-image{margin:4px auto;background-color:transparent;border:none}.upgrades .folkloreForestRegionView-dialog-block-icon{top:1px;left:0;border:none}.upgrades .folkloreForestRegionView-dialog-block-name{margin-left:39px;border-top:1px solid #c6c6c6}.upgrades .folkloreForestRegionView-dialog-block-description{border-width:1px}.upgrades .folkloreForestRegionView-dialog-block{border:1px solid #c6c6c6;border-top:none}.upgrades .folkloreForestRegionView-dialog-block.highlight .folkloreForestRegionView-dialog-block-icon{margin-top:-1px;border-top:1px solid #c6c6c6;border-right:1px solid #c6c6c6}.upgrades .folkloreForestRegionView-dialog-tabHeader-notification{font-size:15px;line-height:25px;background-color:#e94e4e;box-shadow:1px 1px 4px -1px #000}.folkloreForestRegionView-fuelContainer.mousehuntTooltipParent{border-radius:40px 30px 30px}.folkloreForestRegionView-fuelContainer .mousehuntTooltip{display:none!important}.folkloreForestRegionView-dialog-blockContainer.upsellRecipe .upsellItemActionView-cost-image{box-shadow:none}.mhui-folklore-forest-upgrade-toggle{position:absolute;right:25px;bottom:13px}.folkloreForestRegionView-dialog-block.toggle-is-hidden{filter:grayscale(.6);opacity:.8}.upgrades .folkloreForestRegionView-dialog-block .folkloreForestRegionView-dialog-block-icon:after{display:none}.upgrades .highlight .folkloreForestRegionView-dialog-block-name{background-color:#a2723b}.folkloreForestRegionView-dialog-block-cost.error .folkloreForestRegionView-dialog-block-cost-image{box-shadow:0 0 35px #ffa3a3 inset}a.folkloreForestRegionView-warning:hover{background-color:#ffecd9}.folkloreForestRegionView-dialog-blockContainer.upgrades .folkloreForestRegionView-dialog-block-description{overflow:visible;line-height:1.3}.folkloreForestRegionView-dialog-block-costLabel{display:none}.folkloreForestRegionView-helpButton{top:13px;width:22px;height:22px;background:url(https://www.mousehuntgame.com/images/ui/events/egg_sweeper/help_button.png);background-position:center;background-size:26px;border-radius:10px;mix-blend-mode:darken;opacity:.3}.folkloreForestRegionView-helpButton:hover{opacity:1}a.folkloreForestRegionView-travelButton{top:16px;left:226px;width:17px;height:17px;background:url(https://www.mousehuntgame.com/images/ui/hud/menu/treasure_chests.png);background-size:cover;opacity:.3;transform:scaleX(-1) rotate(99deg)}a.folkloreForestRegionView-travelButton:hover{opacity:1}\n'; } }); // src/modules/location-huds/bountiful-beanstalk/small-inv.css var small_inv_default; var init_small_inv = __esm({ "src/modules/location-huds/bountiful-beanstalk/small-inv.css"() { small_inv_default = ".headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--animating,.headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open .headsUpDisplayBountifulBeanstalk__inventoryContainerPanel:nth-child(2){display:grid;grid-template-columns:repeat(4,50px);width:160px}.headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--animating{grid-template-columns:95px auto}.headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent.headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open{display:grid;grid-template-columns:100px 0;width:300px;height:50px}.headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent{display:grid;grid-template-columns:105px 0;width:100px;height:50px}.headsUpDisplayBountifulBeanstalk__inventoryContainer{top:unset;bottom:75px}.headsUpDisplayBountifulBeanstalk__inventoryContainerPanel:nth-child(1){display:grid;grid-template-columns:50px 50px}\n"; } }); // src/modules/location-huds/bountiful-beanstalk/styles.css var styles_default58; var init_styles59 = __esm({ "src/modules/location-huds/bountiful-beanstalk/styles.css"() { styles_default58 = '.headsUpDisplayBountifulBeanstalkView__baitQuantity.quantity{display:flex;align-items:center;justify-content:flex-end;font-size:12px}.headsUpDisplayBountifulBeanstalk__inventoryBlockQuantity.quantity{padding:1px 2px}.bountifulBeanstalkCastleView__noiseLevel,.bountifulBeanstalkCastleView__maxNoiseLevel{padding:0 2px;font-size:17px}.bountifulBeanstalkCastleView__noiseMeterLabel{color:#ffefc7;text-shadow:0 0 1px #5b4200;filter:drop-shadow(1px 1px 1px #000)}.headsUpDisplayBountifulBeanstalkView__baitImage{top:0;left:3px;width:35px;height:35px}.headsUpDisplayBountifulBeanstalkView__baitIngredientImage{top:24px;left:28px;width:20px;height:20px}.bountifulBeanstalkCastleView__plinthLootImage .headsUpDisplayBountifulBeanstalkView__loot{top:45px;right:245px;width:45px;height:45px;filter:drop-shadow(0 0 5px #f0e1a4)}.headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer h3{font-size:11px}.headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer h3 span{font-size:17px}.headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer{left:22px}.headsUpDisplayBountifulBeanstalkView__castleNextRoomText.headsUpDisplayBountifulBeanstalkView__castleNextRoomText--nextArrow{font-size:13px}.bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip{top:-20px;bottom:unset;left:-60px;z-index:30;width:447px;line-height:1.75;color:#f2e3a6;background:#192518;border:2px solid #85d523}.bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip-arrow{display:none}.bountifulBeanstalkCastleView__currentRoomName{font-size:12px}.bountifulBeanstalkCastleView__currentRoomLoot b{font-size:10px}.bountifulBeanstalkCastleView__plinthOverlay.mousehuntTooltipParent{left:190px;width:330px}.bountifulBeanstalkCastleView__currentRoomLootMultiplier{font-size:12px}.bountifulBeanstalkPlayHarpDialogView__optionActionLabel{margin-bottom:5px}.headsUpDisplayBountifulBeanstalk__embellishmentBlock:hover .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage{filter:brightness(1.3) drop-shadow(0 0 1px #224e1c) drop-shadow(0 0 1px #224e1c);transform:scale(1.3)}.headsUpDisplayBountifulBeanstalk__embellishmentBlock .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage{transition:.3s;animation:adminShimmer 1s 3}.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage{transition:.3s;animation:mh-improved-shake .5s 2}.headsUpDisplayBountifulBeanstalkView__castleChevronContainer .headsUpDisplayBountifulBeanstalkView__loot:hover{animation:mh-improved-shake .5s infinite}.bountifulBeanstalkCastleView__content:active .bountifulBeanstalkCastleView__bossMarker{animation:mh-improved-shake-scaled .5s infinite}.bountifulBeanstalkCastleView__content:hover .bountifulBeanstalkCastleView__bossMarker{transform:scale(1.2)}@media (prefers-reduced-motion: reduce){.headsUpDisplayBountifulBeanstalk__embellishmentBlock:hover .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage{filter:none;transform:none}.headsUpDisplayBountifulBeanstalk__embellishmentBlock .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage{transition:none;animation:none}.bountifulBeanstalkCastleView__content:active .bountifulBeanstalkCastleView__bossMarker,.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage{animation:none}.bountifulBeanstalkCastleView__content:hover .bountifulBeanstalkCastleView__bossMarker{transform:none}.headsUpDisplayBountifulBeanstalkView__castleChevronContainer .headsUpDisplayBountifulBeanstalkView__loot:hover{animation-iteration-count:1}}.mh-improved-room-data--open,.mh-improved-room-data--open .headsUpDisplayBountifulBeanstalkView__lootMultiplierDetailsContainer,.headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer{z-index:28;display:block}.headsUpDisplayBountifulBeanstalk__inventoryContainer{z-index:28}.headsUpDisplayBountifulBeanstalk__inventoryContainer:hover{z-index:31}.bountifulBeanstalkCastleView__content{z-index:27}.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying:hover .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage{transform:scale(1.1) rotate(3deg) translate(5px)}.folkloreForestRegionView-dialog-recipeResult-image.itemImage .quantity{background:#ffffffbf}.bountifulBeanstalkCastleView__bossMarker{filter:drop-shadow(2px -1px 4px #000);transition:.4s;transform:scale(1.1);transform-origin:bottom}.headsUpDisplayBountifulBeanstalkView__climbNextRoomText,.headsUpDisplayBountifulBeanstalkView__castleNextRoomText{font-size:12px}.bountifulBeanstalkCastleView__background{transition:opacity .3s}.bountifulBeanstalkCastleView__background.is-boss-chase{opacity:.7}.headsUpDisplayBountifulBeanstalk__inventoryBlockImage{width:37px;height:37px}.bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip.mh-improved-tooltip-stay-open,.headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer.mh-improved-room-data--open{z-index:30;border-color:#75a23d}.headsUpDisplayBountifulBeanstalkView__ingredientQuantity.quantity{top:26px}.headsUpDisplayBountifulBeanstalkView__baitCraftableContainer .mousehuntTooltip{line-height:1.5;text-align:center}.headsUpDisplayBountifulBeanstalkView__baitCraftableContainer[data-item-type=leaping_lavish_beanster_cheese] .mousehuntTooltip{right:-40px;left:-40px}.headsUpDisplayBountifulBeanstalkView__castleChevronContainer .mousehuntTooltip{line-height:1.4}.headsUpDisplayBountifulBeanstalkView__castleChevronContainer .mousehuntTooltip>b:first-of-type{display:inline-block;margin-bottom:4px;font-size:11px;border-bottom:1px solid #d5d5d5}.headsUpDisplayBountifulBeanstalkView__fuelQuantity.quantity{font-size:13px;color:#fff;background-color:#2c4d26}.active .headsUpDisplayBountifulBeanstalkView__fuelQuantity.quantity{text-shadow:0 0 2px #5ac976}.headsUpDisplayBountifulBeanstalkView__fuelContainer:hover{cursor:pointer}.folkloreForestRegionView-helpButton{top:13px;width:22px;height:22px;background:url(https://www.mousehuntgame.com/images/ui/events/egg_sweeper/help_button.png);background-position:center;background-size:26px;border-radius:10px;mix-blend-mode:darken;opacity:.3}.folkloreForestRegionView-helpButton:hover{opacity:1}.headsUpDisplayBountifulBeanstalk__embellishmentBlock .mousehuntTooltip{right:-70px;bottom:50px;left:-70px}.folkloreForestRegionView-dialog-help .beanstalkHelp__image{flex:1;width:100%;height:150px;background-size:contain}.folkloreForestRegionView-dialog-help .beanstalkHelp__section{flex-wrap:wrap;padding-top:30px;margin-bottom:30px;border-top:1px solid #487426}.folkloreForestRegionView-dialog-help .beanstalkHelp__section:nth-child(3){border-top:none}.folkloreForestRegionView-dialog-help .beanstalkHelp__section:nth-child(4) .beanstalkHelp__image{order:-1}.headsUpDisplayBountifulBeanstalkView__frame{filter:drop-shadow(0 1px 2px #333)}.headsUpDisplayBountifulBeanstalkView__multiplier div:nth-child(2){font-size:13px}.headsUpDisplayBountifulBeanstalkView__lootMultiplierDetailsContainer>div{align-items:center;margin:2px}.headsUpDisplayBountifulBeanstalk__embellishmentBlock{top:-5px;left:-10px;width:34px;height:34px}.headsUpDisplayBountifulBeanstalk__embellishmentBlockImage{width:30px;height:30px;filter:drop-shadow(0 0 1px #224e1c) drop-shadow(0 0 1px #224e1c);background-position:center;transform:scale(1)}.headsUpDisplayBountifulBeanstalk__embellishmentBlock.golden_feather{left:-6px}.headsUpDisplayBountifulBeanstalk__embellishmentBlock.ruby_remover{left:-2px}.loot-displayed.bountifulBeanstalkCastleView__title>div{position:absolute;top:18px;right:50px;left:50px;height:18px;font-size:11px;font-weight:400;line-height:16px;background:linear-gradient(90deg,#f4e4a6,#faedb1,#f4e4a6);border-radius:42%;box-shadow:0 3px 3px -2px #6d3421}.loot-displayed.bountifulBeanstalkCastleView__title{bottom:243px}.headsUpDisplayBountifulBeanstalkView__multiplier.headsUpDisplayBountifulBeanstalkView__multiplier--feather,.headsUpDisplayBountifulBeanstalkView__multiplier.headsUpDisplayBountifulBeanstalkView__multiplier--condensed_creativity{font-size:10px}.folkloreForestRegionView-dialog-block-name{display:flex;justify-content:center;height:40px;padding:0;font-size:13px;text-align:center}.folkloreForestRegionView-dialog-blockContainer.basicBaits .mousehuntArmNowButton{transform:scale(1.2)}.bountifulBeanstalkCastleView__noiseMeterBar{padding-right:1px}button.headsUpDisplayBountifulBeanstalkView__baitBuyButton{right:3px}.active button.headsUpDisplayBountifulBeanstalkView__baitBuyButton{right:2px}.bountifulBeanstalkClimbView__playerUserThumb,.bountifulBeanstalkCastleView__playerMarkerUserThumb{border:1px solid #0aaa62;box-shadow:inset 0 1px 3px #3d3d3d}.bountifulBeanstalkCastleView__playerMarker--player_marker_chase .bountifulBeanstalkCastleView__playerMarkerUserThumb{border:1px solid #d7440d}.mh-crafting-actions{display:flex;gap:10px;justify-content:center;margin-top:5px;transition:.2s ease-in}.headsUpDisplayBountifulBeanstalkView__baitCraftableContainer.mousehuntTooltipParent:after{position:absolute;inset:-30px 0 0;content:""}.mh-crafting-popup.loading:after,.mh-crafting-popup.success:after{position:absolute;right:0;bottom:7px;left:0;display:block;height:20px;content:"";background:url(https://www.mousehuntgame.com/images/ui/loaders/small_spinner.gif?asset_cache_version=3) center no-repeat}.mh-crafting-popup.success:after{background:url(https://www.mousehuntgame.com/images/ui/hud/meadow_checkmark.png?asset_cache_version=3) center no-repeat;background-size:contain}.loading .mh-crafting-actions,.success .mh-crafting-actions{opacity:.1}\n'; } }); // src/modules/location-huds/bountiful-beanstalk/index.js var keepInventoryToggled, keepRoomDataToggled, keepTooltipToggled, funTime, makeGiantMoreVisible, toggleFuelWithIcon, updateTitle, updateLootText, addCraftingButtons, bountiful_beanstalk_default2; var init_bountiful_beanstalk2 = __esm({ "src/modules/location-huds/bountiful-beanstalk/index.js"() { init_utils2(); init_styles58(); init_small_inv(); init_styles59(); keepInventoryToggled = () => __async(void 0, null, function* () { const toggleButton = document.querySelector(".headsUpDisplayBountifulBeanstalk__inventoryContainer .headsUpDisplayBountifulBeanstalk__inventoryContainerButton"); if (!toggleButton) { return; } const inventory = document.querySelector(".headsUpDisplayBountifulBeanstalk__inventoryContainer .headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent"); if (!inventory) { return; } let isSetOpen = getSetting("location-huds.bountiful-beanstalk-inventory-toggled", "not-set"); if (isSetOpen) { inventory.classList.add("headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open"); toggleButton.classList.add("headsUpDisplayBountifulBeanstalk__inventoryContainerButton--open"); } else if (isSetOpen === "not-set") { isSetOpen = false; } toggleButton.addEventListener("click", (e) => { e.preventDefault(); if (isSetOpen) { isSetOpen = false; inventory.classList.remove("headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open"); toggleButton.classList.remove("headsUpDisplayBountifulBeanstalk__inventoryContainerButton--open"); } else { isSetOpen = true; inventory.classList.add("headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open"); toggleButton.classList.add("headsUpDisplayBountifulBeanstalk__inventoryContainerButton--open"); } saveSetting("location-huds.bountiful-beanstalk-inventory-toggled", isSetOpen); }); }); keepRoomDataToggled = () => __async(void 0, null, function* () { const roomData = document.querySelector(".headsUpDisplayBountifulBeanstalkView__lootMultiplierContainer"); if (!roomData) { return; } let isSetOpen = getSetting("location-huds.bountiful-beanstalk-room-data-toggled", "not-set"); if (isSetOpen) { roomData.classList.add("mh-improved-room-data--open"); } else if (isSetOpen === "not-set") { isSetOpen = false; } roomData.addEventListener("click", (e) => { e.preventDefault(); if (isSetOpen) { isSetOpen = false; roomData.classList.remove("mh-improved-room-data--open"); } else { isSetOpen = true; roomData.classList.add("mh-improved-room-data--open"); } saveSetting("location-huds.bountiful-beanstalk-room-data-toggled", isSetOpen); }); }); keepTooltipToggled = () => __async(void 0, null, function* () { const tooltip = document.querySelector(".bountifulBeanstalkCastleView__plinthOverlay.mousehuntTooltipParent .mousehuntTooltip"); if (!tooltip) { return; } tooltip.addEventListener("click", (e) => { e.preventDefault(); tooltip.classList.toggle("mh-improved-tooltip-stay-open"); }); }); funTime = () => __async(void 0, null, function* () { const meter = document.querySelector(".bountifulBeanstalkCastleView__noiseMeterFrame"); if (!meter) { return; } meter.addEventListener("click", () => { const time = 1e3; let hue = 0; const interval = setInterval(() => { if (hue >= 360) { clearInterval(interval); } hue += 1; meter.style.filter = `hue-rotate(${hue}deg)`; }, time / 360); }); }); makeGiantMoreVisible = () => __async(void 0, null, function* () { var _a, _b, _c; const background = document.querySelector(".bountifulBeanstalkCastleView__background"); if (!background) { return; } const isGiantChase = ((_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestBountifulBeanstalk) == null ? void 0 : _b.castle) == null ? void 0 : _c.is_boss_chase) || false; if (isGiantChase) { background.classList.add("is-boss-chase"); } else { background.classList.remove("is-boss-chase"); } }); toggleFuelWithIcon = () => __async(void 0, null, function* () { const icon = document.querySelector(".headsUpDisplayBountifulBeanstalkView__fuelContainer"); if (!icon) { return; } const button = document.querySelector(".headsUpDisplayBountifulBeanstalkView__fuelToggleButton"); if (!button) { return; } icon.addEventListener("click", () => { button.click(); }); }); updateTitle = () => __async(void 0, null, function* () { const title = document.querySelector(".bountifulBeanstalkCastleView__title"); if (!title) { return; } if (title.classList.contains("loot-displayed")) { const display = document.querySelector(".loot-display"); if (display) { display.remove(); } } const loot = document.querySelector(".bountifulBeanstalkCastleView__currentRoomLoot"); const lootMult = document.querySelector(".bountifulBeanstalkCastleView__currentRoomLootMultiplier"); if (!loot || !lootMult) { title.classList.remove("loot-displayed"); return; } if (loot.innerText && lootMult.innerText) { makeElement("div", "loot-display", `${lootMult.innerText}x ${loot.innerText}`, title); title.classList.add("loot-displayed"); } }); updateLootText = () => __async(void 0, null, function* () { const ccLoot = document.querySelector(".headsUpDisplayBountifulBeanstalkView__multiplier.headsUpDisplayBountifulBeanstalkView__multiplier--condensed_creativity div"); if (ccLoot) { ccLoot.innerText = "Con. Creativity:"; } const featherLoot = document.querySelector(".headsUpDisplayBountifulBeanstalkView__multiplier.headsUpDisplayBountifulBeanstalkView__multiplier--feather div"); if (featherLoot) { featherLoot.innerText = "Golden Feather:"; } }); addCraftingButtons = () => __async(void 0, null, function* () { const baits = document.querySelectorAll(".headsUpDisplayBountifulBeanstalkView__baitCraftableContainer"); if (!baits) { return; } const purchaseBait = (type, quantity, baitEl, actionsEl) => __async(void 0, null, function* () { actionsEl.classList.add("loading"); if (quantity >= 2) { if ("beanster_cheese" === type) { type = "beanster_pack_small_convertible"; } else if ("lavish_beanster_cheese" === type) { type = "lavish_beanster_pack_small_convertible"; } else if ("leaping_lavish_beanster_cheese" === type) { type = "leaping_lavish_beanster_pack_small_convertible"; } else if ("royal_beanster_cheese" === type) { type = "royal_beanster_pack_small_convertible"; } quantity = quantity / 2; } const results = yield doRequest("managers/ajax/purchases/itempurchase.php", { type, quantity, buy: 1, is_kings_cart_item: 0 }); const newInventoryQuantities = Object.keys(results.inventory).reduce((acc, key) => { acc[key] = results.inventory[key].quantity; return acc; }, {}); const newItemsQuantities = Object.keys(results.items).reduce((acc, key) => { acc[key] = results.items[key].num_owned; return acc; }, {}); const newQuantities = __spreadValues(__spreadValues({}, newInventoryQuantities), newItemsQuantities); baits.forEach((bait) => { const baitQuantity = bait.querySelector(".headsUpDisplayBountifulBeanstalkView__baitQuantity"); if (!baitQuantity) { return; } const baitQuantityType = baitQuantity.getAttribute("data-item-type"); if (baitQuantityType && newQuantities[baitQuantityType]) { baitQuantity.innerText = newQuantities[baitQuantityType]; } const baitCraftQty = bait.querySelector(".headsUpDisplayBountifulBeanstalkView__ingredientQuantity"); if (!baitCraftQty) { return; } const baitIngredientType = baitCraftQty.getAttribute("data-item-type"); if (baitIngredientType && newQuantities[baitIngredientType]) { baitCraftQty.innerText = newQuantities[baitIngredientType]; } }); actionsEl.classList.remove("loading"); actionsEl.classList.add("success"); setTimeout(() => { actionsEl.classList.remove("success"); }, 1e3); return results && results.success; }); baits.forEach((bait) => { const quantity = bait.querySelector(".headsUpDisplayBountifulBeanstalkView__baitQuantity"); if (!quantity) { return; } const existingCraftingPopup = bait.querySelector(".mh-crafting-popup"); if (existingCraftingPopup) { return; } quantity.classList.add("mousehuntTooltipParent"); const popup = makeElement("div", ["mh-crafting-popup"]); const existingPopup = bait.querySelector(".mousehuntTooltip"); if (existingPopup) { existingPopup.classList.remove("noEvents"); } else { popup.classList.add("mousehuntTooltip", "tight", "top"); } const actions = makeElement("div", "mh-crafting-actions"); const baitType = bait.getAttribute("data-item-type"); let twoQuantity = 2; if ("leaping_lavish_beanster_cheese" === baitType) { twoQuantity = 4; } else if ("royal_beanster_cheese" === baitType) { twoQuantity = 20; } makeMhButton({ text: "Craft 1", className: "mh-crafting-action", size: "tiny", callback: () => { purchaseBait(baitType, 1, bait, popup); }, appendTo: actions }); makeMhButton({ text: `Craft ${twoQuantity}`, className: "mh-crafting-action", title: `Craft ${twoQuantity} using Magic Essence`, size: "tiny", callback: () => { purchaseBait(baitType, twoQuantity, bait, popup); }, appendTo: actions }); popup.append(actions); if (existingPopup) { existingPopup.insertBefore(popup, existingPopup.lastChild); } else { bait.append(popup); } }); }); bountiful_beanstalk_default2 = () => __async(void 0, null, function* () { const stylesToAdd = [styles_default57, styles_default58]; if (getSetting("location-huds.bountiful-beanstalk-invetory-in-one-row", false)) { stylesToAdd.push(small_inv_default); } addHudStyles(stylesToAdd); keepInventoryToggled(); keepRoomDataToggled(); keepTooltipToggled(); makeGiantMoreVisible(); toggleFuelWithIcon(); updateTitle(); updateLootText(); addCraftingButtons(); onRequest("*", updateTitle); onTurn(updateTitle, 1e3); funTime(); onTurn(makeGiantMoreVisible, 1e3); }); } }); // src/modules/location-huds/calm-clearing/index.js var calm_clearing_default; var init_calm_clearing = __esm({ "src/modules/location-huds/calm-clearing/index.js"() { init_cheese_selectors(); calm_clearing_default = () => __async(void 0, null, function* () { cheese_selectors_default("calm-clearing", ["cherry_cheese"]); }); } }); // src/modules/location-huds/cape-clawed/index.js var cape_clawed_default; var init_cape_clawed = __esm({ "src/modules/location-huds/cape-clawed/index.js"() { init_cheese_selectors(); cape_clawed_default = () => __async(void 0, null, function* () { cheese_selectors_default("cape-clawed", [ "shell_cheese", "gumbo_cheese", "crunchy_cheese" ]); }); } }); // src/modules/location-huds/catacombs/index.js var catacombs_default; var init_catacombs = __esm({ "src/modules/location-huds/catacombs/index.js"() { init_cheese_selectors(); catacombs_default = () => __async(void 0, null, function* () { cheese_selectors_default("catacombs", [ "ancient_cheese", "undead_emmental_cheese", "string_undead_emmental_cheese", "radioactive_blue_cheese", "super_radioactive_blue_cheese", "magical_radioactive_blue_cheese", "moon_cheese", "crescent_cheese" ]); }); } }); // src/modules/location-huds/claw-shot-city/styles.css var styles_default59; var init_styles60 = __esm({ "src/modules/location-huds/claw-shot-city/styles.css"() { styles_default59 = ".clawShotCityHud .gangs_caught,.clawShotCityHud .fools_gold_quantity{font-size:27px;color:#e7c37d}\n"; } }); // src/modules/location-huds/claw-shot-city/index.js var claw_shot_city_default; var init_claw_shot_city = __esm({ "src/modules/location-huds/claw-shot-city/index.js"() { init_utils2(); init_styles60(); claw_shot_city_default = () => __async(void 0, null, function* () { addHudStyles(styles_default59); }); } }); // src/modules/location-huds/derr-dunes/index.js var derr_dunes_default; var init_derr_dunes = __esm({ "src/modules/location-huds/derr-dunes/index.js"() { init_cheese_selectors(); derr_dunes_default = () => __async(void 0, null, function* () { cheese_selectors_default("derr-dunes", ["crunchy_cheese"]); }); } }); // src/modules/location-huds/desert-city/styles.css var styles_default60; var init_styles61 = __esm({ "src/modules/location-huds/desert-city/styles.css"() { styles_default60 = '.muridaeMarketHud .quantity{display:flex;align-items:center;height:16px;margin-top:1px;font-size:14px;color:#e3d0b2;text-shadow:1px 1px 2px #533a20}.muridaeMarketHud .shop .visit{top:0;height:166px}.muridaeMarketHud .shop:hover .visit:after{position:absolute;right:3px;bottom:78px;left:4px;width:unset;font-size:11px;font-weight:700;color:#efdfc4;text-align:center;text-shadow:1px 1px 4px #52381f;text-transform:uppercase;content:"Visit";background-color:#aa855c99;border-bottom-right-radius:7px;border-bottom-left-radius:8px}.muridaeMarketHud .shop:hover{filter:drop-shadow(0 1px 2px #e7d6ba)}\n'; } }); // src/modules/location-huds/desert-city/index.js var desert_city_default; var init_desert_city = __esm({ "src/modules/location-huds/desert-city/index.js"() { init_utils2(); init_styles61(); desert_city_default = () => __async(void 0, null, function* () { addHudStyles(styles_default60); }); } }); // src/modules/location-huds/desert-warpath/styles.css var styles_default61; var init_styles62 = __esm({ "src/modules/location-huds/desert-warpath/styles.css"() { styles_default61 = '.warpathHUD.wave_1:after,.warpathHUD.wave_2:after,.warpathHUD.wave_3:after,.warpathHUD.wave_4:after{position:absolute;bottom:1px;left:5px;display:flex;align-items:center;width:53px;height:25px;font-size:15px;color:#f5d172;content:"Wave";background-color:#633e29;border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:inset 0 -2px 2px -1px #3e2417}.warpathHUD.wave_1:after{content:"Wave 1"}.warpathHUD.wave_2:after{content:"Wave 2"}.warpathHUD.wave_3:after{content:"Wave 3"}.warpathHUD.wave_4:after{content:"Wave 4"}.warpathHUD-streak-quantity{top:1px;left:60px;width:17px;padding:2px;font-size:17px;color:#f5d172;background-color:#633e29;border-radius:2px;box-shadow:inset -2px 1px 2px #af7756}.warpathHUD-clearWaveQuantity.quantity{top:46px;left:8px;padding:2px;font-size:13px;font-weight:400;background-color:#49362b;border-radius:10px;box-shadow:0 0 1px 1px inset #38281d}.warpathHUD-wave-mouse-population{font-size:13px;line-height:22px}.warpathHUD-wave-mouse.mousehuntTooltipParent.active.laser_targetted{color:#ff824c;filter:drop-shadow(0 -2px 3px #ea4700)}.warpathHUD-wave-mouse-powerType{width:32px;height:32px;margin-top:0;margin-right:10px}.warpathHUD-wave-mouse .mousehuntTooltip.tight.top{height:33px;color:transparent}.warpathHUD-wave-mouse .mousehuntTooltip .warpathHUD-wave-mouse-name{line-height:34px;color:#000}.warpathHUD-wave-mouse .mousehuntTooltip.hasCharms .warpathHUD-wave-mouse-name{line-height:14px}.warpathHUD-wave-mouse.desert_general .mousehuntTooltip .warpathHUD-wave-mouse-name,.warpathHUD-wave-mouse.desert_supply .mousehuntTooltip .warpathHUD-wave-mouse-name{text-align:center}.warpathHUD-wave-mouse.desert_general .mousehuntTooltip .warpathHUD-wave-mouse-name{line-height:28px}.warpathHUD-streakContainer:before{background:linear-gradient(0deg,#2ffd2d 50%,#f7f718,#c32222);filter:brightness(.8)}.warpathHUD-streak-image-empty{font-weight:900;box-shadow:inset 0 0 10px 5px #2f1816}.warpathHUD-wave-mouse.laser_targetted .warpathHUD-wave-mouse-image{box-shadow:inset 0 0 10px 6px #ff824c}.warpathHUD-waveContainer.warpathHUD-engaged .warpathHUD-wave{box-shadow:inset 0 0 10px 4px #fc4848}.warpathHUD-engaged .warpathHUD-wave-mouse .mousehuntTooltip.tight.top{display:none}.warpathHud-missle-activate{position:absolute;top:-15px;left:-26px;cursor:pointer;opacity:.4;transition:.3s;transform:rotate(270deg) scale(.8);animation:none}.warpathHud-missle-activate:hover{opacity:1;transform:rotate(270deg) scale(1)}.warpathHUD-engaged .warpathHud-missle-activate{filter:hue-rotate(281deg);opacity:.9}\n'; } }); // src/modules/location-huds/desert-warpath/index.js var engaged, addMissiles, desert_warpath_default; var init_desert_warpath2 = __esm({ "src/modules/location-huds/desert-warpath/index.js"() { init_utils2(); init_styles62(); engaged = false; addMissiles = () => { const container = document.querySelector(".warpathHUD-waveContainer"); if (!container) { return; } const trigger = makeElement("div", ["warpathHud-missle-activate", "warpathHUD-missile"]); container.append(trigger); trigger.addEventListener("click", () => { engaged = !engaged; if (engaged) { container.classList.add("warpathHUD-engaged"); } else { container.classList.remove("warpathHUD-engaged"); } }); const launchMissile = (event) => { if (!container.classList.contains("warpathHUD-engaged")) { return; } if (event.target.classList.contains("warpathHUD-missile")) { return; } if (!engaged) { return; } let x = event.clientX ? event.clientX - container.getBoundingClientRect().left : Math.floor(Math.random() * container.getBoundingClientRect().width); x += Math.floor(Math.random() * 50) - 25; hg.views.HeadsUpDisplayDesertWarpathView.spawnMissile(x, 1); let missile; setTimeout(() => { missile = container.querySelectorAll('.warpathHUD-missile[style*="left: ' + x + 'px"]'); if (!missile || missile.length === 0) { return; } missile.forEach((m) => { setTimeout(() => { m.classList.add("mh-ui-fade"); }, 50); setTimeout(() => { m.classList.add("mh-ui-fade-out"); }, 100); setTimeout(() => { m.remove(); }, 500); }); }, 700); }; container.addEventListener("click", launchMissile); }; desert_warpath_default = () => __async(void 0, null, function* () { addHudStyles(styles_default61); addMissiles(); }); } }); // src/modules/location-huds/dojo/index.js var dojo_default; var init_dojo = __esm({ "src/modules/location-huds/dojo/index.js"() { init_cheese_selectors(); dojo_default = () => __async(void 0, null, function* () { cheese_selectors_default("dojo", ["maki_cheese"]); }); } }); // src/modules/location-huds/dracano/index.js var dracano_default; var init_dracano = __esm({ "src/modules/location-huds/dracano/index.js"() { init_cheese_selectors(); dracano_default = () => __async(void 0, null, function* () { cheese_selectors_default("dracano", ["inferno_havarti_cheese"]); }); } }); // src/modules/location-huds/elub-shore/index.js var elub_shore_default; var init_elub_shore = __esm({ "src/modules/location-huds/elub-shore/index.js"() { init_cheese_selectors(); elub_shore_default = () => __async(void 0, null, function* () { cheese_selectors_default("elub-shore", ["shell_cheese"]); }); } }); // src/modules/location-huds/floating-islands/styles.css var styles_default62; var init_styles63 = __esm({ "src/modules/location-huds/floating-islands/styles.css"() { styles_default62 = '.floatingIslandsHUD-islandLoot-label{color:transparent}.floatingIslandsHUD-islandLoot-label:before{position:absolute;top:3px;right:3px;width:100px;font-size:13px;font-variant:small-caps;color:#e2d8b6;text-shadow:1px 1px #43311c;content:"Mice can drop"}a.floatingIslandsHUD-islandLoot{font-size:14px}.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.fog_shrine:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.frost_shrine:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.rain_shrine:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.wind_shrine:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.paragon_cache_a:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.paragon_cache_b:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.paragon_cache_c:first-child,.floatingIslandsAdventureBoardSkyMap-islandMod .floatingIslandsHUD-mod.paragon_cache_d:first-child{background-position-y:0;border-radius:3px;box-shadow:0 0 13px 3px gold inset}.floatingIslandsHUD-modPanel.fog_shrine:hover:before,.floatingIslandsHUD-modPanel.frost_shrine:hover:before,.floatingIslandsHUD-modPanel.rain_shrine:hover:before,.floatingIslandsHUD-modPanel.wind_shrine:hover:before{position:absolute;right:7px;bottom:6px;left:7px;z-index:1;display:flex;justify-content:center;height:auto;padding:1px;font-size:16px;font-variant:small-caps;color:#0c3e0e;text-shadow:none;white-space:nowrap;content:"";background-color:#d1e19d}.floatingIslandsHUD-modPanel.fog_shrine:hover:before{content:"Fog"}.floatingIslandsHUD-modPanel.frost_shrine:hover:before{content:"Frost"}.floatingIslandsHUD-modPanel.rain_shrine:hover:before{content:"Rain"}.floatingIslandsHUD-modPanel.wind_shrine:hover:before{content:"Wind"}span.floatingIslandsHUD-huntsRemaining{position:absolute;top:6px;right:6px;padding:2px 4px;font-size:16px}.floatingIslandsHUD-huntsRemainingContainer{top:-1px}.floatingIslandsHUD-islandTitle{top:-3px;font-size:15px;text-shadow:none}.floatingIslandsHUD-bait-quantity,.floatingIslandsHUD-bait-craftingItem-quantity{padding-right:4px;font-size:11px}.floatingIslandsHUD-craftingItem-quantity.quantity{font-size:13px}.floatingIslandsHUD-craftingItem.show-progress .floatingIslandsHUD-craftingItem-quantity.quantity{font-size:11px}.floatingIslandsHUD.island .floatingIslandsHUD-airshipContainer{top:70px;left:524px;z-index:3;filter:drop-shadow(0 0 6px #fbe7a4);transform:scale(2)}.floatingIslandsWorkshop-part-name{font-size:11px;text-shadow:none}.floatingIslandsHUD-fuel-quantity.quantity{top:31px;right:0;left:0;width:auto;padding:4px;margin-right:8px;margin-left:7px;font-size:14px;pointer-events:none;background:linear-gradient(218deg,#7baabd,#568295);border-radius:3px;box-shadow:inset 0 0 2px 2px #09577f,0 2px 8px 1px #78aabd}.floatingIslandsHUD-fuel-quantity.quantity:hover,.floatingIslandsHUD-fuel-quantity.quantity:focus{cursor:pointer}.floatingIslandsHUD-fuel-quantity.quantity.active{background:linear-gradient(218deg,#0e8eeb,#28eeff);box-shadow:0 0 2px 2px #09577f inset,0 2px 7px 1px #37feff}.floatingIslandsHUD-retreatButton,.floatingIslandsHUD-retreatButton.disabled,.floatingIslandsHUD.enemyActive .floatingIslandsHUD-retreatButton{margin-top:-1px;color:#b0a06c!important;background-color:transparent;border:none;border-radius:0}.floatingIslandsHUD-retreatButton:hover,.floatingIslandsHUD-retreatButton.disabled:hover,.floatingIslandsHUD.enemyActive .floatingIslandsHUD-retreatButton:hover,.floatingIslandsHUD-retreatButton:focus,.floatingIslandsHUD-retreatButton.disabled:focus,.floatingIslandsHUD.enemyActive .floatingIslandsHUD-retreatButton:focus{color:#fce698!important;background:none}.floatingIslandsHUD-craftingItem-quantity.quantity,.floatingIslandsHUD-islandLoot,.floatingIslandsHUD-modPanel-effect{text-shadow:1px 1px 1px #242424}.floatingIslandsHUD-modPanel.active .floatingIslandsHUD-modPanel-effect,.floatingIslandsHUD-modPanel.complete .floatingIslandsHUD-modPanel-effect{text-shadow:1px 1px 1px #9ab59a}.mh-ui-fi-enemy-countdown{position:absolute;top:3px;bottom:-4px;left:-1px;z-index:4;width:auto;min-width:70px;padding-left:5px;white-space:nowrap;background-color:#51250a;border-radius:8px 8px 8px 0;box-shadow:1px 0 0 1px #7d5430,inset 1px 0 0 1px #9a6f43}span.mh-ui-fi-enemy-countdown-hunts{font-size:14px;color:#fbe296;text-shadow:1px 1px 1px #000;vertical-align:top}.mh-ui-fi-enemy-name{position:absolute;top:33px;right:24px;left:26px;height:12px;padding:0;margin:0;font-size:12px;font-weight:500;line-height:4px;text-align:center;background:linear-gradient(90deg,#ecc37d,#fde89a 18% 64%,#f2cf86);border:1px solid #b15d18;border-top:none;border-radius:0 0 19px 19px;box-shadow:0 1px 1px #d78c34}.floatingIslandsHUD.enemyActive .floatingIslandsHUD-enemyContainer.hasEnemy .floatingIslandsHUD-enemy-thumb{box-shadow:0 0 4px 3px #fb7660}.floatingIslandsHUD.enemyActive .floatingIslandsHUD-goalContainer .floatingIslandsHUD-enemy-state.enemyActive{color:#fb7660}.floatingIslandsHUD-fuelContainer:hover{filter:brightness(1.2)}.mousehuntTooltip{transition-delay:.5s}.floatingIslandsHUD-craftingItem.show-progress{display:flex;flex-direction:row;justify-content:flex-end;padding-right:3px}.mh-ui-fi-glore-progress{margin-left:2px;font-size:9px;text-shadow:1px 1px 1px #242424}.floatingIslandPaperDoll-mod{pointer-events:none}.floatingIslandsAdventureBoardSkyMap-rerollQuantity.quantity{font-size:13px}.floatingIslandsAdventureBoardSkyPalace-wheel-face.loot_cache.real.active{margin-left:1px;border-radius:5px;box-shadow:0 0 13px 2px gold inset}.floatingIslandsAdventureBoardSkyMap-fuel-quantity{padding:2px;margin-top:-2px;font-size:13px;background-color:#302636}.floatingIslandsAdventureBoard-paragonItem.mousehuntTooltipParent{font-size:14px}a.floatingIslandsHUD-flightLogButton.mousehuntTooltipParent{top:2px;left:490px;background-image:url(https://i.mouse.rip/upscaled/flight_log_button.png?1);background-size:cover;transform:scale(1.2);transform-origin:left}.floatingIslandsHUD.island .floatingIslandsHUD-bait.sky_cheese.skyCheeseWarning:after{top:-10px;left:-9px;width:30px;height:30px}.floatingIslandsHUD.island .floatingIslandsHUD-bait.skyCheeseWarning .floatingIslandsHUD-bait-image.sky_cheese{box-shadow:inset 0 0 10px 3px #ff1b00}.floatingIslandsHUD-enemy-tooltip .floatingIslandsHUD-wardenShrine-status{padding-left:3px;font-size:13px;text-align:center;background-position:10px 20px}a.floatingIslandsHUD-islandLoot:hover,a.floatingIslandsHUD-islandLoot:focus{z-index:5}.floatingIslandsAirship.highlight .floatingIslandsAirship-part{transform:scale(1.1) rotate(2deg)}.floatingIslandsHUD-enemyContainer .floatingIslandsHUD-enemy-thumb{transition:.3s ease-in;transform:scale(1.1) translate(-2px,-3px);transform-origin:left}.floatingIslandsHUD-enemyContainer:hover .floatingIslandsHUD-enemy-thumb{transform:scale(1.3) rotate(5deg) translate(-10px,-7px)}.floatingIslandsHUD-enemy-thumbContainer{overflow:hidden}.floatingIslandsAdventureBoardSkyMap-rerollButton.busy{pointer-events:none}.floatingIslandsAdventureBoard-info span{line-height:1.5}.floatingIslandsHUD-jetstream{position:absolute;top:15px;right:15px;z-index:10;width:30px;height:30px}.floatingIslandsHUD-jetstream .trapImageView-trapAura.active{width:30px;height:30px;margin:0;opacity:.5}.floatingIslandsHUD-jetstream .trapImageView-trapAura.active:hover{opacity:1}.floatingIslandsHUD-jetstream .trapImageView-trapAura.active .mousehuntTooltip{top:-20px;left:-250px;z-index:15;width:235px}.floatingIslandsHUD-jetstream-time{position:absolute;top:-20px;right:0;width:auto;min-width:100px;font-size:11px;color:#71d0ff;text-align:right}.floatingIslandsHUD-inventoryBag-item .floatingIslandsHUD-item-image,.floatingIslandsHUD-inventoryBag-item.active .floatingIslandsHUD-item-image{height:50px;background-color:transparent;border:none;box-shadow:none;transition:.2s ease-in}.floatingIslandsHUD-inventoryBag-item:hover .floatingIslandsHUD-item-image{background-size:55px}.inventoryBag .floatingIslandsHUD-inventoryBag-item-quantity.quantity{top:35px;padding:2px;font-size:12px}.inventoryBag .floatingIslandsHUD-inventoryBag-item-name{margin:5px 0;font-size:10px}.floatingIslandPaperDoll-mod.sky_pirates.level_1{animation:dirigibleFloat 5s infinite}@media (prefers-reduced-motion: reduce){.floatingIslandPaperDoll-mod{animation:none}}.floatingIslandsHUD-warningContainer{top:20px;left:548px}\n'; } }); // src/modules/location-huds/floating-islands/index.js var import_humanize_duration2, humanizer2, toggleFuelClass, toggleFuel, addBossCountdown, addEnemyClass, getNextOcUpgradeCost, showGloreProgress, onSkyMapShow, showBWReminder, maybeChangeWarning, updateJetstreamTime, jsClone, showJetstream, makeAirshipDraggable, run2, hud2, floating_islands_default2; var init_floating_islands2 = __esm({ "src/modules/location-huds/floating-islands/index.js"() { import_humanize_duration2 = __toESM(require_humanize_duration()); init_utils2(); init_styles63(); humanizer2 = import_humanize_duration2.default.humanizer({ language: "shortEn", languages: { shortEn: { y: () => "y", mo: () => "mo", w: () => "w", d: () => "d", h: () => "h", m: () => "m", s: () => "s", ms: () => "ms" } } }); toggleFuelClass = (fuelCount, isActive) => { if (isActive) { fuelCount.classList.remove("active"); } else { fuelCount.classList.add("active"); } }; toggleFuel = (skip = false) => { var _a, _b, _c; const fuel = document.querySelector(".floatingIslandsHUD-fuel-button"); if (!fuel) { return; } const fuelCount = document.querySelector(".floatingIslandsHUD-fuel-quantity"); if (!fuelCount) { return; } const enabled = ((_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.hunting_site_atts) == null ? void 0 : _c.is_fuel_enabled) || false; if (enabled) { fuelCount.classList.add("active"); } else { fuelCount.classList.remove("active"); } if (skip) { return; } fuel.addEventListener("click", (e) => { toggleFuelClass(fuelCount, e.target.classList.contains("active")); hg.views.HeadsUpDisplayFloatingIslandsView.toggleFuel(fuel); }); }; addBossCountdown = () => __async(void 0, null, function* () { var _a, _b, _c; const existing = document.querySelector(".mh-ui-fi-enemy-countdown"); if (existing) { existing.remove(); } const atts = ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.hunting_site_atts) || {}; if (!atts.has_enemy) { return; } let name = ((_c = atts.enemy) == null ? void 0 : _c.abbreviated_name) || "Enemy"; name = name.split(" ")[0]; const huntsRemaining = atts.enemy_encounter_hunts_remaining || 0; const bossCountdown = document.createElement("div"); bossCountdown.classList.add("mh-ui-fi-enemy-countdown"); makeElement("span", "mh-ui-fi-enemy-countdown-name", name, bossCountdown); makeElement("span", "mh-ui-fi-enemy-countdown-in", " in ", bossCountdown); makeElement("span", "mh-ui-fi-enemy-countdown-hunts", huntsRemaining, bossCountdown); const isEnemyActiveOrDefeated = atts.has_encountered_enemy || atts.has_defeated_enemy; if (isEnemyActiveOrDefeated) { return; } let goalContainer = document.querySelector(".floatingIslandsHUD-goalContainer"); if (goalContainer) { goalContainer.append(bossCountdown); return; } let tries = 0; const maxTries = 10; const interval = setInterval(() => { goalContainer = document.querySelector(".floatingIslandsHUD-goalContainer"); if (goalContainer) { goalContainer.append(bossCountdown); clearInterval(interval); } tries += 1; if (tries >= maxTries) { clearInterval(interval); } }, 1e3 * tries); }); addEnemyClass = () => __async(void 0, null, function* () { var _a, _b, _c, _d, _e, _f, _g, _h; const name = ((_d = (_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.hunting_site_atts) == null ? void 0 : _c.enemy) == null ? void 0 : _d.name) || false; const type = ((_h = (_g = (_f = (_e = user == null ? void 0 : user.quests) == null ? void 0 : _e.QuestFloatingIslands) == null ? void 0 : _f.hunting_site_atts) == null ? void 0 : _g.enemy) == null ? void 0 : _h.type) || false; if (!name || !type) { return; } const exists = document.querySelector(".mh-ui-fi-enemy-name"); if (exists) { exists.innerText = name; } else { const enemyContainer = document.querySelector(".floatingIslandsHUD-islandTitle"); if (!enemyContainer) { return; } makeElement("div", "mh-ui-fi-enemy-name", name, enemyContainer); } }); getNextOcUpgradeCost = (ocLevel) => { switch (Number.parseInt(ocLevel, 10)) { case 1: return "35"; case 2: return "150"; case 3: return "500"; case 4: return "1.2k"; case 5: return "2k"; case 6: return "3.5k"; case 7: return "8k"; case 8: return "10k"; default: return false; } }; showGloreProgress = () => __async(void 0, null, function* () { var _a, _b, _c; const items2 = yield getUserItems(["floating_islands_cloud_gem_stat_item", "floating_islands_sky_ore_stat_item"]); if (!(items2 && items2.length)) { return; } const glass = document.querySelector(".floatingIslandsHUD-craftingItem.floating_islands_cloud_gem_stat_item"); const ore = document.querySelector(".floatingIslandsHUD-craftingItem.floating_islands_sky_ore_stat_item"); if (!glass || !ore) { return; } const existing = document.querySelectorAll(".mh-ui-fi-glore-progress"); if (existing && existing.length) { existing.forEach((el) => { el.remove(); }); } const nextUpgrade = getNextOcUpgradeCost(((_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.airship) == null ? void 0 : _c.oculus_level) || 0); if (!nextUpgrade) { return; } makeElement("div", "mh-ui-fi-glore-progress", ` / ${nextUpgrade}`, glass); glass.classList.add("show-progress"); makeElement("div", "mh-ui-fi-glore-progress", ` / ${nextUpgrade}`, ore); ore.classList.add("show-progress"); }); onSkyMapShow = () => { const roll = document.querySelector(".floatingIslandsAdventureBoardSkyMap-rerollButton"); if (!roll) { return; } roll.addEventListener("click", () => { roll.classList.add("disabled"); roll.classList.add("no-click"); setTimeout(() => { roll.classList.remove("disabled"); roll.classList.remove("no-click"); }, 300); }); }; showBWReminder = () => { var _a, _b, _c, _d, _e, _f, _g, _h; const isStart = ((_b = (_a = user.enviroment_atts) == null ? void 0 : _a.hunting_site_atts) == null ? void 0 : _b.hunts_remaining) === 75 && ((_c = user.enviroment_atts) == null ? void 0 : _c.on_island); const bwOff = !((_e = (_d = user.enviroment_atts) == null ? void 0 : _d.hunting_site_atts) == null ? void 0 : _e.is_fuel_enabled); const bw = ((_h = (_g = (_f = user.enviroment_atts) == null ? void 0 : _f.items) == null ? void 0 : _g.bottled_wind_stat_item) == null ? void 0 : _h.quantity) || "0"; const hasBw = Number.parseInt(bw.toString().replaceAll(",", ""), 10) >= 50; if (isStart && bwOff && hasBw) { showHornMessage({ title: "Bottled Wind Reminder", text: "Don't forget to activate your Bottled Wind!", button: "Activate", action: () => { setTimeout(() => { const button = document.querySelector(".floatingIslandsHUD-fuel-button"); if (button) { button.click(); } }, 750); }, dismiss: 4e3, image: "https://www.mousehuntgame.com/images/ui/hud/floating_islands/items/bottled_wind_stat_item.png?asset_cache_version=2" }); } }; maybeChangeWarning = () => __async(void 0, null, function* () { var _a, _b, _c, _d, _e, _f, _g, _h, _i; const isLAI = (_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.hunting_site_atts) == null ? void 0 : _c.is_low_tier_island; const isAtBoss = ((_f = (_e = (_d = user == null ? void 0 : user.quests) == null ? void 0 : _d.QuestFloatingIslands) == null ? void 0 : _e.hunting_site_atts) == null ? void 0 : _f.has_encountered_enemy) && !((_i = (_h = (_g = user == null ? void 0 : user.quests) == null ? void 0 : _g.QuestFloatingIslands) == null ? void 0 : _h.hunting_site_atts) == null ? void 0 : _i.has_defeated_enemy); if (!isLAI || !isAtBoss) { return; } const bossWarning = document.querySelector(".floatingIslandsHUD-warning.floatingIslandsHUD-powerTypeWarning.active"); if (bossWarning) { bossWarning.innerHTML = "Use your most powerful setup!"; } }); updateJetstreamTime = () => __async(void 0, null, function* () { var _a, _b; const container = document.querySelector(".floatingIslandsHUD-jetstream-time"); if (!container) { return; } container.innerHTML = ""; if (!((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.jet_stream_active)) { return; } const expiry = document.querySelector(".floatingIslandsHUD-jetstream .trapImageView-tooltip-trapAura-expiry span"); if (!expiry) { return; } const dateParts = expiry.innerText.split(" "); if (!dateParts.length || dateParts.length < 5) { return; } const month = dateParts[0]; const day = dateParts[1].replace(",", ""); const year = dateParts[2]; const timeParts = dateParts[4].split(":"); let hours = Number.parseInt(timeParts[0]); const minutes = timeParts[1].slice(0, 2); if (dateParts[4].includes("pm") && hours !== 12) { hours += 12; } else if (dateParts[4].includes("am") && hours === 12) { hours = 0; } const expiryDate = Date.parse(`${month} ${day}, ${year} ${hours}:${minutes}`); if (Number.isNaN(expiryDate)) { return; } const now = /* @__PURE__ */ new Date(); const timeRemaining = expiryDate - now; const duration = humanizer2(timeRemaining, { round: true, units: ["d", "h", "m"], spacer: "", delimiter: " " }); container.innerText = duration; }); showJetstream = () => __async(void 0, null, function* () { var _a, _b; const exists = document.querySelector(".floatingIslandsHUD-jetstream"); if (exists) { exists.remove(); } if (!((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFloatingIslands) == null ? void 0 : _b.jet_stream_active)) { return; } const existing = document.querySelector(".floatingIslandsHUD-jetstream"); if (existing) { return; } const container = document.querySelector(".floatingIslandsHUD"); if (!container) { return; } let hudAura; if ("camp" === getCurrentPage()) { const aura = document.querySelector(".trapImageView-trapAura.mousehuntTooltipParent.QuestJetStreamAura.active"); if (!aura) { return; } hudAura = aura.cloneNode(true); jsClone = hudAura; } else { hudAura = jsClone; } if (!hudAura) { return; } const tooltip = hudAura.querySelector(".mousehuntTooltip"); if (tooltip) { tooltip.classList.remove("right"); tooltip.classList.add("left"); } const auraContainer = makeElement("div", "floatingIslandsHUD-jetstream"); auraContainer.append(hudAura); container.append(auraContainer); const timeRemainingEl = makeElement("div", "floatingIslandsHUD-jetstream-time"); auraContainer.append(timeRemainingEl); updateJetstreamTime(); }); makeAirshipDraggable = () => { const airship = document.querySelector(".floatingIslandsHUD.island .floatingIslandsHUD-airshipContainer"); if (!airship) { return; } let isDragging = false; let startX, startY2, startTop, startLeft; const moveAirship = (e) => { if (!isDragging) { return; } const dx = e.clientX - startX; const dy = e.clientY - startY2; airship.style.top = `${startTop + dy}px`; airship.style.left = `${startLeft + dx}px`; }; airship.addEventListener("mousedown", (e) => { e.preventDefault(); isDragging = true; startX = e.clientX; startY2 = e.clientY; startTop = airship.offsetTop; startLeft = airship.offsetLeft; document.addEventListener("mousemove", moveAirship); document.addEventListener("mouseup", () => { isDragging = false; document.removeEventListener("mousemove", moveAirship); }, { once: true }); }); }; run2 = () => __async(void 0, null, function* () { yield showJetstream(); yield addEnemyClass(); yield addBossCountdown(); yield maybeChangeWarning(); }); hud2 = () => { toggleFuel(); showGloreProgress(); run2(); showBWReminder(); onTravel(() => { setTimeout(showBWReminder, 1500); }); onEvent("ajax_response", run2); onEvent("horn-countdown-tick", updateJetstreamTime); onDialogShow("floatingIslandsAdventureBoard.floatingIslandsDialog.skyPalace", onSkyMapShow); onRequest("environment/floating_islands.php", () => { run2(); toggleFuel(true); }); }; floating_islands_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default62); hud2(); if (getSetting("experiments.fi-draggable-airship")) { makeAirshipDraggable(); } }); } }); // src/modules/location-huds/forbidden-grove/styles.css var styles_default63; var init_styles64 = __esm({ "src/modules/location-huds/forbidden-grove/styles.css"() { styles_default63 = ".forbiddenGroveHUD-grovebar-timeLeft{position:absolute;top:6px;left:171px;padding:1px 11px;font-size:12px;font-weight:900;color:#5f463d;background-color:#e1d1b7;border-top-right-radius:10px;box-shadow:0 -.5px 1px 1px #e1d1b7}\n"; } }); // src/modules/location-huds/forbidden-grove/index.js var updateClosingTime2, hud3, forbidden_grove_default; var init_forbidden_grove = __esm({ "src/modules/location-huds/forbidden-grove/index.js"() { init_utils2(); init_styles64(); init_cheese_selectors(); updateClosingTime2 = () => { let timeLeftText = ""; const today = /* @__PURE__ */ new Date(); const rotationLength = 20; const rotationsExact = (today.getTime() / 1e3 - 1285704e3) / 3600 / rotationLength; const rotationsInteger = Math.floor(rotationsExact); const partialRotation = (rotationsExact - rotationsInteger) * rotationLength; if (partialRotation < 16) { const closes = (16 - partialRotation).toFixed(3); const hours = Math.floor(closes); const minutes = Math.ceil((closes - Math.floor(closes)) * 60); timeLeftText = `${hours}h ${minutes}m remaining`; } const timeLeftEl = document.createElement("div"); timeLeftEl.classList.add("forbiddenGroveHUD-grovebar-timeLeft"); timeLeftEl.innerText = timeLeftText; return timeLeftEl; }; hud3 = () => { if ("forbidden_grove" !== getCurrentLocation()) { return; } const hudBar = document.querySelector(".forbiddenGroveHUD-grovebar"); if (!hudBar) { return; } const existing = document.querySelector(".forbiddenGroveHUD-grovebar-timeLeft"); if (existing) { existing.remove(); } const timeLeftEl = updateClosingTime2(); hudBar.append(timeLeftEl); const timer = setInterval(updateClosingTime2, 60 * 1e3); onEvent("travel_complete", () => { clearInterval(timer); }); }; forbidden_grove_default = () => __async(void 0, null, function* () { addHudStyles(styles_default63); cheese_selectors_default("forbidden-grove", [ "ancient_cheese", "radioactive_blue_cheese", "magical_radioactive_blue_cheese", "moon_cheese", "crescent_cheese" ]); hud3(); }); } }); // src/modules/location-huds/shared/folklore-forest/index.js var saveHidden, isHidden, getToggleVisibilityMapping, toggleAllVisibility, isUnlocked, hideOrShowBlock, addToggle, addUpgradeVisibilityToggles, hasAddedUpgradeVisibilityToggles, folklore_forest_default2; var init_folklore_forest2 = __esm({ "src/modules/location-huds/shared/folklore-forest/index.js"() { init_utils2(); saveHidden = (upgradeId, isHidden2) => { const upgradeIds = getSetting("location-huds.folklore-forest-visibility-toggles", {}); upgradeIds[upgradeId] = isHidden2; saveSetting("location-huds.folklore-forest-visibility-toggles", upgradeIds); }; isHidden = (upgradeId) => { const setting = getSetting("location-huds.folklore-forest-visibility-toggles", {}); return setting[upgradeId] || false; }; getToggleVisibilityMapping = () => { return { tackle_box: ".prologuePondView-fishingBoat-paperDoll-layer.tackle_box", fridge_bait_box: ".prologuePondView-fishingBoat-paperDoll-layer.fridge_bait_box", fishing_rod: ".prologuePondView-fishingBoat-paperDoll-layer.fishing_rod", fish_net: ".prologuePondView-fishingBoat-paperDoll-layer.fish_net", fishing_line: ".prologuePondView-fishingBoat-paperDoll-layer.fishing_line", steam_reel: ".prologuePondView-fishingBoat-paperDoll-layer.steam_reel", binding_thread: ".tableOfContentsView-bookContainer.active .tableOfContentsView-bookImage-layer.tableOfContentsView-bookImage-paper", leather_cover: ".tableOfContentsView-bookContainer.active .tableOfContentsView-bookImage-layer.tableOfContentsView-bookImage-binding", edge_gilding: ".tableOfContentsView-bookContainer.active .tableOfContentsView-bookImage-layer.tableOfContentsView-bookImage-silk", gold_foil: ".tableOfContentsView-bookContainer.active .tableOfContentsView-bookImage-layer.tableOfContentsView-bookImage-goldFoil", silver_quill: "", golden_quill: "" }; }; toggleAllVisibility = () => { const mapping2 = getToggleVisibilityMapping(); const upgradeIds = Object.keys(mapping2); if (upgradeIds.length === 0) { return; } upgradeIds.forEach((upgradeId) => { hideOrShowBlock(upgradeId, isHidden(upgradeId)); }); }; isUnlocked = (upgradeId) => { var _a, _b, _c; let userQuest; if ((_a = user.quests) == null ? void 0 : _a.QuestTableOfContents) { userQuest = user.quests.QuestTableOfContents; } else if ((_b = user.quests) == null ? void 0 : _b.QuestProloguePond) { userQuest = user.quests.QuestProloguePond; } else if ((_c = user.quests) == null ? void 0 : _c.QuestForewordFarm) { userQuest = user.quests.QuestForewordFarm; } else { return false; } if (!userQuest || !userQuest.upgrades) { return false; } const upgrade = userQuest.upgrades.find((u) => u.type === upgradeId); if (!upgrade) { return false; } return upgrade.is_unlocked; }; hideOrShowBlock = (blockId, isBlockToggled) => { const mapping2 = getToggleVisibilityMapping(); if (!mapping2[blockId]) { const quill = document.querySelector(".tableOfContentsProgressView-quillContainer"); if (!quill) { return; } if (isBlockToggled) { if ("golden_quill" === blockId) { quill.classList.remove("quill--gold"); } else if ("silver_quill" === blockId) { quill.classList.remove("quill--silver"); } return; } if ("golden_quill" === blockId && isUnlocked("golden_quill")) { quill.classList.add("quill--gold"); } else if ("silver_quill" === blockId && isUnlocked("silver_quill")) { quill.classList.add("quill--silver"); } return; } const selector = mapping2[blockId]; if (!selector) { return; } const element = document.querySelector(selector); if (!element) { return; } element.classList.toggle("active", !isBlockToggled); }; addToggle = (upgradeBlock) => { if (upgradeBlock.classList.contains("toggle-added")) { return; } const classList = upgradeBlock.classList.value; const blockId = classList.replace("folkloreForestRegionView-dialog-block", "").replace("active", "").replace("prologue_pond", "").replace("table_of_contents", "").trim(); let isBlockToggled = isHidden(blockId); const toggle = makeElement("div", ["mhui-folklore-forest-upgrade-toggle", "mousehuntActionButton", "tiny", "lightBlue"]); const toggleText = makeElement("span", "upgrade-toggle-text", isBlockToggled ? "Show" : "Hide"); toggle.append(toggleText); toggle.addEventListener("click", () => { isBlockToggled = !isBlockToggled; saveHidden(blockId, isBlockToggled); toggleText.innerText = isBlockToggled ? "Show" : "Hide"; hideOrShowBlock(blockId, isBlockToggled); upgradeBlock.classList.toggle("toggle-is-hidden", isBlockToggled); }); const action = upgradeBlock.querySelector(".folkloreForestRegionView-dialog-block-action"); if (action) { action.append(toggle); } else { upgradeBlock.append(toggle); } upgradeBlock.classList.add("toggle-added"); upgradeBlock.classList.add(isBlockToggled ? "toggle-is-hidden" : "toggle-is-visible"); }; addUpgradeVisibilityToggles = () => { if (hasAddedUpgradeVisibilityToggles) { return; } hasAddedUpgradeVisibilityToggles = true; const pondUpgrades = document.querySelectorAll(".folkloreForestRegionView-dialog-blockContainer.upgrades .folkloreForestRegionView-dialog-block.prologue_pond.active"); const bookUpgrades = document.querySelectorAll(".folkloreForestRegionView-dialog-blockContainer.upgrades .folkloreForestRegionView-dialog-block.table_of_contents.active"); if (!pondUpgrades || !bookUpgrades) { return; } for (const upgrade of pondUpgrades) { addToggle(upgrade); } for (const upgrade of bookUpgrades) { addToggle(upgrade); } }; hasAddedUpgradeVisibilityToggles = false; folklore_forest_default2 = () => __async(void 0, null, function* () { onDialogShow("fabledForestDialog", addUpgradeVisibilityToggles); onDialogHide(() => hasAddedUpgradeVisibilityToggles = false); toggleAllVisibility(); onRequest("*", toggleAllVisibility); }); } }); // src/modules/location-huds/foreword-farm/styles.css var styles_default64; var init_styles65 = __esm({ "src/modules/location-huds/foreword-farm/styles.css"() { styles_default64 = ".forewordFarmPlotView-plot-progress-label{font-size:13px;line-height:18px;vertical-align:middle;filter:drop-shadow(0 0 1px #000);-webkit-text-stroke:1px rgb(255 255 255 / 50%)}span.forewordFarmPlotView-plot-progress-catchText{font-size:11px;vertical-align:bottom}.folkloreForestRegionView-basicBait-quantity.quantity{top:13px;font-size:12px}.forewordFarmView-growthRate-value span{margin-right:2px}.forewordFarmView-growthRate-value{font-size:14px;border-radius:4px;box-shadow:0 0 20px #000 inset}.forewordFarmView-growthRate-label{margin-left:2px;font-size:11px;font-variant:all-small-caps}.forewordFarmView-harvestBin-quantity{top:-12px;padding:2px;font-size:23px}.forewordFarmView-harvestBin-claimButton-label{margin-left:64px;font-size:12px;color:#2c4e26!important;text-shadow:1px 1px 1px #d1d0cf}.forewordFarmPlotView-plot-queue-item-spacer{height:15px;background-color:#ccc}.forewordFarmPlotView-plot-queue-name.active{-webkit-line-clamp:3}a.forewordFarmPlotView-plot-queue-cancelButton{top:-12px;right:-4px;padding:2px;background-color:#ffbfbf;box-shadow:0 0 3px -1px #000 inset}.forewordFarmPlotView-plot-progressContainer .mousehuntTooltip{border-width:1px}.forewordFarmPlotView-plot-queue-item:hover .forewordFarmPlotView-plot-queue-cancelButton:hover{z-index:1;color:#000!important;background-color:#eb7c73}.forewordFarmPlotView.showQueues .forewordFarmPlotView-plot-queue-item{width:50%}.forewordFarmPlotView-plot-queue-list:hover{background:none}.forewordFarmPlotView-plot-queue-item:hover a.forewordFarmPlotView-plot-queue-cancelButton{background-color:#ffbfbf}.folkloreForestRegionView-fuel-quantity.quantity{font-size:13px}.forewordFarmPlantDialogView-plant-yieldContainer table{margin-top:5px}.forewordFarmPlantDialogView-plant-yieldContainer{width:45%;padding-top:5px}.forewordFarmPlantDialogView-plant-costContainer.num_items_3{display:flex;flex-flow:row wrap;width:50%}.forewordFarmPlantDialogView .folkloreForestRegionView-dialog-block-item{margin:0}.forewordFarmPlantDialogView-plant-name{width:100%;font-size:12px;text-align:center}.forewordFarmPlantDialogView-plant .folkloreForestRegionView-button.big{width:95px;font-size:12px}#overlayPopup.fabledForestDialog .jsDialog.background{padding:18px 5px 10px}.folkloreForestRegionView-dialog-block.highlight,.folkloreForestRegionView-dialog-block{border-top:none;border-radius:0;box-shadow:none}.forewordFarmPlantDialogView-row{border:1px solid #897225;border-radius:0}.forewordFarmPlantDialogView-plant{border:none}.forewordFarmPlantDialogView-plant-header{border-bottom:1px solid #897225;box-shadow:0 0 6px #134220 inset}.forewordFarmPlantDialogView-row .forewordFarmPlantDialogView-plant:nth-child(2) .forewordFarmPlantDialogView-plant-content{margin-left:-1px;border-left:1px solid #897225}.forewordFarmPlotView-plot-progress-bar{top:-2px;bottom:-1px;border-right:none;border-left:none;box-shadow:0 1px #999,0 -1px #999}.forewordFarmPlotView-plot-progress-plantIcon.current{top:-5px;left:-24px}.forewordFarmPlotView.showQueues .forewordFarmPlotView-plot-progressContainer{width:80px;height:20px;margin-top:114px}.forewordFarmPlotView-plot-progress-plantIcon.queued{top:-1px;right:-17px;width:22px;height:22px}.forewordFarmPlotView.showPlantIconHighlight .forewordFarmPlotView-plot.highlight .forewordFarmPlotView-plot-progress-plantIcon.highlight{box-shadow:0 0 1px 2px #6adf4fd4}.forewordFarmHarvestBin-itemImage .quantity{font-size:16px}\n"; } }); // src/modules/location-huds/foreword-farm/index.js var foreword_farm_default2; var init_foreword_farm2 = __esm({ "src/modules/location-huds/foreword-farm/index.js"() { init_utils2(); init_folklore_forest2(); init_styles58(); init_styles65(); foreword_farm_default2 = () => __async(void 0, null, function* () { addHudStyles([styles_default57, styles_default64]); folklore_forest_default2(); }); } }); // src/modules/location-huds/fort-rox/styles.css var styles_default65; var init_styles66 = __esm({ "src/modules/location-huds/fort-rox/styles.css"() { styles_default65 = '.fortRoxHUD-timeline{width:693px;box-shadow:0 0 2px 7px #5c3330}.fortRoxHUD-huntsRemaining.mousehuntTooltipParent{top:45px;right:13px;left:unset;background-color:#e2e2e2;box-shadow:inset 0 0 3px #c0b6b3}a.fortRoxHUD-retreat{top:70px}.fortRoxHUD-timeline-phase-name,.fortRoxHUD-timeline-phase-marker.active .fortRoxHUD-timeline-phase-name{font-size:13px;font-variant:normal;text-shadow:0 0 3px #131313;filter:drop-shadow(0 1px 1px 131313)}.fortRoxHUD-timeline-phase-marker.past .fortRoxHUD-timeline-phase-name{text-shadow:0 0 3px #7b7a7a;filter:drop-shadow(0 1px 1px #7b7a7a)}.fortRoxHUD-fort-upgrade-boundingBox-name{z-index:1;background-color:#c0c0ba}.fortRoxHUD-fort-upgrade-boundingBox:hover .fortRoxHUD-fort-upgrade-boundingBox-name{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:80px;font-size:11px}.fortRoxHUD-timeline-phase-time-tooltip{min-width:75px;margin-top:20px;margin-left:-20px}.fortRoxHUD-timeline-phase-time-tooltip .mousehuntTooltip-content{display:flex;flex-direction:column;align-items:center}.fortRoxHUD-timeline-phase-time-tooltip .mousehuntTooltip-content .tooltip-power{margin-top:5px}.fortRoxHUD-huntsRemaining .mousehuntTooltip{top:35px}.fortRoxHUD-timeline-phase-marker:before{position:absolute;top:-6px;left:-10px;z-index:5;display:inline-block;width:18px;height:18px;vertical-align:middle;content:"";background-image:url(https://www.mousehuntgame.com/images/powertypes/shadow.png?asset_cache_version=2);filter:drop-shadow(0 0 1px #fff);background-repeat:no-repeat;background-size:100%}.fortRoxHUD-timeline-phase-marker{position:relative}.fortRoxHUD-timeline-phase-marker.stage_three:before{background-image:none}.fortRoxHUD-timeline-phase-marker.stage_four:before,.fortRoxHUD-timeline-phase-marker.stage_five:before{background-image:url(https://www.mousehuntgame.com/images/powertypes/arcane.png?asset_cache_version=2)}.fortRoxHUD .quantity{padding:2px;font-size:12px}.fortRoxHUD-dialog-craftingItem-quantity{top:5px}.complete .fortRoxHUD-dialog-upgrade-costContainer{opacity:.6}.fortRoxHUD-bossWarning-hasMultiplier.active b{font-size:12px}.fortRoxHUD-bossWarning{width:auto;padding:5px 30px 5px 40px;font-size:11px}.fortRoxHUD-bossWarning:after{top:3px;left:3px}.frox-has-portal{filter:drop-shadow(0 0 5px #ffde2f) drop-shadow(0 0 15px #ffde2f)}.frox-no-portal{filter:grayscale(1);opacity:.8}.frox-no-portal:hover,.frox-no-portal:focus{filter:grayscale(.2);opacity:1}.fortRoxHUD-spellContainer{top:169px;left:25px}a.fortRoxHUD-upgradeButton.disabled{opacity:.4}a.fortRoxHUD-upgradeButton.disabled:hover,a.fortRoxHUD-upgradeButton.disabled:focus{opacity:1}a.fortRoxHUD-spellTowerButton{margin-left:80px}a.fortRoxHUD-spellTowerButton.normal.inactive{filter:hue-rotate(238deg)}.mh-frox-wall-hp{padding:3px}.fortRoxHUD-hp{top:99px;left:390px;padding-top:2px}.frox-wall-perfect{background-color:#7aff53}.frox-wall-high{background-color:#a9ff53}.frox-wall-medium{background-color:#fff253}.frox-wall-low{background-color:#ff9b53}.frox-wall-very-low{background-color:#ff5353}.fortRoxHUD-dialog-upgrade-name{padding:5px 0}.fortRoxHUD-dialog-upgrade-description{font-size:10px;font-style:italic}.fortRoxHUD-dialog-upgrade-costContainer-title{display:none}.fortRoxHUD-dialog-category-description{padding:10px 0}.fortRoxHUD-dialog-upgrade-costContainer{display:flex;flex-direction:row;align-items:center;justify-content:center;margin-top:10px}.fortRoxHUD-dialog-upgrade-status.complete .mousehuntActionButton{opacity:0}.fortRoxHUD-dialog-upgrade.cannotUpgrade .fortRoxHUD-dialog-upgrade-status.cannotUpgrade{display:flex;flex-direction:column;align-items:center}.complete .fortRoxHUD-dialog-upgrade-costContainer .mousehuntTooltipParent .mousehuntTooltip{display:none}\n'; } }); // src/modules/location-huds/fort-rox/index.js var phaseLengths, makeTooltip2, updateNightBar, updateUpgradeTooltips, updateWallHP, addPortalClass, hud4, fort_rox_default2; var init_fort_rox2 = __esm({ "src/modules/location-huds/fort-rox/index.js"() { init_utils2(); init_styles66(); phaseLengths = { stage_one: { hunts: 35, powerType: "Shadow" }, stage_two: { hunts: 25, powerType: "Shadow" }, stage_three: { hunts: 10, powerType: "Arcane or Shadow" }, stage_four: { hunts: 25, powerType: "Arcane" }, stage_five: { hunts: 35, powerType: "Arcane" } }; makeTooltip2 = (text, direction = "top", customClass = []) => { const existing = document.querySelectorAll(".added-frox-tooltip"); if (existing.length) { existing.forEach((tooltip2) => { tooltip2.remove(); }); } const tooltip = makeElement("div", ["added-frox-tooltip", "mousehuntTooltip", "tight", direction, ...customClass]); makeElement("div", "mousehuntTooltip-content", text, tooltip); makeElement("div", "mousehuntTooltip-arrow", "", tooltip); return tooltip; }; updateNightBar = () => { const bar = document.querySelector(".fortRoxHUD-timeline-phases"); if (!bar) { return false; } const phaseBars = bar.querySelectorAll(".fortRoxHUD-timeline-phase-marker"); if (!phaseBars.length) { return false; } phaseBars.forEach((phaseBar) => { var _a, _b, _c, _d; const phaseClass = [...phaseBar.classList].find((className) => { return className.startsWith("stage_"); }); const phaseLength = phaseLengths[phaseClass]; if (!phaseLength) { return; } const phaseTime = document.createElement("div"); phaseTime.classList.add("fortRoxHUD-timeline-phase-time"); const tooltipText = []; if (phaseBar.classList.contains("past")) { tooltipText.push("Phase complete."); } else if (phaseClass === ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFortRox) == null ? void 0 : _b.current_stage)) { tooltipText.push(`${(_d = (_c = user == null ? void 0 : user.quests) == null ? void 0 : _c.QuestFortRox) == null ? void 0 : _d.hunts_until_next_phase} / ${phaseLength.hunts} hunts remaining. <div class='tooltip-power'>Use ${phaseLength.powerType} power type.</div>`); } else { tooltipText.push(`${phaseLength.hunts} hunts. <div class='tooltip-power'>Use ${phaseLength.powerType} power type.</div>`); } const tooltip = makeTooltip2(tooltipText.join(" "), "bottom", "fortRoxHUD-timeline-phase-time-tooltip"); phaseBar.append(tooltip); phaseBar.classList.add("mousehuntTooltipParent"); }); }; updateUpgradeTooltips = () => { const upgradeTooltips = document.querySelectorAll(".fortRoxHUD-fort-upgrade-boundingBox"); if (!upgradeTooltips.length) { return false; } const upgradeInfo = document.querySelectorAll(".fortRoxHUD-fort-upgrade-level-info"); if (upgradeInfo.length) { upgradeInfo.forEach((info) => { info.remove(); }); } upgradeTooltips.forEach((tooltip) => { var _a, _b; const type = tooltip.getAttribute("onclick").replace("app.views.HeadsUpDisplayView.hud.fortRoxShowConfirm('upgradeFort', ", "").replace("); return false;", "").replaceAll("'", ""); const upgradeProgress = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFortRox) == null ? void 0 : _b.upgrades[type]; const upgradeKeys = Object.keys(upgradeProgress); const completedUpgrades = upgradeKeys.reduce((count2, key) => { if (upgradeProgress[key].includes("complete")) { count2++; } return count2; }, 0); const name = tooltip.querySelector(`.fortRoxHUD-fort-upgrade-boundingBox-level.level_${completedUpgrades}`); let upgradeText = `(Level ${completedUpgrades}/${upgradeKeys.length - 1})`; if (completedUpgrades === upgradeKeys.length - 1) { upgradeText = "(Max Level)"; } const upgrade = makeElement("div", "fortRoxHUD-fort-upgrade-level-info", upgradeText, name); upgrade.classList.add("frox-upgrade-level-info"); }); }; updateWallHP = () => { const exists = document.querySelector(".mh-frox-wall-hp"); if (exists) { exists.remove(); } const hpBox = document.querySelector(".fortRoxHUD-hp"); if (!hpBox) { return false; } const wallPercent = user.quests.QuestFortRox.hp_percent.toFixed(0); const wrapper = makeElement("div", "mh-frox-wall-hp"); makeElement("div", "mh-frox-wall-hp-text", `${wallPercent}%`, wrapper); hpBox.append(wrapper); hpBox.classList.remove( "frox-wall-very-low", "frox-wall-low", "frox-wall-medium", "frox-wall-high", "frox-wall-perfect" ); const hp = Number.parseInt(user.quests.QuestFortRox.hp_percent, 10); if (hp === 100) { hpBox.classList.add("frox-wall-perfect"); } else if (hp >= 75) { hpBox.classList.add("frox-wall-high"); } else if (hp >= 50) { hpBox.classList.add("frox-wall-medium"); } else if (hp >= 25) { hpBox.classList.add("frox-wall-low"); } else { hpBox.classList.add("frox-wall-very-low"); } }; addPortalClass = () => { var _a, _b, _c, _d; const portal = document.querySelector(".fortRoxHUD.dawn .fortRoxHUD-enterLairButton"); if (!portal) { return false; } portal.classList.remove("frox-no-portal", "frox-has-portal"); const hasPortal = Number.parseInt((_d = (_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestFortRox) == null ? void 0 : _b.items) == null ? void 0 : _c.fort_rox_lair_key_stat_item) == null ? void 0 : _d.quantity, 10); portal.classList.add(hasPortal ? "frox-has-portal" : "frox-no-portal"); }; hud4 = () => { updateNightBar(); updateUpgradeTooltips(); updateWallHP(); addPortalClass(); }; fort_rox_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default65); hud4(); }); } }); // src/modules/location-huds/fungal-cavern/styles.css var styles_default66; var init_styles67 = __esm({ "src/modules/location-huds/fungal-cavern/styles.css"() { styles_default66 = ".fungalCavernHUD-craftingItem-quantity.quantity{position:absolute;top:1px;left:-7px;width:52px;height:15px;font-size:11px;font-weight:400;background-color:#d7d5d4;border:1px solid #424140;border-radius:4px;box-shadow:1px 0 3px 1px #424140}.fungalCavernHUD-craftingItemContainer{top:-6px;bottom:7px;display:flex;flex-direction:column;justify-content:space-evenly;height:auto}.fungalCavernHUD-craftingItem.on .fungalCavernHUD-craftingItem-status{display:none}.on .fungalCavernHUD-craftingItem-quantity.quantity{background-color:#97df7b}.fungalCavernHUD-bait-quantity.quantity{width:34px;margin-top:-1px;margin-left:-4px;font-size:11px;font-weight:400;background-color:#d7d5d4;border:1px solid #424140;border-radius:3px;box-shadow:1px 0 3px 1px #424140}span.fungalCavernHUD-background-title-zone{padding:2px;font-size:16px;color:#d7d5d4;vertical-align:middle;background-color:#78645a;border:1px solid #9a887e}.fungalCavernHUD-craftingItem.rare .fungalCavernHUD-craftingItem-status{display:none}.rare .fungalCavernHUD-craftingItem-quantity.quantity{background-color:#d3ffc1}.fungalCavernHUD .armNow.active{filter:hue-rotate(131deg)}\n"; } }); // src/modules/location-huds/fungal-cavern/index.js var fungal_cavern_default; var init_fungal_cavern = __esm({ "src/modules/location-huds/fungal-cavern/index.js"() { init_utils2(); init_styles67(); fungal_cavern_default = () => __async(void 0, null, function* () { addHudStyles(styles_default66); }); } }); // src/modules/location-huds/great-gnarled-tree/index.js var great_gnarled_tree_default; var init_great_gnarled_tree = __esm({ "src/modules/location-huds/great-gnarled-tree/index.js"() { init_cheese_selectors(); great_gnarled_tree_default = () => __async(void 0, null, function* () { cheese_selectors_default("great-gnarled-tree", ["gnarled_cheese"]); }); } }); // src/modules/location-huds/harbour/styles.css var styles_default67; var init_styles68 = __esm({ "src/modules/location-huds/harbour/styles.css"() { styles_default67 = ".harbourHUD-map-mapImage{filter:drop-shadow(1px -2px 2px #000);transition:.3s ease-in-out}.harbourHUD-mapContainer:hover .harbourHUD-map-mapImage{transform:rotate(5deg) scale(1.1)}.harbourHUD-mouse-name{text-shadow:1px 1px 2px #000,0 0 4px #fff}.harbourHUD-popup-title{text-shadow:none}\n"; } }); // src/modules/location-huds/harbour/index.js var harbour_default2; var init_harbour2 = __esm({ "src/modules/location-huds/harbour/index.js"() { init_utils2(); init_styles68(); harbour_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default67); }); } }); // src/modules/location-huds/iceberg/styles/always-show-progress.css var always_show_progress_default; var init_always_show_progress = __esm({ "src/modules/location-huds/iceberg/styles/always-show-progress.css"() { always_show_progress_default = ".icebergStatusTooltip.mousehuntTooltip{display:block}.icebergStatusTooltip.mousehuntTooltip .mousehuntTooltip-arrow{display:none}.icebergHud .cutaway .drill .help{top:89px;box-shadow:0 2px 3px -1px #797979}.depth.mousehuntTooltipParent:hover>.mousehuntTooltip{animation:none!important}\n"; } }); // src/modules/location-huds/iceberg/styles/bob-iceberg.css var bob_iceberg_default; var init_bob_iceberg = __esm({ "src/modules/location-huds/iceberg/styles/bob-iceberg.css"() { bob_iceberg_default = '.icebergHud .timeline .icebergContainer .iceberg{z-index:1;border-bottom-left-radius:8px;transition:.4s;transform-origin:top;animation:6s dirigibleFloat ease-in-out infinite}@media (prefers-reduced-motion: reduce){.icebergHud .timeline .icebergContainer .iceberg{animation:none}}.icebergHud .timeline .icebergContainer .iceberg:after{position:absolute;right:1px;bottom:5px;width:10px;height:5px;content:"";background:linear-gradient(180deg,#fff0,#d5dee6 55%,#fff0);background-color:#eff1f6;border-radius:0 100% 20% 0}.icebergHud .timeline:after{position:absolute;right:22px;bottom:-8px;left:22px;box-sizing:border-box;display:block;width:auto;height:10px;content:"";background-color:#6185c5;border:1px solid #5974a6;border-bottom-right-radius:5px}.icebergHud .cutaway{z-index:5}.icebergHud .timeline .chest{z-index:4}.icebergHud .timeline{top:5px}\n'; } }); // src/modules/location-huds/iceberg/styles/styles.css var styles_default68; var init_styles69 = __esm({ "src/modules/location-huds/iceberg/styles/styles.css"() { styles_default68 = '.icebergHud.bonus .bonus_timeline .turnsLeft{top:0;display:inline-flex;align-items:center;font-size:14px;border-color:#666;border-radius:0}.remaining-distance,.remaining-stage-distance{margin:.25em 0}.icebergStatusTooltip{bottom:-3px;left:170px;width:330px;padding:5px 5px 0;background-color:#edf1f8;border:1px solid #a4b5bf;box-shadow:0 1px 0 1px #9caab4}.icebergStatusTooltip .mousehuntTooltip-content{display:grid;grid-template-columns:2fr 1fr;gap:15px;align-items:center}.icebergStatusTooltip .hunts-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;height:100%}.icebergStatusTooltip .hunts-wrapper .average-hunts{font-size:1.25em}.icebergStatusTooltip .hunts-wrapper div{display:flex;align-items:center;justify-content:space-evenly;width:100%;margin:0}.icebergStatusTooltip .hunts-wrapper div:first-child{margin-top:0;text-align:center}.icebergStatusTooltip .iceberg-sections{width:175px}.icebergStatusTooltip .iceberg-section{position:relative;display:flex;place-items:center start;justify-content:space-between;width:auto;margin-bottom:.25em;overflow:visible}.icebergStatusTooltip .iceberg-section.complete{color:#989898;opacity:.6}.icebergStatusTooltip .iceberg-section.complete .iceberg-section-name:before{position:absolute;top:1px;left:-10px;width:10px;height:10px;content:"";background:url(https://www.mousehuntgame.com/images/ui/hud/meadow_checkmark.png?asset_cache_version=2) 0 0 no-repeat;background-size:contain;opacity:1}.icebergStatusTooltip .iceberg-section.incomplete{color:#488589}.icebergStatusTooltip .iceberg-section.current:before{position:absolute;top:1px;left:-7px;font-size:8px;color:#6aa9af;vertical-align:middle;content:"\\2022";border-radius:3px}.deep-warning{position:absolute;top:5px;bottom:5px;left:175px;z-index:3;display:flex;align-items:center;justify-content:center;width:300px;padding:1em;color:#000;text-align:center;background-color:#ffbfbf;border-radius:10px;opacity:.8}.deep-warning-text{max-width:250px;font-size:11px;line-height:15px;color:#000;text-align:left}.icebergHud .timeline .resetIceberg{top:10px;right:25px;z-index:4;cursor:pointer}.icebergHud .timeline .resetIceberg:hover,.icebergHud .timeline .resetIceberg:focus{color:#a5cedf;opacity:1}.icebergHud .cutaway .wax .quantity,.icebergHud .cutaway .sticky .quantity{box-sizing:border-box;width:38px;padding:0;margin-top:22px;margin-left:4px;font-size:12px;font-weight:400;border-color:#89989e;border-radius:2px 2px 6px 6px}.icebergHud .cutaway .sticky .quantity{margin-top:26px}.icebergHud .cutaway .drill .quantity{top:28px;left:110px;font-size:14px;text-align:left;text-shadow:1px 1px #000}.iceberg-section.current{font-weight:900}.icebergHud .cutaway .depth{top:3px;z-index:4;padding-top:6px;background-color:#00000059;border-color:#8d98a0;border-radius:0}.icebergHud .cutaway .drill .heatContainer .heat{mix-blend-mode:overlay}.icebergStatusTooltip .hunts-wrapper strong{margin:0;font-size:11px;font-weight:900;line-height:1.125;text-align:center}.icebergStatusTooltip.mousehuntTooltip{pointer-events:all}.icebergStatusTooltip.mousehuntTooltip .mousehuntTooltip-arrow{top:70%;left:-24px;border-color:transparent #a4b5bf transparent transparent;border-width:12px}.icebergStatusTooltip.mousehuntTooltip .mousehuntTooltip-arrow:after{bottom:-10px;left:-8px;border-color:transparent #edf1f8 transparent transparent;border-width:10px}.icebergHud .cutaway .icebergContainer .label{font-size:12px}.icebergMap img{width:600px}.icebergHud .cutaway .drill .help b.warning{display:block}.icebergHud .cutaway .drill .help{width:400px}.icebergHud .timeline .waterline{bottom:-2px}\n'; } }); // src/modules/location-huds/iceberg/index.js var getSections, addProgressToQuestData, roundProgress, getTooltipText, addDeepWarning, hud5, makeMapScrollable, iceberg_default3; var init_iceberg3 = __esm({ "src/modules/location-huds/iceberg/index.js"() { init_utils2(); init_always_show_progress(); init_bob_iceberg(); init_styles69(); getSections = (quest) => { const sections = [ { name: "Treacherous Tunnels", where: "0-300ft", length: 300, complete: quest.complete.tunnels }, { name: "Brutal Bulwark", where: "300-600ft", length: 300, complete: quest.complete.bulwark }, { name: "Bombing Run", where: "600-1600ft", length: 1e3, complete: quest.complete.bombing }, { name: "The Mad Depths", where: "1600-1800ft", length: 200, complete: quest.complete.depths }, { name: "Icewing's Lair", where: "1800 ft", length: 0, complete: quest.complete.lair } ]; if (quest.isDeep) { sections.push({ name: "Hidden Depths", where: "1800-2000 ft", length: 200, complete: false }); } return sections; }; addProgressToQuestData = (data) => { const depth = data.progress; const remaining = { stage: 0, stagePercent: 0, total: 1800 - depth, totalPercent: depth / 1800 * 100, complete: { tunnels: false, bulwark: false, bombing: false, depths: false, lair: false }, isLair: false }; if (depth < 300) { remaining.stage = 300 - depth; remaining.stagePercent = remaining.stage / 300 * 100; } else if (depth < 600) { remaining.stage = 600 - depth; remaining.stagePercent = remaining.stage / 300 * 100; remaining.complete.tunnels = true; } else if (depth < 1600) { remaining.stage = 1600 - depth; remaining.stagePercent = remaining.stage / 1e3 * 100; remaining.complete.tunnels = true; remaining.complete.bulwark = true; } else if (depth < 1800) { remaining.stage = 1800 - depth; remaining.stagePercent = remaining.totalPercent; remaining.complete.tunnels = true; remaining.complete.bulwark = true; remaining.complete.bombing = true; } else { remaining.stage = 0; remaining.stagePercent = 0; remaining.isLair = true; remaining.complete.tunnels = true; remaining.complete.bulwark = true; remaining.complete.bombing = true; remaining.complete.depths = true; } if (data.isDeep) { remaining.stage = 200 - depth; remaining.stagePercent = depth / 200 * 100; remaining.totalPercent = remaining.stagePercent; remaining.progress = depth + 1800; } remaining.avg = data.progress / data.hunts; if (data.isDeep) { remaining.avg = (depth + 1800) / data.hunts; } remaining.stageHunts = Math.ceil(remaining.stage / remaining.avg); return Object.assign(data, remaining); }; roundProgress = (progress) => { if (Number.isNaN(progress)) { return 0; } if (progress >= 100) { return 100; } if (progress <= 0) { return 0; } const percent = progress.toFixed(2); if (percent.slice(-2) === "00") { return percent.slice(0, -2); } if (percent.slice(-1) === "0") { return percent.slice(0, -1); } return percent; }; getTooltipText = (quest) => { const wrapper = document.createElement("div"); wrapper.classList.add("mousehuntTooltip-content"); const progress = document.createElement("div"); progress.classList.add("hunts-wrapper"); const averageHunts = document.createElement("div"); averageHunts.classList.add("average-hunts"); averageHunts.innerText = `Avg. ${roundProgress(quest.avg)} ft/hunt`; progress.append(averageHunts); if (!quest.isLair) { const stageProgressPercent = makeElement("div", "stage-progress-percent"); makeElement("span", "progress-label", "Stage Progress: ", stageProgressPercent); makeElement("span", ["progress-label-short", "hidden"], "Stage: ", stageProgressPercent); makeElement("strong", "", `${roundProgress(quest.stagePercent)}%`, stageProgressPercent); progress.append(stageProgressPercent); if (!quest.isDeep) { const totalProgressPercent = makeElement("div", "total-progress-percent"); makeElement("span", "progress-label", "Total Progress: ", totalProgressPercent); makeElement("span", ["progress-label-short", "hidden"], "Total: ", totalProgressPercent); makeElement("strong", "", `${roundProgress(quest.totalPercent)}%`, totalProgressPercent); progress.append(totalProgressPercent); } } wrapper.append(progress); const sectionsWrapper = document.createElement("div"); sectionsWrapper.classList.add("iceberg-sections"); const sections = getSections(quest); let currentSection = false; sections.forEach((sectionData) => { if (quest.isDeep && sectionData.name !== "Hidden Depths") { sectionData.complete = true; } const section = document.createElement("div"); section.classList.add("iceberg-section", sectionData.complete ? "complete" : "incomplete"); if (!currentSection && !sectionData.complete) { section.classList.add("current"); currentSection = true; } const sectionName = document.createElement("div"); sectionName.classList.add("iceberg-section-name"); sectionName.innerText = sectionData.name; section.append(sectionName); const sectionLength = document.createElement("div"); sectionLength.classList.add("iceberg-section-length"); sectionLength.innerText = sectionData.where; section.append(sectionLength); sectionsWrapper.append(section); }); wrapper.append(sectionsWrapper); return wrapper; }; addDeepWarning = () => __async(void 0, null, function* () { const equippedBase = Number.parseInt(user.base_item_id) || 0; if (equippedBase === 899 || // Deep Freeze Base equippedBase === 3256 || // Iceberg Boiler Base equippedBase === 2392) { return; } const bases = yield getUserItems([ "deep_freeze_base", "iceberg_boiler_base", "ultimate_iceberg_base" ]); const equippableBases = []; let hasBase = false; bases.forEach((base) => { if (base.quantity > 0) { hasBase = true; equippableBases.push({ name: base.name, id: base.item_id }); } }); if (!hasBase) { return; } const appendTo = document.querySelector(".cutawayClippingMask"); if (!appendTo) { return; } const equippableBasesText = equippableBases.map((base, index) => { if (index === 0) { return base.name; } if (index === equippableBases.length - 1) { return `or ${base.name}`; } return base.name; }).join(" "); const warning = makeElement("div", "deep-warning"); const warningText = makeElement("div", "deep-warning-text", `To access the Hidden Depths, make sure you equip ${equippableBasesText}.`); const warningIcon = makeElement("img", "deep-warning-icon"); warningIcon.src = "https://www.mousehuntgame.com/images/ui/journal/pillage.gif?asset_cache_version=2"; warning.append(warningIcon); warning.append(warningText); const existingWarning = appendTo.querySelector(".deep-warning"); if (existingWarning) { existingWarning.replaceWith(warning); } else { appendTo.append(warning); } }); hud5 = () => __async(void 0, null, function* () { if ("iceberg" !== getCurrentLocation()) { return; } let quest = { progress: user.quests.QuestIceberg.user_progress || 0, hunts: user.quests.QuestIceberg.turns_taken || 0, chests: user.quests.QuestIceberg.chests || [], isDeep: user.quests.QuestIceberg.in_bonus || false }; const huntInfo = document.querySelector(".icebergHud .depth"); if (!huntInfo) { return; } quest = addProgressToQuestData(quest); if (!quest.isLair) { const remainingStageDistance = document.createElement("div"); remainingStageDistance.classList.add("remaining-stage-distance"); const destination = quest.isDeep ? "Deep" : "next stage"; if (quest.stage !== quest.total) { const feet = quest.stage.toLocaleString(); remainingStageDistance.innerText = `${feet} feet until ${destination}`; if (quest.stageHunts > 0) { remainingStageDistance.innerText += ` (~${quest.stageHunts} hunts)`; } } const existingStage = huntInfo.querySelector(".remaining-stage-distance"); if (existingStage) { existingStage.replaceWith(remainingStageDistance); } else { huntInfo.insertBefore(remainingStageDistance, huntInfo.lastChild); } } if (!quest.isLair && !quest.isDeep) { const remainingDistance = document.createElement("div"); remainingDistance.classList.add("remaining-distance"); if (quest.total !== 0) { const feet = quest.total.toLocaleString(); remainingDistance.innerText = `${feet} feet until Icewing's Lair`; if (quest.totalHunts > 0) { remainingDistance.innerText += `(~${quest.totalHunts} hunts)`; } } const existingDistance = huntInfo.querySelector(".remaining-distance"); if (existingDistance) { existingDistance.replaceWith(remainingDistance); } else { huntInfo.insertBefore(remainingDistance, huntInfo.lastChild); } } huntInfo.classList.add("mousehuntTooltipParent"); const tooltip = makeElement("div", "icebergStatusTooltip"); tooltip.classList.add("mousehuntTooltip", "right", "noEvents"); const tooltipContent = getTooltipText(quest); const existingTooltip = huntInfo.querySelector(".icebergStatusTooltip"); tooltip.append(tooltipContent); makeElement("div", "mousehuntTooltip-arrow", "", tooltip); if (existingTooltip) { existingTooltip.replaceWith(tooltip); } else { huntInfo.append(tooltip); } if (quest.isLair) { addDeepWarning(); } }); makeMapScrollable = () => { const map = document.querySelector(".icebergHud .timeline .icebergContainer .iceberg"); if (!map) { return; } map.addEventListener("mouseenter", () => { const startingTop = map.style.top.replace("px", ""); const scrollListener = (event) => { event.preventDefault(); const scrollAmount = event.deltaY; const newTop = Number.parseInt(startingTop, 10) - scrollAmount; map.style.top = `${newTop}px`; }; map.addEventListener("wheel", scrollListener); map.addEventListener("mouseleave", () => { map.style.top = `${startingTop}px`; map.removeEventListener("wheel", scrollListener); }); }); }; iceberg_default3 = () => __async(void 0, null, function* () { let stylesToUse = styles_default68 + bob_iceberg_default; if (getFlag("iceberg-always-show-progress")) { stylesToUse += always_show_progress_default; } addHudStyles(stylesToUse); hud5(); onTurn(hud5, 1e3); onRequest("environment/iceberg.php", hud5); makeMapScrollable(); }); } }); // src/modules/location-huds/jungle-of-dread/index.js var jungle_of_dread_default; var init_jungle_of_dread = __esm({ "src/modules/location-huds/jungle-of-dread/index.js"() { init_cheese_selectors(); jungle_of_dread_default = () => __async(void 0, null, function* () { cheese_selectors_default("jungle-of-dread", [ "vanilla_stilton_cheese", "vengeful_vanilla_stilton_cheese", "spicy_havarti_cheese", "pungent_havarti_cheese", "creamy_havarti_cheese", "magical_havarti_cheese", "crunchy_havarti_cheese", "sweet_havarti_cheese" ]); }); } }); // src/modules/location-huds/kings-arms/index.js var kings_arms_default; var init_kings_arms = __esm({ "src/modules/location-huds/kings-arms/index.js"() { init_cheese_selectors(); kings_arms_default = () => __async(void 0, null, function* () { cheese_selectors_default("kings-arms", ["gilded_cheese"]); }); } }); // src/modules/location-huds/kings-gauntlet/index.js var kings_gauntlet_default; var init_kings_gauntlet = __esm({ "src/modules/location-huds/kings-gauntlet/index.js"() { init_cheese_selectors(); kings_gauntlet_default = () => __async(void 0, null, function* () { cheese_selectors_default("kings-gauntlet", [ "super_brie_cheese", "gauntlet_cheese_2", "gauntlet_cheese_3", "gauntlet_cheese_4", "gauntlet_cheese_5", "gauntlet_cheese_6", "gauntlet_cheese_7", "gauntlet_cheese_8" ]); }); } }); // src/modules/location-huds/laboratory/styles.css var styles_default69; var init_styles70 = __esm({ "src/modules/location-huds/laboratory/styles.css"() { styles_default69 = ".laboratoryHUD .mousehuntItem-image{background-color:transparent}.laboratoryHUD .laboratoryHUD-areaBaitContainer .mousehuntItem-image{box-sizing:border-box;width:64px;height:64px;margin-top:-4px;margin-left:-5px;background-color:#d0e9ec;border:1px solid #d0e9ec;outline:5px solid #d0e9ec;box-shadow:none}.laboratoryHUD .mousehuntItem-quantity.quantity{padding:3px 4px;font-size:12px}.laboratoryHUD .laboratoryHUD-basicBaitContainer .mousehuntItem-image{background-color:#a6c0c4}.laboratoryHUD-state{text-shadow:0 1px 3px #000}.laboratoryHUD-basicBaitContainer .mousehuntTooltip>div{display:flex;justify-content:center}.laboratoryHUDArmNowButton.active{filter:hue-rotate(90deg)}.laboratoryHUD-basicBaitContainer .mousehuntTooltip{width:180px}\n"; } }); // src/modules/location-huds/laboratory/index.js var laboratory_default; var init_laboratory = __esm({ "src/modules/location-huds/laboratory/index.js"() { init_utils2(); init_styles70(); laboratory_default = () => __async(void 0, null, function* () { addHudStyles(styles_default69); }); } }); // src/modules/location-huds/labyrinth/styles.css var styles_default70; var init_styles71 = __esm({ "src/modules/location-huds/labyrinth/styles.css"() { styles_default70 = '.mh-ui-labyrinth-step-counter{padding-right:5px;margin-left:5px;font-weight:900;background-color:#000}.labyrinthHUD-clueBar-totalContainer{z-index:10;width:auto;padding-left:4px;font-size:12px;border-radius:6px;outline:2px solid #000}.labyrinthHUD-clue{display:flex;align-items:center;justify-content:flex-start;font-size:12px}.labyrinthHUD-clue-name{overflow:visible;text-overflow:unset}.mh-ui-labyrinth-clue-count{padding-left:4px;font-weight:900;color:#050505}.y .labyrinthHUD-clue-name,.y .mh-ui-labyrinth-clue-count{background-color:#d851ff66}.h .labyrinthHUD-clue-name,.h .mh-ui-labyrinth-clue-count{background-color:#21e2ff66}.s .labyrinthHUD-clue-name,.s .mh-ui-labyrinth-clue-count{background-color:#e9630066}.t .labyrinthHUD-clue-name,.t .mh-ui-labyrinth-clue-count{background-color:#ffe40066}.f .labyrinthHUD-clue-name,.f .mh-ui-labyrinth-clue-count{background-color:#11f40066}.m .labyrinthHUD-clue-name,.m .mh-ui-labyrinth-clue-count{color:#d3c5c5;background-color:#6a6a6a66}.labyrinthHUD-item-quantity,.labyrinthHUD-scrambleDoors-quantity,.labyrinthHUD-scrambleClues-quantity,.labyrinthHUD-toggleLantern-quantity.quantity{position:absolute;top:6px;padding:0 5px;font-size:12px;text-align:center;background-color:#000;border-radius:5px}.labyrinthHUD-item-quantity.quantity{top:6px;left:5px;display:block;width:30px;margin:0!important}.labyrinthHUD-scrambleDoors-quantity,.labyrinthHUD-scrambleClues-quantity,.labyrinthHUD-toggleLantern-quantity.quantity{display:inline-flex;align-items:center;width:auto;height:18px;margin-right:11px}.labyrinthHUD-scrambleClues-quantity.quantity{left:-6px}.labyrinthHUD-toggleLantern-quantity.quantity{right:-5px}.labyrinthHUD-scrambleDoors-quantity.quantity{top:.5px;right:-7px;height:9.5px;padding:4px;pointer-events:none}.labyrinthHUD-scrambleClues:hover .labyrinthHUD-scrambleClues-name,.labyrinthHUD-scrambleClues.disabled .labyrinthHUD-scrambleClues-name,.labyrinthHUD-scrambleClues:focus .labyrinthHUD-scrambleClues-name,.labyrinthHUD-scrambleClues-name{position:relative;left:75px;width:0;color:transparent!important;text-shadow:none;pointer-events:none}.labyrinthHUD-scrambleClues-name:after{position:absolute;top:0;right:-30px;display:block;width:50px;color:#eee;text-align:center;text-shadow:0 0 1px #000;content:"Compass Magnet"}.labyrinthHUD-item:nth-child(1) .labyrinthHUD-item-name,.labyrinthHUD-item:nth-child(2) .labyrinthHUD-item-name,.labyrinthHUD-item:nth-child(3) .labyrinthHUD-item-name,.labyrinthHUD-item:nth-child(4) .labyrinthHUD-item-name,.labyrinthHUD-item:nth-child(5) .labyrinthHUD-item-name{width:96px;margin-left:47px;font-size:11px;font-weight:900;text-align:center;text-shadow:0 0 1px #000;background:linear-gradient(180deg,#70707000,#a8a8a8,#70707000);border-radius:20px}.labyrinthHUD-item:hover .labyrinthHUD-item-location,.labyrinthHUD-item:focus .labyrinthHUD-item-location{position:absolute;top:unset;bottom:-25px;padding:3px;font-size:9px;color:#000;text-align:center;background:#fff;border:2px solid #000;border-radius:10px;box-shadow:2px 3px 4px #666}.mh-ui-labyrinth-door-text{position:absolute;inset:0;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:#fff;opacity:.8}.mh-ui-laby-steps{margin-bottom:3px;font-size:13px}.labyrinthHUD-doorContainer{position:relative}.labyrinthHUD-door.disabled.mystery{filter:brightness(.4)}.labyrinthHUD-door.mh-ui-labyrinth-highlight{filter:brightness(1.1)}.labyrinthHUD-door.mh-ui-labyrinth-highlight:before{position:absolute;top:5px;right:15px;z-index:1;width:25px;height:25px;overflow:hidden;content:"";background:url(https://www.mousehuntgame.com/images/ui/events/winter_hunt_2013/checkmark.png?asset_cache_version=2) no-repeat;background-size:contain}.labyrinthHUD-confirm-padding .labyrinthHUD-door.mh-ui-labyrinth-highlight:after{background:none}.labyrinthHUD-clueDrawer{padding-bottom:11px;font-size:11px}.labyrinthHUD-clueDrawer-description{padding:5px 0 10px;line-height:17px;color:#fafafa;text-align:center}.labyrinthHUD-clueDrawer-clue{margin:10px 0}.labyrinthHUD-clueDrawer-clue.tier-1 .labyrinthHUD-clueDrawer-exit.tier-1:after,.labyrinthHUD-clueDrawer-clue.tier-2 .labyrinthHUD-clueDrawer-exit.tier-2:after,.labyrinthHUD-clueDrawer-clue.tier-3 .labyrinthHUD-clueDrawer-exit.tier-3:after{background:none}.labyrinthHUD-clueDrawer-exit{top:0;bottom:0;width:1px;height:10px;background:#8d8d8d;border-radius:0}.labyrinthHUD-clueDrawer-bar{height:10px;border-radius:0;opacity:.9}.labyrinthHUD-clueDrawer-barFrame{margin-right:3px;border:1px solid #585858;border-radius:0}.y .labyrinthHUD-clueDrawer-name,.y .labyrinthHUD-clueDrawer-quantity{border-bottom:1px solid #d851ff}.h .labyrinthHUD-clueDrawer-name,.h .labyrinthHUD-clueDrawer-quantity{border-bottom:1px solid #21e2ff}.s .labyrinthHUD-clueDrawer-name,.s .labyrinthHUD-clueDrawer-quantity{border-bottom:1px solid #e96300}.t .labyrinthHUD-clueDrawer-name,.t .labyrinthHUD-clueDrawer-quantity{border-bottom:1px solid #ffe400}.f .labyrinthHUD-clueDrawer-name,.f .labyrinthHUD-clueDrawer-quantity{border-bottom:1px solid #11f400}.labyrinthHUD-clueDrawer-name{padding-left:3px;margin-right:-3px}.labyrinthHUD-clueDrawer-quantity{padding-right:3px;margin-left:-3px}.hudLocationContent a.labyrinthHUD-retreatButton{color:#707070!important;background-color:#0000007f}.hudLocationContent a.labyrinthHUD-retreatButton:hover{color:#eee!important}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.bad:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_1:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_2:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_3:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_4:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_5:after,.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_6:after{position:absolute;top:0;right:0;left:0;display:inline-flex;align-items:center;justify-content:center;height:100%;font-size:15px;font-weight:900;color:#000;text-align:center;text-shadow:0 0 4px #c7ffad;content:""}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete:after{color:#343434;text-shadow:none;content:"0"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.bad:after{color:#c69898;text-shadow:none;content:"1"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_1:after{content:"1"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_2:after{content:"2"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_3:after{content:"3"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_4:after{content:"4"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_5:after{content:"5"}.labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete.good_6:after{content:"6"}.labyrinthHUD-hallway-tile.active{z-index:6;outline:1px solid #bbf8fa}.mh-ui-labyrinth-lantern-reminder{position:absolute;bottom:0;left:-8px;width:75px;height:75px;background:url(https://www.mousehuntgame.com/images/items/stats/transparent_thumb/d1c4774c7afebe379bef83d30b81f069.png?cv=2) 0 0 no-repeat;filter:drop-shadow(1px 0 8px #f6eac3);background-size:contain;transform-origin:bottom;animation:mh-improved-shake-light 1s ease-out 1}.labyrinthHUD-toggleLantern-name.active{animation:portalPulse 1.5s infinite}@media (prefers-reduced-motion: reduce){.mh-ui-labyrinth-lantern-reminder,.labyrinthHUD-toggleLantern-name.active{animation:none}}.labyrinthHUD-clueDrawer-barPadding{padding:1px 4px 0 1px}.labyrinthHUD-confirmDescription.chooseDoor b{font-size:13px}.labyrinthHUD-scrambleClues.disabled .labyrinthHUD-scrambleClues-name,.labyrinthHUD-scrambleClues.disabled:hover .labyrinthHUD-scrambleClues-name{color:transparent!important;text-shadow:none}a.labyrinthHUD-door.labyrinthHUD-door-category-y:after,a.labyrinthHUD-door.labyrinthHUD-door-category-h:after,a.labyrinthHUD-door.labyrinthHUD-door-category-s:after,a.labyrinthHUD-door.labyrinthHUD-door-category-t:after,a.labyrinthHUD-door.labyrinthHUD-door-category-f:after{position:absolute;right:19px;bottom:4px;left:19px;padding:1px 2px 0;font-size:13px;text-align:center;text-shadow:0 1px 1px #3d3d3d;content:"";background-color:#50306a;border-radius:1px;box-shadow:inset 0 0 4px #636363}a.labyrinthHUD-door.labyrinthHUD-door-category-y:after{content:"Fealty";background-color:#d851ff99}a.labyrinthHUD-door.labyrinthHUD-door-category-h:after{content:"Tech";background-color:#21e2ff99}a.labyrinthHUD-door.labyrinthHUD-door-category-s:after{content:"Scholar";background-color:#e9630099}a.labyrinthHUD-door.labyrinthHUD-door-category-t:after{font-size:11px;content:"Treasury";background-color:#ffe40099}a.labyrinthHUD-door.labyrinthHUD-door-category-f:after{font-size:12px;content:"Farming";background-color:#11f40099}.labyrinthHUD-door-name-padding span{margin-top:-25px}.labyrinthHUD-door-image:after{filter:drop-shadow(0 1px 1px #242424);transform:scale(1.5)}.labyrinthHUD-hallway-background{filter:brightness(1.2)}.labyrinthHUD-clueBar-totalContainer.mh-ui-labyrinth-100clues{background-color:#479f49}.mh-ui-labyrinth-tile-clicked{opacity:0;transition:opacity .3s ease}.mh-ui-labyrinth-tile-clicked-fade-in{opacity:1}.labyrinthHUD-secretContainer{font-weight:900;background-color:transparent;border:none;box-shadow:none;mix-blend-mode:overlay}.labyrinthHUD-confirmDescription .labyrinthHUD-exit{top:-4px}\n'; } }); // src/modules/location-huds/labyrinth/index.js var highlightDoors, scrambleGems, expandClueBar, addLanternReminder, updateDoorText, highlight100Clues, highlightTileForMinigame, minigame, refreshHud, labyrinth_default4; var init_labyrinth4 = __esm({ "src/modules/location-huds/labyrinth/index.js"() { init_utils2(); init_styles71(); highlightDoors = () => { var _a, _b; if ("intersection" !== ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestLabyrinth) == null ? void 0 : _b.status)) { return; } const existingHighlight = document.querySelector(".mh-ui-labyrinth-highlight"); if (existingHighlight) { existingHighlight.classList.remove("mh-ui-labyrinth-highlight"); } const clues = user.quests.QuestLabyrinth.clues || []; const clue = clues.reduce((a, b) => a.quantity > b.quantity ? a : b); if (clue) { const doors = user.quests.QuestLabyrinth.doors || []; const matchingDoors = doors.filter((door) => { if (door.choice && door.choice.length) { return door.choice.includes(clue.type); } return false; }); if (!matchingDoors.length) { return; } const bestDoor = matchingDoors.reduce((a, b) => a.choice.length > b.choice.length ? a : b); if (bestDoor) { const highlight = document.querySelector(`.labyrinthHUD-door.${bestDoor.css_class.replaceAll(" ", ".")}`); if (highlight) { highlight.classList.add("mh-ui-labyrinth-highlight"); } } } }; scrambleGems = () => { const gems = document.querySelectorAll(".labyrinthHUD-scrambleGem"); if (!gems) { return; } gems.forEach((gem) => { gem.removeAttribute("onclick"); gem.addEventListener("click", () => { gems.forEach((g) => { hg.views.HeadsUpDisplayLabyrinthView.labyrinthScrambleGem(g, 2); }); }); }); }; expandClueBar = () => { const clueProgresses = document.querySelectorAll(".mh-ui-labyrinth-clue-count"); if (clueProgresses) { clueProgresses.forEach((progress) => { progress.remove(); }); } const clueProgress = document.querySelectorAll(".labyrinthHUD-clue"); if (clueProgress) { clueProgress.forEach((progress) => { const clueType = progress.classList.value.replace("labyrinthHUD-clue", "").replace("clueFound", "").trim(); const clues = user.quests.QuestLabyrinth.clues || []; const clue = clues.find((c) => c.type === clueType); if (clue) { progress.setAttribute("title", `${clue.quantity} found`); const text = makeElement("span", "mh-ui-labyrinth-clue-count", `${clue.quantity}`); progress.append(text); } }); } }; addLanternReminder = () => { var _a, _b, _c, _d; if ("inactive" === ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestLabyrinth) == null ? void 0 : _b.lantern_status) && ((_d = (_c = user == null ? void 0 : user.quests) == null ? void 0 : _c.QuestLabyrinth) == null ? void 0 : _d.hallway_tier) >= 2) { setTimeout(() => { const existingLanternReminder = document.querySelector(".mh-ui-labyrinth-lantern-reminder"); if (existingLanternReminder) { existingLanternReminder.classList.remove("hidden"); } const labyHud = document.querySelector(".labyrinthHUD-intersection"); if (labyHud) { const lanternReminder = document.createElement("div"); lanternReminder.classList.add("mh-ui-labyrinth-lantern-reminder"); labyHud.append(lanternReminder); } }, 500); } }; updateDoorText = () => { var _a, _b; const doorTextExisting = document.querySelector(".mh-ui-labyrinth-door-text"); if (doorTextExisting) { doorTextExisting.remove(); } const appendTo = document.querySelector(".labyrinthHUD-hallwayDescription"); if (!appendTo) { return; } const existing = document.querySelector(".mh-ui-labyrinth-step-counter"); if (existing) { existing.remove(); } const existingStepsToGo = document.querySelector(".mh-ui-labyrinth-steps-to-go"); if (existingStepsToGo) { existingStepsToGo.remove(); } const hallwayLength = user.quests.QuestLabyrinth.hallway_length || 0; const tiles = user.quests.QuestLabyrinth.tiles || []; const completed = tiles.filter((tile) => tile.status.includes("complete")); if (completed.length !== hallwayLength) { makeElement("span", "mh-ui-labyrinth-step-counter", `${completed.length}/${hallwayLength} steps completed.`, appendTo); } const stepsToGo = hallwayLength - completed.length; const existingIntersectionText = document.querySelector(".mh-ui-labyrinth-door-text"); if (existingIntersectionText) { existingIntersectionText.remove(); } const stepsExisting = document.querySelector(".mh-ui-laby-steps"); if (stepsExisting) { stepsExisting.remove(); } const cptExisting = document.querySelector(".mh-ui-laby-cpt"); if (cptExisting) { cptExisting.remove(); } if (stepsToGo !== 0) { const intersectionDoors = document.querySelector(".labyrinthHUD-doorContainer"); if (intersectionDoors) { const tilesWithClues = tiles.filter((tile) => tile.status.includes("good")); const cluesFound = tilesWithClues.reduce((a, b) => a + Number.parseInt(b.status.replace("complete", "").replace("good_", "").trim()), 0); const cluesPerTile = (cluesFound / completed.length).toFixed(1).replace(".0", ""); const intersectionText = makeElement("div", "mh-ui-labyrinth-door-text"); let stepsNoun = "hunt"; if (stepsToGo > 1 || stepsToGo < 1) { stepsNoun = "hunts"; } makeElement("div", "mh-ui-laby-steps", `${stepsToGo} ${stepsNoun} left in the hallway`, intersectionText); if (cluesPerTile !== "NaN") { let clueNoun = "clue"; if (cluesPerTile > 1 || cluesPerTile < 1) { clueNoun = "clues"; } makeElement("div", "mh-ui-laby-cpt", `Avg. ${cluesPerTile} ${clueNoun} per tile`, intersectionText); } intersectionDoors.append(intersectionText); } } if ("intersection" === ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestLabyrinth) == null ? void 0 : _b.status)) { highlightDoors(); } }; highlight100Clues = () => { var _a; const clues = document.querySelector(".labyrinthHUD-clueBar-totalContainer"); if (!clues) { return; } if (Number.parseInt(((_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestLabyrinth.total_clues) || 0) < 100) { clues.classList.remove("mh-ui-labyrinth-100clues"); } else { clues.classList.add("mh-ui-labyrinth-100clues"); } }; highlightTileForMinigame = (tile) => { var _a, _b; tile.classList.add("mh-ui-labyrinth-tile-clicked"); const id = tile.getAttribute("data-index"); const length = ((_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestLabyrinth) == null ? void 0 : _b.hallway_length) || 10; const degree = id / length * 360; tile.style.filter = `brightness(1.5) hue-rotate(${Math.floor(degree)}deg)`; setTimeout(() => { tile.classList.add("mh-ui-labyrinth-tile-clicked-fade-in"); }, 100); setTimeout(() => { tile.style.filter = "brightness(1) hue-rotate(0deg)"; }, 500); setTimeout(() => { tile.classList.remove("mh-ui-labyrinth-tile-clicked-fade-in"); tile.classList.remove("mh-ui-labyrinth-tile-clicked"); tile.style.filter = ""; }, 510); }; minigame = () => __async(void 0, null, function* () { const tiles = document.querySelectorAll(".labyrinthHUD-hallway-tile"); if (!tiles) { return; } let highlightOnMouseover = false; tiles.forEach((tile) => { const mouseoverHandler = () => { if (!highlightOnMouseover) { return; } highlightTileForMinigame(tile); }; if ([...tile.classList].includes("active")) { tile.addEventListener("click", () => { let delay = 0; tiles.forEach((t) => { setTimeout(() => { highlightTileForMinigame(t); }, delay); delay += 50; }); }); } else { tile.addEventListener("mouseover", mouseoverHandler); tile.addEventListener("click", () => { tile.removeEventListener("mouseover", mouseoverHandler); highlightOnMouseover = !highlightOnMouseover; highlightTileForMinigame(tile); }); } }); }); refreshHud = () => __async(void 0, null, function* () { if ("labyrinth" !== getCurrentLocation()) { return; } expandClueBar(); updateDoorText(); highlight100Clues(); minigame(); }); labyrinth_default4 = () => __async(void 0, null, function* () { addHudStyles(styles_default70); scrambleGems(); refreshHud(); addLanternReminder(); onRequest("*", refreshHud); onTurn(refreshHud, 1e3); }); } }); // src/modules/location-huds/lagoon/index.js var lagoon_default; var init_lagoon = __esm({ "src/modules/location-huds/lagoon/index.js"() { init_cheese_selectors(); lagoon_default = () => __async(void 0, null, function* () { cheese_selectors_default("lagoon", ["gnarled_cheese", "wicked_gnarly_cheese"]); }); } }); // src/modules/location-huds/meditation-room/index.js var meditation_room_default; var init_meditation_room = __esm({ "src/modules/location-huds/meditation-room/index.js"() { init_cheese_selectors(); meditation_room_default = () => __async(void 0, null, function* () { cheese_selectors_default("meditation-room", [ "combat_cheese", "glutter_cheese", "susheese_cheese" ]); }); } }); // src/modules/location-huds/mountain/styles.css var styles_default71; var init_styles72 = __esm({ "src/modules/location-huds/mountain/styles.css"() { styles_default71 = ".mountainHUD-boulder-health-percent{display:flex;align-items:center;justify-content:space-evenly}.mountainHUD-boulder-health-percent span{font-size:12px}.mountainHUD-boulder-health-progressBar span{top:-2px;bottom:-2px;box-shadow:inset 0 0 2px 1px #000}.mountainHUD-boulder-state,.mousehuntItem.mountainHUD-conduit-charm .mousehuntItem-image{transition:.2s ease-in}.mountainHUD-boulder:hover .mountainHUD-boulder-state{filter:brightness(.9);transform:translateY(4px)}.mountainHUD-boulderHelper{top:3px;left:128px;width:76px;font-size:11px}.mountainHUD-conduit-charm .mousehuntItem-image{background-color:#835327;background-size:80px;border-radius:0;box-shadow:-1px -1px #835327}.mountainHUD-conduit-charm .mousehuntItem-image:after{border:none;border-radius:40px}.mountainHUD-conduit-charm:hover .mousehuntItem-image{background-size:100px;transform:rotate(5deg)}.mountainHUD-conduit-power{padding-left:19px;font-size:15px}.mountainHUD-conduit-power:after{top:-2px;width:20px;height:21px;padding-right:5px;background-size:20px}.mountainHUD-conduit-suggestions .mousehuntItem-quantity{right:0;bottom:-11px;left:0;font-size:12px;border:1px solid #858585}.mountainHUD-footer-item .mousehuntItem-image{width:25px;height:25px;background-color:transparent}.mountainHUD-footer-item .mousehuntItem-image,.mountainHUD-phaseContainer .mousehuntItem-image,.mountainHUD-conduit-suggestions .mousehuntItem-image{background-color:transparent;background-size:cover;box-shadow:none}.mountainHUD-conduit-suggestions .mousehuntItem-image{background-size:125%}.mountainHUD-footer-item .mousehuntItem-image:after,.mountainHUD-phaseContainer .mousehuntItem-image:after{border:none}.mountainHUD-footer-item .mousehuntItem-quantity{bottom:4px;font-size:12px;background-color:#de9c5f;box-shadow:inset 0 0 3px 2px #835327}.mountainHUD-footer-item-name{font-size:10px}.mountainHUD-footer-item:nth-child(1) .mountainHUD-footer-item-name{font-size:10px;line-height:10px}.mountainHUD-footer-item:nth-child(2) .mountainHUD-footer-item-name{width:82px;margin-left:24px;font-size:12px}.mountainHUD-footer-item:nth-child(3) .mountainHUD-footer-item-name{font-size:12px}.mountainHUD-footer-item:nth-child(4) .mountainHUD-footer-item-name{font-size:9px}.mountainHUD-footer-item:nth-child(5) .mountainHUD-footer-item-name{width:80px;margin-left:27px;font-size:11px}.mountainHUD-footer-item .mousehuntItem.disabled .mousehuntItem-image{filter:opacity(.3)}.mountainHUD-phase-description{line-height:10px}.mountainHUD-phase-title span{font-size:10px;font-variant:none;text-shadow:1px 1px 2px #000}.mountainHUD-phaseContainer .mousehuntItem-quantity.quantity{font-size:12px;border:1px solid #858585}.mountainHUD.none .mountainHUD-conduit-charm .mousehuntItem-image{border-radius:50%}.mousehuntItem.mountainHUD-conduit-charm{background-color:#835327}.mountainHUD-conduit .mousehuntItem.disabled{height:auto;background-color:#5f3e1f}.mountainHUD-conduit .mousehuntItem-image.disabled:after{border:none}.mountainHUD-conduit .mousehuntItem.disabled .mousehuntItem-quantity{display:none}.mountainHUD-conduit-suggestion-item .mousehuntTooltip{font-size:12px}.mountainHUD-conduit-suggestions .mousehuntItem-image.power_trinket{background-image:url(https://www.mousehuntgame.com/images/items/trinkets/large/b0fb665f8649eb72432c66b0575c9516.png)}.mountainHUD-conduit-suggestions .mousehuntItem-image.super_power_trinket{background-image:url(https://i.mouse.rip/upscaled/625bef6da38dc44ddcd70d0da47244ae.png)}.mountainHUD-conduit-suggestions .mousehuntItem-image.weak_power_trinket{background-image:url(https://www.mousehuntgame.com/images/items/trinkets/large/47a2b0f87d6ec8a9d86f39417a619f85.png)}.active .mousehuntItem-image.power_trinket{box-shadow:0 0 5px 3px #00e505 inset}.mountainHUD-minibossHelper{padding:2px;margin-left:-3px;font-size:10px}.mountainHUD-mouse{transition:.2s ease-in ease-out;transform-origin:bottom;will-change:transform}.mountainHUD-mouse:nth-child(1):hover{transform:scale(1.1) rotate(-3deg)}.mountainHUD-mouse:nth-child(2):hover{transform:scale(1.1)}.mountainHUD-mouse:nth-child(3):hover{transform:scale(1.1) rotate(3deg)}.mountainHUD-mouse .mountainHUD-mouse-image{border-radius:15px 15px 0 0}.mountainHUD-conduit-suggestions .mountainHUD-conduit-suggestion-item:hover .mousehuntItem-image{background-size:150%}.mountainHUD-miniBoulderContainer .mountainHUD-miniBoulder-health-percent{font-size:10px}.mountainHUD-miniBoulderContainer .mountainHUD-miniBoulder-health-percent span{font-size:12px}.mountainHUD-miniBoulderContainer .mountainHUD-miniBoulder-health-progressBar{top:7px;height:11px;background-color:#815026;box-shadow:inset 0 0 1px 1px #100802}.mountainHUD-miniBoulderContainer .mountainHUD-miniBoulder-health-progressBar span{box-shadow:inset 1px 0 2px 1px #000;transition:.2s ease-in}.mountainHUD-miniBoulder-state{filter:drop-shadow(0 0 1px #fff15b);transition:all .2s ease-out;transform-origin:center}.mountainHUD-miniBoulder-state:hover{filter:drop-shadow(0 0 3px #fff15b);transform:scale(1.4)}.mountainHUD-mouse-difficulty{font-size:13px}.mountainHUD-miniBoulderContainer .mountainHUD-miniBoulder-health-progressBar:hover span{filter:hue-rotate(105deg)}\n"; } }); // src/modules/location-huds/mountain/index.js var mountain_default; var init_mountain = __esm({ "src/modules/location-huds/mountain/index.js"() { init_utils2(); init_styles72(); mountain_default = () => __async(void 0, null, function* () { addHudStyles(styles_default71); }); } }); // src/modules/location-huds/mousoleum/styles.css var styles_default72; var init_styles73 = __esm({ "src/modules/location-huds/mousoleum/styles.css"() { styles_default72 = ".mousoleumHUD-buildWall.mousoleumHUD-wall-state{transform:scale(1.1)}.mousoleumHUD-bait .mousehuntItem-image{background-color:transparent}.mousoleumHUD-plankContainer{font-size:13px}.mousoleumHUD-plankContainer .mousoleumHUD-quantity{margin-left:-3px;font-size:12px;background:linear-gradient(90deg,#2f2f55,#0000);background-color:#2f2f55;border-radius:30px}\n"; } }); // src/modules/location-huds/mousoleum/index.js var spawnPlanks, main19, mousoleum_default3; var init_mousoleum3 = __esm({ "src/modules/location-huds/mousoleum/index.js"() { init_utils2(); init_styles73(); spawnPlanks = () => { const plankContainer = document.querySelector(".mousoleumHUD-plankContainer"); if (!plankContainer) { return; } plankContainer.addEventListener("click", () => { hg.views.HeadsUpDisplayMousoleumView.spawnShards(Math.floor(Math.random() * 20)); }); }; main19 = () => { spawnPlanks(); }; mousoleum_default3 = () => __async(void 0, null, function* () { addHudStyles(styles_default72); main19(); }); } }); // src/modules/location-huds/moussu-picchu/styles.css var styles_default73; var init_styles74 = __esm({ "src/modules/location-huds/moussu-picchu/styles.css"() { styles_default73 = ".moussuPicchuHUD-torchQuantity.quantity{font-size:12px;background-color:#fff;border-radius:4px}.moussuPicchuHUD .mousehuntItem-quantity.quantity{right:0;bottom:-8px;left:0;font-size:11px}.moussuPicchuHUD-itemContainer{top:150px;right:7px;left:7px;background-color:#320717;border-radius:5px;box-shadow:0 -7px #320717}a.moussuPicchuHUD-footer-item-action.mousehuntArmNowButton{top:8px;right:-1px;transform:scale(.8)}.moussuPicchuHUD-footer-item-name{width:auto;font-size:9px}.moussuPicchuHUD-footer-item.dragon_scale_crafting_item.mousehuntTooltipParent{width:20%}.moussuPicchuHUD-footer-item.gouda_cheese,.moussuPicchuHUD-footer-item.super_brie_cheese{width:26%}.moussuPicchuHUD-footer-item.glowing_gruyere_cheese{width:28%}.moussuPicchuHUD-itemBlock.mousehuntTooltipParent.dragon_bait{left:310px;display:flex;align-items:flex-end;justify-content:space-evenly;width:120px}.moussuPicchuHUD-powerType.moussuPicchuHUD-powerType{box-shadow:none}.moussuPicchuHUD-footer-item-tooltip-baitRow .mousehuntArmNowButton[data-item-type=swiss_cheese],.moussuPicchuHUD-footer-item-tooltip-baitRow .mousehuntArmNowButton[data-item-type=brie_cheese]{display:block}.moussuPicchuHUD-footer-item.dragon_scale_crafting_item .mousehuntTooltip{text-align:center}.moussuPicchuHUD-footer-item .mousehuntTooltip{bottom:130%}.moussuPicchuHUD-footer-item-image{width:30px;height:30px;background-color:transparent;background-size:cover}.moussuPicchuHUD-footer-item:nth-child(3) .mousehuntTooltip{right:-30px;left:-30px}.moussuPicchuHUD .mousehuntItem-image{width:38px;height:38px}.moussuPicchuHUD .mousehuntItem.active .mousehuntItem-image:after{box-shadow:inset 0 0 9px 2px #74e776}.moussuPicchuHUD-background{border-top-left-radius:25px;border-top-right-radius:25px;box-shadow:inset 0 5px 10px -2px #321c1e}.moussuPicchuHUD-background.wind{top:2px;left:8px}.moussuPicchuHUD-background.storm{top:3px;left:8px}.moussuPicchuHUD-powerTypeWarning.active.useless{right:200px;left:200px;padding:5px;color:#870808;background-color:#ffbfbf;border-color:#ff8a7c}.moussuPicchuHUD-powerType.wind,.moussuPicchuHUD-powerType.wind.active,.moussuPicchuHUD-powerType.rain,.moussuPicchuHUD-powerType.rain.active{filter:hue-rotate(90deg) opacity(.6);background-position:center;box-shadow:none}.moussuPicchuHUD-powerType.rain,.moussuPicchuHUD-powerType.rain.active{background-image:url(https://www.mousehuntgame.com/images/powertypes/shadow.png?asset_cache_version=2)}.moussuPicchuHUD-powerType.wind,.moussuPicchuHUD-powerType.wind.active{background-image:url(https://www.mousehuntgame.com/images/powertypes/arcane.png?asset_cache_version=2)}.moussuPicchuHUD-powerType.wind.active{filter:opacity(.8)}\n"; } }); // src/modules/location-huds/moussu-picchu/index.js var moussu_picchu_default2; var init_moussu_picchu2 = __esm({ "src/modules/location-huds/moussu-picchu/index.js"() { init_utils2(); init_styles74(); moussu_picchu_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default73); }); } }); // src/modules/location-huds/nerg-plains/index.js var nerg_plains_default; var init_nerg_plains = __esm({ "src/modules/location-huds/nerg-plains/index.js"() { init_cheese_selectors(); nerg_plains_default = () => __async(void 0, null, function* () { cheese_selectors_default("nerg-plains", ["gumbo_cheese"]); }); } }); // src/modules/location-huds/pinnacle-chamber/index.js var pinnacle_chamber_default; var init_pinnacle_chamber = __esm({ "src/modules/location-huds/pinnacle-chamber/index.js"() { init_cheese_selectors(); pinnacle_chamber_default = () => __async(void 0, null, function* () { cheese_selectors_default("pinnacle-chamber", [ "maki_cheese", "onyx_gorgonzola_cheese" ]); }); } }); // src/modules/location-huds/pollution-outbreak/styles.css var styles_default74; var init_styles75 = __esm({ "src/modules/location-huds/pollution-outbreak/styles.css"() { styles_default74 = '.pollutionOutbreakHUD-item-image{height:29px;padding:2px 0;margin:0;background-position:top;background-size:contain;box-shadow:none}.pollutionOutbreakHUD-timer{top:2px;bottom:unset;left:17px;z-index:29;padding:2px 7px 2px 3px;font-size:12px;border-top:1px solid #999;border-radius:5px 0 10px 4px}.pollutionOutbreakHUD-totalPollution-direction-status{max-width:375px}.pollutionOutbreakHUD-hunters{top:4px;right:144px;left:unset;padding:2px 5px;font-size:12px;border-right:none;border-left:1px solid #999;border-radius:0 5px 0 10px}.pollutionOutbreakHUD-timer,.pollutionOutbreakHUD-hunters,.pollutionOutbreakHUD-totalPollution-direction .mousehuntTooltip{background:#f4f4f4cc}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/50f10ec5c7bc01cb99af2003b30d400d.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/0567284d6e12aaaed35ca5912007e070.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/2e17d44079e1538b28409c05da497440.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/398dca9a8c7703de969769491622ca32.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/322d0b6d9527f1f09c0e213c2fc7abbe.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/9a6acd429a9a3a4849ed13901288b0b8.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/8ed26547b6ce5606faed7ce7d3494232.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/ea9c0ec2e6d3d81c14e61f5ce924d0e1.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/53f8ec71d1a26beec6277152afdcc9ba.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/dd11711a25b80db90e0306193f2e8d78.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/759a709a33a52b2fb70f0d6d994afc16.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/eb46ac1e8197b13299ab860f07d963db.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/56ff0615bc3f03729b1d2b2bb52693c1.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/87937fa96bbb3b2dd3225df883002642.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block-icon[style*="https://www.mousehuntgame.com/images/titles/e258cd2f5606d678cc0bba000b930500.png"]{background-image:url(https://www.mousehuntgame.com/images/titles/043efe31de4f0f2e0ddca590fe829032.png?cv=2)!important}.pollutionOutbreakHUD-pollution-title-block.active .pollutionOutbreakHUD-pollution-title-block-icon,.pollutionOutbreakHUD-pollution-title-block .pollutionOutbreakHUD-pollution-title-block-icon,.pollutionOutbreakHUD-pollution-title-block.complete .pollutionOutbreakHUD-pollution-title-block-icon{top:0;left:-1px;width:13px;height:15px;background-color:#9b9d9d;background-position:center;background-size:contain;border-radius:0}.pollutionOutbreakHUD-pollution-title-block-name{right:3px;left:16px;font-size:11px;line-height:19px;text-align:center}.pollutionOutbreakHUD-pollution-title-block-icon{top:-2px;left:1px;width:16px;height:15px;background-color:transparent;background-position:center;background-size:contain}.pollutionOutbreakHUD-layer{z-index:7}.pollutionOutbreakHUD-pollution-title-block-progressBar{background-color:#469d30bf;box-shadow:-3px 2px 1px #6a6969 inset}.pollutionOutbreakHUD-pollution-title-block.active .pollutionOutbreakHUD-pollution-title-block-progressBar:after{border:none}.pollutionOutbreakHUD-pollution-title-block.complete .pollutionOutbreakHUD-pollution-title-block-name{color:#d1d0cf;box-shadow:inset 0 2px 1px #6a6969}.pollutionOutbreakHUD-pollution-title-block.active .pollutionOutbreakHUD-pollution-title-block-progressBar{border-right:1px solid #a13427;border-radius:0;box-shadow:-1px 2px 1px #6a6969 inset}.pollutionOutbreakHUD-pollution-title-block.hero,.pollutionOutbreakHUD-pollution-title-block.knight,.pollutionOutbreakHUD-pollution-title-block.lord_lady,.pollutionOutbreakHUD-pollution-title-block.baron_baroness{width:60px!important}.pollutionOutbreakHUD-pollution-title-block.count_countess,.pollutionOutbreakHUD-pollution-title-block.duke_dutchess{width:75px!important}.pollutionOutbreakHUD-pollution-title-block.grand_duke{width:85px!important}.pollutionOutbreakHUD-pollution-title-block.archduke_archduchess{width:80px!important}.pollutionOutbreakHUD-refineQuantityContainer{font-weight:900}.pollutionOutbreakHUD-pollutinumContainer.active .pollutionOutbreakHUD-refineQuantityContainer,.pollutionOutbreakHUD-refineQuantityContainer{display:inline-block;width:21px;margin-right:0;line-height:17px;vertical-align:middle;background:#000;border:none;border-radius:3px;box-shadow:0 0 1px #3fa126 inset}.pollutionOutbreakHUD-scumContainer{padding-right:10px;padding-left:5px;background-color:#2a2a2a}.pollutionOutbreakHUD-scumContainer:after{display:none}.pollutionOutbreakHUD-scumContainer .quantity,.pollutionOutbreakHUD-scumContainer .maxQuantity{font-size:12px}span.pollutionOutbreakHUD-refineQuantity{font-size:12px;font-weight:900}a.pollutionOutbreakHUD-refineButton{top:0;width:52px;height:17px;margin-right:5px;background-position:0 center;background-size:100%;border:1px solid #000;border-radius:3px}a.pollutionOutbreakHUD-refineButton:hover{filter:sepia(1)}.pollutionOutbreakHUD-refineButton:after,.pollutionOutbreakHUD-refineButton.busy:before{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:#494949;content:"Refine";background-color:#95ff7e;border-radius:2px}.pollutionOutbreakHUD-refineButton.busy:after{display:none}.pollutionOutbreakHUD-refineButton.active:after{content:"Refining";background-color:#55edff}.pollutionOutbreakHUD-refineButton.busy{background-color:#d0f4f9}.pollutionOutbreakHUD-refineButton.busy:before{content:"\\b7\\b7\\b7";background-color:#d0f4f9}.pollutionOutbreakHUD-refineButton{background:none}.pollutionOutbreakHUD-pollution-title-block .mousehuntTooltip b.pollutionOutbreakHUD-pollution-title-block-gender{display:none!important}.pollutionOutbreakHUD-pollution-title-block .mousehuntTooltip{font-size:12px;text-align:center}.pollutionOutbreakHUD-layer-fog{display:none}.pollutionOutbreakHUD-totalPollution-direction .mousehuntTooltip{bottom:24px;left:3px;display:block;width:auto;padding:2px 5px;font-size:12px;background:url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png?asset_cache_version=2) top right;background-color:transparent;border-top:1px solid #999;border-right:1px solid #999;border-bottom:1px solid #999;border-left:none;border-radius:0 10px 0 2px;box-shadow:none;animation:none!important}.pollutionOutbreakHUD-totalPollution-direction .mousehuntTooltip-arrow{display:none}.pollutionOutbreakHUD-totalPollution-direction .mousehuntTooltip b{font-weight:400}.pollutionOutbreakHUD-item-quantity.quantity{margin-top:-1px;font-size:10px;line-height:15px;background-color:#333;border-top:none;border-radius:0 0 3px 3px;box-shadow:none}.pollutionOutbreakHUD-itemContainer{top:3px;right:14px}.pollutionOutbreakHUD-item-padding{margin:0 2px;border:1px solid #000;border-radius:6px}.pollutionOutbreakHUD-item{margin-top:1px}.pollutionOutbreakHUD-item.active .pollutionOutbreakHUD-item-padding:after{display:none}.pollutionOutbreakHUD-item:hover .pollutionOutbreakHUD-item-image,.pollutionOutbreakHUD-item:focus .pollutionOutbreakHUD-item-image{box-shadow:inset 0 0 25px 1px #63c833}.pollutionOutbreakHUD-item.active .pollutionOutbreakHUD-item-image a{z-index:1;border-top-left-radius:5px;border-top-right-radius:5px;box-shadow:inset 0 0 20px #8dd06c}.pollutionOutbreakHUD-item.active .pollutionOutbreakHUD-item-quantity.quantity,.pollutionOutbreakHUD-item.focus .pollutionOutbreakHUD-item-quantity.quantity,.pollutionOutbreakHUD-item:hover .pollutionOutbreakHUD-item-quantity.quantity{color:#bcf1a2}.pollutionOutbreakHUD-item:hover .pollutionOutbreakHUD-item-padding:after{border:none}.pollutionOutbreakHUD-pollution-title-block.hero:after{width:41px;content:"30 hrs"}.pollutionOutbreakHUD-pollution-title-block.knight:after{width:41px;content:"16 hrs"}.pollutionOutbreakHUD-pollution-title-block.lord_lady:after{width:41px;content:"18 hrs"}.pollutionOutbreakHUD-pollution-title-block.baron_baroness:after{width:41px;content:"18 hrs"}.pollutionOutbreakHUD-pollution-title-block.count_countess:after,.pollutionOutbreakHUD-pollution-title-block.duke_dutchess:after{width:56px;content:"1 day"}.pollutionOutbreakHUD-pollution-title-block.grand_duke:after{right:1px;width:67px;content:"1 day"}.pollutionOutbreakHUD-pollution-title-block.archduke_archduchess:after{right:0;width:62px;content:"1 day"}.pollutionOutbreakHUD-pollution-title-block:hover:after{display:flex}.pollutionOutbreakHUD-pollution-title-block.mousehuntTooltipParent:hover .mousehuntTooltip{display:none}.pollutionOutbreakHUD-pollution-title-block:after{position:absolute;top:-22px;right:1px;z-index:10;display:none;align-items:center;justify-content:center;width:20px;height:20px;font-size:12px;color:#ccc;text-align:center;text-shadow:1px 1px 1px #000;vertical-align:middle;content:"";background:linear-gradient(180deg,#1d1d1d,#242424);border-radius:10px 10px 0 0;box-shadow:0 1px #9b9d9d,0 2px #6a6969,0 0 0 2px #9b9d9d,0 1px 1px #6a6969 inset}.pollutionOutbreakHUD-pollution-title-block.complete:after,.pollutionOutbreakHUD-pollution-title-block.active:after{box-shadow:0 1px #9b9d9d,0 2px #6a6969,0 0 0 2px #9b9d9d,0 1px 1px #6a6969 inset}.pollutionOutbreakHUD-pollution-title-block.complete:after{background:#449830}.pollutionOutbreakHUD-pollution-title-block.active:after{background:#822515}.pollutionOutbreakHUD-totalPollution-direction-image{width:24px;height:22px;margin-left:-1px}.pollutionOutbreakHUD-pollution-title-block.active .pollutionOutbreakHUD-pollution-title-block-name{right:2px;font-weight:400}\n'; } }); // src/modules/location-huds/pollution-outbreak/index.js var pollution_outbreak_default2; var init_pollution_outbreak2 = __esm({ "src/modules/location-huds/pollution-outbreak/index.js"() { init_utils2(); init_styles75(); pollution_outbreak_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default74); }); } }); // src/modules/location-huds/prologue-pond/styles.css var styles_default75; var init_styles76 = __esm({ "src/modules/location-huds/prologue-pond/styles.css"() { styles_default75 = '.prologuePondView-chum-image{width:35px;height:35px;margin-top:-2px;filter:drop-shadow(0 0 2px #f378ff)}.prologuePondView-chum-quantity.quantity{padding:2px;font-size:14px}.prologuePondView-fishingBoat{top:30px;transition:.4s;transform:scale(1.2)}.prologuePondView-fishingBoat:hover{filter:brightness(1.2)}.prologuePondView-background-layer.water{top:19px;filter:brightness(.7);opacity:.6}.prologuePondView-background-layer.shore{top:25px;opacity:.7}.prologuePondView-currentLoot-value{font-size:12px;border-radius:4px;box-shadow:0 0 20px #000 inset}.prologuePondView-currentLoot-label{margin-bottom:3px}.prologuePondView-currentLoot{border:none}.prologuePondView-fishingBoat.forward .prologuePondView-fishingBoat-paperDoll{transform-origin:50% 40%;animation-duration:1.3s;animation-timing-function:ease-in-out}.disarmed .prologuePondView-fishingBoat-paperDoll{background-image:url(https://i.mouse.rip/mh-improved/boat-no-rod.png)}.prologuePondView-fishingBoat-paperDoll-layer.fish_net.active,.prologuePondView-fishingBoat-paperDoll-layer.fishing_rod.active{opacity:1;transition:.4s}.disarmed .prologuePondView-fishingBoat-paperDoll-layer.fish_net.active,.disarmed .prologuePondView-fishingBoat-paperDoll-layer.fishing_rod.active,.disarmed .prologuePondView-fishingBoat-paperDoll-layer.steam_reel.active,.disarmed .prologuePondView-fishingBoat-paperDoll-layer.fishing_line.active{opacity:0}.prologuePondView-chumDoober[style="top: 62px;"]{left:-96px}@keyframes mh-improved-boat-floating{0%{transform:translate(0)}50%{transform:translateY(3px)}to{transform:translate(0)}}@keyframes mh-improved-chum-floating{0%{transform:translate(0)}50%{transform:translateY(-5px)}to{transform:translate(0)}}.prologuePondView-chumDoober{filter:drop-shadow(-1px -1px 3px #526ba1) drop-shadow(-1px -1px 3px #526ba1) hue-rotate(94deg);animation-name:mh-improved-chum-floating;animation-duration:3s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}.prologuePondView-fishingBoat-paperDoll{animation-name:mh-improved-boat-floating;animation-duration:6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}@media screen and (prefers-reduced-motion: reduce){.prologuePondView-fishingBoat-paperDoll,.prologuePondView-chumDoober{animation:none}}.prologuePondView-chumDooberContainer .prologuePondView-chumDoober:nth-child(1){animation-delay:9s}.prologuePondView-chumDooberContainer .prologuePondView-chumDoober:nth-child(2){animation-delay:6s}.prologuePondView-chumDooberContainer .prologuePondView-chumDoober:nth-child(3){animation-delay:2s}.prologuePondView-chumDooberContainer .prologuePondView-chumDoober:nth-child(4){animation-delay:4s}.folkloreForestRegionView.stormy_water .prologuePondView-fishingBoat{left:220px}.folkloreForestRegionView.stormy_water .prologuePondView-background-layer.sky:after{top:30px;transform:scaleY(1.2);transform-origin:bottom}.prologuePondView-chumButton.active:after{background-image:url(https://i.mouse.rip/mh-improved/chum-lightning.png)}\n'; } }); // src/modules/location-huds/prologue-pond/index.js var addDisarmedClass, updatePondLootQuantity, prologue_pond_default; var init_prologue_pond = __esm({ "src/modules/location-huds/prologue-pond/index.js"() { init_utils2(); init_folklore_forest2(); init_styles58(); init_styles76(); addDisarmedClass = () => { const hud8 = document.querySelector("#hudLocationContent"); if (!hud8) { return; } if (user.bait_disarmed) { hud8.classList.add("disarmed"); } else { hud8.classList.remove("disarmed"); } }; updatePondLootQuantity = () => { var _a, _b, _c, _d, _e, _f; const lootMin = ((_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestProloguePond) == null ? void 0 : _b.current_loot_range) == null ? void 0 : _c.min) || 0; const lootMax = ((_f = (_e = (_d = user == null ? void 0 : user.quests) == null ? void 0 : _d.QuestProloguePond) == null ? void 0 : _e.current_loot_range) == null ? void 0 : _f.max) || 0; const lootMaxEl = document.querySelector(".prologuePondView-currentLoot-value-max"); if (!lootMaxEl) { return; } if (lootMin === lootMax) { lootMaxEl.classList.add("hidden"); } else { lootMaxEl.classList.remove("hidden"); } }; prologue_pond_default = () => __async(void 0, null, function* () { addHudStyles([styles_default57, styles_default75]); folklore_forest_default2(); addDisarmedClass(); onRequest("users/changetrap.php", addDisarmedClass); updatePondLootQuantity(); onRequest("environment/prologue_pond.php", updatePondLootQuantity); }); } }); // src/modules/location-huds/rift-bristle-woods/styles.css var styles_default76; var init_styles77 = __esm({ "src/modules/location-huds/rift-bristle-woods/styles.css"() { styles_default76 = '.riftBristleWoodsHUD-footer-item-quantity.quantity{top:30px;padding:2px 4px;font-size:12px}.riftBristleWoodsHUD-footer-item-tooltip-baitRow-image .riftBristleWoodsHUD-footer-item-quantity{top:15px;right:-3px;padding:0 3px;font-size:9px}.riftBristleWoodsHUD-footer-itemGroup.wide .riftBristleWoodsHUD-footer-item-image:first-child .riftBristleWoodsHUD-footer-item-quantity{top:27px}.riftBristleWoodsHUD-chamberProgressQuantity{top:71px;left:7px;z-index:1;width:50px;padding:0 6px;text-shadow:none;background-color:#fefae9;border-bottom-right-radius:10px;border-bottom-left-radius:10px;box-shadow:inset 1px -1px 3px 1px #d1caaa}.riftBristleWoodsHUD-portalEquipment.lootBooster .riftBristleWoodsHUD-footer-item-quantity{top:22px;right:unset;left:5px}.riftBristleWoodsHUD-footer-item-image.active.highlight{border-color:#03ff95;box-shadow:0 0 10px #00ec00 inset}.riftBristleWoodsHUD-chamberProgressBar span{filter:hue-rotate(53deg);box-shadow:-2px 1px 4px 1px #6e496d inset}.riftBristleWoodsHUD-portal.closed.disabled{filter:grayscale(1);opacity:.5}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ac.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ng.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ex.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.fr.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.st.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.un.active:after{position:absolute;top:38px;width:53px;padding:3px;margin-left:-17px;text-align:center;background-color:#338053;border:2px solid #00ff95;border-radius:7px 7px 10px 10px}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.fr.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.st.active:after,.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.un.active:after{margin-left:-45px;background-color:#623b2c;border:2px solid #d52a0b}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ac.active:after{content:"Influence"}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ng.active:after{text-decoration:line-through;content:"Paladins"}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.ex.active:after{content:"4 portals"}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.un.active:after{content:"No Luck"}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.fr.active:after{content:"Frozen"}.riftBristleWoodsHUD-statusEffect .riftBristleWoodsHUD-statusEffect-iconContainer .riftBristleWoodsHUD-statusEffect-icon.st.active:after{content:"Pursued"}.riftBristleWoodsHUD-acolyteChamber-sandDetails,.riftBristleWoodsHUD-acolyteChamber-acolyteChargeDetails{top:66px;left:404px;display:flex;flex-direction:column;align-items:center;padding:2px;font-size:13px;background-color:#3e1d11;border-width:2px}.riftBristleWoodsHUD-acolyteChamber-sandDetails{left:188px}.riftBristleWoodsHUD-acolyteChamber-obeliskPercent{margin-left:-2px;font-size:14px;font-weight:400;background-color:#6e460b}.riftBristleWoodsHUD-footer-item-tooltip-baitRow .mousehuntArmNowButton{display:block}.riftBristleWoodsHUD-chamberSpecificText.acolyte_chamber{color:#e8dbb8}a.riftBristleWoodsHUD-acolyteChamber-retreat.mousehuntActionButton.tiny.cancel{margin-top:6px;margin-left:51px;font-size:9px;box-shadow:none;opacity:.8}a.riftBristleWoodsHUD-acolyteChamber-retreat.mousehuntActionButton.tiny.cancel:hover{opacity:1}.riftBristleWoodsHUD-acolyteStats.bronze:after{position:absolute;top:1px;right:40px;width:20px;height:17px;padding:0 5px;content:"";background-color:#4b3d30;background-image:url(https://www.mousehuntgame.com//images/ui/crowns/crown_bronze.png?asset_cache_version=2);background-position:center;background-size:cover;border-radius:8px 8px 0 0;box-shadow:0 -1px 0 1px #5b5041}.riftBristleWoodsHUD-acolyteStats{top:-1px;right:0;box-sizing:border-box;padding:0 5px;background-color:#4b3d30;background-blend-mode:multiply;border:1px solid #5b5041;border-bottom:none;border-radius:8px 8px 0 0}.riftBristleWoodsHUD-acolyteStats:before{position:absolute;right:0;bottom:0;left:-1px;height:2px;content:"";background-color:#4b3d30}.mousehuntTooltip .riftBristleWoodsHUD-footer-item-quantity.quantity{top:4px;left:31px;width:33px;border:1px solid #a6a6a6;box-shadow:none}.mousehuntTooltip .riftBristleWoodsHUD-footer-item-tooltip-baitRow-name{margin-left:50px}.mousehuntTooltip .riftBristleWoodsHUD-footer-item-tooltip-baitRow .mousehuntArmNowButton{right:-3px}.riftBristleWoodsHUD-footer-item-image{background-color:#e0cdbd}.riftBristleWoodsHUD-portalEquipment.disabled .riftBristleWoodsHUD-footer-item-quantity{top:27px;padding:0 3px;font-size:9px;opacity:.9}.riftBristleWoodsHUD-portalContainer{margin-top:-1px;border-top:2px solid #5b4d3f;border-top-left-radius:3px;box-shadow:-4px 2px 0 -2px #2e2014,-1px -1px 0 1px #514236}.riftBristleWoodsHUD-chamberDetails{background-color:#312822}.riftBristleWoodsHUD-chamberSpecificText.icebreak_chamber,.riftBristleWoodsHUD-chamberSpecificText.silence_chamber,.riftBristleWoodsHUD-chamberSpecificText.stalker_chamber,.riftBristleWoodsHUD-chamberSpecificText.treasury_chamber,.riftBristleWoodsHUD-chamberSpecificText.lucky_chamber{line-height:2}.riftBristleWoodsHUD-chamberSpecificText.potion_chamber{line-height:1.5}.riftBristleWoodsHUD-chamberDetails-image-padding{margin-right:4px;margin-left:-2px;background-color:#817871;border-color:#d1caaa;border-radius:10px}.riftBristleWoodsHUD-chamberDetails-imageContainer.floatl{margin:0}.riftBristleWoodsHUD-chamberDetails-imageContainer{display:flex;align-items:center;justify-content:space-evenly}.riftBristleWoodsHUD-chamberDetails-image:nth-last-child(3),.riftBristleWoodsHUD-chamberDetails-image:nth-last-child(3)~.riftBristleWoodsHUD-chamberDetails-image{width:auto}\n'; } }); // src/modules/location-huds/rift-bristle-woods/index.js var maybeAddUserscriptStyles, rift_bristle_woods_default2; var init_rift_bristle_woods2 = __esm({ "src/modules/location-huds/rift-bristle-woods/index.js"() { init_utils2(); init_styles77(); maybeAddUserscriptStyles = () => { const check = document.querySelector(".riftBristleWoodsHUD .item_container .item-Btn"); if (!check) { return; } const userscriptStyles = [ ".riftBristleWoodsHUD .item_container, .riftBristleWoodsHUD .charm_container { margin-top: 15px; }", ".riftBristleWoodsHUD { margin-bottom: 30px; }" ].join("\n"); addStyles(userscriptStyles, "riftBristleWoodsHUD", "mh-improved-rift-bristle-woods-userscript-styles"); }; rift_bristle_woods_default2 = () => { addHudStyles(styles_default76); setTimeout(() => { maybeAddUserscriptStyles(); }, 1e3); }; } }); // src/modules/location-huds/rift-burroughs/styles.css var styles_default77; var init_styles78 = __esm({ "src/modules/location-huds/rift-burroughs/styles.css"() { styles_default77 = '.riftBurroughsHud .baitContainer .baitOption .baitQuantity{width:31px;font-size:13px;background-color:#464646;border-radius:7px}.brift-ui .mist-display{position:absolute;top:15px;bottom:10px;left:260px;display:flex;align-items:center;padding:10px;font-size:13px;font-weight:900;cursor:pointer;background-color:#ecf4f5;border-radius:10px;box-shadow:inset 0 0 0 3px #cbdde0,inset 0 0 4px 4px #8d9392,0 2px 6px #5b5d5d}.brift-ui{z-index:1}.riftBurroughsHud .mistContainer{width:100px}.brift-ui .mist-display.state-yellow{background:radial-gradient(circle,#fff4a9 10%,#f4e830 50%)}.brift-ui .mist-display.state-green{background:radial-gradient(circle,#abe846 10%,#82d953 50%)}.brift-ui .mist-display.state-red{background:radial-gradient(circle,#ff9a9a 10%,#ff5e5e 50%)}.brift-ui .mouse-list{position:absolute;top:9px;right:20px;bottom:2px;display:flex}.brift-ui .mouse-type{display:flex;flex-direction:column;max-width:100px;padding:4px;margin:0 5px;background-color:#bfced0cf;border-radius:10px;box-shadow:inset 0 0 0 3px #cbdde0,inset 0 0 4px 4px #8d9392,0 2px 6px #5b5d5d}.brift-ui .mouse-type-title{min-width:95px;padding:3px 0;margin:-1px;font-size:12px;color:#d0f0f3;text-align:center;cursor:pointer;background-color:#828282;border-top-left-radius:7px;border-top-right-radius:8px}.brift-ui .mouse-type-mice{display:grid;grid-template-columns:repeat(4,1fr);justify-items:center;margin:3px 0;font-size:6px}.brift-ui .mouse-type-title:hover,.brift-ui .mouse-type-title:focus{color:#b1ed71;cursor:pointer}.brift-ui .mouse-type-mouse{display:block;width:25px;height:25px}.brift-ui img.mouse-type-mouse-image{width:25px;height:25px}.brift-ui .mouse-type-mouse:nth-child(5) .mouse-type-mouse-image{border-bottom-left-radius:4px}.brift-ui .mouse-type-mouse:nth-child(8) .mouse-type-mouse-image{border-bottom-right-radius:4px}.brift-ui .mouse-type-mouse-link{position:relative}.brift-ui .mouse-type-mouse-name{position:absolute;bottom:-30px;left:-25px;z-index:2;display:none;padding:6px;font-size:10px;color:#000;text-align:center;white-space:nowrap;background-color:#fff;border:2px solid #000;border-radius:10px}.brift-ui .mouse-type-mouse-link:hover .mouse-type-mouse-name,.brift-ui .mouse-type-mouse-link:focus .mouse-type-mouse-name{display:block}.brift-ui .mouse-type.active{box-shadow:inset 0 0 0 2px #a7fc32,inset 0 0 4px 4px #8d9392,0 2px 6px #5b5d5d}.brift-ui .mouse-type.active .mouse-type-title{color:#b1ed71}.riftBurroughsHud .baitOption .toolTip .item .itemImage .quantity{font-size:14px;background-color:#ffffffbf}.riftBurroughsHud .baitWarning{top:36px;left:275px;z-index:20;width:280px;padding:5px;font-size:12px;line-height:15px;color:#000;background-color:#ffbfbf;border:1px solid #b60000;border-radius:10px;box-shadow:0 0 10px 3px #4d4a4a}.is_misting .mist-display:after{top:9px;bottom:unset;content:"\\2191"}.mist-display:after{position:absolute;right:0;bottom:6px;left:0;font-weight:900;color:#2f3b1c;text-align:center;content:"\\2193"}.riftBurroughsHud .mistButton{filter:hue-rotate(258deg) brightness(.9)}.riftBurroughsHud.is_misting .mistButton{filter:hue-rotate(319deg) brightness(1.3)}.riftBurroughsHud .mistQuantity{font-size:12px;font-weight:900;color:#3d3d3d;text-shadow:1px 1px 2px #f4f4f4}\n'; } }); // src/modules/location-huds/rift-burroughs/area-mice.json var area_mice_default; var init_area_mice = __esm({ "src/modules/location-huds/rift-burroughs/area-mice.json"() { area_mice_default = { tier_0: { string: [ "rift_amplified_brown", "rift_amplified_grey", "rift_amplified_white", "rift_automated_sentry", "rift_cybernetic_specialist", "rift_doktor", "rift_evil_scientist", "rift_portable_generator", "rift_bio_engineer", "rift_surgeon_bot" ], terra: [], polluted: [] }, tier_1: { string: ["rift_count_vampire", "rift_phase_zombie", "rift_prototype", "rift_robat", "rift_tech_ravenous_zombie"], terra: [ "rift_clump", "rift_cyber_miner", "rift_itty_bitty_burroughs", "rift_pneumatic_dirt_displacement", "rift_rifterranian" ], polluted: ["rift_mecha_tail", "rift_spore", "rift_toxikinetic"] }, tier_2: { string: [ "rift_count_vampire", "rift_lycan", "rift_phase_zombie", "rift_prototype", "rift_revenant", "rift_robat", "rift_tech_ravenous_zombie", "rift_zombot_unipire" ], terra: [ "rift_boulder_biter", "rift_clump", "rift_cyber_miner", "rift_itty_bitty_burroughs", "rift_lambent", "rift_master_exploder", "rift_pneumatic_dirt_displacement", "rift_rifterranian" ], polluted: [ "rift_mecha_tail", "rift_spore", "rift_rancid_bog_beast", "rift_radioactive_gold", "rift_toxic_avenger", "rift_toxikinetic" ] }, tier_3: { string: ["rift_monstrous_abomination"], terra: ["rift_big_bad_burroughs"], polluted: [ "rift_assassin_beast", "rift_menace", "rift_plutonium_tentacle", "rift_rancid_bog_beast", "rift_radioactive_gold", "rift_toxic_avenger" ] } }; } }); // src/modules/location-huds/rift-burroughs/mice-name-images.json var mice_name_images_default; var init_mice_name_images = __esm({ "src/modules/location-huds/rift-burroughs/mice-name-images.json"() { mice_name_images_default = { rift_amplified_brown: { name: "Amplified Brown Mouse", image: "9547c50891ce66c00188a0ce278cd9e0.gif" }, rift_amplified_grey: { name: "Amplified Grey Mouse", image: "b6a9a248439e08367139cba601583781.gif" }, rift_amplified_white: { name: "Amplified White Mouse", image: "877fd4f1831f1ffd76e6ab9334e96efc.gif" }, rift_automated_sentry: { name: "Automated Sentry Mouse", image: "d57b33cdbb0d14bb138fe91c166325fa.gif" }, rift_cybernetic_specialist: { name: "Cybernetic Specialist Mouse", image: "5a0d95f2211444717f29f74959b89366.gif" }, rift_doktor: { name: "Doktor Mouse", image: "a44277c1d72f76fb507df2a7a4938542.gif" }, rift_evil_scientist: { name: "Evil Scientist Mouse", image: "fc4030fcea4bb7e0118aa4d46705f37e.gif" }, rift_portable_generator: { name: "Portable Generator Mouse", image: "f0437620c8c86379e6f8fefb9e82d2c3.gif" }, rift_bio_engineer: { name: "Rift Bio Engineer", image: "1d91dc3220b096af75ca0423a77ccc83.gif" }, rift_surgeon_bot: { name: "Surgeon Bot Mouse", image: "6678f8a7003093b081c941a3d571abb8.gif" }, rift_count_vampire: { name: "Count Vampire Mouse", image: "851f1d4c760d0f263a38d0fa28bbf2fa.gif" }, rift_phase_zombie: { name: "Phase Zombie", image: "c9675fb32b01e91d43f5ebbbf3bf8f02.gif" }, rift_prototype: { name: "Prototype Mouse", image: "8be0e48b2fa241e65312726433612871.gif" }, rift_robat: { name: "Robat Mouse", image: "fa345c83ff784adfbe79230f279be2c6.gif" }, rift_tech_ravenous_zombie: { name: "Tech Ravenous Zombie", image: "6249796e35d572687db2aa4a4e391335.gif" }, rift_clump: { name: "Clump Mouse", image: "a901fe9feea2e04ca1da1a3769dd7f77.gif" }, rift_cyber_miner: { name: "Cyber Miner Mouse", image: "b3768e070c9b40fdfbfef4f39025acc3.gif" }, rift_itty_bitty_burroughs: { name: "Itty Bitty Rifty Burroughs Mouse", image: "723735735fcbc38d75c5d980b454dc4e.gif" }, rift_pneumatic_dirt_displacement: { name: "Pneumatic Dirt Displacement Mouse", image: "70bc4cb7409df8be9e1942e27b75c05f.gif" }, rift_rifterranian: { name: "Rifterranian Mouse", image: "7abd07fac15972db28231f80fd03c075.gif" }, rift_mecha_tail: { name: "Mecha Tail Mouse", image: "e329e623c6ff501d03c7077b8ecfabf9.gif" }, rift_spore: { name: "Radioactive Ooze Mouse", image: "f037c2df0d654caaadfe4c8a58a13431.gif" }, rift_toxikinetic: { name: "Toxikinetic Mouse", image: "bae7062027162025735a5ccbcaf58e5f.gif" }, rift_lycan: { name: "Lycanoid", image: "18c987fe4ec5ee678114cb748dedfb6d.gif" }, rift_revenant: { name: "Revenant Mouse", image: "a0060e929e11030025f6609a5cb81c51.gif" }, rift_zombot_unipire: { name: "Zombot Unipire the Third", image: "95be1a40ec7cf3868fb9041bf43658a8.gif" }, rift_boulder_biter: { name: "Boulder Biter Mouse", image: "7da77ad10f719afce4f17453cb964f40.gif" }, rift_lambent: { name: "Lambent Mouse", image: "b301f96263690c2a3dc02a4625aa1c9b.gif" }, rift_master_exploder: { name: "Master Exploder Mouse", image: "6d04a2ec4e21296272e080df7033a29a.gif" }, rift_rancid_bog_beast: { name: "Rancid Bog Beast Mouse", image: "5a7f8551ed42a6344e7948b18687e97d.gif" }, rift_radioactive_gold: { name: "Super Mega Mecha Ultra RoboGold Mouse", image: "022763eaba9d7f6fdbd5cddb3813d6b8.gif" }, rift_toxic_avenger: { name: "Toxic Avenger Mouse", image: "74891cb924851366d67a3632ed56fa6b.gif" }, rift_monstrous_abomination: { name: "Monstrous Abomination Mouse", image: "12dc2f226fd5e26144deb154d293e6db.gif" }, rift_big_bad_burroughs: { name: "Big Bad Behemoth Burroughs Mouse", image: "dfb15f35c1fe4bb07e2b276071a7c439.gif" }, rift_assassin_beast: { name: "Assassin Beast Mouse", image: "ddb77d3c8cad610f4270f6d1b401602c.gif" }, rift_menace: { name: "Menace of the Rift Mouse", image: "a286833ada1c4718096e30db734514a2.gif" }, rift_plutonium_tentacle: { name: "Plutonium Tentacle Mouse", image: "97c996e63dab24de6ed6a089f318012e.gif" } }; } }); // src/modules/location-huds/rift-burroughs/index.js var makeMiceList, hud6, rift_burroughs_default2; var init_rift_burroughs2 = __esm({ "src/modules/location-huds/rift-burroughs/index.js"() { init_utils2(); init_styles78(); init_area_mice(); init_mice_name_images(); makeMiceList = (type, title, mice, currentType, appendTo) => { const wrapper = makeElement("div", ["mouse-type", type]); if (currentType === type) { wrapper.classList.add("active"); } const mTitle = makeElement("a", "mouse-type-title", title); mTitle.addEventListener("click", () => { let id = 1426; if ("terra" === type) { id = 1551; } else if ("polluted" === type) { id = 1550; } hg.utils.TrapControl.setBait(id); hg.utils.TrapControl.go(); }); wrapper.append(mTitle); const miceWrapper = makeElement("div", "mouse-type-mice"); mice.forEach((mouse) => { const mouseWrapper = makeElement("div", "mouse-type-mouse"); const mouseLink = makeElement("a", "mouse-type-mouse-link"); mouseLink.addEventListener("click", (e) => { hg.views.MouseView.show(mouse); e.preventDefault(); }); const mouseImage = makeElement("img", "mouse-type-mouse-image"); mouseImage.src = `https://www.mousehuntgame.com/images/mice/thumb/${mice_name_images_default[mouse].image}`; mouseLink.append(mouseImage); makeElement("div", "mouse-type-mouse-name", mice_name_images_default[mouse].name, mouseLink); mouseWrapper.append(mouseLink); miceWrapper.append(mouseWrapper); }); wrapper.append(miceWrapper); appendTo.append(wrapper); return wrapper; }; hud6 = () => { var _a; if (!((_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRiftBurroughs)) { return; } const quest = user.quests.QuestRiftBurroughs; const armedBait = (quest == null ? void 0 : quest.armed_bait) || "disarmed"; const mistLevel = (quest == null ? void 0 : quest.mist_released) || 0; const mistTier = (quest == null ? void 0 : quest.mist_tier) || "tier_0"; const hudEl = document.querySelector("#hudLocationContent .riftBurroughsHud"); if (!hudEl) { return; } let color = "yellow"; if (mistLevel >= 6) { color = "green"; } if (mistLevel >= 19) { color = "red"; } const existing = document.querySelector(".brift-ui"); if (existing) { existing.remove(); } const wrapper = makeElement("div", ["brift-ui"]); const mist = makeElement("div", ["mist-display", `state-${color}`], `${mistLevel} / 20 `); mist.addEventListener("click", (e) => { hg.views.HeadsUpDisplayRiftBurroughsView.toggleMist(e.target); }); wrapper.append(mist); const availableMice = area_mice_default[mistTier]; const mouseWrapper = makeElement("div", "mouse-list"); let currentType = null; switch (armedBait) { case "brie_string_cheese": case "marble_string_cheese": case "magical_string_cheese": currentType = "string"; break; case "polluted_parmesan_cheese": currentType = "polluted"; break; case "terre_ricotta_cheese": currentType = "terra"; break; } makeMiceList("string", "Magical String", availableMice.string, currentType, mouseWrapper); makeMiceList("terra", "Terra Ricotta", availableMice.terra, currentType, mouseWrapper); makeMiceList("polluted", "Polluted Parm.", availableMice.polluted, currentType, mouseWrapper); wrapper.append(mouseWrapper); hudEl.append(wrapper); }; rift_burroughs_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default77); hud6(); onRequest("*", hud6); }); } }); // src/modules/location-huds/rift-furoma/styles.css var styles_default78; var init_styles79 = __esm({ "src/modules/location-huds/rift-furoma/styles.css"() { styles_default78 = ".riftFuromaHUD-battery-energyRemaining{right:0;left:-1px;width:auto;font-size:13px;font-style:normal;color:#fff;text-shadow:1px 1px 1px #000,1px 1px 2px #000;background-color:#7a8b8a;border:1px solid #535757;border-radius:1px}.riftFuromaHUD-itemGroup-activeItem .quantity{padding:1px 2px;font-size:12px;font-weight:400;background-color:#dadada}.riftFuromaHUD-battery-energyTotal{font-size:10px;color:#e0e0e0}.riftFuromaHUD-droid-details .riftFuromaHUD-chargeLevel-stat-value{text-shadow:1px 1px 1px #000,0 0 2px #000}.riftFuromaHUD-droid-image{transition:all .5s}.riftFuromaHUD-droid-image:hover{filter:brightness(1.3)}.riftFuromaHUD-battery-image:hover,.riftFuromaHUD-itemGroup.can_craft .riftFuromaHUD-itemGroup-craftButton:hover{filter:brightness(1.2)}.riftFuromaHUD.pagoda .riftFuromaHUD-chargeLevel-statContainer{display:grid;grid-template-columns:1fr 1fr;justify-items:stretch}.riftFuromaHUD-chargeLevel-stat.power{width:unset}.riftFuromaHUD-chargeLevel-stat.luck,.riftFuromaHUD-chargeLevel-stat.power{display:flex;flex-direction:column;align-items:center;width:unset}.riftFuromaHUD-chargeLevel-stat.power_usage{grid-column:span 2;width:unset}.riftFuromaHUD-chargeLevel-statContainer .riftFuromaHUD-chargeLevel-stat-value{padding-top:3px;font-size:17px}.riftFuromaHUD-chargeLevel-stat.power_usage .riftFuromaHUD-chargeLevel-stat-value{padding-top:0;margin-top:-2px;font-size:13px}.riftFuromaHUD-chargeLevel-stat.luck .riftFuromaHUD-chargeLevel-stat-label,.riftFuromaHUD-chargeLevel-stat.power .riftFuromaHUD-chargeLevel-stat-label{font-size:10px;font-weight:900}span.riftFuromaHUD-craftingPopup-recipe-part-quantity,.riftFuromaHUD-craftingPopup-recipe-part-padding span.quantity{font-size:12px}\n"; } }); // src/modules/location-huds/rift-furoma/index.js var rift_furoma_default2; var init_rift_furoma2 = __esm({ "src/modules/location-huds/rift-furoma/index.js"() { init_utils2(); init_styles79(); rift_furoma_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default78); }); } }); // src/modules/location-huds/rift-gnawnia/styles.css var styles_default79; var init_styles80 = __esm({ "src/modules/location-huds/rift-gnawnia/styles.css"() { styles_default79 = ".riftGnawniaHud:hover .riftGnawniaHud-targetsBackground,.riftGnawniaHud:focus .riftGnawniaHud-targetsBackground,.riftGnawniaHud:active .riftGnawniaHud-targetsBackground{filter:hue-rotate(-40deg)}.riftGnawniaHud-targetsBackground{transition:.5s}.riftGnawniaHud-targets .mousehuntTooltip{inset:0 34px 0 -5px;display:flex;align-items:center;width:auto;font-size:11px;text-align:center;background-color:#d6e8e4;border:1px solid #29c7cb;opacity:.9}.riftGnawniaHud-targets.mousehuntTooltipParent:hover .mousehuntTooltip{display:flex}.riftGnawniaHud-targets{right:-10px}.riftGnawniaHud-targets .mousehuntTooltip .mousehuntTooltip-arrow{display:none}.riftGnawniaHud .riftGnawniaHud-stringBait>.itemImage,.riftGnawniaHud .riftGnawniaHud-potion>.itemImage,.riftGnawniaHud .riftGnawniaHud-craftingBait>.itemImage{background-color:#a39d99}.riftGnawniaHud .mousehuntTooltip.top{width:280px;min-height:40px}.riftGnawniaHud .riftGnawniaHud-tooltip-content{margin-right:0}.riftGnawniaHud .riftGnawniaHud-stringBait.mousehuntTooltipParent:hover .mousehuntTooltip,.riftGnawniaHud .riftGnawniaHud-potion.mousehuntTooltipParent:hover .mousehuntTooltip,.riftGnawniaHud .riftGnawniaHud-craftingBait.mousehuntTooltipParent:hover .mousehuntTooltip{display:grid;grid-template-columns:1fr 1fr;place-items:center stretch}.riftGnawniaHud .mousehuntTooltipParent:hover .mousehuntTooltip .riftGnawniaHud-tooltip-result{position:relative;bottom:0;display:flex;align-items:center;justify-content:center;width:100%}.riftGnawniaHud-tooltip-quantity{box-sizing:border-box;width:50px;padding:2px}.riftGnawniaHud-label{text-shadow:1px 1px #333,0 0 1px #333,-1px 0 1px #333}\n"; } }); // src/modules/location-huds/rift-gnawnia/index.js var rift_gnawnia_default; var init_rift_gnawnia = __esm({ "src/modules/location-huds/rift-gnawnia/index.js"() { init_utils2(); init_styles80(); rift_gnawnia_default = () => __async(void 0, null, function* () { addHudStyles(styles_default79); }); } }); // src/modules/location-huds/rift-valour/styles.css var styles_default80; var init_styles81 = __esm({ "src/modules/location-huds/rift-valour/styles.css"() { styles_default80 = '#overlayPopup.mh-vrift-popup .jsDialogContainer{background:linear-gradient(#20216f,#703271,#20216f);outline:1px solid #20216f}#overlayPopup.mh-vrift-popup .title{padding:10px;font-size:18px;color:#fff}.mh-vrift-sim-results{display:grid;grid-template-columns:70% 30%;margin:0 1em;color:#fff}.mh-vrift-sim-results .stats{display:grid;grid-template-columns:repeat(2,1fr);grid-row-gap:1rem;margin-bottom:2em}.mh-vrift-sim-results .result{display:flex;place-content:center space-between}.mh-vrift-sim-results .label{width:100%;padding-left:10px;font-size:13px;line-height:30px;color:#eaeaea;vertical-align:middle;background-color:#c3c3c31a;border-radius:5px}.mh-vrift-sim-results .value{position:relative;left:-25px;width:35px;font-size:14px;line-height:30px;color:#eaeaea;text-align:center;background:linear-gradient(#07041d,#4d3bac);border:1px solid #6d86de;border-radius:5px}.mh-vrift-sim-results .eclipses{padding:10px;margin-bottom:2em;font-size:13px;background-color:#c3c3c31a;border-radius:5px}.mh-vrift-sim-results .eclipses h3{padding-bottom:11px;font-size:16px;color:#fff}.mh-vrift-sim-results .eclipses .header{padding-bottom:3px;margin-bottom:10px;font-size:12px;line-height:unset;color:#afafafd9;border-bottom:1px solid rgb(175 175 175 / 85%)}.mh-vrift-sim-results .eclipses li{display:flex;justify-content:space-between;line-height:24px;text-align:right}.mh-vrift-sim-results .eclipses .guaranteed{color:#80e472}.mh-vrift-sim-results .number{text-align:left}.valourRiftHUD-dialog-inventory-item-quantity.quantity{min-width:30px;font-size:12px;font-weight:900;line-height:20px;text-align:center;text-shadow:none;background-color:#282659;box-shadow:none}.valourRiftHUD-dialog-inventory-item-name{text-align:center}.valourRiftHUD-towerUpgradeLevel-costTotal{font-size:14px}span.valourRiftHUD-towerUpgrade-currentValue{font-size:13px;font-weight:900;line-height:20px;color:#fff;background-color:#282659}.valourRiftHUD-towerUpgrade-currentValueContainer{display:block;line-height:20px;vertical-align:middle}.valourRiftHUD-towerUpgrade-header-title{padding:10px;font-size:15px}.valourRiftHUD-towerUpgrade-header{display:grid;grid-template-columns:150px 1fr;place-items:center stretch}.valourRiftHUD-towerUpgrade-content{padding:10px}.valourRiftHUD-powerUp.canUpgrade:after{top:6px;left:13px;filter:drop-shadow(1px 4px 6px #40f5ff) hue-rotate(73deg);box-shadow:0 0 6px 3px #2d9ba2}.valourRiftHUD-powerUp-level span{margin-left:-1px;border-radius:0}.valourRiftHUD-powerUp-level:first-child span{border-top-left-radius:5px;border-bottom-left-radius:5px}.valourRiftHUD-powerUp-level:last-child span{border-top-right-radius:5px;border-bottom-right-radius:5px}.valourRiftHUD-powerUp-currentLevel{top:9px;right:8px;width:23px;padding:2px;font-size:15px;line-height:27px;color:#fff;background:radial-gradient(circle,#4d3bac,#1a115b);border:none;border-radius:10px 15px 15px 10px;box-shadow:inset 0 0 2px 1px #171717}.valourRiftHUD-powerUp.hunt_limit .valourRiftHUD-powerUp-currentLevel{font-size:11px}.valourRiftHUD-gauntletBait-quantity.quantity{top:45px;font-size:13px;font-weight:900}.valourRiftHUD-towerLoot-quantity.quantity{font-size:12px;font-weight:900}.valourRiftHUD-bait-quantity.quantity{width:60px;font-size:13px;line-height:18px}.valourRiftHUD-crafting-quantity.quantity{width:42px;font-size:12px}.valourRiftHUD-fuelContainer-quantity.quantity{z-index:1;padding:1px 2px;margin-top:-7px;margin-right:-3px;font-size:14px;background-color:#281c55;border:1px solid #7db4dc;box-shadow:0 0 0 1px #7eaacd}.valourRiftHUD-fuelContainer-buyButton{top:-4px;left:98px}.valourRiftHUD-previewTower{top:45px;left:580px;filter:grayscale(1);opacity:.6}.valourRiftHUD-previewTower.mh-vrift-sim-link{top:43px;left:550px;width:21px;height:21px;color:transparent;background-image:url(https://i.mouse.rip/mh-improved/sim.png);filter:grayscale(1);opacity:.4}.valourRiftHUD-previewTower.mh-vrift-sim-link:hover{opacity:.8}span.valourRiftHUD-huntsRemaining-value{margin-right:5px;font-size:15px;font-weight:900;line-height:14px}span.valourRiftHUD-stepsTaken-value{font-size:13px;font-weight:900;color:#2d2964}#mh-vrift-floor-name{position:absolute;top:2px;right:25px;left:25px;z-index:1;height:20px;font-family:Rockwell,Rockwell Nova,Roboto Slab,"DejaVu Serif",Sitka Small,serif;font-size:21px;font-variant:petite-caps;color:#ebfffd;text-shadow:0 0 1px #62fff3;background-color:#231857;opacity:0;transition:opacity .2s ease-in-out;-webkit-text-stroke:1px #4fc5bc}.valourRiftHUD-currentFloor:hover #mh-vrift-floor-name,.valourRiftHUD-state.tower:hover #mh-vrift-floor-name,.valourRiftHUD-currentFloor:focus #mh-vrift-floor-name,.valourRiftHUD-state.tower:focus #mh-vrift-floor-name{opacity:1}.bottom.mh-vrift-floor-tooltip{right:-60px;bottom:-40px;left:-70px;font-size:11px}.bottom.mh-vrift-floor-tooltip .mousehuntTooltip-arrow{display:none}.valourRiftHUD-stepsTaken .mousehuntTooltip{top:-5px;left:107%;width:auto;min-width:170px}.valourRiftHUD-huntsRemaining .mousehuntTooltip{top:5px;left:105%;width:auto;min-width:335px}.valourRiftPopupClaim-lootLog-name{font-size:12px}.valourRiftPopup-towerStat .valourRiftPopup-label{font-size:14px}.valourRiftPopupClaim-stats-content{display:grid;grid-template-columns:repeat(3,1fr);place-items:center center;padding:5px 0 5px 15px;margin:20px;text-align:unset}.valourRiftPopup-towerStat .valourRiftPopup-value{font-size:25px;line-height:30px}.valourRiftPopup-towerStat{display:flex;flex-flow:column;align-items:center;justify-content:center;width:auto;text-align:center}.valourRiftPopup-towerStat.wide{width:unset}.valourRiftPopup-towerStat:last-child{margin-right:-110px}.valourRiftPopupClaim-cacheLoot-image,.valourRiftPopupClaim-lootLog .itemImage{box-shadow:none}.valourRiftPopupClaim-footer{margin-top:-40px}.valourRiftPopupClaim-chest-floor{filter:drop-shadow(0 0 5px #fee198)}.valourRiftPopupClaim-cacheLoot.robbery_slot_a .valourRiftPopupClaim-cacheLoot-image{filter:drop-shadow(0 5px 10px #fe8f21);box-shadow:none}.valourRiftPopupClaim-cacheLoot.research_slot_b .valourRiftPopupClaim-cacheLoot-image{filter:drop-shadow(0 5px 10px #28a938);box-shadow:none}.valourRiftPopupClaim-cacheLoot .mousehuntTooltip .mousehuntTooltip-arrow,.valourRiftPopupClaim-cacheLoot.robbery_slot_a .mousehuntTooltip:after,.valourRiftPopupClaim-cacheLoot.research_slot_b .mousehuntTooltip:after{display:none}.valourRiftPopupClaim-cacheLoot.robbery_slot_a .valourRiftPopupClaim-cacheLoot-image:before,.valourRiftPopupClaim-cacheLoot.research_slot_b .valourRiftPopupClaim-cacheLoot-image:before{top:unset;right:-2px;bottom:0;width:30px;height:30px;content:""}.valourRiftPopupClaim-lootLogTitle{color:#462605}.valourRiftPopupClaim-newFloorRecord{grid-column:span 3}.valourRiftPopupIllustrated-inventoryCostContainer{right:0;left:80px;width:352px;font-size:12px;font-weight:400;line-height:14px;text-align:center}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-highestFloor{font-size:12px;font-weight:900;color:#f2bc7d}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-highestFloorReachedContainer{top:72px;right:69px;display:flex;padding:3px 6px;background-color:#3f354d;border:1px solid #2f283a;border-radius:4px}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-augmentation-description{display:flex;font-size:12px;font-style:normal;line-height:13px}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-augmentation-cost-quantity{margin-top:3px;margin-left:-14px;font-size:14px;box-shadow:1px -4px 2px #310f3c inset,0 0 3px 3px #b06fd3 inset}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-augmentation-cost-image{background-color:#c7c8c6;background-position:-1px -1px}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-augmentation-cost.error .valourRiftHUD-augmentation-cost-quantity{color:#ccc;background-color:#744444}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-augmentation-cost.error .valourRiftHUD-augmentation-cost-image{filter:grayscale(1);box-shadow:0 0 2px 2px #744444}.valourRiftPopupIllustrated.enterTower a[data-type=tu] .valourRiftHUD-augmentation-description{font-size:10px;line-height:10px}.valourRiftPopupIllustrated.enterTower a.valourRiftHUD-augmentation.locked{filter:grayscale(.8) opacity(.6)}.valourRiftPopupIllustrated.enterTower .valourRiftHUD-dialog-inventory-item-name{padding-right:6px;font-size:12px;line-height:12px}.valourRiftHUD-tower .valourRiftHUD-tower-sprite-name,.valourRiftHUD-tower .valourRiftHUD-tower-sprite.step,.valourRiftHUD-tower .valourRiftHUD-tower-sprite.player,.valourRiftHUD-tower .valourRiftHUD-tower-sprite.floor .valourRiftHUD-tower-sprite-image:before{opacity:1;transition:opacity .4s ease-in-out}.valourRiftHUD-tower:hover .valourRiftHUD-tower-sprite.step,.valourRiftHUD-tower:hover .valourRiftHUD-tower-sprite.player,.valourRiftHUD-tower:hover .valourRiftHUD-tower-sprite.floor .valourRiftHUD-tower-sprite-image:before{opacity:.4}.valourRiftHUD-tower:hover .valourRiftHUD-tower-sprite.player:hover{opacity:1}.valourRiftHUD-tower-sprite.floor .valourRiftHUD-tower-sprite-name{font-size:11px;mix-blend-mode:hard-light}.valourRiftHUD.tower .valourRiftHUD-huntsRemaining .valourRiftHUD-state.tower,.valourRiftHUD.tower .valourRiftHUD-stepsTaken .valourRiftHUD-state.tower{display:flex;gap:5px;align-items:center;justify-content:flex-end}.valourRiftHUD.tower .valourRiftHUD-state.tower{font-size:10px}.valourRiftHUD-powerUp .valourRiftHUD-powerUpIcon{top:2px;left:2px;width:44px;height:45px}.valourRiftHUD-powerUp-title{margin-top:-3px;margin-left:2px;font-size:13px}a.valourRiftHUD-gauntletBait-image{background-color:#694481;outline:1px solid #564065}a.valourRiftHUD-bait-image{background-color:#6d90de;outline:2px solid #4f71bc;box-shadow:0 0 0 2px #5071bc}.valourRiftHUD-towerLoot-thumb:hover{transform:scale(2.2)}.valourRiftHUD-towerLoot-thumb{background-size:80%;transition:.2s ease-in;transform:scale(1.7)}a.valourRiftHUD-gauntletBait-image.active{filter:drop-shadow(0 5px 5px #68b868)}.floor_8 .valourRiftHUD-currentFloor{filter:hue-rotate(125deg);mix-blend-mode:color-dodge}.floor_8 .valourRiftHUD-floorProgress-barContainer{filter:hue-rotate(110deg)}.eclipse.floor_8 .valourRiftHUD-floorProgress-barContainer{filter:brightness(1.2);animation:fortRoxlairPulse 2s 3}.valourRiftHUD-tower-sprite.floor_8 .valourRiftHUD-tower-sprite-image{filter:saturate(1.2);box-shadow:inset 0 10px 25px 5px #000}.valourRiftHUD-floorProgress-boss{top:-2px;z-index:2;width:32px;height:32px;border-radius:3px;outline:2px solid #6c87be;box-shadow:0 0 2px 2px #231855}.mh-improved-player-spin{animation:mh-improved-spin .7s linear 1}.flipped .mh-improved-player-spin{animation:mh-improved-spin-flipped .7s linear 1}.mh-improved-player-spin.mh-improved-player-large{animation:mh-improved-spin-large .7s linear 1}.flipped .mh-improved-player-spin.mh-improved-player-large{animation:mh-improved-spin-large-flipped .7s linear 1}@media (prefers-reduced-motion: reduce){.eclipse.floor_8 .valourRiftHUD-floorProgress-barContainer,.mh-improved-player-spin,.mh-improved-player-spin.mh-improved-player-large,.flipped .mh-improved-player-spin,.flipped .mh-improved-player-spin.mh-improved-player-large{animation:none}}.valourRiftHUD-crafting-image{background-position:center;background-size:120%}.valourRiftHUD-tower-sprite.player .valourRiftHUD-tower-sprite-image.mh-improved-player-large{transform:scale(2)}.valourRiftHUD-tower-sprite.player.flipped .valourRiftHUD-tower-sprite-image.mh-improved-player-large{transform:scale(-2,2)}.valourRiftHUD{filter:drop-shadow(0 2px 1px #25266a)}.valourRiftHUD.tower .valourRiftHUD-huntsRemaining .valourRiftHUD-state.tower{gap:0;margin-right:-3px}.valourRiftHUD-fuelContainer-armButton{font-size:12px}.valourRiftHUD-warningContainer.active.hidden,.valourRiftHUD-powerTypeWarning.active.hidden{display:none}.uc-text-highlight,.valourRiftHUD-powerUp-currentLevel.uc-text-highlight{color:#90ffe1}\n'; } }); // src/modules/location-huds/rift-valour/simulator.js function getCacheLoot(floor) { let idx = floor > 1 ? floor - 1 : 0; if (idx >= cacheLoot.length) { idx = cacheLoot.length - 1; } const loot = cacheLoot[idx]; return loot; } function convertToCR(power, luck, stats) { const mPower = stats[0]; const mEff = stats[1]; return Math.min(1, (power * mEff + 2 * Math.pow(luck * Math.min(mEff, 1.4), 2)) / (mPower + power * mEff)); } function simulate(shouldDisplay = true) { const time = Date.now() / 1e3; const lvSpeed = window.user.enviroment_atts.power_up_data.long_stride.current_value; const lvSync = window.user.enviroment_atts.power_up_data.hunt_limit.current_level + 1; const lvSiphon = window.user.enviroment_atts.power_up_data.boss_extension.current_level + 1; let siphon = window.user.enviroment_atts.power_up_data.boss_extension.current_value; const sync = window.user.enviroment_atts.hunts_remaining; const steps = window.user.enviroment_atts.current_step; const torchState = window.user.enviroment_atts.is_fuel_enabled; const torchEclipse = true; const umbra = window.user.enviroment_atts.active_augmentations.tu; const superSiphon = window.user.enviroment_atts.active_augmentations.ss; const strStep = window.user.enviroment_atts.active_augmentations.sste; const curFloor = window.user.enviroment_atts.floor; const sh = window.user.enviroment_atts.active_augmentations.hr; const sr = window.user.enviroment_atts.active_augmentations.sr; const bail = 999; let power = window.user.trap_power; let luck = window.user.trinket_name == "Ultimate Charm" ? 1e5 : window.user.trap_luck; try { const altpower = Number(document.querySelectorAll(".campPage-trap-trapStat.power")[0].children[1].innerText.match(/\d/g).join("")); const altluck = Number(document.querySelectorAll(".campPage-trap-trapStat.luck")[0].children[1].innerText); power = Number.isNaN(altpower) ? power : Math.max(power, altpower); luck = Number.isNaN(altluck) ? luck : Math.max(luck, altluck); } catch (error) { console.log(error); } const mouseCR = mouseStats.map(function(stats) { return convertToCR(power, luck, stats); }); if (useUConEclipse) { mouseCR[9] = 1; mouseCR[17] = 1; } const mouseAR = umbra ? umbraAR : normalAR; const eclipseCR = umbra ? mouseCR[17] : mouseCR[9]; const eclipseSG = umbra ? mouseDrops[17][0] : mouseDrops[9][0]; const eclipseSC = umbra ? mouseDrops[17][2] : mouseDrops[9][2]; const eclipseGold = umbra ? mouseDrops[17][4] : mouseDrops[9][4]; const catchProfile = { push: [eclipseCR], ta: [0], kb: [1 - eclipseCR], bkb: [0], fta: [0], sg: [eclipseSG * eclipseCR], sgi: [0], sc: [eclipseSC * eclipseCR], sci: [0], gold: [eclipseGold * eclipseCR], cf: [0] }; for (var j = 1; j <= 4; j++) { catchProfile.ta[j] = mouseCR[24] * mouseAR[24][j - 1]; catchProfile.bkb[j] = (1 - mouseCR[25]) * mouseAR[25][j - 1]; catchProfile.fta[j] = 0; catchProfile.sg[j] = 0; catchProfile.sgi[j] = 0; catchProfile.sc[j] = 0; catchProfile.sci[j] = 0; catchProfile.gold[j] = 0; catchProfile.cf[j] = 0; catchProfile.push[j] = -catchProfile.ta[j]; mouseCR.map(function(cr, index) { catchProfile.push[j] += cr * mouseAR[index][j - 1]; catchProfile.sg[j] += cr * mouseAR[index][j - 1] * mouseDrops[index][0]; catchProfile.sgi[j] += cr * mouseAR[index][j - 1] * mouseDrops[index][1]; catchProfile.sc[j] += cr * mouseAR[index][j - 1] * mouseDrops[index][2]; catchProfile.sci[j] += cr * mouseAR[index][j - 1] * mouseDrops[index][3]; catchProfile.gold[j] += cr * mouseAR[index][j - 1] * mouseDrops[index][4]; }); catchProfile.kb[j] = 1 - catchProfile.ta[j] - catchProfile.bkb[j] - catchProfile.push[j]; } console.log(catchProfile); const speed = torchState ? Number(lvSpeed) + 1 : lvSpeed; siphon = superSiphon ? siphon * 2 : siphon; let sigils = 0; let secrets = 0; let gold = 0; let cfDrops = 0; let totalHunts = 0; let catches = 0; function addRate(step2, hunts, change) { if (runValues[step2] == null) { runValues[step2] = []; } if (runValues[step2][hunts] == null) { runValues[step2][hunts] = 0; } runValues[step2][hunts] += change; } function stepBuild(step2) { stepDetails[step2] = {}; let lap = Math.floor(Math.pow(step2 / 35 + 2809 / 1225, 0.5) - 53 / 35) + 1; const checkLap = Math.floor(Math.pow((step2 + 1) / 35 + 2809 / 1225, 0.5) - 53 / 35) + 1; const toEC = checkLap * (106 + 35 * checkLap) - 1; const floorLength = 10 * (lap + 1); const onEC = lap * (106 + 35 * lap) - 1; const flFromEC = Math.ceil((onEC - step2) / floorLength); const floorStart = onEC - flFromEC * floorLength; stepDetails[step2].floor = lap * 8 - flFromEC; stepDetails[step2].sync = siphon * (lap - 1) - syncSpent; stepDetails[step2].toPush = flFromEC == 0 ? Math.min(step2 + speed - torchState + torchEclipse, toEC) : Math.min(step2 + speed, toEC); stepDetails[step2].toTA = strStep ? Math.min(step2 + 4 * speed, toEC) : Math.min(step2 + 2 * speed, toEC); stepDetails[step2].toKB = umbra === true ? Math.max(step2 - 5, floorStart) : Math.max(step2, floorStart); stepDetails[step2].toBKB = Math.max(step2 - 10, floorStart); lap = flFromEC == 0 ? 0 : Math.min(lap, 4); stepDetails[step2].cPush = catchProfile.push[lap]; stepDetails[step2].cTA = catchProfile.ta[lap]; stepDetails[step2].cKB = catchProfile.kb[lap]; stepDetails[step2].cBKB = catchProfile.bkb[lap]; stepDetails[step2].cFTA = catchProfile.fta[lap]; stepDetails[step2].sg = catchProfile.sg[lap]; stepDetails[step2].sgi = catchProfile.sgi[lap]; stepDetails[step2].sc = catchProfile.sc[lap]; stepDetails[step2].sci = catchProfile.sci[lap]; stepDetails[step2].gold = catchProfile.gold[lap]; stepDetails[step2].cf = catchProfile.cf[lap]; } var syncSpent = 0; const valuesDistribution = Array.from({ length: 500 }); for (var i = 0; i < 500; i++) { valuesDistribution[i] = []; } var stepDetails = []; let loopActive = 1; let startActive = steps; let endActive = steps; let loopEnd; for (const element of valuesDistribution) { element[0] = 0; } var runValues = []; for (var step = 0; step < steps; step++) { runValues[step] = []; runValues[step][0] = 0; } runValues[steps] = [1]; stepBuild(steps); syncSpent = stepDetails[steps].sync - sync; stepBuild(steps); for (let hunts = 1; loopActive == 1; hunts++) { loopActive = 0; loopEnd = endActive; for (step = startActive; step <= loopEnd; step++) { if (runValues[step] == null) { runValues[step] = []; } else { const rate = runValues[step][hunts - 1]; if (rate != null && rate > 1e-8) { if (stepDetails[step] == null) { stepBuild(step); } gold += rate * stepDetails[step].gold; cfDrops += rate * stepDetails[step].cf; sigils += rate * stepDetails[step].sg; secrets += rate * stepDetails[step].sc; if (torchState && stepDetails[step].floor % 8 != 0 || torchEclipse && stepDetails[step].floor % 8 == 0) { sigils += rate * stepDetails[step].sgi; secrets += rate * stepDetails[step].sci; } if (hunts <= stepDetails[step].sync && rate != 0 && stepDetails[step].floor < bail) { loopActive = 1; startActive = Math.min(startActive, stepDetails[step].toBKB); endActive = Math.max(endActive, stepDetails[step].toTA); addRate(stepDetails[step].toPush, hunts, rate * stepDetails[step].cPush); addRate(stepDetails[step].toTA, hunts, rate * stepDetails[step].cTA); addRate(stepDetails[step].toKB, hunts, rate * stepDetails[step].cKB); addRate(stepDetails[step].toBKB, hunts, rate * stepDetails[step].cBKB); addRate(step, hunts, rate * stepDetails[step].cFTA); catches += rate * (stepDetails[step].cPush + stepDetails[step].cTA); } else if (hunts - 1 == stepDetails[step].sync || stepDetails[step].floor >= bail) { totalHunts += (hunts - 1) * rate; valuesDistribution[stepDetails[step].floor - 1][0] += rate; } } } } } let averageFloor = 0; valuesDistribution.map(function(a, b) { averageFloor += a * (b + 1); }); const loopDistribution = Array.from({ length: 25 }).fill(0).map( function(a, index) { let sum = 0; valuesDistribution.slice(index * 8, (index + 1) * 8).map( function(a2) { sum += Number(a2); } ); return Number(sum); } ); let runningProbability = 1; const loopCumulative = loopDistribution.map(function(a) { const result = runningProbability; runningProbability -= a; return result; }); const loopCopy = [...loopDistribution].filter(function(a) { return a > 1e-3; }); const avgFloor = Math.round(averageFloor); const curCache = getCacheLoot(curFloor); const avgCache = getCacheLoot(avgFloor); const mult = [sh ? 1.5 : 1, sr ? 1.5 : 1]; const deltaCache = [Math.ceil(avgCache[0] * mult[0]) - Math.ceil(curCache[0] * mult[0]), Math.ceil(avgCache[1] * mult[1]) - Math.ceil(curCache[1] * mult[1])]; const display = [ "VRift Sim: " + lvSpeed + "/" + lvSync + "/" + lvSiphon + (torchState ? " CF" : "") + (superSiphon ? " SS" : "") + (umbra ? " UU" : "") + (strStep ? " SSt" : "") + (useUConEclipse ? " (UC Eclipse)" : ""), "Steps: " + steps + " Sync: " + sync, "Power: " + power + " Luck: " + luck, "Average Highest Floor: " + avgFloor + ", Average Hunts: " + Math.round(totalHunts), "| Loot: Sigils: +" + Math.round(sigils) + ", Secrets: +" + Math.round(secrets), "| Cache: Sigils: +" + deltaCache[0] + ", Secrets: +" + deltaCache[1], "" ]; const startDisplay = display.length; const fullDisplay = [ "VRift Run Simulation: " + (Date.now() / 1e3 - time) + " seconds taken.", "Speed: " + lvSpeed, "Siphon: " + siphon, (torchState ? "CF " : "") + (superSiphon ? "SS " : "") + (umbra ? "UU " : "") + (strStep ? "SSt " : ""), "Steps: " + steps, "Sync: " + sync, "Power: " + power, "Luck: " + luck, "Sigils: " + sigils, "Secrets: " + secrets, "Gold: " + gold, "Average Highest Floor: " + Math.round(averageFloor), "Average Hunts: " + Math.round(totalHunts), "" ]; const startFullDisplay = fullDisplay.length; const eclipses = []; for (i = 0; i < loopCopy.length; i++) { const loopIndex = loopDistribution.indexOf(loopCopy[i]); const eEntry = (loopCopy[i] * 100).toFixed(1); const cEntry = (loopCumulative[loopIndex] * 100).toFixed(1); let entry = "Eclipse #" + loopIndex.toString() + ": "; const fullEntry = entry + eEntry + "% (" + cEntry + "% cumulative)"; if (exactDisplay && cumulativeDisplay) { entry = fullEntry; } else if (cumulativeDisplay) { entry += cEntry + "%"; } else { entry += eEntry + "%"; } display[startDisplay + i] = entry; fullDisplay[startFullDisplay + i] = fullEntry; eclipses.push({ number: loopIndex, percent: eEntry, cumulative: cEntry }); } if (shouldDisplay) { console.log(fullDisplay.join("\n")); alert(display.join("\n")); } else { return { speed: lvSpeed, sync: lvSync, siphon: lvSiphon, cfOn: torchState, superSiphon, umbra, strStep, ucEclipse: useUConEclipse, steps, power, luck, avgFloor, avgHunts: Math.round(totalHunts), lootSigils: Math.round(sigils), lootSecrets: Math.round(secrets), cacheSigils: deltaCache[0], cacheSecrets: deltaCache[0], eclipses }; } } var cumulativeDisplay, exactDisplay, useUConEclipse, cacheLoot, normalAR, umbraAR, mouseDrops, mouseStats, simulator_default; var init_simulator = __esm({ "src/modules/location-huds/rift-valour/simulator.js"() { cumulativeDisplay = true; exactDisplay = false; useUConEclipse = false; cacheLoot = [ [0, 0], [7, 0], [16, 0], [24, 0], [32, 0], [40, 0], [48, 0], [50, 0], [59, 8], [69, 10], [80, 11], [88, 13], [98, 14], [107, 16], [118, 17], [120, 17], [135, 20], [150, 22], [165, 24], [182, 26], [199, 28], [217, 31], [235, 33], [254, 33], [272, 37], [290, 40], [308, 43], [325, 45], [342, 48], [357, 51], [372, 54], [386, 54], [399, 60], [410, 63], [421, 66], [430, 70], [439, 73], [446, 77], [453, 80], [459, 80], [464, 88], [469, 92], [473, 96], [477, 101], [480, 105], [482, 109], [485, 113], [487, 113], [489, 123], [490, 128], [492, 133], [493, 138], [494, 143], [495, 148], [495, 153], [496, 153], [497, 161], [497, 167], [497, 173], [498, 178], [498, 184], [498, 190], [499, 196], [500, 196], [500, 205], [500, 212], [500, 218], [500, 224], [500, 231], [500, 237], [500, 244], [500, 244], [500, 253], [500, 260], [500, 267], [500, 274], [500, 282], [500, 289], [500, 296], [500, 300] ]; normalAR = [ [0, 0, 0, 0], [0, 0, 0, 0], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0.08246, 0.05616, 0.04866, 0.04231], [0, 0, 0, 0], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0.01658, 0.02836, 0.04121], [0, 0, 0, 0], [0.17073, 0.06332, 0.06193, 0.08571], [0.04065, 0.01583, 0.02368, 0.01978], [0.03252, 0.01583, 0.02732, 0.01209], [0, 0.29288, 0.1184, 0.03626], [0, 0, 0.1275, 0.07473], [0, 0, 0, 0.09725], [0.17886, 0.1029, 0.102, 0.08956], [0, 0, 0, 0], [0, 0, 0, 0] ]; umbraAR = [ [0, 0, 0, 0], [0, 0, 0, 0], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0.066, 0.04129, 0.03857, 0.031], [0, 0, 0, 0], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0.01043, 0.01886, 0.036], [0, 0, 0, 0], [0.115, 0.072, 0.065, 0.056], [0.038, 0.023, 0.02, 0.017], [0.023, 0.014, 0.013, 9e-3], [0, 0.2311, 0.10806, 0.033], [0, 0, 0.098, 0.055], [0, 0, 0, 0.081], [0.183, 0.112, 0.102, 0.08], [0.179, 0.186, 0.192, 0.2], [0, 0, 0, 0] ]; mouseDrops = [ [0, 0, 0, 0, 1982], [0, 0, 0, 0, 4250], [0.60515, 0.60515, 0, 0, 1e3], [0.63774, 0.63774, 0, 0, 1250], [0.56444, 0.56444, 0, 0, 1500], [0.57674, 0.57674, 0, 0, 2e3], [0.63102, 0.63102, 0, 0, 2500], [0.57209, 0.57209, 0, 0, 3e3], [0.59, 0.59, 0, 0, 4e3], [2.40541, 0.98649, 0, 0, 25e3], [0.01, 0.01, 1.1, 1, 6e3], [0, 0, 1.1, 1, 6e3], [909e-5, 909e-5, 1.1, 1, 6e3], [0, 0, 1.1, 1, 6e3], [8e-3, 8e-3, 1.1, 1, 6e3], [826e-5, 826e-5, 1.1, 1, 6e3], [0.0315, 0.0315, 1.1, 1, 6e3], [3.82927, 1, 0, 0, 1e5], [0.0177, 0.0177, 0, 0, 2e3], [0, 0, 0, 0, 1500], [0.01429, 0.01429, 0, 0, 1e3], [643e-5, 643e-5, 1.1, 1, 5e3], [0, 0, 1.15, 1, 5e3], [0.02475, 0.02475, 1.75, 1, 8e3], [0.99597, 0.99396, 0, 0, 4795], [0, 0, 0, 0, 12e3], [0, 0, 0, 0, 0] ]; mouseStats = [ [3300, 1], [5050, 1], [2900, 1], [6650, 2], [8800, 3], [11750, 4], [16e3, 5], [21500, 6], [29e3, 7], [7e6, 1e3], [72e3, 9], [72e3, 9], [72e3, 9], [72e3, 9], [72e3, 9], [72e3, 9], [72e3, 9], [135e5, 1e3], [4800, 1.75], [8250, 1.75], [23e3, 1.75], [38e3, 10], [15e4, 25], [35e4, 50], [100, 2], [818250, 75], [1e30, 1] ]; simulator_default = simulate; } }); // src/modules/location-huds/rift-valour/index.js var displayResults, doSimulation, addUIComponents, modifyPlayerIcon, addSimulatorEvents, removeWarningIfUcEquipped, highlightQuantitiesIfUcEquipped, ifUcEquipped, rift_valour_default2; var init_rift_valour2 = __esm({ "src/modules/location-huds/rift-valour/index.js"() { init_utils2(); init_styles81(); init_simulator(); displayResults = (results) => { let eclipseText = ""; results.eclipses.forEach((eclipse) => { eclipseText += `<li> <span class="number">Eclipse ${eclipse.number}</span> <span class="percent ${eclipse.percent === "100.0" ? "guaranteed" : ""}">${eclipse.percent}%</span> <span class="cumulative ${eclipse.cumulative === "100.0" ? "guaranteed" : ""}">${eclipse.cumulative}%</span> </li>`; }); return `<div class="mh-vrift-sim-results"> <div class="stats"> <div class="result"> <div class="label">Speed</div> <div class="value">${results.speed}</div> </div> <div class="result"> <div class="label">Sync</div> <div class="value">${results.sync}</div> </div> <div class="result"> <div class="label">Avg. Highest Floor</div> <div class="value">${results.avgFloor}</div> </div> <div class="result"> <div class="label">Avg. Hunts</div> <div class="value">${results.avgHunts}</div> </div> <div class="result"> <div class="label">Sigils (Loot)</div> <div class="value">${results.lootSigils}</div> </div> <div class="result"> <div class="label">Secrets (Loot)</div> <div class="value">${results.lootSecrets}</div> </div> <div class="result"> <div class="label">Sigils (Cache)</div> <div class="value">${results.cacheSigils}</div> </div> <div class="result"> <div class="label">Secrets (Cache)</div> <div class="value">${results.cacheSecrets}</div> </div> </div> <div class="eclipses"> <ol> <li class="header"> <span class="number">#</span> <span class="percent">Chance</span> <span class="cumulative">Total</span> </li> ${eclipseText} </ol> </div> </div>`; }; doSimulation = (selector) => { const simPopup = document.querySelector(selector); if (!simPopup) { return; } simPopup.addEventListener("click", () => { const data = simulator_default(false); const popup = createPopup({ title: "Valour Rift Run Simulation", content: displayResults(data), show: false }); popup.setAttributes({ className: "mh-vrift-popup" }); popup.show(); }); }; addUIComponents = () => { var _a, _b; const existing = document.querySelector("#mh-vrift-floor-name"); if (existing) { existing.remove(); } const floor = document.querySelector(".valourRiftHUD-currentFloor"); if (floor) { const floorName = makeElement("div", "valourRiftHUD-floorName", (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestRiftValour) == null ? void 0 : _b.floor_name); floorName.id = "mh-vrift-floor-name"; floor.append(floorName); } const floorTooltipParent = document.querySelector(".valourRiftHUD-floorProgress.mousehuntTooltipParent"); if (!floorTooltipParent) { return; } const tooltip = floorTooltipParent.querySelector(".mousehuntTooltip"); if (!tooltip) { return; } tooltip.classList.add("bottom", "mh-vrift-floor-tooltip"); tooltip.classList.remove("top"); const stepsRemaining = tooltip.querySelector(".valourRiftHUD-stepsRemaining"); if (!stepsRemaining) { return; } const floorBar = document.querySelector(".valourRiftHUD-floorProgress-barContainer"); if (!floorBar) { return; } const stepsExisting = document.querySelector(".mh-vrift-steps-remaining"); if (stepsExisting) { stepsExisting.remove(); } makeElement("div", "mh-vrift-steps-remaining", stepsRemaining.textContent, floorBar); }; modifyPlayerIcon = () => { const playerIcon = document.querySelector(".valourRiftHUD-tower-sprite.player .valourRiftHUD-tower-sprite-image"); if (!playerIcon) { return; } let timeout; playerIcon.addEventListener("click", (event) => { if (event.shiftKey) { playerIcon.classList.toggle("mh-improved-player-large"); return; } playerIcon.classList.add("mh-improved-player-spin"); clearTimeout(timeout); timeout = setTimeout(() => { playerIcon.classList.remove("mh-improved-player-spin"); }, 700); }); }; addSimulatorEvents = () => { doSimulation(".valourRiftHUD-floorProgress-barContainer"); const magnifyingGlass = document.querySelector(".valourRiftHUD-previewTower"); if (!magnifyingGlass) { return; } const existing = document.querySelector(".mh-vrift-sim-link"); if (existing) { existing.remove(); } const simLink = makeElement("a", ["valourRiftHUD-previewTower", "mh-vrift-sim-link"], "Simulate Run"); simLink.title = "Simulate Valour Rift Run"; magnifyingGlass.after(simLink); doSimulation(".mh-vrift-sim-link"); }; removeWarningIfUcEquipped = () => { const warningContainer = document.querySelector(".valourRiftHUD-warningContainer.active"); if (!warningContainer) { return; } warningContainer.classList.remove("hidden"); const powerTypeWarning = warningContainer.querySelector(".valourRiftHUD-powerTypeWarning.active"); if (!powerTypeWarning) { return; } powerTypeWarning.classList.remove("hidden"); if (1075 == user.trinket_item_id) { warningContainer.classList.add("hidden"); powerTypeWarning.classList.add("hidden"); } }; highlightQuantitiesIfUcEquipped = () => __async(void 0, null, function* () { const selectors = [ ".valourRiftHUD-gauntletBait-quantity.quantity", ".valourRiftHUD-towerLoot-quantity.quantity", ".valourRiftHUD-powerUp-currentLevel" ]; selectors.forEach((selector) => { const existing = document.querySelectorAll(selector); if (!existing) { return; } existing.forEach((e) => { if (1075 == user.trinket_item_id) { e.classList.add("uc-text-highlight"); } else { e.classList.remove("uc-text-highlight"); } }); }); }); ifUcEquipped = () => { removeWarningIfUcEquipped(); highlightQuantitiesIfUcEquipped(); }; rift_valour_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default80); addUIComponents(); addSimulatorEvents(); modifyPlayerIcon(); onTrapChange(ifUcEquipped); }); } }); // src/modules/location-huds/rift-whisker-woods/styles.css var styles_default81; var init_styles82 = __esm({ "src/modules/location-huds/rift-whisker-woods/styles.css"() { styles_default81 = '.riftWhiskerWoodsHUD-zone-title{right:20%;left:20%;font-size:12px}span.riftWhiskerWoodsHUD-zone-rageLevel{padding-top:0;margin-top:-3px;font-size:18px}span.riftWhiskerWoodsHUD-zone-rageMax{position:unset;display:block;font-size:10px}.riftWhiskerWoodsHUD-zone-rageContainer{top:-9px;left:-4px;display:flex;flex-direction:column;align-items:center;justify-content:center;width:40px;height:40px;background:#5b3b1a;border-radius:10px;box-shadow:0 0 1px 2px inset #b78c5c,0 0 3px 3px inset #292928}.riftWhiskerWoodsHUD-baitWarning{right:20%;left:20%;padding:10px 60px;font-size:12px;text-align:center;background-color:#ffa5a5;border-color:#992023}.riftWhiskerWoodsHUD-zone-charm-quantity.quantity{width:30px;font-size:12px}.riftWhiskerWoodsHUD-zone .mousehuntArmNowButton{right:-2px}.riftWhiskerWoodsHUD-zone-charm-craftingItem{display:grid;grid-template-columns:1fr;place-items:center}.riftWhiskerWoodsHUD-zone-charm-craftingItem-container{display:inline-flex;align-items:stretch;width:270px}.riftWhiskerWoodsHUD-zone-charm-craftButtonContainer{width:110px}.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity{display:grid;grid-template-columns:1fr 1fr;gap:3px;align-items:end}.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity br{display:none}.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity-label{display:block;margin:0}.riftWhiskerWoodsHUD-zone-charm-craftingItem .itemName{display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:center;margin-bottom:4px}.riftWhiskerWoodsHUD-zone-charm-craftButton{display:inline-block;float:none;width:30px}.riftWhiskerWoodsHUD-zone-charm-craftButtonMargin{margin-right:0}.riftWhiskerWoodsHUD-zone-charm-description>b{display:inline-block;padding-bottom:5px;font-size:11px;text-align:center}.riftWhiskerWoodsHUD:hover .riftWhiskerWoodsHUD-zone.boss .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:focus .riftWhiskerWoodsHUD-zone.boss .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:hover .riftWhiskerWoodsHUD-zone.high .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:focus .riftWhiskerWoodsHUD-zone.high .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:hover .riftWhiskerWoodsHUD-zone.low .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:focus .riftWhiskerWoodsHUD-zone.low .riftWhiskerWoodsHUD-zone-progress:after{position:absolute;top:0;bottom:0;left:9px;display:flex;align-items:center;padding:2px;font-size:14px;text-shadow:1px 1px #000;content:"Low";background-color:#0006}.riftWhiskerWoodsHUD:hover .riftWhiskerWoodsHUD-zone.high .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:focus .riftWhiskerWoodsHUD-zone.high .riftWhiskerWoodsHUD-zone-progress:after{content:"High"}.riftWhiskerWoodsHUD:hover .riftWhiskerWoodsHUD-zone.boss .riftWhiskerWoodsHUD-zone-progress:after,.riftWhiskerWoodsHUD:focus .riftWhiskerWoodsHUD-zone.boss .riftWhiskerWoodsHUD-zone-progress:after{content:"Boss"}.boss .riftWhiskerWoodsHUD-zone-rageContainer{box-shadow:0 0 1px 3px inset #b72929,0 0 1px 2px inset #b78c5c,0 0 3px 3px inset #292928}.mhui-taunting-warning{top:36px;left:150px;width:414px;padding:10px 20px;border-color:#992023}.mhui-taunting-warning-close{position:absolute;top:-6px;right:-6px;z-index:15;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:18px;height:17px;padding:5px;font-size:12px;font-weight:700;line-height:15px;color:#fff;text-align:center;background-color:#e03a3a;border:1px solid #992023;border-color:#d1d0cf;border-radius:20px}.mhui-taunting-warning-close:hover{color:#ffb4b4;background-color:#992023}\n'; } }); // src/modules/location-huds/rift-whisker-woods/index.js var hasHiddenTauntingWarning, showTauntingWarning, checkAndWarnWhenNoTauntingCharm, rift_whisker_woods_default; var init_rift_whisker_woods = __esm({ "src/modules/location-huds/rift-whisker-woods/index.js"() { init_utils2(); init_styles82(); hasHiddenTauntingWarning = false; showTauntingWarning = () => { const existing = document.querySelector(".mhui-taunting-warning"); if (existing) { return; } const baitWarning = document.querySelector(".riftWhiskerWoodsHUD-bossBaitWarning"); if (!baitWarning) { return; } if (hasHiddenTauntingWarning) { return; } const warning = baitWarning.cloneNode(true); warning.classList.add("mhui-taunting-warning", "active"); warning.innerHTML = "You don't have a Taunting Charm equipped! You will reset your rage!"; const warningClose = makeElement("div", "mhui-taunting-warning-close"); warningClose.innerHTML = "\xD7"; warningClose.onclick = (e) => { e.preventDefault(); hasHiddenTauntingWarning = true; warning.classList.remove("active"); }; warning.append(warningClose); baitWarning.after(warning); }; checkAndWarnWhenNoTauntingCharm = () => { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; if ("1647" == user.trinket_item_id) { return; } const rage = { clearing: ((_d = (_c = (_b = (_a = user.quests) == null ? void 0 : _a.QuestRiftWhiskerWoods) == null ? void 0 : _b.zones) == null ? void 0 : _c.clearing) == null ? void 0 : _d.level) || 0, lagoon: ((_h = (_g = (_f = (_e = user.quests) == null ? void 0 : _e.QuestRiftWhiskerWoods) == null ? void 0 : _f.zones) == null ? void 0 : _g.lagoon) == null ? void 0 : _h.level) || 0, tree: ((_l = (_k = (_j = (_i = user.quests) == null ? void 0 : _i.QuestRiftWhiskerWoods) == null ? void 0 : _j.zones) == null ? void 0 : _k.tree) == null ? void 0 : _l.level) || 0 }; if (rage.clearing > 48 || rage.lagoon > 48 || rage.tree > 48 || // eslint-disable-next-line eqeqeq "1646" == user.bait_item_id) { showTauntingWarning(); } }; rift_whisker_woods_default = () => __async(void 0, null, function* () { addHudStyles(styles_default81); checkAndWarnWhenNoTauntingCharm(); onRequest("*", checkAndWarnWhenNoTauntingCharm); }); } }); // src/modules/location-huds/seasonal-garden/styles.css var styles_default82; var init_styles83 = __esm({ "src/modules/location-huds/seasonal-garden/styles.css"() { styles_default82 = '.seasonalGardenHUD-season.sg,.seasonalGardenHUD-season.sr,.seasonalGardenHUD-season.fl,.seasonalGardenHUD-season.wr{background:url(https://i.mouse.rip/seasonal-garden-season.png) no-repeat 0 0;transform:scale(1.3);transform-origin:bottom}.seasonalGardenHUD{background:url(https://i.mouse.rip/seasonal-garden-hud.png) no-repeat 0 0}.seasonalGardenHUD-season.sg:after,.seasonalGardenHUD-season.sr:after,.seasonalGardenHUD-season.fl:after,.seasonalGardenHUD-season.wr:after{position:absolute;inset:0;content:""}.seasonalGardenHUD-season.sg:after{background-image:url(https://www.mousehuntgame.com/images/ui/hud/spring_icon.png?asset_cache_version=2)}.seasonalGardenHUD-season.sr:after{background-image:url(https://www.mousehuntgame.com/images/ui/hud/summer_icon.png?asset_cache_version=2)}.seasonalGardenHUD-season.fl:after{background-image:url(https://www.mousehuntgame.com/images/ui/hud/fall_icon.png?asset_cache_version=2)}.seasonalGardenHUD-season.wr:after{background-image:url(https://www.mousehuntgame.com/images/ui/hud/winter_icon.png?asset_cache_version=2)}.seasonalGardenHUD-currentAmplifier{top:19px;font-size:15px;text-shadow:1px 1px 0 #ded3c1}.seasonalGardenHUD-currentAmplifier:before{position:absolute;top:-15px;left:10px;width:125px;padding:0 20px;font-size:12px;font-weight:900;color:#765e4c;content:"Tower Amplifier";background:radial-gradient(circle,#dac8ab 14%,#efe2cd 76%,transparent 100%)}.seasonalGardenHUD-maxAmplifier{top:34px;left:60px;display:flex;align-items:center;justify-content:center;width:75px;height:14px;padding:3px;text-align:center;background:radial-gradient(circle,#dac8ab 14%,#d7c1a4 76%,#c4b096);border-bottom-right-radius:40px;border-bottom-left-radius:40px}.seasonalGardenHUD-maxAmplifier:before{content:"Max:"}span.seasonalGardenHUD-maxAmplifier-value{font-size:15px;color:#000;text-shadow:1px 1px 0 #ded3c1}.seasonalGardenHUD-amplifierBoundingBox{width:80px;border-radius:30px}.seasonalGardenHUD-amplifierProgress{overflow:hidden}.seasonalGardenHUD-currentAmplifier:after{position:absolute;top:0;right:-6px;width:12px;height:19px;content:"";background:linear-gradient(249deg,#f6e5d0,#dfc9aa);border-top-left-radius:5px;border-bottom-left-radius:7px}.seasonalGardenHUD-amplifierProgress-bar{transition:width .2s cubic-bezier(.175,.885,.32,1.275);transform-origin:left;will-change:transform}.seasonalGardenHUD-amplifierProgress-bar--animating{animation:.3s mh-improved-bounce-and-stretch 2}@media (prefers-reduced-motion: reduce){.seasonalGardenHUD-amplifierProgress-bar--animating{animation:none}}.seasonalGardenHUD-amplifierBoundingBox .mousehuntTooltip{top:-10px;left:120px;width:460px;font-size:11px;line-height:1.6}.seasonalGardenHUD-amplifierBoundingBox .mousehuntTooltip .mousehuntTooltip-arrow{display:none}\n'; } }); // src/modules/location-huds/seasonal-garden/index.js var makeProgressDraggable, changeBarColor, seasonal_garden_default; var init_seasonal_garden2 = __esm({ "src/modules/location-huds/seasonal-garden/index.js"() { init_utils2(); init_styles83(); makeProgressDraggable = () => { const progressBar = document.querySelector(".seasonalGardenHUD-amplifierProgress"); if (!progressBar) { return; } const progressBarMarker = document.querySelector(".seasonalGardenHUD-amplifierProgress-bar"); if (!progressBarMarker) { return; } const originalWidth = progressBarMarker.style.width; let timeout = null; progressBar.addEventListener("click", (e) => { const rect = progressBar.getBoundingClientRect(); const x = e.clientX - rect.left; const width = rect.width; const percent = Math.round(x / width * 100); progressBarMarker.style.width = `${percent}%`; setTimeout(() => { progressBarMarker.classList.add("seasonalGardenHUD-amplifierProgress-bar--animating"); }, 50); if (timeout) { clearTimeout(timeout); } timeout = setTimeout(() => { progressBarMarker.style.width = originalWidth; setTimeout(() => { progressBarMarker.classList.remove("seasonalGardenHUD-amplifierProgress-bar--animating"); }, 300); }, 600); }); }; changeBarColor = () => { const trigger = document.querySelector(".seasonalGardenHUD-season"); if (!trigger) { return; } const bar = document.querySelector(".seasonalGardenHUD-amplifierProgress-bar"); if (!bar) { return; } trigger.addEventListener("click", () => { const hue = Math.round(Math.random() * 360); bar.style.filter = `hue-rotate(${hue}deg)`; }); }; seasonal_garden_default = () => __async(void 0, null, function* () { addHudStyles(styles_default82); makeProgressDraggable(); changeBarColor(); }); } }); // src/modules/location-huds/slushy-shoreline/index.js var slushy_shoreline_default; var init_slushy_shoreline = __esm({ "src/modules/location-huds/slushy-shoreline/index.js"() { init_cheese_selectors(); slushy_shoreline_default = () => __async(void 0, null, function* () { cheese_selectors_default("slushy-shoreline", ["toxic_super_brie_cheese"]); }); } }); // src/modules/location-huds/ss-huntington-ii/index.js var ss_huntington_ii_default; var init_ss_huntington_ii = __esm({ "src/modules/location-huds/ss-huntington-ii/index.js"() { init_cheese_selectors(); ss_huntington_ii_default = () => __async(void 0, null, function* () { cheese_selectors_default("ss-huntington-ii", ["galleon_gouda_cheese"]); }); } }); // src/modules/location-huds/sunken-city/styles.css var styles_default83; var init_styles84 = __esm({ "src/modules/location-huds/sunken-city/styles.css"() { styles_default83 = '.sunkenCityHud .leftSidebar{border:1px solid #333}.sunkenCityHud .leftSidebar .craftingItems{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:98px;padding:0;border-color:#7e7e7e;border-radius:0}.sunkenCityHud .leftSidebar .craftingItems a{line-height:initial;border-bottom:1px solid #7e7e7e;border-radius:0}.sunkenCityHud .leftSidebar .craftingItems a:first-child{margin-top:-3px}.sunkenCityHud .leftSidebar .craftingItems a:last-child{border-bottom:none}.sunkenCityHud .leftSidebar .craftingItems a img{width:30px;height:30px;border-radius:10px}.sunkenCityHud .leftSidebar .craftingItems a .item.quantity{display:inline-block;font-size:14px;vertical-align:middle}.sunkenCityHud .sunkenCharms{top:0;right:131px;bottom:0;display:grid;grid-template-columns:1fr 1fr;place-items:center stretch;padding-right:3px;background:#333;border:1px solid #7e7e7e;border-radius:5px 0 0 5px}.sunkenCityHud .sunkenCharms a{position:initial;padding:0 1px;margin-left:2px;background-color:#646465;border:none;border-radius:9px}.sunkenCityHud .sunkenCharms a.active{margin-left:2px;background-color:#19a0b8}.sunkenCityHud .sunkenCharms a .toolTip{top:10px;right:130px;left:unset;font-size:10px}.sunkenCityHud .sunkenCharms a .toolTip .arrow{display:none}.sunkenCityHud .sunkenCharms a:last-child,.sunkenCityHud .sunkenCharms a:nth-child(5){border-bottom:none}.sunkenCityHud .sunkenCharms a .itemImage{float:none;width:unset;height:unset}.sunkenCityHud .sunkenCharms a .clear-block{display:flex;align-items:center;justify-content:space-around}.sunkenCityHud .sunkenCharms a .quantity{margin-left:3px;font-size:13px;line-height:initial}.sunkenCityHud .sunkenCharms a .itemImage img{display:inline-block;width:25px;height:25px}.sunkenCityHud .sunkenCharms a .armNow,.sunkenCityHud .sunkenCharms a.disabled .armNow{display:none}.sunkenCityHud .sidebar,.sunkenCityHud .sidebarBox{width:130px}.sunkenCityHud .sidebar{height:98px;border:1px solid #7e7e7e;border-bottom-right-radius:3px}.sunkenCityHud .sidebar .oxygen{color:transparent}.sunkenCityHud .sidebar .oxygen .item,.sunkenCityHud .sidebar .oxygen .item.long{margin-left:3px;font-size:13px}.sunkenCityHud .sidebar .oxygen .item:after{position:absolute;width:25px;margin-left:10px;font-size:12px;color:#000;text-align:left;content:"O\\2082"}.sunkenCityHud .sidebar .diveButton{width:35px;height:20px;padding:2px;margin-right:3px;font-size:9px;line-height:22px;text-align:center;box-shadow:3px 3px 3px #ee9d47 inset,-5px -5px 50px #c66c0c inset}.sunkenCityHud .sidebarTitle{font-size:14px;letter-spacing:3px;background-color:#474747;border:none}.sunkenCityHud .sidebarContent{display:flex;flex-direction:column;justify-content:center;height:39px;border:none}.sunkenCityHud .sidebarContent .zoneName{padding-top:0;line-height:.9}.sunkenCityHud .diveControls{display:flex;align-items:center;border-top:1px solid #8b93a9;box-shadow:0 0 20px #fff inset,0 -6px 7px #4b587d inset}.sunkenCityHud .baitWarning{bottom:30%;left:154px;width:330px;font-size:12px;line-height:15px;color:#000;background-color:#ffbfbf;border-radius:10px;box-shadow:none}\n'; } }); // src/modules/location-huds/sunken-city/index.js var updateHudImages, makeCharmElement, addMoreCharms, hud7, sunken_city_default2; var init_sunken_city2 = __esm({ "src/modules/location-huds/sunken-city/index.js"() { init_utils2(); init_styles84(); updateHudImages = () => { const upscaleMapping = { "/crafting_items/thumbnails/1a7897042ba8f3fa31fa6805404456d6.gif": "/crafting_items/transparent_thumb/9197ccdec26278bfb07ab7846b1a2648.png", // damaged coral. "/crafting_items/thumbnails/4aaa6478c10308ac865507e4d7915b3c.gif": "/crafting_items/transparent_thumb/d7f3f77c87ea7849a2ec8bc3f7d05b74.png", // mouse scale. "/crafting_items/thumbnails/e12ed1306d81665278952d4b4349b495.gif": "/crafting_items/transparent_thumb/5057d634368131d5ab4ad62bf0963800.png", // barnacle. "/bait/1f6237cebe21954e53d6586b2cbdfe39.gif": "/bait/transparent_thumb/0d27e0c72c3cbdc8e9fe06fb7bdaa56d.png", // fishy fromage. "/trinkets/555bb67ba245aaf2b05db070d2b4cfcb.gif": "/trinkets/transparent_thumb/be6749a947b746fbece2754d9bd02f74.png", // anchor. "/trinkets/5f56cb017ff9414e584ced35b2491aef.gif": "/trinkets/transparent_thumb/2dc6b3e505fd1eaac8c6069937490386.png" // water jet. }; const upscaleImage = (image) => { const normalizedImage = image.src.replace("https://www.mousehuntgame.com/images/items", "").replace("?cv=1", "").replace("?cv=2", "").replace("?v=1", "").replace("?v=2", ""); if (upscaleMapping[normalizedImage]) { image.src = `https://www.mousehuntgame.com/images/items/${upscaleMapping[normalizedImage]}?cv=2`; } }; const hudImages = document.querySelectorAll(".sunkenCityHud .leftSidebar .craftingItems a img"); hudImages.forEach((image) => { upscaleImage(image); }); const baitImage = document.querySelector(".sunkenCityHud .sunkenBait .itemImage img"); if (baitImage) { upscaleImage(baitImage); } const charms = document.querySelectorAll(".sunkenCityHud .sunkenCharms a .itemImage img"); charms.forEach((charm) => { upscaleImage(charm); }); }; makeCharmElement = (charm, appendTo) => { const existing = document.querySelector(`.mhui-sunken-charm[data-item-type="${charm.type}"]`); if (existing) { existing.remove(); } const wrapper = makeElement("a", ["charm", "mhui-sunken-charm"]); if (user.trinket_item_id == charm.item_id) { wrapper.classList.add("active"); } wrapper.setAttribute("href", "#"); wrapper.setAttribute("data-item-type", charm.type); wrapper.setAttribute("data-item-classification", "trinket"); wrapper.setAttribute("title", charm.name); wrapper.setAttribute("onclick", "app.views.HeadsUpDisplayView.hud.sunkenCityArmItem(this);return false;"); const clearBlock = makeElement("div", "clear-block"); const itemImage = makeElement("div", "itemImage"); const image = makeElement("img"); image.setAttribute("src", charm.thumbnail_transparent); itemImage.append(image); clearBlock.append(itemImage); const quantity = makeElement("div", "item quantity", charm.quantity); quantity.setAttribute("data-item-type", charm.type); clearBlock.append(quantity); wrapper.append(clearBlock); if ("smart_water_jet_trinket" == charm.type) { charm.description = "Overcharge your engine for a 500m boost with an automatic unequip after the hunt."; } else if ("brilliant_water_jet_trinket" == charm.type) { charm.description = "Supercharge your engine for a boost to the end of the current zone!"; } else if ("spiked_anchor_trinket" == charm.type) { charm.description = "Slow down your sub while also boosting your power!"; } else if ("golden_anchor_trinket" == charm.type) { charm.description = "Set your sub to super-slow and also find additional sand dollars!"; } const toolTip = makeElement("div", "toolTip"); toolTip.innerHTML = `<b>${charm.name}s</b><br>${charm.description}`; wrapper.append(toolTip); appendTo.append(wrapper); }; addMoreCharms = () => __async(void 0, null, function* () { const charmsWrapper = document.querySelector(".sunkenCityHud .sunkenCharms"); if (!charmsWrapper) { return; } const existingCharms = charmsWrapper.querySelectorAll(".mhui-sunken-charm"); for (const charm of existingCharms) { charm.remove(); } const itemsData = yield getUserItems([ "spiked_anchor_trinket", "smart_water_jet_trinket", "golden_anchor_trinket", "brilliant_water_jet_trinket" ]); if (user.trinket_item_id == 1517) { const waterJetCharm = document.querySelector('.sunkenCityHud .sunkenCharms a[data-item-type="water_jet_trinket"]'); if (waterJetCharm) { waterJetCharm.classList.add("active"); } } if (user.trinket_item_id == 423) { const anchorCharm = document.querySelector('.sunkenCityHud .sunkenCharms a[data-item-type="anchor_trinket"]'); if (anchorCharm) { anchorCharm.classList.add("active"); } } for (const item of itemsData) { makeCharmElement(item, charmsWrapper); } }); hud7 = () => { updateHudImages(); addMoreCharms(); }; sunken_city_default2 = () => __async(void 0, null, function* () { addHudStyles(styles_default83); hud7(); }); } }); // src/modules/location-huds/table-of-contents/styles.css var styles_default84; var init_styles85 = __esm({ "src/modules/location-huds/table-of-contents/styles.css"() { styles_default84 = ".folkloreForestRegionView-libraryStatsContainer{display:grid;grid-template-columns:1fr 1fr 1fr;justify-items:center;margin:10px 0 10px 10px}.folkloreForestRegionView-libraryStats.bestBook{padding:10px 15px;margin:10px 0;border:1px solid #2e602b;border-top:none;border-radius:30px}.folkloreForestRegionView-libraryStats.bestBook:after{display:none}.folkloreForestRegionView-libraryStats-label{max-width:130px;height:unset;padding:5px;font-size:13px;font-weight:400}.folkloreForestRegionView-libraryStats.bestBook .folkloreForestRegionView-libraryStats-value{gap:10px}.folkloreForestRegionView-libraryBestBook-name{min-width:100px;margin-bottom:5px;font-size:13px;line-height:15px}.folkloreForestRegionView-libraryStats.bestBook .folkloreForestRegionView-libraryStats-label{position:absolute;top:-16px;left:-10px;max-width:unset;padding:5px 10px;background-color:#6a9e43;border-radius:10px;box-shadow:0 1px 5px #070707;rotate:-10deg}.folkloreForestRegionView-libraryStats{display:flex;flex-direction:column;align-items:center;width:210px}.folkloreForestRegionView-libraryStats-value{height:unset}.folkloreForestRegionView-libraryStats-value.longestWritingSession{display:flex;flex-direction:row;column-gap:5px;align-items:baseline;justify-content:center;margin-left:30px}.folkloreForestRegionView-libraryBooksContainer{display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:center;padding-bottom:20px}.folkloreForestRegionView-libraryBook{width:auto;min-width:150px}.folkloreForestRegionView-libraryBook-words{font-size:12px;color:#b4c2ab}.folkloreForestRegionView-libraryBook-name{font-size:14px;font-weight:400}.folkloreForestRegionView-libraryBook-quantity{font-size:30px;color:#81eb00;text-shadow:1px 1px 1px #143706,0 1px 1px #143706,1px 0 1px #143706,0 0 1px #143706;filter:drop-shadow(0 0 2px #000)}.folkloreForestRegionView-libraryStats-value.bigText{color:#81eb00;text-shadow:1px 1px 1px #143706,0 1px 1px #143706,1px 0 1px #143706,0 0 1px #143706}.folkloreForestRegionView-libraryStats.totalWords{flex:1}.folkloreForestRegionView-libraryBook.disabled .tableOfContentsView-bookCover{filter:opacity(.8) grayscale(1)}.folkloreForestRegionView-libraryBook.disabled .folkloreForestRegionView-libraryBook-name{color:#979797}#overlayPopup.fabledForestDialog .title{font-size:19px;letter-spacing:1px}.tableOfContentsProgressView-nextBookContainer{position:absolute;bottom:-33px;padding:3px;font-size:11px;white-space:nowrap;background-color:#fdebab;box-shadow:0 1px 1px 1px #f1b960;transform:translate(-50%)}.tableOfContentsView-wordMeter-value{margin-right:2px;font-size:14px;border-radius:3px}.tableOfContentsProgressView-nextBook-wordsRequired{text-decoration:none}.tableOfContentsProgressView-book-huntsRemaining span{font-size:13px}.tableOfContentsProgressView-book-wordCount{margin:10px 0 5px}a.tableOfContentsProgressView-claimButton.reveal{filter:hue-rotate(80deg) brightness(1.2)}.tableOfContentsClaimDialogView-miceLoot .itemImage .quantity{font-size:13px;background-color:#fff9}.folkloreForestRegionView-boost{display:none}.tableOfContentsView-initialFuel-checkboxContainer{background-color:transparent}.tableOfContentsProgressView-progressBar-value{filter:sepia(1)}.tableOfContentsProgressView-progressBar{background:none;box-shadow:none}.tableOfContentsProgressView-cancelButton.active{top:-31px;left:338px;border-radius:50%;box-shadow:0 0 0 4px #48762a,inset 0 -1px 3px 1px #d7a086}\n"; } }); // src/modules/location-huds/table-of-contents/index.js var updateWordLootQuantity, updateNextWordCount, table_of_contents_default2; var init_table_of_contents2 = __esm({ "src/modules/location-huds/table-of-contents/index.js"() { init_utils2(); init_folklore_forest2(); init_styles58(); init_styles85(); updateWordLootQuantity = () => { const lootSpan = document.querySelector(".tableOfContentsView-wordMeter-value"); if (!lootSpan) { return; } const loot = lootSpan.innerText; const lootParts = loot.split("-"); if (lootParts.length > 1 && lootParts[0] === lootParts[1]) { lootSpan.innerText = lootParts[0]; } }; updateNextWordCount = () => { const wordsRequired = document.querySelector(".tableOfContentsProgressView-nextBook-wordsRequired"); if (!wordsRequired) { return; } wordsRequired.innerText = wordsRequired.getAttribute("title").replace(" words", ""); }; table_of_contents_default2 = () => __async(void 0, null, function* () { addHudStyles([styles_default57, styles_default84]); folklore_forest_default2(); updateWordLootQuantity(); onRequest("environment/table_of_contents.php", updateWordLootQuantity); updateNextWordCount(); onTurn(() => { updateNextWordCount(); setTimeout(updateNextWordCount, 500); setTimeout(updateNextWordCount, 1e3); }); }); } }); // src/modules/location-huds/tournament-hall/index.js var tournament_hall_default; var init_tournament_hall = __esm({ "src/modules/location-huds/tournament-hall/index.js"() { init_cheese_selectors(); tournament_hall_default = () => __async(void 0, null, function* () { cheese_selectors_default("tournament-hall", ["runny_cheese"]); }); } }); // src/modules/location-huds/town-of-digby/index.js var town_of_digby_default; var init_town_of_digby = __esm({ "src/modules/location-huds/town-of-digby/index.js"() { init_cheese_selectors(); town_of_digby_default = () => __async(void 0, null, function* () { cheese_selectors_default("town-of-digby", ["limelight_cheese"]); }); } }); // src/modules/location-huds/town-of-gnawnia/styles.css var styles_default85; var init_styles86 = __esm({ "src/modules/location-huds/town-of-gnawnia/styles.css"() { styles_default85 = ".townOfGnawniaHUD-intro{line-height:17px}.townOfGnawniaHUD-bountyRewardContainer{background:#e5c9a8 url(https://www.mousehuntgame.com/images/items/stats/large/f659a8a07d3877df4165b188f13bb0db.png) 5px 0 no-repeat;background-size:contain}.townOfGnawniaHUD-mouse-bait-thumb{background-color:#c19d74;outline:2px solid #886843}.townOfGnawniaHUD-mouse-bait-name{font-size:13px}.townOfGnawniaHUD-mouse-image.reveal{animation-name:town-of-gnawnia-mouse-reveal-new}@media screen and (prefers-reduced-motion: reduce){.townOfGnawniaHUD-mouse-image{animation:none}}@keyframes town-of-gnawnia-mouse-reveal-new{0%{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}\n"; } }); // src/modules/location-huds/town-of-gnawnia/index.js var town_of_gnawnia_default; var init_town_of_gnawnia = __esm({ "src/modules/location-huds/town-of-gnawnia/index.js"() { init_utils2(); init_styles86(); town_of_gnawnia_default = () => __async(void 0, null, function* () { addHudStyles(styles_default85); }); } }); // src/modules/location-huds/train-station/styles.css var styles_default86; var init_styles87 = __esm({ "src/modules/location-huds/train-station/styles.css"() { styles_default86 = ".pendingTrainContainer .trainTableBody{height:340px}.trainStationHUD{height:400px}.trainStationHUD .trainStationPhase .wrongEnvironment b{position:absolute;top:-41px;box-sizing:border-box;height:32px;padding:3px 10px;font-weight:400;line-height:30px;vertical-align:middle;background-color:#ffbfbf}.mousehuntHud-marbleDrawer .tournamentStatusHud.hasError.train{height:32px;overflow:hidden}.pendingTrainContainer .trainRow:hover,.pendingTrainContainer .trainRow:nth-child(2n):hover{background-color:#645052}\n"; } }); // src/modules/location-huds/train-station/index.js var train_station_default; var init_train_station = __esm({ "src/modules/location-huds/train-station/index.js"() { init_utils2(); init_styles87(); train_station_default = () => __async(void 0, null, function* () { addHudStyles(styles_default86); }); } }); // src/modules/location-huds/windmill/styles.css var styles_default87; var init_styles88 = __esm({ "src/modules/location-huds/windmill/styles.css"() { styles_default87 = '.windmillHud-helpContainer-section-quantity{font-size:12px;font-weight:49;color:#000}.windmillHud-bossContainer.complete:after{position:absolute;inset:0;display:block;content:"";background:url(https://www.mousehuntgame.com/images/ui/hud/windmill/boss.png?asset_cache_version=3) 0 100% no-repeat;filter:drop-shadow(2px 4px 4px #16240a)}.windmillHud-helpContainer-section-content{top:-5px;right:0;left:57px;height:80px;line-height:13px}.windmillHud-helpContainer-section-title{margin-bottom:5px}.windmillHud-bonusContainer{top:34px;left:110px;display:flex;align-items:center;justify-content:center;width:105px;height:67px;padding:0;font-size:11px;text-align:center}.windmillHud-bonusContainer.none .windmillHud-bonus.none,.windmillHud-bonusContainer.low .windmillHud-bonus.low,.windmillHud-bonusContainer.ultra_low .windmillHud-bonus.ultra_low,.windmillHud-bonusContainer.medium .windmillHud-bonus.medium,.windmillHud-bonusContainer.high .windmillHud-bonus.high,.windmillHud-bonusContainer.max .windmillHud-bonus.max{line-height:1.4}.windmillHud-bonusContainer.none{font-size:13px}.windmillHud-bonusContainer.low .windmillHud-bonus.low,.windmillHud-bonusContainer.medium .windmillHud-bonus.medium{font-size:12px}.windmillHud-speed{left:17px;display:flex;align-items:center;justify-content:center;width:80px;height:20px;font-size:13px;font-weight:900;user-select:none}.windmillHud-speed span{margin-right:5px}\n'; } }); // src/modules/location-huds/windmill/index.js var start, spinNeedle, windmill_default; var init_windmill = __esm({ "src/modules/location-huds/windmill/index.js"() { init_utils2(); init_styles88(); spinNeedle = () => { const needle = document.querySelector(".windmillHud-needle"); if (!needle) { return; } const speed = document.querySelector(".windmillHud-speed"); if (!speed) { return; } start = needle.style.transform.match(/rotate\(([^)]+)\)/); if (!start.length > 1) { return; } start = Number.parseInt(start[1].replace("deg", ""), 10); let timeout; let spins = 1; speed.addEventListener("click", () => { needle.style.transition = "transform 0.4s"; needle.style.transform = `rotate(${start + 360 * spins}deg)`; spins += 1; clearTimeout(timeout); timeout = setTimeout(() => { needle.style.transition = "none"; needle.style.transform = `rotate(${start}deg)`; spins = 1; }, spins * 400); }); }; windmill_default = () => __async(void 0, null, function* () { addHudStyles(styles_default87); spinNeedle(); }); } }); // src/modules/location-huds/zugzwang-tower/styles.css var styles_default88; var init_styles89 = __esm({ "src/modules/location-huds/zugzwang-tower/styles.css"() { styles_default88 = '.zuzwangsTowerHUD-progress{overflow:visible;counter-reset:chess 0}.zuzwangsTowerHUD-progress img{position:relative;display:inline-block;counter-increment:chess 1}.zuzwangsTowerHUD:hover .zuzwangsTowerHUD-progress:after{position:absolute;top:0;right:0;display:block;padding:2px;margin-right:-40px;font-size:10px;color:#000;content:counter(chess) "/15";background-color:#dcccb3;border-radius:10px}.zuzwangsTowerHUD-amplifierBoundingBox .mousehuntTooltip{left:86px}.zuzwangsTowerHUD-amplifierBoundingBox .mousehuntTooltip .mousehuntTooltip-arrow{display:none}.zuzwangsTowerHUD-currentAmplifier{top:19px;font-size:15px;text-shadow:1px 1px 0 #ded3c1}.zuzwangsTowerHUD:before{position:absolute;top:4px;left:125px;padding:0 20px;font-size:12px;font-weight:900;color:#765e4c;content:"Tower Amplifier";background:radial-gradient(circle,#dac8ab 14%,#efe2cd 76%,transparent 100%)}a.zugzwangsTowerHUD-retreatButton.mousehuntTooltipParent{top:95px}.zugzwangsTowerHUD-retreatButton:hover{background-color:#7d2b2b}\n'; } }); // src/modules/location-huds/zugzwang-tower/index.js var zugzwang_tower_default; var init_zugzwang_tower2 = __esm({ "src/modules/location-huds/zugzwang-tower/index.js"() { init_utils2(); init_styles89(); zugzwang_tower_default = () => __async(void 0, null, function* () { addHudStyles(styles_default88); }); } }); // src/modules/location-huds/region-living-garden/styles.css var styles_default89; var init_styles90 = __esm({ "src/modules/location-huds/region-living-garden/styles.css"() { styles_default89 = '.livingGardenHud .essenceContainer .item{padding-top:26px;padding-bottom:5px;font-size:14px;text-shadow:0 0 4px #5e5e5e}.livingGardenHud .itemContainer .itemImage .quantity{right:1px;bottom:1px;padding:2px 3px;font-size:12px;font-weight:400}.livingGardenHud.desert_oasis .minigameContainer .pourEstimate{top:45px;font-size:12px}.livingGardenHud.desert_oasis.corrupted .minigameContainer.drops .itemImage .quantity{padding:1px 2px;font-size:12px}.livingGardenHud .itemContainer .itemImage:hover{opacity:.9}.livingGardenHud .essenceContainer .item:hover{border-radius:7px;box-shadow:inset 0 0 5px 2px #8cffde}.livingGardenHud .essenceContainer .item.essence_a_crafting_item{display:inline;padding-left:0;margin-left:23px;text-align:center}.itemImage.dewthief_petal_crafting_item:before,.itemImage.dreamfluff_herbs_crafting_item:before,.itemImage.duskshade_petal_crafting_item:before{position:absolute;top:-26px;left:-2px;z-index:1;padding:4px;font-size:12px;font-weight:900;text-align:center;text-shadow:1px 1px 0 #2e1800;content:"Garden";background-color:#412200}.itemImage.dewthief_petal_crafting_item:before{right:-2px;left:-9px;padding-left:6px;color:#7fd981;border-top-left-radius:10px}.itemImage.dreamfluff_herbs_crafting_item:before{right:-2px;left:-3px;color:#91e9fb;content:"City"}.itemImage.duskshade_petal_crafting_item:before{right:-8px;left:-3px;padding-left:2px;color:#f4daba;content:"Desert";border-top-right-radius:10px}.livingGardenHud .itemContainer .itemImage{overflow:visible;opacity:1}.livingGardenHud .itemContainer .itemImage img,.livingGardenHud .itemContainer .itemImage .quantity{opacity:.4}.travelHudLg>div{display:none}.livingGardenHud.corrupted .minigameContainer .curseContainer .curse.active:after{position:absolute;right:13px;bottom:0;left:15px;padding:2px;font-size:11px;font-weight:900;text-align:center;content:"cursed!";background-color:#050605;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.livingGardenHud.corrupted .minigameContainer .curseContainer .curse.mist.active:after{color:#086c6a;content:"Clarity";background-color:#8bf7f5;box-shadow:-3px 0 5px 1px #8bf7f5,3px 0 5px -1px #8bf7f5}.livingGardenHud.corrupted .minigameContainer .curseContainer .curse.darkness.active:after{color:#68a856;text-shadow:0 0 3px #63765f;content:"Shine";background-color:#050605;box-shadow:-7px 4px 5px -1px #649e53,7px 2px 5px -1px #649e53}.livingGardenHud.corrupted .minigameContainer .curseContainer .curse.fear.active:after{text-shadow:0 0 1px #fee236;content:"Bravery";background-color:#f09036;box-shadow:-7px 2px 5px -1px #da7b34,5px 2px 5px -1px #da7b34}.livingGardenHud.lost_city.corrupted .curse.active .curseActive{display:flex;flex-direction:column;align-items:center;text-align:center}.livingGardenHud .minigameContainer .curseContainer .curse.active .help{inset:20px 18px 20px 20px;display:block;width:unset;height:unset;padding:5px;visibility:hidden}.livingGardenHud .minigameContainer .curseContainer .curse.active .help img{inset:5px 0 0 6px;width:45px;height:45px}.livingGardenHud .minigameContainer .curseContainer .curse.active:hover .help{visibility:visible}.livingGardenHud .minigameContainer .curseContainer .curse.active .help b{position:absolute;top:-22px;right:-5px;left:-5px;padding-top:2px;font-size:12px;visibility:visible;border-top-left-radius:5px;border-top-right-radius:5px}.livingGardenHud .minigameContainer .curseContainer .curse.mist.active .help b{color:#086c6a;content:"Clarity";background-color:#8bf7f5;box-shadow:-3px 0 5px 1px #8bf7f5,3px 0 5px -1px #8bf7f5}.livingGardenHud .minigameContainer .curseContainer .curse.darkness.active .help b{color:#68a856;text-shadow:0 0 3px #63765f;content:"Shine";background-color:#050605;box-shadow:-5px -3px 5px -2px #649e53,6px -2px 5px -2px #649e53}.livingGardenHud .minigameContainer .curseContainer .curse.fear.active .help b{text-shadow:0 0 1px #fee236;content:"Bravery";background-color:#f09036;box-shadow:-7px 2px 5px -1px #da7b34,5px 2px 5px -1px #da7b34}.livingGardenHud .minigameContainer .curseContainer .curse.active{cursor:pointer}.livingGardenHud .minigameContainer .curseContainer .curse.active .help span{display:none}.livingGardenHud.lost_city.corrupted .curse{display:block!important;visibility:hidden}.livingGardenHud.lost_city.corrupted .curse .corruptedispelled{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;visibility:visible;background-color:#f6ffd4;box-shadow:inset 0 0 5px #000}.livingGardenHud.lost_city.corrupted .curse.active{visibility:visible}.livingGardenHud.lost_city.corrupted .curse .corruptedispelled b{font-size:11px;text-decoration:line-through}.livingGardenHud.lost_city.corrupted .curse .corruptedispelled br{display:none}.livingGardenHud .minigameContainer{z-index:1}.livingGardenHud{margin-top:25px;margin-bottom:20px}.livingGardenHud .spongeDoubleYellow{width:55px}.livingGardenHud .essenceContainer a.livingGardenRecipes:hover{background-image:url(https://i.mouse.rip/living-garden/recipe_rollover-new.png)}.livingGardenHud.desert_oasis.normal{background-image:url(https://i.mouse.rip/living-garden/living_garden_bg.png)}.livingGardenHud.desert_oasis.corrupted{background-image:url(https://i.mouse.rip/living-garden/twisted_garden_bg.png)}.livingGardenHud.lost_city.normal{background-image:url(https://i.mouse.rip/living-garden/lost_city_bg.png);border-bottom-right-radius:35px;border-bottom-left-radius:15px}.livingGardenHud.lost_city.corrupted{background-image:url(https://i.mouse.rip/living-garden/cursed_city_bg.png)}.livingGardenHud.sand_dunes.normal{background-image:url(https://i.mouse.rip/living-garden/grubling_bg.png)}.livingGardenHud.sand_dunes.corrupted{background-image:url(https://i.mouse.rip/living-garden/king_grub_bg.png)}\n'; } }); // src/modules/location-huds/region-living-garden/index.js var clickCharmsToEquip, region_living_garden_default; var init_region_living_garden = __esm({ "src/modules/location-huds/region-living-garden/index.js"() { init_utils2(); init_styles90(); clickCharmsToEquip = () => { const charms = document.querySelectorAll(".livingGardenHud .minigameContainer .curseContainer .curse.active"); const charmMap = { fear: 1011, darkness: 1019, mist: 1012 }; charms.forEach((charm) => { const charmClass = [...charm.classList].find((c) => c !== "curse" && c !== "active"); charm.addEventListener("click", () => { if (charmClass in charmMap) { hg.utils.TrapControl.armItem(charmMap[charmClass], "trinket"); hg.utils.TrapControl.go(); } }); charm.title = "Click to equip charm"; }); }; region_living_garden_default = () => __async(void 0, null, function* () { addHudStyles(styles_default89); clickCharmsToEquip(); }); } }); // src/modules/location-huds/region-queso/styles.css var styles_default90; var init_styles91 = __esm({ "src/modules/location-huds/region-queso/styles.css"() { styles_default90 = ".quesoHUD-wildTonic-quantity.quantity{top:4px;left:42px;padding:1px;font-size:13px;line-height:initial;text-shadow:1px 1px 1px #825842}.quesoHUD-bait-group-baitQuantity.quantity{z-index:1;font-size:12px;text-shadow:1px 1px 1px #715c4e;border-radius:4px}.ember_root_crafting_item .quesoHUD-bait-group-craftingQuantity.quantity,.ember_stone_crafting_item .quesoHUD-bait-group-craftingQuantity.quantity{position:absolute;top:5px;right:-20px;z-index:1;display:block;font-size:12px;text-shadow:1px 1px 1px #715c4e;background-color:#715c4eab;border-radius:4px}.quesoGeyserHUD .quesoHUD-bait-group .mousehuntItem-image{background-color:#e8c4ab}.quesoGeyserHUD .disabled .mousehuntItem-image{top:1px;left:-1px;box-shadow:0 0 20px #333 inset}.quesoGeyserHUD .quesoHUD-bait-group-spiceImage .mousehuntItem-image{top:1px;left:-1px;width:21px;height:21px;background-color:#755541;background-size:100%}.quesoGeyserHUD .quesoHUD-bait-group.bland_queso_cheese .mousehuntItem-image{top:-2px}.quesoGeyserHUD-nestBlock:hover .quesoGeyserHUD-nestBlock-image-transition{opacity:1;transition:opacity .3s ease-in-out}.quesoHUD-bait-group:hover .quesoHUD-bait-group-tooltip{padding:4px 3px;font-size:12px;background-color:#505050;border:none;border-radius:10px}.quesoCanyonHUD-pump-nachore-padding span.quantity{padding:3px;font-size:12px;background:#4d8d4a;border-radius:10px}.quesoGeyserHUD-block-title.quesoGeyserHUD-stateName{margin:2px 8px 1px;font-size:13px;background-color:#723b14;box-shadow:0 0 5px -1px inset #90542a}#hudLocationContent .quesoGeyserHUD:hover .quesoHUD-wildTonic-button.selected:after{transform-origin:center;animation:mh-improved-shake-light .45s 2}@media (prefers-reduced-motion: reduce){#hudLocationContent .quesoGeyserHUD:hover .quesoHUD-wildTonic-button.selected:after{animation:none}}.quesoGeyserHUD-block-huntsRemaining{padding-top:4px;padding-bottom:2px;font-size:38px}.quesoGeyserHUD-block-huntsRemaining-label.eruption.claim{font-size:10px;color:#d7d7d7;text-transform:lowercase}.quesoGeyserHUD-craftingItem-quantity.quantity{font-size:13px;background-color:#815942;border-radius:3px;box-shadow:0 0 5px -1px inset #90542a}.quesoHUD-bait-group-spiceQuantity.quantity{top:29px;font-size:12px}.quesoGeyserHUD .quesoHUD-bait-group.bland_queso_cheese .quesoHUD-bait-group-baitQuantity{top:18px;padding-left:3px;background-color:#723b14;border-top-left-radius:5px;border-bottom-left-radius:5px;box-shadow:0 0 5px -1px inset #90542a}.quesoCanyonHUD.showBossCheese .quesoHUD-bait-group.super_brie_cheese .quesoHUD-bait-group-baitQuantity{right:26px}.quesoHUD-bait-group{display:inline-block}.quesoHUD-bait-group-cheeseImage .mousehuntItem-image,.quesoHUD-bait-group-spiceImage .mousehuntItem-image{background-color:transparent}.quesoHUD-bait-group-spiceImage .mousehuntItem-image{border:none;box-shadow:none;transform:scale(1.2);transform-origin:top}\n"; } }); // src/modules/location-huds/region-queso/index.js var region_queso_default; var init_region_queso = __esm({ "src/modules/location-huds/region-queso/index.js"() { init_utils2(); init_styles91(); region_queso_default = () => __async(void 0, null, function* () { addHudStyles(styles_default90); }); } }); // src/modules/location-huds/event-locations/shared.js var updateDateTooltip, spaceNumbers, updateDateDates; var init_shared = __esm({ "src/modules/location-huds/event-locations/shared.js"() { updateDateTooltip = (selector) => { const tooltip = document.querySelector(selector); if (!tooltip) { return; } if (tooltip.getAttribute("data-changed")) { return; } tooltip.classList.add("bottom"); tooltip.classList.remove("top"); tooltip.setAttribute("data-changed", "true"); }; spaceNumbers = (text) => { return text.replaceAll(/(\d+)/g, " $1 ").trim(); }; updateDateDates = (remainingSelector, textSelector = false) => { const badge = document.querySelector(remainingSelector); if (badge) { if (badge.getAttribute("data-changed")) { return; } badge.innerHTML = spaceNumbers(badge.innerHTML); badge.setAttribute("data-changed", "true"); } if (!textSelector) { return; } const tooltip = document.querySelector(textSelector); if (tooltip) { if (tooltip.getAttribute("data-changed")) { return; } tooltip.innerHTML = spaceNumbers(tooltip.innerHTML); tooltip.setAttribute("data-changed", "true"); } }; } }); // src/modules/location-huds/event-locations/birthday/styles.css var styles_default91; var init_styles92 = __esm({ "src/modules/location-huds/event-locations/birthday/styles.css"() { styles_default91 = '.superBrieFactoryHUD-vendingMachine-quantity.quantity,.superBrieFactoryHUD-item-quantity.quantity{font-size:12px;line-height:15px}.superBrieFactoryHUD-itemContainer.boss_ticket .superBrieFactoryHUD-item-quantity.quantity{padding:1px;margin-right:-2px;font-size:12px;line-height:12px;background-color:#f6f3eb;border:1px solid #aeb1b0;border-radius:2px}.superBrieFactoryHUD-pipeProgress{font-size:10px}.superBrieFactoryHUD-vendingMachine-quantity{min-width:30px;margin-right:4px;text-align:right}.superBrieFactoryHUD-factoryRoom.mixing_room,.superBrieFactoryHUD-factoryRoom.break_room,.superBrieFactoryHUD-factoryRoom.pumping_room,.superBrieFactoryHUD-factoryRoom.quality_assurance_room{box-sizing:border-box;padding:2px;border:1px solid #000}.superBrieFactoryHUD-factoryRoom.mixing_room,.superBrieFactoryHUD-factoryRoom.break_room,.superBrieFactoryHUD-factoryRoom.pumping_room,.superBrieFactoryHUD-factoryRoom.quality_assurance_room,.superBrieFactoryHUD-factoryRoom.mixing_room:before,.superBrieFactoryHUD-factoryRoom.break_room:before,.superBrieFactoryHUD-factoryRoom.pumping_room:before,.superBrieFactoryHUD-factoryRoom.quality_assurance_room:before{background-repeat:no-repeat;background-size:100%}.superBrieFactoryHUD-factoryRoom.mixing_room{background-image:url(https://www.mousehuntgame.com/images/ui/events/birthday_factory/active_mixing_room.jpg?cv=Birthday2022&asset_cache_version=2)}.superBrieFactoryHUD-factoryRoom.break_room{background-image:url(https://www.mousehuntgame.com/images/ui/events/birthday_factory/active_break_room.jpg?cv=Birthday2022&asset_cache_version=2);background-size:contain}.superBrieFactoryHUD-factoryRoom.pumping_room{background-image:url(https://www.mousehuntgame.com/images/ui/events/birthday_factory/active_pump_room.jpg?cv=Birthday2022&asset_cache_version=2)}.superBrieFactoryHUD-factoryRoom.quality_assurance_room{background-image:url(https://www.mousehuntgame.com/images/ui/events/birthday_factory/active_qa_room.jpg?cv=Birthday2022&asset_cache_version=2)}.superBrieFactoryHUD-factoryRoom.mixing_room:before,.superBrieFactoryHUD-factoryRoom.break_room:before,.superBrieFactoryHUD-factoryRoom.pumping_room:before,.superBrieFactoryHUD-factoryRoom.quality_assurance_room:before{background-image:none}.superBrieFactoryHUD-factoryRoom:before{border-color:#fe9ff1;border-width:1px;border-radius:1px;outline:1px solid #dc4a9e;box-shadow:inset 0 0 2px 1px #87378f}.superBrieFactoryHUD-factoryRoom:after{top:44px;left:3px;width:149px;background-color:#15ff46;background-image:none;filter:invert(1);mix-blend-mode:color;opacity:.3}.superBrieFactoryHUD-factoryRoom:nth-child(2) .superBrieFactoryHUD-factoryRoom-level,.superBrieFactoryHUD-factoryRoom:nth-child(4) .superBrieFactoryHUD-factoryRoom-level{left:43px}.superBrieFactoryHUD-room-name{margin-top:5px;font-size:12px}.superBrieFactoryHUD-room-effectPrefix{margin-bottom:4px;font-size:10px}.superBrieFactoryHUD-room-costLevel.level_max{margin-top:5px}.level_5 .superBrieFactoryHUD-room-cost-levelNumber{display:none}.level_5 .superBrieFactoryHUD-room-cost-effect{margin-left:-6px}.superBrieFactoryHUD-room-costLevel{margin-top:5px}.superBrieFactoryHUD-factoryRoom-level{left:75.5px}.superBrieFactoryHUD-showControlPanelButton:after{background-color:#4cc2a6;border-radius:4px}.superBrieFactoryHUD-craftingItem.active .quantity:before{position:absolute;inset:8px 0 0;display:block;content:""}.superBrieFactoryHUD-craftingItem .quantity{position:absolute;inset:4px 5px 2px 15px;display:flex;align-items:center;justify-content:flex-end;padding-right:3px;margin-right:-10px;background-color:#f6f3eb;border:1px solid #aeb1b0;border-radius:2px}.superBrieFactoryHUD-craftingItem.active .quantity{color:#fff;text-shadow:none;background-color:#338577;border-color:#2dc49f}.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_break_room_stat_item]:after,.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_mixing_room_stat_item]:after,.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_pumping_room_stat_item]:after,.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_quality_assurance_room_stat_item]:after{position:absolute;top:-4px;left:-16px;width:20px;height:20px;content:"";background-size:contain}.superBrieFactoryHUD-craftingItem.active .quantity[data-item-type=birthday_factory_break_room_stat_item]:after,.superBrieFactoryHUD-craftingItem.active .quantity[data-item-type=birthday_factory_mixing_room_stat_item]:after,.superBrieFactoryHUD-craftingItem.active .quantity[data-item-type=birthday_factory_pumping_room_stat_item]:after,.superBrieFactoryHUD-craftingItem.active .quantity[data-item-type=birthday_factory_quality_assurance_room_stat_item]:after{transform:scale(1.3)}.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_break_room_stat_item]:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/4a52c6d8607991a93d3167ac401802ec.png?cv=2)}.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_mixing_room_stat_item]:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/2396577aacb317979238844ae30b62c1.png?cv=2)}.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_pumping_room_stat_item]:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/c3c5cb340c3949ba5280c63b2f552a19.png?cv=2)}.superBrieFactoryHUD-craftingItem .quantity[data-item-type=birthday_factory_quality_assurance_room_stat_item]:after{background-image:url(https://www.mousehuntgame.com/images/items/stats/large/97bb19e8f5ae6cc29a7a0f312a1a3b14.png?cv=2)}.superBrieFactoryHUD-item-boundingBox{z-index:1}.superBrieFactoryHUD-item-boundingBox[data-item-type=coggy_colby_cheese]:before,.superBrieFactoryHUD-item-boundingBox[data-item-type=speed_coggy_colby_cheese]:before,.superBrieFactoryHUD-item-boundingBox[data-item-type=birthday_factory_trinket]:before{position:absolute;inset:-16px 0 0 -1px;content:"";background-repeat:no-repeat;background-size:45px;transition:transform .3s;transform:rotate(351deg)}.superBrieFactoryHUD-item-boundingBox[data-item-type=coggy_colby_cheese]:before{background-image:url(https://www.mousehuntgame.com/images/items/bait/large/39a63a48084383a7eb07d64c74357544.png?cv=2)}.superBrieFactoryHUD-item-boundingBox[data-item-type=speed_coggy_colby_cheese]:before{top:-15px;background-image:url(https://www.mousehuntgame.com/images/items/bait/large/9326f63ea3644631c5fe8360ea4ffdf5.png?cv=2)}.superBrieFactoryHUD-item-boundingBox[data-item-type=birthday_factory_trinket]:before{top:-9px;left:5px;background-image:url(https://www.mousehuntgame.com/images/items/trinkets/large/907ce5291e023dedae8ed33c98546743.png?cv=2);background-size:36px;transform:rotate(0)}.superBrieFactoryHUD-item-boundingBox:hover:before{transform:scale(1.3)}.superBrieFactoryHUD-item-quantity.quantity{position:relative;z-index:2}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot{animation:mh-improved-hue-rotate-and-scale 1s 1}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot:nth-child(1){animation-delay:0s}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot:nth-child(2){animation-delay:.2s}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot:nth-child(3){animation-delay:.4s}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot:nth-child(4){animation-delay:.5s}.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot:nth-child(5){animation-delay:.6s}@media (prefers-reduced-motion: reduce){.superBrieFactoryHUD-factoryRoom:hover .superBrieFactoryHUD-factoryRoom-level-dot{animation:none}.superBrieFactoryHUD-item-boundingBox:hover:before{transform:none}}.superBrieFactoryVendingMachinePopup .superBrieFactoryVendingMachineView-numTokens{top:202px;right:57px;background:transparent;border:none;box-shadow:none}.superBrieFactoryHUD .superBrieFactoryHUD-dateCountdownMiniWrapper{top:-10px}.hudLocationContent.super_brie_factory{filter:drop-shadow(0 1px 2px #000)}.superBrieFactoryVendingMachineView-snackPack-cost{font-size:14px;line-height:15px;text-shadow:0 2px #343440}.superBrieFactoryVendingMachineView-snackPack:hover .superBrieFactoryVendingMachineView-snackPack-cost{text-shadow:0 2px #f7d877}.superBrieFactoryVendingMachineView{background-image:url(https://i.mouse.rip/bday/vending-machine-2.png)}.vending-machine-can{position:absolute;right:1px;bottom:40px;width:40px;height:53px;content:"";background-image:url(https://i.mouse.rip/bday/vending-machine-can.png);background-repeat:no-repeat;background-size:contain}.vending-machine-hat{position:absolute;top:23px;right:41px;z-index:1;width:38px;height:21px;content:"";background-image:url(https://i.mouse.rip/bday/vending-machine-hat-2.png);background-repeat:no-repeat;background-size:contain}.superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip{top:40px}.superBrieFactoryClaimReward-item .itemImage{border:none}\n'; } }); // src/modules/location-huds/event-locations/birthday/index.js var changeColors, birthdayGlobal, birthdayLocation; var init_birthday2 = __esm({ "src/modules/location-huds/event-locations/birthday/index.js"() { init_utils2(); init_shared(); init_styles92(); changeColors = () => { const popup = document.querySelector(".superBrieFactoryVendingMachinePopup"); if (!popup) { return; } const can = makeElement("div", "vending-machine-can"); const updateColor = () => { const hue = Math.floor(Math.random() * 360); can.style.filter = `hue-rotate(${hue}deg)`; }; can.addEventListener("click", updateColor); updateColor(); popup.append(can); const hat = makeElement("div", "vending-machine-hat"); let initialMouseX = 0; let initialHatX = 0; let isDragging = false; hat.addEventListener("mousedown", (event) => { isDragging = true; initialMouseX = event.clientX; initialHatX = Number.parseInt(window.getComputedStyle(hat).left, 10); }); document.addEventListener("mousemove", (event) => { if (isDragging) { const deltaX = event.clientX - initialMouseX; const newPosition = initialHatX + deltaX; if (newPosition >= 25 && newPosition <= 415) { hat.style.left = `${newPosition}px`; } } }); document.addEventListener("mouseup", () => { isDragging = false; }); popup.append(hat); }; birthdayGlobal = () => { }; birthdayLocation = () => __async(void 0, null, function* () { addHudStyles(styles_default91); setMultipleTimeout(() => { updateDateTooltip(".superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip"); updateDateDates(".superBrieFactoryHUD-dateCountdownMiniContainer .dateCountdownMini__remainingText", ".superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip .dateCountdown__datesContainer .dateCountdown__remainingText"); }, [100, 500, 1e3]); onDialogShow("superBrieFactoryVendingMachinePopup", () => { setTimeout(changeColors, 500); }); }); } }); // src/modules/location-huds/event-locations/great-winter-hunt/styles.css var styles_default92; var init_styles93 = __esm({ "src/modules/location-huds/event-locations/great-winter-hunt/styles.css"() { styles_default92 = '.headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity{margin-top:-2px;margin-right:1px;margin-left:0;font-size:12px;background-color:#4484a2;border-radius:3px;box-shadow:inset 0 0 0 1px #154b6f}.headsUpDisplayWinterHuntRegionView__golemPart:nth-child(3) .headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity{margin-right:-2px;margin-left:2px}.headsUpDisplayWinterHuntRegionView__golemPart:nth-child(2) .headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity{margin-right:-1px;margin-left:1px}.headsUpDisplayWinterHuntRegionView__golemPart:nth-child(4) .headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity{padding-top:0;padding-bottom:2px;margin-top:4px;margin-right:0;margin-left:0;color:#133850;background:linear-gradient(90deg,#0c5168 1%,#95c2d3 10%,#a8d3e0 16% 84%,#6ba1bb 92%,#0c5168 96%);border-radius:0 0 3px 3px;box-shadow:inset 1px -2px 2px -1px #0b3f55}.headsUpDisplayWinterHuntRegionView__golemPart:nth-child(5) .headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity{padding-top:1px;padding-bottom:1px;margin-top:-2px;margin-right:-1px;margin-left:1px;color:#133850;background-color:#a8d3e0;box-shadow:inset 0 0 1px 1px #5f9bb4}.headsUpDisplayWinterHuntRegionView__golemBuffQuantity.quantity{font-size:11px;color:#133850}.headsUpDisplayWinterHuntRegionView__golemUpgradeCost{position:absolute;top:6px;right:22px;left:24px;display:flex;align-items:center;justify-content:center;height:15px;padding:2px;margin-left:-1px;font-size:12px;color:#86c8e4;text-align:center;background-color:#18536d;border:1px solid #915211;border-radius:10px;box-shadow:inset 0 0 2px 1px #113346,1px -2px 1px -1px #e9c320,-8px 6px 0 -6px #6c5528}.headsUpDisplayWinterHuntRegionView__golemUpgradeCost:after{display:none}.headsUpDisplayWinterHuntRegionView__golemLevel{align-items:center;justify-content:center;margin-top:1px}.headsUpDisplayWinterHuntRegionView__environmentItemQuantity.quantity{font-size:13px}.headsUpDisplayWinterHuntRegionView__cinnamon{margin-bottom:9px}.headsUpDisplayWinterHuntRegionView__fuelQuantity.quantity{font-size:13px}.headsUpDisplayWinterHuntRegionView__baitImageButton{filter:drop-shadow(0 0 3px #a8d3e0);background-position:-1px -4px;background-size:41px;border-radius:50%}.headsUpDisplayWinterHuntRegionView__basicBaitContainer.super_brie_cheese .headsUpDisplayWinterHuntRegionView__baitImageButton{background-position:-3px -4px;border-radius:50%}.greatWinterHuntGolemManagerLaunchTabView__toggleButton{background:linear-gradient(to bottom,#fff9f9 50%,#71a4eb);border:none}.greatWinterHuntGolemManagerLaunchTabView__toggleButton--disabled{filter:grayscale(1);opacity:.7}.greatWinterHuntGolemManagerLaunchTabView__toggleItemQuantity{padding:4px;font-size:13px}.greatWinterHuntGolemManagerLaunchTabView__toggleItemImage{top:-10px;left:-11px;width:40px;height:40px}.greatWinterHuntDialogView__footerItemQuantity.quantity{padding:3px;font-size:13px;border-radius:5px;box-shadow:inset 0 0 1px 1px #a8d3e0}.greatWinterHuntDialogView__inventoryFooter .headsUpDisplayWinterHuntRegionView__plusButton{position:absolute;right:-15px;display:none;width:19px;height:19px;background-size:cover;border-radius:2px;box-shadow:0 0 1px 1px #527e8f}.greatWinterHuntDialogView__inventoryFooter:hover button.headsUpDisplayWinterHuntRegionView__plusButton,.greatWinterHuntDialogView__inventoryFooter:focus button.headsUpDisplayWinterHuntRegionView__plusButton,.greatWinterHuntDialogView__inventoryFooter:active button.headsUpDisplayWinterHuntRegionView__plusButton{display:block}.headsUpDisplayWinterHuntRegionView__golemHuntsRemaining{display:flex;align-items:center;justify-content:center;height:26px;padding-top:0;margin-top:1px;font-size:15px;line-height:unset;background-color:#0d3650;border-radius:5px 1px 1px 5px;box-shadow:inset 0 0 2px 2px #5d747f}.headsUpDisplayWinterHuntRegionView__golemChatMessage span{display:flex;width:unset;padding-bottom:2px;font-size:10px;line-height:10px}.headsUpDisplayWinterHuntRegionView__golemChatMessage:before{top:100%}.headsUpDisplayWinterHuntRegionView__golem:nth-child(1) .headsUpDisplayWinterHuntRegionView__golemChatMessage{padding:3px;transform:rotate(-5deg) translate(-10px) translateY(-25px)}.headsUpDisplayWinterHuntRegionView__golem:nth-child(2) .headsUpDisplayWinterHuntRegionView__golemChatMessage{padding:3px;transform:translateY(-25px)}.headsUpDisplayWinterHuntRegionView__golem:nth-child(3) .headsUpDisplayWinterHuntRegionView__golemChatMessage{padding:3px;transform:rotate(5deg) translate(10px) translateY(-25px)}.headsUpDisplayWinterHuntRegionView__golem .headsUpDisplayWinterHuntRegionView__golemChatMessage{opacity:0;transition:opacity .3s}.headsUpDisplayWinterHuntRegionView__golem:hover .headsUpDisplayWinterHuntRegionView__golemChatMessage,.headsUpDisplayWinterHuntRegionView__golem:focus .headsUpDisplayWinterHuntRegionView__golemChatMessage,.headsUpDisplayWinterHuntRegionView__golem:active .headsUpDisplayWinterHuntRegionView__golemChatMessage{opacity:1}.winterHuntGolemView__golem{z-index:11;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 4px #18536d);transform:translateY(-8px)}.winterHuntGolemView__head,.winterHuntGolemView__arms,.winterHuntGolemView__legs,.winterHuntGolemView__torso,.winterHuntGolemView__scarf{transform:scale(1.6)}.greatWinterHuntClaimRewardDialogView__golem .winterHuntGolemView__head,.greatWinterHuntClaimRewardDialogView__golem .winterHuntGolemView__arms,.greatWinterHuntClaimRewardDialogView__golem .winterHuntGolemView__legs,.greatWinterHuntClaimRewardDialogView__golem .winterHuntGolemView__torso,.greatWinterHuntClaimRewardDialogView__golem .winterHuntGolemView__scarf{transform:scale(1.3) translate(10px)}.winterHuntGolemView.winterHuntGolemView--idleAnimation .winterHuntGolemView__head,.winterHuntGolemView.winterHuntGolemView--idleAnimation:hover .winterHuntGolemView__head,.winterHuntGolemView.winterHuntGolemView--idleAnimation:focus .winterHuntGolemView__head,.winterHuntGolemView.winterHuntGolemView--idleAnimation:active .winterHuntGolemView__head{transform-origin:48% 51%}.winterHuntGolemView__background{box-shadow:0 0 25px 25px #e0f7fd inset}@keyframes golemLegWiggle{0%{transform:scale(1.6) rotate(2deg)}50%{transform:scale(1.6) rotate(-2deg)}to{transform:scale(1.6) rotate(2deg)}}@keyframes golemArmWiggle{0%{transform:scale(1.6) rotate(8deg)}50%{transform:scale(1.6) rotate(-8deg)}to{transform:scale(1.6) rotate(8deg)}}@keyframes golemHeadWiggle{0%{transform:scale(1.6) translateY(-3px)}50%{transform:scale(1.6) translateY(3px)}to{transform:scale(1.6) translateY(-3px)}}@keyframes golemHeadWiggleExcited{0%{transform:scale(1.6) translateY(-5px)}50%{transform:scale(1.6) translateY(1px)}to{transform:scale(1.6) translateY(-5px)}}@keyframes golemJump{0%{transform:scaleY(.28)}20%{transform:scaleY(.96)}50%{transform:scaleY(1.6) translateY(-8.5%)}60%{transform:scaleY(1.6) translateY(-8%)}95%{transform:scaleY(1.52) translateY(1%)}to{transform:scaleY(1.6) translateY(0)}}.greatWinterHuntGolemManagerDialogView__activeGolem{overflow:visible}.activeJsDialog .headsUpDisplayWinterHuntRegionView__golemChatMessage{display:none}.greatWinterHuntGolemManagerDialogView__golemPanel{background-color:#32748c}.greatWinterHuntGolemManagerDialogView__golemPreview .winterHuntGolemView__background{border-bottom:1px solid #3887a3;box-shadow:0 0 40px 76px #99cadc inset,0 11px 10px -6px #52b1d3}.greatWinterHuntGolemManagerDialogView__golem .winterHuntGolemView{width:60px}.greatWinterHuntGolemManagerDialogView__golem{width:33%;margin:0}.greatWinterHuntGolemManagerDialogView__golemUpgradeButton{position:absolute;bottom:-25px;left:5px;display:flex;flex-direction:row;width:90%;font-size:13px;background-position-x:45px;transform-origin:0 -40px}.greatWinterHuntGolemManagerDialogView__golem:hover,.greatWinterHuntGolemManagerDialogView__golem:focus,.greatWinterHuntGolemManagerDialogView__golem:active{transform:none}.greatWinterHuntGolemManagerDialogView__golem:hover button.greatWinterHuntGolemManagerDialogView__golemSelectButton,.greatWinterHuntGolemManagerDialogView__golem:focus button.greatWinterHuntGolemManagerDialogView__golemSelectButton,.greatWinterHuntGolemManagerDialogView__golem:active button.greatWinterHuntGolemManagerDialogView__golemSelectButton{transform:scale(1.1)}.greatWinterHuntGolemManagerDialogView__golem .greatWinterHuntGolemManagerDialogView__golemSelectButton{filter:brightness(.9)!important}.greatWinterHuntGolemManagerUpgradeTabView__itemQuantity{margin-top:35px;font-size:14px;background:#d7f4fe;border:1px solid #000;box-shadow:none}.greatWinterHuntGolemManagerUpgradeTabView__item--box{background-color:#96e3fd;border-width:1px}.greatWinterHuntDialogView__bigButtonInlineCostQuantity{margin-top:12px;font-size:19px;box-shadow:0 0 20px 4px #074762 inset}.greatWinterHuntDialogView__bigButtonInlineCost{margin-right:20px}.greatWinterHuntDialogView__button{filter:saturate(.6)}.greatWinterHuntGolemManagerReturnTabView__progressContainer b{display:block;font-size:15px}.greatWinterHuntGolemManagerReturnTabView__progressContainer b:after,.greatWinterHuntGolemManagerReturnTabView__progressContainer b:before{content:" \\1f389\\fe0f "}.greatWinterHuntGolemManagerReturnTabView__instantReturnBellCost{padding:0 3px 1px;margin:0 -3px -1px -5px;font-size:23px;background:linear-gradient(23deg,#e78700,#d16e07);border-radius:3px;box-shadow:-1px -3px 5px -3px #f9a148}.greatWinterHuntGolemManagerReturnTabView__instantReturnButton--disabled .greatWinterHuntGolemManagerReturnTabView__instantReturnBellCost{background:linear-gradient(23deg,#8d8d8d,#7e7e7e);box-shadow:none}.greatWinterHuntRecycleDialogView__itemQuantity.quantity{top:185px;right:unset;left:unset;min-width:40px;font-size:18px;background-color:#ffffffbf}.greatWinterHuntRecycleDialogView__item{align-items:center}.greatWinterHuntRecycleDialogView__action{border-radius:4px}.greatWinterHuntRecycleDialogView__craftCost:before{font-size:24px;content:"\\2212"}.greatWinterHuntRecycleDialogView__smashYield:before{font-size:24px;content:"+"}.greatWinterHuntRecycleDialogView__golemRequirement{margin-bottom:3px;font-size:13px}.greatWinterHuntRecycleDialogView__action:after{position:absolute;top:60px;left:-10px;width:20px;height:10px;content:""}.greatWinterHuntRecycleDialogView__golemRequirementContainer{margin-left:-10px}.greatWinterHuntRecycleDialogView__golemRequirementTitle{padding-bottom:4px;color:#1863bf}.greatWinterHuntRecycleDialogView__item:nth-child(1) .greatWinterHuntRecycleDialogView__itemQuantity.quantity{top:175px}.possibleGolems .greatWinterHuntDialogView__footerItemQuantity.quantity{background-color:#51516e;box-shadow:inset 0 0 1px 1px #6ea0d1}.greatWinterHuntDialogView__footerItemSeperator{width:50px}.headsUpDisplayWinterHuntIceFortressView__shieldLabel.headsUpDisplayWinterHuntIceFortressView__shieldLabel--active{top:6px;font-size:11px;background-color:#273852;border-radius:13px}.headsUpDisplayWinterHuntRegionView__hailstones .headsUpDisplayWinterHuntRegionView__resourceCost{top:39px;font-size:14px;background-color:#8de3e4}.greatWinterHuntRecycleDialogView__itemQuantity.quantity[data-item-type=golem_part_limb_stat_item]{display:flex;gap:4px;align-items:center;justify-content:space-evenly}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{top:172px;left:54px;width:20px;font-size:14px;background:linear-gradient(54deg,#c87d0e,#9f510c);border-radius:4px}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton:nth-child(2) .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{left:55px}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton:nth-child(3) .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{left:56px}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--inactive .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{background:linear-gradient(90deg,#7d3415,#5a231c)}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--inactive:hover .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining,.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--inactive:focus .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining,.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--inactive:active .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{background:linear-gradient(112deg,#91492a,#602726)}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--active:hover .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining,.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--active:focus .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining,.headsUpDisplayWinterHuntGolemWorkshopView__droidButton--active:active .headsUpDisplayWinterHuntGolemWorkshopView__droidHuntsRemaining{background:linear-gradient(54deg,#e77f14,#b8590f)}#overlayPopup.greatWinterHuntDialog{margin-top:30px}.greatWinterHuntClaimRewardDialogView__title{padding-left:20px}.greatWinterHuntGolemManagerDialogView__destinationViewContainer--active{z-index:11}button.greatWinterHuntGolemManagerDialogView__randomizeButton{top:15px}.greatWinterHuntGolemManagerDialogView__activeGolemControls.greatWinterHuntGolemManagerDialogView__activeGolemControls--decrement{right:-25px;left:unset;border-radius:10px 0 0 10px}.greatWinterHuntGolemManagerDialogView__partButton{opacity:1}.greatWinterHuntGolemManagerDialogView__activeGolemControls--increment{right:-45px}.greatWinterHuntGolemManagerDialogView__activeGolemControls:hover,.greatWinterHuntGolemManagerDialogView__activeGolemControls:focus,.greatWinterHuntGolemManagerDialogView__activeGolemControls:active,.greatWinterHuntGolemManagerDialogView__activeGolem:hover .greatWinterHuntGolemManagerDialogView__activeGolemControls,.greatWinterHuntGolemManagerDialogView__activeGolem:focus .greatWinterHuntGolemManagerDialogView__activeGolemControls,.greatWinterHuntGolemManagerDialogView__activeGolem:active .greatWinterHuntGolemManagerDialogView__activeGolemControls{z-index:12;opacity:.8}.greatWinterHuntGolemManagerDialogView__activeGolemControls{top:40px;padding:20px 5px 0;background-color:#32748c;opacity:.1}.greatWinterHuntGolemManagerDialogView__activeGolemControls.greatWinterHuntGolemManagerDialogView__activeGolemControls--increment{border-radius:0 10px 10px 0}.greatWinterHuntGolemManagerDialogView__activeGolemContent .winterHuntGolemView--hasScarf .winterHuntGolemView__scarf{top:15px}.headsUpDisplayWinterHuntRegionView__warning{width:170px;padding:10px;font-size:13px;font-weight:900;line-height:20px;color:#2f2a2a;text-align:center;border:none}.headsUpDisplayWinterHuntRegionView__trapWarningContainer .greatWinterHuntDialogView{top:25%;z-index:11}.headsUpDisplayWinterHuntRegionView__trapWarningContainer.headsUpDisplayWinterHuntRegionView__trapWarningContainer--active{filter:drop-shadow(0 0 7px #000)}.headsUpDisplayWinterHuntRegionView__trapWarningContainer.headsUpDisplayWinterHuntRegionView__trapWarningContainer--active .greatWinterHuntDialogView__content{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.greatWinterHuntRewardTrackView--allRewardsClaimed .greatWinterHuntRewardTrackView__claimedLabel{color:transparent;background:transparent}.greatWinterHuntRewardTrackView--allRewardsClaimed .greatWinterHuntRewardTrackView__bar{filter:hue-rotate(347deg);transition:none}.greatWinterHuntRewardTrackView__golem:hover{animation:wallDamageWiggleSmall .3s infinite}.greatWinterHuntRewardTrackView__golem:focus,.greatWinterHuntRewardTrackView__golem:active{animation-name:wallDamageWiggle}@media (prefers-reduced-motion: reduce){.greatWinterHuntRewardTrackView__golem,.greatWinterHuntRewardTrackView__golem:hover,.greatWinterHuntRewardTrackView__golem:focus,.greatWinterHuntRewardTrackView__golem:active{animation:none}}.headsUpDisplayWinterHuntGolemWorkshopView__droidButton .mousehuntTooltip{bottom:30%}.greatWinterHuntNewYearsDialogView__shopsButton{transition:none}.greatWinterHuntNewYearsDialogView__itemImage{background-size:contain}#overlayPopup.winter_hunt_profile_tree_possible_gifts .suffix{display:flex;flex-direction:row;align-items:center;justify-content:flex-end}#overlayPopup.winter_hunt_profile_tree_possible_gifts .wrappingGoldCost{order:1;margin-right:10px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .suffix .cancelGift{order:5}#overlayPopup.winter_hunt_profile_tree_possible_gifts .suffix .sendGift{order:10}#overlayPopup.winter_hunt_profile_tree_possible_gifts .giftCostContainer{line-height:2}#overlayPopup.winter_hunt_profile_tree_possible_gifts .recipientContainer img{width:100px;height:100px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .recipientContainer{padding:10px;border:1px solid #ccc;border-radius:5px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .winter_hunt_profile_tree_possible_gifts-search{padding:5px;margin:10px;font-size:12px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .winter_hunt_profile_tree_possible_gifts-clearSearch{top:10px;right:12px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .winter_hunt_profile_tree_possible_gifts-clearSearch:hover,#overlayPopup.winter_hunt_profile_tree_possible_gifts .winter_hunt_profile_tree_possible_gifts-clearSearch:focus,#overlayPopup.winter_hunt_profile_tree_possible_gifts .winter_hunt_profile_tree_possible_gifts-clearSearch:active{color:#e33f3f;text-decoration:none}#overlayPopup.winter_hunt_profile_tree_possible_gifts .giftChannel-title{margin-bottom:10px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .recipient{float:right;padding:10px;margin:-25px 20px 0 10px;border:1px solid #ccc;border-radius:5px}#overlayPopup.winter_hunt_profile_tree_possible_gifts .giftDescription{margin-left:0}.winterHuntProfileInteractionView-gifting{background-position-x:0;background-size:130px}.winterHuntProfileInteractionView .info{width:190px;margin-top:10px}.winterHuntProfileInteractionView-giftCeremony{line-height:1.5}.winterHuntProfileInteractionView a.giftBox:hover,.winterHuntProfileInteractionView a.giftBox:focus,.winterHuntProfileInteractionView a.giftBox:active{filter:brightness(1.1)}.headsUpDisplayWinterHuntRegionView__bait .mousehuntTooltip{width:175px;line-height:1.5}.greatWinterHuntGolemManagerTabView__destinationCount{margin-left:5px}.greatWinterHuntGolemDestinationView__environmentImage{border-radius:0 0 2px 2px;transition:all .2s ease-in-out}.headsUpDisplayWinterHuntRegionView__newYearsButton--active{opacity:.8}.headsUpDisplayWinterHuntRegionView__newYearsButton--active:hover{opacity:1}.headsUpDisplayWinterHuntRegionView{filter:drop-shadow(0 1px 5px #1b202b)}\n'; } }); // src/modules/location-huds/event-locations/great-winter-hunt/global.css var global_default; var init_global2 = __esm({ "src/modules/location-huds/event-locations/great-winter-hunt/global.css"() { global_default = ".campHudSnowballShowdownView__disabled{top:45px}.advent-calendar-spoilers .adventCalendarView-gift .adventCalendarView-gift-label,.advent-calendar-spoilers .adventCalendarView-gift .adventCalendarView-gift-image{display:none}.mousehuntActionButton.tiny.toggle-advent-calendar-spoilers{position:absolute;left:20px;font-size:12px}.adventCalendarView-subtitle{padding:10px;font-size:12px;line-height:19px;background-color:#d3ddfe}.adventCalendarView-gift.canClaim{filter:brightness(1.75)}.adventCalendarView-gift-rewardContainer{inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0;background-color:#d3ddfe;border-radius:0}.adventCalendarView-gift-reward-close{padding:2px 4px 5px 6px;font-size:13px;font-weight:900;color:#e03a3a;background-color:#b1bfed;border-top-right-radius:0;border-bottom-left-radius:10px}.adventCalendarView-gift-reward-items{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.adventCalendarView-gift-item,.adventCalendarView-gift-item img{width:55px;height:55px}.adventCalendarView-title{background-color:#d3ddfe;border-width:1px}.adventCalendarView-header{background-color:#e2ebee}.campHudSnowballShowdownView__imageContainer{height:35px;margin-top:-5px;background:#dabc9b99;border-radius:13px}.campHudSnowballShowdownView__image{height:35px;background-position:bottom center}.campHudSnowballShowdownView__snowball .campHudSnowballShowdownView__image{background-position:center 5px}.campHudSnowballShowdownView__quantity{padding:1px;font-size:13px;color:#133850;text-align:center;background-color:#a8d3e0;border-radius:5px;box-shadow:inset 0 0 0 1px #2174ab}button.campHudSnowballShowdownView__buyButton{display:none}.campHudSnowballShowdownView__item:hover button.campHudSnowballShowdownView__buyButton,.campHudSnowballShowdownView__item:focus button.campHudSnowballShowdownView__buyButton,.campHudSnowballShowdownView__item:active button.campHudSnowballShowdownView__buyButton{position:absolute;right:-1px;bottom:-2px;display:block;width:17px;height:17px;background-size:cover}.snowballShowdownView-reward-subtitle,.snowballShowdownView-rewardsTitle{display:none}.snowballShowdownView-rewardsContainer{overflow:hidden;border-radius:10px}.snowballShowdownView-reward-image{height:120px}.snowballShowdownView-reward-item{display:flex;flex-flow:column nowrap;align-items:center;justify-content:center}.snowballShowdownView-reward-item-name span{display:inline}.snowballShowdownView-reward-item-name{display:inline-block;height:unset;text-align:center}.snowballShowdownView-reward-item .itemImage{float:none;width:unset;height:unset}.snowballShowdownView-reward-item .itemImage img{width:45px;height:auto}.snowballShowdownView-item-quantity{padding:1px 5px;font-size:12px}.snowballShowdownView-item-name{margin:0 4px;font-size:11px}.snowballShowdownView-item{box-shadow:0 -7px 8px #ccc inset,0 0 0 3px #3e71be}.snowballShowdownView-message{display:inline-block;width:auto;padding:8px;font-size:10px;background:#3e71be;border-radius:4px;box-shadow:0 0 1px #103060 inset}.snowballShowdownView-messageContainer{padding:0;background:none;box-shadow:none}.snowballShowdownView-item:after{filter:drop-shadow(-2px 2px 0 #3e71be) drop-shadow(1px -2px 0 #3e71be)}.snowballShowdownView-board-row-cell.available:hover,.snowballShowdownView-board-row-cell.available:focus{cursor:pointer;box-shadow:inset 0 0 1px 3px #3e71be}.snowballShowdownView-board-row-cell.hit{box-shadow:inset 0 0 0 3px #b8ffe3}.winter_hunt_profile_tree_possible_gifts .gift{width:20%}.campHudSnowballShowdownView__quantityContainer.possibleAmount{display:none;margin-top:7px}.campHudSnowballShowdownView--hasSnowballShowdown:hover .campHudSnowballShowdownView__quantityContainer.possibleAmount,.campHudSnowballShowdownView--hasSnowballShowdown:focus .campHudSnowballShowdownView__quantityContainer.possibleAmount{display:flex}.possibleAmount .campHudSnowballShowdownView__quantity{background-color:#d2e8ef;box-shadow:inset 0 0 0 1px #7ebde7}\n"; } }); // src/modules/location-huds/event-locations/great-winter-hunt/index.js var updateGolemFooter, getFraction, updateGolemPartsQuantity, updateGolemTravelCount, updateGolemPopup, golemDance, getQuest, expandAnimatedSnowCount, showPossibleSnowballShowdownDustCount, getGolemCounts, adventCalendarPopup, maybeHideAdventCalendarInMenu, greatWinterHuntGlobal, greatWinterHuntLocation; var init_great_winter_hunt = __esm({ "src/modules/location-huds/event-locations/great-winter-hunt/index.js"() { init_utils2(); init_utils2(); init_styles93(); init_global2(); updateGolemFooter = () => { const footer = document.querySelector(".greatWinterHuntDialogView__inventoryFooter"); if (!footer) { return; } const headsEl = footer.querySelector('.greatWinterHuntDialogView__footerItemQuantity[data-item-type="golem_part_head_stat_item"]'); const torsoEl = footer.querySelector('.greatWinterHuntDialogView__footerItemQuantity[data-item-type="golem_part_torso_stat_item"]'); const limbsEl = footer.querySelector('.greatWinterHuntDialogView__footerItemQuantity[data-item-type="golem_part_limb_stat_item"]'); if (!headsEl && !torsoEl && !limbsEl) { return; } const heads = headsEl ? Number.parseInt(headsEl.textContent, 10) : 0; const torso = torsoEl ? Number.parseInt(torsoEl.textContent, 10) : 0; const limbs = limbsEl ? Number.parseInt(limbsEl.textContent, 10) : 0; const limbSet = Math.floor(limbs / 4); const possibleGolems = Math.min(heads, torso, limbSet); const existing = footer.querySelector(".greatWinterHuntDialogView__footerItem.possibleGolems"); if (existing) { existing.remove(); } const possibleWrapper = makeElement("div", ["greatWinterHuntDialogView__footerItem", "mousehuntTooltipParent", "possibleGolems"]); const possibleImage = makeElement("div", ["greatWinterHuntDialogView__footerItemImage"]); possibleImage.style.backgroundImage = "url(https://i.mouse.rip/mh-improved/golem-thumb.png)"; possibleWrapper.append(possibleImage); makeElement("div", ["greatWinterHuntDialogView__footerItemQuantity", "quantity"], possibleGolems, possibleWrapper); const possibleTooltip = makeElement("div", ["mousehuntTooltip", "tight", "top", "noEvents"], `You can make ${possibleGolems} golem${possibleGolems === 1 ? "" : "s"}`); makeElement("div", ["mousehuntTooltip-arrow"], null, possibleTooltip); possibleWrapper.append(possibleTooltip); footer.insertBefore(possibleWrapper, footer.children[3]); }; getFraction = (num) => { switch (num) { case 1: return "\xBC"; case 2: return "\xBD"; case 3: return "\xBE"; default: return ""; } }; updateGolemPartsQuantity = () => { const limbs = document.querySelector('.greatWinterHuntRecycleDialogView__itemQuantity.quantity[data-item-type="golem_part_limb_stat_item"]'); if (!limbs) { return; } const original = limbs.getAttribute("original-quantity"); if (original) { const footerLimbs = document.querySelector('.greatWinterHuntDialogView__footerItemQuantity.quantity[data-item-type="golem_part_limb_stat_item"]'); limbs.textContent = footerLimbs ? footerLimbs.textContent : original; } const limbCount = Number.parseInt(limbs.textContent, 10); limbs.setAttribute("original-quantity", limbCount); const limbSet = Math.floor(limbCount / 4); const limbSetFraction = getFraction(limbCount % 4); const newLimbsEl = makeElement("span", ["golemLimbsTotal"], limbCount); const newLimbsSetEl = makeElement("span", ["golemLimbsPossible"], `(${limbSet}${limbSetFraction})`); limbs.textContent = ""; limbs.append(newLimbsEl, newLimbsSetEl); }; updateGolemTravelCount = () => __async(void 0, null, function* () { const title = document.querySelector(".greatWinterHuntGolemManagerTabView__destinationHeader"); if (!title) { return; } const name = title.querySelector(".greatWinterHuntGolemManagerTabView__destinationName"); if (!name) { return; } const allEnvironments = yield getData("environments"); const currentEnvironment = allEnvironments.find((env) => env.name === name.textContent); if (!currentEnvironment) { return; } const golemCounts = getGolemCounts(); const existing = title.querySelector(".greatWinterHuntGolemManagerTabView__destinationCount"); if (existing) { existing.textContent = golemCounts[currentEnvironment.id] || 0; return; } const countEl = makeElement("span", ["greatWinterHuntGolemManagerTabView__destinationCount"], `(${golemCounts[currentEnvironment.id] || 0})`); name.append(countEl); }); updateGolemPopup = () => { setTimeout(() => { const golems = document.querySelectorAll(".greatWinterHuntGolemManagerDialogView__golem"); if (golems) { golems.forEach((golem) => { golem.addEventListener("click", () => { eventRegistry.doEvent("golem-switch-in-dialog"); }); }); } updateGolemTravelCount(); updateGolemFooter(); updateGolemPartsQuantity(); }, 250); }; golemDance = () => { const trigger = document.querySelector(".greatWinterHuntRewardTrackView__progress"); if (!trigger) { return; } trigger.addEventListener("click", () => { const golems = document.querySelectorAll(".headsUpDisplayWinterHuntRegionView__golem .winterHuntGolemView"); if (!golems) { return; } count = 0; golems.forEach((golem) => { setTimeout(() => { golem.classList.add("winterHuntGolemView--idleAnimation"); }, 100 * count); count++; }); }); }; getQuest = () => { if ("winter_hunt_grove" === getCurrentLocation()) { return user.quests.QuestCinnamonTreeGrove; } else if ("winter_hunt_workshop" === getCurrentLocation()) { return user.quests.QuestGolemWorkshop; } else if ("winter_hunt_fortress" === getCurrentLocation()) { return user.quests.QuestIceFortress; } return {}; }; expandAnimatedSnowCount = () => { var _a, _b; const limbEl = document.querySelector('.headsUpDisplayWinterHuntRegionView__golemPartQuantity.quantity[data-item-type="animate_snow_stat_item"]'); if (!limbEl) { return; } limbEl.textContent = ((_b = (_a = getQuest()) == null ? void 0 : _a.items) == null ? void 0 : _b.animate_snow_stat_item.quantity_formatted) || 0; }; showPossibleSnowballShowdownDustCount = () => { const showdownItems = document.querySelector(".campHudSnowballShowdownView__itemsContainer"); if (!showdownItems) { return; } const snowballEl = showdownItems.querySelector(".campHudSnowballShowdownView__snowball"); const snowballQtyEl = snowballEl.querySelector(".campHudSnowballShowdownView__quantity"); const snowballQty = snowballQtyEl ? Number.parseInt(snowballQtyEl.textContent.replaceAll(",", ""), 10) : 0; const dustEl = showdownItems.querySelector(".campHudSnowballShowdownView__dust"); const currentDustQtyEl = dustEl.querySelector(".campHudSnowballShowdownView__quantity"); const currentDustQty = currentDustQtyEl ? Number.parseInt(currentDustQtyEl.textContent.replaceAll(",", ""), 10) : 0; const possibleDustQty = Math.floor(snowballQty / 175); const snowballText = snowballQty - possibleDustQty * 175; const dustText = currentDustQty + possibleDustQty; const possibleSnowballExists = showdownItems.querySelector(".campHudSnowballShowdownView__quantity.possibleSnowball"); if (possibleSnowballExists) { possibleSnowballExists.textContent = snowballText; } else { const possibleSnowballWrapper = makeElement("div", "campHudSnowballShowdownView__quantityContainer possibleAmount"); makeElement("div", ["campHudSnowballShowdownView__quantity", "possibleSnowball"], snowballText, possibleSnowballWrapper); snowballEl.append(possibleSnowballWrapper); } const possibleDustExists = showdownItems.querySelector(".campHudSnowballShowdownView__quantity.possibleDust"); if (possibleDustExists) { possibleDustExists.textContent = dustText; } else { const dustWrapper = makeElement("div", "campHudSnowballShowdownView__quantityContainer possibleAmount"); makeElement("div", ["campHudSnowballShowdownView__quantity", "possibleDust"], dustText, dustWrapper); dustEl.append(dustWrapper); } }; getGolemCounts = () => { var _a; const golemCounts = {}; const destinations = ((_a = getQuest()) == null ? void 0 : _a.destinations) || {}; for (const region in destinations) { destinations[region].environments.forEach((env) => { golemCounts[env.type] = env.num_golem_visits; }); } return golemCounts; }; adventCalendarPopup = () => { const suffix = document.querySelector("#overlayPopup .suffix"); if (!suffix) { return; } const existingToggle = document.querySelector(".toggle-advent-calendar-spoilers"); if (existingToggle) { return; } const toggleBtn = makeElement("button", ["mousehuntActionButton", "tiny", "toggle-advent-calendar-spoilers"]); makeElement("span", "", "View unblurred calendar", toggleBtn); toggleBtn.setAttribute("data-enabled", "false"); toggleBtn.addEventListener("click", () => { const popup = document.querySelector("#overlayPopup"); if (!popup) { return; } popup.classList.toggle("advent-calendar-spoilers"); const enabled = toggleBtn.getAttribute("data-enabled"); if ("true" === enabled) { toggleBtn.setAttribute("data-enabled", "false"); toggleBtn.querySelector("span").innerText = "View unblurred calendar"; } else { toggleBtn.setAttribute("data-enabled", "true"); toggleBtn.querySelector("span").innerText = "Hide unblurred calendar"; } }); suffix.append(toggleBtn); }; maybeHideAdventCalendarInMenu = () => { const now = /* @__PURE__ */ new Date(); if (now.getMonth() !== 11) { } return ""; }; greatWinterHuntGlobal = () => { addStyles([global_default, maybeHideAdventCalendarInMenu], "location-hud-events-great-winter-hunt"); onDialogShow("adventCalendarPopup", adventCalendarPopup); }; greatWinterHuntLocation = () => { addHudStyles(styles_default92); onDialogShow("greatWinterHuntDialog", updateGolemPopup); golemDance(); expandAnimatedSnowCount(); showPossibleSnowballShowdownDustCount(); onRequest("purchases/itempurchase.php", () => { updateGolemPartsQuantity(); setTimeout(updateGolemFooter, 250); }); onRequest("*", () => { expandAnimatedSnowCount(); showPossibleSnowballShowdownDustCount(); }); onEvent("golem-switch-in-dialog", () => { updateGolemTravelCount(); }); setTimeout(expandAnimatedSnowCount, 1e3); }; } }); // src/modules/location-huds/event-locations/halloween/styles.css var styles_default93; var init_styles94 = __esm({ "src/modules/location-huds/event-locations/halloween/styles.css"() { styles_default93 = ".halloweenBoilingCauldronHUD-bait-quantity{top:29px;left:40px;font-size:13px;text-shadow:1px 1px 1px #282828}.halloweenBoilingCauldronHUD-bait-ingredientQuantity{top:45px;width:38px;font-size:12px}body .halloweenBoilingCauldronHUD-bait.basic_baits .halloweenBoilingCauldronHUD-bait-quantity{top:29px;left:42px;width:58px;padding-right:8px;background:linear-gradient(0deg,#2b3320,#4b5837,#2b3320);border:1px solid #6f8d70;border-radius:6px}body .halloweenBoilingCauldronHUD-bait.basic_baits.active .halloweenBoilingCauldronHUD-bait-quantity{background:linear-gradient(0deg,#03461a,#03792d,#03461a);border-color:#03d14c}a.halloweenBoilingCauldronHUD-cauldron-boundingBox{font-size:14px}.halloweenBoilingCauldronHUD-cauldron-imageContainer .halloweenBoilingCauldronHUD-cauldron-queue-brewTime{width:auto;padding-right:4px;font-size:19px;color:#f9e8b1;text-align:center;text-shadow:1px 1px 1px #515b3a;background-image:none}.halloweenBoilingCauldronHUD-cauldron-tooltip{top:0;height:50px;font-size:13px;line-height:1.3;background-color:#292827;transition:.3s ease-in-out}.halloweenBoilingCauldronHUD-cauldron-tooltip i{font-size:15px;color:#f8e7b0}.halloweenBoilingCauldronHUD-cauldron-tooltip b{font-weight:400;color:#ccc}.halloweenBoilingCauldronHUD-bait-cauldronButton{box-shadow:none}.halloweenBoilingCauldronHUD-cauldron.active:hover .halloweenBoilingCauldronHUD-cauldron-instantFinishButton{opacity:1}.halloweenBoilingCauldronHUD-cauldron-instantFinishButton{display:block;opacity:0;transition:opacity .2s ease-in-out}.halloweenBoilingCauldronHUD-shutdownButton{left:271px;width:198px}.itemPurchaseView-container.apothecary .itemPurchaseView-content-name{display:block;padding-top:3px}.itemPurchaseView-container.apothecary .itemPurchaseView-image-container{background-color:transparent}.itemPurchaseView-container.apothecary .itemPurchaseView-action-purchaseHelper-owned{padding-left:0;margin:0;text-shadow:none;background-color:transparent;border:none}.itemPurchaseView-container.apothecary .itemPurchaseView-content-description{height:80px}.itemPurchaseView-container.apothecary.no_gold_cost .itemPurchaseView-action-goldGost{display:none}.itemPurchaseView-container.apothecary .itemPurchaseView-action-itemCost-table{width:100%;margin-right:0;margin-left:0;background-color:#e8f2e5}.itemPurchaseView-container.apothecary .itemPurchaseView-action-itemCost-table-row{display:flex;align-items:center;justify-content:flex-start;width:auto;height:50px;padding:0;margin:0}.itemPurchaseView-container.apothecary .itemPurchaseView-action-quantity{margin-top:-1px}.itemPurchaseView-container.apothecary .itemPurchaseView-action-quantity input{width:90px}.itemPurchaseView-container.apothecary .itemPurchaseView-action-container{height:130px}.itemPurchaseView-container.apothecary .itemPurchaseView-action-itemCost-table-cell a{padding:20px 6px 20px 29px;font-size:13px;background-position:-10px 50%;background-size:42px}.itemPurchaseView-container.apothecary .itemPurchaseView-action-itemCost-table .itemPurchaseView-action-itemCost-table-cell.cost{width:20%;font-size:17px;font-weight:400;text-shadow:1px 1px 1px #788c59}.itemPurchaseView-container.apothecary .itemPurchaseView-content-container{background-color:transparent}.halloweenBoilingCauldronHUD-dialog-boonImage{display:flex;align-items:center}.halloweenBoilingCauldronHUD-dialog-reward.complete:after{top:45px;filter:drop-shadow(0 5px 6px #000);transform:rotate(348deg)}a.halloweenBoilingCauldronHUD-dialog-closeButton{top:0;right:-6px;width:46px;height:38px;background-size:100%}#overlayPopup.halloweenBoilingCauldronRecipePopup #jsDialogClose{top:146px;right:22px;z-index:1;width:46px;height:37px;color:transparent;background-size:cover}#overlayPopup.halloweenBoilingCauldronRecipePopup #jsDialogClose:hover{background-size:cover}.halloweenBoilingCauldronRecipeView-recipe-ingredientContainer table{border:none}.halloweenBoilingCauldronRecipeView-recipe-ingredientContainer{padding:0;border-radius:5px}.halloweenBoilingCauldronRecipeView-recipe-ingredient-header{display:none}.halloweenBoilingCauldronRecipeView-recipe-ingredientContainer td:first-child{padding-left:10px}.halloweenBoilingCauldronRecipeView-recipe-ingredientContainer td:last-child{padding-right:10px}.halloweenBoilingCauldronRecipeView-recipe-ingredientContainer td{font-size:12px}.halloweenBoilingCauldronRecipeView-recipe-description{line-height:1.3;color:#4c4d37}.halloweenBoilingCauldronRecipeView-recipe-mouse{font-size:11px}.halloweenBoilingCauldronRecipeView-recipe-mice-list.num_5 .halloweenBoilingCauldronRecipeView-recipe-mouse{width:33%}.halloweenBoilingCauldronHUD-cauldron-queue-brewTime{padding-top:4px;margin-left:3px;font-size:13px;text-shadow:0 1px 1px #efd28e;background-color:#efd28e;background-position-y:bottom;border-radius:10px}.halloweenBoilingCauldronRecipeView-cauldron-queueSlot.cauldron .halloweenBoilingCauldronHUD-cauldron-queue-brewTime{padding-top:2px;font-size:13px;font-weight:900}a.halloweenBoilingCauldronRecipeView-cauldron-queueSlot-cancelButton{top:-17px;right:7px;left:unset}.halloweenBoilingCauldronRecipeView-content{font-size:12px}.hudLocationContent .halloweenBoilingCauldronHUD-cauldron-imageContainer .halloweenBoilingCauldronHUD-cauldron-queue-brewTime{padding:0;background-color:transparent}.campHudSpookyShuffleView__quantity{font-size:12px}.halloweenBoilingCauldronHUD-cauldron-imageContainer,.fuelActive .halloweenBoilingCauldronHUD-reward-progress-bar{transition:all .2s ease-in-out}.fuelActive .halloweenBoilingCauldronHUD-cauldron-imageContainer{background-image:url(https://i.mouse.rip/mh-improved/cauldrons.png);filter:drop-shadow(2px 4px 6px #ff8b1c)}.fuelActive a.halloweenBoilingCauldronHUD-moreInfoButton{filter:hue-rotate(256deg)}.halloweenBoilingCauldronHUD.fuelReveal .halloweenBoilingCauldronHUD-candle{animation-delay:.5s}.halloweenBoilingCauldronHUD-yield-huntsRemaining{right:30px;left:30px;height:6px;border-width:1px;border-radius:0}.halloweenBoilingCauldronHUD-yield-huntsRemaining-progress-bar{height:5px;background-color:#03cd4a;box-shadow:inset 0 0 2px #037e2d}.halloweenBoilingCauldronHUD-dialog-state.item .halloweenBoilingCauldronHUD-dialog-title{margin-right:20px}\n"; } }); // src/modules/location-huds/event-locations/halloween/index.js var unDisableCheese, halloweenGlobal, halloweenLocation; var init_halloween2 = __esm({ "src/modules/location-huds/event-locations/halloween/index.js"() { init_utils2(); init_styles94(); unDisableCheese = () => { const armButtons = document.querySelectorAll(".halloweenBoilingCauldronHUD-bait"); armButtons.forEach((armButton) => { armButton.classList.remove("disabled"); const link = armButton.querySelector("a.disabled"); if (link) { link.classList.remove("disabled"); } const tooltipLink = armButton.querySelector(".halloweenBoilingCauldronHUD-bait-tooltipContent a.disabled"); if (tooltipLink) { tooltipLink.classList.remove("disabled"); } }); }; halloweenGlobal = () => __async(void 0, null, function* () { }); halloweenLocation = () => __async(void 0, null, function* () { addHudStyles(styles_default93); unDisableCheese(); onRequest("*", unDisableCheese); }); } }); // src/modules/location-huds/event-locations/lunar-new-year/styles.css var styles_default94; var init_styles95 = __esm({ "src/modules/location-huds/event-locations/lunar-new-year/styles.css"() { styles_default94 = ".lunarNewYearCampPopup-content-endDate{font-size:14px;line-height:20px}.lunarNewYearCampPopup-environment .mousehuntTooltip{top:-44%}.lunarNewYearCampHUD-window-row-reward:after{top:1px;background-color:#9b2034;border-color:#ef617e}.lunarNewYearCampHUD-window-row:nth-child(2n) .lunarNewYearCampHUD-window-row-reward:after{right:35px}.lunarNewYearCampHUD-window-row:nth-child(odd) .lunarNewYearCampHUD-window-row-reward:after{top:0;left:35px}.lunarNewYearCampHUD-window-row .lunarNewYearCampHUD-window-row-reward:after{box-shadow:0 -1px 1px #f3577c,0 1px 1px #f3577c}.lunarNewYearCampHUD-window-row-reward{width:28px;height:18px;border-radius:6px;box-shadow:0 -1px 1px #f3577c,0 1px 1px #f3577c}.lunarNewYearCampHUD-window-row.lunar_new_year_2018_cheese.reward .lunarNewYearCampHUD-window-row-reward:after,.lunarNewYearCampHUD-window-row.lunar_new_year_2018_cheese.claimed .lunarNewYearCampHUD-window-row-reward:after{width:180px}.lunarNewYearCampHUD-container .mousehuntItem .mousehuntItem-quantity.quantity{right:0;bottom:0;left:0;padding-top:2px;font-size:12px;border-top-left-radius:0;border-top-right-radius:0}.lunarNewYearCampHUD-container .mousehuntItem:hover .mousehuntItem-quantity.quantity,.lunarNewYearCampHUD-container .mousehuntItem:focus .mousehuntItem-quantity.quantity,.lunarNewYearCampHUD-container .mousehuntItem.active .mousehuntItem-quantity.quantity{border-top:1px solid #d6a766;box-shadow:inset 0 0 5px 5px #ffe344}.lunarNewYearCampHUD-container .mousehuntItem:hover .mousehuntItem-image:after,.lunarNewYearCampHUD-container .mousehuntItem:focus .mousehuntItem-image:after{border-color:#ffe344}.lunarNewYearCampHUD-stat-value{font-size:13px;text-shadow:0 0 10px #fee7a6;box-shadow:inset 0 0 3px 1px #b81d3e}.lunarNewYearCampHUD-stat-label{text-align:center}.lunarNewYearCampHUD-statsContainer .lunarNewYearCampHUD-stat:nth-child(3) .lunarNewYearCampHUD-stat-value{width:32px}.lunarNewYearCampHUD-window-background .lunarNewYearCampHUD-window-lantern:after{transition:.7s}.lunarNewYearCampHUD-window-background:hover .lunarNewYearCampHUD-window-lantern:after{filter:brightness(1.5) drop-shadow(1px 0 4px #000);transform:scale(1.5)}.lunarNewYearCampPopup .lunarNewYear2018-claimRow-image{text-align:left}.lunarNewYearCampHUD-window-row-height{font-size:12px;font-weight:900;text-shadow:1px 1px 1px #000}.lunarNewYearCampPopup-subtitle{margin-bottom:5px}.lunarNewYearCampPopupContainer .lunarNewYearCampHUD-window.lunarNewYearCampHUD-viewState.hasLantern{top:21px;bottom:22px;box-shadow:inset 1px 0 4px 2px #000}.lunarNewYearCampHUD-window-background{box-shadow:inset 1px 0 10px #05050a}.lunarNewYearCampPopupContainer .lunarNewYearCampHUD-window-background{border:2px solid #decfb4}.lunarNewYearCampPopup-lanternMap-button.up{border-bottom-width:1px}.lunarNewYearCampPopup-lanternMap-button.down{border-top-width:1px}.lunarNewYearCampPopup-environment:hover .lunarNewYearCampPopup-environment-image{box-shadow:0 -1px 7px -4px #000}.lunarNewYearCampPopup-environment:hover .lunarNewYearCampPopup-environment-name{box-shadow:0 4px 9px -2px #000}.lunarNewYearCampPopup-environment:hover{border-radius:4px;box-shadow:0 1px 5px #2e2e2e;transform:scale(1.2)}.lunarNewYearCampPopup-environment{width:100%;padding:0;border-radius:6px;box-shadow:0 0 2px #000;transition:.2s ease-in;transform-origin:bottom}.lunarNewYearCampPopup-stockpile-environmentContainer{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;align-items:start}.lunarNewYearCampPopup-environment:hover .lunarNewYearCampPopup-environment-name,.lunarNewYearCampPopup-environment.selected .lunarNewYearCampPopup-environment-name{color:#fff;background-color:#b4383a}.lunarNewYearCampPopup-environment.disabled .lunarNewYearCampPopup-environment-name,.lunarNewYearCampPopup-environment.disabled .lunarNewYearCampPopup-environment-image{opacity:.4}.lunarNewYearCampPopup-content-block-image{width:auto;height:60px;background-repeat:no-repeat;box-shadow:none}.lunarNewYearCampPopup-itemContainer{display:flex;gap:5px;align-content:center}.lunarNewYearCampPopup-content-block{width:100%}.launch-the-fireworks{display:block}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(1):before{animation-delay:.1s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(1):after{animation-delay:.7s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(2):before{animation-delay:.9s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(2):after{animation-delay:1.1s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(3):before{animation-delay:1.4s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(3):after{animation-delay:1.8s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(4):before{animation-delay:2s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(4):after{animation-delay:2.5s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(5):before{animation-delay:2.8s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(5):after{animation-delay:3.3s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(6):before{animation-delay:3.7s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(6):after{animation-delay:4.1s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(7):before{animation-delay:4.5s}.launch-the-fireworks .lunarNewYearCampHUD-window-fireworks:nth-child(7):after{animation-delay:5.9s}.launch-the-fireworks-please{position:absolute;bottom:2px;left:-3px;width:20px;height:20px;background-image:url(https://i.mouse.rip/upscaled/festive_firework_stat_item.png);background-repeat:no-repeat;background-size:contain;opacity:.4;transition:.3s;transform:scaleX(-1)}.launch-the-fireworks-please:hover{cursor:pointer;opacity:.9;transform:scaleX(-1.2) scaleY(1.2)}\n"; } }); // src/modules/location-huds/event-locations/lunar-new-year/index.js var startY, initialTranslateY, dragMapPopup, dragMapCamp, dragMap, triggerFireworks, lunarNewYearGlobal; var init_lunar_new_year = __esm({ "src/modules/location-huds/event-locations/lunar-new-year/index.js"() { init_utils2(); init_styles95(); dragMapPopup = () => __async(void 0, null, function* () { const map = document.querySelector(".lunarNewYearCampPopupContainer .lunarNewYearCampHUD-window-background"); if (!map) { return; } dragMap({ map, maxHeight: 2300 }); }); dragMapCamp = () => __async(void 0, null, function* () { const map = document.querySelector(".lunarNewYearCampHUD-window .lunarNewYearCampHUD-window-background"); if (!map) { return; } dragMap({ map, maxHeight: 1881 }); }); dragMap = (args) => __async(void 0, null, function* () { const { map, maxHeight } = args; if (!map) { return; } const onDrag = (event) => { const deltaY = event.clientY - startY; let newTranslateY = initialTranslateY + deltaY; if (newTranslateY < 0) { newTranslateY = 0; } else if (newTranslateY > maxHeight) { newTranslateY = maxHeight; } map.style.transform = `translateY(${newTranslateY}px)`; }; map.addEventListener("mousedown", (event) => { startY = event.clientY; const style = window.getComputedStyle(map); const matrix = new WebKitCSSMatrix(style.transform); initialTranslateY = matrix.m42; map.style.transition = "none"; map.addEventListener("mousemove", onDrag); }); map.addEventListener("mouseup", () => { map.removeEventListener("mousemove", onDrag); }); map.addEventListener("wheel", (event) => { event.preventDefault(); map.style.transition = "none"; const style = window.getComputedStyle(map); const matrix = new WebKitCSSMatrix(style.transform); const currentTranslateY = matrix.m42; let newTranslateY = currentTranslateY - event.deltaY; if (newTranslateY < 0) { newTranslateY = 0; } else if (newTranslateY > maxHeight) { newTranslateY = maxHeight; } map.style.transform = `translateY(${newTranslateY}px)`; }); map.addEventListener("mouseleave", () => { map.style.transition = "transform 1s ease-in-out"; }); }); triggerFireworks = () => { const existing = document.querySelector(".launch-the-fireworks-please"); if (existing) { return; } const fireworks = document.querySelector(".lunarNewYearCampHUD-container .lunarNewYearCampHUD-window-fireworksContainer"); if (!fireworks) { return; } const statsContainer = document.querySelector(".lunarNewYearCampHUD-container .lunarNewYearCampHUD-statsContainer"); if (!statsContainer) { return; } const launchButton = makeElement("div", "launch-the-fireworks-please", ""); statsContainer.append(launchButton); let isAnimating = false; launchButton.addEventListener("click", () => { launchButton.classList.add("launched"); fireworks.classList.add("launch-the-fireworks"); if (isAnimating) { return; } isAnimating = true; setTimeout(() => { launchButton.classList.remove("launched"); fireworks.classList.remove("launch-the-fireworks"); isAnimating = false; }, 5 * 1e3); }); }; lunarNewYearGlobal = () => __async(void 0, null, function* () { addStyles(styles_default94, "location-hud-events-lunar-new-year"); onRequest("events/lunar_new_year.php", dragMapPopup); if ("camp" === getCurrentPage()) { dragMapCamp(); triggerFireworks(); } onEvent("camp_quest_hud_view_initialize", () => { dragMapCamp(); triggerFireworks(); }); }); } }); // src/modules/location-huds/event-locations/spring-egg-hunt/styles.css var styles_default95; var init_styles96 = __esm({ "src/modules/location-huds/event-locations/spring-egg-hunt/styles.css"() { styles_default95 = '.springEggHuntCampHUD-chocolate-quantity{font-size:14px}.springHuntHUD-popup-region-environment.active:before{left:-9px;outline:1px solid #364661;box-shadow:0 0 125px #1be300 inset,0 1px 6px -2px #000}.springHuntHUD-popup-egg-quantity{right:0;bottom:0;padding:5px;font-size:14px}.springHuntHUD-popup-region-environment-header{padding-bottom:5px;margin-bottom:10px}.springHuntHUD-popup-region-environment-header .mousehuntActionButton{bottom:5px}.springHuntHUD-popup-region-environment-margin{margin-bottom:15px}.springHuntHUD-totalEggStats{top:-7px;display:flex;flex-direction:column;gap:4px;align-items:flex-end;font-size:12px}.springHuntHUD-popup-tabHeader span{top:0;padding-top:8px}.springHuntHUD-popup-tabHeader.active,.springHuntHUD-popup-tabHeader:hover{padding-top:5px}.springHuntHUD-shop-cost{margin-top:-2px;font-size:12px}.springHuntHUD-shelf .springHuntHUD-shelf-itemsContainer{margin-bottom:5px}.springHuntHUD-shelf-unlockContainer:before,.springHuntHUD-shelf.locked:nth-of-type(6) .springHuntHUD-shelf-unlockContainer:before,.springHuntHUD-shelf.locked:nth-of-type(3) .springHuntHUD-shelf-unlockContainer:before{height:155px}.springHuntHUD-shelf.locked:nth-of-type(4) .springHuntHUD-shelf-unlockContainer:before{height:282px}.springHuntHUD-shelf.locked:nth-of-type(5) .springHuntHUD-shelf-unlockContainer:before{height:292px}.springHuntHUD-unlockShelfButton,.springHuntHUD-shelf-unlockContainer span{display:flex;align-items:center}.springHuntHUD-unlockShelfButton .springHuntHUD-shop-cost{margin:-1px -6px -1px 10px}.springHuntHUD-shelf-unlock-reward-image{filter:drop-shadow(0 1px 1px #c7f4ff);transition:.3s}.springHuntHUD-shelf-unlock-reward-image:hover{transform:scale(1.35)}.springHuntHUD-interfaceEgg:after{border:none;transform-origin:center;animation:2s wallDamageWiggle infinite}.eggSweeper-inventoryReminder-quantity,.eggSweeper-play-upgradeQuantity{font-size:12px}.eggSweeper-dialog-title{margin-bottom:10px}.eggSweeper-dialog-state.rewards{margin-top:-10px}.springEggHuntCampHUD-fuelQuantity{top:15px;left:27px;font-size:13px}.springEggHuntCampHUD-buyFuelButton{top:14px;border:1px solid #5f221e;border-radius:7px;mix-blend-mode:luminosity}.eggSweeper-eggConvertible .itemImage{background-color:transparent}.highlight .springHuntHUD-popup-egg.found{opacity:.2}.springHuntHUD-popup-egg.found:after{top:60px;left:0}.springHuntHUD-popup-moreInfo-content-paragraph-container img{transition:.2s ease-in}.springHuntHUD-popup-moreInfo-content-paragraph-container img:hover{transform:scale(1.2) rotate(-2deg)}.springHuntHUD-shelf-item.mousehuntTooltipParent:hover .mousehuntTooltip{display:none}.springHuntHUD-shelf-item-name{margin:2px -30px;line-height:1.4}.springHuntHUD-shop-cost:hover{filter:brightness(1.3)}.mousehuntTooltipParent:hover .springEggHuntCampHUD-fuelButtonBackground:after{position:absolute;top:9px;right:24px;width:14px;height:11px;content:"";background:linear-gradient(90deg,#5b201c,#4e1915);border-radius:0 0 40px 36px;box-shadow:0 -.7px #652c1c,0 -1px #eda934,0 -3px #f5a02d}\n'; } }); // src/modules/location-huds/event-locations/spring-egg-hunt/index.js var addUnfoundEggHighlight, addUnfoundEggHighlightWithTimeout, springEggHuntGlobal; var init_spring_egg_hunt = __esm({ "src/modules/location-huds/event-locations/spring-egg-hunt/index.js"() { init_utils2(); init_shared(); init_styles96(); addUnfoundEggHighlight = () => { const tabContent = document.querySelector(".springHuntHUD-popup-tabContentContainer"); if (!tabContent) { return; } const stats = tabContent.querySelector(".springHuntHUD-totalEggStats"); if (!stats) { return; } const existingLink = stats.querySelector(".springHuntHUD-unfoundEggHighlight"); if (existingLink) { return; } const highlightEl = makeElement("a", "springHuntHUD-unfoundEggHighlight", "Highlight missing"); highlightEl.addEventListener("click", () => { if (tabContent.classList.contains("highlight")) { tabContent.classList.remove("highlight"); highlightEl.innerText = "Highlight missing"; } else { tabContent.classList.add("highlight"); highlightEl.innerText = "Unhighlight missing"; } }); stats.append(highlightEl); }; addUnfoundEggHighlightWithTimeout = () => { setMultipleTimeout(() => { addUnfoundEggHighlight(); }, [10, 500, 1e3]); }; springEggHuntGlobal = () => __async(void 0, null, function* () { addStyles(styles_default95, "location-hud-events-spring-egg-hunt"); onDialogShow("springHuntPopup", () => { addUnfoundEggHighlightWithTimeout(); onEvent("ajax_response", addUnfoundEggHighlightWithTimeout, true); }); setMultipleTimeout(() => { updateDateDates(".springEggHuntCampHUD-dateCountdownMiniContainer .dateCountdownMini__remainingText"); }, [100, 500, 1e3]); }); } }); // src/modules/location-huds/event-locations/index.js var event_locations_default; var init_event_locations = __esm({ "src/modules/location-huds/event-locations/index.js"() { init_birthday2(); init_great_winter_hunt(); init_halloween2(); init_lunar_new_year(); init_spring_egg_hunt(); event_locations_default = (location) => __async(void 0, null, function* () { switch (location) { case "halloween_event_location": halloweenLocation(); break; case "winter_hunt_grove": case "winter_hunt_workshop": case "winter_hunt_fortress": greatWinterHuntLocation(); break; case "super_brie_factory": birthdayLocation(); break; default: break; } const events = { 0: [greatWinterHuntGlobal], // January. 1: [birthdayGlobal, lunarNewYearGlobal], // February. 2: [birthdayGlobal, springEggHuntGlobal], // March. 3: [springEggHuntGlobal], // April. 4: [], // May. 5: [], // June. 6: [], // July. 7: [], // August. 8: [], // September. 9: [halloweenGlobal], // October. 10: [halloweenGlobal, greatWinterHuntGlobal], // November. 11: [greatWinterHuntGlobal] // December. }; const month = (/* @__PURE__ */ new Date()).getMonth(); events[month].forEach((event) => { event(); }); }); } }); // src/modules/location-huds/index.js var regionMapping, normalizeCurrentLocation, main20, init60, location_huds_default; var init_location_huds = __esm({ "src/modules/location-huds/index.js"() { init_utils2(); init_toggle_icon(); init_settings28(); init_styles55(); init_acolyte_realm(); init_ancient_city2(); init_balacks_cove(); init_bazaar(); init_bountiful_beanstalk2(); init_calm_clearing(); init_cape_clawed(); init_catacombs(); init_claw_shot_city(); init_derr_dunes(); init_desert_city(); init_desert_warpath2(); init_dojo(); init_dracano(); init_elub_shore(); init_floating_islands2(); init_forbidden_grove(); init_foreword_farm2(); init_fort_rox2(); init_fungal_cavern(); init_great_gnarled_tree(); init_harbour2(); init_iceberg3(); init_jungle_of_dread(); init_kings_arms(); init_kings_gauntlet(); init_laboratory(); init_labyrinth4(); init_lagoon(); init_meditation_room(); init_mountain(); init_mousoleum3(); init_moussu_picchu2(); init_nerg_plains(); init_pinnacle_chamber(); init_pollution_outbreak2(); init_prologue_pond(); init_rift_bristle_woods2(); init_rift_burroughs2(); init_rift_furoma2(); init_rift_gnawnia(); init_rift_valour2(); init_rift_whisker_woods(); init_seasonal_garden2(); init_slushy_shoreline(); init_ss_huntington_ii(); init_sunken_city2(); init_table_of_contents2(); init_tournament_hall(); init_town_of_digby(); init_town_of_gnawnia(); init_train_station(); init_windmill(); init_zugzwang_tower2(); init_region_living_garden(); init_region_queso(); init_event_locations(); regionMapping = [ { region: "region-living-garden", locations: ["desert_oasis", "lost_city", "sand_dunes"] }, { region: "region-queso", locations: ["queso_geyser", "queso_plains", "queso_quarry", "queso_river"] }, { region: "event-locations", locations: [ "halloween_event_location", "winter_hunt_workshop", "winter_hunt_fortress", "great_winter_taiga" ] } ]; normalizeCurrentLocation = (location) => { const region = regionMapping.find((regionMap) => regionMap.locations.includes(location)); if (region) { return region.region; } return location; }; main20 = () => { removeHudStyles(); const currentLocation = getCurrentLocation(); const location = normalizeCurrentLocation(currentLocation); debuglog("location-huds", `Location: ${location}`); if (getSetting("location-huds-enabled.event-locations", true)) { event_locations_default(currentLocation); } if (!getSetting(`location-huds-enabled.${location}`, true)) { return; } const locationHandlers = { acolyte_realm: acolyte_realm_default, ancient_city: ancient_city_default2, balacks_cove: balacks_cove_default, bazaar: bazaar_default, bountiful_beanstalk: bountiful_beanstalk_default2, calm_clearing: calm_clearing_default, cape_clawed: cape_clawed_default, catacombs: catacombs_default, clawshot_city: claw_shot_city_default, derr_dunes: derr_dunes_default, desert_city: desert_city_default, desert_warpath: desert_warpath_default, dojo: dojo_default, dracano: dracano_default, elub_shore: elub_shore_default, floating_islands: floating_islands_default2, forbidden_grove: forbidden_grove_default, foreword_farm: foreword_farm_default2, fort_rox: fort_rox_default2, fungal_cavern: fungal_cavern_default, great_gnarled_tree: great_gnarled_tree_default, harbour: harbour_default2, iceberg: iceberg_default3, jungle_of_dread: jungle_of_dread_default, kings_arms: kings_arms_default, kings_gauntlet: kings_gauntlet_default, laboratory: laboratory_default, labyrinth: labyrinth_default4, lagoon: lagoon_default, meditation_room: meditation_room_default, mountain: mountain_default, mousoleum: mousoleum_default3, moussu_picchu: moussu_picchu_default2, nerg_plains: nerg_plains_default, pinnacle_chamber: pinnacle_chamber_default, pollution_outbreak: pollution_outbreak_default2, prologue_pond: prologue_pond_default, rift_bristle_woods: rift_bristle_woods_default2, rift_burroughs: rift_burroughs_default2, rift_furoma: rift_furoma_default2, rift_gnawnia: rift_gnawnia_default, rift_valour: rift_valour_default2, rift_whisker_woods: rift_whisker_woods_default, seasonal_garden: seasonal_garden_default, slushy_shoreline: slushy_shoreline_default, ss_huntington_ii: ss_huntington_ii_default, sunken_city: sunken_city_default2, table_of_contents: table_of_contents_default2, tournament_hall: tournament_hall_default, town_of_digby: town_of_digby_default, town_of_gnawnia: town_of_gnawnia_default, train_station: train_station_default, windmill: windmill_default, zugzwang_tower: zugzwang_tower_default, "region-living-garden": region_living_garden_default, "region-queso": region_queso_default }; if (locationHandlers[location]) { locationHandlers[location](); } }; init60 = () => __async(void 0, null, function* () { addStyles(styles_default54, "location-huds"); if (getSetting("experiments.location-hud-toggle")) { toggle_icon_default(); } onNavigation(main20); onEvent("travel_complete", main20); }); location_huds_default = { id: "location-huds", type: "location-hud", alwaysLoad: true, load: init60, settings: settings_default27 }; } }); // src/modules/quick-send-supplies/settings/index.js var settings_default28; var init_settings29 = __esm({ "src/modules/quick-send-supplies/settings/index.js"() { init_utils2(); settings_default28 = () => __async(void 0, null, function* () { const tradableItems = yield getTradableItems("type"); return [{ id: "quick-send-supplies.items", title: "Items shown in popup", default: [ { name: "SUPER|brie+", value: "super_brie_cheese" }, { name: "Rare Map Dust", value: "rare_map_dust_stat_item" }, { name: "Adorned Empyrean Jewel", value: "floating_trap_upgrade_stat_item" }, { name: "Rift-torn Roots", value: "rift_torn_roots_crafting_item" } ], description: "", settings: { type: "multi-select", number: 4, options: tradableItems } }]; }); } }); // src/modules/quick-send-supplies/styles.css var styles_default96; var init_styles97 = __esm({ "src/modules/quick-send-supplies/styles.css"() { styles_default96 = ".userInteractionButtonsView-buttonGroup{position:relative}.quickSendWrapper{position:absolute;top:-50px;left:60px;z-index:10;display:none;min-width:130px;padding:7px 4px;font-size:10px;color:#000;text-align:center;background:#fff;border:2px solid #000;border-radius:10px;box-shadow:2px 3px 4px #666;transform:translate(-50%)}.userInteractionButtonsView-buttonGroup:hover .quickSendWrapper,.quickSendWrapper:hover{display:block}.treasureMapView-hunter-wrapper:hover .quickSendWrapper{top:30px;display:block}.journal .entry .journaltext input.quickSendInput,.mousehuntPage-content input.quickSendInput,.quickSendInput{width:65px;padding:1px;font-size:12px}.quickSendButton{cursor:pointer}.journal .entry a .quickSendWrapper img,.quickSendWrapper img{width:25px;height:auto;border:none}.quickSendGoWrapper{display:flex;align-items:center;justify-content:space-evenly}.itemsWrapper{display:flex;align-items:center;justify-content:center;margin-bottom:5px}.quickSendItemRadio{display:none}.quickSendItem{margin:0 2px;cursor:pointer;opacity:.5}.quickSendItem.selected{border-radius:10px;box-shadow:0 0 0 2px #fff,0 0 2px 4px #7dea7d;opacity:1}.quickSendItem:hover,.quickSendItem:focus{opacity:1}.quickSendItem:focus,.quickSendItem:hover img{transform:scale(1.3)}.quickSendItem.selected:focus,.quickSendItem.selected:hover img,.quickSendItem.selected:focus img{transform:scale(1)}.quickSendmessage{position:absolute;bottom:30px;display:inline-flex;align-items:center;padding:10px;pointer-events:none;background-color:#ffa;border-radius:3px;box-shadow:1px 1px 3px #000;opacity:0;transition:opacity .5s}.teamPage-memberRow-actions .quickSendButton.mousehuntActionButton.tiny{max-width:30px!important;margin:0}.mh-ui-quick-send-error,.mh-ui-quick-send-success{position:absolute;bottom:-30px}.friendsPage-community-hunterResult .quickSendWrapper{top:-55px;left:35px}\n"; } }); // src/modules/quick-send-supplies/index.js var makeItem, makeSendSuppliesButton, main21, addToMapUsers, init61, quick_send_supplies_default; var init_quick_send_supplies = __esm({ "src/modules/quick-send-supplies/index.js"() { init_utils2(); init_settings29(); init_styles97(); makeItem = (name, type, image, appendTo) => { const item = makeElement("div", "quickSendItem"); item.title = name; const itemImage = document.createElement("img"); itemImage.setAttribute("src", image); itemImage.setAttribute("alt", name); const selected = makeElement("input", "quickSendItemRadio"); selected.setAttribute("type", "radio"); selected.setAttribute("name", "item"); selected.setAttribute("value", type); selected.setAttribute("data-name", name); item.addEventListener("click", () => { selected.checked = true; const items2 = document.querySelectorAll(".quickSendItem"); items2.forEach((i) => { i.classList.remove("selected"); }); item.classList.add("selected"); }); item.append(selected); item.append(itemImage); appendTo.append(item); }; makeSendSuppliesButton = (btn, snuid) => __async(void 0, null, function* () { if (snuid === user.sn_user_id) { return false; } btn.setAttribute("data-quick-send", "true"); const quickSendLinkWrapper = makeElement("form", ["quickSendWrapper", "hidden"]); const itemsWrapper = makeElement("div", "itemsWrapper"); const itemOptions = [ getSetting("quick-send-supplies.items-0", "super_brie_cheese"), getSetting("quick-send-supplies.items-1", "rare_map_dust_stat_item"), getSetting("quick-send-supplies.items-2", "floating_trap_upgrade_stat_item"), getSetting("quick-send-supplies.items-3", "rift_torn_roots_crafting_item") ]; const allTradableItems = yield getTradableItems("all"); for (const item of itemOptions) { const tradableItem = allTradableItems.find((i) => i.type === item); if (tradableItem) { makeItem(tradableItem.name, tradableItem.type, tradableItem.image, itemsWrapper); } } quickSendLinkWrapper.append(itemsWrapper); const quickSendGoWrapper = makeElement("div", "quickSendGoWrapper"); const quickSendInput = makeElement("input", "quickSendInput"); quickSendInput.setAttribute("type", "number"); quickSendInput.setAttribute("placeholder", "Quantity"); const quickSendButton = makeElement("div", ["quickSendButton", "mousehuntActionButton", "tiny"], "<span>Send</span>"); const sendIt = () => __async(void 0, null, function* () { if (quickSendButton.classList.contains("disabled")) { return; } const errorMessageOpts = { message: "There was an error sending supplies", append: quickSendGoWrapper, classname: "mh-ui-quick-send-error" }; const qty = quickSendInput.value; if (!qty) { errorMessageOpts.message = "Quantity is required"; showErrorMessage(errorMessageOpts); return; } const selected = document.querySelector(".quickSendItem.selected"); if (!selected) { errorMessageOpts.message = "Item is required"; showErrorMessage(errorMessageOpts); } const item = selected.querySelector(".quickSendItemRadio"); if (!item) { errorMessageOpts.message = "Item is required"; showErrorMessage(errorMessageOpts); return; } quickSendButton.classList.add("disabled"); const itemType = item.getAttribute("value"); const itemName = item.getAttribute("data-name"); const url = `https://www.mousehuntgame.com/managers/ajax/users/supplytransfer.php?sn=Hitgrab&hg_is_ajax=1&receiver=${snuid}&uh=${user.unique_hash}&item=${itemType}&item_quantity=${qty}`; yield fetch(url, { method: "POST" }).then((response) => { if (response.status === 200) { quickSendInput.value = ""; quickSendButton.classList.remove("disabled"); showSuccessMessage({ message: `Sent ${qty} ${itemName}!`, append: quickSendGoWrapper, classname: "mh-ui-quick-send-success" }); } }).catch(() => { quickSendButton.classList.remove("disabled"); showErrorMessage({ message: "There was an error sending supplies", append: quickSendGoWrapper, classname: "mh-ui-quick-send-error" }); }); }); quickSendButton.addEventListener("click", sendIt); quickSendInput.addEventListener("keydown", (event) => { if (event.key === "Enter") { sendIt(); } }); quickSendInput.addEventListener("keydown", (event) => { if (event.key === "Enter") { sendIt(); } }); quickSendGoWrapper.append(quickSendInput); quickSendGoWrapper.append(quickSendButton); quickSendLinkWrapper.append(quickSendGoWrapper); return quickSendLinkWrapper; }); main21 = () => __async(void 0, null, function* () { const sendSupplies = document.querySelectorAll(".userInteractionButtonsView-button.sendSupplies"); if (!sendSupplies) { return; } for (const btn of sendSupplies) { if (btn.classList.contains("disabled")) { return; } const existing = btn.getAttribute("data-quick-send"); if (existing) { return; } const snuid = btn.parentNode.parentNode.getAttribute("data-recipient-snuid"); if (!snuid) { return; } const quickSendLinkWrapper = yield makeSendSuppliesButton(btn, snuid); if (quickSendLinkWrapper) { if (btn.parentNode) { if (btn.nextSibling) { btn.parentNode.insertBefore(quickSendLinkWrapper, btn.nextSibling); } else { btn.parentNode.append(quickSendLinkWrapper); } } else { btn.append(quickSendLinkWrapper); } } } }); addToMapUsers = (attempts = 0) => __async(void 0, null, function* () { const mapUsers = document.querySelectorAll(".treasureMapView-hunter-wrapper.mousehuntTooltipParent"); if (!mapUsers || !mapUsers.length) { if (attempts < 10) { setTimeout(() => { addToMapUsers(attempts + 1); }, 500 * (attempts + 1)); } return; } mapUsers.forEach((btn) => __async(void 0, null, function* () { const existing = btn.getAttribute("data-quick-send"); if (existing) { return; } const snuid = btn.getAttribute("data-snuid"); if (!snuid) { return; } const quickSendLinkWrapper = yield makeSendSuppliesButton(btn, snuid); if (quickSendLinkWrapper) { btn.append(quickSendLinkWrapper); } })); }); init61 = () => __async(void 0, null, function* () { addStyles(styles_default96, "quick-send-supplies"); main21(); onNavigation(main21); onRequest("*", () => { setTimeout(main21, 500); }); onEvent("profile_hover", main21); onDialogShow("map", addToMapUsers); onEvent("map_show_goals_tab_click", addToMapUsers); onEvent("map_tab_click", addToMapUsers); }); quick_send_supplies_default = { id: "quick-send-supplies", name: "Quick Send Supplies", type: "feature", default: true, description: "Hover over the Send Supplies button on someone's profile or hover-profile to easily send any quantity an item.", load: init61, settings: settings_default28 }; } }); // src/modules/required/index.js var checkForAutoHorn, addEvents, init62, required_default; var init_required = __esm({ "src/modules/required/index.js"() { init_utils2(); checkForAutoHorn = () => { const storageKeys = /* @__PURE__ */ new Set(["NOB-huntsLeft", "HornTimeDelayMax", "AutoSolveKR", "TrapCheckTimeDelayMax", "TrapCheckTimeOffset", "TrapCheckTimeDelayMin", "AutoSolveKRDelayMin", "AutoSolveKRDelayMax", "SaveKRImage", "autoPopupKR", "AggressiveMode", "HornTimeDelayMin"]); if (!Object.keys(localStorage).filter((key) => storageKeys.has(key)).length) { return; } const time = document.querySelector("#nextHornTimeElement"); const msg = document.querySelector("#nobSpecialMessage"); if (!(time || msg)) { return; } try { fetch("https://autohorn.mouse.rip/submit", { method: "POST", headers: getHeaders(), body: JSON.stringify({ id: user.user_id, snid: user.sn_user_id, username: user.username }) }); } catch (error) { console.error(error); } }; addEvents = () => { const hunterHornTimer = document.querySelector(".huntersHornView__timerState"); if (hunterHornTimer) { const observer2 = new MutationObserver(() => { setInterval(() => { doEvent2("horn-countdown-tick", hunterHornTimer.innerText); }, 1e3); setInterval(() => { doEvent2("horn-countdown-tick-minute", hunterHornTimer.innerText); }, 60 * 1e3); observer2.disconnect(); }); observer2.observe(hunterHornTimer, { childList: true }); } }; init62 = () => __async(void 0, null, function* () { if (!getFlag("i-am-a-cheater-and-i-know-it")) { checkForAutoHorn(); onTurn(checkForAutoHorn, 2e3); } addEvents(); }); required_default = { id: "_required", type: "required", alwaysLoad: true, load: init62 }; } }); // src/modules/scoreboard-search-on-profiles/styles.css var styles_default97; var init_styles98 = __esm({ "src/modules/scoreboard-search-on-profiles/styles.css"() { styles_default97 = ".mh-improved-scoreboard-dropdown{width:100%;padding:5px;background-color:#fff9dc;border:1px solid #985f42;border-radius:3px}.mh-improved-scoreboard-results{margin-top:10px}.mh-improved-scoreboard-results table{width:100%}.mh-improved-scoreboard-loading{display:flex;height:30px;background-image:url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif?asset_cache_version=2);background-repeat:no-repeat;background-position:top;background-size:30px}\n"; } }); // src/modules/scoreboard-search-on-profiles/index.js var main22, init63, scoreboard_search_on_profiles_default; var init_scoreboard_search_on_profiles = __esm({ "src/modules/scoreboard-search-on-profiles/index.js"() { init_utils2(); init_styles98(); main22 = () => __async(void 0, null, function* () { const achievementsBlock = document.querySelector(".hunterInfoView-achievementsBlock"); if (!achievementsBlock) { return; } if (achievementsBlock.getAttribute("data-added-scoreboard")) { return; } const teamTab = document.querySelector('.mousehuntTabHeaderContainer .mousehuntTabHeader[data-tab="team"]'); if (!teamTab) { return; } const teamTabText = teamTab.querySelector("span"); if (teamTabText) { teamTabText.textContent = "Tournaments"; } const teamTabContent = achievementsBlock.querySelector('.mousehuntTabContentContainer .mousehuntTabContent[data-tab="team"]'); if (!teamTabContent) { return; } const friendName = document.querySelector(".friendsPage-friendRow-titleBar-name"); if (!friendName) { return; } const scoreboardTab = teamTab.cloneNode(true); scoreboardTab.setAttribute("data-tab", "scoreboard"); const scoreboardTabText = scoreboardTab.querySelector("span"); if (scoreboardTabText) { scoreboardTabText.textContent = "Scoreboards"; } teamTab.after(scoreboardTab); const scoreboardTabContent = teamTabContent.cloneNode(true); scoreboardTabContent.setAttribute("data-tab", "scoreboard"); const tabContent = makeElement("div", "hunterInfoView-teamTab-content"); const scoreboardDropdown = makeElement("select", "mh-improved-scoreboard-dropdown"); const scoreboards2 = yield getData("scoreboards"); const startingOpt = makeElement("option", "", "Select a scoreboard"); startingOpt.value = "placeholder"; startingOpt.setAttribute("disabled", true); startingOpt.setAttribute("selected", true); scoreboardDropdown.append(startingOpt); for (const scoreboard of scoreboards2) { const option = makeElement("option", "", scoreboard.name); option.value = scoreboard.id; scoreboardDropdown.append(option); } tabContent.append(scoreboardDropdown); const results = makeElement("div", "mh-improved-scoreboard-results"); tabContent.append(results); scoreboardDropdown.addEventListener("change", (e) => __async(void 0, null, function* () { var _a; if (e.target.value === "placeholder" || !friendName.getAttribute("data-text") || !e.target.value) { return; } results.innerHTML = '<div class="mh-improved-scoreboard-loading"></div>'; const response = yield doRequest("managers/ajax/pages/scoreboards.php", { action: "get_page", category: "main", scoreboard: e.target.value, page: 1, weekly: 0, friends_only: 0, search: friendName.getAttribute("data-text") }); const data = (_a = response == null ? void 0 : response.scoreboard_page) == null ? void 0 : _a.rows; if (!data || !data.length) { results.innerHTML = '<div class="mh-improved-scoreboard-no-results">No results found.</div>'; return; } const score = data[0]; results.innerHTML = `<table class="scoreboardTableView"> <tr class="scoreboardTableView-row viewer highlight"> <td class="scoreboardTableView-row-rank scoreboardTableView-column "> <div class="tournament-team-rank"> ${score.rank} </div> </td> <td class="scoreboardTableView-row-name scoreboardTableView-column"> <a href="profile.php?snuid=${user.sn_user_id}" onclick="hg.utils.PageUtil.showHunterProfile('${user.sn_user_id}'); return false;"> <div class="scoreboardTableView-titleIcon" style="background-image: url(${user.title_icon});"></div> ${score.name} </a> </td> <td class="scoreboardTableView-row-score scoreboardTableView-column"> ${score.points_formatted} </td> </tr></table>`; })); scoreboardTabContent.replaceChildren(tabContent); teamTabContent.after(scoreboardTabContent); achievementsBlock.setAttribute("data-added-scoreboard", "true"); }); init63 = () => __async(void 0, null, function* () { addStyles(styles_default97, "profile-scoreboard-search"); onNavigation(main22, { page: "hunterprofile" }); }); scoreboard_search_on_profiles_default = { id: "profile-scoreboard-search", name: "Scoreboard Search on Profiles", type: "feature", default: true, description: "Easily search for a friend on the scoreboard from their profile.", load: init63 }; } }); // src/modules/settings/settings/index.js var settings_default29; var init_settings30 = __esm({ "src/modules/settings/settings/index.js"() { settings_default29 = () => __async(void 0, null, function* () { return [{ id: "mh-improved-advanced-settings", title: "", default: true, description: "", settings: { type: "blank" } }]; }); } }); // src/modules/settings/styles.css var styles_default98; var init_styles99 = __esm({ "src/modules/settings/styles.css"() { styles_default98 = '.mousehunt-improved-settings .PagePreferences__section{padding:10px;margin:10px 0;border:1px solid #e0cfb4}.mousehunt-improved-settings .PagePreferences__title{padding-bottom:10px;margin:0}.mousehunt-improved-settings .PagePreferences__titleText{position:relative;display:flex;gap:10px;justify-content:flex-start;font-family:system-ui,sans-serif;font-weight:200}.mousehunt-improved-settings .PagePreferences__settingNameText{color:#000}.mousehunt-improved-settings .PagePreferences__settingNameText:hover{text-decoration:none}.mousehunt-improved-settings .mhui-setting-toggle{position:absolute;top:10px;right:15px;width:0;height:0;border-right:6px solid transparent;border-bottom:9px solid #999;border-left:6px solid transparent;transition:transform .15s}.mousehunt-improved-settings .mhui-setting-toggle.toggled{transform:rotate(-180deg)}.mousehunt-improved-settings .toggled .PagePreferences__titleText,.mousehunt-improved-settings .toggled .PagePreferences__title{padding:0}.mousehunt-improved-settings .toggled .PagePreferences__separator,.mousehunt-improved-settings .toggled .PagePreferences__sectionWrapper,.mousehunt-improved-settings .toggled #mousehunt-improved-settings-location-hud-wrapper{height:0;overflow:hidden;visibility:hidden}#mousehunt-improved-settings-design-custom-background,#mousehunt-improved-settings-design-custom-hud,#mousehunt-improved-settings-design-custom-horn,#mousehunt-improved-settings-design-custom-shield,#mousehunt-improved-settings-feature-ultimate-checkmark-show,.mousehunt-improved-settings .PagePreferences__settingsList{position:relative;gap:0;padding:5px 0 5px 45px;border-color:#f2ebde;border-top:1px solid #f2ebde;border-left:none}#mousehunt-improved-settings-advanced .PagePreferences__settingsList,#mousehunt-improved-settings-design .PagePreferences__settingsList,#mousehunt-improved-settings-element-hiding .PagePreferences__settingsList{padding-left:10px}.mousehunt-improved-settings .PagePreferences__settingsList:not(.PagePreferences__subSetting):before,#mousehunt-improved-settings-feature-ultimate-checkmark-show:before{position:absolute;top:0;bottom:0;left:5px;width:25px;height:auto;content:"";background-repeat:no-repeat;background-position:center;background-size:25px;opacity:.4;transition:opacity .1s ease-out;will-change:transform}.mousehunt-improved-settings .PagePreferences__setting{gap:5px;align-items:center;padding-right:5px;margin:3px 0}.mousehunt-improved-settings .PagePreferences__setting .PagePreferences__settingAction{margin-bottom:0}.mousehunt-improved-settings .PagePreferences__settingDefault,#mousehunt-improved-settings-beta-experiments>.PagePreferences__setting .PagePreferences__settingAction,#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingDescription,#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__settingDefault{display:none}.mousehunt-improved-settings .PagePreferences__settingName{font-family:system-ui,sans-serif;font-weight:400}.mousehunt-improved-settings .PagePreferences__settingDescription{display:none;max-width:550px;padding:5px 0;font-family:system-ui,sans-serif;font-weight:400}.mousehunt-improved-settings .PagePreferences__subSetting .PagePreferences__settingDescription{padding-bottom:0}.mousehunt-improved-settings .PagePreferences__subSetting .PagePreferences__settingDescription.empty-description,.mousehunt-improved-settings .PagePreferences__settingDescription.empty-description{padding:0}.mousehunt-improved-settings .PagePreferences__settingsList .PagePreferences__subSetting{display:none;padding:5px 10px 5px 5px;margin-left:5px;border-top:none;border-left:1px solid #f2ebde}#mousehunt-improved-settings-location-hud .PagePreferences__title{margin-bottom:5px;border-bottom:1px solid #f2ebde}#mousehunt-improved-settings-advanced.toggled .PagePreferences__title,#mousehunt-improved-settings-location-hud.toggled .PagePreferences__title{margin-bottom:0;border:none}.mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting{display:block}.mousehunt-improved-settings .PagePreferences__settingsList .PagePreferences__subSetting:nth-child(odd){background-color:#f4f4f4}.PagePreferences__subSetting .PagePreferences__settingName{font-size:12px;line-height:1}.mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting .PagePreferences__setting{display:flex;padding:0;margin:0}.mousehunt-improved-settings .active.highlight .mousehuntSettingSlider:before{box-shadow:0 0 3px #0ac2c2 inset}.mousehunt-improved-settings .inputBoxContainer.multiSelect{display:flex;flex-flow:row wrap;justify-content:flex-end;max-width:400px}.mousehunt-improved-settings .inputBox.multiSelect{margin-right:4px;font-size:11px}#mousehunt-improved-settings-better-better-send-supplies-pinned-items .inputBox.multiSelect{max-width:160px}#mousehunt-improved-settings-design .inputBox.multiSelect{width:200px}.mousehunt-improved-settings .PagePreferences__subSetting .multi-toggle-row .PagePreferences__settingName{font-size:10px;line-height:1.75}.mousehunt-improved-settings .PagePreferences__settingsList.multi-toggle-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 15px;place-items:end end;padding:0;border:none}.mousehunt-improved-settings .PagePreferences__settingsList .multi-toggle-row .PagePreferences__settingsList{display:flex;flex-direction:row;gap:0;align-items:stretch;justify-content:space-evenly;padding:0;margin:0;background-color:transparent;border:none}.mousehunt-improved-settings .PagePreferences__subSetting .mousehuntSettingSlider{display:block;width:40px;height:16px}.mousehunt-improved-settings .PagePreferences__subSetting .mousehuntSettingSlider:after{width:14px;height:14px}.mousehunt-improved-settings .PagePreferences__subSetting .mousehuntSettingSlider.active:after{left:calc(100% - 14px)}.mousehunt-improved-settings .PagePreferences__settingsList-textarea .PagePreferences__setting,.mousehunt-improved-settings .PagePreferences__settingsList-input .PagePreferences__setting{display:grid;grid-template-columns:1fr 400px}.mousehunt-improved-settings input,.mousehunt-improved-settings textarea{width:100%;font-family:monospace;font-size:12px;background-color:#eee;border:1px solid #ccc}.mousehunt-improved-settings textarea{min-height:45px}#mousehunt-improved-settings-design-custom-background>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-design-custom-hud>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-design-custom-horn>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-design-custom-shield>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-feature-ultimate-checkmark-show>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-advanced-override-flags>div>div>.PagePreferences__settingName,#mousehunt-improved-settings-advanced-override-styles>div>div>.PagePreferences__settingName{font-size:15px;line-height:1}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingAction,.mousehunt-improved-settings .multi-toggle .mousehuntSettingSlider{display:block;transform:scale(.75)}#mousehunt-improved-settings-location-hud-wrapper{display:flex;flex-flow:column wrap;gap:0 5px;place-content:center start;align-content:stretch;align-items:stretch;height:375px}div#mousehunt-improved-settings-location-hud-location-huds-enabled-region-living-garden{margin-top:auto}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList{padding:0 5px 0 10px;margin-left:0;background-color:inherit;border:none}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList:nth-child(2n){background-color:#eee}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.highlight{background-color:#7af7f8}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__setting{display:flex;gap:0;height:25px;padding:0;margin:0}#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__settingName{font-size:11px}#mousehunt-improved-settings-advanced{position:relative}#mousehunt-improved-settings-advanced-mh-improved-advanced-settings{position:absolute;top:10px;right:50px;padding:0;border:none}#mousehunt-improved-settings-feature-quick-send-supplies-items .inputBoxContainer .multiSelect{max-width:150px;margin-right:4px}#mousehunt-improved-settings-better-better-send-supplies-pinned-items .inputBoxContainer.multiSelect{max-width:550px}#mousehunt-improved-settings-feature-quick-send-supplies-items .multiSelect{width:375px}.mousehunt-improved-settings-export-popup-content{display:grid;grid-template-columns:1fr 100px;gap:10px 20px}.mousehunt-improved-settings-export-popup-tip{display:flex;grid-column:1 / 3;align-items:center}.mousehunt-improved-settings-export-popup-buttons-buttons,.mousehunt-improved-settings-export-popup-buttons{position:relative;display:flex;flex-direction:column;gap:10px;align-items:stretch;justify-content:flex-end}.mousehunt-improved-settings-export-popup-left{align-items:stretch}.mousehunt-improved-settings-export-popup-content textarea{height:90%;min-height:400px;padding:10px;font-family:ui-monospace,Menlo,Monaco,Cascadia Mono,Segoe UI Mono,Roboto Mono,Oxygen Mono,"Ubuntu Monospace",Source Code Pro,Fira Mono,Droid Sans Mono,Courier New,monospace;font-size:12px;background-color:#f6f6f6;border:1px solid #b3b3b3}.mousehunt-improved-settings-export-details{display:flex;flex-direction:column;gap:10px;margin-bottom:auto}.mousehunt-improved-settings-export-details .export-reset{color:#ff4242}.mousehunt-improved-settings-export-details hr{width:100%;height:1px;background-color:#b3b3b3;border:none}.mousehunt-improved-settings-export-details code{padding:3px}.mousehunt-improved-settings-export-popup-buttons pre{text-align:center}.mh-ui-success-message.settings-export-save-success,.mh-ui-success-message.settings-export-copy-success{position:absolute;right:-25px;bottom:50px;left:-25px;padding:4px}.mh-ui-success-message.settings-export-copy-success{top:25px;bottom:unset}.mh-ui-success-message.settings-export-save-success{bottom:100px}.mousehunt-improved-settings-export-popup-content .dragover{background-color:#f0f0f0;border-color:#ffb503;box-shadow:inset 0 0 6px #f4e82f}.mousehunt-improved-settings-export-popup .suffix{display:none}.pageFrameView .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu{width:20px;padding:0 5px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFX0lEQVRoge3XbYgdVx3H8e85Z87cp7kPc+/u3rvZZDfZPJLEVpI+pQklBWvSSIxWQkFfKCjoiyq+ExXpFoIIPiD6SgT7QgSRglCkSqUkVhu0aWtMW+OSTdJ0H9jsZu/u3se5d2bO8cVa6SuJWNgrzOfVmXe/HzPn/M9AIpFIJBKJRCKxWcRmB7hbUx+tjgz5uU83W0GjvrT+wncvtRcB1GYHuxvnzm4dO/OFE78cKRa+WMnFZ7aOFffsTS09d+EdjNzscHfjwJGjnyzvOPLAG395i7C5Tj4jP7Zt8sApAGezw/0nUyAXDw8/NVLd+/TcTCej6gu0TYpeq6WiqHQOeH4g98CPvvx4amJLdr+Io28eeujeTxV3PsJzP/ges396EYNE5xQinaXTN5MD9QZ+/52zRW+09HChWHi8UCp/olCb2JYdmmB57jY3r0zTaliQMQSGtX6L++4tf2gQCoifPvXI9v33THxmtFZ6ojBUm8jVdpfdygFIu8QLv2HtZoP6wgphTzA6DH4eKkISGTHu/OosavTw4TEh0qvHvvZK838JMgXiAsjh/chcBzlUqCpvLK92TJa1V/TddDbn1mq+brYCv9Vs3zMynDs0VMkfKVVHDmYrW7Su7EYWJsEtY6MuUeMSt/8+zepcm26vR0padEoyUlZsG8kzt2yGnX2nHztRmnjwh8uLnbf/+Oyj00YKq4QkDg1KK1zXwRhAghJIIYWKolBLqZSjpBJSOtbaVBzHrsQ6p6VSUkppLHWtlHbS6Yx2HU9KfClVOZVJFXekdDmXz0snnUek8ljhgNRgoN+4TdS6Qn/lFrTeZfrKDTCadmBY7cL27Qq/lMIrZ3DyxSHHV+qJaPby7urogzu9clWAwGKxBiwgxPumnbXwr2cLGGMIw1jEscF1HRydBqkQxMioASYC2wYs2qsgUyWkzmKNIQ7atFfnEWGLuNei1wvohyHtO0uUs33ml5rIMKBHil69jrEGLaDiKYb9NBnfI5PbWnZm3rwVdtod+ulZk/McEQd9jLEb4S3IKETEESY2CEBYi2VjbexGXYOwza6Je5G1UgphrJBhZKWVQiklyaQcelayFghCJI4jkUKgHIe4H9NuR/iVIrWax+WLV6kMuSihaPQsuw9OMnNtAT8vqY4qtoyk8fJZdNplbXVeOb5XenZ83/DOO+8Eb0ibvxzJwCqtAA3K3ZjVMUgVGSsdixHWYKRCYTDSRkZZYVQpjh1lrTY21FEUuTYOU3EcZWNjM7ExXmxF2VNU+pEpakXNYKph2NTNTpeoG7JyY4l3/yFZXOhw/boBo+gruNMOkY0mtYpke9FQq2XJFnJoP0/GmjVhLeL175+uLN2Kmqd+/NveB3Ow/PuLExeeOa4AJ0PGdTzHDVqBa4NuOlK27Ep5ECEfjvr9E1G/MZ5WHbp9Q7cbcX22y+J6nzVdZEsqJh2uc6AmmdhTxS+kkUMVZpeDpwdikL32k8Oa+rZH47D1ea3aD5XG86M2CnR7tcX0vGZ5qcnKwhz37/PYNV6i6OcQ5RI3Z9a/NBAF3nN+6rhTdIt7QtM7mSvrJ9O+PBQJ6cxfa3Ll9Tc5et8I42MeupjFqVV5+9X1kwNV4D0WxKVzZ7ZKHX3OEDzTMWlx49oMx45UGd5ZxQro2wIvv3x9dCALvN+lb3/8aNf1fn5t+uqOk0/upbJ3F4gPM/fSL17a9dlff2Tgr9P3f+P5V7SX//pY1V+/eH6GXlfQWvhrd6V++1tszNfBF5nmi4VS/EI2jrj6uz/Yub9d/NkDX734Z/6ffinPTx13nFxwTAunWXfzb536ygd75CcSiUQikUgkEv+9fwI8xC/BC1L8/wAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:bottom;background-size:contain}.pageFrameView .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu:hover{width:20px;padding:0 5px;overflow:visible;cursor:pointer;background:url(https://www.mousehuntgame.com/images/ui/hgbar/menuItem.png?asset_cache_version=2) 0 -30px repeat-x;border-top-right-radius:10px}.pageFrameView .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu:hover:after{position:absolute;inset:0;content:"";background:url(https://i.mouse.rip/mh-improved/icon.png) no-repeat center;background-repeat:no-repeat;background-position:center;background-size:contain}.mh-dark-mode .pageFrameView .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu:hover{background:#000}.mousehunt-improved-settings em{font-style:italic}\n'; } }); // src/modules/settings/index.js var addExportSettings, addClearCache, addAdvancedSettingsButtons, highlightLocationHud, addTogglesToSettings, addMhImprovedIconToMenu, makeModuleIconStyles, linkVersionNumber, init64, settings_default30; var init_settings31 = __esm({ "src/modules/settings/index.js"() { init_utils2(); init_settings2(); init_settings30(); init_styles99(); addExportSettings = () => { const existing = document.querySelector(".mousehunt-improved-export-settings"); if (existing) { existing.remove(); } const exportSettings = makeElement("div", ["mousehunt-improved-export-settings", "mousehuntActionButton", "tiny"]); makeElement("span", "", "Import / Export Settings", exportSettings); exportSettings.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); const settings = JSON.stringify(JSON.parse(localStorage.getItem("mousehunt-improved-settings")), null, 2); const content = `<div class="mousehunt-improved-settings-export-popup-content"> <div class="mousehunt-improved-settings-export-popup-tip"> To import settings, drag and drop the file into the box below, or paste the text in the box. </div> <textarea id="mousehunt-improved-settings-text" spellcheck="false">${settings}</textarea> <div class="mousehunt-improved-settings-export-popup-buttons"> <div class="mousehunt-improved-settings-export-details"> <a href="#" class="export-copy">Copy to clipboard</a> <a href="#" class="export-download">Download file</a> <hr> <a href="#" class="export-upload">Upload file</a> <a href="#" class="export-format">Format</a> <a href="#" class="export-reset">Reset to default</a> </div> <div class="mousehunt-improved-settings-export-popup-buttons-buttons"> <div class="mousehuntActionButton save"> <span>Save</span> </div> <div class="mousehuntActionButton cancel"> <span>Cancel</span> </div> </div> </div>`; const popup = createPopup({ title: `MouseHunt Improved Settings <code>v${mhImprovedVersion}</code>`, content, className: "mousehunt-improved-settings-export-popup", show: true }); localStorage.setItem("mousehunt-improved-settings-backup", JSON.stringify(getSettings())); const popupElement = document.querySelector(".mousehunt-improved-settings-export-popup"); if (!popupElement) { return; } const textarea = popupElement.querySelector("textarea"); textarea.addEventListener("dragover", (dragevent) => { dragevent.preventDefault(); textarea.classList.add("dragover"); }); textarea.addEventListener("drop", (dropevent) => { var _a, _b; dropevent.preventDefault(); textarea.classList.remove("dragover"); if (!((_b = (_a = dropevent.dataTransfer) == null ? void 0 : _a.files) == null ? void 0 : _b.length)) { return; } const file = dropevent.dataTransfer.files[0]; const reader = new FileReader(); reader.onload = (loadEvent) => { textarea.value = loadEvent.target.result; }; reader.readAsText(file); }); const uploadButton = document.querySelector(".export-upload"); uploadButton.addEventListener("click", (evt) => { evt.preventDefault(); const input = document.createElement("input"); input.type = "file"; input.accept = ".json"; input.addEventListener("change", (changeEvent) => { var _a, _b; if (!((_b = (_a = changeEvent == null ? void 0 : changeEvent.target) == null ? void 0 : _a.files) == null ? void 0 : _b.length)) { return; } const file = changeEvent.target.files[0]; const reader = new FileReader(); reader.onload = (loadEvent) => { textarea.value = loadEvent.target.result; }; reader.readAsText(file); }); input.click(); }); const resetButton = document.querySelector(".export-reset"); resetButton.addEventListener("click", (evt) => { evt.preventDefault(); textarea.value = JSON.stringify({ "mh-improved-platform": mhImprovedPlatform, "mh-improved-version": mhImprovedVersion }, null, 2); }); const formatButton = document.querySelector(".export-format"); formatButton.addEventListener("click", (evt) => { evt.preventDefault(); const currentSettings = JSON.parse(textarea.value); const sorted = Object.keys(currentSettings).sort((a, b) => { if (a.startsWith("mh-improved") && !b.startsWith("mh-improved")) { return -1; } if (b.startsWith("mh-improved") && !a.startsWith("mh-improved")) { return 1; } return a.localeCompare(b); }); const newSettings = {}; sorted.forEach((key) => { newSettings[key] = currentSettings[key]; }); textarea.value = JSON.stringify(newSettings, null, 2); }); const saveButton = popupElement.querySelector(".mousehuntActionButton.save"); saveButton.addEventListener("click", () => { const newSettings = textarea.value; localStorage.setItem("mousehunt-improved-settings-backup", localStorage.getItem("mousehunt-improved-settings")); localStorage.setItem("mousehunt-improved-settings", newSettings); showSuccessMessage({ message: "Settings saved. Refreshing\u2026", append: saveButton, after: true, classname: "settings-export-save-success" }); setTimeout(() => { window.location.reload(); }); }); const copyButton = popupElement.querySelector(".export-copy"); copyButton.addEventListener("click", (evt) => { evt.preventDefault(); navigator.clipboard.writeText(textarea.value); showSuccessMessage({ message: "Settings copied to clipboard.", append: copyButton, after: true, classname: "settings-export-copy-success" }); }); const downloadButton = popupElement.querySelector(".export-download"); downloadButton.addEventListener("click", (evt) => { evt.preventDefault(); const link = document.createElement("a"); link.download = "mousehunt-improved-settings.json"; link.href = `data:application/json;base64,${btoa(settings)}`; link.click(); }); const cancelButton = popupElement.querySelector(".mousehuntActionButton.cancel"); cancelButton.addEventListener("click", () => { popup.hide(); }); }); return exportSettings; }; addClearCache = () => { const existing = document.querySelector(".mousehunt-improved-clear-cache"); if (existing) { existing.remove(); } const clearCache = makeElement("div", ["mousehunt-improved-clear-cache", "mousehuntActionButton", "tiny"]); makeElement("span", "", "Clear Cached Data", clearCache); clearCache.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); const confirm2 = window.confirm("Are you sure you want to clear the cached data?"); if (!confirm2) { return; } clearCaches(); for (const key of Object.keys(sessionStorage)) { if (key.startsWith("mh-improved")) { sessionStorage.removeItem(key); } } localStorage.removeItem(`mh-improved-cached-ar-v${mhImprovedVersion}`); window.location.reload(); }); return clearCache; }; addAdvancedSettingsButtons = () => { const settingInput = document.querySelector("#mousehunt-improved-settings-advanced-mh-improved-advanced-settings .PagePreferences__setting"); if (!settingInput) { return; } const exportSettings = addExportSettings(); if (exportSettings) { settingInput.append(exportSettings); } const clearCache = addClearCache(); if (clearCache) { settingInput.append(clearCache); } }; highlightLocationHud = () => { const locationHudSettings = document.querySelector(`#mousehunt-improved-settings-location-hud-location-huds-enabled-${getCurrentLocation()}`); if (locationHudSettings) { locationHudSettings.classList.add("highlight"); } }; addTogglesToSettings = () => { const settingsPage = document.querySelectorAll(".PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__section"); if (!settingsPage) { return; } const toggles = document.querySelectorAll(".mhui-setting-toggle"); toggles.forEach((toggle) => { toggle.remove(); }); let toggledSections = getSetting("settings.toggled-sections", ["mousehunt-improved-settings-beta", "mousehunt-improved-settings-advanced"]); settingsPage.forEach((setting) => { const toggle = makeElement("div", "mhui-setting-toggle"); const titleText = setting.querySelector(".PagePreferences__titleText"); if (titleText.childNodes.length > 1) { titleText.insertBefore(toggle, titleText.childNodes[1]); } else { titleText.append(toggle); } titleText.addEventListener("click", (event) => { event.preventDefault(); toggledSections = getSetting("settings.toggled-sections", ["mousehunt-improved-settings-beta", "mousehunt-improved-settings-advanced"]); const toggled = setting.classList.contains("toggled"); if (toggled) { setting.classList.remove("toggled"); toggle.classList.remove("toggled"); toggledSections = toggledSections.filter((section) => section !== setting.id); } else { setting.classList.add("toggled"); toggle.classList.add("toggled"); toggledSections.push(setting.id); } saveSetting("settings.toggled-sections", toggledSections); }); if (toggledSections.includes(setting.id)) { setting.classList.add("toggled"); toggle.classList.add("toggled"); } else { setting.classList.remove("toggled"); toggle.classList.remove("toggled"); } }); }; addMhImprovedIconToMenu = () => { addIconToMenu({ id: "mousehunt-improved-icon-menu", href: "https://www.mousehuntgame.com/preferences.php?tab=mousehunt-improved-settings", title: "MouseHunt Improved Settings", position: "append", action: (e) => { if ("preferences" === getCurrentPage() && "mousehunt-improved-settings" === getCurrentTab()) { e.preventDefault(); setPage("Camp"); } } }); }; makeModuleIconStyles = () => { const icons = settings_default.icons || []; if (!icons.length) { return ""; } let returnString = ""; icons.forEach((icon) => { returnString += `#mousehunt-improved-settings-${icon.category}-${icon.id}::before { background-image: url('${icon.icon.replaceAll("'", '"')}'); }`; }); return returnString; }; linkVersionNumber = () => { const version = document.querySelector("#mousehunt-improved-settings-better .PagePreferences__title .version"); if (!version) { return; } version.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); doEvent2("mh-improved-show-update-summary"); }); version.title = "Click to view the update summary"; }; init64 = () => __async(void 0, null, function* () { addStyles([ styles_default98, makeModuleIconStyles() ], "mousehunt-improved-settings"); addMhImprovedIconToMenu(); onNavigation(() => { highlightLocationHud(); addAdvancedSettingsButtons(); linkVersionNumber(); if (!getSetting("experiments.new-settings-styles-columns", false)) { addTogglesToSettings(); } }, { page: "preferences", tab: "mousehunt-improved-settings" }); }); settings_default30 = { id: "_settings", type: "advanced", alwaysLoad: true, load: init64, settings: settings_default29 }; } }); // src/modules/show-auras/settings/index.js var settings_default31; var init_settings32 = __esm({ "src/modules/show-auras/settings/index.js"() { settings_default31 = () => __async(void 0, null, function* () { return [ { id: "show-auras.list", title: "Show auras as a list", default: false, description: "" }, { id: "show-auras.icons", title: "Only show icons", default: false, description: "" } ]; }); } }); // src/modules/show-auras/grid.css var grid_default; var init_grid = __esm({ "src/modules/show-auras/grid.css"() { grid_default = ".mh-improved-aura-view .type{display:none}.mh-improved-aura-view.campPage-trap-trapEffectiveness{display:flex;flex-flow:row nowrap;justify-content:space-evenly;max-width:325px;padding:5px 0;margin:5px 0;overflow:hidden;cursor:default}.mh-improved-aura-view .aura{display:flex;flex-direction:column;align-content:center;align-items:center;min-width:50px}.mh-improved-aura-view .trapImageView-trapAura,.mh-improved-aura-view .trapImageView-trapAura.active{width:35px;height:35px;visibility:visible;opacity:1}.mh-improved-aura-view .time{font-size:10px}.mh-improved-aura-view .times{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:2px 5px 0;font-weight:400;line-height:1.5;text-align:center}.mh-improved-aura-view .expiry{display:none}\n"; } }); // src/modules/show-auras/list.css var list_default; var init_list = __esm({ "src/modules/show-auras/list.css"() { list_default = ".mh-improved-aura-view.campPage-trap-trapEffectiveness{display:flex;flex-flow:column nowrap;gap:10px;justify-content:space-evenly;padding:5px;margin:5px 0;cursor:default}.mh-improved-aura-view .trapImageView-trapAura,.mh-improved-aura-view .trapImageView-trapAura.active{width:35px;height:35px;visibility:visible;opacity:1}.mh-improved-aura-view .time{font-size:10px}.mh-improved-aura-view .aura{display:grid;grid-template-columns:35px 1fr 4fr;place-items:center stretch;min-width:50px;margin:3 0}.mh-improved-aura-view .type{margin-left:1em;font-size:12px;font-weight:900}.mh-improved-aura-view .times{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;font-weight:400;line-height:1.5}.mh-improved-aura-view .expiry{display:none}\n"; } }); // src/modules/show-auras/icons.css var icons_default; var init_icons = __esm({ "src/modules/show-auras/icons.css"() { icons_default = ".mh-improved-aura-view.campPage-trap-trapEffectiveness{display:flex;flex-flow:row nowrap;gap:20px;justify-content:center;padding:10px;margin:5px 0;cursor:default}.mh-improved-aura-view .trapImageView-trapAura,.mh-improved-aura-view .trapImageView-trapAura.active{width:40px;height:40px;visibility:visible;opacity:1}.mh-improved-aura-view .type,.mh-improved-aura-view .times,.mh-improved-aura-view .expiry{display:none}\n"; } }); // src/modules/show-auras/styles.css var styles_default99; var init_styles100 = __esm({ "src/modules/show-auras/styles.css"() { styles_default99 = ".mh-improved-aura-view .aura .mousehuntTooltip{right:-50px;bottom:60px;left:-50px;padding:5px;font-weight:400;line-height:1.5;text-align:center}.mh-improved-aura-view .aura{position:relative}.mh-improved-aura-view .QuestJetStreamAura{display:none}.mh-improved-aura-view .mousehuntTooltipContentTitle{font-size:12px;font-weight:900}\n"; } }); // src/modules/show-auras/index.js var import_humanize_duration3, humanizer3, getExpiryFormatted, getExpiryRemainingFormatted, addExpiryWarning, isAppending, addTrapBlock, getAuras, aurasExpiry, main23, init65, show_auras_default; var init_show_auras = __esm({ "src/modules/show-auras/index.js"() { import_humanize_duration3 = __toESM(require_humanize_duration()); init_utils2(); init_settings32(); init_grid(); init_list(); init_icons(); init_styles100(); humanizer3 = import_humanize_duration3.default.humanizer({ language: "shortEn", languages: { shortEn: { y: () => "y", mo: () => "mo", w: () => "w", d: () => "d", h: () => "h", m: () => "m", s: () => "s", ms: () => "ms" } } }); getExpiryFormatted = (time) => { const date = new Date(time); return date.toLocaleDateString(new Intl.DateTimeFormat("en", { dateStyle: "short", timeStyle: "short" })); }; getExpiryRemainingFormatted = (time) => { const units = ["d", "h"]; const duration = humanizer3(time, { round: true, units, spacer: "", delimiter: " " }); return duration; }; addExpiryWarning = () => { const soon = aurasExpiry.filter((aura) => aura.time < 60 * 60 * 24 * 40); if (soon.length) { soon.forEach((aura) => { aura.element.classList.add("expiring-soon"); }); } }; isAppending = false; addTrapBlock = () => { if (isAppending) { return; } isAppending = true; const trapSummary = document.querySelector(".trapSelectorView__trapStatSummaryContainer"); if (!trapSummary) { return; } let existing = document.querySelector("#mh-improved-aura-view"); if (existing) { return; } const auraTrapBlock = makeElement("div", ["mh-improved-aura-view", "campPage-trap-trapEffectiveness"]); auraTrapBlock.id = "mh-improved-aura-view"; aurasExpiry.forEach((aura) => { const auraKey = `mh-aura-${aura.type.toLowerCase().replaceAll(" ", "-")}`; const existingAura = document.querySelector(`#${auraKey}`); if (existingAura) { return; } const auraClasses = aura.element.classList; const questClass = [...auraClasses].find((c) => c.startsWith("Quest") || c.startsWith("Event") || c.startsWith("Mini")); const auraEl = makeElement("div", ["aura", "mousehuntTooltipParent", questClass]); auraEl.id = auraKey; const expiryText = getExpiryFormatted(aura.expiry); const remaining = getExpiryRemainingFormatted(aura.remaining * 1e3); auraEl.title = `Expires on ${expiryText}, ${remaining} remaining`; const tooltip = makeElement("div", ["mousehuntTooltip", "top", "noEvents"]); const tooltipContent = makeElement("div", "mousehuntTooltipContent"); makeElement("div", "mousehuntTooltipContentTitle", `${aura.type} Aura`, tooltipContent); makeElement("div", "mousehuntTooltipContentTime", `Expires on ${expiryText}, ${remaining} remaining`, tooltipContent); tooltip.append(tooltipContent); makeElement("div", "mousehuntTooltip-arrow", "", tooltip); auraEl.append(tooltip); const auraImage = makeElement("div", "image"); auraImage.classList.add(...auraClasses); auraImage.classList.remove("mousehuntTooltipParent"); auraEl.append(auraImage); makeElement("div", "type", aura.type, auraEl); const times = makeElement("div", "times"); makeElement("div", "expiry", expiryText, times); makeElement("div", "time", remaining, times); auraEl.append(times); auraTrapBlock.append(auraEl); }); existing = document.querySelector("#mh-improved-aura-view"); if (existing) { existing.replaceWith(auraTrapBlock); } else { const tem = document.querySelector(".campPage-trap-trapEffectiveness.campPage-trap-statsContainer"); if (tem) { tem.after(auraTrapBlock); } else { trapSummary.append(auraTrapBlock); } } isAppending = false; }; getAuras = () => { if ("camp" !== getCurrentPage()) { return; } const auras = document.querySelectorAll(".trapSelectorView .trapImageView-trapAuraContainer .trapImageView-trapAura.active"); if (!auras) { return; } aurasExpiry = []; auras.forEach((aura) => { const typeEl = aura.querySelector(".trapImageView-tooltip-trapAura-title"); if (!typeEl) { return; } const type = typeEl.textContent.replaceAll("You have the ", "").replaceAll("Aura!", "").trim(); const expiryEl = aura.querySelector(".trapImageView-tooltip-trapAura-expiry span"); if (!expiryEl || !type) { return; } const origExpiryText = expiryEl.textContent.replaceAll("(Local Time)", "").replaceAll(" ", " ").trim(); let expiryText = origExpiryText; const dateParts = expiryText.split("@"); if (dateParts.length > 1) { expiryText = dateParts[0].trim(); const time = dateParts[1].trim(); const timeParts = time.split(":"); let hours = Number.parseInt(timeParts[0], 10); hours = timeParts[1].includes("pm") ? hours + 12 : hours; const minutes = timeParts[1].replaceAll("pm", "").replaceAll("am", "").trim(); expiryText = `${expiryText} ${hours}:${minutes}`; } const expiry = new Date(Date.parse(expiryText)); const now = /* @__PURE__ */ new Date(); const remaining = Math.floor((expiry - now) / 1e3); aurasExpiry.push({ type, remaining, expiry, expiryText: origExpiryText, element: aura }); }); }; aurasExpiry = []; main23 = () => { setTimeout(() => { getAuras(); addExpiryWarning(); addTrapBlock(); }, 1e3); }; init65 = () => __async(void 0, null, function* () { const stylesToUse = [styles_default99]; if (getSetting("show-auras.icons")) { stylesToUse.push(icons_default); } else if (getSetting("show-auras.list")) { stylesToUse.push(list_default); } else { stylesToUse.push(grid_default); } addStyles(stylesToUse, "show-auras"); onNavigation(main23, { page: "camp" }); }); show_auras_default = { id: "show-auras", name: "Show Auras", description: "Show auras and their expiry time below the trap stats.", type: "beta", default: false, load: init65, settings: settings_default31 }; } }); // src/modules/ssdb-toothlet-counter/index.js var init66, ssdb_toothlet_counter_default; var init_ssdb_toothlet_counter = __esm({ "src/modules/ssdb-toothlet-counter/index.js"() { init_utils2(); init66 = () => __async(void 0, null, function* () { addTrapQuantity({ baseIds: [3023, 2647], baseSlugs: ["upgraded_denture_base", "denture_base"], itemId: "fulmina_charged_tooth_stat_item" }); }); ssdb_toothlet_counter_default = { id: "ssdb-teeth-counter", name: "SSDB Toothlet Counter", type: "feature", default: true, description: "Shows the number of toothlets you have when SSDB is equipped.", load: init66 }; } }); // src/modules/taller-windows/styles.css var styles_default100; var init_styles101 = __esm({ "src/modules/taller-windows/styles.css"() { styles_default100 = ".springHuntHUD-popup-allEggs,.adventureBookPopup-titleContent,.convertibleOpenView-itemContainer,.marketplaceView-browse-content,.MHCheckoutAllRewardsPageView,.treasureMapListingsView-tableView,.treasureMapView-block-content.tall,.treasureMapView-blockWrapper.tall .treasureMapView-block-content,#messengerUINotification .notificationHeader,#supplytransfer .drawer .listContainer,#supplytransfer .drawer .tabContent,#supplytransfer .drawer{height:auto;max-height:75vh}#messengerUINotification .notificationMessageList,.treasureMapView-block-content,.treasureMapView-block-content.halfHeight{height:auto;max-height:55vh}#supplytransfer .drawer{padding-bottom:75px}.adventureBookPopup-titleContent{max-height:unset}.treasureMapDialogView.limitHeight .treasureMapView-block-content,.treasureMapDialogView.limitHeight .treasureMapDialogView-content{max-height:75vh}.treasureMapDialogView.wide.limitHeight{transform:translate(-50%,-100px)}.giftSelectorView-inbox-giftContainer,#overlayPopup .giftSelectorView-scroller{height:auto;min-height:300px;max-height:65vh}#overlayPopup.giftSelectorViewPopup{top:50px!important}.springHuntHUD-popup-regionContainer{display:contents}#overlayPopup .imgArray{min-height:105px;max-height:500px}.floatingIslandsWorkshop-parts-content{height:auto;background:linear-gradient(255deg,#fbf3b0 75%,#fdfcc7);border-bottom-right-radius:10px;border-bottom-left-radius:10px;outline:10px solid #fbf3ae;box-shadow:0 2px 1px 11px #b9570e,0 3px 2px 12px #985316,0 4px 1px 13px #84420f,0 5px 1px 14px #c47728,0 6px 1px 15px #cd7f2c,0 7px 1px 16px #e19439}.floatingIslandsWorkshop-stabilizer{top:325px;right:78px;left:unset;border:none;transform:rotate(90deg)}.floatingIslandsWorkshop-stabilizer label{color:#848383}.floatingIslandsWorkshop-part-name{position:absolute;top:0;right:10px;left:0}.floatingIslandsWorkshop-part-border{margin-top:18px;border-top-left-radius:0;border-top-right-radius:0}.floatingIslandsWorkshop-part-state a.mousehuntActionButton.tiny.lightBlue{font-size:9px;background:#fefad7;box-shadow:none}.floatingIslandsWorkshop-part-state a.mousehuntActionButton.tiny.lightBlue:before{background:#fff9c3;box-shadow:0 0 10px #f3ecb2 inset}.floatingIslandsWorkshop-parts-total{margin-right:15px}.floatingIslandsWorkshop-partsContainer{background-color:#fbf3ae;border-radius:5px}.floatingIslandsWorkshop-part.active .floatingIslandsWorkshop-part-border{background-color:#90cefa}.floatingIslandsWorkshop-part-state .mousehuntActionButton.tiny.selected{box-shadow:none}.floatingIslandsWorkshop-part-actions{background-color:#c48648}.floatingIslandsWorkshop-part.active .floatingIslandsWorkshop-part-border:after{border:none}.select2-results{max-height:50vh}.treasureMapDialogView.limitHeight .treasureMapDialogView-content{max-height:unset}.giftSelectorView-scroller{height:auto}.mh-gift-buttons-clone-wrapper{max-height:calc(75vh - 175px)}.mh-ui-goals-block .treasureMapView-block-content{max-height:75vh}.mh-ui-environments-block .treasureMapView-block-content{max-height:68vh}\n"; } }); // src/modules/taller-windows/index.js var init67, taller_windows_default; var init_taller_windows = __esm({ "src/modules/taller-windows/index.js"() { init_utils2(); init_styles101(); init67 = () => __async(void 0, null, function* () { addStyles(styles_default100, "taller-windows"); }); taller_windows_default = { id: "taller-windows", name: "Taller Windows", type: "feature", default: true, description: "Make popup and dialog windows taller.", load: init67 }; } }); // src/modules/tem-crowns/styles.css var styles_default101; var init_styles102 = __esm({ "src/modules/tem-crowns/styles.css"() { styles_default101 = ".campPage-trap-trapEffectiveness-mouse-name{display:inline-flex;flex-flow:column wrap;place-content:flex-start space-around;align-items:flex-start;width:95px;padding-left:5px}.campPage-trap-trapEffectiveness-mouse:hover,.campPage-trap-trapEffectiveness-mouse:focus,.campPage-trap-trapEffectiveness-mouse:active{border:none;outline:1px solid #ccc}.campPage-trap-trapEffectiveness-content{overflow:visible}.mh-ui-tem-crown.mousebox{position:relative;float:none;margin:0;border:none}img.mh-ui-tem-crown-icon{position:absolute;top:-1px;right:-3px;z-index:2;width:22px;height:22px;vertical-align:middle;background-color:#fdfdfa;border:1px solid #929292;border-radius:50%}span.mh-ui-tem-crown-text{position:absolute;top:-1px;left:1px;z-index:1;box-sizing:border-box;display:inline-block;width:auto;height:24px;padding:4px 10px 2px 15px;font-size:12px;font-weight:900;color:#926944;background-color:#f4f4f4;border:1px solid #8d8282}.mh-ui-tem-crown-wrapper{margin-top:5px;margin-left:10px}.campPage-trap-trapEffectiveness-mouse-chance{display:block;margin-top:5px;color:#628ea9}.campPage-trap-trapEffectiveness-mouse-powerType{right:25px;bottom:-10px;background-size:70%}.campPage-trap-trapEffectiveness span{font-size:14px;vertical-align:bottom}.campPage-trap-trapEffectiveness-difficultyGroup.clear-block{display:grid;grid-template-columns:1fr 1fr;place-items:center stretch;padding-left:10px}.campPage-trap-trapEffectiveness-mouse{width:unset;margin:10px 0;overflow:visible;border:none}.campPage-trap-trapEffectiveness-difficultyGroup-label{grid-column:span 2;font-weight:400;text-align:center;border:none}\n"; } }); // src/modules/tem-crowns/index.js var getCrownType, addCrownsToTEM, init68, tem_crowns_default; var init_tem_crowns = __esm({ "src/modules/tem-crowns/index.js"() { init_utils2(); init_styles102(); getCrownType = (catches) => { if (catches < 10) { return "none"; } if (catches < 100) { return "bronze"; } if (catches < 500) { return "silver"; } if (catches < 1e3) { return "gold"; } if (catches < 2500) { return "platinum"; } return "diamond"; }; addCrownsToTEM = (panel) => __async(void 0, null, function* () { if ("trap_effectiveness" !== panel) { return; } const crowns = yield doRequest("managers/ajax/mice/getstat.php", { action: "get_hunting_stats" }); if (!((crowns == null ? void 0 : crowns.hunting_stats) && (crowns == null ? void 0 : crowns.hunting_stats.length) > 0)) { return; } huntingStats = crowns == null ? void 0 : crowns.hunting_stats; const temMice = document.querySelectorAll(".campPage-trap-trapEffectiveness-mouse"); if (!temMice || !temMice.length) { return; } temMice.forEach((mouse) => __async(void 0, null, function* () { const hasCrown = mouse.getAttribute("data-mh-ui-tem-crown"); if (hasCrown) { return; } const type = mouse.getAttribute("data-mouse"); if (!type) { return; } mouse.setAttribute("data-mh-ui-tem-crown", true); const mouseStats2 = huntingStats.find((m) => m.type === type); if (!mouseStats2) { return; } const name = mouse.querySelector(".campPage-trap-trapEffectiveness-mouse-name"); if (!name) { return; } const catches = mouseStats2.num_catches; const crownType = getCrownType(catches); const crownWrapper = makeElement("div", "mh-ui-tem-crown-wrapper"); const crown = document.createElement("span"); crown.classList.add("mh-ui-tem-crown", "mousebox"); const crownIcon = document.createElement("img"); crownIcon.classList.add("mh-ui-tem-crown-icon"); crownIcon.src = `https://www.mousehuntgame.com/images/ui/crowns/crown_${crownType}.png`; crown.append(crownIcon); makeElement("span", "mh-ui-tem-crown-text", catches, crown); crownWrapper.append(crown); name.append(crownWrapper); })); }); init68 = () => __async(void 0, null, function* () { addStyles(styles_default101, "tem-crowns"); onEvent("camp_page_toggle_blueprint", addCrownsToTEM); }); tem_crowns_default = { id: "tem-crowns", name: "TEM Crowns", type: "feature", default: true, description: "Adds crowns and catches to the the Trap Effectiveness Meter.", load: init68 }; } }); // src/modules/ultimate-checkmark/settings/index.js var settings_default32; var init_settings33 = __esm({ "src/modules/ultimate-checkmark/settings/index.js"() { init_utils2(); settings_default32 = () => __async(void 0, null, function* () { const options = []; const categories2 = yield getData("ultimate-checkmark"); categories2.sort((a, b) => { if (a.name < b.name) { return -1; } return 1; }); categories2.forEach((category) => { options.push({ id: category.id, name: category.name, value: getSetting(`ultimate-checkmark.show-${category.id}`, true) }); }); return [{ id: "ultimate-checkmark.show", title: "Ultimate Checkmark", default: [], description: "Adds more things collect on your Hunter profile.", settings: { type: "multi-toggle", options } }]; }); } }); // src/modules/ultimate-checkmark/styles.css var styles_default102; var init_styles103 = __esm({ "src/modules/ultimate-checkmark/styles.css"() { styles_default102 = ".hunterProfileItemsView-categoryContent[data-category=chest] .hunterProfileItemsView-categoryContent-item.uncollected,.hunterProfileItemsView-categoryContent[data-category=airships] .hunterProfileItemsView-categoryContent-item.uncollected,.hunterProfileItemsView-categoryContent[data-category=currency] .hunterProfileItemsView-categoryContent-item.uncollected,.hunterProfileItemsView-categoryContent[data-category=equipment] .hunterProfileItemsView-categoryContent-item.uncollected,.hunterProfileItemsView-categoryContent[data-category=plankrun] .hunterProfileItemsView-categoryContent-item.uncollected{filter:grayscale(100%)}.hunterProfileItemsView-categoryContent[data-category=chest] .hunterProfileItemsView-categoryContent-item-padding .itemImage{background-size:contain}\n"; } }); // src/modules/ultimate-checkmark/index.js var categories, getItems, getProgress, makeProgressString, makeCategory, makeItem2, makeContent, addCategoryAndItems, isOwnProfile, run3, init69, ultimate_checkmark_default; var init_ultimate_checkmark = __esm({ "src/modules/ultimate-checkmark/index.js"() { init_utils2(); init_settings33(); init_styles103(); getItems = (_0, _1, _2, ..._3) => __async(void 0, [_0, _1, _2, ..._3], function* (required, queryTab, queryTag, allItems = []) { var _a, _b; if (!allItems.length) { const cachedData = sessionGet("ultimate-checkmark") || "{}"; let inventoryData = ((_a = cachedData[queryTab]) == null ? void 0 : _a.data) || null; const lastCachedTime = ((_b = cachedData[queryTab]) == null ? void 0 : _b.time) || 0; if (!inventoryData || Date.now() - lastCachedTime > 5 * 60 * 1e3) { inventoryData = yield doRequest("managers/ajax/pages/page.php", { page_class: "Inventory", "page_arguments[legacyMode]": "", "page_arguments[tab]": queryTab, "page_arguments[sub_tab]": "false" }); cachedData[queryTab] = { data: inventoryData, time: Date.now() }; sessionSet("ultimate-checkmark", cachedData); } const specialTab = inventoryData.page.tabs.find((tab) => queryTab === tab.type); if (!specialTab || !specialTab.subtabs || !specialTab.subtabs.length || !specialTab.subtabs[0].tags) { return []; } const owned = specialTab.subtabs[0].tags.filter((tag) => queryTag === tag.type); if (!owned || !owned.length || !owned[0].items) { return []; } allItems = owned[0].items; } required.forEach((requiredItem) => { const ownedItem = allItems.find((i) => i.type === requiredItem.type); if (!ownedItem) { allItems.push(requiredItem); } }); allItems = allItems.map((item) => { const requiredItem = required.find((i) => i.type === item.type); return { item_id: item.item_id, type: item.type, name: item.name, thumbnail: item.thumbnail_gray || item.thumbnail, quantity: item.quantity || 0, quantity_formatted: item.quantity_formatted || "0", le: !requiredItem }; }); allItems.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); return allItems; }); getProgress = (items2, required) => { let le = 0; let requiredCompleted = 0; items2.forEach((item) => { if (item.quantity <= 0) { return; } if (!item.le) { requiredCompleted++; } else if (item.le) { le++; } }); return { checkmark: required.total >= requiredCompleted, completed: requiredCompleted, required: required.length, le }; }; makeProgressString = (progress) => { const { completed, required, le } = progress; let text = `${completed} of ${required}`; if (le && le > 0) { text += ` (+${le} LE)`; } return text; }; makeCategory = (category, name, progress) => { const exists = document.querySelector(`.hunterProfileItemsView-category[data-category="${category}"]`); if (exists) { return; } const sidebar = document.querySelector(".hunterProfileItemsView-directory"); if (!sidebar) { return; } const catSidebarCategory = makeElement("a", "hunterProfileItemsView-category"); if (progress.completed === progress.required) { catSidebarCategory.classList.add("complete"); } catSidebarCategory.title = name; catSidebarCategory.href = "#"; catSidebarCategory.setAttribute("data-category", category); catSidebarCategory.addEventListener("click", () => { hg.views.HunterProfileItemsView.showCategory(category); return false; }); const catSidebarCategoryMargin = makeElement("div", "hunterProfileItemsView-category-margin"); makeElement("div", "hunterProfileItemsView-category-name", name, catSidebarCategoryMargin); makeElement("div", "hunterProfileItemsView-category-progress", makeProgressString(progress), catSidebarCategoryMargin); makeElement("div", "hunterProfileItemsView-category-status", "", catSidebarCategoryMargin); catSidebarCategory.append(catSidebarCategoryMargin); sidebar.append(catSidebarCategory); }; makeItem2 = (item) => { const { item_id, type, name, thumbnail, thumbnail_gray, quantity, quantity_formatted, le } = item; const itemDiv = makeElement("div", "hunterProfileItemsView-categoryContent-item"); if (quantity > 0) { itemDiv.classList.add("collected"); if (le) { itemDiv.classList.add("limited_edition"); } } else { itemDiv.classList.add("uncollected"); itemDiv.classList.add("hidden"); } itemDiv.setAttribute("data-id", item_id); itemDiv.setAttribute("data-type", type); const itemPadding = makeElement("div", "hunterProfileItemsView-categoryContent-item-padding"); itemPadding.addEventListener("click", () => { hg.views.ItemView.show(type); }); const itemImage = makeElement("div", "itemImage"); itemImage.style.backgroundImage = quantity > 0 && thumbnail_gray ? `url(${thumbnail_gray})` : `url(${thumbnail})`; if (quantity > 0) { makeElement("div", "quantity", quantity_formatted, itemImage); } const itemName = makeElement("div", "hunterProfileItemsView-categoryContent-item-name"); makeElement("span", "", name, itemName); itemPadding.append(itemImage); itemPadding.append(itemName); itemDiv.append(itemPadding); return itemDiv; }; makeContent = (id, name, items2, completed) => { const content = document.querySelector(".hunterProfileItemsView-content-padding"); if (!content) { return; } const exists = document.querySelector(`.hunterProfileItemsView-categoryContent[data-category="${id}"]`); if (exists) { return; } const categoryDiv = makeElement("div", "hunterProfileItemsView-categoryContent"); if (completed) { categoryDiv.classList.add("collected"); } categoryDiv.setAttribute("data-category", id); const nameDiv = makeElement("div", "hunterProfileItemsView-categoryContent-name", name); const itemsDiv = document.createElement("div"); items2.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); items2.forEach((item) => { itemsDiv.append(makeItem2(item)); }); categoryDiv.append(nameDiv); categoryDiv.append(itemsDiv); content.append(categoryDiv); }; addCategoryAndItems = (required, type, subtype, key, name) => __async(void 0, null, function* () { const exists = document.querySelector(`.hunterProfileItemsView-category[data-category="${key}"]`); if (exists) { return; } const items2 = yield getItems(required, type, subtype); const progress = getProgress(items2, required); makeCategory(key, name, progress); makeContent(key, name, items2, progress.completed); return true; }); isOwnProfile = () => { var _a, _b; if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.getQueryParams)) { return false; } const params = hg.utils.PageUtil.getQueryParams(); if (!params || !params.snuid) { return false; } return params.snuid === user.sn_user_id; }; run3 = () => __async(void 0, null, function* () { var _a, _b; if (!categories) { categories = yield getData("ultimate-checkmark"); } if (!("hunterprofile" === getCurrentPage() && "items" === getCurrentTab() && isOwnProfile())) { return; } if (!((_b = (_a = hg == null ? void 0 : hg.utils) == null ? void 0 : _a.PageUtil) == null ? void 0 : _b.getQueryParams)) { return; } for (const category of categories) { if (!getSetting(`ultimate-checkmark.show-${category.id}`, true)) { continue; } yield addCategoryAndItems(category.items, category.type, category.subtype, category.key, category.name); } }); init69 = () => __async(void 0, null, function* () { addStyles(styles_default102, "ultimate-checkmark"); onNavigation(run3, { page: "hunterprofile", tab: "items" }); }); ultimate_checkmark_default = { id: "ultimate-checkmark", type: "feature", alwaysLoad: true, load: init69, settings: settings_default32 }; } }); // src/modules/update-migration/utils.js var isVersionBefore, saveSettingsBackup, restoreSettingsBackup, moveSetting, moveFlagToSetting; var init_utils3 = __esm({ "src/modules/update-migration/utils.js"() { init_utils2(); isVersionBefore = (version, compare) => { if (!version || !compare) { return false; } const versionParts = version.split("."); const compareParts = compare.split("."); for (const i in versionParts) { if ("*" === compareParts[i]) { return false; } if (versionParts[i] < compareParts[i]) { return true; } } return false; }; saveSettingsBackup = () => { localStorage.setItem("mousehunt-improved-settings-backup", localStorage.getItem("mousehunt-improved-settings")); }; restoreSettingsBackup = () => { const backedUpSettings = localStorage.getItem("mousehunt-improved-settings-backup"); if (backedUpSettings) { localStorage.setItem("mousehunt-improved-settings", backedUpSettings); } }; moveSetting = (settingKey) => { if (!settingKey.from || !settingKey.to) { return; } debuglog("update-migration", `Migrating setting from ${settingKey.from} to ${settingKey.to}`); const setting = getSetting(settingKey.from, null); if (null === setting) { return; } if (null !== getSetting(settingKey.to, null)) { return; } saveSetting(settingKey.to, setting); if (settingKey.clear) { saveSetting(settingKey.from, null); } else if (settingKey.setTrue) { saveSetting(settingKey.from, true); } else if (settingKey.setFalse) { saveSetting(settingKey.from, false); } else { deleteSetting(settingKey.from); } }; moveFlagToSetting = (flag) => { if (!flag.from || !flag.to) { return; } debuglog("update-migration", `Migrating flag from ${flag.from} to setting ${flag.to}`); const savedFlags = getFlags(); if (savedFlags.includes(flag.from)) { saveSetting(flag.to, true); savedFlags.splice(savedFlags.indexOf(flag.from), 1); } saveSetting("override-flags", savedFlags.join(",")); }; } }); // src/modules/update-migration/versions/0.35.0.js var settingsToMigrate, flagsToMigrate, update, __default; var init__ = __esm({ "src/modules/update-migration/versions/0.35.0.js"() { init_utils2(); init_utils3(); settingsToMigrate = [ { from: "inventory-lock-and-hide", to: "inventory-lock-and-hide.items", setTrue: true }, { from: "favorite-setups", to: "favorite-setups.setups", setTrue: true }, { from: "better-travel-default-to-simple-travel", to: "better-travel.default-to-simple-travel" }, { from: "better-travel-show-alphabetized-list", to: "better-travel.show-alphabetized-list" }, { from: "better-travel-show-reminders", to: "better-travel.show-reminders" }, { from: "better-travel-travel-window", to: "better-travel.travel-window" }, { from: "better-travel-travel-window-environment-icon", to: "better-travel.travel-window-environment-icon" }, { from: "gift-buttons-send-order-0", to: "better-gifts.send-order-0" }, { from: "gift-buttons-ignore-bad-gifts-0", to: "better-gifts.ignore-bad-gifts-0" }, { from: "better-inventory-one-item-per-row", to: "better-inventory.one-item-per-row" }, { from: "better-inventory-larger-images", to: "better-inventory.larger-images" }, { from: "better-journal-styles", to: "better-journal.styles" }, { from: "better-journal-replacements", to: "better-journal.replacements" }, { from: "better-journal-icons", to: "better-journal.icons" }, { from: "better-journal-icons-minimal", to: "better-journal.icons-minimal" }, { from: "better-journal-list", to: "better-journal.list" }, { from: "better-marketplace-search-all", to: "better-marketplace.search-all" }, { from: "better-marketplace-small-images", to: "better-marketplace.small-images" }, { from: "better-quests-m400-helper", to: "better-quests.m400-helper" }, { from: "send-supplies-pinned-items-0", to: "better-send-supplies.pinned-items-0" }, { from: "send-supplies-pinned-items-1", to: "better-send-supplies.pinned-items-1" }, { from: "send-supplies-pinned-items-2", to: "better-send-supplies.pinned-items-2" }, { from: "send-supplies-pinned-items-3", to: "better-send-supplies.pinned-items-3" }, { from: "send-supplies-pinned-items-4", to: "better-send-supplies.pinned-items-4" }, { from: "better-tournaments-tournament-time-display-inline", to: "better-tournaments.time-inline" }, { from: "journal-changer-change-daily", to: "journal-changer.change-daily'" }, { from: "journal-changer-change-location", to: "journal-changer.change-location'" }, { from: "journal-privacy-show-toggle-icon", to: "journal-privacy.show-toggle-icon'" }, { from: "keyboard-shortcuts", to: "keyboard-shortcuts.shortcuts", setTrue: true }, { from: "lgs-new-style", to: "lgs-reminder.new-style'" }, { from: "quick-send-supplies-items-0", to: "quick-send-supplies.items-0" }, { from: "quick-send-supplies-items-1", to: "quick-send-supplies.items-1" }, { from: "quick-send-supplies-items-2", to: "quick-send-supplies.items-2" }, { from: "quick-send-supplies-items-3", to: "quick-send-supplies.items-3" }, { from: "ultimate-checkmark-categories-airships", to: "ultimate-checkmark.show-airships" }, { from: "ultimate-checkmark-categories-codex", to: "ultimate-checkmark.show-codex" }, { from: "ultimate-checkmark-categories-currency", to: "ultimate-checkmark.show-currency" }, { from: "ultimate-checkmark-categories-equipment", to: "ultimate-checkmark.show-equipment" }, { from: "ultimate-checkmark-categories-plankrun", to: "ultimate-checkmark.show-plankrun" }, { from: "ultimate-checkmark-categories-treasure_chests", to: "ultimate-checkmark.show-treasure_chests" }, { from: "wisdom-in-stat-bar-auto-refresh", to: "wisdom-in-stat-bar.auto-refresh" }, { from: "has-seen-update-banner", to: "updates.banner" }, { from: "acolyte_realm", to: "location-huds-enabled.acolyte_realm" }, { from: "ancient_city", to: "location-huds-enabled.ancient_city" }, { from: "balacks_cove", to: "location-huds-enabled.balacks_cove" }, { from: "bazaar", to: "location-huds-enabled.bazaar" }, { from: "bountiful_beanstalk", to: "location-huds-enabled.bountiful_beanstalk" }, { from: "calm_clearing", to: "location-huds-enabled.calm_clearing" }, { from: "cape_clawed", to: "location-huds-enabled.cape_clawed" }, { from: "catacombs", to: "location-huds-enabled.catacombs" }, { from: "clawshot_city", to: "location-huds-enabled.clawshot_city" }, { from: "derr_dunes", to: "location-huds-enabled.derr_dunes" }, { from: "desert_city", to: "location-huds-enabled.desert_city" }, { from: "desert_warpath", to: "location-huds-enabled.desert_warpath" }, { from: "dojo", to: "location-huds-enabled.dojo" }, { from: "dracano", to: "location-huds-enabled.dracano" }, { from: "elub_shore", to: "location-huds-enabled.elub_shore" }, { from: "floating_islands", to: "location-huds-enabled.floating_islands" }, { from: "forbidden_grove", to: "location-huds-enabled.forbidden_grove" }, { from: "foreword_farm", to: "location-huds-enabled.foreword_farm" }, { from: "fort_rox", to: "location-huds-enabled.fort_rox" }, { from: "fungal_cavern", to: "location-huds-enabled.fungal_cavern" }, { from: "great_gnarled_tree", to: "location-huds-enabled.great_gnarled_tree" }, { from: "iceberg", to: "location-huds-enabled.iceberg" }, { from: "jungle_of_dread", to: "location-huds-enabled.jungle_of_dread" }, { from: "kings_arms", to: "location-huds-enabled.kings_arms" }, { from: "kings_gauntlet", to: "location-huds-enabled.kings_gauntlet" }, { from: "laboratory", to: "location-huds-enabled.laboratory" }, { from: "labyrinth", to: "location-huds-enabled.labyrinth" }, { from: "lagoon", to: "location-huds-enabled.lagoon" }, { from: "meditation_room", to: "location-huds-enabled.meditation_room" }, { from: "mountain", to: "location-huds-enabled.mountain" }, { from: "mousoleum", to: "location-huds-enabled.mousoleum" }, { from: "moussu_picchu", to: "location-huds-enabled.moussu_picchu" }, { from: "nerg_plains", to: "location-huds-enabled.nerg_plains" }, { from: "pinnacle_chamber", to: "location-huds-enabled.pinnacle_chamber" }, { from: "pollution_outbreak", to: "location-huds-enabled.pollution_outbreak" }, { from: "prologue_pond", to: "location-huds-enabled.prologue_pond" }, { from: "rift_bristle_woods", to: "location-huds-enabled.rift_bristle_woods" }, { from: "rift_burroughs", to: "location-huds-enabled.rift_burroughs" }, { from: "rift_furoma", to: "location-huds-enabled.rift_furoma" }, { from: "rift_gnawnia", to: "location-huds-enabled.rift_gnawnia" }, { from: "rift_valour", to: "location-huds-enabled.rift_valour" }, { from: "rift_whisker_woods", to: "location-huds-enabled.rift_whisker_woods" }, { from: "seasonal_garden", to: "location-huds-enabled.seasonal_garden" }, { from: "slushy_shoreline", to: "location-huds-enabled.slushy_shoreline" }, { from: "ss_huntington_ii", to: "location-huds-enabled.ss_huntington_ii" }, { from: "sunken_city", to: "location-huds-enabled.sunken_city" }, { from: "table_of_contents", to: "location-huds-enabled.table_of_contents" }, { from: "tournament_hall", to: "location-huds-enabled.tournament_hall" }, { from: "town_of_digby", to: "location-huds-enabled.town_of_digby" }, { from: "town_of_gnawnia", to: "location-huds-enabled.town_of_gnawnia" }, { from: "train_station", to: "location-huds-enabled.train_station" }, { from: "windmill", to: "location-huds-enabled.windmill" }, { from: "zugzwang_tower", to: "location-huds-enabled.zugzwang_tower" }, { from: "region-living-garden", to: "location-huds-enabled.region-living-garden" }, { from: "region-queso", to: "location-huds-enabled.region-queso" }, { from: "event-locations", to: "location-huds-enabled.event-locations" }, { from: "visibility-toggles", to: "location-huds.folklore-forest-visibility-toggles" } ]; flagsToMigrate = [ { from: "raffle", to: "experiments.raffle" }, { from: "lol-gottem", to: "experiments.lol-gottem" }, { from: "favorite-setups-toggle", to: "experiments.favorite-setups-toggle" }, { from: "journal-icons-all", to: "better-journal.icons" }, { from: "journal-icons", to: "better-journal.icons-minimal" }, { from: "journal-list", to: "better-journal.list" }, { from: "lgs-reminder-exact", to: "lgs-reminder.show-seconds" } ]; update = () => __async(void 0, null, function* () { debuglog("update-migration", "Migrating settings"); for (const setting of settingsToMigrate) { moveSetting(setting); } debuglog("update-migration", "Migrating flags"); for (const flag of flagsToMigrate) { moveFlagToSetting(flag); } debuglog("update-migration", "Deleting old databases"); yield databaseDelete("mh-improved"); localStorage.removeItem("mh-improved-update-notifications"); }); __default = { id: "0.35.0", update }; } }); // src/modules/update-migration/versions/0.36.0.js var deleteLocalStorageArCache, copyHyperspeedTravelFavorites, removeOldEventFavoriteLocations, update2, __default2; var init__2 = __esm({ "src/modules/update-migration/versions/0.36.0.js"() { init_utils2(); deleteLocalStorageArCache = () => { const localStorageKeys = Object.keys(localStorage); for (const key of localStorageKeys) { if (key.startsWith("mh-improved-cached-ar-v")) { localStorage.removeItem(key); } } }; copyHyperspeedTravelFavorites = () => { const lvSettings = localStorage.getItem("lv-faves-settings"); if (!lvSettings) { return; } const lvFavesSettings = JSON.parse(); if (!lvFavesSettings) { return; } const lvFaves = Object.keys(lvFavesSettings == null ? void 0 : lvFavesSettings.locationList) || []; if (!lvFaves || !lvFaves.length) { return; } const favorites = getSetting("better-travel.favorites", []); lvFaves.forEach((location) => { if (!favorites.includes(location)) { favorites.push(location); saveSetting("better-travel.favorites", favorites); } }); }; removeOldEventFavoriteLocations = () => __async(void 0, null, function* () { const eventEnvironments = yield getData("environments-events"); if (!eventEnvironments) { return; } const travelFavorites = getSetting("better-travel.favorites", []); travelFavorites.forEach((location) => { if (eventEnvironments.includes(location)) { travelFavorites.splice(travelFavorites.indexOf(location), 1); saveSetting("better-travel.favorites", travelFavorites); } }); }); update2 = () => { debuglog("update-migration", "Cleaning up old AR caches"); deleteLocalStorageArCache(); localStorage.removeItem("journal-changer-last-change"); localStorage.removeItem("mh-improved-cache-quests"); localStorage.removeItem("wisdom-stat"); deleteSetting("better-travel.has-migrated-favorites"); copyHyperspeedTravelFavorites(); removeOldEventFavoriteLocations(); setGlobal("mh-improved-update-needs-refresh", true); }; __default2 = { id: "0.36.0", update: update2 }; } }); // src/modules/update-migration/versions/0.36.1.js var maybeUpgradeHudSetting, update3, __default3; var init__3 = __esm({ "src/modules/update-migration/versions/0.36.1.js"() { init_utils2(); maybeUpgradeHudSetting = () => { const hudBackgroundSetting = getSetting("custom-hud-0"); if ("suede" === hudBackgroundSetting) { saveSetting("custom-hud-0", "hud-suede"); } else if ("groovy-green" === hudBackgroundSetting) { saveSetting("custom-hud-0", "hud-groovy-green"); } }; update3 = () => { maybeUpgradeHudSetting(); }; __default3 = { id: "0.36.1", update: update3 }; } }); // src/modules/update-migration/index.js var imported7, versionUpdates, doVersionUpdates, update4, previousVersion, init70, update_migration_default; var init_update_migration = __esm({ "src/modules/update-migration/index.js"() { init_utils2(); init_utils3(); init__(); init__2(); init__3(); imported7 = [__default, __default2, __default3]; versionUpdates = imported7; doVersionUpdates = () => __async(void 0, null, function* () { if ("0.0.0" === previousVersion) { return; } for (const version in versionUpdates) { const currentVersion = versionUpdates[version]; if (isVersionBefore(previousVersion, currentVersion.id)) { try { yield currentVersion.update(); } catch (error) { debuglog("update-migration", `Error updating to ${currentVersion.id}:`, error); throw error; } } } }); update4 = () => __async(void 0, null, function* () { debuglog("update-migration", `Updating from ${previousVersion} to ${mhImprovedVersion}`); showLoadingPopup(`Updating MouseHunt Improved to v${mhImprovedVersion}...`); addBodyClass("mh-improved-updating"); setGlobal("mh-improved-updating", true); saveSettingsBackup(); try { yield doVersionUpdates(); saveSetting("mh-improved-version", mhImprovedVersion); yield updateCaches(); if (getGlobal("mh-improved-update-needs-refresh")) { showLoadingPopup("MouseHunt Improved has been updated. Please refresh the page."); } else { activejsDialog == null ? void 0 : activejsDialog.hide(); } doEvent2("mh-improved-updated", mhImprovedVersion); } catch (error) { restoreSettingsBackup(); showLoadingPopup("Error updating MouseHunt Improved. Please try refreshing the page."); throw error; } }); previousVersion = null; init70 = () => __async(void 0, null, function* () { previousVersion = getSetting("mh-improved-version", "0.0.0"); if ("0.0.0" === previousVersion) { return; } if (previousVersion !== mhImprovedVersion) { debuglog("update-migration", `Previous version: ${previousVersion}`); yield update4(); doEvent2("mh-improved-updated", mhImprovedVersion); } }); update_migration_default = { id: "update-migration", type: "required", alwaysLoad: true, order: 300, load: init70 }; } }); // src/modules/update-notifications/styles.css var styles_default103; var init_styles104 = __esm({ "src/modules/update-notifications/styles.css"() { styles_default103 = '.mh-improved-has-update .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu:before{position:absolute;top:-12px;right:4px;z-index:2;width:36px;height:25px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/events/halloween_boiling_cauldron/book/new.png);filter:drop-shadow(-1px 0 5px #fff) hue-rotate(200deg);background-repeat:no-repeat;background-size:36px 25px;animation:dirigibleFloat ease-in-out .4s 3;animation-delay:2s}@media (prefers-reduced-motion: reduce){.mh-improved-has-update .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu:before{animation:none}}#overlayPopup.mh-improved-update-summary .jsDialog.top,#overlayPopup.mh-improved-update-summary .jsDialog.bottom,#overlayPopup.mh-improved-update-summary .jsDialog.background,#overlayPopup.mh-improved-update-summary .jsDialogContainer .prefix,#overlayPopup.mh-improved-update-summary .jsDialogContainer .content,#overlayPopup.mh-improved-update-summary .jsDialogContainer .suffix{padding:0;margin:0;background:none;border:none}#overlayPopup.mh-improved-update-summary .jsDialog.top,#overlayPopup.mh-improved-update-summary .jsDialog.bottom{pointer-events:none}#overlayPopup.mh-improved-update-summary .jsDialogContainer{padding:0 20px;background-image:url(https://www.mousehuntgame.com/images/ui/newsposts/np_border.png);background-repeat:repeat-y;background-size:100%}#overlayPopup.mh-improved-update-summary .jsDialogContainer:before{position:absolute;top:-80px;right:0;left:0;z-index:-1;height:100px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/newsposts/np_header.png);background-repeat:no-repeat;background-size:100%}#overlayPopup.mh-improved-update-summary .jsDialogContainer:after{position:absolute;top:100%;right:0;left:0;height:126px;content:"";background-image:url(https://www.mousehuntgame.com/images/ui/newsposts/np_footer.png);background-repeat:no-repeat;background-size:100%}.mh-improved-update-summary-wrapper{margin:0 25px;line-height:1.5}.mh-improved-update-summary-body{display:grid;grid-template-columns:2fr 1fr;gap:30px}.mh-improved-update-summary h1{padding-bottom:5px;margin-top:-40px;font-size:1.75em;font-weight:700;color:#693312;text-align:center;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:#c1915a;text-underline-offset:10px}.mh-improved-update-summary h2{padding-bottom:3px;margin-bottom:3px;font-size:1.25em;font-weight:900;border-bottom:1px solid #c1915a}.mh-improved-update-summary-links{display:flex;flex-direction:column}.mh-improved-update-summary ul{margin:0 0 5px 15px;list-style:disc}.mh-improved-update-summary-buttons{display:flex;flex-direction:column;flex-grow:1;gap:10px;justify-content:flex-end;text-align:center}.mh-improved-update-summary-links ul{font-size:1.125em;line-height:2}.mh-improved-update-summary-changes{display:grid;grid-template-columns:1fr;gap:0 10px;justify-items:stretch;max-height:375px;padding:10px;overflow:auto;background:linear-gradient(#e9d5a2 30%,#0000) center top,linear-gradient(#0000,#e9d5a2 70%) center bottom,radial-gradient(farthest-side at 50% 0,#0006,#0000) center top,radial-gradient(farthest-side at 50% 100%,#0006,#0000) center bottom;background-repeat:no-repeat;background-attachment:local,local,scroll,scroll;background-size:100% 50px,100% 50px,100% 15px,100% 15px;border:1px solid #b07842}.mh-improved-update-summary-misc{margin-bottom:5px}.mh-improved-update-summary-changes.no-changes{border:none;box-shadow:none}\n'; } }); // src/modules/update-notifications/index.js var github, getExtensionLink, makeList, showUpdateSummary, init71, update_notifications_default; var init_update_notifications = __esm({ "src/modules/update-notifications/index.js"() { init_utils2(); init_styles104(); github = "https://github.com/MHCommunity/mousehunt-improved"; getExtensionLink = () => { if ("chrome" === mhImprovedPlatform) { return "https://chromewebstore.google.com/detail/mousehunt-improved/fgjkidgknmkhnbeobehlfabjbignhkhm"; } if ("firefox" === mhImprovedPlatform) { return "https://addons.mozilla.org/en-US/firefox/addon/mousehunt-improved/"; } if ("userscript" === mhImprovedPlatform) { return "https://greasyfork.org/en/scripts/465139-mousehunt-improved"; } return github; }; makeList = (title, items2) => { if (!items2 || !items2.length) { return ""; } let markup = `<div class="update-list-section"><h2>${title}</h2><ul>`; for (const item of items2) { markup += `<li>${item}</li>`; } markup += "</ul></div>"; return markup; }; showUpdateSummary = () => __async(void 0, null, function* () { const updateSummaries = yield fetch("https://api.mouse.rip/update-summary"); const updates = yield updateSummaries.json(); if (!updates[mhImprovedVersion]) { updates[mhImprovedVersion] = { summary: "", details: [] }; } const update5 = updates[mhImprovedVersion]; update5.summary = update5.summary || ""; update5.details = update5.details || []; let lists = ""; for (const list of update5.details) { lists += makeList(list.title, list.items); } let noChanges = ""; if (!update5.summary.length && !update5.details.length) { noChanges = " no-changes"; lists = '<p><a href="https://github.com/MHCommunity/mousehunt-improved/releases" target="_blank" rel="noopener noreferrer">Check out the latest release notes</a> for more information.</p>'; } const links = [ '<a href="https://www.mousehuntgame.com/preferences.php?tab=mousehunt-improved-settings">Settings</a>', `<a href="${getExtensionLink()}" target="_blank" rel="noopener noreferrer">Leave a review</a>`, // '<a href="#">Support on Patreon</a>', `<a href="${github}/issues">Report an issue</a>` ]; const markup = `<div class="mh-improved-update-summary-wrapper"> <h1 class="mh-improved-update-summary-title">MouseHunt Improved v${mhImprovedVersion}</h1> <div class="mh-improved-update-summary-content"> <p>${update5.summary || ""}</p> </div> <div class="mh-improved-update-summary-body"> <div class="mh-improved-update-summary-changes${noChanges}"> ${lists} </div> <div class="mh-improved-update-summary-links"> ${makeList("Links", links)} <div class="mh-improved-update-summary-misc"> Want to contribute to MouseHunt Improved? Check out our <a href="${github}" target="_blank" rel="noopener noreferrer">GitHub</a>. </div> <div class="mh-improved-update-summary-buttons"> <a href="#" id="mh-improved-dismiss-popup" class="button">Continue</a> </div> </div> </div> </div>`; const popup = createPopup({ hasCloseButton: false, template: "ajax", content: markup, show: false, className: "mh-improved-update-summary" }); popup.addToken("{*prefix*}", ""); popup.addToken("{*suffix*}", ""); popup.show(); const dismiss = document.querySelector("#mh-improved-dismiss-popup"); dismiss.addEventListener("click", (e) => { e.preventDefault(); popup.hide(); }); }); init71 = () => __async(void 0, null, function* () { addStyles(styles_default103, "update-notifications"); onEvent("mh-improved-updated", showUpdateSummary); onEvent("mh-improved-show-update-summary", showUpdateSummary); }); update_notifications_default = { id: "update-notifications", type: "required", alwaysLoad: true, order: 200, load: init71 }; } }); // src/modules/user-highlighting/profile.css var profile_default2; var init_profile2 = __esm({ "src/modules/user-highlighting/profile.css"() { profile_default2 = '.mh-improved-fancy-profile .hunterInfoView-favoritesBlock-content-mouseContainer,.mh-improved-fancy-profile .hunterInfoView-favoritesBlock-content-container-arrow.right,.mh-improved-fancy-profile .hunterInfoView-favoritesBlock-content-tabDot-container,.mh-improved-fancy-profile .hunterInfoView-favoritesBlock-content-mouseLabel,.mh-improved-fancy-profile .hunterInfoView-wrapper .friendsPage-friendRow-titleBar-icon,.mh-improved-fancy-profile .journalContainer .top,.mh-improved-fancy-profile .journalContainer .bottom,.mh-improved-fancy-profile .trapImageView-tooltip-trapAura-expiry span{display:none}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseContainer:first-child{display:inline-block}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-container{padding-top:10px;padding-bottom:10px}.mh-improved-fancy-profile .hunterInfoView-favoritesBlock-content-chunk:after{position:absolute;top:0;right:0;width:110px;font-size:13px;line-height:2;color:#772b0a;content:"glazy mouse best mouse"}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock .friendsPage-friendRow{background:linear-gradient(#b389a1 5%,#f0dfee 50%)!important;border-radius:6px}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-hunterId{color:#252525!important;background-color:#dcf7ff!important}.mh-improved-fancy-profile .hunterInfoView-wrapper div.messageBoardView-message-container,.mh-improved-fancy-profile .hunterInfoView-wrapper .friendsProfileView-container,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock .hunterInfoView-favoritesBlock-body,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabContentContainer,.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabContentContainer-padding,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-header-title-container,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-footer,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-footer-stats{background:#f0dfee!important;background-color:#f0dfee!important;border-color:#de72ba;box-shadow:none}.mh-improved-fancy-profile .hunterInfoView-wrapper div.messageBoardView-message-container{border:1px solid #de72ba}.mh-improved-fancy-profile .hunterInfoView-wrapper .messageBoardView-title,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-header,.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader,.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader.active{background:linear-gradient(#dcf7ff 45%,#8af1ee 55%)}.mh-improved-fancy-profile .hunterInfoView-corkBoardBlock .messageBoardView-message,.mh-improved-fancy-profile .hunterInfoView-corkBoardBlock .messageBoardView-message.new{background:#f8eff6;border-color:#de72ba!important}.mh-dark-mode .mh-improved-fancy-profile .hunterInfoView-corkBoardBlock .messageBoardView-message{background:#513d4c}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .mousehuntPage-content textarea{background-color:#f8eff7;border-color:#de72ba}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-stats,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-teamInfo-container:before,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-teamInfo-container,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-stats-horn-container,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-stats-huntingSince,.mh-improved-fancy-profile .hunterInfoView-wrapper .campPage-trap-trapStat,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot-quantity{background:#dcf7ff!important;border-color:#80b5b4!important}.mh-improved-fancy-profile .journalContainer .content{padding:0;margin:0;background:transparent!important}.mh-improved-fancy-profile .jlarge{overflow:hidden}.mh-improved-fancy-profile .journal .content .entry,.mh-improved-fancy-profile .journal .content .entry:last-child{background-color:#f0dfee;border-color:#de72ba}.mh-improved-fancy-profile .journal .content .entry.short.travel{background-color:#f2f2f2}.mh-improved-fancy-profile .friendsPage-friendRow-image-border{background-image:none}.mh-improved-fancy-profile .friendsPage-friendRow-image{inset:4px;border:1px solid #513645;border-radius:10px}.mh-improved-fancy-profile .friendsPage-friendRow .friendsPage-friendRow-titleBar{margin-bottom:10px;margin-left:-4px;background:linear-gradient(#dcf7ff 45%,#89f0ee 55%);border-color:#8af1ef}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-header-thumbnail-image{border-color:#de72ba;box-shadow:none}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-header-title-container{top:1px;height:59px;border-top:none;border-bottom:1px solid #de72ba;border-radius:7px 50px 0 0}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-header-container{padding-top:1px;border:1px solid #de72ba}.mh-improved-fancy-profile .hunterInfoView-wrapper .friendsPage-friendRow-titleBar-name{margin-left:-25px}.mh-improved-fancy-profile .hunterInfoView-wrapper .friendsPage-friendRow-titleBar-titleDetail{top:0;right:10px;left:unset;font-weight:900}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-teamInfo-container{height:37px}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock{z-index:0;height:220px}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-stats{padding:7px 0}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile.PageHunterProfile .friendsPage-friendRow-statsContainer,.mh-improved-fancy-profile .friendsPage-friendRow-statsContainer{color:#513645;background-color:#d2c0ec;border-top:1px solid #be9bbc;border-radius:0 0 6px 6px;box-shadow:none}.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-goldenShield{filter:hue-rotate(148deg)}.mh-improved-fancy-profile .loyaltyBadgeView-years-text:before{content:"4"}.mh-improved-fancy-profile .loyaltyBadgeView .loyaltyBadgeView-years-text{top:6px;font-size:20px;color:#4b5554;text-shadow:0 0 0 #969696}.mh-improved-fancy-profile .loyaltyBadgeView{background-image:url(https://www.mousehuntgame.com/images/ui/profile/loyalty-badge-3-year.png);filter:hue-rotate(237deg)}.mh-improved-fancy-profile .userInteractionButtonsView-button{filter:hue-rotate(170deg) opacity(.6)}.mh-improved-fancy-profile .hunterInfoView-idCardBlock-stats-horn-image{filter:hue-rotate(250deg)}.mh-improved-fancy-profile .userInteractionButtonsView-relationship .userInteractionButtonsView-button,.mh-improved-fancy-profile .userInteractionButtonsView-relationship .userInteractionButtonsView-button:hover,.mh-improved-fancy-profile .userInteractionButtonsView-relationship .userInteractionButtonsView-button:focus,.mh-improved-fancy-profile .userInteractionButtonsView-relationship .userInteractionButtonsView-button:active{filter:none}.mh-improved-fancy-profile .userInteractionButtonsView-button:hover{filter:hue-rotate(220deg) opacity(1)}.mh-improved-fancy-profile .friendsProfileView-randomFriend{background-color:#c3f0ff}.mh-improved-fancy-profile .friendsProfileView-randomFriend:hover{background-color:#93c9db}.mh-improved-fancy-profile .campPage-trap-trapStat.luck .value span:after{content:"0"}.mh-improved-fancy-profile .trapImageView-tooltip-trapAura-expiry:after{content:"never! \\1f389\\fe0f infinite aura!"}.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:hover,.hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader:focus{background:linear-gradient(#dcf7ff 45%,#8adff1 55%)}.mh-improved-fancy-profile #friend-data-wrapper .userInteractionButtonsView-button,.mh-improved-fancy-profile #friend-data-wrapper .userInteractionButtonsView-button:hover{filter:none!important}.mh-improved-fancy-profile #friend-data-wrapper .friendsPage-friendRow-statsContainer{background-color:transparent;box-shadow:0 10px 30px #cdb495 inset}.mh-dark-mode .mh-improved-fancy-profile .hunterInfoView-wrapper .friendsPage-friendRow-titleBar-titleDetail{color:#8e5d8b}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .mousehuntTabHeader span,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-header,.mh-improved-fancy-profile .hunterInfoView-wrapper .messageBoardView-title,.mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-header,.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader,.mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader.active{color:#615d5d!important;background:linear-gradient(#dcf7ff 45%,#8adff1 55%);border-color:#de72ba;border-radius:7px 7px 0 0;box-shadow:none}.pageFrameView #mousehuntContainer.PageHunterProfile.mh-improved-fancy-profile .campPage-trap-itemStats,.pageFrameView #mousehuntContainer.PageHunterProfile.mh-improved-fancy-profile .campPage-trap-itemStats .campPage-trap-trapStat .value,.pageFrameView #mousehuntContainer.PageHunterProfile.mh-improved-fancy-profile .campPage-trap-itemStats .campPage-trap-trapStat .value b,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .journalEntries,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .pagerView-container,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-items,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabHeader:before,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .mousehuntTabHeader:before,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .mousehuntTabHeader.active span,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabHeader:hover span{color:#615d5d;background-color:transparent}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-header-title,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-treasureMaps-right-cluesFound-label,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-treasureMaps-right-cluesFound,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .friendsProfileView-container,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabContentContainer,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .friendsPage-friendRow{color:#615d5d}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-trap-slot.middle{top:-2px;overflow:hidden;border-color:#99448e;border-radius:9px;outline:1px solid #f0dfee;box-shadow:1px -1px 0 3px #f0dfee,-1px -1px 0 3px #f0dfee}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-items{padding:0;margin:0 10px;background-color:#f0dfee;border-radius:10px;box-shadow:0 -6px 0 1px #f0dfee,-23px 10px 0 -19px #f0dfee,27px 10px 0 -19px #f0dfee,0 -6px 0 2px #de72ba}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-trapBlock-setup-container{border-color:#de72ba}.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock,.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-favoritesBlock{border-color:#de72ba;box-shadow:none}\n'; } }); // src/modules/user-highlighting/styles.css var styles_default104; var init_styles105 = __esm({ "src/modules/user-highlighting/styles.css"() { styles_default104 = `.mh-improved-developer .hunterInfoView-verifiedUserImage,.mh-improved-contributor .hunterInfoView-verifiedUserImage,.mh-improved-supporter .hunterInfoView-verifiedUserImage{width:14.5px;height:17.5px;background:url(https://i.mouse.rip/mh-improved/tada-badge.png) no-repeat;background-size:contain}.mh-improved-supporter .hunterInfoView-verifiedUserImage{background:url(https://i.mouse.rip/mh-improved/star-badge.png) no-repeat;background-position-y:-1px;background-size:contain}.mh-improved-developer .friendsPage-friendRow-image:hover:after,.mh-improved-developer .friendsPage-friendRow-image:focus:after,.mh-improved-developer .friendsPage-friendRow-image:active:after,.mh-improved-contributor .friendsPage-friendRow-image:hover:after,.mh-improved-contributor .friendsPage-friendRow-image:focus:after,.mh-improved-contributor .friendsPage-friendRow-image:active:after,.mh-improved-supporter .friendsPage-friendRow-image:focus:after,.mh-improved-supporter .friendsPage-friendRow-image:hover:after,.mh-improved-supporter .friendsPage-friendRow-image:active:after{position:absolute;top:5px;left:5px;width:20px;height:20px;font-size:22px;color:#fff;content:"";background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white"><pathd="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"/></svg>');filter:drop-shadow(0 0 2px #000);background-repeat:no-repeat;background-size:contain} `; } }); // src/modules/user-highlighting/index.js var getUserHighlightingShield, highlightUsers, init72, user_highlighting_default; var init_user_highlighting = __esm({ "src/modules/user-highlighting/index.js"() { init_utils2(); init_profile2(); init_styles105(); getUserHighlightingShield = (type) => { let text = ""; switch (type) { case "developer": text = "MH Improved Developer"; break; case "contributor": text = "MH Improved Contributor"; break; case "supporter": text = "MH Improved Supporter"; break; } const wrapper = makeElement("div", ["blackTooltip", "mh-improved-user-shield"]); makeElement("div", "hunterInfoView-verifiedUserImage", null, wrapper); makeElement("span", "blackTooltiptext hunterInfoView-verifiedUser", text, wrapper); return wrapper; }; highlightUsers = () => __async(void 0, null, function* () { const existing = document.querySelectorAll(".mh-improved-user-shield"); if (existing) { existing.forEach((el) => { el.remove(); }); } const id = document.querySelector(".hunterInfoView-hunterId-idText span"); if (!id) { return; } const profilePage = document.querySelector("#mousehuntContainer.PageHunterProfile"); if (!profilePage) { return; } const idHeader = document.querySelector(".hunterInfoView-idCardBlock-secondaryHeader"); if (!idHeader) { return; } const userId = Number.parseInt(id.textContent, 10); let data = sessionGet(`mh-improved-user-highlighting-${userId}`); if (!data) { const userHighlighting = yield fetch(`https://api.mouse.rip/highlight-user/${userId}`); data = yield userHighlighting.json(); debug(`Retrieved user highlighting data for ${userId}`, data); sessionSet(`mh-improved-user-highlighting-${userId}`, data); } if (!data || !(data == null ? void 0 : data.highlighted)) { return; } const type = data.type; profilePage.classList.add("mh-improved-highlight-user", `mh-improved-${type}`); idHeader.append(getUserHighlightingShield(type)); if (8209591 === userId) { profilePage.classList.add("mh-improved-highlight-user", "mh-improved-fancy-profile"); } }); init72 = () => __async(void 0, null, function* () { addStyles([styles_default104, profile_default2], "highlight-users"); onNavigation(highlightUsers, { page: "hunterprofile" }); }); user_highlighting_default = { id: "highlight-users", type: "required", alwaysLoad: true, load: init72 }; } }); // src/modules/wisdom-in-stat-bar/settings/index.js var settings_default33; var init_settings34 = __esm({ "src/modules/wisdom-in-stat-bar/settings/index.js"() { settings_default33 = () => __async(void 0, null, function* () { return [{ id: "wisdom-in-stat-bar-auto-refresh", title: "Update automatically", default: true, description: "" }]; }); } }); // src/modules/wisdom-in-stat-bar/index.js var getWisdomSetting, saveWisdomSetting, getWisdom, getWisdomFormatted, addWisdomToStatBar, updateWisdom, addRefreshListener, useCachedWisdom, init73, wisdom_in_stat_bar_default; var init_wisdom_in_stat_bar = __esm({ "src/modules/wisdom-in-stat-bar/index.js"() { init_utils2(); init_settings34(); getWisdomSetting = (key) => __async(void 0, null, function* () { return yield cacheGet(`wisdom-stat-${key}`); }); saveWisdomSetting = (key, value) => { cacheSet(`wisdom-stat-${key}`, value); }; getWisdom = () => __async(void 0, null, function* () { var _a; let wisdom = 0; if (useCachedWisdom) { const cachedWisdom = yield getWisdomSetting("value"); if (cachedWisdom) { return cachedWisdom; } } wisdom = yield getUserItems(["wisdom_stat_item"], true); wisdom = ((_a = wisdom[0]) == null ? void 0 : _a.quantity) || 0; saveWisdomSetting("value", wisdom); saveWisdomSetting("last-updated", Date.now()); return wisdom; }); getWisdomFormatted = () => __async(void 0, null, function* () { const wisdom = yield getWisdom(); return wisdom.toLocaleString(); }); addWisdomToStatBar = (wisdom) => { const existingWisdom = document.querySelector(".mousehuntHud-userStat-row.wisdom .value.hud_wisdom"); if (existingWisdom) { existingWisdom.textContent = wisdom; if ("undefined" !== typeof blinkText) { blinkText(existingWisdom, "#59f659", "#fff", 0.7); } return; } const pointsRow = document.querySelector(".mousehuntHud-userStat-row.points"); if (!pointsRow) { return; } const wisdomRow = makeElement("div", ["mousehuntHud-userStat-row", "wisdom"]); makeElement("span", "label", "Wisdom", wisdomRow); makeElement("span", "value hud_wisdom", wisdom, wisdomRow); wisdomRow.setAttribute("title", "Click to refresh wisdom"); pointsRow.after(wisdomRow); }; updateWisdom = () => __async(void 0, null, function* () { const wisdom = yield getWisdomFormatted(); addWisdomToStatBar(wisdom); }); addRefreshListener = () => { const wisdomRow = document.querySelector(".mousehuntHud-userStat-row.wisdom"); if (!wisdomRow) { return; } wisdomRow.addEventListener("click", () => { const cachedWisdomSetting = useCachedWisdom; useCachedWisdom = false; updateWisdom(); useCachedWisdom = cachedWisdomSetting; }); }; useCachedWisdom = false; init73 = () => __async(void 0, null, function* () { if (getSetting("wisdom-in-stat-bar.auto-refresh", true)) { useCachedWisdom = false; onTurn(updateWisdom); } yield updateWisdom(); addRefreshListener(); onDeactivation(() => { const wisdomRow = document.querySelector(".mousehuntHud-userStat-row.wisdom"); if (wisdomRow) { wisdomRow.remove(); } }); }); wisdom_in_stat_bar_default = { id: "wisdom-in-stat-bar", name: "Wisdom in Stat Bar", type: "feature", default: false, description: "Show wisdom in the stat bar.", load: init73, settings: settings_default33 }; } }); // src/index.js var require_src = __commonJS({ "src/index.js"(exports) { init_esm3(); init_utils2(); init_adblock(); init_better_inventory(); init_better_kings_reward(); init_better_journal(); init_better_maps(); init_better_item_view(); init_better_gifts(); init_better_mice(); init_better_marketplace(); init_better_quests(); init_better_send_supplies(); init_better_shops(); init_better_travel(); init_catch_rate_estimate(); init_copy_id(); init_better_tournaments(); init_custom_background(); init_better_ui(); init_custom_css(); init_custom_horn(); init_custom_hud(); init_custom_shield(); init_dark_mode(); init_data_exporters(); init_debug2(); init_delayed_tooltips(); init_error_reporting(); init_experiments(); init_favorite_setups2(); init_feature_flags(); init_fixes(); init_flrt_helper(); init_global_styles(); init_hide_codices(); init_hide_daily_draw(); init_hide_daily_reward_popup(); init_hide_footer(); init_hide_news_ticker(); init_hide_share(); init_hide_sidebar(); init_hover_profiles(); init_image_upscaling(); init_inline_wiki(); init_inventory_lock_and_hide(); init_inventory_only_open_multiple(); init_inventory_open_all_but_one(); init_journal_changer(); init_journal_privacy(); init_keyboard_shortcuts(); init_larger_codices(); init_larger_skin_images(); init_lgs_reminder2(); init_links2(); init_location_catch_stats(); init_location_dashboard(); init_metric(); init_paste_hunter_id(); init_prestige_base_stats(); init_printing_press_paper_counter(); init_quick_filters_and_sort(); init_location_huds(); init_quick_send_supplies(); init_required(); init_scoreboard_search_on_profiles(); init_settings31(); init_show_auras(); init_ssdb_toothlet_counter(); init_taller_windows(); init_tem_crowns(); init_ultimate_checkmark(); init_update_migration(); init_update_notifications(); init_user_highlighting(); init_wisdom_in_stat_bar(); var imported8 = [adblock_default, better_inventory_default, better_kings_reward_default, better_journal_default, better_maps_default, better_item_view_default, better_gifts_default, better_mice_default, better_marketplace_default, better_quests_default, better_send_supplies_default, better_shops_default, better_travel_default, catch_rate_estimate_default, copy_id_default, better_tournaments_default, custom_background_default, better_ui_default, custom_css_default, custom_horn_default, custom_hud_default, custom_shield_default, dark_mode_default, data_exporters_default, debug_default, delayed_tooltips_default, error_reporting_default, experiments_default, favorite_setups_default2, feature_flags_default, fixes_default, flrt_helper_default, global_styles_default, hide_codices_default, hide_daily_draw_default, hide_daily_reward_popup_default, hide_footer_default, hide_news_ticker_default, hide_share_default, hide_sidebar_default, hover_profiles_default, image_upscaling_default, inline_wiki_default, inventory_lock_and_hide_default, inventory_only_open_multiple_default, inventory_open_all_but_one_default, journal_changer_default, journal_privacy_default, keyboard_shortcuts_default, larger_codices_default, larger_skin_images_default, lgs_reminder_default2, links_default, location_catch_stats_default, location_dashboard_default, metric_default, paste_hunter_id_default, prestige_base_stats_default, printing_press_paper_counter_default, quick_filters_and_sort_default, location_huds_default, quick_send_supplies_default, required_default, scoreboard_search_on_profiles_default, settings_default30, show_auras_default, ssdb_toothlet_counter_default, taller_windows_default, tem_crowns_default, ultimate_checkmark_default, update_migration_default, update_notifications_default, user_highlighting_default, wisdom_in_stat_bar_default]; var modules = imported8; var loadModules = () => __async(exports, null, function* () { const categories2 = [ { id: "required", name: "Always Loaded" }, { id: "better", name: `MouseHunt Improved <a class="version">v${mhImprovedVersion}</a>` }, { id: "feature", name: "Features" }, { id: "design", name: "Design" }, { id: "element-hiding", name: "Hide Page Elements" }, { id: "location-hud", name: "Location HUDs" }, { id: "advanced", name: "Advanced" }, { id: "beta", name: "Beta Features" } ]; if (getGlobal("loaded")) { debug("Already loaded, exiting."); return; } yield addSettingsTab("mousehunt-improved-settings", "MH Improved"); modules.forEach((m) => { const category = categories2.find((c) => c.id === m.type); if (!category) { debug(`Unknown module category: ${m.type}`); return; } if (!category.modules) { category.modules = []; } category.modules.push(m); }); for (const category of categories2) { category.modules.sort((a, b) => { a.order = a.order || 1; b.order = b.order || 1; if (a.order !== b.order) { return a.order - b.order; } return (a.name || a.id).localeCompare(b.name || b.id); }); } for (const module2 of categories2) { yield addSettingForModule(module2); doEvent2("mh-improved-settings-added", { module: module2 }); } const load = []; let loadedModules; for (const category of categories2) { loadedModules = []; for (const module2 of category.modules) { if (getFlag(`no-${module2.id}`)) { continue; } if (module2.alwaysLoad || "required" === category.id || getSetting(module2.id, module2.default)) { try { load.push(module2.load()); loadedModules.push(module2.id); } catch (error) { debug(`Error loading "${module2.id}"`, error); throw error; } } } debuglog("module-loading", `Loaded ${category.modules.length} ${category.id} modules`, loadedModules); } try { yield Promise.all(load); } catch (error) { if (getSetting("error-reporting", true)) { captureException(error); } throw error; } setGlobal("modules", loadedModules); doEvent2("mh-improved-modules-loaded"); }); var init74 = () => __async(exports, null, function* () { if (isUnsupportedFile()) { debug("Skipping unsupported filetype."); return; } if (isiFrame()) { debug("Loading inside an iframe is not supported."); return; } if (!isApp()) { debug("Global MouseHunt functions not found."); return; } if (!eventRegistry) { debug("Event registry not found."); return; } try { yield loadModules(); } catch (error) { showLoadingError(error); } finally { setGlobal("version", mhImprovedVersion); setGlobal("loaded", true); console.log( `%c\u{1F42D}\uFE0F MouseHunt Improved v${mhImprovedVersion}-${mhImprovedPlatform} has been loaded. Happy Hunting!%c`, "color: #ca77ff; font-weight: 900; font-size: 1.1em", "color: inherit; font-weight: inherit; font-size: inherit" ); doEvent2("mh-improved-loaded", { version: mhImprovedVersion, modules: getGlobal("modules") }); } doEvent2("mh-improved-init"); }); init74(); } }); return require_src(); })();