From f1317eb814b850e3c7b3a1fd041dd9d5199dcdaa Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:15:21 -0500 Subject: [PATCH 01/91] Rewrite update migration --- src/modules/update-migration/index.js | 150 +++++------------- .../update-migration/settings-cleanup.js | 73 --------- .../update-migration/settings-migrate.js | 114 ------------- .../update-migration/settings-to-migrate.json | 112 ------------- src/modules/update-migration/utils.js | 101 ++++++++++++ .../update-migration/versions/0.35.0.js | 137 ++++++++++++++++ .../update-migration/versions/0.36.0.js | 81 ++++++++++ 7 files changed, 363 insertions(+), 405 deletions(-) delete mode 100644 src/modules/update-migration/settings-cleanup.js delete mode 100644 src/modules/update-migration/settings-migrate.js delete mode 100644 src/modules/update-migration/settings-to-migrate.json create mode 100644 src/modules/update-migration/utils.js create mode 100644 src/modules/update-migration/versions/0.35.0.js create mode 100644 src/modules/update-migration/versions/0.36.0.js diff --git a/src/modules/update-migration/index.js b/src/modules/update-migration/index.js index 66996c80..82ba7413 100644 --- a/src/modules/update-migration/index.js +++ b/src/modules/update-migration/index.js @@ -1,149 +1,87 @@ import { addBodyClass, - clearCaches, - databaseDelete, debuglog, - fillDataCaches, + doEvent, getSetting, - getSettings, - refreshPage, saveSetting, setGlobal, showLoadingPopup, - sleep + updateCaches } from '@utils'; -import { cleanupCacheArSettings, cleanupSettings, removeOldEventFavoriteLocations } from './settings-cleanup'; -import { - migrateFlags, - migrateJournalChangerDate, - migrateQuestsCache, - migrateSettings, - migrateWisdomStat -} from './settings-migrate'; - -import settingsToMigrate from './settings-to-migrate.json'; +import { isVersionBefore, restoreSettingsBackup, saveSettingsBackup } from './utils'; -/** - * Check if the version is new. - * - * @param {string} version The version to check. - * - * @return {boolean} True if it's a new version, false otherwise. - */ -const isNewVersion = (version) => { - const currentVersion = mhImprovedVersion; +import * as imported from './versions/*.js'; // eslint-disable-line import/no-unresolved +const versionUpdates = imported; - // If it's not set, then it's a new install (or an update from before this was added). - if (version === null) { - return true; - } - - // If it's not the same, then it's an update. - if (version !== currentVersion) { - return true; +const doVersionUpdates = async () => { + if ('0.0.0' === previousVersion) { + return; } - // Otherwise, it's the same version. - return false; -}; - -/** - * Clean up settings on update. - * - * @param {string} previousVersion The previous version. - * @param {string} newVersion The new version. - */ -const update = async (previousVersion, newVersion) => { - showLoadingPopup(`Updating MouseHunt Improved to v${newVersion}...`); - - if ('0.35.0' === previousVersion) { - const backedUpSettings = localStorage.getItem('mousehunt-improved-settings-backup'); - if (backedUpSettings) { - localStorage.setItem('mousehunt-improved-settings', backedUpSettings); + for (const version in versionUpdates) { + const currentVersion = versionUpdates[version]; + if (isVersionBefore(currentVersion.id, mhImprovedVersion)) { + try { + await currentVersion.update(); + } catch (error) { + debuglog('update-migration', `Error updating to ${currentVersion.id}:`, error); + throw error; + } } } +}; - saveSetting('debug.all', true); +const update = async () => { + debuglog('update-migration', `Updating from ${previousVersion} to ${mhImprovedVersion}`); + showLoadingPopup(`Updating MouseHunt Improved to v${mhImprovedVersion}...`); addBodyClass('mh-improved-updating'); setGlobal('mh-improved-updating', true); - const start = Date.now(); - - const current = getSettings(); - localStorage.setItem('mousehunt-improved-settings-backup', JSON.stringify(current)); + // Backup the settings before we start updating in case something goes wrong. + saveSettingsBackup(); - debuglog('update-migration', 'Migrating settings'); - migrateSettings(settingsToMigrate.settings); + try { + await doVersionUpdates(); + saveSetting('mh-improved-version', mhImprovedVersion); - debuglog('update-migration', 'Migrating flags'); - migrateFlags(settingsToMigrate.flags); + await updateCaches(); - debuglog('update-migration', 'Migrating quests cache'); - migrateQuestsCache(); + doEvent('mh-improved-updated', mhImprovedVersion); + } catch (error) { + // If something goes wrong, restore the settings from the backup + restoreSettingsBackup(); - debuglog('update-migration', 'Migrating other settings'); - migrateWisdomStat(); + // Show the error to the user. + showLoadingPopup('Error updating MouseHunt Improved. Please try refreshing the page.'); - debuglog('update-migration', 'Migrating journal changer date'); - migrateJournalChangerDate(); - - debuglog('update-migration', 'Cleaning up settings'); - cleanupCacheArSettings(); - - debuglog('update-migration', 'Cleaning up old event favorite locations'); - removeOldEventFavoriteLocations(); - - debuglog('update-migration', 'Cleaning up old databases'); - cleanupSettings([ - `mh-improved-cached-ar-v${previousVersion}`, - 'mh-improved-update-notifications', // Updated in v0.28.0. - ]); - - // Moved to 'mh-improved-' databases in v0.35.0. - debuglog('update-migration', 'Deleting old databases'); - await databaseDelete('mh-improved'); - - // Clear caches and then refetch the data. - debuglog('update-migration', 'Clearing caches'); - await clearCaches(); - - debuglog('update-migration', 'Filling data caches'); - await fillDataCaches(); - - const end = Date.now(); - - // Because we are showing a loading popup, we want to make sure it's shown for at least 3 seconds. - if (end - start < 3000) { - await sleep(3000 - (end - start)); + throw error; } - - saveSetting('mh-improved-version', newVersion); - - refreshPage(); }; +let previousVersion = null; + /** * Initialize the update migration. */ const init = async () => { - const installedVersion = getSetting('mh-improved-version', null); - if (installedVersion === null) { - await update(null, mhImprovedVersion); + previousVersion = getSetting('mh-improved-version', '0.0.0'); + if ('0.0.0' === previousVersion) { return; } - if (! isNewVersion(installedVersion)) { - return; + if (previousVersion !== mhImprovedVersion) { + debuglog('update-migration', `Previous version: ${previousVersion}`); + await update(); + doEvent('mh-improved-updated', mhImprovedVersion); } - - await update(installedVersion, mhImprovedVersion); }; export default { - id: '_update-migration', + id: 'update-migration', type: 'required', alwaysLoad: true, + order: 300, load: init, }; diff --git a/src/modules/update-migration/settings-cleanup.js b/src/modules/update-migration/settings-cleanup.js deleted file mode 100644 index 1b8b9ce0..00000000 --- a/src/modules/update-migration/settings-cleanup.js +++ /dev/null @@ -1,73 +0,0 @@ -import { debuglog, getData, getSetting, saveSetting } from '@utils'; - -/** - * Removes settings from local storage. - * - * @param {Array} settingsToDelete An array of setting ids to remove from local storage. - */ -const cleanupSettings = (settingsToDelete) => { - settingsToDelete.forEach((setting) => { - debuglog('update-migration', `Removing setting ${setting}`); - localStorage.removeItem(setting); - }); -}; - -/** - * Removes all the stored cache AR settings. - */ -const cleanupCacheArSettings = () => { - Object.keys(localStorage).forEach((key) => { - if (key.startsWith('mh-improved-cached-ar-v')) { - debuglog('update-migration', `Removing setting ${key}`); - localStorage.removeItem(key); - } - }); -}; - -const removeOldEventFavoriteLocations = async () => { - // key is event, value is array of months - const events = [ - { - key: 'gwh', - months: [0, 10, 11] - }, - { - key: 'halloween', - months: [9, 10] - }, - { - key: 'bday', - months: [1, 2] - } - ]; - - const travelSettings = getSetting('better-travel-settings'); - if (! travelSettings || ! travelSettings.favorites) { - return; - } - - const eventEnvironments = await getData('environments-events'); - - const currentMonth = new Date().getMonth(); - travelSettings.favorites.forEach((favorite, index) => { - // if the favorite location matches an event environment id and the event is not in the current month, remove it - const isEventFavorite = eventEnvironments.find((event) => event.id === favorite); - if (isEventFavorite && isEventFavorite.event) { - const environmentEvent = isEventFavorite.event; - - // find the event in the events array - const event = events.find((ee) => ee.key === environmentEvent); - if (event && ! event.months.includes(currentMonth)) { - travelSettings.favorites.splice(index, 1); - } - } - }); - - saveSetting('better-travel-settings', travelSettings); -}; - -export { - cleanupSettings, - cleanupCacheArSettings, - removeOldEventFavoriteLocations -}; diff --git a/src/modules/update-migration/settings-migrate.js b/src/modules/update-migration/settings-migrate.js deleted file mode 100644 index 5b3a9b25..00000000 --- a/src/modules/update-migration/settings-migrate.js +++ /dev/null @@ -1,114 +0,0 @@ -import { - cacheSet, - debuglog, - deleteSetting, - getFlags, - getSetting, - saveSetting -} from '@utils'; - -/** - * Migrate a setting. - * - * @param {Object} settingKey The setting key to migrate. - * @param {string} settingKey.from The setting key to migrate from. - * @param {string} settingKey.to The setting key to migrate to. - */ -const migrateSetting = (settingKey) => { - debuglog('update-migration', `Migrating setting from ${settingKey.from} to ${settingKey.to}`); - const setting = getSetting(settingKey.from, null); - if (null === setting) { - return; - } - - // If the destination setting already exists, don't overwrite it - 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); - } -}; - -/** - * Migrate settings. - * - * @param {Array} settings The settings to migrate. - */ -const migrateSettings = (settings) => { - settings.forEach((setting) => { - migrateSetting(setting); - }); -}; - -const migrateFlags = (flags) => { - const savedFlags = getFlags(); - - flags.forEach((flag) => { - debuglog('update-migration', `Migrating flag from ${flag.from} to setting ${flag.to}`); - - // if we have the flag, set the setting to true and remove the flag - if (savedFlags.includes(flag.from)) { - saveSetting(flag.to, true); - savedFlags.splice(savedFlags.indexOf(flag.from), 1); - } - }); - - // save the remaining flags - saveSetting('override-flags', savedFlags.join(',')); -}; - -const migrateQuestsCache = () => { - debuglog('update-migration', 'Migrating quests cache'); - const savedQuests = localStorage.getItem('mh-improved-cache-quests'); - if (null === savedQuests) { - return; - } - - const quests = JSON.parse(savedQuests); - - cacheSet('quests', quests); - - localStorage.removeItem('mh-improved-cache-quests'); -}; - -const migrateWisdomStat = () => { - debuglog('update-migration', 'Migrating wisdom stat'); - const wisdomStat = getSetting('wisdom-stat'); - if (null === wisdomStat) { - return; - } - - const lastUpdated = wisdomStat['last-updated'] || 0; - const value = wisdomStat.value || 0; - - cacheSet('wisdom-stat-last-updated', lastUpdated); - cacheSet('wisdom-stat-value', value); - - deleteSetting('wisdom-stat'); -}; - -const migrateJournalChangerDate = async () => { - debuglog('update-migration', 'Migrating journal changer date'); - const last = getSetting('journal-changer-last-change', 0); - cacheSet('journal-changer-last-change', last); - - deleteSetting('journal-changer-last-change'); -}; - -export { - migrateSettings, - migrateQuestsCache, - migrateWisdomStat, - migrateJournalChangerDate, - migrateFlags -}; diff --git a/src/modules/update-migration/settings-to-migrate.json b/src/modules/update-migration/settings-to-migrate.json deleted file mode 100644 index c10320b8..00000000 --- a/src/modules/update-migration/settings-to-migrate.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "settings": [ - { "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" } - ], - "flags": [ - { "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" } - ] -} diff --git a/src/modules/update-migration/utils.js b/src/modules/update-migration/utils.js new file mode 100644 index 00000000..d792bf7c --- /dev/null +++ b/src/modules/update-migration/utils.js @@ -0,0 +1,101 @@ +import { + debuglog, + deleteSetting, + getFlags, + getSetting, + saveSetting +} from '@utils'; + +const 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; +}; + +const saveSettingsBackup = () => { + localStorage.setItem('mousehunt-improved-settings-backup', localStorage.getItem('mousehunt-improved-settings')); +}; + +const restoreSettingsBackup = () => { + const backedUpSettings = localStorage.getItem('mousehunt-improved-settings-backup'); + if (backedUpSettings) { + localStorage.setItem('mousehunt-improved-settings', backedUpSettings); + } +}; + +/** + * Migrate a setting. + * + * @param {Object} settingKey The setting key to migrate. + * @param {string} settingKey.from The setting key to migrate from. + * @param {string} settingKey.to The setting key to migrate to. + */ +const 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 the destination setting already exists, don't overwrite it + 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); + } +}; + +const moveFlagToSetting = (flag) => { + if (! flag.from || ! flag.to) { + return; + } + + debuglog('update-migration', `Migrating flag from ${flag.from} to setting ${flag.to}`); + const savedFlags = getFlags(); + + // if we have the flag, set the setting to true and remove the flag + if (savedFlags.includes(flag.from)) { + saveSetting(flag.to, true); + savedFlags.splice(savedFlags.indexOf(flag.from), 1); + } + + // save the remaining flags + saveSetting('override-flags', savedFlags.join(',')); +}; + +export { + isVersionBefore, + saveSettingsBackup, + restoreSettingsBackup, + moveSetting, + moveFlagToSetting +}; diff --git a/src/modules/update-migration/versions/0.35.0.js b/src/modules/update-migration/versions/0.35.0.js new file mode 100644 index 00000000..e85bcf9c --- /dev/null +++ b/src/modules/update-migration/versions/0.35.0.js @@ -0,0 +1,137 @@ +import { databaseDelete, debuglog } from '@utils'; +import { moveFlagToSetting, moveSetting } from '../utils'; + +const 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' } +]; + +const 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' } +]; + +const update = async () => { + debuglog('update-migration', 'Migrating settings'); + for (const setting of settingsToMigrate) { + moveSetting(setting); + } + + debuglog('update-migration', 'Migrating flags'); + for (const flag of flagsToMigrate) { + moveFlagToSetting(flag); + } + + // Moved to 'mh-improved-' databases in v0.35.0. + debuglog('update-migration', 'Deleting old databases'); + await databaseDelete('mh-improved'); + + localStorage.removeItem('mh-improved-update-notifications'); +}; + +export default { + id: '0.35.0', + update, +}; diff --git a/src/modules/update-migration/versions/0.36.0.js b/src/modules/update-migration/versions/0.36.0.js new file mode 100644 index 00000000..58508e0e --- /dev/null +++ b/src/modules/update-migration/versions/0.36.0.js @@ -0,0 +1,81 @@ +import { + debuglog, + deleteSetting, + getData, + getSetting, + saveSetting +} from '@utils'; + +const deleteLocalStorageArCache = () => { + const localStorageKeys = Object.keys(localStorage); + for (const key of localStorageKeys) { + if (key.startsWith('mh-improved-cached-ar-v')) { + localStorage.removeItem(key); + } + } +}; + +const copyHyperspeedTravelFavorites = () => { + const lvSettings = localStorage.getItem('lv-faves-settings'); + if (! lvSettings) { + return; + } + + const lvFavesSettings = JSON.parse(); + if (! lvFavesSettings) { + return; + } + + const lvFaves = Object.keys(lvFavesSettings?.locationList) || []; + if (! lvFaves || ! lvFaves.length) { + return; + } + + const favorites = getSetting('better-travel.favorites', []); + + // if there are any favorites that we don't have, add them + lvFaves.forEach((location) => { + if (! favorites.includes(location)) { + favorites.push(location); + saveSetting('better-travel.favorites', favorites); + } + }); +}; + +const removeOldEventFavoriteLocations = async () => { + const eventEnvironments = await 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); + } + }); +}; + +const update = () => { + debuglog('update-migration', 'Cleaning up old AR caches'); + deleteLocalStorageArCache(); + + // Previously we migrated these, but now we just remove them and let them be re-created. + 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); +}; + +export default { + id: '0.36.0', + update +}; From 887751f32321dc7deaa0265eca67dbaf7047ceb8 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:23:04 -0500 Subject: [PATCH 02/91] Fix typos --- src/modules/better-gifts/settings/index.js | 2 +- src/modules/better-inventory/index.js | 10 +++--- .../better-journal/journal-history/index.js | 2 +- src/modules/better-maps/index.js | 8 ++--- src/modules/better-maps/modules/tab-goals.js | 2 +- .../better-maps/modules/tab-hunters.js | 6 ++-- src/modules/better-maps/modules/tab-sorted.js | 12 +++---- src/modules/better-mice/index.js | 26 ++++++++-------- .../{mousepage.js => mouse-page.js} | 10 +++--- src/modules/catch-rate-estimate/data.js | 4 +-- src/modules/catch-rate-estimate/index.js | 4 +-- src/modules/custom-css/settings/index.js | 2 +- src/modules/debug/settings/index.js | 2 +- src/modules/lgs-reminder/index.js | 6 ++-- src/modules/location-dashboard/index.js | 8 ++--- .../location/desert-warpath.js | 6 ++-- .../location-huds/balacks-cove/index.js | 16 +++++----- .../location-huds/desert-warpath/index.js | 6 ++-- .../great-winter-hunt/index.js | 6 ++-- .../event-locations/halloween/index.js | 6 ++-- .../location-huds/forbidden-grove/index.js | 6 ++-- .../location-huds/rift-burroughs/index.js | 6 ++-- src/modules/metric/index.js | 2 +- src/modules/required/index.js | 10 +++--- src/modules/ultimate-checkmark/index.js | 6 ++-- src/modules/wisdom-in-stat-bar/index.js | 4 +-- src/utils/elements.js | 2 +- src/utils/maps.js | 31 +++++++++---------- src/utils/settings-markup.js | 8 ++--- src/utils/user.js | 2 +- 30 files changed, 110 insertions(+), 111 deletions(-) rename src/modules/better-mice/{mousepage.js => mouse-page.js} (97%) diff --git a/src/modules/better-gifts/settings/index.js b/src/modules/better-gifts/settings/index.js index 805ad49a..6e4154f0 100644 --- a/src/modules/better-gifts/settings/index.js +++ b/src/modules/better-gifts/settings/index.js @@ -64,7 +64,7 @@ export default async () => { }, { id: 'better-gifts.ignore-bad-gifts', - title: 'Ignore gifts that aren\'t the Gift of the Day', + title: 'Ignore gifts', default: [skipBadGiftOptions[0]], description: '', settings: { diff --git a/src/modules/better-inventory/index.js b/src/modules/better-inventory/index.js index 28f89283..6d120908 100644 --- a/src/modules/better-inventory/index.js +++ b/src/modules/better-inventory/index.js @@ -53,7 +53,7 @@ const setOpenQuantityOnClick = (attempts = 0) => { /** * Add the open all button to the convertible items. */ -const addOpenAlltoConvertible = () => { +const addOpenAllToConvertible = () => { const form = document.querySelector('.convertible .itemView-action-convertForm'); if (! form) { return; @@ -68,7 +68,7 @@ const addOpenAlltoConvertible = () => { // get the innerHTML and split it on the input tag. then wrap the second match in a span so we can target it const formHTML = form.innerHTML; const formHTMLArray = formHTML.split(' /'); - // if we dont have a second match, just return + // if we don't have a second match, just return if (! formHTMLArray[1]) { return; } @@ -162,19 +162,19 @@ const main = () => { setOpenQuantityOnClick(); } - addOpenAlltoConvertible(); + addOpenAllToConvertible(); addItemViewPopupToCollectibles(); addArmButtonToCharms(); onNavigation(() => { - addOpenAlltoConvertible(); + addOpenAllToConvertible(); addItemViewPopupToCollectibles(); addArmButtonToCharms(); }, { page: 'inventory', }); - onEvent('js_dialog_show', addOpenAlltoConvertible); + onEvent('js_dialog_show', addOpenAllToConvertible); recipes(); }; diff --git a/src/modules/better-journal/journal-history/index.js b/src/modules/better-journal/journal-history/index.js index fa47d490..eb5135ce 100644 --- a/src/modules/better-journal/journal-history/index.js +++ b/src/modules/better-journal/journal-history/index.js @@ -69,7 +69,7 @@ const getAllEntries = async () => { return []; } - // sort the entrieys by id, with the newest first + // sort the entries by id, with the newest first journalEntries.sort((a, b) => b.id - a.id); return journalEntries; diff --git a/src/modules/better-maps/index.js b/src/modules/better-maps/index.js index dbca2d2a..17e7f8b0 100644 --- a/src/modules/better-maps/index.js +++ b/src/modules/better-maps/index.js @@ -74,17 +74,17 @@ const initMapper = (map) => { return; } - // get the treasureMapRootView-content element, and if it has a loading class, wait for the class to be removed by watching the element for chagnes. once its loaded, proceed with our code + // get the treasureMapRootView-content element, and if it has a loading class, wait for the class to be removed by watching the element for changes. once its loaded, proceed with our code const content = document.querySelector('.treasureMapRootView-content'); if (content && content.classList.contains('loading')) { - const observer = new MutationObserver((mutations, mobserver) => { + const observer = new MutationObserver((mutations, mObserver) => { mutations.forEach((mutation) => { if ( mutation.type === 'attributes' && mutation.attributeName === 'class' && ! mutation.target.classList.contains('loading') ) { - mobserver.disconnect(); + mObserver.disconnect(); // call the init function again to proceed with our code initMapper(map); } @@ -264,6 +264,6 @@ export default { 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 infomation on the Hunters tab.', + 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: init, }; diff --git a/src/modules/better-maps/modules/tab-goals.js b/src/modules/better-maps/modules/tab-goals.js index 92cf568b..1df5f6c1 100644 --- a/src/modules/better-maps/modules/tab-goals.js +++ b/src/modules/better-maps/modules/tab-goals.js @@ -278,7 +278,7 @@ const addQuickInvite = async (mapData) => { existing.remove(); } - // Check if we're the curent map owner. + // Check if we're the current map owner. if (! mapData?.is_owner) { return; } diff --git a/src/modules/better-maps/modules/tab-hunters.js b/src/modules/better-maps/modules/tab-hunters.js index 0f90c8a2..19fa94bd 100644 --- a/src/modules/better-maps/modules/tab-hunters.js +++ b/src/modules/better-maps/modules/tab-hunters.js @@ -8,12 +8,12 @@ const makeUserTableLoading = (id, title, appendTo) => { const loading = makeElement('div', 'treasureMapView-block'); loading.id = `hunters-loading-${id}-block`; - const loadingWwrapper = makeElement('div', 'treasureMapView-allyTable', ''); + const loadingWrapper = makeElement('div', 'treasureMapView-allyTable', ''); const row = makeElement('div', 'treasureMapView-allyRow', ''); makeElement('div', ['mousehuntPage-loading', 'active'], '', row); - loadingWwrapper.append(row); + loadingWrapper.append(row); - loading.append(loadingWwrapper); + loading.append(loadingWrapper); appendTo.append(loading); }; diff --git a/src/modules/better-maps/modules/tab-sorted.js b/src/modules/better-maps/modules/tab-sorted.js index f19d7065..0357dbb2 100644 --- a/src/modules/better-maps/modules/tab-sorted.js +++ b/src/modules/better-maps/modules/tab-sorted.js @@ -130,9 +130,9 @@ const makeMouseDiv = async (mouse, type = 'mouse') => { makeElement('div', 'weakness-name', weaknessType.name, weaknessTypeDiv); const powerTypes = makeElement('div', 'power-types'); - weaknessType.power_types.forEach((ptype) => { + weaknessType.power_types.forEach((pType) => { const powerType = document.createElement('img'); - powerType.src = `https://www.mousehuntgame.com/images/powertypes/${ptype.name}.png`; + powerType.src = `https://www.mousehuntgame.com/images/powertypes/${pType.name}.png`; powerTypes.append(powerType); }); @@ -307,8 +307,8 @@ const makeSortedMiceList = async () => { } // find the subcategory name - const currentSubCat = mouseGroups[currentMapData.map_type].subcategories.find((subcat) => { - return subcat.id === subcategory.id; + const currentSubCat = mouseGroups[currentMapData.map_type].subcategories.find((subCat) => { + return subCat.id === subcategory.id; }); // Subcategory header. @@ -436,7 +436,7 @@ const makeScavengerSortedPage = async (target) => { return; } - // for each mouse, call getLocationForMouse and then seperate them into their respective locations + // for each mouse, call getLocationForMouse and then separate them into their respective locations const miceByLocation = {}; const locations = {}; @@ -620,7 +620,7 @@ const makeGenericSortedPage = async () => { return 1; }); - // call makeMouseDiv for each mouse but in the sorted order and not asynchonously + // call makeMouseDiv for each mouse but in the sorted order and not asynchronously for (const mouse of sortedUnsorted) { const mouseDiv = await makeMouseDiv(mouse, type); target.append(mouseDiv); diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index 97e9d5f4..eef9c3c2 100644 --- a/src/modules/better-mice/index.js +++ b/src/modules/better-mice/index.js @@ -12,7 +12,7 @@ import { import { getData } from '@utils/data'; -import mousepage from './mousepage'; +import mousePage from './mouse-page'; import styles from './styles.css'; @@ -211,9 +211,9 @@ const updateMouseView = async () => { } } - const grouptitle = mouseView.querySelector('.mouseView-group.mouseview-title-group'); - if (grouptitle) { - grouptitle.innerHTML = grouptitle.innerHTML.replace('Group: ', ''); + const groupTitle = mouseView.querySelector('.mouseView-group.mouseview-title-group'); + if (groupTitle) { + groupTitle.innerHTML = groupTitle.innerHTML.replace('Group: ', ''); } const container = mouseView.querySelector('.mouseView-contentContainer'); @@ -252,7 +252,7 @@ const updateMouseView = async () => { makeTooltip({ appendTo: titleText, - text: 'The best location and bait, according to data gathered by MHCT.', + text: 'The best location and bait, according to data gathered by MHCT.', }); const link = makeElement('a', 'ar-link', 'View on MHCT →'); @@ -262,23 +262,23 @@ const updateMouseView = async () => { arWrapper.append(title); - const mhctjson = await getArForMouse(mouseId, 'mouse'); - if (! mhctjson || mhctjson === undefined || mhctjson.length === 0 || 'error' in mhctjson) { + const mhctJson = await getArForMouse(mouseId, 'mouse'); + if (! mhctJson || mhctJson === undefined || mhctJson.length === 0 || 'error' in mhctJson) { return; } const miceArWrapper = makeElement('div', 'mice-ar-wrapper'); - const hasStages = mhctjson.some((mouseAr) => mouseAr.stage); + const hasStages = mhctJson.some((mouseAr) => mouseAr.stage); if (hasStages) { miceArWrapper.classList.add('has-stages'); } - // if mhctjson is not able to be sliced, then it is an error - if (! mhctjson.slice) { + // if mhctJson is not able to be sliced, then it is an error + if (! mhctJson.slice) { return; } - mhctjson.slice(0, 15).forEach((mouseAr) => { + mhctJson.slice(0, 15).forEach((mouseAr) => { const mouseArWrapper = makeElement('div', 'mouse-ar-wrapper'); makeElement('div', 'location', mouseAr.location, mouseArWrapper); @@ -293,7 +293,7 @@ const updateMouseView = async () => { miceArWrapper.append(mouseArWrapper); }); - if (mhctjson.length > 0) { + if (mhctJson.length > 0) { arWrapper.append(miceArWrapper); container.append(arWrapper); } @@ -361,7 +361,7 @@ let minlucks; const init = async () => { addStyles(styles, 'better-mice'); main(); - mousepage(); + mousePage(); replaceShowMouseImage(); }; diff --git a/src/modules/better-mice/mousepage.js b/src/modules/better-mice/mouse-page.js similarity index 97% rename from src/modules/better-mice/mousepage.js rename to src/modules/better-mice/mouse-page.js index 7fd03681..366bb1da 100644 --- a/src/modules/better-mice/mousepage.js +++ b/src/modules/better-mice/mouse-page.js @@ -246,7 +246,7 @@ const sortStats = (type, reverse = false) => { return; } - // loop through the rows and add the data-attribute values to each row if they dont already exist + // loop through the rows and add the data-attribute values to each row if they don't already exist rows.forEach((row) => { getSetRowValue(row, type); }); @@ -304,7 +304,7 @@ const addSortButton = (elements, type) => { } }); - // if the is-reverse data attribute is set, then we sort low to high otherwise we sort high to low. We dont want to add the reverse class if the unsorted class is already set, we just want to remove the unsorted class + // if the is-reverse data attribute is set, then we sort low to high otherwise we sort high to low. We don't want to add the reverse class if the unsorted class is already set, we just want to remove the unsorted class if (sortButton.classList.contains('unsorted')) { sortButton.classList.remove('unsorted'); sortStats(type); @@ -360,10 +360,10 @@ const addSortingToCat = (cat, retries = 0) => { 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}`); + 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); + addSortButton(els, mCat); } }); diff --git a/src/modules/catch-rate-estimate/data.js b/src/modules/catch-rate-estimate/data.js index 65e9cf7c..de685ae7 100644 --- a/src/modules/catch-rate-estimate/data.js +++ b/src/modules/catch-rate-estimate/data.js @@ -4,7 +4,7 @@ import { getData } from '@utils/data'; let miceEffs; let hasGottenEffs = false; -const getMiceEffectivness = async () => { +const getMiceEffectiveness = async () => { if (! hasGottenEffs) { miceEffs = await getData('effs'); hasGottenEffs = true; @@ -89,7 +89,7 @@ const getCatchRate = (mousePower, effectiveness, power = null, luck = null) => { export { getCatchRate, - getMiceEffectivness, + getMiceEffectiveness, getMinluck, getMouseEffectiveness, getMousePower diff --git a/src/modules/catch-rate-estimate/index.js b/src/modules/catch-rate-estimate/index.js index 08ac7613..722242cc 100644 --- a/src/modules/catch-rate-estimate/index.js +++ b/src/modules/catch-rate-estimate/index.js @@ -11,7 +11,7 @@ import styles from './styles.css'; import { getCatchRate, - getMiceEffectivness, + getMiceEffectiveness, getMinluck, getMouseEffectiveness, getMousePower @@ -22,7 +22,7 @@ const updateMinLucks = async () => { return; } - const effectiveness = await getMiceEffectivness(); + const effectiveness = await getMiceEffectiveness(); if (! effectiveness) { return; diff --git a/src/modules/custom-css/settings/index.js b/src/modules/custom-css/settings/index.js index 6eedc317..19fb04e5 100644 --- a/src/modules/custom-css/settings/index.js +++ b/src/modules/custom-css/settings/index.js @@ -8,7 +8,7 @@ export default async () => { id: 'override-styles', title: 'Custom Styles', default: '', - description: 'Custom CSS to apply to MouseHunt.', + description: 'Custom CSS to apply to MouseHunt.', settings: { type: 'textarea', }, diff --git a/src/modules/debug/settings/index.js b/src/modules/debug/settings/index.js index 062eb9ab..1cfb00f9 100644 --- a/src/modules/debug/settings/index.js +++ b/src/modules/debug/settings/index.js @@ -27,7 +27,7 @@ export default async () => { }, { id: 'debug.navigation', - title: 'Log page, tab, and subtab navigations' + title: 'Log page, tab, and subtab navigation' }, { id: 'debug.request', diff --git a/src/modules/lgs-reminder/index.js b/src/modules/lgs-reminder/index.js index 11d9a8e5..395eca24 100644 --- a/src/modules/lgs-reminder/index.js +++ b/src/modules/lgs-reminder/index.js @@ -56,7 +56,7 @@ const getShieldTime = () => { return Math.floor((expiry - now)); }; -const getShieldTimeFormattted = () => { +const getShieldTimeFormatted = () => { const time = getShieldTime(); if (! time) { return ''; @@ -95,7 +95,7 @@ const updateLgsReminder = (el) => { el.classList.add('lgs-danger'); } - el.innerText = getShieldTimeFormattted(); + el.innerText = getShieldTimeFormatted(); }; const main = () => { @@ -133,7 +133,7 @@ const main = () => { second: 'numeric', }); - reminder.title = `LGS Expires on ${endDate} (${getShieldTimeFormattted()} remaining)`; + reminder.title = `LGS Expires on ${endDate} (${getShieldTimeFormatted()} remaining)`; if (newStyle) { const existing = document.querySelector('.mousehunt-improved-lgs-reminder-wrapper'); diff --git a/src/modules/location-dashboard/index.js b/src/modules/location-dashboard/index.js index 8d15edda..2091f4f5 100644 --- a/src/modules/location-dashboard/index.js +++ b/src/modules/location-dashboard/index.js @@ -182,8 +182,8 @@ const doLocationRefresh = async () => { const originalLocation = user.environment_type; debug(`Original location: ${user.environment_type}.`); - const equippedbait = user.bait_item_id || 'disarmed'; - debug(`Equipped bait: ${equippedbait}.`); + const equippedBait = user.bait_item_id || 'disarmed'; + debug(`Equipped bait: ${equippedBait}.`); // Disarm bait. hg.utils.TrapControl.disarmBait().go(); @@ -215,8 +215,8 @@ const doLocationRefresh = async () => { await waitForTravel(originalLocation); debug(`Traveled back to ${user.environment_type}.`); - hg.utils.TrapControl.setBait(equippedbait).go(); - debug(`Re-equipped bait: ${equippedbait}.`); + hg.utils.TrapControl.setBait(equippedBait).go(); + debug(`Re-equipped bait: ${equippedBait}.`); popup.hide(); diff --git a/src/modules/location-dashboard/location/desert-warpath.js b/src/modules/location-dashboard/location/desert-warpath.js index 716e849c..e8c5e277 100644 --- a/src/modules/location-dashboard/location/desert-warpath.js +++ b/src/modules/location-dashboard/location/desert-warpath.js @@ -54,10 +54,10 @@ const setFieryWarpathData = () => { streak = Number.parseInt(streakEl.innerText.replaceAll('\n', ' ').replace(' 0', '').trim()); } - const remaininEl = document.querySelectorAll('.warpathHUD-wave-mouse-population'); - if (remaininEl.length) { + const remainingEl = document.querySelectorAll('.warpathHUD-wave-mouse-population'); + if (remainingEl.length) { // sum all the values that have an innerText - remaining = [...remaininEl].reduce((sum, el) => { + remaining = [...remainingEl].reduce((sum, el) => { if (el.innerText) { sum += Number.parseInt(el.innerText); } diff --git a/src/modules/location-huds/balacks-cove/index.js b/src/modules/location-huds/balacks-cove/index.js index 38049831..0dee893b 100644 --- a/src/modules/location-huds/balacks-cove/index.js +++ b/src/modules/location-huds/balacks-cove/index.js @@ -27,18 +27,18 @@ const updateClosingTime = () => { const rotationLength = 18.66666; const rotationsExact = (((today.getTime() / 1000) - 1294680060) / 3600) / rotationLength; const rotationsInteger = Math.floor(rotationsExact); - const partialrotation = (rotationsExact - rotationsInteger) * rotationLength; - if (partialrotation < 16) { - // currently low, whcih means its (16 hours - current time) until mid flooding, then one more hour after than until high tide - const closes = 16 - partialrotation; + const partialRotation = (rotationsExact - rotationsInteger) * rotationLength; + if (partialRotation < 16) { + // currently low, which means its (16 hours - current time) until mid flooding, then one more hour after than until high tide + const closes = 16 - partialRotation; timeLeftText = getClosingText(closes, 'Mid Tide', 60, 'High Tide'); - } else if (partialrotation >= 16 && partialrotation < 17) { + } else if (partialRotation >= 16 && partialRotation < 17) { // currently mid, which means its (1hr - current time) until high tide, then 40 minutes after that until low mid time again - const closes = 1 - (partialrotation - 16); + const closes = 1 - (partialRotation - 16); timeLeftText = getClosingText(closes, 'High Tide', 40, 'Low Tide'); - } else if (partialrotation >= 17 && partialrotation < 17.66666) { + } else if (partialRotation >= 17 && partialRotation < 17.66666) { // currently high, which means its (40 minutes - current time) until mid tide again, then 1 hour after that until low tide - const closes = 0.66666 - (partialrotation - 17); + const closes = 0.66666 - (partialRotation - 17); timeLeftText = getClosingText(closes, 'Low Tide', 60, 'Mid Tide'); } diff --git a/src/modules/location-huds/desert-warpath/index.js b/src/modules/location-huds/desert-warpath/index.js index e1e060c2..9dd4e27c 100644 --- a/src/modules/location-huds/desert-warpath/index.js +++ b/src/modules/location-huds/desert-warpath/index.js @@ -9,7 +9,7 @@ const addMissiles = () => { return; } - const trigger = makeElement('div', ['warpathHud-missle-activate', 'warpathHUD-missile']); + const trigger = makeElement('div', ['warpathHud-missle-activate', 'warpathHUD-missile']); /* cspell: disable-line */ container.append(trigger); trigger.addEventListener('click', () => { @@ -22,7 +22,7 @@ const addMissiles = () => { } }); - const launchMissle = (event) => { + const launchMissile = (event) => { if (! container.classList.contains('warpathHUD-engaged')) { return; } @@ -66,7 +66,7 @@ const addMissiles = () => { }, 700); }; - container.addEventListener('click', launchMissle); + container.addEventListener('click', launchMissile); }; /** diff --git a/src/modules/location-huds/event-locations/great-winter-hunt/index.js b/src/modules/location-huds/event-locations/great-winter-hunt/index.js index 856606d8..5bfb97c9 100644 --- a/src/modules/location-huds/event-locations/great-winter-hunt/index.js +++ b/src/modules/location-huds/event-locations/great-winter-hunt/index.js @@ -192,14 +192,14 @@ const showPossibleSnowballShowdownDustCount = () => { const snowballEl = showdownItems.querySelector('.campHudSnowballShowdownView__snowball'); const snowballQtyEl = snowballEl.querySelector('.campHudSnowballShowdownView__quantity'); - const showballQty = snowballQtyEl ? Number.parseInt(snowballQtyEl.textContent.replaceAll(',', ''), 10) : 0; + 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(showballQty / 175); - const snowballText = showballQty - (possibleDustQty * 175); + const possibleDustQty = Math.floor(snowballQty / 175); + const snowballText = snowballQty - (possibleDustQty * 175); const dustText = currentDustQty + possibleDustQty; const possibleSnowballExists = showdownItems.querySelector('.campHudSnowballShowdownView__quantity.possibleSnowball'); diff --git a/src/modules/location-huds/event-locations/halloween/index.js b/src/modules/location-huds/event-locations/halloween/index.js index edd416e6..5e08da7a 100644 --- a/src/modules/location-huds/event-locations/halloween/index.js +++ b/src/modules/location-huds/event-locations/halloween/index.js @@ -2,7 +2,7 @@ import { addHudStyles, onRequest } from '@utils'; import styles from './styles.css'; -const undisableCheese = () => { +const unDisableCheese = () => { const armButtons = document.querySelectorAll('.halloweenBoilingCauldronHUD-bait'); armButtons.forEach((armButton) => { armButton.classList.remove('disabled'); @@ -30,8 +30,8 @@ const halloweenGlobal = async () => { */ const halloweenLocation = async () => { addHudStyles(styles); - undisableCheese(); - onRequest('*', undisableCheese); + unDisableCheese(); + onRequest('*', unDisableCheese); }; export { diff --git a/src/modules/location-huds/forbidden-grove/index.js b/src/modules/location-huds/forbidden-grove/index.js index 6cef461b..6d312e7d 100644 --- a/src/modules/location-huds/forbidden-grove/index.js +++ b/src/modules/location-huds/forbidden-grove/index.js @@ -12,9 +12,9 @@ const updateClosingTime = () => { const rotationLength = 20; const rotationsExact = (((today.getTime() / 1000) - 1285704000) / 3600) / rotationLength; const rotationsInteger = Math.floor(rotationsExact); - const partialrotation = (rotationsExact - rotationsInteger) * rotationLength; - if (partialrotation < 16) { - const closes = (16 - partialrotation).toFixed(3); + 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); diff --git a/src/modules/location-huds/rift-burroughs/index.js b/src/modules/location-huds/rift-burroughs/index.js index 3dbba010..216e56f6 100644 --- a/src/modules/location-huds/rift-burroughs/index.js +++ b/src/modules/location-huds/rift-burroughs/index.js @@ -8,8 +8,8 @@ const makeMiceList = (type, title, mice, currentType, appendTo) => { wrapper.classList.add('active'); } - const mtitle = makeElement('a', 'mouse-type-title', title); - mtitle.addEventListener('click', () => { + const mTitle = makeElement('a', 'mouse-type-title', title); + mTitle.addEventListener('click', () => { let id = 1426; // magical string. if ('terra' === type) { id = 1551; @@ -21,7 +21,7 @@ const makeMiceList = (type, title, mice, currentType, appendTo) => { hg.utils.TrapControl.go(); }); - wrapper.append(mtitle); + wrapper.append(mTitle); const miceWrapper = makeElement('div', 'mouse-type-mice'); diff --git a/src/modules/metric/index.js b/src/modules/metric/index.js index e4f818f2..19f8aec0 100644 --- a/src/modules/metric/index.js +++ b/src/modules/metric/index.js @@ -49,7 +49,7 @@ const replaceInJournal = () => { }; const replaceOnMousePage = () => { - // Check for the mousepage stats. + // Check for the mouse page stats. const mouseWeightsStats = document.querySelectorAll('.mouseListView-categoryContent-subgroupContainer .mouseListView-categoryContent-subgroup-mouse-stats'); if (! mouseWeightsStats.length) { return; diff --git a/src/modules/required/index.js b/src/modules/required/index.js index 4fa0a391..56c8f82f 100644 --- a/src/modules/required/index.js +++ b/src/modules/required/index.js @@ -1,6 +1,6 @@ import { doEvent, getFlag, onTurn } from '@utils'; -const checkForAutohorn = () => { +const checkForAutoHorn = () => { const storageKeys = 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; @@ -14,7 +14,7 @@ const checkForAutohorn = () => { } try { - // Send a post request to the autohorn tracker. + // Send a post request to the auto horn tracker. fetch('https://autohorn.mouse.rip/submit', { method: 'POST', headers: getHeaders(), @@ -35,7 +35,7 @@ const checkForAutohorn = () => { const addEvents = () => { const hunterHornTimer = document.querySelector('.huntersHornView__timerState'); if (hunterHornTimer) { - // Add a mutation observer to check when the innertext changes and when it does, start an interval where we fire an event every second. + // Add a mutation observer to check when the innerText changes and when it does, start an interval where we fire an event every second. const observer = new MutationObserver(() => { // After the mutation, start the interval and then stop watching for mutations. setInterval(() => { @@ -59,8 +59,8 @@ const addEvents = () => { const init = async () => { // If you want to disable the reporting, you can but you have to admit you're a cheater. if (! getFlag('i-am-a-cheater-and-i-know-it')) { - checkForAutohorn(); - onTurn(checkForAutohorn, 2000); + checkForAutoHorn(); + onTurn(checkForAutoHorn, 2000); } addEvents(); diff --git a/src/modules/ultimate-checkmark/index.js b/src/modules/ultimate-checkmark/index.js index b09adbe2..db63f610 100644 --- a/src/modules/ultimate-checkmark/index.js +++ b/src/modules/ultimate-checkmark/index.js @@ -78,12 +78,12 @@ const getItems = async (required, queryTab, queryTag, allItems = []) => { const requiredItem = required.find((i) => i.type === item.type); return { - item_id: item.item_id, // eslint-disable-line camelcase + item_id: item.item_id, type: item.type, name: item.name, - thumbnail: item.thumbnail_gray || item.thumbnail, // eslint-disable-line camelcase + thumbnail: item.thumbnail_gray || item.thumbnail, quantity: item.quantity || 0, - quantity_formatted: item.quantity_formatted || '0', // eslint-disable-line camelcase + quantity_formatted: item.quantity_formatted || '0', le: ! requiredItem, }; }); diff --git a/src/modules/wisdom-in-stat-bar/index.js b/src/modules/wisdom-in-stat-bar/index.js index 83289ed5..c8523b2c 100644 --- a/src/modules/wisdom-in-stat-bar/index.js +++ b/src/modules/wisdom-in-stat-bar/index.js @@ -109,12 +109,12 @@ const addRefreshListener = () => { wisdomRow.addEventListener('click', () => { // Save whether we should use cached wisdom. - const cachedWidsomSetting = useCachedWisdom; + const cachedWisdomSetting = useCachedWisdom; // Force update the wisdom. useCachedWisdom = false; updateWisdom(); - useCachedWisdom = cachedWidsomSetting; + useCachedWisdom = cachedWisdomSetting; }); }; diff --git a/src/utils/elements.js b/src/utils/elements.js index 67ef9227..c5d5623f 100644 --- a/src/utils/elements.js +++ b/src/utils/elements.js @@ -4,7 +4,7 @@ import { addStylesDirect } from './styles'; import favoriteButtonStyles from './styles/favorite-button.css'; /** - * Creates an element with the given tag, classname, text, and appends it to the given element. + * Creates an element with the given tag, class name, text, and appends it to the given element. * * @param {string} tag The tag of the element to create. * @param {string} classes The classes of the element to create. diff --git a/src/utils/maps.js b/src/utils/maps.js index 7f7a7c9b..798d46bd 100644 --- a/src/utils/maps.js +++ b/src/utils/maps.js @@ -33,7 +33,7 @@ const mapper = (key = false) => { }; /** - * Helper function to get the mapdata from the global object. + * Helper function to get the map data from the global object. * * @return {Object} Map data. */ @@ -47,7 +47,7 @@ const mapData = () => { }; /** - * Helper function to get the mapmodel from the global object. + * Helper function to get the map model from the global object. * * @return {Object} Map model. */ @@ -220,7 +220,7 @@ const addMHCTData = async (mouse, appendTo, type = 'mouse') => { return; } - const mhctjson = await getArForMouse(mouse.unique_id, type); + const mhctJson = await getArForMouse(mouse.unique_id, type); const mhctDiv = makeElement('div', 'mhct-data'); mhctDiv.id = `mhct-${mouse.unique_id}-${type}`; @@ -240,14 +240,14 @@ const addMHCTData = async (mouse, appendTo, type = 'mouse') => { header.append(mhctLink); mhctDiv.append(header); - if (! mhctjson.slice) { + if (! mhctJson.slice) { return; } const environments = await getData('environments'); const amountOfLocationsToShow = 5; // TODO: maybe modify this for some mice or make it an option? - mhctjson.slice(0, amountOfLocationsToShow).forEach((mhct) => { + mhctJson.slice(0, amountOfLocationsToShow).forEach((mhct) => { const mhctRow = makeElement('div', 'mhct-row'); const location = makeElement('div', 'mhct-location'); @@ -291,7 +291,7 @@ const addMHCTData = async (mouse, appendTo, type = 'mouse') => { }); // if the rows were empty, then add a message - if (0 === mhctjson.length) { + if (0 === mhctJson.length) { const mhctRow = makeElement('div', 'mhct-row'); makeElement('div', 'mhct-no-data', 'No data available', mhctRow); mhctDiv.append(mhctRow); @@ -431,7 +431,7 @@ const getHighestArText = async (id, type = 'mouse') => { * @return {Array|boolean} Array of attraction rates or false if not found. */ const getArForMouse = async (id, type = 'mouse') => { - let mhctjson = []; + let mhctJson = []; const cacheKey = `${type}-${id}`; @@ -444,7 +444,7 @@ const getArForMouse = async (id, type = 'mouse') => { const isItem = 'item' === type; const mhctPath = isItem ? 'mhct-item' : 'mhct'; - let mhctdata = []; + let mhctData = []; // Temp hack for halloween. const data = mapData() || {}; @@ -454,31 +454,30 @@ const getArForMouse = async (id, type = 'mouse') => { url = `https://api.mouse.rip/${mhctPath}/${id}-hlw_22`; } - mhctdata = await fetch(url, { headers: getHeaders() }); + mhctData = await fetch(url, { headers: getHeaders() }); - if (! mhctdata.ok) { + if (! mhctData.ok) { return []; } - mhctjson = await mhctdata.json(); + mhctJson = await mhctData.json(); - if (! mhctjson || mhctjson.length === 0) { - setCachedValue(cacheKey, [], true); + if (! mhctJson || mhctJson.length === 0) { return []; } if (isItem) { // change the 'drop_ct' to 'rate' - for (const rate of mhctjson) { + for (const rate of mhctJson) { // convert from a '13.53' to 1353 rate.rate = Number.parseInt(rate.drop_pct * 100); delete rate.drop_ct; } } - setCachedValue(cacheKey, mhctjson); + await setCachedValue(cacheKey, mhctJson); - return mhctjson; + return mhctJson; }; /** diff --git a/src/utils/settings-markup.js b/src/utils/settings-markup.js index cb239366..a0b63855 100644 --- a/src/utils/settings-markup.js +++ b/src/utils/settings-markup.js @@ -142,7 +142,7 @@ const addSettingsTabOnce = (identifier = 'userscript-settings', name = 'Userscri * @param {boolean} options.default The default value. * @param {string} options.description The description of the setting. * @param {Object} options.module The module the setting is for. - * @param {Object} options.subsettings The subsettings for the setting. + * @param {Object} options.subSettings The sub-settings for the setting. * @param {string} options.group The group the setting is in. * @param {string} options.tab The tab to add the settings to. * @param {Object} options.settings The settings for the setting. @@ -537,7 +537,7 @@ const makeSettingBlank = ({ section, key }) => { * @param {boolean} options.default The default value. * @param {string} options.description The description of the setting. * @param {Object} options.module The module the setting is for. - * @param {Object} options.subsettings The subsettings for the setting. + * @param {Object} options.subSettings The sub-settings for the setting. * @param {string} options.group The group the setting is in. * @param {string} options.tab The tab to add the settings to. * @param {Object} options.settings The settings for the setting. @@ -552,7 +552,7 @@ const addSettingOnce = (options) => { const defaultValue = options.default || null; const description = options.description || ''; const tab = 'mousehunt-improved-settings'; - const settingSettings = options.subsettings || null; + const settingSettings = options.subSettings || null; // Make sure we have the container for our settings. const container = document.querySelector(`.mousehuntHud-page-tabContent.${tab}`); @@ -782,7 +782,7 @@ const addSettingForModule = async (module) => { ...module, subSetting: true, }, - subsettings: subSettings.settings, + subSettings: subSettings.settings, }); if (moduleSettingRow && subSettingRow) { diff --git a/src/utils/user.js b/src/utils/user.js index 4c488652..f95f77ab 100644 --- a/src/utils/user.js +++ b/src/utils/user.js @@ -35,7 +35,7 @@ const getUserSetupDetails = () => { powerBonus: userObj.trap_power_bonus, luck: userObj.trap_luck, attractionBonus: userObj.trap_attraction_bonus, - cheeseEfect: userObj.trap_cheese_effect, + cheeseEffect: userObj.trap_cheese_effect, }, bait: { id: Number.parseInt(userObj.bait_item_id), From cdf6f91467cada6caf27cee5425f2612937a3799 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:23:17 -0500 Subject: [PATCH 03/91] Remove Larry's Links module --- src/modules/larrys-links/index.js | 93 ---------- src/modules/larrys-links/links.json | 266 ---------------------------- src/modules/larrys-links/styles.css | 17 -- 3 files changed, 376 deletions(-) delete mode 100644 src/modules/larrys-links/index.js delete mode 100644 src/modules/larrys-links/links.json delete mode 100644 src/modules/larrys-links/styles.css diff --git a/src/modules/larrys-links/index.js b/src/modules/larrys-links/index.js deleted file mode 100644 index 0dcf0230..00000000 --- a/src/modules/larrys-links/index.js +++ /dev/null @@ -1,93 +0,0 @@ -import { addStyles, getCurrentLocation, makeElement, onNavigation } from '@utils'; - -import linksData from './links.json'; - -import styles from './styles.css'; - -const addLinks = (links) => { - const larryContainer = document.querySelector('.campPage-tabs-tabContent-larryTip-container'); - if (! larryContainer) { - return; - } - - const linksContainer = makeElement('div', ['mh-improved-larrys-links']); - makeElement('h3', ['campPage-tabs-tabContent-larryTip-environment', 'mh-improved-larrys-links-title'], 'Larry\'s Links', linksContainer); - - const linksList = makeElement('ul'); - - links.forEach((link) => { - const linkItem = makeElement('li'); - - const linkEl = makeElement('a', '', link.text); - linkEl.href = link.url; - linkEl.target = '_larrys_links'; - linkEl.rel = 'noopener noreferrer'; - - linkItem.append(linkEl); - linksList.append(linkItem); - }); - - linksContainer.append(linksList); - - const existingLinks = document.querySelector('.mh-improved-larrys-links'); - if (existingLinks) { - existingLinks.replaceWith(linksContainer); - } else { - larryContainer.append(linksContainer); - } -}; - -const addImages = (images) => { - const larryContainer = document.querySelector('.campPage-tabs-tabContent-larryTip-container'); - if (! larryContainer) { - return; - } - - const imagesContainer = makeElement('div', ['mh-improved-larrys-images']); - - images.forEach((image) => { - const imageEl = makeElement('img', ['mh-improved-larrys-image']); - imageEl.src = image.url; - imageEl.alt = image.alt; - imagesContainer.append(imageEl); - }); - - const existingImages = document.querySelector('.mh-improved-larrys-images'); - if (existingImages) { - existingImages.replaceWith(imagesContainer); - } else { - larryContainer.prepend(imagesContainer); - } -}; - -const main = () => { - const location = getCurrentLocation(); - - if (linksData?.links?.[location]) { - addLinks(linksData.links[location]); - } - - if (linksData?.images?.[location]) { - addImages(linksData.images[location]); - } -}; - -/** - * Initialize the module. - */ -const init = async () => { - addStyles(styles, 'larrys-links'); - onNavigation(main, { - page: 'camp', - onLoad: true, - }); -}; - -export default { - id: 'larrys-links', - name: 'Larry\'s Links', - description: 'Adds links to guides and resources to Larry\'s Tips.', - type: 'beta', - default: false, - load: init -}; diff --git a/src/modules/larrys-links/links.json b/src/modules/larrys-links/links.json deleted file mode 100644 index 35987095..00000000 --- a/src/modules/larrys-links/links.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "links": { - "meadow": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/novice#meadow" - } - ], - "town_of_gnawnia": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/recruit#town-of-gnawnia" - } - ], - "windmill": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/apprentice#windmill" - } - ], - "harbour": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/initiate#harbour" - } - ], - "mountain": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/journeyman-journeywoman#mountain" - } - ], - "kings_arms": [], - "tournament_hall": [], - "kings_gauntlet": [], - "calm_clearing": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/master#calm-clearing" - } - ], - "great_gnarled_tree": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/master#great-gnarled-tree" - } - ], - "lagoon": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/master#lagoon" - } - ], - "laboratory": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/master#laboratory" - } - ], - "mousoleum": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/master#mousoleum" - } - ], - "town_of_digby": [], - "bazaar": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/grandmaster#bazaar" - } - ], - "pollution_outbreak": [], - "training_grounds": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/grandmaster#training-grounds" - } - ], - "dojo": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/grandmaster#dojo" - } - ], - "meditation_room": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/grandmaster#meditation-room" - } - ], - "pinnacle_chamber": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/grandmaster#pinnacle-chamber" - } - ], - "catacombs": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/hero#catacombs" - } - ], - "forbidden_grove": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/hero#forbidden-grove" - } - ], - "acolyte_realm": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/hero#acolyte-realm" - } - ], - "cape_clawed": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/legendary#cape-clawed" - } - ], - "elub_shore": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/legendary#elub-shore" - } - ], - "nerg_plains": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/legendary#nerg-plains" - } - ], - "derr_dunes": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/legendary#derr-dunes" - } - ], - "jungle_of_dread": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/hero#jungle-of-dread" - } - ], - "dracano": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/knight#dracano" - } - ], - "balacks_cove": [], - "claw_shot_city": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/lord-lady#claw-shot-city" - } - ], - "train_station": [], - "fort_rox": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/baron-baroness#fort-rox" - } - ], - "desert_warpath": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/baron-baroness#fiery-warpath" - } - ], - "desert_city": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/baron-baroness#muridae-market" - } - ], - "desert_oasis": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/baron-baroness#living-garden" - } - ], - "lost_city": [], - "sand_dunes": [], - "ss_huntington_ii": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/legendary#ss-huntington-iv" - } - ], - "seasonal_garden": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/lord-lady#seasonal-garden" - } - ], - "zugzwang_tower": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/lord-lady#zugzwangs-tower" - } - ], - "zugzwang_library": [], - "slushy_shoreline": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/lord-lady#slushy-shoreline" - } - ], - "iceberg": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/lord-lady#iceberg" - } - ], - "sunken_city": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/count-countess#sunken-city" - } - ], - "queso_river": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/count-countess#queso-river" - } - ], - "queso_plains": [], - "queso_quarry": [], - "queso_geyser": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/count-countess#queso-geyser" - } - ], - "fungal_cavern": [], - "labyrinth": [], - "ancient_city": [], - "moussu_picchu": [], - "floating_islands": [], - "foreword_farm": [], - "prologue_pond": [], - "table_of_contents": [], - "bountiful_beanstalk": [], - "rift_gnawnia": [ - { - "text": "MouseHunt Essentials Guide", - "url": "https://guide.mouse.rip/guide/count-countess#gnawnia-rift" - } - ], - "rift_burroughs": [], - "rift_whisker_woods": [], - "rift_furoma": [], - "rift_bristle_woods": [], - "rift_valour": [] - }, - "images": { - "super_brie_factory": [ - { - "url": "https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExZGxrNmFwZjVpaHRwd2Rncng4aThwNGh5anc0NjkzZ21iYWRuM3NoNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/tOYq12nXAdY6TG9vS3/giphy.gif", - "alt": "happy birthday" - } - ] - } -} diff --git a/src/modules/larrys-links/styles.css b/src/modules/larrys-links/styles.css deleted file mode 100644 index f0e516ff..00000000 --- a/src/modules/larrys-links/styles.css +++ /dev/null @@ -1,17 +0,0 @@ -.mh-improved-larrys-links { - padding-top: 20px; - border-top: 1px solid #cbc6bb; -} - -.mh-improved-larrys-links ul { - margin-left: 20px; - list-style: disc; -} - -.mh-improved-larrys-images { - margin-bottom: 20px; -} - -.mh-improved-larrys-image { - max-width: 330px; -} From b520894d3e1ca9e2aa94e1f24343f19631162cfd Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:23:50 -0500 Subject: [PATCH 04/91] Organizes fixes, add fix for tab styles --- src/modules/fixes/fixes/item-page.js | 88 ++++++ .../fixes/fixes/marketplace-buy-button.js | 13 + src/modules/fixes/fixes/passing-parcel.js | 54 ++++ .../fixes/fixes/rift-tooltip-quantities.js | 29 ++ src/modules/fixes/index.js | 186 +----------- src/modules/fixes/styles.css | 286 ------------------ .../fixes/{ => styles}/backgrounds.css | 0 src/modules/fixes/styles/claim-gift.css | 4 + src/modules/fixes/styles/colors.css | 65 ++++ src/modules/fixes/styles/convertibles.css | 9 + src/modules/fixes/styles/dropdown.css | 19 ++ src/modules/fixes/styles/fb-img-size.css | 10 + src/modules/fixes/styles/font-sizes.css | 8 + src/modules/fixes/styles/footer.css | 5 + src/modules/fixes/styles/hud-shadow.css | 8 + src/modules/fixes/styles/hunter-title.css | 11 + src/modules/fixes/styles/labyrinth.css | 4 + .../fixes/styles/location-names-overflow.css | 14 + src/modules/fixes/styles/maps.css | 15 + src/modules/fixes/styles/menu.css | 11 + src/modules/fixes/styles/other.css | 4 + src/modules/fixes/styles/preferences.css | 21 ++ src/modules/fixes/styles/ronza.css | 5 + src/modules/fixes/styles/scoreboard.css | 6 + src/modules/fixes/styles/tabs.css | 40 +++ src/modules/fixes/styles/tem.css | 10 + src/modules/fixes/styles/tooltips.css | 12 + src/modules/fixes/styles/tutorial-overlay.css | 16 + 28 files changed, 493 insertions(+), 460 deletions(-) create mode 100644 src/modules/fixes/fixes/item-page.js create mode 100644 src/modules/fixes/fixes/marketplace-buy-button.js create mode 100644 src/modules/fixes/fixes/passing-parcel.js create mode 100644 src/modules/fixes/fixes/rift-tooltip-quantities.js delete mode 100644 src/modules/fixes/styles.css rename src/modules/fixes/{ => styles}/backgrounds.css (100%) create mode 100644 src/modules/fixes/styles/claim-gift.css create mode 100644 src/modules/fixes/styles/colors.css create mode 100644 src/modules/fixes/styles/convertibles.css create mode 100644 src/modules/fixes/styles/dropdown.css create mode 100644 src/modules/fixes/styles/fb-img-size.css create mode 100644 src/modules/fixes/styles/font-sizes.css create mode 100644 src/modules/fixes/styles/footer.css create mode 100644 src/modules/fixes/styles/hud-shadow.css create mode 100644 src/modules/fixes/styles/hunter-title.css create mode 100644 src/modules/fixes/styles/labyrinth.css create mode 100644 src/modules/fixes/styles/location-names-overflow.css create mode 100644 src/modules/fixes/styles/maps.css create mode 100644 src/modules/fixes/styles/menu.css create mode 100644 src/modules/fixes/styles/other.css create mode 100644 src/modules/fixes/styles/preferences.css create mode 100644 src/modules/fixes/styles/ronza.css create mode 100644 src/modules/fixes/styles/scoreboard.css create mode 100644 src/modules/fixes/styles/tabs.css create mode 100644 src/modules/fixes/styles/tem.css create mode 100644 src/modules/fixes/styles/tooltips.css create mode 100644 src/modules/fixes/styles/tutorial-overlay.css diff --git a/src/modules/fixes/fixes/item-page.js b/src/modules/fixes/fixes/item-page.js new file mode 100644 index 00000000..2d0fa755 --- /dev/null +++ b/src/modules/fixes/fixes/item-page.js @@ -0,0 +1,88 @@ +import { getCurrentPage, onNavigation } from '@utils'; + +const fixItemPage = () => { + if ('item' !== getCurrentPage()) { + return; + } + + const currentType = document.querySelector('.itemViewContainer'); + if (! currentType) { + return; + } + + // get the classlist as a string. + 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; + } + + // get the onclick attribute, remove 'hg.views.ItemView.hide()', then set the onclick attribute + const onclick = link.getAttribute('onclick'); + if (! onclick) { + return; + } + + // get the page title and tab via regex + 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'; + } + + // build the url + let url = `https://www.mousehuntgame.com/${pageTitle.toLowerCase()}.php?tab=${tab}`; + if (subtab) { + url += `&sub_tab=${subtab}`; + } + + // Append a query string with the item ID so we can process it after the page loads. + const itemType = currentType.getAttribute('data-item-type'); + url += `&viewing-item-id=${itemType}`; + + // Redirect away from the item page. + window.location = url; +}; + +const fixItemPageReceiver = () => { + // check for the item id in the query string + const itemId = window.location.href.match(/viewing-item-id=(.+)/); + if (! itemId || ! itemId[1]) { + return; + } + + hg.views.ItemView.show(itemId[1]); +}; + +export default async () => { + if ('item' === getCurrentPage()) { + fixItemPage(); + } + + onNavigation(fixItemPage, { + page: 'item', + onLoad: true, + }); + + onNavigation(fixItemPageReceiver, { + page: 'inventory', + onLoad: true, + }); +}; diff --git a/src/modules/fixes/fixes/marketplace-buy-button.js b/src/modules/fixes/fixes/marketplace-buy-button.js new file mode 100644 index 00000000..c51e4ff0 --- /dev/null +++ b/src/modules/fixes/fixes/marketplace-buy-button.js @@ -0,0 +1,13 @@ +const fixMpBuyButton = () => { + hg.views.MarketplaceView.setOrderPrice = (price) => { + const input = document.querySelector('.marketplaceView-item-unitPriceWithTariff'); + if (input) { + input.value = price; + hg.views.MarketplaceView.blurInput(input); + } + }; +}; + +export default async () => { + fixMpBuyButton(); +}; diff --git a/src/modules/fixes/fixes/passing-parcel.js b/src/modules/fixes/fixes/passing-parcel.js new file mode 100644 index 00000000..3d1b1aab --- /dev/null +++ b/src/modules/fixes/fixes/passing-parcel.js @@ -0,0 +1,54 @@ +import { onNavigation } from '@utils'; + +const 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 = `
+
+ + ? +
+
+ +
${quantity.innerText}
+
+
+
+
+
+ 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! +
+
+ +
+
+
+
`; + + 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'; + }); +}; + +export default async () => { + onNavigation(fixPassingParcel, { + page: 'inventory', + tab: 'special', + onLoad: true, + }); +}; diff --git a/src/modules/fixes/fixes/rift-tooltip-quantities.js b/src/modules/fixes/fixes/rift-tooltip-quantities.js new file mode 100644 index 00000000..b7b66baa --- /dev/null +++ b/src/modules/fixes/fixes/rift-tooltip-quantities.js @@ -0,0 +1,29 @@ +import { getCurrentLocation, getUserItems, onTravel } from '@utils'; + +const fixRiftTooltipQuantities = async () => { + if ('rift_gnawnia' !== getCurrentLocation()) { + return; + } + + const cheeseQtys = await getUserItems(['gnawnia_boss_cheese', 'riftiago_cheese']); + if (! cheeseQtys || ! cheeseQtys.length) { + return; + } + + const craft = document.querySelector('.riftGnawniaHud-craftingBait .riftGnawniaHud-tooltip-quantity'); + if (craft) { + craft.textContent = cheeseQtys[0]?.quantity || 0; + } + + const potion = document.querySelector('.riftGnawniaHud-potion .riftGnawniaHud-tooltip-quantity'); + if (potion) { + craft.textContent = cheeseQtys[1]?.quantity || 0; + } +}; + +export default async () => { + fixRiftTooltipQuantities(); + onTravel('rift_gnawnia', { + callback: fixRiftTooltipQuantities, + }); +}; diff --git a/src/modules/fixes/index.js b/src/modules/fixes/index.js index 4c43980a..fcf3d2cf 100644 --- a/src/modules/fixes/index.js +++ b/src/modules/fixes/index.js @@ -1,185 +1,23 @@ -import { - addStyles, - getCurrentLocation, - getCurrentPage, - getUserItems, - onNavigation, - onTravel -} from '@utils'; +import { addStyles } from '@utils'; -import backgrounds from './backgrounds.css'; -import styles from './styles.css'; +import itemPage from './fixes/item-page'; +import marketplaceBuyButton from './fixes/marketplace-buy-button'; +import passingParcel from './fixes/passing-parcel'; +import riftTooltipQuantities from './fixes/rift-tooltip-quantities'; -const 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 = `
-
- - ? -
-
- -
${quantity.innerText}
-
-
-
-
-
- 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! -
-
- -
-
-
-
`; - - 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'; - }); -}; - -const fixItemPage = () => { - const currentType = document.querySelector('.itemViewContainer'); - if (! currentType) { - return; - } - - // get the classlist as a string. - 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; - } - - // get the onclick attribute, remove 'hg.views.ItemView.hide()', then set the onclick attribute - const onclick = link.getAttribute('onclick'); - if (! onclick) { - return; - } - - // get the page title and tab via regex - 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'; - } - - // build the url - let url = `https://www.mousehuntgame.com/${pageTitle.toLowerCase()}.php?tab=${tab}`; - if (subtab) { - url += `&sub_tab=${subtab}`; - } - - // Append a query string with the item ID so we can process it after the page loads. - const itemType = currentType.getAttribute('data-item-type'); - url += `&viewing-item-id=${itemType}`; - - // Redirect away from the item page. - window.location = url; -}; - -const fixMpBuyButton = () => { - hg.views.MarketplaceView.setOrderPrice = (price) => { - const input = document.querySelector('.marketplaceView-item-unitPriceWithTariff'); - if (input) { - input.value = price; - hg.views.MarketplaceView.blurInput(input); - } - }; -}; - -const fixItemPageReciever = () => { - // check for the item id in the query string - const itemId = window.location.href.match(/viewing-item-id=(.+)/); - if (! itemId || ! itemId[1]) { - return; - } - - hg.views.ItemView.show(itemId[1]); -}; - -const fixRiftTooltipQuantities = async () => { - if ('rift_gnawnia' !== getCurrentLocation()) { - return; - } - - const cheeseQtys = await getUserItems(['gnawnia_boss_cheese', 'riftiago_cheese']); - if (! cheeseQtys || ! cheeseQtys.length) { - return; - } - - const craft = document.querySelector('.riftGnawniaHud-craftingBait .riftGnawniaHud-tooltip-quantity'); - if (craft) { - craft.textContent = cheeseQtys[0]?.quantity || 0; - } - - const potion = document.querySelector('.riftGnawniaHud-potion .riftGnawniaHud-tooltip-quantity'); - if (potion) { - craft.textContent = cheeseQtys[1]?.quantity || 0; - } -}; +import * as imported from './styles/*.css'; // eslint-disable-line import/no-unresolved +const styles = imported; /** * Initialize the module. */ const init = async () => { - addStyles([styles, backgrounds], 'fixes'); - - if ('item' === getCurrentPage()) { - fixItemPage(); - } - - fixMpBuyButton(); - - onNavigation(fixPassingParcel, { - page: 'inventory', - tab: 'special', - onLoad: true, - }); - - onNavigation(fixItemPageReciever, { - page: 'inventory', - onLoad: true, - }); + addStyles(styles, 'fixes'); - fixRiftTooltipQuantities(); - onTravel('rift_gnawnia', { - callback: fixRiftTooltipQuantities, - }); + itemPage(); + marketplaceBuyButton(); + passingParcel(); + riftTooltipQuantities(); }; export default { diff --git a/src/modules/fixes/styles.css b/src/modules/fixes/styles.css deleted file mode 100644 index 2694d7f7..00000000 --- a/src/modules/fixes/styles.css +++ /dev/null @@ -1,286 +0,0 @@ -/* Align the friends checkbox on the scoreboard */ -.scoreboardTableView-friends, -.scoreboardTableView-weekly { - margin-top: 1px; - vertical-align: middle; -} - -/* Fix the team icon */ -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); -} - -/* Top menu, fix dropdown arrow direction */ -.mousehuntHeaderView .menuItem.dropdown .arrow { - top: 10px; - transform: rotate(180deg); -} - -.mousehuntHeaderView .menuItem.dropdown.expanded .arrow { - top: 5px; -} - -/* Fix HUD shadow */ -.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; -} - -/* Fix arrow outline showing */ -.mousehuntTooltip.top .mousehuntTooltip-arrow::after { - top: -16px; -} - -.mousehuntTooltip.left .mousehuntTooltip-arrow::after { - right: -6px; -} - -.mousehuntTooltip.right .mousehuntTooltip-arrow::after { - left: -6px; -} - -/* remove "craft 12 items" from the ranks that already have it. */ -.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; -} - -/* fix the bad border color for current rank */ -.hunterTitle .titles .userLevel .description { - border-color: #957432; -} - -/* Overflow location names */ -.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; -} - -/* Full width for the map link text box */ -input.treasureMapView-shareLinkInput { - width: 95%; - margin: 0 auto; -} - -/* Original wwrift rage font size */ -.riftWhiskerWoodsHUD-zone-rageLevel { - font-size: 14px; -} - -/* ronzas window */ -span.chromeBitImage, -span.voucherImage { - vertical-align: middle; -} - -/* Don't show the clue circle for the blank profile of empty map slots */ -.treasureMapView-hunter.empty .treasureMapView-hunter-miceCaught { - display: none; -} - -/* Make facebook images correct size even when facebook is blocked */ -img[src*="https://graph.facebook.com"].treasureMapView-hunter-image { /* stylelint-disable-line prettier/prettier */ - width: 44px; - height: 44px; -} - -.treasureMapView-environment-hunters img[src*="https://graph.facebook.com"].treasureMapView-hunter-image { /* stylelint-disable-line prettier/prettier */ - width: 20px; - height: 20px; -} - -/* Fix the tutorial overlay shadow */ -#overlayBg.larryOffice { - width: 100%; - height: 100%; - background: transparent; -} - -#overlayBg.larryOffice::after { - position: fixed; - top: 0; - right: 0; - left: 0; - height: 100vh; - content: ""; - background-color: rgb(80 80 80 / 90%); -} - -.dropdownContent { - color: #000; -} - -.accountVerificationRewardsView__step.claimed { - background-image: url(https://www.mousehuntgame.com/images/ui/backgrounds/checkmark.png?asset_cache_version=2); - background-size: 30px; -} - -.accountVerificationRewardsView__step.can_claim { - background-image: none; -} - -/* Fix the account settings forms unnecessarily wrapping text */ -.PreferencesPage__dialogForm .PreferencesPage__formLabel { - flex: 1; -} - -.PreferencesPage__dialogForm .PreferencesPage__formInput { - flex: 1.8; -} - -.PreferencesPage__dialogForm form { - padding-left: 18px; -} - -/* Vertical align the quantity input and open button on convertible dialogs */ -.itemView-action-convertForm { - display: flex; - align-items: center; -} - -.itemView-action-convert-quantity { - top: 0; -} - -/* Fix the weird footer width */ -.pageFrameView-column.left, -.pageFrameView-column.right { - margin-bottom: -140px; -} - -/* Make the collectibles tab show the full text */ -a.mousehuntHud-page-tabHeader.collectibles span { - padding-top: 6px; - overflow: visible !important; - font-size: 13px; - text-overflow: unset !important; - white-space: normal !important; -} - -.claimGiftPage__giftQuantity { - background: #fff777; - border: 1px solid #b5814e; -} - -/* Make the inbox arrow color match on hover */ -#messengerUINotification .tabs a:hover .arrow { - border-color: transparent transparent transparent #eee; -} - -/* Fix the checkmark on map screens */ -.treasureMapInviteSettingsView-listing-visibility.active::before { - content: "✓"; -} - -/* Invalid color codes in HG css files */ -.halloweenBoilingCauldronRecipeView-cauldronTooltip { - background: #333aaa; /* was #333aa */ -} - -.eggSweeper-control-boundingBox:hover { - box-shadow: 5px 5px 10px #fff82f inset; /* was #fff82 */ -} - -.greatWinterHuntRewardTrackView__claimButton { - text-shadow: 1px 1px 1px #fff777; /* was #fff77 */ -} - -.forewordFarmPlotView-plot-help { - box-shadow: 2px 3px 3px 1px #333666; /* was #33366 */ -} - -.floatingIslandsHUD.unlockedSkyPalace .floatingIslandsHUD-overlay { - background: linear-gradient(to right, #000999, transparent); /* was #00099 */ -} - -.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; /* was #00088 */ -} - -.halloweenBoilingCauldronHUD-dialog-reward.complete::after { - box-shadow: 5px 5px 5px #000888; /* was #00088 */ -} - -.folkloreForestRegionView-dialogContainer { - box-shadow: 10px 10px 4px 1px #000333 inset; /* was #00033 */ -} - -.folkloreForestRegionView-boost { - box-shadow: 2px 2px 2px #333111; /* was #33311 */ -} - -.MHCheckout-featuredItemTransparent.small .MHCheckout-featuredItemTransparent-backlight { - background: linear-gradient(-45deg, #fff, #fffaaa); /* was #fffaa */ -} - -.MHCheckout-relicHunterGrouped { - background: #fff555; /* was #fff55 */ -} - -.MHCheckout-splash.halloween_skins .MHCheckout-link { - background: #000999; /* was #00099 */ -} - -.MHCheckout-splash.lunar_new_year_2023 .MHCheckout-featuredItem-actions { - border: 1px solid #ff351f; /* was #ff351 */ -} - -.tableOfContentsProgressView-reward-quantity { - background: #fffaaa; /* was #fffaa */ -} - -.MHCheckoutDialogView-overlay { - background: #fffa8a; /* was #fffa8 */ -} - -/* selector typo in HG css files */ -.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); -} - -.eggSweeper-viewAllRewardsButton:hover { - background-color: #228b22; /* was 'forest' */ -} - -.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity { - font-size: 9px; /* was set as 'font-style'; */ -} - -/* Fix menu tab border alignment */ -.mousehuntHeaderView .support .dropdownContent { - right: -0.5px; - border-top: 1px solid #ccc; -} - -/* Fix TEM hover */ -.pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer:hover { - background-color: #fdfaf2; -} - -/* Fix TEM padding */ -body .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer { - padding-left: 10px; - margin-top: 10px; -} diff --git a/src/modules/fixes/backgrounds.css b/src/modules/fixes/styles/backgrounds.css similarity index 100% rename from src/modules/fixes/backgrounds.css rename to src/modules/fixes/styles/backgrounds.css diff --git a/src/modules/fixes/styles/claim-gift.css b/src/modules/fixes/styles/claim-gift.css new file mode 100644 index 00000000..56f9f2f7 --- /dev/null +++ b/src/modules/fixes/styles/claim-gift.css @@ -0,0 +1,4 @@ +.claimGiftPage__giftQuantity { + background: #fff777; + border: 1px solid #b5814e; +} diff --git a/src/modules/fixes/styles/colors.css b/src/modules/fixes/styles/colors.css new file mode 100644 index 00000000..93549399 --- /dev/null +++ b/src/modules/fixes/styles/colors.css @@ -0,0 +1,65 @@ +/* Invalid color codes in HG css files */ +.halloweenBoilingCauldronRecipeView-cauldronTooltip { + background: #333aaa; /* was #333aa */ +} + +.eggSweeper-control-boundingBox:hover { + box-shadow: 5px 5px 10px #fff82f inset; /* was #fff82 */ +} + +.greatWinterHuntRewardTrackView__claimButton { + text-shadow: 1px 1px 1px #fff777; /* was #fff77 */ +} + +.forewordFarmPlotView-plot-help { + box-shadow: 2px 3px 3px 1px #333666; /* was #33366 */ +} + +.floatingIslandsHUD.unlockedSkyPalace .floatingIslandsHUD-overlay { + background: linear-gradient(to right, #000999, transparent); /* was #00099 */ +} + +.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; /* was #00088 */ +} + +.halloweenBoilingCauldronHUD-dialog-reward.complete::after { + box-shadow: 5px 5px 5px #000888; /* was #00088 */ +} + +.folkloreForestRegionView-dialogContainer { + box-shadow: 10px 10px 4px 1px #000333 inset; /* was #00033 */ +} + +.folkloreForestRegionView-boost { + box-shadow: 2px 2px 2px #333111; /* was #33311 */ +} + +.MHCheckout-featuredItemTransparent.small .MHCheckout-featuredItemTransparent-backlight { + background: linear-gradient(-45deg, #fff, #fffaaa); /* was #fffaa */ +} + +.MHCheckout-relicHunterGrouped { + background: #fff555; /* was #fff55 */ +} + +.MHCheckout-splash.halloween_skins .MHCheckout-link { + background: #000999; /* was #00099 */ +} + +.MHCheckout-splash.lunar_new_year_2023 .MHCheckout-featuredItem-actions { + border: 1px solid #ff351f; /* was #ff351 */ +} + +.tableOfContentsProgressView-reward-quantity { + background: #fffaaa; /* was #fffaa */ +} + +.MHCheckoutDialogView-overlay { + background: #fffa8a; /* was #fffa8 */ +} + +.eggSweeper-viewAllRewardsButton:hover { + background-color: #228b22; /* was 'forest' */ +} diff --git a/src/modules/fixes/styles/convertibles.css b/src/modules/fixes/styles/convertibles.css new file mode 100644 index 00000000..c7f0f8ee --- /dev/null +++ b/src/modules/fixes/styles/convertibles.css @@ -0,0 +1,9 @@ +/* Vertical align the quantity input and open button on convertible dialogs */ +.itemView-action-convertForm { + display: flex; + align-items: center; +} + +.itemView-action-convert-quantity { + top: 0; +} diff --git a/src/modules/fixes/styles/dropdown.css b/src/modules/fixes/styles/dropdown.css new file mode 100644 index 00000000..2daa9bba --- /dev/null +++ b/src/modules/fixes/styles/dropdown.css @@ -0,0 +1,19 @@ +/* Top menu, fix dropdown arrow direction */ +.mousehuntHeaderView .menuItem.dropdown .arrow { + top: 10px; + transform: rotate(180deg); +} + +.mousehuntHeaderView .menuItem.dropdown.expanded .arrow { + top: 5px; +} + +.dropdownContent { + color: #000; +} + +/* Fix menu tab border alignment */ +.mousehuntHeaderView .support .dropdownContent { + right: -0.5px; + border-top: 1px solid #ccc; +} diff --git a/src/modules/fixes/styles/fb-img-size.css b/src/modules/fixes/styles/fb-img-size.css new file mode 100644 index 00000000..68aa7ae4 --- /dev/null +++ b/src/modules/fixes/styles/fb-img-size.css @@ -0,0 +1,10 @@ +/* Make facebook images correct size even when facebook is blocked */ +img[src*="https://graph.facebook.com"].treasureMapView-hunter-image { /* stylelint-disable-line prettier/prettier */ + width: 44px; + height: 44px; +} + +.treasureMapView-environment-hunters img[src*="https://graph.facebook.com"].treasureMapView-hunter-image { /* stylelint-disable-line prettier/prettier */ + width: 20px; + height: 20px; +} diff --git a/src/modules/fixes/styles/font-sizes.css b/src/modules/fixes/styles/font-sizes.css new file mode 100644 index 00000000..a9b6ddc7 --- /dev/null +++ b/src/modules/fixes/styles/font-sizes.css @@ -0,0 +1,8 @@ +/* Original wwrift rage font size */ +.riftWhiskerWoodsHUD-zone-rageLevel { + font-size: 14px; +} + +.riftWhiskerWoodsHUD-zone-charm-craftingItem-quantity { + font-size: 9px; /* was set as 'font-style'; */ +} diff --git a/src/modules/fixes/styles/footer.css b/src/modules/fixes/styles/footer.css new file mode 100644 index 00000000..28b99052 --- /dev/null +++ b/src/modules/fixes/styles/footer.css @@ -0,0 +1,5 @@ +/* Fix the weird footer width */ +.pageFrameView-column.left, +.pageFrameView-column.right { + margin-bottom: -140px; +} diff --git a/src/modules/fixes/styles/hud-shadow.css b/src/modules/fixes/styles/hud-shadow.css new file mode 100644 index 00000000..3daef9eb --- /dev/null +++ b/src/modules/fixes/styles/hud-shadow.css @@ -0,0 +1,8 @@ +/* Fix HUD shadow */ +.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; +} diff --git a/src/modules/fixes/styles/hunter-title.css b/src/modules/fixes/styles/hunter-title.css new file mode 100644 index 00000000..80b09c0c --- /dev/null +++ b/src/modules/fixes/styles/hunter-title.css @@ -0,0 +1,11 @@ +/* remove "craft 12 items" from the ranks that already have it. */ +.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; +} + +/* fix the bad border color for current rank */ +.hunterTitle .titles .userLevel .description { + border-color: #957432; +} diff --git a/src/modules/fixes/styles/labyrinth.css b/src/modules/fixes/styles/labyrinth.css new file mode 100644 index 00000000..e0f5b2cf --- /dev/null +++ b/src/modules/fixes/styles/labyrinth.css @@ -0,0 +1,4 @@ +/* One pixel change to prevent an extra border from appearing */ +.labyrinthHUD.exit.secret { + background-position-y: -184px; +} diff --git a/src/modules/fixes/styles/location-names-overflow.css b/src/modules/fixes/styles/location-names-overflow.css new file mode 100644 index 00000000..cc132642 --- /dev/null +++ b/src/modules/fixes/styles/location-names-overflow.css @@ -0,0 +1,14 @@ +/* Overflow location names */ +.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; +} diff --git a/src/modules/fixes/styles/maps.css b/src/modules/fixes/styles/maps.css new file mode 100644 index 00000000..9f8e3805 --- /dev/null +++ b/src/modules/fixes/styles/maps.css @@ -0,0 +1,15 @@ +/* Don't show the clue circle for the blank profile of empty map slots */ +.treasureMapView-hunter.empty .treasureMapView-hunter-miceCaught { + display: none; +} + +/* Full width for the map link text box */ +input.treasureMapView-shareLinkInput { + width: 95%; + margin: 0 auto; +} + +/* Fix the checkmark on map screens */ +.treasureMapInviteSettingsView-listing-visibility.active::before { + content: "✓"; +} diff --git a/src/modules/fixes/styles/menu.css b/src/modules/fixes/styles/menu.css new file mode 100644 index 00000000..da8db4fd --- /dev/null +++ b/src/modules/fixes/styles/menu.css @@ -0,0 +1,11 @@ +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); +} diff --git a/src/modules/fixes/styles/other.css b/src/modules/fixes/styles/other.css new file mode 100644 index 00000000..58622171 --- /dev/null +++ b/src/modules/fixes/styles/other.css @@ -0,0 +1,4 @@ +/* selector typo in HG css files */ +.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); +} diff --git a/src/modules/fixes/styles/preferences.css b/src/modules/fixes/styles/preferences.css new file mode 100644 index 00000000..b9c2885c --- /dev/null +++ b/src/modules/fixes/styles/preferences.css @@ -0,0 +1,21 @@ +/* Fix the account settings forms unnecessarily wrapping text */ +.PreferencesPage__dialogForm .PreferencesPage__formLabel { + flex: 1; +} + +.PreferencesPage__dialogForm .PreferencesPage__formInput { + flex: 1.8; +} + +.PreferencesPage__dialogForm form { + padding-left: 18px; +} + +.accountVerificationRewardsView__step.claimed { + background-image: url(https://www.mousehuntgame.com/images/ui/backgrounds/checkmark.png?asset_cache_version=2); + background-size: 30px; +} + +.accountVerificationRewardsView__step.can_claim { + background-image: none; +} diff --git a/src/modules/fixes/styles/ronza.css b/src/modules/fixes/styles/ronza.css new file mode 100644 index 00000000..e7508e9c --- /dev/null +++ b/src/modules/fixes/styles/ronza.css @@ -0,0 +1,5 @@ +/* ronzas window */ +span.chromeBitImage, +span.voucherImage { + vertical-align: middle; +} diff --git a/src/modules/fixes/styles/scoreboard.css b/src/modules/fixes/styles/scoreboard.css new file mode 100644 index 00000000..b933f83a --- /dev/null +++ b/src/modules/fixes/styles/scoreboard.css @@ -0,0 +1,6 @@ +/* Align the friends checkbox on the scoreboard */ +.scoreboardTableView-friends, +.scoreboardTableView-weekly { + margin-top: 1px; + vertical-align: middle; +} diff --git a/src/modules/fixes/styles/tabs.css b/src/modules/fixes/styles/tabs.css new file mode 100644 index 00000000..b83c1d0e --- /dev/null +++ b/src/modules/fixes/styles/tabs.css @@ -0,0 +1,40 @@ +/* Make the collectibles tab show the full text */ +a.mousehuntHud-page-tabHeader.collectibles span { + padding-top: 6px; + overflow: visible !important; + font-size: 13px; + text-overflow: unset !important; + white-space: normal !important; +} + +/* Make the inbox arrow color match on hover */ +#messengerUINotification .tabs a:hover .arrow { + border-color: transparent transparent transparent #eee; +} + +/* Make page sub tabs align correctly */ +.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.active span, +.mousehuntHud-page-tabHeader:hover span, +.mousehuntHud-page-tabHeader span { + padding-bottom: 0.5px; + margin-top: 4px; +} + +.mousehuntHud-page-tabHeader.active span, +.mousehuntHud-page-tabHeader:hover span { + padding-bottom: 5px; + margin-top: 0; +} diff --git a/src/modules/fixes/styles/tem.css b/src/modules/fixes/styles/tem.css new file mode 100644 index 00000000..ead1dc62 --- /dev/null +++ b/src/modules/fixes/styles/tem.css @@ -0,0 +1,10 @@ +/* Fix TEM hover */ +.pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer:hover { + background-color: #fdfaf2; +} + +/* Fix TEM padding */ +body .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer { + padding-left: 10px; + margin: 5px 0; +} diff --git a/src/modules/fixes/styles/tooltips.css b/src/modules/fixes/styles/tooltips.css new file mode 100644 index 00000000..d635d1a3 --- /dev/null +++ b/src/modules/fixes/styles/tooltips.css @@ -0,0 +1,12 @@ +/* Fix arrow outline showing */ +.mousehuntTooltip.top .mousehuntTooltip-arrow::after { + top: -16px; +} + +.mousehuntTooltip.left .mousehuntTooltip-arrow::after { + right: -6px; +} + +.mousehuntTooltip.right .mousehuntTooltip-arrow::after { + left: -6px; +} diff --git a/src/modules/fixes/styles/tutorial-overlay.css b/src/modules/fixes/styles/tutorial-overlay.css new file mode 100644 index 00000000..be29b37e --- /dev/null +++ b/src/modules/fixes/styles/tutorial-overlay.css @@ -0,0 +1,16 @@ +/* Fix the tutorial overlay shadow */ +#overlayBg.larryOffice { + width: 100%; + height: 100%; + background: transparent; +} + +#overlayBg.larryOffice::after { + position: fixed; + top: 0; + right: 0; + left: 0; + height: 100vh; + content: ""; + background-color: rgb(80 80 80 / 90%); +} From cb6f37817135c0d2e46d263bfa35790e3390df86 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:31:19 -0500 Subject: [PATCH 05/91] - Journal replacement and modifications now happen more efficiently and faster - More styles added - Gold and points icons is now a separate option - Unique link colors is now a separate option --- src/modules/better-journal/index.js | 399 +- .../journal-gold-and-points/index.js | 31 + .../styles.css} | 0 .../better-journal/journal-history/index.js | 62 +- .../journal-icons-minimal/index.js | 7 + .../journal-icons-minimal/styles.css | 9 + .../better-journal/journal-icons/index.js | 19 + .../better-journal/journal-icons/styles.css | 5587 ----------------- .../journal-item-colors/index.js | 7 + .../styles.css} | 5 + .../better-journal/journal-list/index.js | 15 +- .../better-journal/journal-list/styles.css | 12 +- .../journal-replacements/index.js | 202 + .../journal-replacements/styles.css | 7 + .../better-journal/journal-styles/index.js | 8 + .../styles/backgrounds.css | 0 .../styles/custom-entries/aura.css | 0 .../base/alchemist-cookbook.css | 0 .../styles/custom-entries/base/ssdb.css | 0 .../styles/custom-entries/catch/bonus.css | 0 .../styles/custom-entries/catch/failure.css | 1 + .../styles/custom-entries/catch/lucky.css | 0 .../styles/custom-entries/catch/prize.css | 0 .../styles/custom-entries/charm/gilded.css | 0 .../custom-entries/charm/rift-vacuum.css | 0 .../styles/custom-entries/charm/torch.css | 0 .../styles/custom-entries/charm/ultimate.css | 0 .../styles/custom-entries/charm/unstable.css | 8 +- .../styles/custom-entries/crafting.css | 0 .../styles/custom-entries/draw-winner.css | 0 .../styles/custom-entries/events.css | 0 .../styles/custom-entries/larry-gift.css | 0 .../custom-entries/location/birthday.css | 48 + .../styles/custom-entries/location/brift.css | 0 .../styles/custom-entries/location/bwrift.css | 0 .../location/folklore-forest.css | 0 .../styles/custom-entries/location/frift.css | 0 .../styles/custom-entries/location/garden.css | 0 .../custom-entries/location/halloween.css | 0 .../custom-entries/location/iceberg.css | 6 + .../custom-entries/location/labyrinth.css | 0 .../custom-entries/location/mousoleum.css | 0 .../styles/custom-entries/location/queso.css | 0 .../custom-entries/location/toxic-spill.css | 0 .../styles/custom-entries/location/vrift.css | 0 .../styles/custom-entries/location/wwrift.css | 0 .../styles/custom-entries/maps.css | 0 .../styles/custom-entries/mouse/glazy.css | 0 .../custom-entries/mouse/stuck-snowball.css | 0 .../custom-entries/mouse/valentines.css | 0 .../styles/custom-entries/other.css | 0 .../styles/custom-entries/popup.css | 0 .../styles/custom-entries/rank-up.css | 0 .../styles/custom-entries/social-gift.css | 0 .../styles/custom-entries/tournaments.css | 0 .../styles/date-hiding.css | 1 + .../{ => journal-styles}/styles/fullstop.css | 0 .../{ => journal-styles}/styles/general.css | 4 +- .../styles/progress-log.css | 1 - src/modules/better-journal/no-styles.css | 40 - src/modules/better-journal/settings/index.js | 12 +- 61 files changed, 475 insertions(+), 6016 deletions(-) create mode 100644 src/modules/better-journal/journal-gold-and-points/index.js rename src/modules/better-journal/{styles/gold-points.css => journal-gold-and-points/styles.css} (100%) create mode 100644 src/modules/better-journal/journal-icons-minimal/index.js create mode 100644 src/modules/better-journal/journal-icons/index.js delete mode 100644 src/modules/better-journal/journal-icons/styles.css create mode 100644 src/modules/better-journal/journal-item-colors/index.js rename src/modules/better-journal/{styles/link-colors.css => journal-item-colors/styles.css} (68%) create mode 100644 src/modules/better-journal/journal-replacements/index.js create mode 100644 src/modules/better-journal/journal-replacements/styles.css create mode 100644 src/modules/better-journal/journal-styles/index.js rename src/modules/better-journal/{ => journal-styles}/styles/backgrounds.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/aura.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/base/alchemist-cookbook.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/base/ssdb.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/catch/bonus.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/catch/failure.css (80%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/catch/lucky.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/catch/prize.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/charm/gilded.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/charm/rift-vacuum.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/charm/torch.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/charm/ultimate.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/charm/unstable.css (89%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/crafting.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/draw-winner.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/events.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/larry-gift.css (100%) create mode 100644 src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/brift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/bwrift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/folklore-forest.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/frift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/garden.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/halloween.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/iceberg.css (52%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/labyrinth.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/mousoleum.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/queso.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/toxic-spill.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/vrift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/location/wwrift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/maps.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/mouse/glazy.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/mouse/stuck-snowball.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/mouse/valentines.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/other.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/popup.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/rank-up.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/social-gift.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/custom-entries/tournaments.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/date-hiding.css (97%) rename src/modules/better-journal/{ => journal-styles}/styles/fullstop.css (100%) rename src/modules/better-journal/{ => journal-styles}/styles/general.css (99%) rename src/modules/better-journal/{ => journal-styles}/styles/progress-log.css (99%) delete mode 100644 src/modules/better-journal/no-styles.css diff --git a/src/modules/better-journal/index.js b/src/modules/better-journal/index.js index 61786a47..86db7538 100644 --- a/src/modules/better-journal/index.js +++ b/src/modules/better-journal/index.js @@ -1,393 +1,57 @@ import { - addStyles, - dbGet, - dbSet, doEvent, - getCurrentPage, getFlag, getSetting, onRequest, - sessionGet, - sessionSet, setMultipleTimeout } from '@utils'; +import journalGoldAndPoints from './journal-gold-and-points'; import journalHistory from './journal-history'; +import journalIcons from './journal-icons'; +import journalIconsMinimal from './journal-icons-minimal'; +import journalItemColors from './journal-item-colors'; import journalList from './journal-list'; -import settings from './settings'; - -import journalIconsMinimalStyles from './journal-icons-minimal/styles.css'; -import journalIconsStyles from './journal-icons/styles.css'; -import noStyles from './no-styles.css'; +import journalReplacements from './journal-replacements'; +import journalStyles from './journal-styles'; -import * as imported from './styles/**/*.css'; // eslint-disable-line import/no-unresolved -const styles = imported; +import settings from './settings'; -const saveEntries = async (callback) => { - if ('camp' !== getCurrentPage()) { +let isProcessing = false; +const processEntries = async () => { + if (isProcessing) { return; } - const entries = document.querySelectorAll('.journal .entry'); - - // reverse the entries so we can process them in order - const reversedEntries = [...entries].reverse(); - - let lastDate = ''; - reversedEntries.forEach(async (entry) => { - const entryId = Number.parseInt(entry.getAttribute('data-entry-id'), 10); - if (! entryId) { - return; - } - - const entryText = entry.querySelector('.journalbody .journaltext'); - if (! entryText) { - return; - } - - const original = await dbGet('journal', entryId); - - if (original && original.text) { - callback(original, entry, entryText); - return; - } - - const dateEl = entry.querySelector('.journaldate'); - - let date = dateEl ? dateEl.innerText : lastDate; - lastDate = date; - - date = date.split('-'); - - 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, - }; - - await dbSet('journal', journalData); - }); -}; - -/** - * For each element matching the selector, find and replace strings. - * - * @param {string} selector Element selector. - * @param {Array} strings Array of strings to replace. - */ -const modifyText = async (selector, strings) => { - const elements = document.querySelectorAll(selector); - elements.forEach(async (entry) => { - const element = entry.querySelector('.journalbody .journaltext'); - - strings.forEach(async (string) => { - if (! Array.isArray(string) || string.length !== 2) { - return; - } - - const oldText = element.innerHTML; - const newText = oldText.replace(string[0], string[1]); - if (oldText !== newText) { - element.innerHTML = newText; - } - }); - - doEvent('better-journal-update', { entry, text: element }); - }); -}; + isProcessing = true; -const wrapGoldAndPoints = () => { const entries = document.querySelectorAll('.journal .entry'); - if (! entries.length) { - return; + for (const entry of entries) { + doEvent('journal-entry', entry); } - entries.forEach((entry) => { - // if it has the pointsGold attribute, it's already been wrapped - if (entry.getAttribute('data-modified-points-gold')) { - return; - } - - entry.setAttribute('data-modified-points-gold', true); - - // Find the amount of points via a regex and wrap it in a span - const points = entry.innerHTML.match(/worth (.+?) points/i); - // also match the 'and X,XXX gold' part - const gold = entry.innerHTML.match(/points and (.+?) gold/i); + doEvent('journal-entries', entries); - if (points) { - entry.innerHTML = entry.innerHTML.replace(points[0], `worth ${points[1]} points`); - } - - if (gold) { - entry.innerHTML = entry.innerHTML.replace(gold[0], `points and ${gold[1]} gold`); - } - }); -}; - -const maybeKeepAsOriginal = (entry) => { - const keepOriginalMice = [ - // 'stuck_snowball', - ]; - - const keepOriginalClasses = new Set([ - 'lunar_lantern', - 'valentines_matchmaker', - 'vending_machine_purchase', - ]); - - const entryId = entry.getAttribute('data-entry-id'); - if (! entryId) { - return; - } - - const hasOriginal = entry.getAttribute('data-is-custom-entry'); - if (hasOriginal) { - return; - } - - const isMouse = entry.getAttribute('data-mouse-type'); - if (isMouse && keepOriginalMice.includes(isMouse)) { - const entryText = entry.querySelector('.journaltext'); - if (entryText) { - // save the original text in session storage so we can use it later - sessionSet(`mhui-custom-entry-${entryId}`, entryText.innerHTML); - entry.setAttribute('data-is-custom-entry', true); - } - } - - const classList = [...entry.classList]; - if (classList.some((c) => keepOriginalClasses.has(c))) { - const entryText = entry.querySelector('.journaltext'); - if (entryText) { - // save the original text in session storage so we can use it later - sessionSet(`mhui-custom-entry-${entryId}`, entryText.innerHTML); - entry.setAttribute('data-is-custom-entry', true); - } - } -}; - -const maybeRestoreOriginalEntry = (entry) => { - const entryId = entry.getAttribute('data-entry-id'); - const originalText = sessionGet(`mhui-custom-entry-${entryId}`); - - if (originalText) { - entry.querySelector('.journaltext').innerHTML = originalText; - } + isProcessing = false; }; /** - * Update text in journal entries. + * Initialize the module. */ -const updateJournalText = async () => { - // Save the original journal entries - await saveEntries((original, entry, entryText) => { - if (original.text && entryText.innerHTML !== original.text && entry.getAttribute('data-updated') !== 'true') { - return; - } - - entry.setAttribute('data-updated', true); - }); - - wrapGoldAndPoints(); - - const entries = document.querySelectorAll('.journal .entry'); - entries.forEach((entry) => { - maybeKeepAsOriginal(entry); - }); - - modifyText('.journal .entry', [ - // 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'], - ['
The mouse also dropped the following loot:', '==DROPREPLACE=='], - ['.
==DROPREPLACE==
', ' that dropped '], - ['
==DROPREPLACE==
', ' that dropped '], - ['I caught an', 'I caught a'], - ['I caught a', '

I caught a'], - ['found that I had caught a mouse! I', ''], - ['found that I had caught a mouse!

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
Additionally, the fiend pillaged', 'trap, and stealing'], - ['gold from me!', 'gold.'], - ['trap.

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', ''], - [':
', ' '], - [/✨️'], - ['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:
/i, 'an additional '], - - ['

', '

'], - ['

', '

'], - [/

• /g, ''], - [/(\d+?) x /gi, '

• $1 x '], - - [/

<\/p>/g, ''], - ['I can view other recipe', '

I can view other recipe'], - ]); - - const replacements = []; - - const sehWords = [ - 'chocoholic', - 'chocolate-crazed', - 'voracious', - 'gluttonous', - 'hypoglycemic', - 'ravenous', - 'greedy', - 'hungry', - 'hyperactive', - 'sugar-induced', - ]; - - sehWords.forEach((word) => { - replacements.push([`A ${word}`, 'I caught a bonus']); - }); - - modifyText('.journal .entry.custom', replacements); - - // Update log - const log = document.querySelector('.journal .content .log_summary'); - if (log) { - const link = log.querySelector('td a'); - if (link) { - 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); - } +const init = async () => { + if (getSetting('better-journal.styles', true)) { + journalStyles(); } - const restoreEntries = document.querySelectorAll('.journal .entry[data-is-custom-entry]'); - restoreEntries.forEach((entry) => { - maybeRestoreOriginalEntry(entry); - }); -}; - -const updateMouseImageLinks = () => { - const mouseEntries = document.querySelectorAll('.journal .entry[data-mouse-type]'); - mouseEntries.forEach((entry) => { - const mouseType = entry.getAttribute('data-mouse-type'); - const mouseImageLink = entry.querySelector('.journalimage a[onclick]'); - - if (! (mouseType && mouseImageLink)) { - return; - } - - mouseImageLink.setAttribute('onclick', `hg.views.MouseView.show('${mouseType}'); return false;`); - }); -}; + journalHistory(getFlag('journal-history')); -const kingsPromoTextChange = () => { - const kingsPromo = document.querySelector('.shopsPage-kingsCalibratorPromo'); - if (kingsPromo) { - kingsPromo.innerHTML = kingsPromo.innerHTML.replace('and even', 'and'); + if (getSetting('better-journal.icons')) { + journalIconsMinimal(); + journalIcons(); } -}; - -const updateEls = () => { - updateJournalText(); - updateMouseImageLinks(); -}; -const journalReplacements = () => { - updateEls(); - onRequest('*', () => { - setMultipleTimeout(updateEls, [0, 100, 500]); - }); -}; - -/** - * Initialize the module. - */ -const init = async () => { - addStyles(getSetting('better-journal.styles', true) ? styles : noStyles, 'better-journal-styles'); - - if (getSetting('better-journal.icons')) { - addStyles([journalIconsMinimalStyles, journalIconsStyles], 'better-journal-icons'); - } else if (getSetting('better-journal.icons-minimal')) { - addStyles(journalIconsMinimalStyles, 'better-journal-icons'); + if (getSetting('better-journal.icons-minimal')) { + journalIconsMinimal(); } if (getSetting('better-journal.replacements', true)) { @@ -398,11 +62,18 @@ const init = async () => { journalList(); } - if (getFlag('journal-history')) { - journalHistory(); + if (getSetting('better-journal.gold-and-points', true)) { + journalGoldAndPoints(); + } + + if (getSetting('better-journal.item-colors', true)) { + journalItemColors(); } - onRequest('users/dailyreward.php', kingsPromoTextChange); + processEntries(); + onRequest('*', () => { + setMultipleTimeout(processEntries, [0, 100, 500]); + }); }; export default { diff --git a/src/modules/better-journal/journal-gold-and-points/index.js b/src/modules/better-journal/journal-gold-and-points/index.js new file mode 100644 index 00000000..339ee665 --- /dev/null +++ b/src/modules/better-journal/journal-gold-and-points/index.js @@ -0,0 +1,31 @@ +import { addEvent, addStyles } from '@utils'; + +import styles from './styles.css'; + +const wrapGoldAndPoints = (entry) => { + // if it has the pointsGold attribute, it's already been wrapped + if (entry.getAttribute('data-modified-points-gold')) { + return; + } + + entry.setAttribute('data-modified-points-gold', true); + + // Find the amount of points via a regex and wrap it in a span + const points = entry.innerHTML.match(/worth (.+?) points/i); + // also match the 'and X,XXX gold' part + const gold = entry.innerHTML.match(/points and (.+?) gold/i); + + if (points) { + entry.innerHTML = entry.innerHTML.replace(points[0], `worth ${points[1]} points`); + } + + if (gold) { + entry.innerHTML = entry.innerHTML.replace(gold[0], `points and ${gold[1]} gold`); + } +}; + +export default async () => { + addStyles(styles, 'better-journal-gold-and-points'); + + addEvent('journal-entry', wrapGoldAndPoints, { weight: 2000, id: 'better-journal-gold-and-points' }); +}; diff --git a/src/modules/better-journal/styles/gold-points.css b/src/modules/better-journal/journal-gold-and-points/styles.css similarity index 100% rename from src/modules/better-journal/styles/gold-points.css rename to src/modules/better-journal/journal-gold-and-points/styles.css diff --git a/src/modules/better-journal/journal-history/index.js b/src/modules/better-journal/journal-history/index.js index eb5135ce..e91958bd 100644 --- a/src/modules/better-journal/journal-history/index.js +++ b/src/modules/better-journal/journal-history/index.js @@ -1,4 +1,11 @@ -import { dbGetAll, onNavigation, onRequest } from '@utils'; +import { + addEvent, + dbGet, + dbGetAll, + dbSet, + onNavigation, + onRequest +} from '@utils'; // import tempMiceImages from '@data/temp-mice-images.json'; @@ -47,8 +54,6 @@ const doPageStuff = (page, event) => { const journalEntriesForPage = journalEntries.slice((page - 1) * 12, page * 12); journalEntryContainer.innerHTML = makeEntriesMarkup(journalEntriesForPage); - - journalHistory(); }; const getPager = () => { @@ -115,10 +120,49 @@ const main = async () => { } }; +let lastDate = ''; +const saveToDatabase = async (entry) => { + const entryId = Number.parseInt(entry.getAttribute('data-entry-id'), 10); + if (! entryId) { + return; + } + + const entryText = entry.querySelector('.journalbody .journaltext'); + if (! entryText) { + return; + } + + const original = await dbGet('journal', entryId); + + if (original && original.text) { + return; + } + + const dateEl = entry.querySelector('.journaldate'); + + let date = dateEl ? dateEl.innerText : lastDate; + lastDate = date; + + date = date.split('-'); + + 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, + }; + + await dbSet('journal', journalData); +}; + let lastResponsePage; const onJournalRequest = (data) => { const reportedCurrentPage = data.journal_page.pager.current; + console.log('onJournalRequest', 'currentPage', currentPage, 'reportedCurrentPage', reportedCurrentPage, 'lastResponsePage', lastResponsePage); + if (lastResponsePage === reportedCurrentPage) { return; } @@ -129,9 +173,11 @@ const onJournalRequest = (data) => { main(); }; -const journalHistory = async () => { - onNavigation(main, { page: 'camp' }); - onRequest('pages/journal.php', onJournalRequest); -}; +export default async (enabled) => { + if (enabled) { + onNavigation(main, { page: 'camp' }); + onRequest('pages/journal.php', onJournalRequest); + } -export default journalHistory; + addEvent('journal-entry', saveToDatabase, { weight: 1, id: 'better-journal-history' }); +}; diff --git a/src/modules/better-journal/journal-icons-minimal/index.js b/src/modules/better-journal/journal-icons-minimal/index.js new file mode 100644 index 00000000..e33111c4 --- /dev/null +++ b/src/modules/better-journal/journal-icons-minimal/index.js @@ -0,0 +1,7 @@ +import { addStyles } from '@utils'; + +import styles from './styles.css'; + +export default async () => { + addStyles(styles, 'better-journal-icons-minimal'); +}; diff --git a/src/modules/better-journal/journal-icons-minimal/styles.css b/src/modules/better-journal/journal-icons-minimal/styles.css index 63bc002a..51558d11 100644 --- a/src/modules/better-journal/journal-icons-minimal/styles.css +++ b/src/modules/better-journal/journal-icons-minimal/styles.css @@ -56,3 +56,12 @@ top: -2px; background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/36d3d62f27e2b76944591f86229bc2f0.png?cv=2); } + +/* Don't show the icon in unstable charm trigger */ +.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; +} diff --git a/src/modules/better-journal/journal-icons/index.js b/src/modules/better-journal/journal-icons/index.js new file mode 100644 index 00000000..381cf574 --- /dev/null +++ b/src/modules/better-journal/journal-icons/index.js @@ -0,0 +1,19 @@ +import { addStyles } from '@utils'; + +import minimalStyles from '../journal-icons-minimal/styles.css'; + +export default async () => { + 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://i.mouse.rip/css/journal-icons.css?v=1.0.1'; + + document.head.append(style); + + addStyles(minimalStyles, 'better-journal-icons'); +}; diff --git a/src/modules/better-journal/journal-icons/styles.css b/src/modules/better-journal/journal-icons/styles.css deleted file mode 100644 index 50de7465..00000000 --- a/src/modules/better-journal/journal-icons/styles.css +++ /dev/null @@ -1,5587 +0,0 @@ -/* stylelint-disable prettier/prettier */ -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_1"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_2"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_3"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_4"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_5"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_6"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_7"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_8"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_9"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_spooky_shuffle_admission_ticket_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_throwable_snowball_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2017_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2018_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2019_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_spring_hunt_egg_10"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2021_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2022_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2023_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2024_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=abominable_snow_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=absolute_acolyte_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_relic_125000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=admirals_ship_theme_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aether_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aged_grape_juice_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=agriculture_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_cloud_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_deluxe_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_cloud_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_deluxe_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_rocket_fuel_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_cloud_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_deluxe_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amber_queso_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ambush_trap_blueprints_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amplifier_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anchor_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_dive_crate_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_frayed_blueprint_piece_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_jade_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_mangled_blueprint_piece_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_staff_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_ripped_blueprint_piece_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_scholar_scroll_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_spear_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_string_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=animate_snow_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anti_skele_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=antique_frame_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=arcanevine_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=architeuthulhu_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=artillery_strike_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ascended_elder_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=assassin_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=athlete_torch_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=attraction_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=back_cover_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=baitkeep_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=balack_the_banished_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bard_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barricade_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bazaar_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bbb_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_bobbins_of_becoming_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_break_room_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_golden_ticket_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_mixing_room_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_pumping_room_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_quality_assurance_room_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_paradox_patterns_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_pausing_pins_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_fabric_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_thread_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_pearl_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_widow_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bland_queso_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blood_stone_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_pepper_seed_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_winter_hunt_gift"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bolt_of_cloth_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_up_rage_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bountiful_beanstalk_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_bit_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_string_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brined_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_gift_basket_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_I_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_II_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_III_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brown_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bubbling_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burglar_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cackle_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cactus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calcified_rift_mist_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calming_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=candy_apple_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=canister_ring_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=captain_croissant_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_instant_finish_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_potion_ingredient_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_1_ingredient_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_2_ingredient_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_3_ingredient_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_4_ingredient_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_crystal_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_diamond_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_nightshade_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cavern_fungus_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=century_of_luck_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chamber_cleaver_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=charcoal_yule_log_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_powder_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_sprite_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_bit_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrono_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chummy_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clean_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cleverness_clam_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clockwork_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloud_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coal_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_milk_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_timber_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coggy_colby_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cold_fusion_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_energy_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_1250_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_750_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compass_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compressed_cinnamon_coal_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=condensed_creativity_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=contaminated_crumb_cake_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cook_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=copper_bead_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coral_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_bark_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corky_the_collector_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_trident_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupted_radioactive_blue_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crate_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=creamy_gnarled_sap_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crescent_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crop_coin_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_collector_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_jewel_collective"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crude_pollutinum_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crumbly_rift_salts_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crunchy_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_behemoth_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_crucible_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_library_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystallized_fossil_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cupcake_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_gold_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_librarian_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_coral_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_oculus_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chocolate_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_dust_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=day_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decoration_voucher_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decrepit_tentacle_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_freeze_base_blueprints_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_mouse_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_sea_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_thought_25000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=delicious_stone_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=derr_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_horseshoe_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_nomad_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewdrop_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewthief_petal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_boost_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_drillbot_parts_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dinglehopper_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_student_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=doobers_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=draft_derby_curd_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_ember"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_scale_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragons_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonshard_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreaded_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreamfluff_herbs_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drheller_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drill_charge_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drilling_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_bird_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_jetpack_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=duskshade_petal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dust_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eclipse_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_basket_ancient_box_trap_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_charge_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_charge_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=elub_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_root_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_stone_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_codex_page_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_empress_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_floating_loot_cache_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_page_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=encrusted_metal_of_time_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enerchi_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=engraved_solid_stone_slab_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enigmatic_core_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enlarged_rift_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_orb_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=erupting_rift_core_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_a_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_b_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_c_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_d_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_e_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_f_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_guardian_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_of_destruction_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_prism_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_cannonball_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_librarian_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_rope_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=experimental_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_rich_sky_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_spooky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_sweet_cupcake_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_ancient_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_attraction_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_gold_bonus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_party_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_regal_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spooky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spore_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fabled_fertilizer_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=faceted_sugar_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fall_key_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_anchor_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_shorts_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_wrapping_paper_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_plain_wrapping_paper_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_spirit_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fire_salt_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=firework_cookie_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fireworks_festive_decoration_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flame_march_general_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flameshard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flaming_spice_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawed_orb_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawless_orb_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_cloud_gem_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_sky_ore_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_trap_upgrade_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flour_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_warden_stone_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=folklore_companion_vol_1_3_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fools_gold_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_blue_action_figure_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_green_action_figure_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_pink_action_figure_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_red_action_figure_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_yellow_action_figure_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=forgotten_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fort_rox_tower_mana_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=freshness_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=front_cover_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frost_warden_stone_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frosty_metal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frozen_sealed_bottle_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ful_mina_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_charged_tooth_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_tooth_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fungal_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=furoma_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=galleon_gouda_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gargantua_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gate_guardian_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_cheese_2"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_elixir_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_2"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_3"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_4"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_5"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_6"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_7"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_8"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_boost_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=geyser_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ghastly_galleon_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=giant_golden_key_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gift_wrapped_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_leaf_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glass_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_gruyere_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_oil_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_tree_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawbel_prize_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnian_express_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_bonus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_leaf_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_10000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1500_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_2000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_250_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_3000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_4000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_500_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_5000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_50000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_750_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_egg_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_feather_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_harp_string_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_scarf_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_magical_hat_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_head_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_limb_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_torso_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_upgrade_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gooey_gruyere_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=graveblossom_petal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_brie_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_radioactive_blue_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_wicked_gnarly_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=green_winter_hunt_gift"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grey_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grizzled_silth_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gumbo_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_arcanum_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heating_oil_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heatproof_mage_cloth_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heavy_floating_loot_cache_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=high_charge_egg_convertible_2014"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hinge_of_eternity_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hot_spice_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=howlite_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_10000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_5000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=huntington_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hydra_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ice_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iceberg_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_generals_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=incinerated_garbage_bath_pattern_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inert_dowsing_rod_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_havarti_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_pepper_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=infused_plate_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ingenuity_grub_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inspiration_ink_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ionized_salt_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iron_pellet_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jingle_bell_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jod_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kalor_ignis_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=keepers_candle_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=king_desert_letter_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_credit_loot_crate_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_prize_key_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_reserve_bubbleh_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_1000_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_500_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_750_bonus_loot"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=laboratory_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_lantern_fuel"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_clues_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_doors_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_4_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_5_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lagoon_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=larrys_sandwich_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lavish_lapis_bean_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=let_it_snow_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lich_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=light_floating_loot_cache_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limelight_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limestone_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_lens_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_oxygen_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_salt_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2018_lantern_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2019_lantern_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_2018_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=long_range_cannonball_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=loot_cache_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lost_chest_piece_fifth_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=low_charge_egg_convertible_2014"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_cap_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_valentine_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2017_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2018_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunaria_petal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_intel_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_monstrobot_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_upgraded_monstrobot_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mage_weaver_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_bean_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_cork_dust_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_essence_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_seed_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_radioactive_blue_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_string_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magmatic_golem_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marble_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marshmallow_monterey_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_belt_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_binding_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_claw_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_fang_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_of_the_dojo_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=masters_seal_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_charge_egg_convertible_2014"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_spice_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=melee_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteoric_core_fragments_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteorite_piece_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=microchip_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mighty_mole_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mild_spice_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mineral_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mini_cauldron_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minotaur_base_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minuscule_photo_album_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mist_canister_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=molten_glass_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monolith_base"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_of_the_meteor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monstrous_midge_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moon_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mousoleum_wall_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_fealty_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_scholar_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_tech_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=muridae_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutant_mongrel_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutated_behemoth_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_box_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_mythical_scroll_case_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_crystal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_king_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_page_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythical_mulch_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythweaver_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nachore_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=naturalist_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nerg_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=new_year_yule_log_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nibbler_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=night_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_boost_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noble_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nori_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=not_so_secret_bunny_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noxious_school_of_sharks_pattern_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nuclear_garlic_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nugget_of_nougat_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_gauntlet_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_rift_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oasis_bead_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_mallet_blueprints_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_stone_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=optic_receiver_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=orange_winter_hunt_gift_box_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ornament_cookie_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=over_9000_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=overflowing_pump_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_baron_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_burst_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_seed_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=parable_papyrus_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=passing_parcel_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pecan_pecorino_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=peggy_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=perfect_orb"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pinch_of_annoyance_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_crew_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plain_shorts_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plate_of_fealty_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plumepearl_herbs_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plush_terrible_twos_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_base_blueprints_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_chrome_monstrobot_pattern_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_parmesan_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_2_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_3_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pond_penny_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=powercore_hammer_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=predatory_processor_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pressure_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=prize_credit_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=promotion_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puppet_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=purple_winter_hunt_gift_box_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puzzlebox_infinite_labyrinth_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pygmy_swarm_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_large_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_medium_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_small_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_nachore_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_pump_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_spice_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_theme_scrap_iii_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_wild_tonic_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=quesodillo_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_sludge_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_warden_stone_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rainbow_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raisins_of_wrath"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rare_map_dust_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_ancient_jade_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_rift_crystal_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=real_lich_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=realm_ripper_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=recycled_essence_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_button_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_drop_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pepper_seed_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pocket_envelope_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_winter_hunt_gift"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=regal_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=repear_perch_blueprint_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=restitched_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rewind_raclette_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rhino_horn_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=richest_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2020_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2021_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2022_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2023_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2024_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_bronze_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_gold_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_silver_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_anti_skele_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_battery_piece_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_belt_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_blossom_branch_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_belt_token_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_claw_token_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_fang_token_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cherries_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_chips"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_claw_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_clockwork_cog_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dojo_master_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dust_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_shard_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_furoma_energy_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_a_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_b_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gauntlet_fuel_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gold_bonus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_sand_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_mist_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_onyx_stone_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_quantum_quartz_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_rumble_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_scramble_portals_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_spooky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_sprocket_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_tarnished_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_temporal_distortion_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_torn_roots_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_vacuum_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_valour_supply_kit_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_venom_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftgrass_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftiago_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftifier_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riptide_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rockforth_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rope_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=royal_ruby_bean_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rrs_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rubber_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rumble_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rune_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_string_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sacred_scroll_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sad_pamphlet_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=salty_sea_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sandblasted_metal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sarcophamouse_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=savoury_vegetables_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scarab_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_egg_convertible"], -.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=scrap_metal_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scum_scrubber_trap_blueprints_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seashell_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seasonal_garden_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sextant_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shade_eclipse_resource_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadow_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadowvine_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shamrock_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sharpshooter_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_chest_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shelder_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shell_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sheriff_badge_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shielding_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ship_blueprints_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shredded_furoma_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shufflers_kit_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silth_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silver_bolt_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=simple_orb_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_explorer_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_gem_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_ore_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_cheese_curd_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_seal_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_scrambler_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=slushy_shoreline_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snow_golem_theme_scrap_1_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowflake_cookie_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_oasis_pattern_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_phantasmic_pattern_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_suds_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sock_ghost_plush_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soggy_journal_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sphynx_crystal_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=splintered_wood_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spooky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_easter_basket_acroynm_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_ember_prison_core_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_focused_laser_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_infinite_labyrinth_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_multi_crystal_laser_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_school_of_sharks_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_shark_skin"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_key_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_toy_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sprinkley_sweet_cupcake_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spud_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_cheese_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_super_brie_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=staling_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stealthy_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=steam_nine_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sticky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=storm_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=string_undead_emmental_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sugar_rush_plushie_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=summer_key_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_dive_crate_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_treasure_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_ancient_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_attraction_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brain_trinket"], -.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=super_cactus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_gold_bonus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_party_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_radioactive_blue_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_regal_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_rift_vacuum_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_staling_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_string_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tactical_grip_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tarnished_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tasty_spider_mould_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_celestial_skin_pattern_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_mousoleum_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_cheese_mould_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_power_core_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_king_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_page_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=teddy_bear_message_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=telescope_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_fusion_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_plate_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_rune_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=terre_ricotta_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thief_floor_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thistle_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thorned_vine_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thunderlord_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_five_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_four_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiki_fuel_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=timeless_mystic_gem_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tin_scrap_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiny_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toboggan_cookie_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_belt_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_claw_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_fang_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tomb_stone_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=total_eclipse_resource_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=totally_scary_cape_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tournament_token_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_elixir_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_secret_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_sigil_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_siphon_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_umbra_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_brie_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_spill_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_super_brie_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toy_cookie_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_black_powder_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_coal_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_magmatic_crystal_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_mouse_repellent_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_station_fuel_nugget_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_supply_crate_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=treasure_clue_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tritus_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=twisted_lilly_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_ancient_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_attraction_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_gold_bonus_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_party_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_snowball_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spooky_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spore_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_emmental_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_mynorca_pattern_scrap_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=underwater_predator_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_broom_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_crystal_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_ember_gadget_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_zokor_crystal_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_restraining_order_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_rift_tower_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vanilla_bean_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vending_machine_token_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vengeful_vanilla_stilton_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=war_scrap_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_fog_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_frost_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_rain_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_wind_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warmonger_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warpath_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=washboard_base_blueprints_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wax_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=weak_power_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wealth_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=well_sealed_canister_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_rift_torn_page"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_cheddar_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_cheese"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_trinket"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_thorns_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=widows_web_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wild_tonic_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_cheese_potion"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_warden_stone_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_hunt_2022_boss_loot_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_key_shard_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wire_spool_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_drop_stat_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_pepper_seed_craft_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_fealty_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_scholar_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_tech_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_treasury_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwang_sock_collectible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwangs_scarf"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zurreal_egg_convertible"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zz_library_key_map_piece"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_draconic_book"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ectoplasm"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_fine_wood_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_gnawniaresearch_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_lich_jewel"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_marchingflameresearch_crafting_item"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_mesh_netting"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ripper_nail"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_stonework_runes"], -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzt_egg_convertible"] { - position: relative; - padding-left: 18px; -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_1"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_2"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_3"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_4"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_5"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_6"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_7"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_8"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_9"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_spooky_shuffle_admission_ticket_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_throwable_snowball_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2017_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2018_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2019_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_spring_hunt_egg_10"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2021_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2022_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2023_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2024_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=abominable_snow_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=absolute_acolyte_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_relic_125000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=admirals_ship_theme_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aether_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aged_grape_juice_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=agriculture_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_cloud_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_deluxe_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_cloud_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_deluxe_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_rocket_fuel_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_cloud_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_deluxe_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amber_queso_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ambush_trap_blueprints_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amplifier_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anchor_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_dive_crate_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_frayed_blueprint_piece_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_jade_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_mangled_blueprint_piece_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_staff_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_ripped_blueprint_piece_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_scholar_scroll_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_spear_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_string_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=animate_snow_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anti_skele_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=antique_frame_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=arcanevine_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=architeuthulhu_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=artillery_strike_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ascended_elder_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=assassin_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=athlete_torch_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=attraction_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=back_cover_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=baitkeep_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=balack_the_banished_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bard_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barricade_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bazaar_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bbb_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_bobbins_of_becoming_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_break_room_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_golden_ticket_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_mixing_room_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_pumping_room_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_quality_assurance_room_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_paradox_patterns_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_pausing_pins_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_fabric_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_thread_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_pearl_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_widow_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bland_queso_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blood_stone_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_pepper_seed_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_winter_hunt_gift"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bolt_of_cloth_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_up_rage_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bountiful_beanstalk_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_bit_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_string_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brined_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_gift_basket_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_I_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_II_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_III_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brown_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bubbling_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burglar_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_1_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cackle_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cactus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calcified_rift_mist_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calming_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=candy_apple_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=canister_ring_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=captain_croissant_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_instant_finish_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_potion_ingredient_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_1_ingredient_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_2_ingredient_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_3_ingredient_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_4_ingredient_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_crystal_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_diamond_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_nightshade_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cavern_fungus_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=century_of_luck_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chamber_cleaver_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=charcoal_yule_log_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_powder_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_sprite_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_bit_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrono_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chummy_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clean_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cleverness_clam_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clockwork_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloud_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coal_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_milk_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_timber_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coggy_colby_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cold_fusion_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_energy_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_1250_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_750_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compass_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compressed_cinnamon_coal_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=condensed_creativity_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=contaminated_crumb_cake_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cook_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=copper_bead_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coral_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_bark_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corky_the_collector_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_trident_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupted_radioactive_blue_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crate_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=creamy_gnarled_sap_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crescent_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crop_coin_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_collector_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_jewel_collective"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crude_pollutinum_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crumbly_rift_salts_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crunchy_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_behemoth_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_crucible_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_library_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystallized_fossil_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cupcake_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_gold_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_librarian_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_coral_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_oculus_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chocolate_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_dust_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=day_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decoration_voucher_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decrepit_tentacle_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_freeze_base_blueprints_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_mouse_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_sea_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_thought_25000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=delicious_stone_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=derr_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_horseshoe_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_nomad_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewdrop_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewthief_petal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_boost_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_drillbot_parts_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dinglehopper_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_student_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=doobers_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=draft_derby_curd_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_ember"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_scale_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragons_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonshard_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreaded_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreamfluff_herbs_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drheller_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drill_charge_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drilling_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_bird_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_jetpack_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=duskshade_petal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dust_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eclipse_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_basket_ancient_box_trap_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_charge_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_charge_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=elub_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_root_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_stone_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_codex_page_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_empress_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_floating_loot_cache_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_page_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=encrusted_metal_of_time_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enerchi_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=engraved_solid_stone_slab_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enigmatic_core_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enlarged_rift_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_orb_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=erupting_rift_core_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_a_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_b_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_c_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_d_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_e_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_f_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_guardian_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_of_destruction_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_prism_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_cannonball_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_librarian_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_rope_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=experimental_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_rich_sky_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_spooky_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_sweet_cupcake_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_ancient_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_attraction_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_gold_bonus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_party_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_regal_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spooky_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spore_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fabled_fertilizer_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=faceted_sugar_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fall_key_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_anchor_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_shorts_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_wrapping_paper_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_plain_wrapping_paper_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_spirit_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fire_salt_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=firework_cookie_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fireworks_festive_decoration_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flame_march_general_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flameshard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flaming_spice_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawed_orb_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawless_orb_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_cloud_gem_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_sky_ore_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_trap_upgrade_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flour_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_warden_stone_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=folklore_companion_vol_1_3_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fools_gold_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_blue_action_figure_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_green_action_figure_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_pink_action_figure_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_red_action_figure_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_yellow_action_figure_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=forgotten_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fort_rox_tower_mana_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=freshness_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=front_cover_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frost_warden_stone_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frosty_metal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frozen_sealed_bottle_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ful_mina_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_charged_tooth_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_tooth_crafting_item"]::before, -.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=fungal_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=furoma_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=galleon_gouda_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gargantua_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gate_guardian_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_cheese_2"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_elixir_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_2"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_3"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_4"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_5"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_6"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_7"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_8"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_boost_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=geyser_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_1_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ghastly_galleon_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=giant_golden_key_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gift_wrapped_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_leaf_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glass_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_gruyere_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_oil_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_tree_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawbel_prize_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnian_express_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_bonus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_leaf_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_10000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1500_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_2000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_250_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_3000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_4000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_500_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_5000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_50000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_750_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_egg_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_feather_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_harp_string_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_scarf_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_magical_hat_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_head_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_limb_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_torso_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_upgrade_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gooey_gruyere_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=graveblossom_petal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_brie_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_radioactive_blue_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_wicked_gnarly_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=green_winter_hunt_gift"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grey_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grizzled_silth_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gumbo_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_arcanum_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heating_oil_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heatproof_mage_cloth_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heavy_floating_loot_cache_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=high_charge_egg_convertible_2014"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hinge_of_eternity_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hot_spice_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=howlite_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_10000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_5000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=huntington_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hydra_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ice_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iceberg_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_generals_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=incinerated_garbage_bath_pattern_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inert_dowsing_rod_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_havarti_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_pepper_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=infused_plate_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ingenuity_grub_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inspiration_ink_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ionized_salt_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iron_pellet_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jingle_bell_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jod_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kalor_ignis_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=keepers_candle_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=king_desert_letter_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_credit_loot_crate_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_prize_key_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_reserve_bubbleh_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_1000_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_500_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_750_bonus_loot"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=laboratory_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_lantern_fuel"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_clues_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_doors_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_1_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_4_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_5_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lagoon_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=larrys_sandwich_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lavish_lapis_bean_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=let_it_snow_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lich_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=light_floating_loot_cache_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limelight_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limestone_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_lens_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_oxygen_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_1_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_salt_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2018_lantern_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2019_lantern_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_2018_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=long_range_cannonball_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=loot_cache_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lost_chest_piece_fifth_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=low_charge_egg_convertible_2014"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_cap_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_valentine_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2017_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2018_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunaria_petal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_intel_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_monstrobot_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_upgraded_monstrobot_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mage_weaver_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_bean_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_cork_dust_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_essence_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_seed_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_radioactive_blue_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_string_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magmatic_golem_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marble_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marshmallow_monterey_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_belt_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_binding_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_claw_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_fang_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_of_the_dojo_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=masters_seal_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_charge_egg_convertible_2014"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_spice_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=melee_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteoric_core_fragments_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteorite_piece_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=microchip_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mighty_mole_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mild_spice_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mineral_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mini_cauldron_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minotaur_base_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minuscule_photo_album_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mist_canister_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=molten_glass_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monolith_base"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_of_the_meteor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monstrous_midge_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moon_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mousoleum_wall_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_fealty_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_scholar_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_tech_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=muridae_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutant_mongrel_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutated_behemoth_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_box_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_mythical_scroll_case_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_crystal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_king_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_page_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythical_mulch_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythweaver_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nachore_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=naturalist_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nerg_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=new_year_yule_log_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nibbler_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=night_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_boost_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noble_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nori_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=not_so_secret_bunny_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noxious_school_of_sharks_pattern_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nuclear_garlic_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nugget_of_nougat_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_gauntlet_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_rift_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oasis_bead_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_mallet_blueprints_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_stone_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=optic_receiver_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=orange_winter_hunt_gift_box_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ornament_cookie_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=over_9000_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=overflowing_pump_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_baron_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_burst_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_seed_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=parable_papyrus_stat_item"]::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=passing_parcel_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pecan_pecorino_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=peggy_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=perfect_orb"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pinch_of_annoyance_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_crew_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plain_shorts_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plate_of_fealty_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plumepearl_herbs_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plush_terrible_twos_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_base_blueprints_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_chrome_monstrobot_pattern_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_parmesan_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_1_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_2_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_3_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pond_penny_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=powercore_hammer_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=predatory_processor_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pressure_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=prize_credit_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=promotion_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puppet_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=purple_winter_hunt_gift_box_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puzzlebox_infinite_labyrinth_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pygmy_swarm_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_large_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_medium_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_small_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_nachore_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_pump_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_spice_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_theme_scrap_iii_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_wild_tonic_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=quesodillo_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_sludge_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_warden_stone_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rainbow_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raisins_of_wrath"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rare_map_dust_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_ancient_jade_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_rift_crystal_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=real_lich_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=realm_ripper_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=recycled_essence_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_button_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_drop_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pepper_seed_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pocket_envelope_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_winter_hunt_gift"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=regal_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=repear_perch_blueprint_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=restitched_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rewind_raclette_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rhino_horn_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=richest_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2020_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2021_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2022_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2023_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2024_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_bronze_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_gold_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_silver_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_anti_skele_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_battery_piece_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_belt_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_blossom_branch_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_belt_token_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_claw_token_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_fang_token_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cherries_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_chips"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_claw_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_clockwork_cog_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dojo_master_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dust_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_shard_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_furoma_energy_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_a_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_b_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gauntlet_fuel_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gold_bonus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_sand_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_mist_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_onyx_stone_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_quantum_quartz_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_rumble_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_scramble_portals_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_spooky_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_sprocket_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_tarnished_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_temporal_distortion_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_torn_roots_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_vacuum_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_valour_supply_kit_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_venom_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftgrass_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftiago_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftifier_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riptide_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rockforth_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rope_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=royal_ruby_bean_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rrs_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rubber_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rumble_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rune_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_string_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sacred_scroll_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sad_pamphlet_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=salty_sea_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sandblasted_metal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sarcophamouse_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=savoury_vegetables_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scarab_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_egg_convertible"]::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=scrap_metal_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scum_scrubber_trap_blueprints_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seashell_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seasonal_garden_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sextant_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shade_eclipse_resource_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadow_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadowvine_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shamrock_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sharpshooter_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_chest_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shelder_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shell_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sheriff_badge_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shielding_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ship_blueprints_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shredded_furoma_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shufflers_kit_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silth_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silver_bolt_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=simple_orb_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_explorer_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_gem_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_ore_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_cheese_curd_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_seal_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_scrambler_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=slushy_shoreline_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snow_golem_theme_scrap_1_crafting_item"]::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=snowflake_cookie_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_oasis_pattern_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_phantasmic_pattern_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_suds_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sock_ghost_plush_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soggy_journal_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sphynx_crystal_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=splintered_wood_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spooky_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_easter_basket_acroynm_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_ember_prison_core_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_focused_laser_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_infinite_labyrinth_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_multi_crystal_laser_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_school_of_sharks_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_shark_skin"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_key_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_toy_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sprinkley_sweet_cupcake_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spud_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_cheese_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_super_brie_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=staling_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stealthy_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=steam_nine_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sticky_trinket"]::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=string_undead_emmental_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sugar_rush_plushie_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=summer_key_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_dive_crate_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_treasure_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_ancient_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_attraction_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brain_trinket"]::before, -.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=super_cactus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_gold_bonus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_party_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_radioactive_blue_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_regal_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_rift_vacuum_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_staling_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_string_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tactical_grip_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tarnished_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tasty_spider_mould_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_celestial_skin_pattern_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_mousoleum_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_cheese_mould_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_power_core_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_king_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_page_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=teddy_bear_message_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=telescope_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_fusion_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_plate_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_rune_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=terre_ricotta_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thief_floor_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thistle_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thorned_vine_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thunderlord_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_five_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_four_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiki_fuel_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=timeless_mystic_gem_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tin_scrap_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiny_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toboggan_cookie_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_belt_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_claw_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_fang_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tomb_stone_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=total_eclipse_resource_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=totally_scary_cape_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tournament_token_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_elixir_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_secret_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_sigil_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_siphon_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_umbra_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_brie_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_spill_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_super_brie_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toy_cookie_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_black_powder_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_coal_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_magmatic_crystal_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_mouse_repellent_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_station_fuel_nugget_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_supply_crate_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=treasure_clue_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tritus_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=twisted_lilly_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_ancient_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_attraction_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_gold_bonus_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_party_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_snowball_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spooky_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spore_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_emmental_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_mynorca_pattern_scrap_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=underwater_predator_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_broom_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_crystal_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_ember_gadget_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_zokor_crystal_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_restraining_order_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_rift_tower_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vanilla_bean_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vending_machine_token_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vengeful_vanilla_stilton_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=war_scrap_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_fog_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_frost_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_rain_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_wind_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warmonger_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warpath_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=washboard_base_blueprints_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wax_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=weak_power_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wealth_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=well_sealed_canister_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_rift_torn_page"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_cheddar_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_cheese"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_trinket"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_thorns_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=widows_web_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wild_tonic_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_cheese_potion"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_warden_stone_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_hunt_2022_boss_loot_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_key_shard_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wire_spool_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_drop_stat_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_pepper_seed_craft_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_fealty_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_scholar_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_tech_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_treasury_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwang_sock_collectible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwangs_scarf"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zurreal_egg_convertible"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zz_library_key_map_piece"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_draconic_book"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ectoplasm"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_fine_wood_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_gnawniaresearch_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_lich_jewel"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_marchingflameresearch_crafting_item"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_mesh_netting"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ripper_nail"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_stonework_runes"]::before, -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzt_egg_convertible"]::before { - position: absolute; - top: -2px; - left: 0; - display: inline-block; - width: 17px; - height: 17px; - content: ""; - background-repeat: no-repeat; - background-size: contain; -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_1"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/94b504f2c1803f59eb1caafc47e4d4c7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_2"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f210235ec9b60ff424a0b395ac1da7d2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_3"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1c5e49e4092294845a18c222f9c04a1e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_4"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1c7a4eae0bc38dd3cd428eb85675c295.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_5"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f876911a544a8a3712dcf4931cc3d385.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_6"]::before { - background-image: url(https://i.mouse.rip/upscaled/ff2b4ce639a29da880890ecafa9e7c0f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_7"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/81e025bd640c022c7fa9c7bb15c5bd9d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_8"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9ee511e70c8d582b3d917525ebd34a53.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2011_spring_hunt_egg_9"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/fe976f4802f1645e12a714457d7e7024.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_spooky_shuffle_admission_ticket_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7b1178ecdb4c6048ed7bb5b6de7f55d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2014_throwable_snowball_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/52d92169f2c0a95e0da01ed0b890ec99.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2017_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/8265d22ef9c4688cfde9c6ccbc0c409f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2018_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/ba281fc15acb5b1a44b084be9cb9689e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2019_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/57355e176948b066203c36bdbdd4671d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_spring_hunt_egg_10"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8ad2b09472cb044eb7be9035833b80f9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2020_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/7967a2f2b40008d3d37ff20853d0042a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2021_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/63ee1785e4d6557e86847ab220d4e4e8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2022_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/ba89918b418a21c1ba72b149ca93b2cb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2023_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/fe194610a7950d9c047fba82a0f25fc0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=2024_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1c36ccc67965717b65cd5b3124588916.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=abominable_snow_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2ea1aa7cfb2121206213fa6969abcd34.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=absolute_acolyte_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/d86fb326d73d73b54cb4da4595d7c8fb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/36081118929712504c6d57e95b809820.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=acolyte_relic_125000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=admirals_ship_theme_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/96217fd9504adbaf38bd4c67eacf1c9e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aether_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/15ef04bbc566f65be06e96a62782e7be.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=aged_grape_juice_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d2683d9fb98d4603933fdb7d4ec16eb4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=agriculture_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/810d262bc2fe10a3c99b59993e8dd737.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_cloud_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/b11869b8d3573bb5685fda49adf61009.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_balloon_deluxe_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/431617f34fea970a359bada3d272b1c9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_cloud_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/82af6d0c0416e46f44d6ad9b3eef0ada.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_hull_deluxe_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1efd5e1bf8da2034c2a155cefd651090.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_rocket_fuel_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e5dc4cae935eecf3c9ef37cba0d2f11f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_cloud_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/748dddfdd26494bc92c93f1bdf78e3a1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=airship_sail_deluxe_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/4626a06871d87191a319369ea37ae9c2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amber_queso_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/fe36041df0bec6dcc887ce67feefc4c8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ambush_trap_blueprints_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=amplifier_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/e9efc16289578c5b01bbfbc68180c54b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anchor_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/7b2c6d5ca723db03df698b23bfdcdfac.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/9ca0dcfad630fd8dc5fdedb86bb502bb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_dive_crate_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/89dd39d99b3c23f11c174c75f2750d9f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_frayed_blueprint_piece_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ancient-blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_jade_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ed7a286aaba86f25fd1364584a9d56e4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_mangled_blueprint_piece_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ancient-blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_collectible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/collectibles/large/a6e804d0d9eeb22ff01660a144521ff1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_relic_staff_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ancient_relic_staff_craft_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_ripped_blueprint_piece_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ancient-blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_scholar_scroll_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/600254a937f618200c8e8fb9b3aeaefe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_spear_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/52b53960ce6ec24a1808d9cc4ba9285f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ancient_string_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/c186592ecf94dc690119c5971289aca9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=animate_snow_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/299865bee5e482a035584ecf04f8cb34.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=anti_skele_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/c9e2e0ff242a15efd576ada74ccdd0c2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=antique_frame_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/a1ef1a3cd910a998ec3a94a47d93826c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=arcanevine_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/3ba68a805e40bd9d009bf71716a73d5d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=architeuthulhu_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ef6336b16c27cc3eb83d6babb62c54b4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=artillery_strike_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ef8fb33edf7ca54d7ddfc91a215e4845.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ascended_elder_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/381c1dd33e81a3befc02c8cf52ba2b0f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=assassin_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2b3aa5922c98dd5320d8511953cbe450.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=athlete_torch_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/44f6a8534a59e42f0153ce91743b3f3a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=attraction_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/e9d933c313a2a5846b5d00d75c6ada69.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=back_cover_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=baitkeep_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/52a8964019099ae0ab2bbc20b5279df5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=balack_the_banished_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ed81ee68b34afc6e83abeac1c8382347.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bard_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/73fd4b2ce4444589f5861b8afa72e230.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/98fc6f3a4723c64257f67ebdd25e6a82.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barnacle_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4f3c9f96c9672c1dac80b35d5dd01ba2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=barricade_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1d8baeb2fe6da30408338e70a59371cd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bazaar_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/45e053a16d858d237ab73e9a5dc77ba0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bbb_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a2ebeda8b2008652e112429c05f9adfa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_bobbins_of_becoming_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/5c07639f743c8a0a84f9f2855a02046b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_break_room_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/4a52c6d8607991a93d3167ac401802ec.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_golden_ticket_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f7d103fe2185afa61e08b0880077a76d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_mixing_room_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/2396577aacb317979238844ae30b62c1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_pumping_room_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c3c5cb340c3949ba5280c63b2f552a19.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_quality_assurance_room_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/97bb19e8f5ae6cc29a7a0f312a1a3b14.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_factory_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/907ce5291e023dedae8ed33c98546743.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_paradox_patterns_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/adde59133ab1dee5cb6c9e4b0a35751b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_pausing_pins_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/261bc80162532e469c3583d093c7c807.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_fabric_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/3179cb384e8abc78e301bfdbe84c1d64.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=birthday_time_thread_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9a9f343b68dfded3753b645e8b48770b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_pearl_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/279deaf36a6421a2c0047f70972d615a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=black_widow_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/59a0c83cf9d8a269d5a393f656b8233c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bland_queso_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/6c617a149e1909189ca013c343ac5b11.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blood_stone_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7d30f110ca0210571d2b4d37a283c3d8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_pepper_seed_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/81bb278316c89171bcf4e8d6d05e51ad.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=blue_winter_hunt_gift"]::before { - background-image: url(https://i.mouse.rip/upscaled/6c61f4651d5747e93dfaa1874b7c3e07.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bolt_of_cloth_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/30c6f16b8e317c058f862ebb1de66c58.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_up_rage_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/19e0609d64d2b6733f5d2752a1fc5c10.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/3b50ca373c2f5f16f780efd836d055ce.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bottled_wind_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/07b593381782f6444180390bef40512f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bountiful_beanstalk_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/1e1bbbb78f9f8b4ed723f46c12533da2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_bit_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/0157b6057d14d0dc947ab8748f38fe73.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brain_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/28736da58fb292da1b4b6fdd2e4e4635.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese_potion"]::before { - background-image: url(https://i.mouse.rip/upscaled/be963f01d283ec943b37eaffee55801a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/9a8d8cd30ea217263779c4bbef463d69.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brie_string_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/33655af0578327d745a198a8d1c6514a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brined_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/dc3f1fd4feaf509655b7d53f7848a3ff.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/06ce6c847841c33abd0ea5155b7c9521.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_gift_basket_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/d9cbf81394bc03fe405efc1158eeb55d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_I_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/882a3596dbd3eea8349f7e20f5d2a44d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_II_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/6a4c94d875abb7cd7413442f2eb66fe2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bristle_woods_rift_theme_scrap_III_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/0fed708ae2adcb1b925ae615c2fb0b93.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=brown_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/36649cee9bb7368e1a499153bc1531df.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=bubbling_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/dbb75a6ef1c661160265259d89ffc16e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burglar_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1b62029d8044f8640f47a7e157865dc8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/58ffc165c8b9223f68ecdbbd4d47deda.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/80024db3879671de2a9c683cbf6dba7e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=burroughs_rift_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cc77683d8bbdb5936b8688120cad0dba.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cackle_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/a319797e40f21a4dfbf71b2342ee2b9b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cactus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/15539fcdf0fdae1d477d9376955715f0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calcified_rift_mist_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/54e6ff0e1a145b4ae1a702dae67f302c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=calming_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/b5f5181ed172c026328753f3691f3adb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=candy_apple_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/31010fcc556e22dfdb212bf41cd0b51b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=canister_ring_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/877f442dc703b178bfaa850ba64737e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=captain_croissant_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8336dfb56954ded6972c0730a2f434b9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_instant_finish_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/152562d29f0c1f3b34068772e12f9e1a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_potion_ingredient_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/61974eebc3c5636bdde34087f181cef3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_1_ingredient_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/3458a95df3666ed6cbc1845fb33907ba.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_2_ingredient_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/798ff477dd731f81ccb8e232109e2541.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_3_ingredient_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/78bc1d92a65357ac071dfaadcf3dac37.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cauldron_tier_4_ingredient_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/2843ced24d7b1da5a74878641de5af8f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_crystal_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9e584aa7381289bea8b042441d974898.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_diamond_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c4b059aa723f63b0d65ebae50ec6faef.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cave_nightshade_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/075a2bbef9d263b41822be1c318e9ee0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cavern_fungus_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/6b849e20a0a0e8034697dfc0034f20e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=century_of_luck_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c80393b464ba3011559816c151942c7b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chamber_cleaver_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/62c0cb044ec8e99965e63ee43118ee36.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=charcoal_yule_log_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7038d57eac98f8c0c2e54c3c386ef1e1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/65c1611f41a93975adc5d23730685faa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cheddar_powder_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5f8bede50428c8c2214726c2aaffab69.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/661423bc380dbf551f2ad004b08c73fe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/50b0d40c3dea7dd2c4e4cec0fa49261a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_sprite_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/72ab4c97fa2c394a2de4dcdcb1e22360.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cherry_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/5b380a1d1360c002b4f7da75d0c06717.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_bit_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c19b708f1b5345f4173084db6e15a32c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/fc70b8752ff67df7cb10241c025400f5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrono_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0be44f7be649f01fc9467ef51e503846.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chummy_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/22022f49a2971100620162510f45a493.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clean_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2432169d870389c8bf81e4fb192cc673.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cleverness_clam_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/254a9be91a43cb3d0759ae3a5bde76c8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=clockwork_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/af3af9c1530092438f85b1cd90d854ce.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloud_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/96a47f3f96f6a89afc2fe562fe39ff19.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/17538c5f2c9f8adb9e4086f9d4faf328.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cloudstone_bangle_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/3938367fb80d9bc2ab244bb2f4127f70.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coal_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/83bb83fb68a3a777b71ae1d4a47e6ee5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_milk_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/6b3b3556db2acfbcc1b34d489459974d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coconut_timber_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a48a5e8e11c9fb63d24ec5c2d92fe6ef.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coggy_colby_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/39a63a48084383a7eb07d64c74357544.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cold_fusion_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/33d2ff1344d6d8d7fbb3e1cec218d7fe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_energy_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ae2f656e2f306ddf66586509aa263b3b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_1250_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=combat_research_750_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compass_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/81354595b12ee558a0d5f29db2e804c8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=compressed_cinnamon_coal_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c8b7a13ab5842120acfee3ca1e81de8e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=condensed_creativity_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/839415e43cf9aa38547e9e6c5c1458f6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=contaminated_crumb_cake_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/ab8d13824c0ca64ff88890abaf50c4e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cook_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/439b3421e73b2384530808eba5cfda95.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=copper_bead_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/03437639426d377f5e3ea63e94ebbcbd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=coral_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1696624782c605feac729c628ca6df29.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_bark_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/df9677b546c356c680e1cd4ddc91d3df.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cork_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ec25480d4bcc3bc2c10aa19d1f53013d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corky_the_collector_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/47b35e0b2de7b71bb4f21432da038ac8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0ee8ede68601e126f316100533a5be74.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupt_trident_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/1b0bfb831bc9716f64dcaa21e08fc7c1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=corrupted_radioactive_blue_cheese_potion"]::before { - background-image: url(https://i.mouse.rip/upscaled/af7555f61ede9c06c60d9f1826d7ea71.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crate_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/134572be18c33c9bf082a987b0b68ae4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=creamy_gnarled_sap_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/507b4fd0ecd1976b8211c1ff381706d9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crescent_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/ec3fa3c29b23d461f75abdb150842128.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/377eadb0f8aa2928aef8f51b593b1a81.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crimson_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/dec7b0cc661f3fd1f126ff25197c18eb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crop_coin_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/415f4fbe9f9cc19e181893c5387c004b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_collector_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4e1b26a306a5b66a0277f1eb5b8f8398.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crown_jewel_collective"]::before { - background-image: url(https://i.mouse.rip/upscaled/5be8952836ece13250179cd194b991c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crude_pollutinum_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c9c45ee57de6c86d7839e51f0126869f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crumbly_rift_salts_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/6db7cd42afda17d2fabdf3ee0d73b9be.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crunchy_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/20dcee88a834c0945ae70e454d409a64.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_behemoth_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/82f7f7f9a214760806982e121bb7c657.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_crucible_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/e49cb293cafb01ad7ab32fe9f59e3302.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystal_library_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/018585dd26ae52f17d34b12d5a17af88.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=crystallized_fossil_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/f943c9064364d3d6280a2e949b832d14.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cupcake_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/92f722d83bbf455b47c51661bc1473d8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_gold_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1d4886da3f7287c1d0a8b52b94169a41.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=cursed_librarian_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/06e6690eb9547319ec81e97525a774bc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_coral_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d6a2fb8e41bc43066499038c7f5b474e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=damaged_oculus_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/b557d7039b2170b045c59233924453ae.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chest_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/db94a26e6a90e45acf329e902322081d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dark_chocolate_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/ff1e626c4a49e5cdf91ffe28cf0cc4c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_dust_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/eb5fb51595ba2ca16a2a6056bd6986a5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dawn_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0880398ae8a96e3ba6360e30ab118edb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=day_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/99a85b47b93ac27fbca20aea868d16b3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decoration_voucher_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/5d0e9f4fe6ab1973630141fa9b889dd9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=decrepit_tentacle_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0c8f41e7483cb833488260d56ac4fde6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/495050437a98325175d13c1b8586aa99.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_freeze_base_blueprints_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8ae4d2ea7503ab044ab358304385e924.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_mouse_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_sea_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ba4596b6ccf0d05d6636ca948add8548.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=deep_thought_25000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=delicious_stone_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/9162faac15ce5e5293d5bad0242e3ad7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=derr_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8f3ab7d1380d244fbcdeb0ff0ec5f155.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_horseshoe_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/desert_horseshoe_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=desert_nomad_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/720831b5f4d7389e809487bb7d4c9b72.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewdrop_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/transparent_thumb/f3e81cd5cb1d1e77db6fd1bea3fd90d2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dewthief_petal_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d0aa3c851e757f3388af33259b49b5ba.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_boost_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/674d1dfe00a845c7e65758b84eddd6f4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5a934d4f696aca2796b2c81a0f2a6e0a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=diamond_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a517c2628772ffa88edc629ee3f7c42c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_drillbot_parts_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/parts-new.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=digby_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/4c639349f35f72eb9334fd35250e7d04.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dinglehopper_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/67995e6ed275500fed2358d8be39ba56.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_student_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e6cd171514a79fc8c7d9756c2e2abe12.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dojo_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=doobers_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/92946955726b1502e43e0fc21e84967b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=draft_derby_curd_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e57a0da72b428affd8626146c3ea2b16.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9127e5d45dea97a0386856d1f790ac9a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_ember"]::before { - background-image: url(https://i.mouse.rip/upscaled/e82a47642a8157fdaa9a017d0a02889f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragon_scale_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/40e221d3ef85009a96478033f96d1cc7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/20c363d7982533d47e080698baccff2e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonbane_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/09d22ea7e6d603e3be79de693ca38f95.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragons_chest_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/6054ec9af22ec6e9b870e9a348ac2001.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dragonshard_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a74323a8cc202e360417591f112c0f03.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreaded_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/fc77c3347caff2f05faee41c498ceb88.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dreamfluff_herbs_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/b3016772b43b08c5af80eb692d64ee46.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drheller_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/67728468871ea1d98ebb6e8067aba928.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drill_charge_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/e305c5fe904855162acf43ae13144a48.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=drilling_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/531ca3dc8e0beb5939e609319f2ede13.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_bird_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1fc90df77235bdf67935132d87dee3ab.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=droid_jetpack_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/e85ec0d6ee80e56da0d1b459590fd3aa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=duskshade_petal_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/3e902257052234e3d945de369e94cad3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=dust_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b8da3bdb22caca3a8eef3b6ce6e2a0bf.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eclipse_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/3d269c0c856c57da61ac68fdc8c83d8e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_basket_ancient_box_trap_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/cca3ba09d72fa3d1f817c729018bd73d.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=egg_charge_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/49eb7f525b2b3f83cc3c5f6d308fa14c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_charge_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/21587f9934846c11662b3158730c7db2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=eggstra_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/226733236730a19e170b4bfd00f2c216.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=elub_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e84917131503d792edf03a8a0c7e9522.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_root_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/7e36bbd16f7c136ec5a6ba1c3dcda1d0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ember_stone_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/fb2d28966da15fd2179b071afdd1df08.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_codex_page_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9408c967a8589097f8a5ab10c27ffe19.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_empress_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/790acc36ced4d004235c0ca63b5a48b1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_floating_loot_cache_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/01b9064000b003e9bbf34d980a367c6d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/3c179e2e5b28d0ebd69791096ff8733f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=empyrean_seal_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/dd362c178b67d5e45fda7b2da273e7d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_page_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/c40cece15d2b24932998402f91a571f0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4a8a86baec532a051a55f202d81d36d2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enchanted_wing_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/837408def39b21b377373f7f6f1064f0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=encrusted_metal_of_time_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/806d78816ac0ce65aa1bb9d4055ad968.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enerchi_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a4819f8e8ef04833528a6fb9b8613ffc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=engraved_solid_stone_slab_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/9e244c5a09575c82a81e57c7850849e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enigmatic_core_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cfe214a43f9d74a1d5fdd19a87a98abb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=enlarged_rift_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2452e1fbf12b65c03969f6ba81600497.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/b24c8bd51493b112aafb0f3c05384641.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=epic_orb_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/041508ebc4291b4cd82502c20902ae3e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=erupting_rift_core_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/1121d471e1d62b563990c05dfa9b81f5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_a_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c17ae89c7ce53dd3b680ae61cf7d76e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_b_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cb8a5a0c67585706456c76efe355b503.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_c_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c2ec1005bdb8a1fa50482b2748ee8466.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_d_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/33aa01667cf443062d99081e0e3e2529.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_e_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/23e3f8591e1502767782e6d25c830309.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_f_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/7860549d38f5cd74aee1efac30d12140.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_guardian_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c36799b0527c53db1b18daff8c3cdb74.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_of_destruction_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/essence-of-destruction-new.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=essence_prism_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/86d537b2d6e3fda4fbd61b768666fd15.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_cannonball_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/dd9f642df9aaf1bccb8022205b267e11.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_librarian_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/32c8ecf61b90df198211cf7d4fcaa3fe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ethereal_rope_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/db4b577b3614ed06a03bf9489eea08a5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=experimental_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/992d41af8eb47efaf6e626c35d28502d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_rich_sky_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/0ae707c97067446e1dffa95eca697c3b_v2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_spooky_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/ee42fd2b276cdf04dc2fbdc995764230.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extra_sweet_cupcake_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/374d029aa7083abe363bcc5d6d15d6aa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_ancient_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/342e16250ac170a275cf21830cb01219.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_attraction_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/2988e4f8475f7fd67303f40737c4f725.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_gold_bonus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/5139456982d4631acdf48defa9f6af61.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/00b1ae40503ff443ddab3becc48aa5da.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_luck_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/aafe7e3f82e96fd01d83b990cced1682.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_party_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/48d786d6f646a0ce00ad5142cf580e62.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/09c6fdd16d188b5447d85de2c3d1b3ed.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_regal_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/4f437099155e580250f5edd2c6a74058.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/e83e5762b9d1fe9dca1f3f8cba5a6230.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spooky_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/05b9f931852ba4725d49ace31231d8cd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=extreme_spore_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/43893174cec3acc5dd3da41ca2007241.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fabled_fertilizer_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7172897965fc2aa1fca94675d002891c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=faceted_sugar_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/faceted_sugar_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fall_key_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b24d7c88715903e30192a673a7bd9d37.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_anchor_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/7a406cea50188f6d4ff923882c6989f6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_shorts_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/85ecf9aa94e753dbcb41737f8dd007d1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_fireworks_wrapping_paper_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1a35b1e41b07d6a5677664613b96ced2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_plain_wrapping_paper_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6a34956a866c7c750fa3ac2686a1ef5b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_spirit_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/cda292833fce3b65b7a6a38c000e8620.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/572219ffa04034304dc50915ba17589b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1dc0012a889f1faa8a77fdc2dad59177.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/f522a702fd18f40b210c3cbfedc9d8d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=festive_ultimate_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/01d3ceb7cd446b99279e48d48d7b0a3f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fire_salt_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/143e28a0e40fe5ef87d58c49205fa0c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=firework_cookie_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/b7a5523672b3a5d363cb759314266358.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fireworks_festive_decoration_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/8b2062783dfb3cb3e63676de112cf1ea.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flame_march_general_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/5506151397da62b96a3afb51c730f433.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flameshard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/flameshard_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flaming_spice_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/3896982412b1462bc2130b592b47993b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawed_orb_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/d3cc688be2acfc6d4abf3c2baa8ea4e4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flawless_orb_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a64bcfe3d5ac35d5f760b0835c9a24fb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_cloud_gem_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/2b2f40c927145497b1d95f67e335e939.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_islands_sky_ore_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e968c6d5fce6ffd21d60e5e4547e31ec.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=floating_trap_upgrade_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6bffadfb47a1ccbd10e19949ae00a1f6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=flour_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/bb68cc763d50965702cca0d4fca5e490.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1373e30b89ec2729c80cabb7a4c0f77d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fog_warden_stone_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/81d5ee0d368a73905f1c2abe08d77f71.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=folklore_companion_vol_1_3_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/8890a7ffe292185dcbef6cbbd4aa1bbc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fools_gold_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/be110c02973cf122a3c4e6f1b8b8ad87.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_blue_action_figure_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/dc31257f6779840477a143677ebc270b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_green_action_figure_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/a22bb222966fc256db20bb7409735718.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_pink_action_figure_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/c9a3888a218c83dfb91345cd0dacb41e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_red_action_figure_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/341009a82574fbecb11af00857e7bdaa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=force_fighter_yellow_action_figure_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/af6337de7beb9d113790d24e4fa036f1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=forgotten_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/ca5d535e935af2896aab0dec7302c035.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fort_rox_tower_mana_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/462119118101b2ff485357e0ab030c9b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=freshness_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/567688dae46ff9892476d3d23bc8b14c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=front_cover_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frost_warden_stone_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/35ac0771be978b7b606815baf9d742b0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frosty_metal_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/813896856587efd5d33c295a9eca69c5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=frozen_sealed_bottle_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/54d8383b07f25998ddfb18cd94a89f0b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ful_mina_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e70b05c5951a3cbb7a30bd1ed6bc2e3c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_charged_tooth_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f8ec4fe0f3f262d8b186c8f5a5a47b42.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulmina_tooth_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/bf29c4e1a580ef409b8bb809180e284d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/fdd00e1ebb02b742dd57b0afb7b85159.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=fungal_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9f5461364f5d45ef80031fd40dfb3914.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=furoma_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0bef036771da71f0cd8965fd1aa01de9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=galleon_gouda_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/1f1f063f61538c166b086c64e7be7b0c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gargantua_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/5b4cfd86742ac69688a01c1a4e40982f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gate_guardian_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/6430df1893c2eabaa63a327f12124d65.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_cheese_2"]::before { - background-image: url(https://i.mouse.rip/upscaled/1f07a6ab7b1149d78d12285ebd612e22.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_elixir_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e150d89cfa53dc318481e33f313a8a73.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_2"]::before { - background-image: url(https://i.mouse.rip/upscaled/64d07adcb66fe021f1bb8239f6dbe7de.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_3"]::before { - background-image: url(https://i.mouse.rip/upscaled/46c2ca3f8d6679b2ab626cabf774abce.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_4"]::before { - background-image: url(https://i.mouse.rip/upscaled/84183fae4d3c605174e915d4f4f4e102.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_5"]::before { - background-image: url(https://i.mouse.rip/upscaled/58ecf0c617a5b422863b295c7f4c9482.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_6"]::before { - background-image: url(https://i.mouse.rip/upscaled/9ccdd8aa87c6952b89dcf402acdc1d3c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_7"]::before { - background-image: url(https://i.mouse.rip/upscaled/b4b915bb46dcd0cf43ca01636a131c9d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gauntlet_potion_8"]::before { - background-image: url(https://i.mouse.rip/upscaled/c069bb7ffa39a444eb0eb6e6645ee9d0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_boost_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/6e8bbd296107ef16d79521a1b6158778.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gemstone_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/896e06fde8c1931d810cfb58f9cf6b83.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=geyser_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b82edd503aa902765882ba8aef276cc4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8e60c287ed062879ccaa2ddc8037e55e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/06cc8eea9b30c454898df5e95310f7d5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ggg_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/e967ccf436b7f4528d38452171937d27.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ghastly_galleon_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/7408820a52dcec6001b2aa4b25a584b3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=giant_golden_key_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/d855937c33e0fc0db25fbdf1aea70aa2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gift_wrapped_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/12e802da31aeea4d37e707be12948f8b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/66e3daa5c8e00d79fcb323ddd8eff45d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gilded_leaf_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/5bef3c79a6cfd6f4706f26f2d3e870eb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glass_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/505e1f7ac48d233234c06b281b5664ad.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_gruyere_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/9f8190c4aa5465cf36eddbc11e8f49e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=glowing_oil_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/dd4e2c7419e3965822eed789bf216310.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/f5013b271452559e204bc07c349eefe0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/2682bc940071eb73a0a26a231cca3a59.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_tree_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/623a1722d52c170f38edde8b51583871.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnarled_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/ec0a475c1a5f62683bcbaa9354abead5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawbel_prize_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/262ee00dd81b7fbdf7a5a88b347e7847.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a2545c5df4cec5509f7c2e92b8bd4798.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnia_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gnawnian_express_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/77f06d5c30c1684577c72813c27549b7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_bonus_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/3fceedb58de8f05c0a7ddca788ea29af.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_leaf_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5985fc9b29b3c4f0dd36ea5de406bd8f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_10000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_1500_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_2000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_250_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_3000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_4000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_500_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_5000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_50000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_satchel_750_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gold_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f659a8a07d3877df4165b188f13bb0db.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_egg_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/178d8b743ef536688412a1f9fa60523a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_feather_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/654d4e0c8308c3ab0ee99d32503bf82a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_goose_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/5a48475b9a90bebbddd13ce1f8e58877.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_harp_string_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/0077528e751b8f8e9bdc3c7d66305222.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golden_scarf_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/b07954771f93d36f125caab617573edf.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_magical_hat_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f2ec13c0297687cbe50c7c35312966b7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_head_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/680f6a68612ca9181a90b5719b20ef78.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_limb_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/396a907cb274bf18106dc9425248dc0d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_part_torso_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/a2fc8dd7a8bda0177f1265b70a8abe39.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=golem_upgrade_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/a9f0d6cba3beb00ad97a543b5e3ec8f9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gooey_gruyere_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/f58e0a6a499ddc4c98ad273627831876.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=graveblossom_petal_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/b23d7871b80df54dc06fd9e708bf8432.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_brie_cheese_potion"]::before { - background-image: url(https://i.mouse.rip/upscaled/871f0235f2f6162855ac70c9ce07e6d9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_radioactive_blue_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/345b8f8865f1b779ebd95bd269f2b6bc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=greater_wicked_gnarly_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/4313fb70ca6c11ecee3d86b8f59b8842.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=green_winter_hunt_gift"]::before { - background-image: url(https://i.mouse.rip/upscaled/5a655a9b057422abfd6fbfe87e199b8f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grey_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/283d883f46b2d2bfd476807a8f8c1dde.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=grizzled_silth_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c43f6d8d21b32955b39214ffc718e5e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=gumbo_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/d841f3c41a16b32de8407595576ff596.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_arcanum_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/aaccf1abc329dd1b3406f33572323bb1.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=haunted_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/20d8aed467c5475759a9f46a4d5c1c08.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heating_oil_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/2a4a0043e148851118e1ac5f38b12e49.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heatproof_mage_cloth_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/heatproof_mage_cloth_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=heavy_floating_loot_cache_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/aba8f0c2028abcb4da63ef78b1cb82ea.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=high_charge_egg_convertible_2014"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1e161325c4aa1558fc34e5a5806ae897.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hinge_of_eternity_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/78f42a7ca394462bfb80497fd0d9c493.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hot_spice_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d4ac2676d7287d94dc45ce17753350c5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=howlite_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/af74772065c71be463b8629be6fca7e5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_10000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hunting_research_5000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=huntington_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2185809396981336c2d024084b11b86b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=hydra_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0e4115841c83c87959b6249499c6b85c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ice_curd_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ice_curd_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iceberg_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/115297c4adf1231d8ed96c9cf8ba6c21.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/52561f0bb0bf340b67a1ca0d62aac70f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=icewing_generals_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/508724838ee33e6acb7e616e9639dfd2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=incinerated_garbage_bath_pattern_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5f363a503255d17b253e26294845df80.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inert_dowsing_rod_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/430553712969eba2267f35c850735b01.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_havarti_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/a2c33e3908f19ffab038cb3643ae2915.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inferno_pepper_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/c3f8ee386ebfd0aee56734df45fc97af.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=infused_plate_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c73481596bdd805a1cdfcabc2526ba02.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ingenuity_grub_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f8674e9d3dfe810c8ef2193896f7321e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=inspiration_ink_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/214d757c5374e9d3ffe41dcc90300da7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ionized_salt_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a77359eeabf7bd7fea9726f21b8a8deb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=iron_pellet_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/414b55ae30afbe44b225cd6c93bcd7e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jingle_bell_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ba84cbcc4bca2c96a1ae3af3845fbb42.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=jod_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/318da3877b71a6d0df74d2c424759da5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kalor_ignis_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/08cb3feb41de5b5dd2a079f0e6a3f290.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=keepers_candle_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/a013e300f6d7528f152a4eb0a1b85548.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=king_desert_letter_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/4ccc118d2b74520e42e24601bb5f953b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_credit_loot_crate_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e86542641839381fe3f0c6cf3cd8d089.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_prize_key_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6391b886b424174996329aa1eb186a10.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=kings_reserve_bubbleh_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/7c6daf8f81ecdcce206ded10331750fd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_1000_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/gold.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_500_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lab_research_750_bonus_loot"]::before { - background-image: url(https://i.mouse.rip/upscaled/nothing.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=laboratory_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/c1d446022e6e9bbef9b9becd27a3e055.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_lantern_fuel"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c79d65023eb8e3fa146a963edec2d273.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_clues_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/4af4321a64beff9406d1931e5ea79855.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_scramble_doors_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/3f408cc3012bf15bd07d9bce8a6eec75.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/4805267f1af9bc35d7a230539a4b1b81.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/fee39324e9c6f90d60640b8050a47f6a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/0503868295dfe063ef8067e79c0accbe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_4_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/0d51f50cf766bbfc0f6c3758b64c137f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=labyrinth_theme_scrap_5_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cb248d85f67abb20efd6a468a90ddecf.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lagoon_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/910232e817fe4aa1d0a8b880c72b2496.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=larrys_sandwich_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/a8399fdbf60ed6ae6cc116d1e793567d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lavish_lapis_bean_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/94eadf653963b5eee8d3d2c6b0288cca.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=let_it_snow_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/68d4616b1f0f92270bfe29d73e670065.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lich_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4efe849e187bddba8eb899dea3c5f68e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=light_floating_loot_cache_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/017121852a8cc100b40bdaeae01485db.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limelight_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/e3be5f83d06c5ff4ca7322273cc52f10.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=limestone_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ee54f7edf2a4a53a9b1f13524bb79cb3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_lens_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ad2f4651eb19c68a5edf5e629ed55008.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=liquid_oxygen_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/50b6384f98827ef9521353a3442dee68.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_chest_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4e0aa841819ff438bb885cbab7b5d314.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/cefe1b40dab2c3e4709a7cd444a740f2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/ff2dba220aad20b3c7d3f5a32dccafd1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/4d7eadd7f56bc7db6035f91ecc6cf295.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_garden_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/01200ea24e7e34d828cbf02d79211586.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_salt_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c4ed87d5b4184c54adc719b2435b9b48.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=living_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/718a0a28b34b07a75950883cf5f4af6e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2018_lantern_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/lny_2018_lantern_stat_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_2019_lantern_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9957ed35ed879d648fc946bf765dbdfe.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_2018_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/c24e557b3341642efd12cb0859af9812.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lny_unlit_lantern_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/2b92cfc72df4733942a9d7f63d1f3378.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=long_range_cannonball_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/298baa33ccf2496f46e0303853fcacda.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=loot_cache_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a2bb799d5df6e0c136a1375a085f565e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lost_chest_piece_fifth_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/99cf359d1aab3c0f41aba24059ced51a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=low_charge_egg_convertible_2014"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a8d898ad3870776c78a7abd4fa46a5cb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_power_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/c8048d0370681ea2ef95d32c8798d533.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=luck_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/fb48bfffd55f6cb5f4fe5e8b6947bc28.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_cap_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/7218a793d40410ad847198f4d2f9401c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f1e524c85d7cd56bfb710f4db51c7afa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lucky_valentine_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/62f1673aa836cf5696a27da36f1def6f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2017_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/f4c3ee4bb9aba29938223172a791650b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunar_new_year_2018_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/d4813a69fff0b714f79976a726b7ce66.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=lunaria_petal_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/e771fe86c25ba7ba5878ac13af87f1e1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/897ad5e0cd6d4145de20b9a713c4fdd9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_intel_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/m400.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_monstrobot_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/8631b5107716cc6cad32ce2d96ac0652.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=m400_upgraded_monstrobot_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/c1cb9771aa3c37e44d51065d552bf267.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mage_weaver_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8050fadbb856855464f921d902891155.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_bean_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ff21b5771aeca04ad1ccdfe0643cfa7e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_cork_dust_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/35e539811a32e2918ec4d67b30f49d65.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/93aab6dc652ee00ae4c94dd1d18fed0a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_essence_craft_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/1a5559b59d141e76dec3fe4b8780e5e3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f5aa2e7ff3d9e5df3d8a3d22cdeeb43b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magic_seed_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/608a3cdde87e33134fa5c1dde86cccd2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_radioactive_blue_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/fa0f8c7dbad44c1fc7e4761862897380.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magical_string_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/391305c12415e94d257fde9fd306d9b5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=magmatic_golem_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e868fd953db5e7e170cbe9603c8d74e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"] { - padding-left: 20px; -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/5da5d920ba95f944d4e5b37ae235685e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marble_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/7411061a14a5355aa89ad109b6334006.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=marshmallow_monterey_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/4a7fd814a76fe877bca77ac3a258d4dc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_belt_shard_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/2b348327409ff6c529dc9627ab342d5b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_binding_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a8b1b4e6f78736a46467c2d6e21ca754.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_claw_shard_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/0e5b827bd4e2627b577944bee44014a2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_fang_shard_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/12327141551d0d04851ff69478408950.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=master_of_the_dojo_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9c29953e17d74f6fc34bb201e595265e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=masters_seal_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b90e0b341e1c700f295214789f79b756.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_charge_egg_convertible_2014"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/bbd2b91ad5a84998d62bc2278c2b83fb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=medium_spice_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/a5fa5126ce92bc2205019ba6cd057f5c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=melee_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/08a6b0ddfcb3a6ce77ac96bc843f9631.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteoric_core_fragments_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/724559dac81aea6bed1493fda83321c7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=meteorite_piece_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/af1aa7a2f55acbce605abc65be1d22e1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=microchip_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/88b60b0beb5a56372402a925be19818e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mighty_mole_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0c211e2682d601e9b3b123b8cfb4aee5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mild_spice_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d8deccc930a83e56b3742e49d4be191c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mineral_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8d20efa4683a73181ec6aff1056c1cb2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mini_cauldron_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/85566eb71e02b2acda0850d8b37c71d8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minotaur_base_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/a819e8cc5a7a9cada4a0cedb151e66f4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=minuscule_photo_album_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/d57441bab9674b23d24e9e5e54bfc7a2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mist_canister_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/38daa68c7be6cb20f4519935ef836a1e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=molten_glass_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b9a4ee15f00db3ca8dc2fc673e582cdb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monolith_base"]::before { - background-image: url(https://i.mouse.rip/upscaled/bases/067759738ad8a11bf6227a7022779f5c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c557c9379fe9f6230aa03b08275e0f7c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monster_of_the_meteor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/25dd3a2a6a809c901c4e70b3bbf8a8c9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=monstrous_midge_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/db525f45235eb31938088e276beed622.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moon_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/ad09220c2ff326c9e1a078b783ce0638.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/859e89ffa90a45b7abe780ec7ef966a7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mouse_scale_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/98dbacc824a52afbd5d93ac438856283.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mousoleum_wall_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1e172ffdc7001a2c345f89e369799623.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_fealty_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7dd96a7db367b89ba94fc359fb1ae8e3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_scholar_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/77e2a628fd129ceefe1d883382e2e10b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_tech_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f0dff00197be8d9098abf519b482c099.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/7bc851e51ceb655eb4ab58314cd57ccc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=moussu_picchu_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/bc1f857d89e9449bc4a3fc36fe8734e1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=muridae_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/01bd0e776509106574fced638a38e7b0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutant_mongrel_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8917a77cd340f010118f77471420c6c6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mutated_behemoth_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b2c014a33cb1e8ff740c8198f26611b5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_box_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/8d58d9d5cdde0c63b36622517d3d1919.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mysterious_mythical_scroll_case_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2d6d74ca4f7066b42c84278ca74e8174.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_crystal_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b4fedff7f262030d4abd16e74a131b9c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_curd_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/8b8afd2790ae7f3ba6244d8c69bd198e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_king_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2804832c30ab9920566385867a1a0e6f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mystic_page_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/98b49f1f801004d315b18852c758e55e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythical_mulch_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/bd91b323d0000fd48601557ba2994536.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=mythweaver_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0a57f3c7f8e7f3b031b740280e54ab61.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nachore_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/603da4e7cbbfa083c843e88a62c4e458.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=naturalist_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/6215748d7f799ce8280d8f2098f80c81.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nerg_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/baa9e14a9cb3e8daeaf24e6f2a4b3e7b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=new_year_yule_log_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/34844a214c5210ade800ab213455361d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nibbler_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/bd55e2cdb209e1f1a929f0bb8ffe0056.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=night_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2f3f0bb5c2471163c1bfb0d8b5ef3dda.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_boost_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/a87b80a352952969a8b8f35a97f05793.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nightshade_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1aee631048a37988ee1f374d2c202246.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noble_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/366bd9b73741e3b770f7dd3267423306.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nori_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a83a91ef478edd39f51dfd7e4b49e041.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=not_so_secret_bunny_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/f043d322015f8a0aa4c7ef907771d7c5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=noxious_school_of_sharks_pattern_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/a3966712ecce36cd3a1e45aa028d93a4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nuclear_garlic_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/96ad900bbd094a76b1df9b52f600a79a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=nugget_of_nougat_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9ad82fdf228bd1e9b3060f1ea2ba4ee8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_gauntlet_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f26593a4dd76402a73adc47b668844b2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=null_rift_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4f4468300de50e098acd7d893ebba97d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oasis_bead_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/oasis_bead_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_mallet_blueprints_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=onyx_stone_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/86e5b9d71fc2322674ddae6d2f2dc8ed.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=optic_receiver_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/f634d7a763d7a743c51d6f89135320d0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=orange_winter_hunt_gift_box_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/04bcde3dc208fa4859fb065713039ffa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ornament_cookie_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7a42bec45d471e91c1aede6235b52384.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=over_9000_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8375911b984e26d21185ce97b1798c09.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=overflowing_pump_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c548e360b728ec5e8f5bd128b50143ae.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_baron_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/09d1c7288793f9792faf04788eef6d7f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_burst_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/dda4f217c3c106ce7214bafda146e0b4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=oxygen_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/bf03bb42fd7ff2101ed796cde5dbd28e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/99abbf83faf145503303f0d6822a5126.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=papyrus_seed_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/fb2fd61d9c427f3a630df60d964878e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=parable_papyrus_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/258584535b9a7bec275e68bc90307cc3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=party_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/8331fe131377c15fcf5c4773bde1fd8f.png); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=passing_parcel_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/5591e5c34f081715aaca4e95e97a3379.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pecan_pecorino_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/80c4c6e1c78063dd2ced38709ed5bd68.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=peggy_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/5515ab889ee296843a8ebfafec7132e8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=perfect_orb"]::before { - background-image: url(https://i.mouse.rip/upscaled/da4d4d2ba258ff4953322c609dead570.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pinch_of_annoyance_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/9ee22b50699f97b7267a429984affc3f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_crew_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/876760d62fef1699dcdee46ef116a284.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pirate_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f383c70dd5d1bd02bbfe845a04ae28c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plain_shorts_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/265816c31ba9ae1576e0200cec8a112d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plate_of_fealty_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c431568f0a90e77fcabc4de14009555f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plumepearl_herbs_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/599c11cdc9b7223dc50dd84d97df8c8b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=plush_terrible_twos_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/8fec22935a0472aef59789a53aed1df3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_base_blueprints_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_chrome_monstrobot_pattern_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cbe5d605705c39a5dc1e2a1acd0d29f1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_parmesan_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/9027fc2f9ce0f40c89b099d337fb743e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8630a5023fcba4121e939edd82b5c0b2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_2_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/a74804af06966c4d2a5db129e9993dc3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=polluted_theme_scrap_3_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/17c88aed59b9dba9e3d98bb76cf36bb9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pond_penny_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f976a90f6fd7f8b86c2d5bd3d05ee5b6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/b0fb665f8649eb72432c66b0575c9516.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=powercore_hammer_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/3380b02f1c2bd1a6e2d963b1cee4b41a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=predatory_processor_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/e92ad0c8c83a7d4685704d7e08f52dcd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pressure_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/397b7675309992e16725e36cc1b58247.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=prize_credit_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/7340a24e5bf4defcc5d855bdb56776c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=promotion_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/d51c17771c26c3cdd305e462d293f5e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puppet_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/3634959851f29ca85a9222ca2a451254.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=purple_winter_hunt_gift_box_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ee9017a35f6cd761c6b9026a2b94d7ad.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=puzzlebox_infinite_labyrinth_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/cf7727b978556d515e3fdfa441aa5307.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=pygmy_swarm_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/38a70113bd6c96fa3214026165542cc9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_large_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8eff407aec63d6bb5526be1d372aacd1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_medium_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9c5ab56e191ae3c244ef029ec696c791.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_keg_small_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f4e84c0215a67009722f7788da59b450.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_nachore_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c5f79a9d258da5d596d8100030a58d78.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_pump_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/976901c83d697d8764a6ba436242da4f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_spice_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e0e39b7921c7f02a8c136aea1ebe75bf.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_theme_scrap_iii_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/cd99d3fcf87b1feae446cdd8f9e27e23.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=queso_wild_tonic_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0401e5c98868017b6879ea99cc356788.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=quesodillo_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1824ae2c4d5ed4de862e234587c7216d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese_potion"]::before { - background-image: url(https://i.mouse.rip/upscaled/ab3d3b78a7d5c667bed83db7df1bb638.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_blue_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/7e0ba173640f397b0383b55e59738fdd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/732f486efbbf3d87fc007673ca940f66.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=radioactive_sludge_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/76f06ab9b076bb7eb0d861943e793f4d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/c98b1a20461a4048df6c7c46c679c9a3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ec5052768386b9de281ce1fd5c1381bd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rain_warden_stone_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/93042936d616836a4812467566b716b7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rainbow_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/5bb294babeb7b66f710db449e8fe0b87.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raisins_of_wrath"]::before { - background-image: url(https://i.mouse.rip/upscaled/4b8894ef7ebca6d1872e690bfe098805.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rare_map_dust_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/0e078f7d571242178110761f6fea27a1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_ancient_jade_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6702dc5d75d21be8c4ffe322a176aac8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=raw_rift_crystal_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/33ac4969b6fa0face39a74a1241549a7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=real_lich_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/be317b88abc4937604d01ba726711454.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=realm_ripper_egg_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/realm_ripper_egg_convertible.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=recycled_essence_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/af9ffb2d0655dbf62a5e4a086515bb23.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_button_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/083cf2176778f6182cfc1dbf14635ca1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_drop_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/f69c187749e68cfab8471e38b43e378a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pepper_seed_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a5d1739bb7eaebb4c5f9f564ecb60057.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_pocket_envelope_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/46aed1f2aa0f81c8d7a1710de70e2f02.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=red_winter_hunt_gift"]::before { - background-image: url(https://i.mouse.rip/upscaled/399e4f599a4695733cbd3d8d9dba8311.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=regal_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/0d03d9a5d6482fc812b2af9ae3385d6e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=repear_perch_blueprint_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=restitched_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/5513bae3e8b2a9af9de47425b382a328.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rewind_raclette_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/46720da0148033e9fb5e17b6f92260f1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rhino_horn_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/7ec210c28a6125449f2a33562a3e8b9f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=richest_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9c6733f7999a146138d96b7be12c2810.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2020_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/324f8d238d26a6361e62508b5452e26c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2021_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/b712c6ba2d271769c619a5b6a2928930.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2022_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/8bd82c82688b902315c6106b2574bfe9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2023_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/fe4732efa348967c4b62e047f76e2bc7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_2024_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1d16be96185649b8dcf5e94f4dfc79ff.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_bronze_chest_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/rift_acolyte_bronze_chest_convertible.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_chest_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/rift_acolyte_chest_convertible.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_gold_chest_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/rift_acolyte_gold_chest_convertible.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_acolyte_silver_chest_convertible"]::before { - background-image: url(https://i.mouse.rip/upscaled/rift_acolyte_silver_chest_convertible.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_anti_skele_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/440705b6812482ffb4f49a5517e5222c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_battery_piece_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/3e3e7456f4dd4571f93e93e112756a18.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_belt_shard_craft_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/39527b8d688c67e74c5522974ca4118d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_blossom_branch_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/9b6d4873633eceaca2461c44514e980f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_belt_token_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/54e326f462afae92705ec73886e2d0b2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_claw_token_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/19328766f3ea555aa4e8bff5592fb077.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/26bf0103dd738a6b9faa0c2108ce32ee.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cheese_fang_token_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/6166795222240b4320e9677df78bf411.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_cherries_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8d6c8cbf4239cbd8dc8a24dfcabfd21d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_chips"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d8dbd9dd574c176e8102789499dc4629.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_circuitry_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/48c9c4019134dc7caad8526c0be00272.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_claw_shard_craft_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c165324918f2e1150a4934cb97837974.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_clockwork_cog_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/bb306fcdd26f8235cf00ccea0549f13f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dojo_master_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e4b5f230b14614abacf51f85448a8d59.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_dust_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/50e5ae7edd08b61b4ef854c88d892d35.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0b96f61ba8a6c3acd14d949658c6acb7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/9207abeefddb26c69e7f6d2ac97ea780.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/80a8ba5c759aea9b4dff7e55b07e09ae.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_extreme_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1277fd1d613707113bce7d682ccae4bc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/fa312df4d745a07b96dd976cde58c569.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_fang_shard_craft_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/66fd41b4d5c01972a3419a3370199c27.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_furoma_energy_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/0acb0469eeb601b8de8b91b455c89dab.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_a_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6b1ff750750b9c48dd330bdb9861ed7e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gaunt_upgrade_b_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/d4d052ac03c581e15699333f61618e9d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gauntlet_fuel_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/bef22f59de06c3ed3b874cdf27c9ae59.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_gold_bonus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/83c329073c123d7c04b429e927841724.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_sand_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/b9983615ebc8ace80e7e074c8f1a2efa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_hourglass_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ee5ef616058313371f7779297bce4524.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/611129b590657a79a5c9e00ce380261f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_mist_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/71da2ef5be8bd7bad1614e0e6e3270e6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_onyx_stone_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/87a62aead547f7b7881db46d3f9ba7ba.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1c67b7571b5788b221ca6ff62af6d7d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_quantum_quartz_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/458cdbe5310947d11b90ad4d18d50bd9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_rumble_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/7d984bedbce03a3faf75da3478308233.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_scramble_portals_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/092ff4aa80863a405073ee9685c4710f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/18f2c999c6dd647524923bea55f1bfa9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_spooky_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/7af93b6eb5bd82197aa455d14daf9a4b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_sprocket_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/df580b80d0f628dc29572b0528e70a7f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/3e4882dd2bcc37e6b852f3ec2d19ddb2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/320aa082a9e2ec0e736896f51fcc2a83.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_super_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/0a6e94db23d2c4505a497bc1a34b48b2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_tarnished_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/6bc31a02a68b32f60ccb7bfd22713428.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_temporal_distortion_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/b88046add58f39243c14740d7179446e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_torn_roots_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/6db13ef9a4d210a9751f9482e3f0aa4a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/2b46f20192ef473fe2d867573727a4ea.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_luck_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/cf4000d5fb6de10f8e5acc8f3bdd9786.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/14a0bf78ee96492393dea6cdf8cb7ed6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_ultimate_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/4c71f5163257a88b46d18b536c29220d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_vacuum_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/98d8d676c2f8c74d81e537e8dbd1e0cc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_valour_supply_kit_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/76560accc00abf1d579cefa224631b1a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rift_venom_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/3d22b0fd25a86b40a7b4103a45983418.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftgrass_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5b27969d7d5eb37de3c24063dc7a2255.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftiago_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/8e2a1d54be3f70009f6070d674e9dbf0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riftifier_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/efe28be7a00023aead73860bceeb0759.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=riptide_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/67debb980ae854440df5ad5ea8dd9621.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rockforth_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/c46c4d12cb4904d28881356469714cc1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rope_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/efb71422a65d036a1e5b57a2639a7bc5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=royal_ruby_bean_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/6753553ca41cb4754fba0ebf7600378b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rrs_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/eb6117c38f3101f4e444f158b689e3d4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rubber_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/e42856515e30fd19176e0746c8cb1726.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rumble_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/1244d7d81b9b0cd0cdf58f26086bcd3f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=rune_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/8e79eed15c3c296fbd0af9c8f6f114e8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/ae0e7733350c47423d0d1f67b662bce8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/4d36162beb73e286fbcce46a0b09606d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runic_string_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/6d52024c9fee3048ff1180f149f3a54c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/4f0c649b161beaa1d92e1010da0ca50c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=runny_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/69213aff3e4e6b1ddae8ee474ff2b46e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sacred_scroll_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/ce2feadbf81fca6f98e9931099d69d7a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sad_pamphlet_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/87dae5437d7551f104a4ff6b45027890.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=salty_sea_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/91b0c2f328642dfbca32d41128f5e323.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e741dc777cdad1b13f67ff2a3d11d444.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sand_dollar_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/01d10d28c908eea3779942207ba4b68f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sandblasted_metal_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/sandblasted_metal_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sarcophamouse_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/d6a26d5c5d126beea52e5538b14fbd5f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=savoury_vegetables_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/7623e41c977ca9260a49ff8c5baf4235.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scarab_chest_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/6beea8cc18f66fdf4f41d2a6c82fe1ad.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2c9bf43bff582e663282fb4f1e6e45a6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/d0bb96b401c612c2edcb98b79de5279b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scrap_metal_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/49ea2a0ae42cab20a184e3e4971faaab.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=scum_scrubber_trap_blueprints_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seashell_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/ebdbd02440bbbdfcda831d5681046b2d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=seasonal_garden_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/7755a94b4992afc6328f4f78f104228a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sextant_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/01ad28b10b227f24a2c7d23fb6bcdca3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shade_eclipse_resource_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e987c0769410db8389c1b299af66710d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadow_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/9244a42aef6d4409440e6d6f9831f5da.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shadowvine_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/53651ef34786e43ba7881a501bc2058e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shamrock_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/4546008789ff03969eecdf6102f9030b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sharpshooter_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/bbde46c8c0721b3071370dd55bc844b8.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_chest_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/2742c823750f46dc6e950cfc4fba5dad.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shattered_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/be90bfc0985bcc3199d9e9cd7ed15d70.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shelder_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/c8a88b505b44435375deab0751a6a94b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shell_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/16a462d6885f84851a01b342e8b35f9e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sheriff_badge_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/1657743f7b7dc541bde190e5490aa5a3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shielding_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/e8576cf76eebd6ea898e24ef02d4e95d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ship_blueprints_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shredded_furoma_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/f17f75949ba32ef358c1c5387546db79.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=shufflers_kit_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/1849064cf8169d125d5d6af1386d1576.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silth_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0ff9f2cb3a2a888efd1d981e57a08865.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=silver_bolt_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/cbb537d2a4b64de3a6db143e40ccda12.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=simple_orb_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/2ba59ce524756109ad0f9824f1d5345e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/b6bf3d7d2a0fb563572f7eb4f03071b9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_explorer_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/68f881e628ce81ac24c07af780d84fde.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_gem_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ccc063e42fce300a80e39b21e37788c1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_ore_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/d68a2e70d61442e33330cb0f2b6c8f50.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_cheese_curd_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/2ffb98531ba5146c1480e1f5939b4578.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b934a029a905ca2d403f9360095410ce.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_pirate_seal_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/3cba86c28fdfd909b2f7b5c30c925166.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_scrambler_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/66b6a6a48a0c83cec5a15a286bd17749.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/38ced6658ceb64698c598bd73c8e8f3d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sky_sprocket_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/abd5e19f2a3b064e574a147760e35055.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0d93443d980b019c002d1d853edd3a99.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=skysoft_silk_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/e6d400243f837de301d970a702c30722.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=slushy_shoreline_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/07dd871a988ba9b78e71bfb20df32176.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snow_golem_theme_scrap_1_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/669cb7a5fcc5477939df0cc59bfa4a3d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"]::before { - 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=snowflake_cookie_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/ca39a7dc7a3eb16194e89cc1a7d2a727.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_oasis_pattern_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/5111a0902fa65cc5876566bb47de6963.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_phantasmic_pattern_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/80c613aa9da7af8ee7bf986805943b5b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soapy_suds_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/fd9ed99e804e7d8d9b8c674a70290502.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sock_ghost_plush_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/7a61617c4a749d2bcc9d71b99ee9fd33.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=soggy_journal_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/8a67598ac0c23fc790f2bab1715d7086.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sphynx_crystal_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/sphynx_crystal_crafting_item.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=splintered_wood_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/698a91c295745297bfa2ddc59c5da84f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spooky_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/42cb2eef93dddf389c9ff6d24a9c5edb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_easter_basket_acroynm_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/1d1ebb502a20e313a81d4dfa10f9a2d9.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_ember_prison_core_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/7ccb82b7f6615c23aa91113fc38a2d02.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_focused_laser_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/dd2746acde1f52be1d1dfd125d4c3a8e.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_infinite_labyrinth_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/a3d6ea82696d4b34538cbea2f2aff40f.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_multi_crystal_laser_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/fb6a0c5df434c26bd84f575230ae3e2a.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_school_of_sharks_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/6b47ee90e7ddca6f02a1cff716333aa2.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_hunt_shark_skin"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/skins/52ae803565bb6a5a9e99bdfef3cfaeee.jpg?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_key_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/e3920bd41f267809a732eeff63f433db.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spring_toy_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/e208a25f7f179826610a93c11ae341de.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sprinkley_sweet_cupcake_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/f683c9f6083f87f3b645d28d6554aa39.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=spud_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b5efb112be896d261677da0a6faf0717.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_cheese_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/996026e47b69f289b8e9717e88b5856e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stale_super_brie_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b4e31cf2b7ab485a48d9148c164dd168.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=staling_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/d20c6683d16fed01b12364641193bd29.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=stealthy_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/f899e02429b42e96a371bddf77953426.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=steam_nine_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/2203982ba031eb2174a65740e025b2df.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sticky_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/9d604d23953fa2a5d9acc863c96b0c9e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=storm_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/22a441375e73f3a0c0cb26ac2c41283d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=string_undead_emmental_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/442cf8a68bc8bd82c6ca672bf99e8e77.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sugar_rush_plushie_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/029746062caf73c62ba00223c029ef82.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=summer_key_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b0fb79925b2c28cc40bb518b5139c1d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_dive_crate_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/00739709c22d7f4d974c940ff5d67c4e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=sunken_treasure_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/49067f3416aee474e1cbe446c10e2c2b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_ancient_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/965ac64a1a4451d11513efb480c5ee4f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_attraction_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/9b079b78bac20290ebab796a3ea002fc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_brain_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/76eea2c6e1d4a60887617c0308c8c6d6.png?cv=2); -} - -.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=super_cactus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/331bef75f87963b83d65676aea403a39.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_gold_bonus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/f28c8bb6e315528ee7a359383dda80a1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/461253058899f36a570ef6e385bbf995.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_luck_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/54ab41a1f1a610f67e867c8578bb0e06.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_party_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/0cad3048c056bd51eaa4c14ad0ea0853.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_power_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/625bef6da38dc44ddcd70d0da47244ae.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_radioactive_blue_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/22b00633e96e0796c1212eb79ccda5b0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_regal_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/74295fbc1d1a08c19017287e9354eecb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_rift_vacuum_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/c5d02f60f905cc896f2b3e965812490b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/4779d160f313225174e39dd0af1d3e82.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=super_staling_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/e9f1d5f0bb9d29b9db313cd837bb8028.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/bb0fe6fa6f55e5ccb1f98dea058409e0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=swiss_string_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/e3499132fe042681a784f0b2b8a26c73.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tactical_grip_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/f2d73f3ec1e2663c50034f5de92c0401.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tarnished_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/6323545f24d4a4995900542e47a6f832.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tasty_spider_mould_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/d8c67f915b26283c7936703f95ca0904.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_celestial_skin_pattern_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/734c7e654bb7650bb86fbf321955bfa0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tattered_mousoleum_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/ebc3374bb204b00ef8576b1ab2ac1d40.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_cheese_mould_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/1c4325ac7022ed52716e554c971bd122.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tech_power_core_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/b52aff1549b63c0b00983f0a78aa8363.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_king_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0c763eb4aa5c3666ce9abe7c9565fedc.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=technic_page_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/52bbe10ccbe437656781188b3196e4ff.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=teddy_bear_message_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/64e02d8e26e4e50582466abe4cbe54bb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=telescope_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b599da5202c5d28536f59f1b6943ad16.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_fusion_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/a9cb5a41a59790e9f7f74de0ee8a805d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_plate_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/10b9af4ecd18a578a4fd6d420f58ceaa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=temporal_rune_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/0259fd7a89582bda594ad62fd4780f1f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=terre_ricotta_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/56dae7ea75726c4f0f738c6844ac9a69.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thief_floor_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/7128f9ec19f0ca60ab808061fb72bc5b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thistle_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/82fcf82a475bbbc6eea9ffbbc87a7253.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thorned_vine_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/4fc5f4829c33949c0d398893c932e62d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=thunderlord_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e0c3b4e383a4706b6d5c809fe8586c5f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_five_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9572c8287c734aa2fb6474b5b6995b62.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tier_four_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/64ebe355b88b2f7c623cf1aa048eef27.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiki_fuel_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/322ea2bc8e536bf2282a6e87647092c2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=timeless_mystic_gem_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/b75cffb38e44c116b2017858f4ca96cb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tin_scrap_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/8b243232e9bb25018b68b57699808163.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tiny_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4590228976b666627b6cb5907a1440fd.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toboggan_cookie_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9bb5141d119311e443cf0400e1052335.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_belt_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/9c8007a51591e6e7f368055dd336ae78.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_claw_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/89cc5f3b4402ba74a28bf9bdbe7303ee.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=token_of_the_cheese_fang_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/59aba4ca394645537d4a8f4a17dfb935.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tomb_stone_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/2c58756f4377a432c3080740a20c665a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=total_eclipse_resource_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/150c36547680239500d7f75221c5cfac.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=totally_scary_cape_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/553a9101d9b4e2b26996fc1998027180.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tournament_token_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/3f9a85833d0bd665ecfa7a611b4001c3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_elixir_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/d8f49021298876b1ba2dd1b814a71666.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_secret_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/87a74dbb202d6ae9defd19023fc26ca4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_sigil_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ad5d750346087feaa7c012ff74ed6cc2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_siphon_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b7d187b80ac91a17e79cb41e36c04ba9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tower_umbra_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/316ca2518041460c26ea21f8b1db0a61.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_brie_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/29611381710c3a94703bf3064e79816e_v2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_spill_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/9f5078777e744776accc4807c625cc31.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toxic_super_brie_cheese"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/bait/large/c515e8dbf609b0f7d1b00ab8f238c6cd_v2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=toy_cookie_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/1f63f25fd80755e8e98d3b66db851aaf.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_black_powder_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/aaaf93c2dd802d3584b3534d42c47c68.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_coal_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/2a575833c3fc9f8099be1aad47faf4ce.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_magmatic_crystal_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/9f1dc9f8a9ed1a2bcf04af33989a2471.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_mouse_repellent_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/09cf144cb34879d751b2389d641ea4a4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_station_fuel_nugget_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/623eb87805db60389f65dc68db35b2e9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=train_supply_crate_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/458329759837422bc05a1336a6e7d893.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=treasure_clue_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/bbf3d2584c85d85f5643960a8c0334c9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=tritus_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ac56a7deb2f17b4ee4740d0e05e77fd3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=twisted_lilly_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/17be4b0f64a499993c8643e5a7d22a9c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_ancient_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/6d5d309b2ef9233d16e5f1615746691f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_attraction_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/bf28d619b395f52d5c85173e27136baa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_gold_bonus_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/04ab35fa26055c205d57b636669d55c9.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/9c40fcde73160d89fe75bc393cd3d131.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_luck_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/ultimate_luck_trinket.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_party_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/770e0bf3c57899ad23425caa08a3282c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/585f39e671781b2f6b9a1f167c13f093.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/bff44759d40c71d6560948e68d015567.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_snowball_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/e836e4fa60c024dfd32897889bc0b6fa.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spooky_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/58fe5ffe62e7b05e896b324798fadd3b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_spore_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/3890d9c421ef78954c89c9245bf1500c_v2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=ultimate_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/adb808ce6d636952854b95bfbbb50b03.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_emmental_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/670640b925fcda270f1f14f3f616a36a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=undead_mynorca_pattern_scrap_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/80956c7ae4da9ef4d5275972a1ee70d6.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=underwater_predator_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/8dfd1a14f9650e582f654205901cad18.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_broom_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e4a6f5e6a4f1537b166c0aa3aa47e82d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_crystal_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/ddc12d64d0103cc8c6d4585237c48b27.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_ember_gadget_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/98c4ede11c32c4160c45c21ca301a771.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/05a64cc11664b600909505877d2ce24b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=unstable_zokor_crystal_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a4f7632867d4e0f567ebba5a632820c4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_restraining_order_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/8a7a06a60b0b6e7032a17b9557c04c94.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valentine_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/689c7c7aaad1af0c53da8f91acc8491d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4db9c9933b935495f5ef0d2b013f9378.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=valour_rift_tower_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/8072197425ad6d43cafe09e320a0e47e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vanilla_bean_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/94ad43b6a55a3825452ea802555d02f1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vending_machine_token_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/d9a019df03dcc1cee2946314ef2572bb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=vengeful_vanilla_stilton_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/d825364d9c8556bf43efcece51048dc2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/641b955b3c76b382e596e9d04fb7c070.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wanted_poster_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/89b686ce5858131eafe73d876ce8d524.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=war_scrap_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/931a03134475b7df6350a2b059b5c8e7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_fog_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/0252918241d29547cfb682808252c25e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_frost_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/efbf44f3384f79c82da22a3a2b347c7b.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_rain_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/a112bd62fd50534d11e12596c75f357e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warden_of_wind_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/7d4830394f70e7d4479d721c1a68a916.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warmonger_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/4e38c4dd4bdabb031fe88ed06112bb04.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=warpath_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/847d3c7f5873df2911a2e36dd91a1e27.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=washboard_base_blueprints_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/blueprint-new2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wax_trinket"]::before { - background-image: url(https://i.mouse.rip/upscaled/ef835c4fc66f1732d7d7fd4c8e693fd2.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=weak_power_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/47a2b0f87d6ec8a9d86f39417a619f85.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wealth_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/54356f0a4c8f612393f11fa31c5e7484.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=well_sealed_canister_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/14b5d874d924531aa66faccf9334689a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/cc3b8e4016e5b945fa6f1bd14cba7ebb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=whisker_woods_rift_torn_page"]::before { - background-image: url(https://i.mouse.rip/upscaled/torn-page.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_cheddar_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/775b99326ba6c984236d4a681c0b811e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=white_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/31359c28e93b9a58885adb7daacde813.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_cheese"]::before { - background-image: url(https://i.mouse.rip/upscaled/1ffa990ec8e9f6842dda44191aa7326f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_potion"]::before { - background-image: url(https://i.mouse.rip/upscaled/56a1d09f8a2e6280461e217ee42ea756.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_gnarly_trinket"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/trinkets/large/24a0fc5bd91c19948061da4346850099.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wicked_thorns_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/efef26439f5490849f025ab124fd7969.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=widows_web_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/492f5b25e352be9998eb3af30ec80c07.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wild_tonic_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/8e292ff717bd65936d2c96707aa77de0.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_cheese_potion"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/potions/large/ff19ea855745da18e472e29b975f9040.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/6bcfeb578d381597ef86ecfe50014eb1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wind_warden_stone_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/cb763f116170efa6f095b3de438422f4.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_hunt_2022_boss_loot_stat_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/stats/large/9e1d1b4faec1b4df4ca4dcb3216de6bb.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=winter_key_shard_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/82731d6cc285c89f542853f9059edb85.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=wire_spool_crafting_item"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/crafting_items/large/c5b808a1a838f524a23b45c8dddd149e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_drop_stat_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/e4ab7c2c3f5bf0c96401fbf685241603.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=yellow_pepper_seed_craft_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/65b5ca48b0125463defc0569c5ddfa4d.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_fealty_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/e135a772065f4f60da71571ab894caf3.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_scholar_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/52a0fc2b6519e123ab16abf88bdbd44a.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_tech_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/986e2e6fbf1ff16a7ee9b3e4929b2837.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zokor_treasury_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/39e604a9d4f7c9850e51e71dd7d00889.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwang_sock_collectible"]::before { - background-image: url(https://i.mouse.rip/upscaled/e30638c2f1820353b4f8413b715e163e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zugzwangs_scarf"]::before { - background-image: url(https://i.mouse.rip/upscaled/0409c3e6c1875601f2022e0caeabec98.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zurreal_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/b3f77639abd86ce9d7e58ede12e76ff1.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zz_library_key_map_piece"]::before { - background-image: url(https://i.mouse.rip/upscaled/c86fa2bcaa9932b194a840f1aa794d6f.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_draconic_book"]::before { - background-image: url(https://i.mouse.rip/upscaled/f5492154d46b7e34d21e50bf73ebfa98.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ectoplasm"]::before { - background-image: url(https://i.mouse.rip/upscaled/77b63dc1ddc4e1ff794cbce237590fb5.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_fine_wood_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/a2e27c4544867d4a0309a2e9677258f7.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_gnawniaresearch_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/f6e37ae1bd6b83bccf2eefc9c607e479.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_lich_jewel"]::before { - background-image: url(https://i.mouse.rip/upscaled/e65f9d982d464092a2c9574bdababc35.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_marchingflameresearch_crafting_item"]::before { - background-image: url(https://i.mouse.rip/upscaled/91616c5ea29a0f4c2dddfa076fc2c0ed.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_mesh_netting"]::before { - background-image: url(https://i.mouse.rip/upscaled/d1ffef63eb78412990ba52f04c64d076.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_ripper_nail"]::before { - background-image: url(https://i.mouse.rip/upscaled/1c580e8c95c97b31c4d459bb21e27a1e.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzl_stonework_runes"]::before { - background-image: url(https://i.mouse.rip/upscaled/2976d0c2eca0c4542b1f6f1aeed2525c.png?cv=2); -} - -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=zzt_egg_convertible"]::before { - background-image: url(https://www.mousehuntgame.com/images/items/convertibles/large/d7361dbb4e85a31c9321cb1a030ad9a8.png?cv=2); -} diff --git a/src/modules/better-journal/journal-item-colors/index.js b/src/modules/better-journal/journal-item-colors/index.js new file mode 100644 index 00000000..c0baa96e --- /dev/null +++ b/src/modules/better-journal/journal-item-colors/index.js @@ -0,0 +1,7 @@ +import { addStyles } from '@utils'; + +import styles from './styles.css'; + +export default async () => { + addStyles(styles, 'better-journal-link-colors'); +}; diff --git a/src/modules/better-journal/styles/link-colors.css b/src/modules/better-journal/journal-item-colors/styles.css similarity index 68% rename from src/modules/better-journal/styles/link-colors.css rename to src/modules/better-journal/journal-item-colors/styles.css index 7d883dba..16140736 100644 --- a/src/modules/better-journal/styles/link-colors.css +++ b/src/modules/better-journal/journal-item-colors/styles.css @@ -7,3 +7,8 @@ .journal .entry a.lucky[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"] { /* stylelint-disable-line prettier/prettier */ color: #a012a0; } + +.journal .entry a.loot[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"], +.journal .entry a.lucky[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"] { /* stylelint-disable-line prettier/prettier */ + color: #8b9ec8; +} diff --git a/src/modules/better-journal/journal-list/index.js b/src/modules/better-journal/journal-list/index.js index ab380d66..f7871cbf 100644 --- a/src/modules/better-journal/journal-list/index.js +++ b/src/modules/better-journal/journal-list/index.js @@ -1,4 +1,5 @@ -import { addStyles, onEvent } from '@utils'; +import { addEvent, addStyles } from '@utils'; + import styles from './styles.css'; const makeListItems = (itemList) => { @@ -69,13 +70,9 @@ const getItemsFromText = (type, text) => { /** * Format a journal entry as a list. * - * @param {Object} args The entry arguments. - * @param {Element} args.entry The journal entry. - * @param {Element} args.text The journal entry text. + * @param {Object} entry The journal entry to format. */ -const formatAsList = async (args) => { - const { entry, text } = args; - +const formatAsList = async (entry) => { const processed = entry.getAttribute('data-better-journal-processed'); if (processed) { return; @@ -107,6 +104,8 @@ const formatAsList = async (args) => { entry.setAttribute('data-better-journal-processed', 'true'); + const text = entry.querySelector('.journalbody .journaltext'); + const { newText, list } = getItemsFromText(type, text); text.innerHTML = newText; @@ -119,5 +118,5 @@ const formatAsList = async (args) => { export default async () => { addStyles(styles, 'better-journal-list'); - onEvent('better-journal-update', formatAsList); + addEvent('journal-entry', formatAsList, { weight: 3000, id: 'better-journal-list' }); }; diff --git a/src/modules/better-journal/journal-list/styles.css b/src/modules/better-journal/journal-list/styles.css index ba3f7ba9..1571c6d1 100644 --- a/src/modules/better-journal/journal-list/styles.css +++ b/src/modules/better-journal/journal-list/styles.css @@ -8,5 +8,15 @@ ul.better-journal-list { } .journal .content .entry .journaltext .better-journal-list { - line-height: 20px; + line-height: 21px; +} + +.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; } diff --git a/src/modules/better-journal/journal-replacements/index.js b/src/modules/better-journal/journal-replacements/index.js new file mode 100644 index 00000000..e258cd1a --- /dev/null +++ b/src/modules/better-journal/journal-replacements/index.js @@ -0,0 +1,202 @@ +import { addEvent, addStyles } from '@utils'; + +import styles from './styles.css'; + +const 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'], + ['
The mouse also dropped the following loot:', '==DROPREPLACE=='], + ['.
==DROPREPLACE==
', ' that dropped '], + ['
==DROPREPLACE==
', ' that dropped '], + ['I caught an', 'I caught a'], + ['I caught a', '

I caught a'], + ['found that I had caught a mouse! I', ''], + ['found that I had caught a mouse!

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
Additionally, the fiend pillaged', 'trap, and stealing'], + ['gold from me!', 'gold.'], + ['trap.

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', ''], + [':
', ' '], + [/
✨️'], + ['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:
/i, 'an additional '], + + ['

', '

'], + ['

', '

'], + [/

• <\/span>/g, ''], + [/(\d+?) x /gi, '

$1 x '], + + [/

<\/p>/g, ''], + ['I can view other recipe', '

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'], + + ['Here is the loot summary from my infiltration of', 'I looted the following from'] +]; + +const replaceInEntry = (entry) => { + const element = entry.querySelector('.journalbody .journaltext'); + + replacements.forEach(async (string) => { + if (! Array.isArray(string) || string.length !== 2) { + return; + } + + const oldText = element.innerHTML; + const newText = oldText.replace(string[0], string[1]); + if (oldText !== newText) { + element.innerHTML = newText; + } + }); +}; + +const updateLog = (entry) => { + const log = entry.querySelector('.content .log_summary'); + if (log) { + const link = log.querySelector('td a'); + if (link) { + 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); + } + } +}; + +const updateMouseImageLinks = (entry) => { + if (! entry.getAttribute('data-mouse-type')) { + return; + } + + const mouseType = entry.getAttribute('data-mouse-type'); + const mouseImageLink = entry.querySelector('.journalimage a[onclick]'); + + if (! (mouseType && mouseImageLink)) { + return; + } + + mouseImageLink.setAttribute('onclick', `hg.views.MouseView.show('${mouseType}'); return false;`); + mouseImageLink.addEventListener('click', (e) => { + e.preventDefault(); + hg.views.MouseView.show(mouseType); + }); +}; + +const shouldSkip = (entry) => { + const keepOriginalClasses = new Set([ + 'lunar_lantern', + 'valentines_matchmaker', + 'vending_machine_purchase', + ]); + + const classList = [...entry.classList]; + return (classList.some((c) => keepOriginalClasses.has(c))); +}; + +const processEntry = async (entry) => { + if (shouldSkip(entry)) { + return; + } + + replaceInEntry(entry); + updateLog(entry); + updateMouseImageLinks(entry); +}; + +/** + * Initialize the module. + */ +export default async () => { + addStyles(styles, 'better-journal-replacements'); + + addEvent('journal-entry', processEntry, { weight: 1000, id: 'better-journal-replacements' }); +}; diff --git a/src/modules/better-journal/journal-replacements/styles.css b/src/modules/better-journal/journal-replacements/styles.css new file mode 100644 index 00000000..6e61f150 --- /dev/null +++ b/src/modules/better-journal/journal-replacements/styles.css @@ -0,0 +1,7 @@ +.itemtransaction p.mhi-x-entry { + display: inline; +} + +.itemtransaction p.mhi-x-entry .dot { + display: none; +} diff --git a/src/modules/better-journal/journal-styles/index.js b/src/modules/better-journal/journal-styles/index.js new file mode 100644 index 00000000..492a2b04 --- /dev/null +++ b/src/modules/better-journal/journal-styles/index.js @@ -0,0 +1,8 @@ +import { addStyles } from '@utils'; + +import * as imported from './styles/**/*.css'; // eslint-disable-line import/no-unresolved +const styles = imported; + +export default async () => { + addStyles(styles, 'better-journal-styles'); +}; diff --git a/src/modules/better-journal/styles/backgrounds.css b/src/modules/better-journal/journal-styles/styles/backgrounds.css similarity index 100% rename from src/modules/better-journal/styles/backgrounds.css rename to src/modules/better-journal/journal-styles/styles/backgrounds.css diff --git a/src/modules/better-journal/styles/custom-entries/aura.css b/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/aura.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/aura.css diff --git a/src/modules/better-journal/styles/custom-entries/base/alchemist-cookbook.css b/src/modules/better-journal/journal-styles/styles/custom-entries/base/alchemist-cookbook.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/base/alchemist-cookbook.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/base/alchemist-cookbook.css diff --git a/src/modules/better-journal/styles/custom-entries/base/ssdb.css b/src/modules/better-journal/journal-styles/styles/custom-entries/base/ssdb.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/base/ssdb.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/base/ssdb.css diff --git a/src/modules/better-journal/styles/custom-entries/catch/bonus.css b/src/modules/better-journal/journal-styles/styles/custom-entries/catch/bonus.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/catch/bonus.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/catch/bonus.css diff --git a/src/modules/better-journal/styles/custom-entries/catch/failure.css b/src/modules/better-journal/journal-styles/styles/custom-entries/catch/failure.css similarity index 80% rename from src/modules/better-journal/styles/custom-entries/catch/failure.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/catch/failure.css index aad6c618..5961168c 100644 --- a/src/modules/better-journal/styles/custom-entries/catch/failure.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/catch/failure.css @@ -1,5 +1,6 @@ /* bigger ftc image */ .journal .content .entry.catchfailure { + background-color: #f2f2f2; background-position: 0; background-size: 75px; } diff --git a/src/modules/better-journal/styles/custom-entries/catch/lucky.css b/src/modules/better-journal/journal-styles/styles/custom-entries/catch/lucky.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/catch/lucky.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/catch/lucky.css diff --git a/src/modules/better-journal/styles/custom-entries/catch/prize.css b/src/modules/better-journal/journal-styles/styles/custom-entries/catch/prize.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/catch/prize.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/catch/prize.css diff --git a/src/modules/better-journal/styles/custom-entries/charm/gilded.css b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/gilded.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/charm/gilded.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/charm/gilded.css diff --git a/src/modules/better-journal/styles/custom-entries/charm/rift-vacuum.css b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/rift-vacuum.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/charm/rift-vacuum.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/charm/rift-vacuum.css diff --git a/src/modules/better-journal/styles/custom-entries/charm/torch.css b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/torch.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/charm/torch.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/charm/torch.css diff --git a/src/modules/better-journal/styles/custom-entries/charm/ultimate.css b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/ultimate.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/charm/ultimate.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/charm/ultimate.css diff --git a/src/modules/better-journal/styles/custom-entries/charm/unstable.css b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/unstable.css similarity index 89% rename from src/modules/better-journal/styles/custom-entries/charm/unstable.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/charm/unstable.css index 68e4f98f..525ef96b 100644 --- a/src/modules/better-journal/styles/custom-entries/charm/unstable.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/charm/unstable.css @@ -18,11 +18,11 @@ } .entry.short.misc.custom.unstable_charm_trigger .journalimage { - width: 50px; - margin-top: -5px; + width: 45px; + margin-top: 0; } .journal .entry.short.misc.custom.unstable_charm_trigger .journalimage img { - width: 50px; - height: 50px; + width: 40px; + height: 40px; } diff --git a/src/modules/better-journal/styles/custom-entries/crafting.css b/src/modules/better-journal/journal-styles/styles/custom-entries/crafting.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/crafting.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/crafting.css diff --git a/src/modules/better-journal/styles/custom-entries/draw-winner.css b/src/modules/better-journal/journal-styles/styles/custom-entries/draw-winner.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/draw-winner.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/draw-winner.css diff --git a/src/modules/better-journal/styles/custom-entries/events.css b/src/modules/better-journal/journal-styles/styles/custom-entries/events.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/events.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/events.css diff --git a/src/modules/better-journal/styles/custom-entries/larry-gift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/larry-gift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/larry-gift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/larry-gift.css diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css new file mode 100644 index 00000000..10569c34 --- /dev/null +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/birthday.css @@ -0,0 +1,48 @@ +.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; +} diff --git a/src/modules/better-journal/styles/custom-entries/location/brift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/brift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/brift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/brift.css diff --git a/src/modules/better-journal/styles/custom-entries/location/bwrift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/bwrift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/bwrift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/bwrift.css diff --git a/src/modules/better-journal/styles/custom-entries/location/folklore-forest.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/folklore-forest.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css diff --git a/src/modules/better-journal/styles/custom-entries/location/frift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/frift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/frift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/frift.css diff --git a/src/modules/better-journal/styles/custom-entries/location/garden.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/garden.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/garden.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/garden.css diff --git a/src/modules/better-journal/styles/custom-entries/location/halloween.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/halloween.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/halloween.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/halloween.css diff --git a/src/modules/better-journal/styles/custom-entries/location/iceberg.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css similarity index 52% rename from src/modules/better-journal/styles/custom-entries/location/iceberg.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css index 9745ecc9..61547ab1 100644 --- a/src/modules/better-journal/styles/custom-entries/location/iceberg.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css @@ -4,3 +4,9 @@ .journal .entry.riftFuroma { font-style: inherit; } + +.journal .iceberg_advance .journalbody, +.journal .iceberg_pushback .journalbody, +.journal .iceberg_pushback_prevented .journalbody { + font-size: 11px; +} diff --git a/src/modules/better-journal/styles/custom-entries/location/labyrinth.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/labyrinth.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css diff --git a/src/modules/better-journal/styles/custom-entries/location/mousoleum.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/mousoleum.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/mousoleum.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/mousoleum.css diff --git a/src/modules/better-journal/styles/custom-entries/location/queso.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/queso.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/queso.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/queso.css diff --git a/src/modules/better-journal/styles/custom-entries/location/toxic-spill.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/toxic-spill.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css diff --git a/src/modules/better-journal/styles/custom-entries/location/vrift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/vrift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/vrift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/vrift.css diff --git a/src/modules/better-journal/styles/custom-entries/location/wwrift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/wwrift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/location/wwrift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/location/wwrift.css diff --git a/src/modules/better-journal/styles/custom-entries/maps.css b/src/modules/better-journal/journal-styles/styles/custom-entries/maps.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/maps.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/maps.css diff --git a/src/modules/better-journal/styles/custom-entries/mouse/glazy.css b/src/modules/better-journal/journal-styles/styles/custom-entries/mouse/glazy.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/mouse/glazy.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/mouse/glazy.css diff --git a/src/modules/better-journal/styles/custom-entries/mouse/stuck-snowball.css b/src/modules/better-journal/journal-styles/styles/custom-entries/mouse/stuck-snowball.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/mouse/stuck-snowball.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/mouse/stuck-snowball.css diff --git a/src/modules/better-journal/styles/custom-entries/mouse/valentines.css b/src/modules/better-journal/journal-styles/styles/custom-entries/mouse/valentines.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/mouse/valentines.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/mouse/valentines.css diff --git a/src/modules/better-journal/styles/custom-entries/other.css b/src/modules/better-journal/journal-styles/styles/custom-entries/other.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/other.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/other.css diff --git a/src/modules/better-journal/styles/custom-entries/popup.css b/src/modules/better-journal/journal-styles/styles/custom-entries/popup.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/popup.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/popup.css diff --git a/src/modules/better-journal/styles/custom-entries/rank-up.css b/src/modules/better-journal/journal-styles/styles/custom-entries/rank-up.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/rank-up.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/rank-up.css diff --git a/src/modules/better-journal/styles/custom-entries/social-gift.css b/src/modules/better-journal/journal-styles/styles/custom-entries/social-gift.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/social-gift.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/social-gift.css diff --git a/src/modules/better-journal/styles/custom-entries/tournaments.css b/src/modules/better-journal/journal-styles/styles/custom-entries/tournaments.css similarity index 100% rename from src/modules/better-journal/styles/custom-entries/tournaments.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/tournaments.css diff --git a/src/modules/better-journal/styles/date-hiding.css b/src/modules/better-journal/journal-styles/styles/date-hiding.css similarity index 97% rename from src/modules/better-journal/styles/date-hiding.css rename to src/modules/better-journal/journal-styles/styles/date-hiding.css index 9e248223..f8b6be6f 100644 --- a/src/modules/better-journal/styles/date-hiding.css +++ b/src/modules/better-journal/journal-styles/styles/date-hiding.css @@ -45,6 +45,7 @@ .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; } diff --git a/src/modules/better-journal/styles/fullstop.css b/src/modules/better-journal/journal-styles/styles/fullstop.css similarity index 100% rename from src/modules/better-journal/styles/fullstop.css rename to src/modules/better-journal/journal-styles/styles/fullstop.css diff --git a/src/modules/better-journal/styles/general.css b/src/modules/better-journal/journal-styles/styles/general.css similarity index 99% rename from src/modules/better-journal/styles/general.css rename to src/modules/better-journal/journal-styles/styles/general.css index 5ef4bd55..ec219fba 100644 --- a/src/modules/better-journal/styles/general.css +++ b/src/modules/better-journal/journal-styles/styles/general.css @@ -236,11 +236,11 @@ p.mhi-x-entry { } .journal .entry .journalbody .journaltext .lucky::after { - position: absolute; + /* position: absolute; top: -2px; display: inline-block; width: 15px; - height: 15px; + height: 15px; */ background-image: url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2); background-size: cover; } diff --git a/src/modules/better-journal/styles/progress-log.css b/src/modules/better-journal/journal-styles/styles/progress-log.css similarity index 99% rename from src/modules/better-journal/styles/progress-log.css rename to src/modules/better-journal/journal-styles/styles/progress-log.css index 3c878c06..9d0ef3fc 100644 --- a/src/modules/better-journal/styles/progress-log.css +++ b/src/modules/better-journal/journal-styles/styles/progress-log.css @@ -41,7 +41,6 @@ .journal .content .log_summary table { display: flex; justify-content: center; - width: 330px; } .journal .content .log_summary table td.field { diff --git a/src/modules/better-journal/no-styles.css b/src/modules/better-journal/no-styles.css deleted file mode 100644 index 7c8caae1..00000000 --- a/src/modules/better-journal/no-styles.css +++ /dev/null @@ -1,40 +0,0 @@ -.journaltext p { - margin: 0; -} - -ul.better-journal-list { - margin-top: 5px; -} - -.journaldate { - margin-bottom: 5px; -} - -.journal .entry br + br { - display: none; -} - -.journal .entry.luckycatchsuccess .journalimage::after { - top: -5px; - left: -5px; - width: 20px; - height: 20px; - background: url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2); - background-repeat: no-repeat; - background-size: cover; -} - -.journaltext .lucky::after { - position: relative; - top: 3px; - width: 13px; - height: 13px; - margin: 0; - background: url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2); - background-repeat: no-repeat; - background-size: contain; -} - -.better-journal-list li { - line-height: 15px; -} diff --git a/src/modules/better-journal/settings/index.js b/src/modules/better-journal/settings/index.js index 18ae6737..794ba1a3 100644 --- a/src/modules/better-journal/settings/index.js +++ b/src/modules/better-journal/settings/index.js @@ -26,6 +26,16 @@ export default async () => { { 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, + }, ]; }; From 25e651712971e07e9bd984983130b0c642d85f00 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:31:51 -0500 Subject: [PATCH 06/91] Move mice data to external file for brift location hud --- .../rift-burroughs/area-mice.json | 71 +++++ .../location-huds/rift-burroughs/index.js | 275 +----------------- .../rift-burroughs/mice-name-images.json | 150 ++++++++++ 3 files changed, 227 insertions(+), 269 deletions(-) create mode 100644 src/modules/location-huds/rift-burroughs/area-mice.json create mode 100644 src/modules/location-huds/rift-burroughs/mice-name-images.json diff --git a/src/modules/location-huds/rift-burroughs/area-mice.json b/src/modules/location-huds/rift-burroughs/area-mice.json new file mode 100644 index 00000000..980eee5c --- /dev/null +++ b/src/modules/location-huds/rift-burroughs/area-mice.json @@ -0,0 +1,71 @@ +{ + "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" + ] + } +} diff --git a/src/modules/location-huds/rift-burroughs/index.js b/src/modules/location-huds/rift-burroughs/index.js index 216e56f6..3fa43588 100644 --- a/src/modules/location-huds/rift-burroughs/index.js +++ b/src/modules/location-huds/rift-burroughs/index.js @@ -2,6 +2,9 @@ import { addHudStyles, makeElement, onRequest } from '@utils'; import styles from './styles.css'; +import areaMice from './area-mice.json'; +import miceNameImages from './mice-name-images.json'; + const makeMiceList = (type, title, mice, currentType, appendTo) => { const wrapper = makeElement('div', ['mouse-type', type]); if (currentType === type) { @@ -34,10 +37,10 @@ const makeMiceList = (type, title, mice, currentType, appendTo) => { }); const mouseImage = makeElement('img', 'mouse-type-mouse-image'); - mouseImage.src = miceData[mouse].image; + mouseImage.src = `https://www.mousehuntgame.com/images/mice/thumb/${miceNameImages[mouse]}.gif?cv=2`; mouseLink.append(mouseImage); - makeElement('div', 'mouse-type-mouse-name', miceData[mouse].name, mouseLink); + makeElement('div', 'mouse-type-mouse-name', miceNameImages[mouse].name, mouseLink); mouseWrapper.append(mouseLink); miceWrapper.append(mouseWrapper); @@ -49,272 +52,6 @@ const makeMiceList = (type, title, mice, currentType, appendTo) => { return wrapper; }; -const miceData = { - rift_amplified_brown: { - name: 'Amplified Brown Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/9547c50891ce66c00188a0ce278cd9e0.gif?cv=2', - }, - rift_amplified_grey: { - name: 'Amplified Grey Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/b6a9a248439e08367139cba601583781.gif?cv=2', - }, - rift_amplified_white: { - name: 'Amplified White Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/877fd4f1831f1ffd76e6ab9334e96efc.gif?cv=2', - }, - rift_automated_sentry: { - name: 'Automated Sentry Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/d57b33cdbb0d14bb138fe91c166325fa.gif?cv=2', - }, - rift_cybernetic_specialist: { - name: 'Cybernetic Specialist Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/5a0d95f2211444717f29f74959b89366.gif?cv=2', - }, - rift_doktor: { - name: 'Doktor Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/a44277c1d72f76fb507df2a7a4938542.gif?cv=2', - }, - rift_evil_scientist: { - name: 'Evil Scientist Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/fc4030fcea4bb7e0118aa4d46705f37e.gif?cv=2', - }, - rift_portable_generator: { - name: 'Portable Generator Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/f0437620c8c86379e6f8fefb9e82d2c3.gif?cv=2', - }, - rift_bio_engineer: { - name: 'Rift Bio Engineer', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/1d91dc3220b096af75ca0423a77ccc83.gif?cv=2', - }, - rift_surgeon_bot: { - name: 'Surgeon Bot Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/6678f8a7003093b081c941a3d571abb8.gif?cv=2', - }, - rift_count_vampire: { - name: 'Count Vampire Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/851f1d4c760d0f263a38d0fa28bbf2fa.gif?cv=2', - }, - rift_phase_zombie: { - name: 'Phase Zombie', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/c9675fb32b01e91d43f5ebbbf3bf8f02.gif?cv=2', - }, - rift_prototype: { - name: 'Prototype Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/8be0e48b2fa241e65312726433612871.gif?cv=2', - }, - rift_robat: { - name: 'Robat Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/fa345c83ff784adfbe79230f279be2c6.gif?cv=2', - }, - rift_tech_ravenous_zombie: { - name: 'Tech Ravenous Zombie', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/6249796e35d572687db2aa4a4e391335.gif?cv=2', - }, - rift_clump: { - name: 'Clump Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/a901fe9feea2e04ca1da1a3769dd7f77.gif?cv=2', - }, - rift_cyber_miner: { - name: 'Cyber Miner Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/b3768e070c9b40fdfbfef4f39025acc3.gif?cv=2', - }, - rift_itty_bitty_burroughs: { - name: 'Itty Bitty Rifty Burroughs Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/723735735fcbc38d75c5d980b454dc4e.gif?cv=2', - }, - rift_pneumatic_dirt_displacement: { - name: 'Pneumatic Dirt Displacement Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/70bc4cb7409df8be9e1942e27b75c05f.gif?cv=2', - }, - rift_rifterranian: { - name: 'Rifterranian Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/7abd07fac15972db28231f80fd03c075.gif?cv=2', - }, - rift_mecha_tail: { - name: 'Mecha Tail Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/e329e623c6ff501d03c7077b8ecfabf9.gif?cv=2', - }, - rift_spore: { - name: 'Radioactive Ooze Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/f037c2df0d654caaadfe4c8a58a13431.gif?cv=2', - }, - rift_toxikinetic: { - name: 'Toxikinetic Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/bae7062027162025735a5ccbcaf58e5f.gif?cv=2', - }, - rift_lycan: { - name: 'Lycanoid', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/18c987fe4ec5ee678114cb748dedfb6d.gif?cv=2', - }, - rift_revenant: { - name: 'Revenant Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/a0060e929e11030025f6609a5cb81c51.gif?cv=2', - }, - rift_zombot_unipire: { - name: 'Zombot Unipire the Third', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/95be1a40ec7cf3868fb9041bf43658a8.gif?cv=2', - }, - rift_boulder_biter: { - name: 'Boulder Biter Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/7da77ad10f719afce4f17453cb964f40.gif?cv=2', - }, - rift_lambent: { - name: 'Lambent Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/b301f96263690c2a3dc02a4625aa1c9b.gif?cv=2', - }, - rift_master_exploder: { - name: 'Master Exploder Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/6d04a2ec4e21296272e080df7033a29a.gif?cv=2', - }, - rift_rancid_bog_beast: { - name: 'Rancid Bog Beast Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/5a7f8551ed42a6344e7948b18687e97d.gif?cv=2', - }, - rift_radioactive_gold: { - name: 'Super Mega Mecha Ultra RoboGold Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/022763eaba9d7f6fdbd5cddb3813d6b8.gif?cv=2', - }, - rift_toxic_avenger: { - name: 'Toxic Avenger Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/74891cb924851366d67a3632ed56fa6b.gif?cv=2', - }, - rift_monstrous_abomination: { - name: 'Monstrous Abomination Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/12dc2f226fd5e26144deb154d293e6db.gif?cv=2', - }, - rift_big_bad_burroughs: { - name: 'Big Bad Behemoth Burroughs Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/dfb15f35c1fe4bb07e2b276071a7c439.gif?cv=2', - }, - rift_assassin_beast: { - name: 'Assassin Beast Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/ddb77d3c8cad610f4270f6d1b401602c.gif?cv=2', - }, - rift_menace: { - name: 'Menace of the Rift Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/a286833ada1c4718096e30db734514a2.gif?cv=2', - }, - rift_plutonium_tentacle: { - name: 'Plutonium Tentacle Mouse', - image: - 'https://www.mousehuntgame.com/images/mice/thumb/97c996e63dab24de6ed6a089f318012e.gif?cv=2', - }, -}; - -const mouseList = { - 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', - ], - }, -}; - const hud = () => { if (! user?.quests?.QuestRiftBurroughs) { return; @@ -354,7 +91,7 @@ const hud = () => { wrapper.append(mist); - const availableMice = mouseList[mistTier]; + const availableMice = areaMice[mistTier]; const mouseWrapper = makeElement('div', 'mouse-list'); diff --git a/src/modules/location-huds/rift-burroughs/mice-name-images.json b/src/modules/location-huds/rift-burroughs/mice-name-images.json new file mode 100644 index 00000000..9497a056 --- /dev/null +++ b/src/modules/location-huds/rift-burroughs/mice-name-images.json @@ -0,0 +1,150 @@ +{ + "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" + } +} From 094c880c781c6f005f71566939a6eae7b2e9358e Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:32:12 -0500 Subject: [PATCH 07/91] Add Hide News Ticker module --- src/modules/hide-news-ticker/index.js | 18 ++++++++++++++++++ src/modules/hide-news-ticker/styles.css | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 src/modules/hide-news-ticker/index.js create mode 100644 src/modules/hide-news-ticker/styles.css diff --git a/src/modules/hide-news-ticker/index.js b/src/modules/hide-news-ticker/index.js new file mode 100644 index 00000000..5d7bbd9c --- /dev/null +++ b/src/modules/hide-news-ticker/index.js @@ -0,0 +1,18 @@ +import { addStyles } from '@utils'; + +import styles from './styles.css'; +/** + * Initialize the module. + */ +const init = async () => { + addStyles(styles, 'hide-news-ticker'); +}; + +export default { + id: 'hide-news-ticker', + name: 'Hide News Ticker', + type: 'element-hiding', + default: true, + description: 'Hides the news ticker in the header.', + load: init, +}; diff --git a/src/modules/hide-news-ticker/styles.css b/src/modules/hide-news-ticker/styles.css new file mode 100644 index 00000000..b909de93 --- /dev/null +++ b/src/modules/hide-news-ticker/styles.css @@ -0,0 +1,3 @@ +.mousehuntHeaderView-newsTicker { + display: none; +} From f7d07eb8b45437308805088ef587abc5b5853daf Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:32:50 -0500 Subject: [PATCH 08/91] Remove empty file --- src/modules/paste-hunter-id/styles.css | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/modules/paste-hunter-id/styles.css diff --git a/src/modules/paste-hunter-id/styles.css b/src/modules/paste-hunter-id/styles.css deleted file mode 100644 index e172b572..00000000 --- a/src/modules/paste-hunter-id/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* Module Template */ From bff27ad91e45f2ec06b2e9ab319b66b1ff3f593b Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:35:14 -0500 Subject: [PATCH 09/91] Move feature flags code to experiments module, add new experiments: "Iceberg progress stats always visible", "New settings styles", "New settings styles (columns)", "Scoreboard search on Hunter Profiles" --- src/modules/experiments/index.js | 69 ++++++++- .../new-settings-styles-columns/index.js | 18 +++ .../new-settings-styles-columns/styles.css | 141 ++++++++++++++++++ .../modules/new-settings-styles/index.js | 7 + .../modules/new-settings-styles/styles.css | 49 ++++++ .../profile-scoreboard-search/index.js | 94 ++++++++++++ .../profile-scoreboard-search/styles.css | 7 + .../modules/raffle/index.js} | 0 .../modules/raffle}/raffle.css | 0 .../modules/troll-mode/index.js | 0 .../modules/troll-mode/styles.css | 0 src/modules/experiments/settings/index.js | 38 ----- src/modules/feature-flags/index.js | 12 +- src/modules/feature-flags/settings/index.js | 2 +- 14 files changed, 384 insertions(+), 53 deletions(-) create mode 100644 src/modules/experiments/modules/new-settings-styles-columns/index.js create mode 100644 src/modules/experiments/modules/new-settings-styles-columns/styles.css create mode 100644 src/modules/experiments/modules/new-settings-styles/index.js create mode 100644 src/modules/experiments/modules/new-settings-styles/styles.css create mode 100644 src/modules/experiments/modules/profile-scoreboard-search/index.js create mode 100644 src/modules/experiments/modules/profile-scoreboard-search/styles.css rename src/modules/{feature-flags/modules/raffle.js => experiments/modules/raffle/index.js} (100%) rename src/modules/{feature-flags/modules => experiments/modules/raffle}/raffle.css (100%) rename src/modules/{feature-flags => experiments}/modules/troll-mode/index.js (100%) rename src/modules/{feature-flags => experiments}/modules/troll-mode/styles.css (100%) delete mode 100644 src/modules/experiments/settings/index.js diff --git a/src/modules/experiments/index.js b/src/modules/experiments/index.js index ebb4c8c9..324dd564 100644 --- a/src/modules/experiments/index.js +++ b/src/modules/experiments/index.js @@ -1,6 +1,69 @@ -import settings from './settings'; +import { getSetting } from '@utils'; -const init = () => {}; +import newSettingsStyles from './modules/new-settings-styles'; +import newSettingsStylesColumns from './modules/new-settings-styles-columns'; +import profileScoreboardSearch from './modules/profile-scoreboard-search'; +import raffle from './modules/raffle'; +import trollMode from './modules/troll-mode'; + +const experiments = [ + { + id: 'experiments.favorite-setups-toggle', + title: 'Favorite Setups button in top menu', + }, + { + id: 'experiments.fi-draggable-airship', + title: 'Floating Islands draggable airship', + }, + { + id: 'experiments.journal-history', + title: 'Journal History', + }, + { + id: 'experiments.location-hud-toggle', + title: 'Location HUD toggle button in top menu', + }, + { + id: 'experiments.lol-gottem', + title: 'Troll mode', + load: trollMode, + }, + { + id: 'experiments.raffle', + title: 'Return Raffles button', + load: raffle, + }, + { + id: 'experiments.iceberg-always-show-progress', + title: 'Iceberg progress stats always visible', + }, + { + id: 'experiments.new-settings-styles', + title: 'New settings styles', + load: newSettingsStyles, + }, + { + id: 'experiments.new-settings-styles-columns', + title: 'New settings styles (columns)', + load: newSettingsStylesColumns, + }, + { + id: 'experiments.profile-scoreboard-search', + title: 'Scoreboard search on Hunter Profiles', + load: profileScoreboardSearch, + } +]; + +const init = async () => { + // Not every experiment has a load function, because most of them are used by + // checking for the setting in their respective modules. These ones aren't contained + // in a module, so they need to be loaded here. + for (const experiment of experiments) { + if (experiment.load && getSetting(experiment.id, false)) { + experiment.load(); + } + } +}; export default { id: 'experiments', @@ -10,5 +73,5 @@ export default { default: true, order: -1, load: init, - settings + settings: () => experiments, }; diff --git a/src/modules/experiments/modules/new-settings-styles-columns/index.js b/src/modules/experiments/modules/new-settings-styles-columns/index.js new file mode 100644 index 00000000..42c37e3a --- /dev/null +++ b/src/modules/experiments/modules/new-settings-styles-columns/index.js @@ -0,0 +1,18 @@ +import { addStyles, onNavigation } from '@utils'; + +import styles from './styles.css'; + +export default async () => { + addStyles(styles, 'new-settings-styles-columns'); + + onNavigation(async () => { + const settings = document.querySelectorAll('.PagePreferences__settingsWrapper > .PagePreferences__settingsList'); + settings.forEach((setting) => { + setting.addEventListener('click', () => { + setting.classList.toggle('hover'); + }); + }); + }, { + page: 'preferences', + }); +}; diff --git a/src/modules/experiments/modules/new-settings-styles-columns/styles.css b/src/modules/experiments/modules/new-settings-styles-columns/styles.css new file mode 100644 index 00000000..e54a3d8d --- /dev/null +++ b/src/modules/experiments/modules/new-settings-styles-columns/styles.css @@ -0,0 +1,141 @@ +.mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings.active.two-column { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0 10px; +} + +.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; +} + +.two-column.mousehunt-improved-settings .mh-improved-custom-bg-preview, +.two-column.mousehunt-improved-settings .mh-improved-custom-horn-show-horn { + right: 0; +} + +.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 0 10px; + margin-right: 0; + margin-left: 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; +} + +.two-column #mousehunt-improved-settings-location-hud-wrapper { + height: 700px; + padding: 11px 0 0; + margin: 0 -10px -10px -11px; + overflow: hidden; +} + +.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; +} + +.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings.two-column .PagePreferences__settingDescription { + padding: 0; +} + +.two-column .PagePreferences__settingsList .PagePreferences__subSetting { + opacity: 0.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; +} diff --git a/src/modules/experiments/modules/new-settings-styles/index.js b/src/modules/experiments/modules/new-settings-styles/index.js new file mode 100644 index 00000000..ef142ef3 --- /dev/null +++ b/src/modules/experiments/modules/new-settings-styles/index.js @@ -0,0 +1,7 @@ +import { addStyles } from '@utils'; + +import styles from './styles.css'; + +export default async () => { + addStyles(styles, 'new-settings-styles'); +}; diff --git a/src/modules/experiments/modules/new-settings-styles/styles.css b/src/modules/experiments/modules/new-settings-styles/styles.css new file mode 100644 index 00000000..4a0c48ec --- /dev/null +++ b/src/modules/experiments/modules/new-settings-styles/styles.css @@ -0,0 +1,49 @@ +.mousehunt-improved-settings .PagePreferences__settingName, +.mousehunt-improved-settings .PagePreferences__settingDescription, +.mousehunt-improved-settings .PagePreferences__titleText { + font-family: system-ui, sans-serif; +} + +.mousehunt-improved-settings .PagePreferences__titleText { + font-weight: 200; +} + +.mousehunt-improved-settings .PagePreferences__settingName, +.mousehunt-improved-settings .PagePreferences__settingDescription { + font-weight: 400; +} + +.mousehunt-improved-settings .PagePreferences__settingDescription { + height: 0; + padding: 0; + visibility: hidden; + opacity: 0; + transition: opacity 0.3s; +} + +.mousehunt-improved-settings .PagePreferences__settingsList.active.hover .PagePreferences__subSetting, +.mousehunt-improved-settings .PagePreferences__settingsList.active:hover .PagePreferences__subSetting { + height: auto; + visibility: visible; + opacity: 1; +} + +.mousehunt-improved-settings .PagePreferences__settingsList { + padding: 5px 0; + border-color: #f2ebde; +} + +#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, +#mousehunt-improved-settings-advanced-override-flags, +.mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting { + border-color: #f2ebde; +} + +.PagePreferences__section { + padding: 10px 10px 0; +} diff --git a/src/modules/experiments/modules/profile-scoreboard-search/index.js b/src/modules/experiments/modules/profile-scoreboard-search/index.js new file mode 100644 index 00000000..4f77463e --- /dev/null +++ b/src/modules/experiments/modules/profile-scoreboard-search/index.js @@ -0,0 +1,94 @@ +import { addStyles, getData, makeElement, onNavigation } from '@utils'; + +import styles from './styles.css'; + +const main = async () => { + 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; + } + + // Duplicate the team tab and change the text to "Scoreboard" + const scoreboardTab = teamTab.cloneNode(true); + scoreboardTab.setAttribute('data-tab', 'scoreboard'); + const scoreboardTabText = scoreboardTab.querySelector('span'); + if (scoreboardTabText) { + scoreboardTabText.textContent = 'Scoreboard'; + } + + // Append it after the team tab. + teamTab.after(scoreboardTab); + + // Duplicate the team tab content and change the data-tab attribute to "scoreboard" + const scoreboardTabContent = teamTabContent.cloneNode(true); + scoreboardTabContent.setAttribute('data-tab', 'scoreboard'); + + const existingTeamTabContent = scoreboardTabContent.querySelector('.hunterInfoView-teamTab-content'); + + const tabContent = makeElement('div', 'hunterInfoView-teamTab-content'); + + const scoreboardDropdown = makeElement('select', 'mh-improved-scoreboard-dropdown'); + const scoreboards = await getData('scoreboards'); + + // Make a placeholder option. + 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 scoreboards) { + const option = makeElement('option', '', scoreboard.name); + option.value = scoreboard.id; + scoreboardDropdown.append(option); + } + + scoreboardDropdown.addEventListener('change', async (e) => { + if (e.target.value === 'placeholder' || ! friendName.getAttribute('data-text') || ! e.target.value) { + return; + } + + window.location.href = `https://www.mousehuntgame.com/scoreboards.php?tab=main&scoreboard=${e.target.value}&search=${friendName.getAttribute('data-text')}`; + }); + + tabContent.append(scoreboardDropdown); + + existingTeamTabContent.replaceWith(tabContent); + + // Append it after the team tab content. + teamTabContent.after(scoreboardTabContent); + + achievementsBlock.setAttribute('data-added-scoreboard', 'true'); +}; + +export default async () => { + addStyles(styles, 'profile-scoreboard-search'); + + onNavigation(main, { + page: 'hunterprofile', + }); +}; diff --git a/src/modules/experiments/modules/profile-scoreboard-search/styles.css b/src/modules/experiments/modules/profile-scoreboard-search/styles.css new file mode 100644 index 00000000..d3536669 --- /dev/null +++ b/src/modules/experiments/modules/profile-scoreboard-search/styles.css @@ -0,0 +1,7 @@ +.mh-improved-scoreboard-dropdown { + width: 100%; + padding: 5px; + background-color: #fff9dc; + border: 1px solid #985f42; + border-radius: 3px; +} diff --git a/src/modules/feature-flags/modules/raffle.js b/src/modules/experiments/modules/raffle/index.js similarity index 100% rename from src/modules/feature-flags/modules/raffle.js rename to src/modules/experiments/modules/raffle/index.js diff --git a/src/modules/feature-flags/modules/raffle.css b/src/modules/experiments/modules/raffle/raffle.css similarity index 100% rename from src/modules/feature-flags/modules/raffle.css rename to src/modules/experiments/modules/raffle/raffle.css diff --git a/src/modules/feature-flags/modules/troll-mode/index.js b/src/modules/experiments/modules/troll-mode/index.js similarity index 100% rename from src/modules/feature-flags/modules/troll-mode/index.js rename to src/modules/experiments/modules/troll-mode/index.js diff --git a/src/modules/feature-flags/modules/troll-mode/styles.css b/src/modules/experiments/modules/troll-mode/styles.css similarity index 100% rename from src/modules/feature-flags/modules/troll-mode/styles.css rename to src/modules/experiments/modules/troll-mode/styles.css diff --git a/src/modules/experiments/settings/index.js b/src/modules/experiments/settings/index.js deleted file mode 100644 index b0a325cb..00000000 --- a/src/modules/experiments/settings/index.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Add settings for the module. - * - * @return {Array} The settings for the module. - */ -export default async () => { - return [ - // TODO: enable this setting. - // { - // id: 'experiments.better-maps-helper', - // title: 'Better Maps Helper', - // }, - { - id: 'experiments.favorite-setups-toggle', - title: 'Favorite Setups button in top menu', - }, - { - id: 'experiments.fi-draggable-airship', - title: 'Floating Islands draggable airship', - }, - { - id: 'experiments.journal-history', - title: 'Journal History', - }, - { - id: 'experiments.location-hud-toggle', - title: 'Location HUD toggle button in top menu', - }, - { - id: 'experiments.lol-gottem', - title: 'Troll mode', - }, - { - id: 'experiments.raffle', - title: 'Return Raffles button', - } - ]; -}; diff --git a/src/modules/feature-flags/index.js b/src/modules/feature-flags/index.js index 195a7fdb..236b0239 100644 --- a/src/modules/feature-flags/index.js +++ b/src/modules/feature-flags/index.js @@ -1,9 +1,7 @@ -import { getFlag, getSetting } from '@utils'; +import { getFlag } from '@utils'; -import raffle from './modules/raffle'; import rankupForecaster from './modules/rank-up-forecaster'; import socialNoop from './modules/social'; -import trollMode from './modules/troll-mode'; import settings from './settings'; @@ -11,14 +9,6 @@ import settings from './settings'; * Initialize the module. */ const init = async () => { - if (getSetting('experiments.raffle')) { - raffle(); - } - - if (getSetting('experiments.lol-gottem')) { - trollMode(); - } - if (getFlag('social-noop') || getFlag('twitter')) { socialNoop(); } diff --git a/src/modules/feature-flags/settings/index.js b/src/modules/feature-flags/settings/index.js index f0f72158..c0e5dda0 100644 --- a/src/modules/feature-flags/settings/index.js +++ b/src/modules/feature-flags/settings/index.js @@ -8,7 +8,7 @@ export default async () => { id: 'override-flags', title: 'Feature Flags', default: '', - description: 'Comma separated list of feature flags to enable.', + description: 'Comma separated list of feature flags to enable.', settings: { type: 'input', }, From 252d47c1d703de1b818c66cf0f5351576d09f0da Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:49:17 -0500 Subject: [PATCH 10/91] =?UTF-8?q?Adds=20new=20=E2=80=98Hide=20max=20quanti?= =?UTF-8?q?ty=20owned=E2=80=99=20setting,=20Adds=20new=20setting=20to=20sh?= =?UTF-8?q?ow=20quantity=20buttons=20for=20buy=20amount,=20Adds=20ability?= =?UTF-8?q?=20to=20hit=20enter=20while=20typing=20in=20an=20input=20field?= =?UTF-8?q?=20instead=20of=20clicking=20the=20buy=20button.=20Hitting=20en?= =?UTF-8?q?ter=20a=20second=20time=20will=20confirm=20it.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/better-shops/index.js | 104 +++++++++++++++----- src/modules/better-shops/max-owned-hide.css | 3 + src/modules/better-shops/qty-buttons.css | 23 +++++ src/modules/better-shops/qty-buttons.js | 68 +++++++++++++ src/modules/better-shops/settings/index.js | 19 ++++ src/modules/better-shops/styles/cost.css | 6 ++ src/modules/better-shops/styles/general.css | 13 +++ 7 files changed, 209 insertions(+), 27 deletions(-) create mode 100644 src/modules/better-shops/max-owned-hide.css create mode 100644 src/modules/better-shops/qty-buttons.css create mode 100644 src/modules/better-shops/qty-buttons.js create mode 100644 src/modules/better-shops/settings/index.js diff --git a/src/modules/better-shops/index.js b/src/modules/better-shops/index.js index b5786550..bae619a3 100644 --- a/src/modules/better-shops/index.js +++ b/src/modules/better-shops/index.js @@ -1,32 +1,72 @@ -import { addStyles, getCurrentPage, onNavigation, onRequest } from '@utils'; +import { + addStyles, + getCurrentPage, + getSetting, + onNavigation, + onRequest +} from '@utils'; -import * as imported from './styles/*.css'; // eslint-disable-line import/no-unresolved -const styles = imported; +import settings from './settings'; -const updatePlaceholderText = () => { - const purchaseBlocks = document.querySelectorAll('.itemPurchaseView-action-state.view'); - if (purchaseBlocks) { - purchaseBlocks.forEach((block) => { - const qty = block.querySelector('.itemPurchaseView-action-maxPurchases'); - if (! qty) { - return; - } +import qtyButtons from './qty-buttons'; +import qtyButtonsStyles from './qty-buttons.css'; - let maxQty = qty.innerText; - if (maxQty.includes('Inventory max')) { - maxQty = 0; - } +import maxOwnedHide from './max-owned-hide.css'; - const input = block.querySelector('input'); - if (! input) { - return; - } - - // maxQty = parseInt(maxQty) ? parseInt(maxQty) + 1 : 0; +import * as imported from './styles/*.css'; // eslint-disable-line import/no-unresolved +const styles = imported; - input.setAttribute('placeholder', maxQty); - }); +const updateInputField = async () => { + 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); + + // listen for the enter key when the input is focused + 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)) { + qtyButtons(block, input, maxQty); + } + }); }; const main = () => { @@ -68,7 +108,7 @@ const main = () => { }); } - updatePlaceholderText(); + updateInputField(); const owned = document.querySelectorAll('.itemPurchaseView-action-purchaseHelper-owned'); if (owned) { @@ -91,7 +131,6 @@ const main = () => { const kingsCart = document.querySelectorAll('.itemPurchaseView-container.kingsCartItem'); if (kingsCart) { kingsCart.forEach((cart) => { - // cart.classList.remove('kingsCartItem'); cart.querySelector('input').value = ''; }); } @@ -136,13 +175,23 @@ const main = () => { * Initialize the module. */ const init = async () => { - addStyles(styles, 'better-shops'); + const stylesToAdd = [...styles]; + + if (getSetting('better-shops.hide-max-owned', false)) { + stylesToAdd.push(maxOwnedHide); + } + + if (getSetting('better-shops.show-qty-buttons', true)) { + stylesToAdd.push(qtyButtonsStyles); + } + + addStyles(stylesToAdd, 'better-shops'); onNavigation(main, { page: 'shops', }); - onRequest('purchases/itempurchase.php', updatePlaceholderText); + onRequest('purchases/itempurchase.php', updateInputField); }; export default { @@ -152,4 +201,5 @@ export default { default: true, description: 'Updates the Shop layout and appearance, minimizes owned items that have an inventory limit of 1, and more.', load: init, + settings, }; diff --git a/src/modules/better-shops/max-owned-hide.css b/src/modules/better-shops/max-owned-hide.css new file mode 100644 index 00000000..1e54af35 --- /dev/null +++ b/src/modules/better-shops/max-owned-hide.css @@ -0,0 +1,3 @@ +.mousehuntHud-page-subTabContent.hasShop.active .itemPurchaseView-container.own_max { + display: none !important; +} diff --git a/src/modules/better-shops/qty-buttons.css b/src/modules/better-shops/qty-buttons.css new file mode 100644 index 00000000..15a58e41 --- /dev/null +++ b/src/modules/better-shops/qty-buttons.css @@ -0,0 +1,23 @@ +.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; +} diff --git a/src/modules/better-shops/qty-buttons.js b/src/modules/better-shops/qty-buttons.js new file mode 100644 index 00000000..53e46563 --- /dev/null +++ b/src/modules/better-shops/qty-buttons.js @@ -0,0 +1,68 @@ +import { makeElement } from '@utils'; + +export default async (block, input, maxQty) => { + const existingButtons = block.querySelector('.mh-improved-shop-buy-controls'); + if (existingButtons) { + return; + } + + // if max qty has a comma, remove it + 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(-10); + makeMathButton(-5); + makeMathButton(-1); + makeMathButton(1); + makeMathButton(5); + makeMathButton(10); + + 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); + + // Find the closest parent element with the class 'itemPurchaseView-action-form' and append the buyControls to it. + const form = block.querySelector('.itemPurchaseView-action-form'); + if (form) { + form.append(buyControls); + } else { + block.append(buyControls); + } +}; diff --git a/src/modules/better-shops/settings/index.js b/src/modules/better-shops/settings/index.js new file mode 100644 index 00000000..3e2647b8 --- /dev/null +++ b/src/modules/better-shops/settings/index.js @@ -0,0 +1,19 @@ +/** + * Add settings for the module. + * + * @return {Array} The settings for the module. + */ +export default async () => { + 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, + } + ]; +}; diff --git a/src/modules/better-shops/styles/cost.css b/src/modules/better-shops/styles/cost.css index 4c505ff2..88e98258 100644 --- a/src/modules/better-shops/styles/cost.css +++ b/src/modules/better-shops/styles/cost.css @@ -28,6 +28,7 @@ } .itemPurchaseView-action-quantity { + flex-grow: 1; width: auto; margin: 0 5px 0 10px; } @@ -96,3 +97,8 @@ a.itemPurchaseView-action-form-button.sell { .itemPurchaseView-action-purchaseHelper-error { height: auto; } + +.itemPurchaseView-action-purchaseHelper-maxPurchasesLimitReached { + margin-bottom: 5px; + font-size: 11px; +} diff --git a/src/modules/better-shops/styles/general.css b/src/modules/better-shops/styles/general.css index bd343124..2865c96e 100644 --- a/src/modules/better-shops/styles/general.css +++ b/src/modules/better-shops/styles/general.css @@ -541,3 +541,16 @@ a.itemPurchaseView-action-buySuperBrie { .itemViewStatBlock-stat-helper-arrow::after { border-top: 10px solid #000; } + +.itemPurchaseView-container .itemPurchaseView-action-form { + min-height: 50px; +} + +.itemPurchaseView-action-itemCost-table-cell { + font-size: 11px; +} + +.itemPurchaseView-action-confirm-button:focus, +.itemPurchaseView-action-confirm-button:hover { + filter: hue-rotate(50deg); +} From d3e818defc8f14597192374ddfae4043dd15329a Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:50:42 -0500 Subject: [PATCH 11/91] =?UTF-8?q?Adds=20a=20=E2=80=98Show=20Drop=20Rates?= =?UTF-8?q?=E2=80=99=20setting=20for=20Better=20Item=20View,=20Adds=20a=20?= =?UTF-8?q?=E2=80=98Show=20Attraction=20Rates=E2=80=99=20setting,=20misc?= =?UTF-8?q?=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/better-item-view/index.js | 30 ++++++++++++------- .../better-item-view/settings/index.js | 14 +++++++++ src/modules/better-mice/index.js | 10 +++++-- src/modules/better-mice/settings/index.js | 14 +++++++++ src/modules/better-mice/styles.css | 1 + 5 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 src/modules/better-item-view/settings/index.js create mode 100644 src/modules/better-mice/settings/index.js diff --git a/src/modules/better-item-view/index.js b/src/modules/better-item-view/index.js index 5459c80e..01122efd 100644 --- a/src/modules/better-item-view/index.js +++ b/src/modules/better-item-view/index.js @@ -1,6 +1,7 @@ import { addStyles, getArForMouse, + getSetting, makeElement, makeLink, makeTooltip, @@ -8,6 +9,8 @@ import { onPageChange } from '@utils'; +import settings from './settings'; + import styles from './styles.css'; /** @@ -78,10 +81,14 @@ const updateItemView = async () => { addLinks(itemId); - // dont show drop rates for items that arent consistent. + if (! getSetting('better-item-view.show-drop-rates', true)) { + return; + } + + // don't show drop rates for items that aren't consistent. const id = Number.parseInt(itemId, 10); const ignored = [ - 2473, // mina's gift + 2473, // Mina's gift 823, // party charm 803, // chrome charm 420, // king's credits @@ -93,8 +100,8 @@ const updateItemView = async () => { return; } - let mhctjson = await getArForMouse(itemId, 'item'); - if (! mhctjson || mhctjson === undefined) { + let mhctJson = await getArForMouse(itemId, 'item'); + if (! mhctJson || mhctJson === undefined) { return; } @@ -111,7 +118,7 @@ const updateItemView = async () => { makeTooltip({ appendTo: titleText, - text: 'The best location and bait, according to data gathered by MHCT.', + text: 'The best location and bait, according to data gathered by MHCT.', }); const link = makeElement('a', 'ar-link', 'View on MHCT →'); @@ -123,18 +130,18 @@ const updateItemView = async () => { const itemsArWrapper = makeElement('div', 'item-ar-wrapper'); // check if there are stages in any of the item - const hasStages = mhctjson.some((itemAr) => itemAr.stage); + const hasStages = mhctJson.some((itemAr) => itemAr.stage); if (hasStages) { itemsArWrapper.classList.add('has-stages'); } - // shrink the mhctjson array to only include items with non-zero drop rates and a maxiumum of 15 items - mhctjson = mhctjson + // shrink the mhct json array to only include items with non-zero drop rates and a maximum of 15 items + mhctJson = mhctJson .filter((itemAr) => Number.parseInt(itemAr.drop_pct, 10) > 0) - .slice(0, 15); + .slice(0, 10); - mhctjson.forEach((itemAr) => { + mhctJson.forEach((itemAr) => { const dropPercent = Number.parseInt(itemAr.drop_pct, 10).toFixed(2); if (dropPercent !== '0.00') { const itemArWrapper = makeElement('div', 'mouse-ar-wrapper'); @@ -152,7 +159,7 @@ const updateItemView = async () => { } }); - if (mhctjson.length > 0) { + if (mhctJson.length > 0) { arWrapper.append(itemsArWrapper); container.append(arWrapper); } @@ -174,4 +181,5 @@ export default { default: true, description: 'Updates the styles and shows drop rates, links to MHCT, and MH Wiki.', load: init, + settings, }; diff --git a/src/modules/better-item-view/settings/index.js b/src/modules/better-item-view/settings/index.js new file mode 100644 index 00000000..2cac38e7 --- /dev/null +++ b/src/modules/better-item-view/settings/index.js @@ -0,0 +1,14 @@ +/** + * Add settings for the module. + * + * @return {Array} The settings for the module. + */ +export default async () => { + return [ + { + id: 'better-item-view.show-drop-rates', + title: 'Show drop rates', + default: true, + }, + ]; +}; diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index eef9c3c2..012dbc13 100644 --- a/src/modules/better-mice/index.js +++ b/src/modules/better-mice/index.js @@ -3,6 +3,8 @@ import { addSubmenuItem, doRequest, getArForMouse, + getData, + getSetting, makeElement, makeFavoriteButton, makeLink, @@ -10,9 +12,8 @@ import { onOverlayChange } from '@utils'; -import { getData } from '@utils/data'; - import mousePage from './mouse-page'; +import settings from './settings'; import styles from './styles.css'; @@ -246,6 +247,10 @@ const updateMouseView = async () => { 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); @@ -373,4 +378,5 @@ export default { 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: init, + settings, }; diff --git a/src/modules/better-mice/settings/index.js b/src/modules/better-mice/settings/index.js new file mode 100644 index 00000000..d764162e --- /dev/null +++ b/src/modules/better-mice/settings/index.js @@ -0,0 +1,14 @@ +/** + * Add settings for the module. + * + * @return {Array} The settings for the module. + */ +export default async () => { + return [ + { + id: 'better-mice.show-attraction-rates', + title: 'Show attraction rates', + default: true, + }, + ]; +}; diff --git a/src/modules/better-mice/styles.css b/src/modules/better-mice/styles.css index ab5353f6..fc97fd06 100644 --- a/src/modules/better-mice/styles.css +++ b/src/modules/better-mice/styles.css @@ -328,6 +328,7 @@ ul.minluck-list { .mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image, .mouseCrownsView-group-mouse-image { + background-position: center; background-size: 100%; transition: 0.4s; } From d82c59d41d7a9acee565110d24760809cecf1a5a Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:51:14 -0500 Subject: [PATCH 12/91] remove news ticker from adblock, use the standalone module --- src/modules/adblock/styles.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/adblock/styles.css b/src/modules/adblock/styles.css index 1e80ab36..fe949a14 100644 --- a/src/modules/adblock/styles.css +++ b/src/modules/adblock/styles.css @@ -6,7 +6,6 @@ .journalactions a[data-share-type="journal"], .journalactions a[data-type="journal"], .mousehuntHeaderView-gameBanner, -.mousehuntHeaderView-newsTicker, .pageSidebarView .fb-page, .socialLink, .newsPostFacebookContainer, From 62aa9fb5badcebe85dc2f21357e9a5edd836f1be Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:51:57 -0500 Subject: [PATCH 13/91] Fixes the recipe results tooltip not showing quickly & not caching the data in better inventory --- src/modules/better-inventory/recipes.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/better-inventory/recipes.js b/src/modules/better-inventory/recipes.js index e3870aa9..34abd62a 100644 --- a/src/modules/better-inventory/recipes.js +++ b/src/modules/better-inventory/recipes.js @@ -1,4 +1,6 @@ import { + cacheGet, + cacheSet, getCurrentSubtab, getCurrentTab, getUserItems, @@ -148,6 +150,10 @@ const modifySmashableTooltip = async () => { return; } + item.addEventListener('mouseleave', () => { + item.classList.remove('new-tooltip-loading'); + }); + item.addEventListener('mouseenter', async () => { if (item.getAttribute('data-new-tooltip') === 'newTooltip') { return; @@ -160,7 +166,14 @@ const modifySmashableTooltip = async () => { const itemType = item.getAttribute('data-item-type'); producedItem.push(itemType); - const itemData = await getUserItems(producedItem); + item.classList.add('new-tooltip-loading'); + + let itemData = await cacheGet(`smashable-${producedItem.join('-')}`); + if (! itemData) { + itemData = await getUserItems(producedItem); + cacheSet(`smashable-${producedItem.join('-')}`, itemData); + } + if (! itemData || ! itemData[0]) { return; } @@ -211,6 +224,8 @@ const modifySmashableTooltip = async () => { }); tooltip.parentNode.insertBefore(tooltipWrapper, tooltip.nextSibling); + + item.classList.remove('new-tooltip-loading'); }); }); }; From 58f49207526d7ca9a1ec372187c0a48785016d69 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:52:56 -0500 Subject: [PATCH 14/91] minor cleanup --- src/modules/custom-background/index.js | 1 + src/modules/custom-horn/index.js | 1 + src/modules/custom-hud/index.js | 10 +++++----- src/modules/debug/settings/index.js | 4 ---- src/modules/error-reporting/index.js | 2 +- src/modules/global-styles/styles/buttons.css | 16 ++++++++-------- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/modules/custom-background/index.js b/src/modules/custom-background/index.js index 88224d48..7a50cfff 100644 --- a/src/modules/custom-background/index.js +++ b/src/modules/custom-background/index.js @@ -106,6 +106,7 @@ const addPreview = () => { previewLink.addEventListener('click', (e) => { e.preventDefault(); + e.stopPropagation(); let content = ''; gradients.forEach((gradient) => { diff --git a/src/modules/custom-horn/index.js b/src/modules/custom-horn/index.js index 5b9d3fa8..94e73b4b 100644 --- a/src/modules/custom-horn/index.js +++ b/src/modules/custom-horn/index.js @@ -55,6 +55,7 @@ const addPreview = () => { let timeout = null; previewLink.addEventListener('click', (e) => { e.preventDefault(); + e.stopPropagation(); const horn = document.querySelector('.huntersHornView__horn'); if (! horn) { diff --git a/src/modules/custom-hud/index.js b/src/modules/custom-hud/index.js index 2399ed98..5a1656bd 100644 --- a/src/modules/custom-hud/index.js +++ b/src/modules/custom-hud/index.js @@ -16,20 +16,20 @@ const addStyleEl = () => { let style; - const pedastal = 'https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif?asset_cache_version=2'; + const pedestal = 'https://www.mousehuntgame.com/images/ui/hud/mousehuntHudPedestal.gif?asset_cache_version=2'; // eslint-disable-next-line unicorn/prefer-ternary if ('hud-blueprint' === setting) { style = `body .mousehuntHud-marbleDrawer { background: - url(${pedastal}) -46px 0 no-repeat, - url(${pedastal}) 731px 0 no-repeat, + url(${pedestal}) -46px 0 no-repeat, + url(${pedestal}) 731px 0 no-repeat, url(https://i.mouse.rip/mh-improved/custom-hud/${setting}.png) repeat-y top center; }`; } else { style = `body .mousehuntHud-marbleDrawer { background: - url(${pedastal}) -46px 0 no-repeat, - url(${pedastal}) 731px 0 no-repeat, + url(${pedestal}) -46px 0 no-repeat, + url(${pedestal}) 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; } diff --git a/src/modules/debug/settings/index.js b/src/modules/debug/settings/index.js index 1cfb00f9..35042b72 100644 --- a/src/modules/debug/settings/index.js +++ b/src/modules/debug/settings/index.js @@ -33,10 +33,6 @@ export default async () => { id: 'debug.request', title: 'Log remote requests and responses' }, - { - id: 'debug.update-migration', - title: 'Log update migrations' - }, { id: 'debug.sentry', title: 'Set Sentry to debug mode' diff --git a/src/modules/error-reporting/index.js b/src/modules/error-reporting/index.js index c4a54d85..473ef7d7 100644 --- a/src/modules/error-reporting/index.js +++ b/src/modules/error-reporting/index.js @@ -8,5 +8,5 @@ export default { description: 'Send anonymous error reports to the developers.', default: true, order: 1000, - load: init, + load: () => {}, }; diff --git a/src/modules/global-styles/styles/buttons.css b/src/modules/global-styles/styles/buttons.css index d1c84f62..dd3d98b1 100644 --- a/src/modules/global-styles/styles/buttons.css +++ b/src/modules/global-styles/styles/buttons.css @@ -21,31 +21,31 @@ opacity: 0.5; } -a.mousehuntActionButton.success::before { +.mousehuntActionButton.success::before { background-color: #00ff59; box-shadow: 0 0 10px #beff99 inset; } -a.mousehuntActionButton.success { +.mousehuntActionButton.success { background-color: #97f990; } -a.mousehuntActionButton.success:hover::before, -a.mousehuntActionButton.success:focus::before { +.mousehuntActionButton.success:hover::before, +.mousehuntActionButton.success:focus::before { background-color: #00ff59; } -a.mousehuntActionButton.danger::before { +.mousehuntActionButton.danger::before { background-color: #f27b6a; box-shadow: 0 0 10px #ffa5a5 inset; } -a.mousehuntActionButton.danger { +.mousehuntActionButton.danger { background-color: #ffa5a5; } -a.mousehuntActionButton.danger:hover::before, -a.mousehuntActionButton.danger:focus::before { +.mousehuntActionButton.danger:hover::before, +.mousehuntActionButton.danger:focus::before { background-color: #ffa5a5; } From 93eb0522e8376a9b3865e5d1ad4ee56aca20d3c0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:53:02 -0500 Subject: [PATCH 15/91] Add styles --- src/modules/global-styles/styles/buttons.css | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/modules/global-styles/styles/buttons.css b/src/modules/global-styles/styles/buttons.css index dd3d98b1..edac1cd9 100644 --- a/src/modules/global-styles/styles/buttons.css +++ b/src/modules/global-styles/styles/buttons.css @@ -52,3 +52,19 @@ .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; +} From edad4bef492503d61c63a9450fb7876e262200f2 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:53:34 -0500 Subject: [PATCH 16/91] rewrote much of image upscaling for better performance and memory usage[D --- src/modules/image-upscaling/index.js | 122 +++++++++++++++++++-------- 1 file changed, 85 insertions(+), 37 deletions(-) diff --git a/src/modules/image-upscaling/index.js b/src/modules/image-upscaling/index.js index bb41b759..2d2aa53b 100644 --- a/src/modules/image-upscaling/index.js +++ b/src/modules/image-upscaling/index.js @@ -1,4 +1,4 @@ -import { addStyles, onDialogShow } from '@utils'; +import { addStyles, onDialogShow, onEvent, onRequest } from '@utils'; import { getData } from '@utils/data'; import pathsToSkip from '@data/upscaled-images-to-skip.json'; @@ -155,30 +155,33 @@ const upscaleBackgroundImages = async () => { }); }; -const upscaleImages = async (observer) => { +let lastUpscaledRan = 0; +const upscaleImages = async () => { if (isUpscaling) { return; } - // Pause the observer while we are making changes. - if (observer) { - observer.disconnect(); + isUpscaling = true; + + // check when we last ran the upscale function and if it was less than 1 second ago, skip the upscale. + if (lastUpscaledRan > Date.now() - 100) { + // return; } - isUpscaling = true; + lastUpscaledRan = Date.now(); + + observer.disconnect(); // Upscale the images. - await upscaleImages(); + await upscaleImageElements(); await upscaleBackgroundImages(); - // Resume the observer. - if (observer) { - observer.observe(document, observerOptions); - } - isUpscaling = false; - // return a promise that resolves when all the images have been upscaled. - return Promise.all([upscaleImageElements(), upscaleBackgroundImages()]); + + // Reconnect the observer + observer.observe(document, observerOptions); + + return true; }; const unupscaledImages = []; @@ -194,44 +197,89 @@ const observerOptions = { }; let mapping = []; - +let observer; /** * Initialize the module. */ +const main = async () => { + observer = new MutationObserver(async (mutations) => { + const skipClasses = 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 = new Set([ + 'mh-improved-cre', + 'mhhh_flast_message_div', + ]); + + const skipElements = 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; + } + + await upscaleImages(); + } + }); + + observer.observe(document, observerOptions); +}; + const init = async () => { addStyles([styles, journalThemeStyles, viewsStyles], 'image-upscaling'); mapping = await getData('upscaled-images'); - mapping['items/trinkets/1dd7ea1380d9193ae1be9fb13335272d.gif'] = 'https://i.mouse.rip/upscaled/uluck.png'; - mapping['items/trinkets/large/07cee94773b821f8db533d23ff511643.png'] = 'https://i.mouse.rip/upscaled/uluck.png'; - mapping['items/trinkets/transparent_thumb/88917c0fb84e407929193251b8362496.png'] = 'https://i.mouse.rip/upscaled/uluck.png'; + onEvent('mh-improved-init', main); - const observer = new MutationObserver(async (mutations) => { - for (const mutation of mutations) { - // Don't run when it's the horn counting down. - if (mutation.type === 'childList' && mutation.target.classList.contains('huntersHornView__timerState')) { - continue; - } + main(); - // Don't run on the news ticker. - if (mutation.type === 'attributes' && mutation.target.classList.contains('ticker')) { - continue; - } - - // Pause the observer while we are making changes. - observer.disconnect(); + onDialogShow('all', () => { + setTimeout(upscaleImages, 500); + }); - upscaleImages(observer); + onRequest('*', () => { + if (isUpscaling) { + return; } + + setTimeout(upscaleImages, 500); }); - observer.observe(document, observerOptions); + onEvent('journal-entry', () => { + isUpscaling = true; + }); - onDialogShow('all', () => { - setTimeout(() => { - upscaleImages(); - }, 500); + onEvent('journal-entries', () => { + isUpscaling = false; }); }; From d245f5b7c5da24d8323be6ca4ef57d1724a0ae49 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:54:31 -0500 Subject: [PATCH 17/91] Fix show auras duplicating and behaving oddly, fix styles and display --- src/modules/show-auras/grid.css | 5 +++-- src/modules/show-auras/icons.css | 2 +- src/modules/show-auras/index.js | 16 ++++++++-------- src/modules/show-auras/list.css | 3 ++- src/modules/show-auras/settings/index.js | 2 +- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/modules/show-auras/grid.css b/src/modules/show-auras/grid.css index a1a8e5d3..097e96da 100644 --- a/src/modules/show-auras/grid.css +++ b/src/modules/show-auras/grid.css @@ -7,7 +7,7 @@ flex-flow: row nowrap; justify-content: space-evenly; padding: 5px 0; - margin-top: 10px; + margin: 5px 0; } .mh-improved-aura-view .aura { @@ -15,6 +15,7 @@ flex-direction: column; align-content: center; align-items: center; + min-width: 50px; } .mh-improved-aura-view .trapImageView-trapAura, @@ -34,7 +35,7 @@ flex-direction: column; align-items: center; justify-content: center; - margin: 0 5px; + margin: 2px 5px 0; font-weight: 400; line-height: 1.5; text-align: center; diff --git a/src/modules/show-auras/icons.css b/src/modules/show-auras/icons.css index 29865245..5f7e7ce1 100644 --- a/src/modules/show-auras/icons.css +++ b/src/modules/show-auras/icons.css @@ -3,7 +3,7 @@ flex-flow: row nowrap; justify-content: space-evenly; padding: 5px; - margin-bottom: 10px; + margin: 5px 0; } .mh-improved-aura-view .trapImageView-trapAura, diff --git a/src/modules/show-auras/index.js b/src/modules/show-auras/index.js index a4215797..b2ab72e2 100644 --- a/src/modules/show-auras/index.js +++ b/src/modules/show-auras/index.js @@ -37,7 +37,7 @@ const getExpiryFormatted = (time) => { }; const getExpiryRemainingFormatted = (time) => { - const units = ['y', 'mo', 'w', 'd', 'h', 'm']; + const units = ['d', 'h']; const duration = humanizer(time, { round: true, @@ -52,7 +52,7 @@ const getExpiryRemainingFormatted = (time) => { const addExpiryWarning = () => { // if any of the auras are expiring soon, show a notification // const soon = aurasExpiry.filter((aura) => aura.time < 60 * 60 * 24); - const soon = aurasExpiry.filter((aura) => aura.time < 60 * 60 * 24 * 40); // TODO: figure out the time that's worht a warning + const soon = aurasExpiry.filter((aura) => aura.time < 60 * 60 * 24 * 40); // TODO: figure out the time that's worth a warning if (soon.length) { // add a class to the aura to show it's expiring soon soon.forEach((aura) => { @@ -67,6 +67,11 @@ const addTrapBlock = () => { return; } + const existing = document.querySelector('#mh-improved-aura-view'); + if (existing) { + existing.remove(); + } + const auraTrapBlock = makeElement('div', ['mh-improved-aura-view', 'campPage-trap-trapEffectiveness']); auraTrapBlock.id = 'mh-improved-aura-view'; @@ -90,12 +95,7 @@ const addTrapBlock = () => { auraTrapBlock.append(auraEl); }); - const existing = document.querySelector('#mh-improved-aura-view'); - if (existing) { - existing.replaceWith(auraTrapBlock); - } else { - trapSummary.append(auraTrapBlock); - } + trapSummary.append(auraTrapBlock); }; const getAuras = () => { diff --git a/src/modules/show-auras/list.css b/src/modules/show-auras/list.css index 68edd0f4..5bb67408 100644 --- a/src/modules/show-auras/list.css +++ b/src/modules/show-auras/list.css @@ -4,7 +4,7 @@ gap: 10px; justify-content: space-evenly; padding: 5px; - margin-bottom: 10px; + margin: 5px 0; } .mh-improved-aura-view .trapImageView-trapAura, @@ -23,6 +23,7 @@ display: grid; grid-template-columns: 35px 1fr 4fr; place-items: center stretch; + min-width: 50px; margin: 3 0; } diff --git a/src/modules/show-auras/settings/index.js b/src/modules/show-auras/settings/index.js index 0a50518f..17386047 100644 --- a/src/modules/show-auras/settings/index.js +++ b/src/modules/show-auras/settings/index.js @@ -12,7 +12,7 @@ export default async () => { description: '', }, { - id: 'journal-changer.icons', + id: 'show-auras.icons', title: 'Only show icons', default: false, description: '', From df18ba771eff7b4fdcde58149c5e387264d68762 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:55:48 -0500 Subject: [PATCH 18/91] Fixes bugs with favorite setups showing, saves location where setup was saved and suggested setups when in that location --- src/modules/favorite-setups/index.js | 94 +++++++++++++++++++------- src/modules/favorite-setups/styles.css | 69 +++++++++++++------ 2 files changed, 118 insertions(+), 45 deletions(-) diff --git a/src/modules/favorite-setups/index.js b/src/modules/favorite-setups/index.js index 9e379268..31e6336e 100644 --- a/src/modules/favorite-setups/index.js +++ b/src/modules/favorite-setups/index.js @@ -4,6 +4,7 @@ import { createPopup, debuglog, doRequest, + getCurrentLocation, getCurrentPage, getHeaders, getSetting, @@ -19,7 +20,10 @@ import { import styles from './styles.css'; const getFavoriteSetups = () => { - return getSetting('favorite-setups.setups', []); + const faves = getSetting('favorite-setups.setups', []); + + // remove any that are just null. + return faves.filter(Boolean); }; const saveFavoriteSetup = async (setup, useGeneratedName = true) => { @@ -81,6 +85,7 @@ const getCurrentSetup = () => { weapon_id: user.weapon_item_id, trinket_id: user.trinket_item_id, power_type: user?.trap_power_type_name.toLowerCase(), + location: getCurrentLocation(), }); }; @@ -315,10 +320,14 @@ const armItem = async (items) => { }; const makeBlueprintRow = async (setup, isCurrent = false) => { + if (! setup) { + return; + } + const setupContainer = makeElement('div', ['row']); const controls = makeElement('div', ['controls']); - makeElement('div', ['label'], setup.name, controls); + makeElement('div', ['label'], setup?.name || '', controls); let hasHighlighted = false; const buttonWrapper = makeElement('div', ['button-wrapper']); @@ -329,13 +338,14 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { callback: async () => { // Save the current setup, using the current location as the name. let currentSetup = getCurrentSetup(); - currentSetup.id = `${setup.bait_id}-${setup.base_id}-${setup.weapon_id}-${setup.trinket_id}`; + + currentSetup.id = `${setup?.bait_id}-${setup?.base_id}-${setup?.weapon_id}-${setup?.trinket_id}`; // if the setup already exists, then just alert the user. const setups = getFavoriteSetups(); if (setups.length) { - const existingSetup = setups.find((s) => s.id === currentSetup.id); + const existingSetup = setups.find((s) => s?.id && (s.id === currentSetup.id)); if (existingSetup && ! hasHighlighted) { // flash the row. const row = document.querySelector(`.mh-improved-favorite-setups-blueprint-container .row[data-setup-id="${currentSetup.id}"]`); @@ -377,7 +387,11 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { return; } - const index = setups.findIndex((s) => s.id === setupId); + if (! setupId) { + return; + } + + const index = setups.findIndex((s) => s?.id && (s.id === setupId)); const thisSetup = setups[index]; if (! thisSetup) { @@ -494,8 +508,6 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { imageDisplay.style.backgroundImage = `url(${newItemImageUrl})`; }); - - // save the new item id. }); }); @@ -515,8 +527,8 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { } // Swap the setups. - const index = setups.findIndex((s) => s.id === setupId); - const previousIndex = setups.findIndex((s) => s.id === previous.getAttribute('data-setup-id')); + const index = setups.findIndex((s) => s?.id && (s.id === setupId)); + const previousIndex = setups.findIndex((s) => s?.id === previous.getAttribute('data-setup-id')); const temp = setups[index]; setups[index] = setups[previousIndex]; @@ -541,8 +553,8 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { } // Swap the setups. - const index = setups.findIndex((s) => s.id === setupId); - const nextIndex = setups.findIndex((s) => s.id === next.getAttribute('data-setup-id')); + const index = setups.findIndex((s) => s?.id && (s.id === setupId)); + const nextIndex = setups.findIndex((s) => s?.id && (s.id === next.getAttribute('data-setup-id'))); const temp = setups[index]; setups[index] = setups[nextIndex]; @@ -622,7 +634,7 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { setups = []; } - const index = setups.findIndex((s) => s.id === setupId); + const index = setups.findIndex((s) => s?.id && (s.id === setupId)); // generate a random ID so it's unique. newSetup.id = Math.random().toString(36).slice(2, 15) + Math.random().toString(36).slice(2, 15); @@ -691,7 +703,7 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { setups = []; } - const index = setups.findIndex((s) => s.id === setupId); + const index = setups.findIndex((s) => s?.id && (s.id === setupId)); setups.splice(index, 1); saveSetting('favorite-setups.setups', setups); @@ -709,10 +721,10 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { const needThumbnails = []; const items = [ - setup.bait_id, - setup.base_id, - setup.weapon_id, - setup.trinket_id, + setup?.bait_id || 0, + setup?.base_id || 0, + setup?.weapon_id || 0, + setup?.trinket_id || 0, ]; for (const item of items) { @@ -740,7 +752,7 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { cachedThumbnails = thumbnails; } - const powerTypeId = getPowerTypeId(setup.power_type); + const powerTypeId = getPowerTypeId(setup?.power_type); const powertype = makeElement('div', ['campPage-trap-itemBrowser-item-powerType', powerTypeId]); if (! powerTypeId) { powertype.classList.add('hidden'); @@ -777,7 +789,41 @@ const makeBlueprintContainer = async () => { 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 = await 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 = await makeBlueprintRow(setup); setupContainer.setAttribute('data-setup-id', setup.id); @@ -801,13 +847,13 @@ const getNameOfCurrentSetup = () => { const currentSetup = getCurrentSetup(); const setup = setups.find((s) => { - return s.bait_id === currentSetup.bait_id && - s.base_id === currentSetup.base_id && - s.weapon_id === currentSetup.weapon_id && - s.trinket_id === currentSetup.trinket_id; + return s?.bait_id === currentSetup?.bait_id && + s?.base_id === currentSetup?.base_id && + s?.weapon_id === currentSetup?.weapon_id && + s?.trinket_id === currentSetup?.trinket_id; }); - if (setup) { + if (setup && setup.name) { return setup.name; } @@ -838,7 +884,7 @@ const addFavoriteSetupsButton = () => { return; } - const button = makeElement('a', ['mh-improved-favorite-setups-button', 'campPage-trap-trapEffectiveness']); + 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']); diff --git a/src/modules/favorite-setups/styles.css b/src/modules/favorite-setups/styles.css index 67dc0532..daa17b39 100644 --- a/src/modules/favorite-setups/styles.css +++ b/src/modules/favorite-setups/styles.css @@ -1,5 +1,17 @@ .mh-improved-favorite-setups-button { - margin: 10px 0; + 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 { @@ -22,7 +34,7 @@ } .mh-improved-favorite-setups-blueprint-container .header { - margin: 10px 0; + margin-top: 10px; font-size: 13px; color: #926944; text-align: center; @@ -30,26 +42,40 @@ .mh-improved-favorite-setups-blueprint-container .content { position: absolute; - inset: 50px 5px 10px; + inset: 35px 5px 10px; overflow-y: auto; } .mh-improved-favorite-setups-blueprint-container .row { display: grid; - grid-template-columns: 1fr 35px repeat(4, 45px); + grid-template-columns: 1fr 30px repeat(4, 45px); align-items: center; height: auto; - min-height: 55px; + min-height: 50px; padding: 3px; - margin-bottom: 10px; + 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 { @@ -60,9 +86,9 @@ position: relative; display: flex; flex-direction: column; - gap: 5px; align-items: center; - justify-content: center; + justify-content: space-around; + height: 50px; } .mh-improved-favorite-setups-blueprint-container .row.editing .controls { @@ -77,6 +103,7 @@ } .mh-improved-favorite-setups-blueprint-container .row.editing .button-wrapper { + align-self: flex-end; margin-right: 5px; } @@ -86,7 +113,7 @@ .mh-improved-favorite-setups-blueprint-container .controls .label { padding: 0 1px; - font-size: 13px; + font-size: 12px; text-align: center; } @@ -98,7 +125,7 @@ } .mh-improved-favorite-setups-blueprint-container .controls .action.arm { - padding: 4px 15px; + padding: 4px 10px; } .mh-improved-favorite-setups-blueprint-container .edit { @@ -128,8 +155,7 @@ } .mh-improved-favorite-setups-blueprint-container .controls input { - width: calc(100% - 25px); - margin-right: 25px; + width: 150px; } .row.editing .campPage-trap-itemBrowser-favorite-item::after { @@ -198,13 +224,13 @@ a.random-title::after { position: absolute; - top: 0; - right: -6px; + top: 2px; + right: -19px; box-sizing: border-box; display: block; - width: 20px; - height: 20px; - padding: 10px; + width: 17px; + height: 17px; + padding: 9px; margin: 1px; content: ""; background-color: #fff; @@ -233,6 +259,7 @@ a.random-title.loading::after { .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 { @@ -287,7 +314,7 @@ a.random-title.loading::after { .mh-improved-favorite-setups-blueprint-container .row .move-buttons { position: absolute; bottom: 20px; - left: 32px; + left: 28px; display: none; flex-direction: row; align-items: center; @@ -298,8 +325,8 @@ a.random-title.loading::after { position: absolute; top: 0; right: 0; - width: 20px; - height: 20px; + width: 18px; + height: 18px; content: ""; background-repeat: no-repeat; background-size: contain; @@ -308,7 +335,7 @@ a.random-title.loading::after { .mh-improved-favorite-setups-blueprint-container .row.editing a.move-up::after { position: absolute; - right: 15px; + right: 13px; background: url('data:image/svg+xml,'); /* stylelint-disable-line */ } From 03c2d6eea6db533b65ba335c7618a7812c11e429 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:57:22 -0500 Subject: [PATCH 19/91] update external links --- src/extension/popup.html | 8 ++++---- src/modules/better-quests/index.js | 2 +- src/modules/links/index.js | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/extension/popup.html b/src/extension/popup.html index 1a81afa4..ec210046 100644 --- a/src/extension/popup.html +++ b/src/extension/popup.html @@ -41,10 +41,10 @@

MouseHunt Improved

diff --git a/src/modules/better-quests/index.js b/src/modules/better-quests/index.js index cd3d8420..552e5c3e 100644 --- a/src/modules/better-quests/index.js +++ b/src/modules/better-quests/index.js @@ -241,7 +241,7 @@ const assignments = [ const getAssignmentMeta = (assignment) => { const wikiLink = `https://mhwiki.hitgrab.com/wiki/index.php/Library_Assignment#${assignment.name.replaceAll(' ', '_')}`; - return `Wiki | Requires: ${assignment.cost} | Reward: ${assignment.reward}`; + return `Wiki | Requires: ${assignment.cost} | Reward: ${assignment.reward}`; }; const updateAssignmentList = () => { diff --git a/src/modules/links/index.js b/src/modules/links/index.js index 36fc4883..25f0e0ad 100644 --- a/src/modules/links/index.js +++ b/src/modules/links/index.js @@ -30,6 +30,7 @@ const addHelpLinks = () => { link.setAttribute('href', helpLink.href); link.setAttribute('target', '_blank'); + link.setAttribute('rel', 'noopener noreferrer'); supportDropdown.append(link); }); From 7e42b5405a581c0fdd30716944d8aa872e200516 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:57:32 -0500 Subject: [PATCH 20/91] fix --- src/modules/required/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/required/index.js b/src/modules/required/index.js index 56c8f82f..5b1de166 100644 --- a/src/modules/required/index.js +++ b/src/modules/required/index.js @@ -1,4 +1,4 @@ -import { doEvent, getFlag, onTurn } from '@utils'; +import { doEvent, getFlag, getHeaders, onTurn } from '@utils'; const checkForAutoHorn = () => { const storageKeys = new Set(['NOB-huntsLeft', 'HornTimeDelayMax', 'AutoSolveKR', 'TrapCheckTimeDelayMax', 'TrapCheckTimeOffset', 'TrapCheckTimeDelayMin', 'AutoSolveKRDelayMin', 'AutoSolveKRDelayMax', 'SaveKRImage', 'autoPopupKR', 'AggressiveMode', 'HornTimeDelayMin']); From 82b7b4ffb1cee53c6143eb58677d33889d55520e Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:57:47 -0500 Subject: [PATCH 21/91] Fix typos --- CHANGELOG.md | 166 +++++++++++++++++++++++++-------------------------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35e15047..0b57a1e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,9 +21,9 @@ - Fixes Better Journal styles regression - Adds "Convert weeks and months to days" setting to Lucky Golden Shield Reminder to match the display on mobile - Fixes Lucky Golden Shield Reminder not correctly showing the correct time remaining and instead being off by a few hours -- Removes `items-marketplace-hidden.json` and instead fetchs it from api.mouse.rip -- Removes `m400-locations.json` and instead fetchs it from api.mouse.rip -- Removes `relic-hunter-hints.json` and instead fetchs it from api.mouse.rip +- Removes `items-marketplace-hidden.json` and instead fetches it from api.mouse.rip +- Removes `m400-locations.json` and instead fetches it from api.mouse.rip +- Removes `relic-hunter-hints.json` and instead fetches it from api.mouse.rip - Excludes Error Reporting functionality from the Userscript build - Removes onboarding tutorial - Fixes Lucky Golden Shield alignment @@ -57,13 +57,13 @@ - Updates Hide Footer to be able to be toggled without a refresh - Updates Inline Wiki to be able to be toggled without a refresh - Updates Hide Sidebar to be able to be toggled without a refresh -- Updates Hide Sidebar to be enbled by default -- Updates Hide Share Buttons to be enbled by default +- Updates Hide Sidebar to be enabled by default +- Updates Hide Share Buttons to be enabled by default - Updates Import / Export Settings to be able to drag in an exported file to import it, format it, or reset back to default, and various other style updates - Updates Better UI styles -- Updates Betteer Item View styles +- Updates Better Item View styles - Updates Better Journal styles -- Updaets Better Maps styles +- Updates Better Maps styles - Updates Better Shops styles - Updates various other styles - Removes the local event environment data files and instead fetch them remotely @@ -209,7 +209,7 @@ - Fixes spacebar not working while in Fiery Warpath - Adds dragging/scrolling to the lantern height map on the HUD - Updates reward image size/position in LNY reward popup -- Adds ability to dismniss Taunting charm warning in Whisker Woods Rift Location HUD +- Adds ability to dismiss Taunting charm warning in Whisker Woods Rift Location HUD - Adds ability to reorder Favorite Setups - Fixes minor journal entry styles @@ -224,7 +224,7 @@ - Adds Event Location styles for Lunar New Year, including the ability to drag or scroll the lantern height map - Updates Living Garden Location HUD to Garden, City, Desert markers on ingredients - Updates Cursed City Location HUD to show curse name & necessary charm without having to hover -- Fixes a potential error happeningla when toggling quill visiblity in Table of Contents +- Fixes a potential error happening when toggling quill visiblity in Table of Contents - Updates Better Journal styles to not break for certain entries or mess up the formatting of event entries - Fixes Catch Rate Estimator wrapping mice names to a new line - Fixes broken tooltips inside of Hover Profiles @@ -283,7 +283,7 @@ - Updates Favorite Setups edit/delete buttons to be more consistent - Updates Better King's Reward to honk the horn after successfully submitting the puzzle - Updates Better Journal's entry rewriting to save entries in IndexDB to avoid rewriting the same entry multiple times -- Updaes Bristle Woods Rift Location HUD styles +- Updates Bristle Woods Rift Location HUD styles - Updates Valour Rift Location HUD styles - Updates Image Upscaling to look nicer in more places - Updates most modules to take effect immediately when settings are changed, rather than requiring a page refresh @@ -296,7 +296,7 @@ - Fixes Favorite Setups trying to generate a name on first save - Fixes LGS reminder alignment and styles - Fixes Iceberg Location HUD Hidden Depths length -- Fixes Burroughs Rift Location HUD mist showing wrong ccolor at 6 +- Fixes Burroughs Rift Location HUD mist showing wrong color at 6 - Fixes Hide Daily Reward Popup not correctly hiding the popup _finally_ - Fixes Better UI style conflicts with Profile+ - Fixes Location HUD cheese selectors showing after traveling away @@ -460,7 +460,7 @@ - Fixes typos and cleans up language for settings and descriptions - Updates settings to look fancy and slick - Updates Kingdom menu to go to the News page rather than the Forum. -- Removes shadow on emtpy HUD icons +- Removes shadow on empty HUD icons - Adds Clear Cache button to settings - Add MH Improved icon to top menu - Adds Location Dashboard refresh functionality @@ -653,7 +653,7 @@ - Updates a number of miscellaneous journal entry styles. - Fixes spacing of success message for Quick Send Supplies. - Updates marketplace search dropdown to not have borders on the images. -- Updates gift inbox footer "You can send/recieve X gifts today" to be two lines. +- Updates gift inbox footer "You can send/receive X gifts today" to be two lines. - Updates the inbox styling and order of menu. - Makes close buttons more consistent across the site. - Updates completed map reward styles. @@ -680,13 +680,13 @@ - Removes crafted image border - Loads modules async - Resplits better ui and better inventory options into standalone modules -- Splits required module into seperate modules, set to alwaysLoad +- Splits required module into separate modules, set to alwaysLoad - Moves journal privacy back to standalone module - Moves dev to module folder - Reorders location dashboard setting - Adds changelog.md - Adds debug functionality with a flag -- Removes sample migtated userscript +- Removes sample migrated userscript - Updates styles - Add docblocks - Fixes spelling and grammar a bit @@ -710,7 +710,7 @@ - Adds more styling for item views - Adds inbox styling - Adds gift buttons to main gift view, improve styling -- Don't show fullstop after team name in hover profile +- Don't show full stop after team name in hover profile - Fixes alignment of friend request and accepted buttons in the inbox - Makes it so the background of the page will always be the same color, rather than switching to white on narrow screens - Adds better error displays & debugging information @@ -754,7 +754,7 @@ - Fixes Larry's Gift background color - Sets min-height and width for hunter images on the map - Removes broken links to mhdb -- Updates keyboard shortcuts to ignore keypresses when ctrl is pressed +- Updates keyboard shortcuts to ignore key presses when ctrl is pressed - Fixes corkboard colors for darkmode - Fixes map title width blocking elements - Fixes popup journal spacing @@ -768,7 +768,7 @@ - Adds crowns to mouse stats page - Add setting for disabling paste hunter ID - Enable rankup forecaster import/export buttons by default in feature flags -- Moves 'Only ppen multiple' to Better Inventory +- Moves 'Only open multiple' to Better Inventory - Adds settings for Better Inventory - Adds open all but one button functionality - Fixes Location Catch Stats loading @@ -858,77 +858,77 @@ - Don't show attraction rates on the mouse popup if there aren't any - Don't show drop rates on the mouse popup if there aren't any -- Update font size for MHCT links +- Updates font size for MHCT links - Make the 'you own' in shops look nicer and more clear -- Fix alignment of kings crown mice -- Fix issues with better travel settings & correctly defaulting to the tab -- Switch to using helper method to grab settings to ensure they're prefix correctly -- Bump mh-utils version -- Shrink puzzle input font size a bit -- Upscale storm cell image -- Fix the 'send 1 free gifts' typo -- Style the gift of the day -- Add a 'select random friends' button for gift sending +- Fixes alignment of kings crown mice +- Fixes issues with better travel settings & correctly defaulting to the tab +- Switches to using helper method to grab settings to ensure they're prefix correctly +- Bumps mh-utils version +- Shrinks puzzle input font size a bit +- Upscales storm cell image +- Fixes the 'send 1 free gifts' typo +- Styles the gift of the day +- Adds a 'select random friends' button for gift sending - Don't make multiple leave buttons for the M400 helper -- Simplify travel location option -- General map support and styles cleanup -- Clone the leave map button so it's at the top as well -- Add error message if no ARs are found on mousepopup, link to MHCT -- Remove broken MHCT link -- Use the same _mhct target for mhct links to reuse window -- Update name of localstorage keys to be consistent -- Add export/import buttons to rankup forecast userscript -- Reposition current floor marker for maps -- Remove weird inventory action button spacing -- Move away from onPageChange to onNavigate for performance -- Limit the warn on bad crafts overlay checker to not fire constantly -- Add a slight delay to keyboard shortcuts to attempt to prevent keyboard shortcut mashing and crashing the page -- Fix charm shortcut key -- Fix TEM crown styles -- Cache AR values in session storage if there was an error retrieving them or they were empty -- Clean up and rewriting of AR caching, use of map type, etc -- Support scavenger maps in generic sorted page -- Remove extra padding in map mouse data dropdown -- Clean up mice crowns display -- Add keyboard shortcuts help popup, add more shortcuts +- Simplifies travel location option +- Adds general map support and styles cleanup +- Clones the leave map button so it's at the top as well +- Adds error message if no ARs are found on mousepopup, link to MHCT +- Removes broken MHCT link +- Uses the same _mhct target for mhct links to reuse window +- Updates name of localstorage keys to be consistent +- Adds export/import buttons to rankup forecast userscript +- Repositions current floor marker for maps +- Removes weird inventory action button spacing +- Moves away from onPageChange to onNavigate for performance +- Limits the warn on bad crafts overlay checker to not fire constantly +- Adds a slight delay to keyboard shortcuts to attempt to prevent keyboard shortcut mashing and crashing the page +- Fixes charm shortcut key +- Fixes TEM crown styles +- Caches AR values in session storage if there was an error retrieving them or they were empty +- Cleans up and rewriting of AR caching, use of map type, etc +- Supports scavenger maps in generic sorted page +- Removes extra padding in map mouse data dropdown +- Cleans up mice crowns display +- Adds keyboard shortcuts help popup, add more shortcuts - Switch to listening for the paste shortcut for hunter ID quick navigation -- Add daily reward and King's Reward styles -- Update Map subcategory header styles +- Adds daily reward and King's Reward styles +- Updates Map subcategory header styles ## Version 0.17.1 -- Fix keyboard shortcuts firing always, even in input fields +- Fixes keyboard shortcuts firing always, even in input fields ## Version 0.17.0 -- Add keyboard shortcuts feature -- Fix gift buttons setting alignment -- Add more map styles -- Highlight paragon shrines on sky map -- Allow skipping 'bad' gifts in gift return buttons -- Revert mapping full height tweak +- Adds keyboard shortcuts feature +- Fixes gift buttons setting alignment +- Adds more map styles +- Highlights paragon shrines on sky map +- Allows skipping 'bad' gifts in gift return buttons +- Reverts mapping full height tweak ## Version 0.16.4 -- Update M400 helper -- Underline quest smash link -- Move message indicator dot -- Fix passing parcel display -- Fix hover profile name color -- Add BW reminder to Floating Island island start -- Fix plural invites text -- Make gift item icon look nicer on gift selector -- Fix map heights -- Fix quick send supplies trying to use null thumbnail -- Dont show HUD setting toggles for areas without new HUDs -- Clean up TEM mice display -- Add windmill styles -- Align quick travel icons -- Add fullstop to unstable charm journal entries -- Fix TEM power type alignment -- Show full catch/miss number on mouse view popup -- Make current iceberg zone show as bold -- Unhide invite manage link on maps +- Updates M400 helper +- Underlines quest smash link +- Moves message indicator dot +- Fixes passing parcel display +- Fixes hover profile name color +- Adds BW reminder to Floating Island island start +- Fixes plural invites text +- Makes gift item icon look nicer on gift selector +- Fixes map heights +- Fixes quick send supplies trying to use null thumbnail +- Don't show HUD setting toggles for areas without new HUDs +- Cleans up TEM mice display +- Adds windmill styles +- Aligns quick travel icons +- Adds full stop to unstable charm journal entries +- Fixes TEM power type alignment +- Shows full catch/miss number on mouse view popup +- Makes current iceberg zone show as bold +- Unhides invite manage link on maps ## Version 0.16.3 @@ -988,10 +988,10 @@ - Adds mouserip link to kingdom dropdown, add MH Improved github link and mouse.rip link to help menu - Modifies cheese effect font sizes - Rounds the corners on the quick travel icons -- Fixes EMP400 charm thubmnail, closes #118 +- Fixes EMP400 charm thumbnail, closes #118 - Updates King's Cart costs - Removes twttr object fill -- Fixes journal fullstop again +- Fixes journal full stop again - Fixes hover profiles styling and quick send supplies interaction - Rewrites a bunch of the mapping functionality and improve it - Fixes title when hovering on mouse locations @@ -1013,14 +1013,14 @@ ## Version 0.14.11 - Fixes linting errors -- Fixs journal image size to not clip border +- Fixes journal image size to not clip border - Loads all the high res journal themes - Forces journal theme selector preview to be the max height so the bottom of the dialog doesnt bounce around - Adds more Journal style tweaks - Adds an extra online indicator to the top right of each member on the team journal page - Hides the label and make the text bigger for team mate setup on journal page - Hides the expiring prize notice -- Vertically centers the 'udpate details' button for the team +- Vertically centers the 'update details' button for the team - Only shows team trophy note on hover - Styles team corkboard to match hunter and map - Makes the alpha sort page actually just be on top of the simple travel page @@ -1029,7 +1029,7 @@ - Removes friend profile redirect - Updates esbuild for userscript - Adds zugwangs tower styles -- Forces frox wall percent to be an interger +- Forces frox wall percent to be an integer - Also ignores King's Prize Key in better-item-view mhct data - Adds changelog to release notes - Fixes item view image background @@ -1092,7 +1092,7 @@ - Style tab lock/unlock buttons - Fix tsitu lock/unlock buttons not showing - Add margin to the right of journal entries -- Fix fullstop in journal.. again? +- Fix full stop in journal.. again? - Fix bait font weight - Move tournaments to its own module - Add tournament member listing on hover From af7d830604bdae35918e9eb643118d9fa7659e48 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:57:57 -0500 Subject: [PATCH 22/91] Use id for logging --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 51fd142d..2ee5ac6c 100644 --- a/src/index.js +++ b/src/index.js @@ -114,7 +114,7 @@ const loadModules = async () => { } // Log the loaded modules for the category. - debuglog('module-loading', `Loaded ${category.modules.length} ${category.name} modules`, loadedModules); + debuglog('module-loading', `Loaded ${category.modules.length} ${category.id} modules`, loadedModules); } // Wait for all modules to load. From dc94c0957fa6a6d29c84662d1d621087dd96fce8 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Fri, 15 Mar 2024 23:59:32 -0500 Subject: [PATCH 23/91] =?UTF-8?q?Updates=20Bountiful=20Beanstalk=20Locatio?= =?UTF-8?q?n=20HUD:=20makes=20the=20inventory=20panel=20save=20whether=20i?= =?UTF-8?q?t=E2=80=99s=20toggled=20or=20not,=20as=20well=20as=20the=20loot?= =?UTF-8?q?=20multiplier=20panel.=20adds=20an=20animation=20to=20the=20aut?= =?UTF-8?q?oharp=20button=20on=20hover,=20makes=20the=20question=20mark=20?= =?UTF-8?q?button=20less=20obvious,=20and=20other=20style=20updates.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bountiful-beanstalk/index.js | 91 +++++++++++++- .../bountiful-beanstalk/styles.css | 119 ++++++++++++++++-- 2 files changed, 197 insertions(+), 13 deletions(-) diff --git a/src/modules/location-huds/bountiful-beanstalk/index.js b/src/modules/location-huds/bountiful-beanstalk/index.js index 0f654df3..1dd02995 100644 --- a/src/modules/location-huds/bountiful-beanstalk/index.js +++ b/src/modules/location-huds/bountiful-beanstalk/index.js @@ -1,11 +1,100 @@ -import { addHudStyles } from '@utils'; +import { addHudStyles, getSetting, saveSetting } from '@utils'; import regionStyles from '../shared/folklore-forest/styles.css'; import styles from './styles.css'; +const keepInventoryToggled = () => { + 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'); + } else if (isSetOpen === 'not-set') { + isSetOpen = false; + } + + toggleButton.addEventListener('click', (e) => { + e.preventDefault(); + + // Longer than a simple ternary and a toggle to make it more readable. + if (isSetOpen) { + isSetOpen = false; + inventory.classList.remove('headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open'); + } else { + isSetOpen = true; + inventory.classList.add('headsUpDisplayBountifulBeanstalk__inventoryContainerBlockContent--open'); + } + + saveSetting('location-huds.bountiful-beanstalk-inventory-toggled', isSetOpen); + }); +}; + +const keepRoomDataToggled = () => { + 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); + }); +}; + +const funTime = () => { + const meter = document.querySelector('.bountifulBeanstalkCastleView__noiseMeterFrame'); + if (! meter) { + return; + } + + meter.addEventListener('click', () => { + // For 1 second, animate through the colors of the rainbow using hue-rotate. + const time = 1000; + + let hue = 0; + const interval = setInterval(() => { + if (hue >= 360) { + clearInterval(interval); + } + + hue += 1; + meter.style.filter = `hue-rotate(${hue}deg)`; + }, time / 360); + }); +}; + /** * Initialize the module. */ export default async () => { addHudStyles([regionStyles, styles]); + + keepInventoryToggled(); + keepRoomDataToggled(); + + funTime(); }; diff --git a/src/modules/location-huds/bountiful-beanstalk/styles.css b/src/modules/location-huds/bountiful-beanstalk/styles.css index 4aefbca0..25675990 100644 --- a/src/modules/location-huds/bountiful-beanstalk/styles.css +++ b/src/modules/location-huds/bountiful-beanstalk/styles.css @@ -6,9 +6,12 @@ } .headsUpDisplayBountifulBeanstalk__inventoryBlockQuantity.quantity { - padding: 2px; - margin-top: -4px; - font-size: 13px; + width: 42px; + padding: 1px 2px; + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + box-shadow: inset 0 0 0 1px #fa822d; } .bountifulBeanstalkCastleView__noiseLevel, @@ -37,8 +40,8 @@ } .bountifulBeanstalkCastleView__plinthLootImage .headsUpDisplayBountifulBeanstalkView__loot { - top: 47px; - right: 242px; + top: 45px; + right: 245px; width: 45px; height: 45px; filter: drop-shadow(0 0 5px #f0e1a4); @@ -61,17 +64,13 @@ } .bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip { - top: -31px; + top: -20px; bottom: unset; left: -60px; width: 447px; - line-height: 1.5; color: #f2e3a6; background: #192518; border: 2px solid #85d523; - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } .bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip-arrow { @@ -79,11 +78,11 @@ } .bountifulBeanstalkCastleView__currentRoomName { - font-size: 14px; + font-size: 12px; } .bountifulBeanstalkCastleView__currentRoomLoot b { - font-size: 13px; + font-size: 10px; } .bountifulBeanstalkCastleView__plinthOverlay.mousehuntTooltipParent { @@ -95,3 +94,99 @@ padding: 0 1px; font-size: 14px; } + +.bountifulBeanstalkPlayHarpDialogView__optionActionLabel { + margin-bottom: 5px; +} + +.headsUpDisplayBountifulBeanstalk__embellishmentBlock:hover .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage { + filter: brightness(1.3); + transform: scale(1.3); +} + +.headsUpDisplayBountifulBeanstalk__embellishmentBlock .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage { + transition: 0.3s; + animation: adminShimmer 1s 3; +} + +.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage { + transition: 0.3s; + animation: mh-improved-loot-shake 0.5s 2; +} + +.headsUpDisplayBountifulBeanstalkView__castleChevronContainer .headsUpDisplayBountifulBeanstalkView__loot:hover { + animation: mh-improved-loot-shake 0.5s 2; +} + +@media (prefers-reduced-motion: reduce) { + .headsUpDisplayBountifulBeanstalk__embellishmentBlock:hover .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage { + filter: none; + transform: none; + } + + .headsUpDisplayBountifulBeanstalk__embellishmentBlock .headsUpDisplayBountifulBeanstalk__embellishmentBlockImage { + transition: none; + animation: none; + } + + .headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage { + animation: none; + } + + .headsUpDisplayBountifulBeanstalkView__castleChevronContainer .headsUpDisplayBountifulBeanstalkView__loot:hover { + animation-iteration-count: 1; + } +} + +@keyframes mh-improved-loot-shake { + 0% { + transform: rotate(0deg); + } + + 25% { + transform: rotate(5deg); + } + + 50% { + transform: rotate(-5deg); + } + + 75% { + transform: rotate(5deg); + } + + 100% { + transform: rotate(0deg); + } +} + +.headsUpDisplayBountifulBeanstalkView .folkloreForestRegionView-helpButton { + width: 22px; + height: 21px; + border-radius: 20px; + box-shadow: inset 0 0 3px 1px #c5ad6f; + opacity: 0.3; +} + +.headsUpDisplayBountifulBeanstalkView .folkloreForestRegionView-helpButton:hover { + opacity: 1; +} + +.mh-improved-room-data--open, +.mh-improved-room-data--open .headsUpDisplayBountifulBeanstalkView__lootMultiplierDetailsContainer { + z-index: 35; + display: block; +} + +.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying:hover .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonHarpImage { + transform: scale(1.1) rotate(3deg) translateX(5px); +} + +.headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonPlayText { + mix-blend-mode: multiply; + opacity: 0.7; +} + +.headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying:hover .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonPlayText { + opacity: 1; +} From 816918a96a6b716aa577c5c32a29e040bf3d02b7 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:00:56 -0500 Subject: [PATCH 24/91] Updates Iceberg Location HUD - allows scrolling the map, adds setting for always showing the progress tooltip, adds animation to the icerberg, adds more style updates --- src/modules/location-huds/iceberg/index.js | 149 ++++++++++++------ .../iceberg/styles/always-show-progress.css | 16 ++ .../iceberg/styles/bob-iceberg.css | 46 ++++++ .../iceberg/{ => styles}/styles.css | 136 ++++++++++++---- 4 files changed, 268 insertions(+), 79 deletions(-) create mode 100644 src/modules/location-huds/iceberg/styles/always-show-progress.css create mode 100644 src/modules/location-huds/iceberg/styles/bob-iceberg.css rename src/modules/location-huds/iceberg/{ => styles}/styles.css (56%) diff --git a/src/modules/location-huds/iceberg/index.js b/src/modules/location-huds/iceberg/index.js index 5cd6845b..ad660bd8 100644 --- a/src/modules/location-huds/iceberg/index.js +++ b/src/modules/location-huds/iceberg/index.js @@ -1,12 +1,16 @@ import { addHudStyles, getCurrentLocation, + getFlag, getUserItems, makeElement, - onRequest + onRequest, + onTurn } from '@utils'; -import styles from './styles.css'; +import alwaysShowProgress from './styles/always-show-progress.css'; +import bobIceberg from './styles/bob-iceberg.css'; +import styles from './styles/styles.css'; const getSections = (quest) => { const sections = [ @@ -160,15 +164,17 @@ const getTooltipText = (quest) => { progress.append(averageHunts); if (! quest.isLair) { - const stageProgressPercent = document.createElement('div'); - stageProgressPercent.classList.add('stage-progress-percent'); - stageProgressPercent.innerText = `Stage Progress: ${roundProgress(quest.stagePercent)}%`; + 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 = document.createElement('div'); - totalProgressPercent.classList.add('total-progress-percent'); - totalProgressPercent.innerText = `Total Progress: ${roundProgress(quest.totalPercent)}%`; + 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); } } @@ -249,7 +255,7 @@ const addDeepWarning = async () => { return; } - // Create a list of equippable bases, seperated by 'or' + // Create a list of equippable bases, separated by 'or' const equippableBasesText = equippableBases .map((base, index) => { if (index === 0) { @@ -264,21 +270,22 @@ const addDeepWarning = async () => { }) .join(' '); - const warning = document.createElement('div'); - warning.classList.add('deep-warning'); + const warning = makeElement('div', 'deep-warning'); - const warningText = document.createElement('div'); - warningText.classList.add('deep-warning-text'); - warningText.innerText = `To access the Hidden Depths, make sure you equip ${equippableBasesText}.`; + const warningText = makeElement('div', 'deep-warning-text', `To access the Hidden Depths, make sure you equip ${equippableBasesText}.`); - const warningIcon = document.createElement('img'); - warningIcon.classList.add('deep-warning-icon'); + 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); - appendTo.append(warning); + const existingWarning = appendTo.querySelector('.deep-warning'); + if (existingWarning) { + existingWarning.replaceWith(warning); + } else { + appendTo.append(warning); + } }; const hud = async () => { @@ -300,13 +307,6 @@ const hud = async () => { quest = addProgressToQuestData(quest); - // Stage distance. - // Remove the existing stage distance. - const existingStage = huntInfo.querySelector('.remaining-stage-distance'); - if (existingStage) { - existingStage.remove(); - } - // If we're in icewing's lair, don't show the stage distance. if (! quest.isLair) { // Create the stage distance element. @@ -314,21 +314,21 @@ const hud = async () => { remainingStageDistance.classList.add('remaining-stage-distance'); const destination = quest.isDeep ? 'Deep' : 'next stage'; if (quest.stage !== quest.total) { - remainingStageDistance.innerText = `${quest.stage} feet until ${destination}`; + const feet = quest.stage.toLocaleString(); + remainingStageDistance.innerText = `${feet} feet until ${destination}`; if (quest.stageHunts > 0) { remainingStageDistance.innerText += ` (~${quest.stageHunts} hunts)`; } } - // Append the stage distance element. - huntInfo.insertBefore(remainingStageDistance, huntInfo.lastChild); - } - - // Total distance. - // Remove the existing distance. - const existingDistance = huntInfo.querySelector('.remaining-distance'); - if (existingDistance) { - existingDistance.remove(); + // Remove the existing stage distance. + const existingStage = huntInfo.querySelector('.remaining-stage-distance'); + if (existingStage) { + existingStage.replaceWith(remainingStageDistance); + } else { + // Append the stage distance element. + huntInfo.insertBefore(remainingStageDistance, huntInfo.lastChild); + } } // If we're in icewing's lair, don't show the total distance. @@ -337,21 +337,20 @@ const hud = async () => { const remainingDistance = document.createElement('div'); remainingDistance.classList.add('remaining-distance'); if (quest.total !== 0) { - remainingDistance.innerText = `${quest.total} feet until Icewing's Lair`; + const feet = quest.total.toLocaleString(); + remainingDistance.innerText = `${feet} feet until Icewing's Lair`; if (quest.totalHunts > 0) { remainingDistance.innerText += `(~${quest.totalHunts} hunts)`; } } - // Append the distance element. - huntInfo.insertBefore(remainingDistance, huntInfo.lastChild); - } - - // Tooltip. - // Remove the existing tooltip. - const existingTooltip = huntInfo.querySelector('.icebergStatusTooltip'); - if (existingTooltip) { - existingTooltip.remove(); + // Remove the existing distance. + const existingDistance = huntInfo.querySelector('.remaining-distance'); + if (existingDistance) { + existingDistance.replaceWith(remainingDistance); + } else { + huntInfo.insertBefore(remainingDistance, huntInfo.lastChild); + } } huntInfo.classList.add('mousehuntTooltipParent'); @@ -360,22 +359,78 @@ const hud = async () => { tooltip.classList.add('mousehuntTooltip', 'right', 'noEvents'); const tooltipContent = getTooltipText(quest); + + const existingTooltip = huntInfo.querySelector('.icebergStatusTooltip'); tooltip.append(tooltipContent); makeElement('div', 'mousehuntTooltip-arrow', '', tooltip); - huntInfo.append(tooltip); + if (existingTooltip) { + existingTooltip.replaceWith(tooltip); + } else { + huntInfo.append(tooltip); + } if (quest.isLair) { addDeepWarning(); } }; +const makeMapScrollable = () => { + const map = document.querySelector('.icebergHud .timeline .icebergContainer .iceberg'); + if (! map) { + return; + } + + // When the user hovers over the map, allow them to scroll. Scrolling changes the current top of the element. + // When the user's mouse leaves the map, stop scrolling and reset the top to what it was before. + map.addEventListener('mouseenter', () => { + const startingTop = map.style.top.replace('px', ''); + + // add a scroll listener to the map + 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); + }); + }); + + map.addEventListener('click', (event) => { + event.preventDefault(); + const popup = new jsDialog(); + popup.setAttributes({ className: 'largerImage icebergMap' }); + popup.setTemplate('largerImageWithClass'); + popup.addToken('{*image*}', 'https://www.mousehuntgame.com/images/ui/hud/iceberg_bg.png?asset_cache_version=2'); + popup.addToken('{*imageCaption*}', ''); + popup.show(); + }); +}; + /** * Initialize the module. */ export default async () => { - addHudStyles(styles); + let stylesToUse = styles + bobIceberg; + if (getFlag('iceberg-always-show-progress')) { + stylesToUse += alwaysShowProgress; + } + + addHudStyles(stylesToUse); + hud(); - onRequest('*', hud); + + onTurn(hud, 1000); + onRequest('environment/iceberg.php', hud); + + makeMapScrollable(); }; diff --git a/src/modules/location-huds/iceberg/styles/always-show-progress.css b/src/modules/location-huds/iceberg/styles/always-show-progress.css new file mode 100644 index 00000000..66417c64 --- /dev/null +++ b/src/modules/location-huds/iceberg/styles/always-show-progress.css @@ -0,0 +1,16 @@ +.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; +} diff --git a/src/modules/location-huds/iceberg/styles/bob-iceberg.css b/src/modules/location-huds/iceberg/styles/bob-iceberg.css new file mode 100644 index 00000000..7187b3d3 --- /dev/null +++ b/src/modules/location-huds/iceberg/styles/bob-iceberg.css @@ -0,0 +1,46 @@ +.icebergHud .timeline .icebergContainer .iceberg { + z-index: 1; + border-bottom-left-radius: 8px; + transition: 0.4s; + transform-origin: top; + animation: 6s dirigibleFloat ease-in-out infinite; +} + +.icebergHud .timeline .icebergContainer .iceberg::after { + position: absolute; + right: 1px; + bottom: 5px; + width: 10px; + height: 5px; + content: ""; + background: linear-gradient(180deg, rgb(255 255 255 / 0%) 0%, #d5dee6 55%, rgb(255 255 255 / 0%) 100%); + 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; +} diff --git a/src/modules/location-huds/iceberg/styles.css b/src/modules/location-huds/iceberg/styles/styles.css similarity index 56% rename from src/modules/location-huds/iceberg/styles.css rename to src/modules/location-huds/iceberg/styles/styles.css index a5430d4f..c2309759 100644 --- a/src/modules/location-huds/iceberg/styles.css +++ b/src/modules/location-huds/iceberg/styles/styles.css @@ -13,16 +13,19 @@ } .icebergStatusTooltip { - bottom: -25px; - left: calc(100% + 4px); - width: 320px; - margin-left: 1em; + 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: 10px; + gap: 15px; align-items: center; } @@ -39,7 +42,11 @@ } .icebergStatusTooltip .hunts-wrapper div { - margin-top: 0.75em; + display: flex; + align-items: center; + justify-content: space-evenly; + width: 100%; + margin: 0; } .icebergStatusTooltip .hunts-wrapper div:first-child { @@ -48,7 +55,7 @@ } .icebergStatusTooltip .iceberg-sections { - width: 190px; + width: 175px; } .icebergStatusTooltip .iceberg-section { @@ -56,42 +63,38 @@ display: flex; place-items: center start; justify-content: space-between; - width: 180px; + width: auto; margin-bottom: 0.25em; overflow: visible; } -.icebergStatusTooltip .iceberg-section-name { - width: auto; - min-width: 110px; -} - .icebergStatusTooltip .iceberg-section.complete { color: #989898; + opacity: 0.6; } -.icebergStatusTooltip .iceberg-section.complete::after { +.icebergStatusTooltip .iceberg-section.complete .iceberg-section-name::before { position: absolute; - top: -2px; - right: -15px; - width: 12px; - height: 12px; + 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: 0.6; + opacity: 1; } .icebergStatusTooltip .iceberg-section.incomplete { - color: #52969b; + color: #488589; } .icebergStatusTooltip .iceberg-section.current::before { position: absolute; - top: 0; + top: 1px; left: -7px; - font-size: 9px; - color: #579ca2; + font-size: 8px; + color: #6aa9af; vertical-align: middle; content: "•"; border-radius: 3px; @@ -136,28 +139,26 @@ opacity: 1; } -#icebergDrill { - z-index: 2; -} - .icebergHud .cutaway .wax .quantity, .icebergHud .cutaway .sticky .quantity { + box-sizing: border-box; width: 38px; padding: 0; - margin-left: 3px; + margin-top: 22px; + margin-left: 4px; font-size: 12px; font-weight: 400; border-color: #89989e; - border-radius: 3px 3px 4px 4px; + border-radius: 2px 2px 6px 6px; } .icebergHud .cutaway .sticky .quantity { - margin-top: 25px; + margin-top: 26px; } .icebergHud .cutaway .drill .quantity { - top: 26px; - left: 108px; + top: 28px; + left: 110px; font-size: 14px; text-align: left; text-shadow: 1px 1px #000; @@ -166,3 +167,74 @@ .iceberg-section.current { font-weight: 900; } + +.icebergHud .cutaway .depth { + top: 3px; + z-index: 4; + padding-top: 6px; + background-color: rgb(0 0 0 / 35%); + 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; +} + +/* .bonus_timeline .icebergContainer { + left: 0; + position: absolute; + right: 0; + text-align: center; +} + +.bonus_timeline { + position: relative; + height: 30px; +} */ + +.icebergHud .cutaway .drill .help b.warning { + display: block; +} + +.icebergHud .cutaway .drill .help { + width: 400px; +} + +.icebergHud .timeline .waterline { + bottom: -2px; +} From 25281485d307579753b68ec5ddfd684cfc359a06 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:01:28 -0500 Subject: [PATCH 25/91] remove map show on clicl --- src/modules/location-huds/iceberg/index.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/modules/location-huds/iceberg/index.js b/src/modules/location-huds/iceberg/index.js index ad660bd8..7b97b744 100644 --- a/src/modules/location-huds/iceberg/index.js +++ b/src/modules/location-huds/iceberg/index.js @@ -404,16 +404,6 @@ const makeMapScrollable = () => { map.removeEventListener('wheel', scrollListener); }); }); - - map.addEventListener('click', (event) => { - event.preventDefault(); - const popup = new jsDialog(); - popup.setAttributes({ className: 'largerImage icebergMap' }); - popup.setTemplate('largerImageWithClass'); - popup.addToken('{*image*}', 'https://www.mousehuntgame.com/images/ui/hud/iceberg_bg.png?asset_cache_version=2'); - popup.addToken('{*imageCaption*}', ''); - popup.show(); - }); }; /** From 19652ce7290b798b6576125733ded42836a01720 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:03:24 -0500 Subject: [PATCH 26/91] Updates Laby Location HUD - adds easter egg when clicking on the current tile or another tile, scrambles both gems when you scramble one, fixes the lantern reminder animating on every turn, adds special styles for final exit doors, updates other styles --- src/modules/location-huds/labyrinth/index.js | 169 ++++++++++++++---- .../location-huds/labyrinth/styles.css | 156 +++++++++++++++- 2 files changed, 283 insertions(+), 42 deletions(-) diff --git a/src/modules/location-huds/labyrinth/index.js b/src/modules/location-huds/labyrinth/index.js index 3717ba32..d9440d49 100644 --- a/src/modules/location-huds/labyrinth/index.js +++ b/src/modules/location-huds/labyrinth/index.js @@ -1,4 +1,10 @@ -import { addHudStyles, getCurrentLocation, makeElement, onRequest } from '@utils'; +import { + addHudStyles, + getCurrentLocation, + makeElement, + onRequest, + onTurn +} from '@utils'; import styles from './styles.css'; @@ -49,39 +55,14 @@ const scrambleGems = () => { gems.forEach((gem) => { gem.removeAttribute('onclick'); gem.addEventListener('click', () => { - hg.views.HeadsUpDisplayLabyrinthView.labyrinthScrambleGem(gem, 2); + gems.forEach((g) => { + hg.views.HeadsUpDisplayLabyrinthView.labyrinthScrambleGem(g, 2); + }); }); }); }; -const hud = () => { - if ('labyrinth' !== getCurrentLocation()) { - return; - } - - // Always allow gems to be scrambled. - scrambleGems(); - - 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 expandClueBar = () => { const clueProgresses = document.querySelectorAll('.mh-ui-labyrinth-clue-count'); if (clueProgresses) { clueProgresses.forEach((progress) => { @@ -108,7 +89,9 @@ const hud = () => { } }); } +}; +const addLanternReminder = () => { if ('inactive' === user?.quests?.QuestLabyrinth?.lantern_status && user?.quests?.QuestLabyrinth?.hallway_tier >= 2) { setTimeout(() => { const existingLanternReminder = document.querySelector('.mh-ui-labyrinth-lantern-reminder'); @@ -118,12 +101,34 @@ const hud = () => { const labyHud = document.querySelector('.labyrinthHUD-intersection'); if (labyHud) { - const lanternReminer = document.createElement('div'); - lanternReminer.classList.add('mh-ui-labyrinth-lantern-reminder'); - labyHud.append(lanternReminer); + const lanternReminder = document.createElement('div'); + lanternReminder.classList.add('mh-ui-labyrinth-lantern-reminder'); + labyHud.append(lanternReminder); } }, 500); } +}; + +const updateDoorText = () => { + 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 || []; @@ -184,12 +189,106 @@ const hud = () => { } }; +const highlight100Clues = () => { + const clues = document.querySelector('.labyrinthHUD-clueBar-totalContainer'); + if (! clues) { + return; + } + + if (Number.parseInt(user?.quests?.QuestLabyrinth.total_clues || 0) < 100) { + clues.classList.remove('mh-ui-labyrinth-100clues'); + } else { + clues.classList.add('mh-ui-labyrinth-100clues'); + } +}; + +const highlightTileForMinigame = (tile) => { + tile.classList.add('mh-ui-labyrinth-tile-clicked'); + + const id = tile.getAttribute('data-index'); + const length = user?.quests?.QuestLabyrinth?.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); +}; + +const minigame = async () => { + // whenever a user clicks on a .labyrinthHUD-hallway-tile.locked, change it to a random color for 2 seconds + 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); + }); + } + }); +}; + +const refreshHud = async () => { + if ('labyrinth' !== getCurrentLocation()) { + return; + } + + expandClueBar(); + updateDoorText(); + highlight100Clues(); + minigame(); +}; + /** * Initialize the module. */ export default async () => { addHudStyles(styles); - hud(); - onRequest('*', hud); + scrambleGems(); + + refreshHud(); + addLanternReminder(); + + onRequest('*', refreshHud); + onTurn(refreshHud, 1000); }; diff --git a/src/modules/location-huds/labyrinth/styles.css b/src/modules/location-huds/labyrinth/styles.css index 20f45750..6b2506d7 100644 --- a/src/modules/location-huds/labyrinth/styles.css +++ b/src/modules/location-huds/labyrinth/styles.css @@ -12,13 +12,14 @@ 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: 10px; + font-size: 12px; } .labyrinthHUD-clue-name { @@ -27,10 +28,9 @@ } .mh-ui-labyrinth-clue-count { - padding: 4px; + padding-left: 4px; + font-weight: 900; color: #050505; - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; } .y .labyrinthHUD-clue-name, @@ -330,7 +330,7 @@ } .labyrinthHUD-hallway-padding:hover .labyrinthHUD-hallway-tile.complete::after { - color: #0e0e0e; + color: #343434; text-shadow: none; content: "0"; } @@ -365,6 +365,29 @@ content: "6"; } +.labyrinthHUD-hallway-tile.active { + z-index: 6; + outline: 1px solid #bbf8fa; +} + +@keyframes mh-improved-lantern-swing { + 0% { + transform: rotate(0deg); + } + + 25% { + transform: rotate(-5deg); + } + + 75% { + transform: rotate(5deg); + } + + 100% { + transform: rotate(0deg); + } +} + .mh-ui-labyrinth-lantern-reminder { position: absolute; bottom: 0; @@ -375,8 +398,7 @@ filter: drop-shadow(1px 0 8px #f6eac3); background-size: contain; transform-origin: bottom; - animation: mh-improved-sway-side-to-side 0.75s; - animation-iteration-count: 3; + animation: mh-improved-lantern-swing 1s ease-out 1; } .labyrinthHUD-toggleLantern-name.active { @@ -465,3 +487,123 @@ a.labyrinthHUD-door.labyrinthHUD-door-category-f::after { .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 0.3s ease; +} + +.mh-ui-labyrinth-tile-clicked-fade-in { + opacity: 1; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit .mousehuntTooltip { + top: -3px; + bottom: unset; + display: none; + align-items: center; + width: 75px; + height: 49px; + padding: 0 2px; + margin-left: 7px; + color: #dad0d0; + background-color: rgb(51 47 43 / 85%); + border: none; + border-radius: 18px 18px 0 0; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit .mousehuntTooltip .mousehuntTooltip-arrow { + display: none; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit.disabled::after { + position: absolute; + inset: -5px -5px 0 -7px; + display: block; + content: ""; + background-color: #825c33d6; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + transition: 0.4s; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit:hover::after { + background-color: transparent; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit-y1::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit-h1::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit-s1::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit-n1::after { + position: absolute; + top: -40px; + right: -8px; + left: -8px; + display: flex; + align-items: center; + justify-content: center; + height: 40px; + font-size: 11px; + font-weight: 900; + color: #371d0085; + text-align: center; + content: ""; + transition: 0.3s; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit-y1::after { + content: "Paladin Weapon Master"; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit-h1::after { + content: "Manaforge Smith"; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit-s1::after { + content: "Soul Binder"; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit-n1::after { + top: -29px; + content: "Retired Minotaur"; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-y1:hover::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-h1:hover::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-s1:hover::after, +.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-n1:hover::after { + color: #f2c899; + opacity: 0.8; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit.mousehuntTooltipParent:hover .mousehuntTooltip { + display: flex; + animation: none; +} + +.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-n1 .mousehuntTooltip { + top: 8px; + left: -1px; + width: 93px; + height: 60px; +} + +.labyrinthHUD-secretContainer { + font-weight: 900; + background-color: transparent; + border: none; + box-shadow: none; + mix-blend-mode: overlay; +} + +.labyrinthHUD-confirmDescription .labyrinthHUD-exit { + top: -4px; +} + +.ancientCityHUD-bossContainer.mousehuntTooltipParent.ancientCityHUD-boss-n.hiddenDistrict:active { + background-position: 0 0; +} From bbfee18db5243c4195a08ef52623d350a4fb7df0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:05:05 -0500 Subject: [PATCH 27/91] Update styles --- .../better-inventory/styles/styles.css | 48 ++++++++++++++----- .../journal-styles/styles/general.css | 5 -- src/modules/better-maps/styles/general.css | 31 +++++++++++- src/modules/better-ui/styles/overlays.css | 14 +++++- src/modules/better-ui/styles/profile.css | 2 +- src/modules/better-ui/styles/settings.css | 22 +++++++++ src/modules/better-ui/styles/traps.css | 8 +++- src/modules/catch-rate-estimate/styles.css | 1 + .../global-styles/styles/animations.css | 4 +- .../location-huds/prologue-pond/styles.css | 4 +- src/modules/user-highlighting/profile.css | 4 ++ 11 files changed, 118 insertions(+), 25 deletions(-) create mode 100644 src/modules/better-ui/styles/settings.css diff --git a/src/modules/better-inventory/styles/styles.css b/src/modules/better-inventory/styles/styles.css index 4765a626..3c9b7089 100644 --- a/src/modules/better-inventory/styles/styles.css +++ b/src/modules/better-inventory/styles/styles.css @@ -90,15 +90,9 @@ font-size: 9px; } -.mousehuntHud-page-subTabContent.hammer .inventoryPage-item-margin.clear-block { - border: none; - border-radius: 0; -} - .mousehuntHud-page-subTabContent.hammer .inventoryPage-item:hover .inventoryPage-item-margin { background-color: #e3e3e3; - outline: 1px solid #888; - box-shadow: none; + border-color: #c9c9c9; } .mousehuntHud-page-subTabContent.hammer .inventoryPage-item .tooltip, @@ -107,9 +101,25 @@ } .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: translateX(-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 { @@ -262,9 +272,15 @@ input.inventoryPage-tagDirectory-searchBar-input { .inventoryPage-item.torn_page input.viewFront, .inventoryPage-item.torn_page input.viewBack { display: inline-block; - padding: 3px 5px; - border-radius: 3px; - box-shadow: 1px 1px 4px #fff2aa inset; + 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 { @@ -514,9 +530,19 @@ a.inventoryPage-item-larryLexicon.tsitu-lock-convertible { .inventoryPage-item.small .inventoryPage-item-margin { margin-bottom: 10px; - box-shadow: 0 4px 10px -10px #000; + 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; +} diff --git a/src/modules/better-journal/journal-styles/styles/general.css b/src/modules/better-journal/journal-styles/styles/general.css index ec219fba..eac9115a 100644 --- a/src/modules/better-journal/journal-styles/styles/general.css +++ b/src/modules/better-journal/journal-styles/styles/general.css @@ -236,11 +236,6 @@ p.mhi-x-entry { } .journal .entry .journalbody .journaltext .lucky::after { - /* position: absolute; - top: -2px; - display: inline-block; - width: 15px; - height: 15px; */ background-image: url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2); background-size: cover; } diff --git a/src/modules/better-maps/styles/general.css b/src/modules/better-maps/styles/general.css index 503a6e70..802f63e9 100644 --- a/src/modules/better-maps/styles/general.css +++ b/src/modules/better-maps/styles/general.css @@ -12,7 +12,8 @@ border-radius: 0; } -.treasureMapView-block { +.treasureMapView-block, +.treasureMapView-block > .treasureMapView-block-content { border-radius: 3px; } @@ -866,3 +867,31 @@ input.treasureMapView-block-search-text { .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; +} diff --git a/src/modules/better-ui/styles/overlays.css b/src/modules/better-ui/styles/overlays.css index adb472ee..72d9ae17 100644 --- a/src/modules/better-ui/styles/overlays.css +++ b/src/modules/better-ui/styles/overlays.css @@ -62,8 +62,18 @@ } .notificationMessageList .message .actions input[type="button"].delete { - position: absolute; - left: -60px; + 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, diff --git a/src/modules/better-ui/styles/profile.css b/src/modules/better-ui/styles/profile.css index e58146d4..8f6dbbcf 100644 --- a/src/modules/better-ui/styles/profile.css +++ b/src/modules/better-ui/styles/profile.css @@ -258,7 +258,7 @@ .mouseCrownsView-group-mouse-image { width: 100%; - height: 200px; + height: 160px; border: none !important; /* profile+ */ border-bottom-right-radius: 0; border-bottom-left-radius: 0; diff --git a/src/modules/better-ui/styles/settings.css b/src/modules/better-ui/styles/settings.css new file mode 100644 index 00000000..e7b2df9a --- /dev/null +++ b/src/modules/better-ui/styles/settings.css @@ -0,0 +1,22 @@ +.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; +} diff --git a/src/modules/better-ui/styles/traps.css b/src/modules/better-ui/styles/traps.css index babd71cf..099a7e38 100644 --- a/src/modules/better-ui/styles/traps.css +++ b/src/modules/better-ui/styles/traps.css @@ -499,12 +499,18 @@ a.campPage-trap-itemBrowser-item-disarmButton:hover { .mh-dark-mode .trapSelectorView__trapStatSummary, .mh-dark-mode .trapSelectorView__outerBlock, -.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-trapEffectiveness { +.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; diff --git a/src/modules/catch-rate-estimate/styles.css b/src/modules/catch-rate-estimate/styles.css index 0b023347..9cea81c6 100644 --- a/src/modules/catch-rate-estimate/styles.css +++ b/src/modules/catch-rate-estimate/styles.css @@ -1,5 +1,6 @@ #mh-improved-cre { padding-right: 5px; + margin: 5px 0; cursor: default; } diff --git a/src/modules/global-styles/styles/animations.css b/src/modules/global-styles/styles/animations.css index 615fc4ea..11eede26 100644 --- a/src/modules/global-styles/styles/animations.css +++ b/src/modules/global-styles/styles/animations.css @@ -17,11 +17,11 @@ } 25% { - transform: rotate(-10deg); + transform: rotate(-5deg); } 75% { - transform: rotate(15deg); + transform: rotate(5deg); } 100% { diff --git a/src/modules/location-huds/prologue-pond/styles.css b/src/modules/location-huds/prologue-pond/styles.css index d521e9e5..8f31bc5e 100644 --- a/src/modules/location-huds/prologue-pond/styles.css +++ b/src/modules/location-huds/prologue-pond/styles.css @@ -84,7 +84,7 @@ } 100% { - transform: translate(0, -0); + transform: translate(0, 0); } } @@ -98,7 +98,7 @@ } 100% { - transform: translate(0, -0); + transform: translate(0, 0); } } diff --git a/src/modules/user-highlighting/profile.css b/src/modules/user-highlighting/profile.css index 19dba537..44134242 100644 --- a/src/modules/user-highlighting/profile.css +++ b/src/modules/user-highlighting/profile.css @@ -94,6 +94,10 @@ border-color: #98448e; } +.mh-improved-fancy-profile .journal .content .entry.short.travel { + background-color: #f2f2f2; +} + .mh-improved-fancy-profile .friendsPage-friendRow-image-border { background-image: none; } From 5ff2d0a0af165c0c3fde49c1a4db9d77563c6a73 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:07:56 -0500 Subject: [PATCH 28/91] Use Enable/Disable for location HUD button rather than Enable HUD/Disable HUD --- src/modules/location-huds/toggle-icon.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/location-huds/toggle-icon.js b/src/modules/location-huds/toggle-icon.js index 03c955ce..77ad5e98 100644 --- a/src/modules/location-huds/toggle-icon.js +++ b/src/modules/location-huds/toggle-icon.js @@ -22,25 +22,25 @@ const getCurrentLocationForSettings = async () => { const getIconSettings = async () => { let key = await 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' : 'Enable', + text: value ? 'Disable HUD' : 'Enable HUD', position: 'prepend', action: (e, icon) => { - key = getCurrentLocationForSettings(); value = getSetting(key, true); - saveSetting(key, ! value); if (value) { - icon.textContent = 'Enable'; + icon.textContent = 'Enable HUD'; icon.classList.add('disabled'); icon.classList.remove('enabled'); } else { - icon.textContent = 'Disable'; + icon.textContent = 'Disable HUD'; icon.classList.remove('disabled'); icon.classList.add('enabled'); } From ea57d2ca2b42ec9e3447185ee9c2e43291c04755 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:08:59 -0500 Subject: [PATCH 29/91] Clean up travel settings --- src/modules/better-travel/index.js | 38 +++++++---------------- src/modules/better-travel/travel-utils.js | 12 ++----- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/src/modules/better-travel/index.js b/src/modules/better-travel/index.js index d3057acf..49125411 100644 --- a/src/modules/better-travel/index.js +++ b/src/modules/better-travel/index.js @@ -265,7 +265,7 @@ const addSimpleTravel = () => { }; const getPreviousLocation = () => { - const previousLocation = getTravelSetting('previous-location', false); + const previousLocation = getSetting('better-travel.previous-location', false); if (previousLocation && previousLocation !== getCurrentLocation()) { return environments.find((environment) => { return environment.id === previousLocation; @@ -507,32 +507,7 @@ const saveTravelLocation = () => { }; const getLocationFavorites = () => { - const faves = getTravelSetting('favorites', []); - - const hasMigratedFaves = getTravelSetting('has-migrated-favorites', false); - if (! hasMigratedFaves) { - const lvFavesSettings = JSON.parse(localStorage.getItem('fast-travel-cache')); - const lvFaves = lvFavesSettings?.locationList || []; - if (lvFaves) { - // Get the keys from the lvFaves object. - const lvKeys = Object.keys(lvFaves); - // merge the lvFaves into the faves array - lvKeys.forEach((key) => { - faves.push(key); - }); - - if (faves.length > 0) { - // remove any duplicates - const uniqueFaves = [...new Set(faves)]; - // save the faves - saveLocationFavorites(uniqueFaves); - } - - // save the faves - getTravelSetting('has-migrated-favorites', true); - } - } - + const faves = getSetting('better-travel.favorites', []); return faves; }; @@ -574,6 +549,15 @@ const addFavoriteButtonsToTravelPage = async () => { return; } + // Don't add a favorite button to event locations. + const isEventLocation = environments.find((environment) => { + return environment.id === type; + }); + + if (isEventLocation) { + return; + } + const isFavorite = locationFavorites.includes(type); makeFavoriteButton({ diff --git a/src/modules/better-travel/travel-utils.js b/src/modules/better-travel/travel-utils.js index e94f2ee4..8ec61524 100644 --- a/src/modules/better-travel/travel-utils.js +++ b/src/modules/better-travel/travel-utils.js @@ -1,22 +1,14 @@ import { getSetting, saveSetting } from '@utils'; -const getTravelSettings = () => { - return getSetting('better-travel-settings', {}); -}; - const getTravelSetting = (settingName, defaultValue) => { - const settings = getTravelSettings(); - return settings[settingName] || defaultValue; + return getSetting(`better-travel.${settingName}`, defaultValue); }; const saveTravelSetting = (settingName, value) => { - const settings = getTravelSettings(); - settings[settingName] = value; - saveSetting('better-travel-settings', settings); + saveSetting(`better-travel.${settingName}`, value); }; export { - getTravelSettings, getTravelSetting, saveTravelSetting }; From d5622cf20c317c67d553065492a1e33f1368bb33 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:09:33 -0500 Subject: [PATCH 30/91] Add version number to settings page, clicking on it opens update summary --- src/index.js | 2 +- src/modules/settings/index.js | 43 ++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index 2ee5ac6c..7285365b 100644 --- a/src/index.js +++ b/src/index.js @@ -26,7 +26,7 @@ const modules = imported; const loadModules = async () => { const categories = [ { id: 'required', name: 'Always Loaded' }, - { id: 'better', name: 'MouseHunt Improved' }, + { id: 'better', name: `MouseHunt Improved v${mhImprovedVersion}` }, { id: 'feature', name: 'Features' }, { id: 'design', name: 'Design' }, { id: 'element-hiding', name: 'Hide Page Elements' }, diff --git a/src/modules/settings/index.js b/src/modules/settings/index.js index 21e0033f..50ef3b0e 100644 --- a/src/modules/settings/index.js +++ b/src/modules/settings/index.js @@ -3,9 +3,11 @@ import { addStyles, clearCaches, createPopup, + doEvent, getCurrentLocation, getCurrentPage, getCurrentTab, + getSetting, getSettings, makeElement, onNavigation, @@ -279,11 +281,16 @@ const addAdvancedSettingsButtons = () => { } }; -/** - * Modify the settings page, adding toggles to the settings. - */ -const modifySettingsPage = () => { - const settingsPage = document.querySelectorAll('.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__title'); +const highlightLocationHud = () => { + // highlight the current location in the location hud settings + const locationHudSettings = document.querySelector(`#mousehunt-improved-settings-location-hud-location-huds-enabled-${getCurrentLocation()}`); + if (locationHudSettings) { + locationHudSettings.classList.add('highlight'); + } +}; + +const addTogglesToSettings = () => { + const settingsPage = document.querySelectorAll('.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__section'); if (! settingsPage) { return; } @@ -294,7 +301,7 @@ const modifySettingsPage = () => { }); // Beta section is default hidden. - let toggledSections = sessionGet('toggled-sections') || ['mousehunt-improved-settings-beta']; + let toggledSections = sessionGet('toggled-sections', ['mousehunt-improved-settings-beta', 'mousehunt-improved-settings-advanced']); settingsPage.forEach((setting) => { // Append an svg to toggle the class @@ -338,12 +345,6 @@ const modifySettingsPage = () => { toggle.classList.remove('toggled'); } }); - - // highlight the current location in the location hud settings - const locationHudSettings = document.querySelector(`#mousehunt-improved-settings-location-hud-location-huds-enabled-${getCurrentLocation()}`); - if (locationHudSettings) { - locationHudSettings.classList.add('highlight'); - } }; /** @@ -381,6 +382,17 @@ const makeModuleIconStyles = () => { return returnString; }; +const linkVersionNumber = () => { + const version = document.querySelector('#mousehunt-improved-settings-better .PagePreferences__title .version'); + if (! version) { + return; + } + + version.addEventListener('click', () => { + doEvent('mh-improved-show-update-summary'); + }); +}; + /** * Initialize the module. */ @@ -392,8 +404,13 @@ const init = async () => { addMhImprovedIconToMenu(); onNavigation(() => { - modifySettingsPage(); + highlightLocationHud(); addAdvancedSettingsButtons(); + linkVersionNumber(); + + if (! getSetting('experiments.new-settings-styles-columns', false)) { + addTogglesToSettings(); + } }, { page: 'preferences', tab: 'mousehunt-improved-settings', From e6db9c8daf77cb7d9847490ddf646e03912ec077 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 00:09:47 -0500 Subject: [PATCH 31/91] Rewrite update notifications --- src/modules/update-notifications/index.js | 148 +++++++++++--------- src/modules/update-notifications/styles.css | 141 ++++++++++++------- 2 files changed, 177 insertions(+), 112 deletions(-) diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index 34856f71..1dbe3bb0 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -1,77 +1,102 @@ -import { - addBodyClass, - addStyles, - getCurrentPage, - getGlobal, - getSetting, - makeElement, - onNavigation, - removeBodyClass, - saveSetting -} from '@utils'; +import { addStyles, createPopup, onEvent } from '@utils'; import styles from './styles.css'; -/** - * Add the update banner. - * - * @param {boolean} hasNewSettings Whether there are new settings. - */ -const addBanner = (hasNewSettings = false) => { - if (mhImprovedVersion === getSetting('updates.banner', '')) { - return; - } +import update from '@data/update-summary.json'; + +const github = 'https://github.com/MHCommunity/mousehunt-improved'; - // Also add a class to the body so the settings page can show a "new" badge if there are new settings. - if (hasNewSettings) { - addBodyClass('mh-improved-has-update'); +const getExtensionLink = () => { + if ('chrome' === mhImprovedPlatform) { + return 'https://chromewebstore.google.com/detail/mousehunt-improved/fgjkidgknmkhnbeobehlfabjbignhkhm'; } - // Don't show except on the camp page. - if ('camp' !== getCurrentPage()) { - return; + if ('firefox' === mhImprovedPlatform) { + return 'https://addons.mozilla.org/en-US/firefox/addon/mousehunt-improved/'; } - const banner = document.querySelector('.campPage-tabs .campPage-banner'); + if ('userscript' === mhImprovedPlatform) { + return 'https://greasyfork.org/en/scripts/465139-mousehunt-improved'; + } - const bannerWrapper = makeElement('div', ['mhui-update-banner', 'banner-fade']); - const bannerContent = makeElement('div', 'mhui-update-banner-content'); - makeElement('div', 'mhui-update-banner-text', `Welcome to MouseHunt Improved v${mhImprovedVersion}!`, bannerContent); + return github; +}; - const buttonWrapper = makeElement('div', 'mhui-update-banner-buttons', ''); - const button = makeElement('a', ['mhui-update-banner-button', 'mousehuntActionButton', 'small', 'lightBlue']); - makeElement('span', '', 'See what\'s new', button); - button.href = `https://github.com/MHCommunity/mousehunt-improved/releases/tag/v${mhImprovedVersion}`; - button.target = '_blank'; - buttonWrapper.append(button); +const makeList = (title, items) => { + if (! items || ! items.length) { + return ''; + } - const closeButton = makeElement('a', ['mhui-update-banner-close', 'mousehuntActionButton', 'small', 'cancel']); - makeElement('span', '', 'Dismiss', closeButton); - closeButton.addEventListener('click', (e) => { - e.preventDefault(); + let markup = `

${title}

    `; + for (const item of items) { + markup += `
  • ${item}
  • `; + } + markup += '
'; - bannerWrapper.classList.add('banner-fade-out'); - saveSetting('updates.banner', mhImprovedVersion); + return markup; +}; - removeBodyClass('mh-improved-has-update'); +const showUpdateSummary = () => { + if (! update.summary && ! update.details) { + return; + } - setTimeout(() => { - bannerWrapper.remove(); - }, 1000); - }); + let lists = ''; - buttonWrapper.append(closeButton); + for (const list of update.details) { + lists += makeList(list.title, list.items); + } - bannerContent.append(buttonWrapper); - bannerWrapper.append(bannerContent); + const links = [ + 'Settings', + `Leave a review`, + 'Support on Patreon', + `Report an issue`, + ]; + + const markup = `
+

MouseHunt Improved v${mhImprovedVersion}

+
+

${update.summary || ''}

+
+
+
+ ${lists} +
+ +
+ +
`; + + // Initiate the popup. + const popup = createPopup({ + hasCloseButton: false, + template: 'ajax', + content: markup, + show: false, + className: 'mh-improved-update-summary', + }); - banner.append(bannerWrapper); + // Set more of our tokens. + popup.addToken('{*prefix*}', ''); + popup.addToken('{*suffix*}', ''); - banner.classList.remove('hidden'); + // If we want to show the popup, show it. + popup.show(); - setTimeout(() => { - bannerWrapper.classList.add('banner-fade-in'); - }, 1000); + const dismiss = document.querySelector('#mh-improved-dismiss-popup'); + dismiss.addEventListener('click', (e) => { + e.preventDefault(); + popup.hide(); // TODO: maybe refresh the page here if the update needs it? + }); }; /** @@ -80,21 +105,14 @@ const addBanner = (hasNewSettings = false) => { const init = async () => { addStyles(styles, 'update-notifications'); - if (getGlobal('mh-improved-updating')) { - return; - } - - // True if there are new settings, otherwise false. - onNavigation(() => { - addBanner(true); - }, { - page: 'camp', - }); + onEvent('mh-improved-updated', showUpdateSummary); + onEvent('mh-improved-show-update-summary', showUpdateSummary); }; export default { id: 'update-notifications', type: 'required', alwaysLoad: true, + order: 200, load: init, }; diff --git a/src/modules/update-notifications/styles.css b/src/modules/update-notifications/styles.css index bb8ac134..bac59085 100644 --- a/src/modules/update-notifications/styles.css +++ b/src/modules/update-notifications/styles.css @@ -1,46 +1,3 @@ -.mhui-update-banner { - position: absolute; - top: 10px; - z-index: 11; - width: 352px; - padding: 10px; - margin: 10px 3px; - background: linear-gradient(320deg, #e1fae9 0%, #b0f5c6 100%); - background-color: #e1fae9; - border: 1px solid #6e7d73; - border-radius: 5px; - box-shadow: - 1px 0 3px -1px #3d3d3d, - 0 2px 5px 1px #111; -} - -.mhui-update-banner-text { - margin: 10px 0 20px; - font-size: 16px; - text-align: center; -} - -.mhui-update-banner-buttons { - display: flex; - flex: 1; - flex-direction: row; - align-items: center; - justify-content: space-evenly; -} - -a.mhui-update-banner-button { - border: 1px solid #000; -} - -.banner-fade { - opacity: 1; - transition: opacity 0.3s ease-in-out; -} - -.banner-fade-out { - opacity: 0; -} - .mh-improved-has-update .mousehuntHeaderView .menuItem.mousehunt-improved-icon-menu::before { position: absolute; top: -12px; @@ -57,10 +14,100 @@ a.mhui-update-banner-button { animation-delay: 2s; } -.onboardArrow.mh-improved-onboarding-icon { - transform: translate(-50px, 30px); +#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: 5px; + margin-bottom: 5px; + font-size: 1.25em; + font-weight: 900; + border-bottom: 1px solid #c1915a; +} + +.mh-improved-update-summary ul { + margin: 0 0 20px 20px; + list-style: disc; +} + +.mh-improved-update-summary-buttons { + display: flex; + gap: 10px; + align-items: center; + justify-content: center; } -.onboardArrow.mh-improved-onboarding-settings { - transform: translate(-100px, -60px); +.mh-improved-update-summary-links ul { + font-size: 1.125em; + line-height: 2; } From 5389627f7856e33f038ae401d9f76169ffa0e0c5 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 15:56:35 -0500 Subject: [PATCH 32/91] Update styles and other misc func --- src/data/settings.json | 39 ++++-- .../styles/small-images.css | 2 +- src/modules/better-ui/index.js | 11 +- src/modules/inventory-lock-and-hide/index.js | 2 +- src/modules/settings/styles.css | 125 +++++++++--------- src/utils/data.js | 23 +++- src/utils/db.js | 7 +- src/utils/debug.js | 5 +- src/utils/event-registry.js | 20 +-- src/utils/settings-markup.js | 84 +++++++++--- src/utils/settings.js | 13 +- src/utils/utils.js | 9 +- 12 files changed, 225 insertions(+), 115 deletions(-) diff --git a/src/data/settings.json b/src/data/settings.json index fb129f58..21f44ba1 100644 --- a/src/data/settings.json +++ b/src/data/settings.json @@ -1,17 +1,40 @@ { "no-reminders": [ "adblock", - "inline-wiki", - "no-footer", - "no-sidebar", - "hide-daily-reward-popup", - "journal-privacy", - "journal-privacy.show-toggle-icon", - "debug", + "better-gifts.ignore-bad-gifts", + "better-gifts.send-order", + "better-item-view.show-drop-rates", + "better-marketplace.search-all", + "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.events" + "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": [ { diff --git a/src/modules/better-marketplace/styles/small-images.css b/src/modules/better-marketplace/styles/small-images.css index abaac011..f94819fa 100644 --- a/src/modules/better-marketplace/styles/small-images.css +++ b/src/modules/better-marketplace/styles/small-images.css @@ -1,4 +1,4 @@ -.marketplaceView-itemImage { +.marketplaceView-table-image .marketplaceView-itemImage { width: 40px; height: 40px; min-height: unset; diff --git a/src/modules/better-ui/index.js b/src/modules/better-ui/index.js index efb8f0fb..066b64b9 100644 --- a/src/modules/better-ui/index.js +++ b/src/modules/better-ui/index.js @@ -1,4 +1,4 @@ -import { addStyles, getFlag } from '@utils'; +import { addStyles, getFlag, onRequest } from '@utils'; import friends from './friends'; import hud from './hud'; @@ -15,6 +15,13 @@ import tsituSupplySearchStyles from './userscript-styles/tsitu-supply-search.css import * as imported from './styles/*.css'; // eslint-disable-line import/no-unresolved const styles = imported; +const kingsPromoTextChange = () => { + const kingsPromo = document.querySelector('.shopsPage-kingsCalibratorPromo'); + if (kingsPromo) { + kingsPromo.innerHTML = kingsPromo.innerHTML.replace('and even', 'and'); + } +}; + const addUserscriptStyles = async () => { const userscriptStyles = [ { id: 'userscript-styles-no-profile-plus-styles', styles: profilePlusStyles }, @@ -47,6 +54,8 @@ const init = async () => { addUserscriptStyles(); friends(); hud(); + + onRequest('users/dailyreward.php', kingsPromoTextChange); }; export default { diff --git a/src/modules/inventory-lock-and-hide/index.js b/src/modules/inventory-lock-and-hide/index.js index 01fba96f..c96f32bd 100644 --- a/src/modules/inventory-lock-and-hide/index.js +++ b/src/modules/inventory-lock-and-hide/index.js @@ -402,7 +402,7 @@ const toggleControls = () => { const onSetPage = () => { main(); - addEvent('ajax_request', main, null, true); + addEvent('ajax_request', main, { removeAfterFire: true, id: 'inventory-lock-and-hide' }); }; /** diff --git a/src/modules/settings/styles.css b/src/modules/settings/styles.css index 540c322d..11ced3c1 100644 --- a/src/modules/settings/styles.css +++ b/src/modules/settings/styles.css @@ -1,16 +1,12 @@ /* hack to make the settings page look better until the settings stuff gets sub-settings */ -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__setting .settingRow-action-inputContainer.select.busy::before, /* stylelint-disable-line prettier/prettier */ -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__setting .settingRow-action-inputContainer.select.completed::before { +.mousehunt-improved-settings .PagePreferences__setting .settingRow-action-inputContainer.select.busy::before, /* stylelint-disable-line prettier/prettier */ +.mousehunt-improved-settings .PagePreferences__setting .settingRow-action-inputContainer.select.completed::before { top: 30px; right: -25px; left: unset; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__settingDefault { - display: none; -} - -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__titleText { +.mousehunt-improved-settings .PagePreferences__titleText { position: relative; display: flex; gap: 10px; @@ -18,15 +14,15 @@ padding-bottom: 10px; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__settingNameText { +.mousehunt-improved-settings .PagePreferences__settingNameText { color: #000; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .mhui-setting-toggle.toggled { +.mousehunt-improved-settings .mhui-setting-toggle.toggled { transform: rotate(-180deg); } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .mhui-setting-toggle { +.mousehunt-improved-settings .mhui-setting-toggle { position: absolute; top: 10px; right: 15px; @@ -42,12 +38,12 @@ grid-column: span 3; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__settingDescription { +.mousehunt-improved-settings .PagePreferences__settingDescription { max-width: 550px; padding: 5px 0; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__setting { +.mousehunt-improved-settings #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__setting { display: flex; align-items: center; height: 25px; @@ -55,26 +51,26 @@ margin: 0; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .settingRow-label { +.mousehunt-improved-settings .settingRow-label { padding: 10px 0; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .inputBoxContainer.multiSelect { +.inputBoxContainer.multiSelect { display: flex; flex-flow: row wrap; justify-content: flex-end; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .inputBox.multiSelect { +.inputBox.multiSelect { max-width: 150px; margin-right: 4px; } -#mousehunt-improved-settings-better-better-gifts-ignore-bad-gifts select.inputBox.multiSelect { +#mousehunt-improved-settings-better-better-gifts-ignore-bad-gifts .inputBox.multiSelect { max-width: unset; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings select { +.mousehunt-improved-settings select { font-size: 11px; } @@ -104,7 +100,7 @@ gap: 5px; align-items: center; padding-right: 5px; - margin-top: 5px; + margin: 5px 0; } .PagePreferences .mousehunt-improved-settings .PagePreferences__setting .PagePreferences__settingAction { @@ -120,11 +116,6 @@ font-size: 12px; } -.mousehunt-improved-settings .PagePreferences__title { - padding: 10px; - border: 1px solid #e0cfb4; -} - .mousehunt-improved-settings .PagePreferences__title > .PagePreferences__settingsWrapper { margin-bottom: -10px; } @@ -136,11 +127,6 @@ #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.PagePreferences__subSetting { margin-left: 0; - border-left: 1px solid #e0d0b4; -} - -#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.PagePreferences__subSetting:nth-child(-n + 14) { - border-left: none; } .PagePreferences__subSetting .PagePreferences__settingName { @@ -180,6 +166,7 @@ #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList { padding: 0 5px 0 10px; background-color: inherit; + border-radius: 3px; } #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList:nth-child(even) { @@ -206,10 +193,6 @@ vertical-align: middle; } -#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__settingDefault { - display: none; -} - #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__setting { padding: 0; margin-bottom: -10px; @@ -227,10 +210,6 @@ transform: scale(0.75); } -.toggled #mousehunt-improved-settings-location-hud-wrapper { - display: none; -} - #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__setting { display: flex; align-items: center; @@ -253,8 +232,7 @@ place-content: center center; align-content: stretch; align-items: stretch; - height: 360px; - margin-top: 5px; + height: 350px; } /* Export Settings */ @@ -320,10 +298,6 @@ padding: 3px; } -.mousehunt-improved-settings-export-popup .suffix { - display: none; -} - .mousehunt-improved-settings-export-popup-buttons pre { text-align: center; } @@ -335,8 +309,16 @@ align-items: center; } +#mousehunt-improved-settings-beta-experiments > .PagePreferences__setting .PagePreferences__settingAction, +.mousehunt-improved-settings .PagePreferences__settingDefault, +.toggled #mousehunt-improved-settings-location-hud-wrapper, +.mousehunt-improved-settings-export-popup .suffix, .mousehunt-improved-settings .PagePreferences__title.toggled .PagePreferences__settingsList, -.mousehunt-improved-settings .PagePreferences__title.toggled .PagePreferences__separator { +.mousehunt-improved-settings .PagePreferences__title.toggled .PagePreferences__separator, +#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingDescription, +.mousehunt-improved-settings .PagePreferences__settingsList .PagePreferences__subSetting .PagePreferences__setting, +#mousehunt-improved-settings-design .PagePreferences__separator:nth-child(2), +#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__settingDefault { display: none; } @@ -429,21 +411,8 @@ margin-left: auto; } -#mousehunt-improved-settings-design .PagePreferences__separator:nth-child(2) { - display: none; -} - #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.highlight { background-color: #7af7f8; - border-radius: 4px; -} - -#mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingDescription { - display: none; -} - -.mousehunt-improved-settings .PagePreferences__settingsList .PagePreferences__subSetting .PagePreferences__setting { - display: none; } .mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting .PagePreferences__setting { @@ -484,7 +453,6 @@ .mousehunt-improved-settings .PagePreferences__settingsList-input .PagePreferences__setting { display: grid; grid-template-columns: 1fr 400px; - margin-right: 10px; } .mousehunt-improved-settings .textarea .inputBox { @@ -561,6 +529,18 @@ right: 50px; } +.PagePreferences__title.toggled #mousehunt-improved-settings-advanced-mh-improved-advanced-settings .PagePreferences__settingsList { + height: 0; + padding: 0; + visibility: hidden; +} + +.PagePreferences__title.toggled #mousehunt-improved-settings-advanced-mh-improved-advanced-settings { + display: block; + height: auto; + visibility: visible; +} + #mousehunt-improved-settings-advanced { position: relative; } @@ -573,6 +553,7 @@ #mousehunt-improved-settings-advanced-override-styles { padding-bottom: 15px; + margin-left: 0; } #mousehunt-improved-settings-advanced-override-flags input, @@ -639,10 +620,14 @@ .mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting { padding: 5px; + padding-left: 10px; + margin-left: 0; + border-left: 1px solid #e6d9c1; } #mousehunt-improved-settings-advanced-override-flags { padding: 10px 0 15px; + margin-left: 0; border-top: 1px solid #e0d0b4; } @@ -670,18 +655,30 @@ box-shadow: inset 0 0 6px 0 #f4e82f; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings .PagePreferences__settingDescription.empty-description { - padding: 0; +.mousehunt-improved-settings #mousehunt-improved-settings-location-hud.toggled .PagePreferences__titleText { + padding-bottom: 0; } -#mousehunt-improved-settings-beta-experiments > .PagePreferences__setting .PagePreferences__settingAction { +#mousehunt-improved-settings-advanced-override-styles .PagePreferences__settingName { + font-size: 15px; +} + +.toggled .PagePreferences__separator { display: none; } -.PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings #mousehunt-improved-settings-location-hud.toggled .PagePreferences__titleText { - padding-bottom: 0; +.toggled .PagePreferences__sectionWrapper { + display: none; } -#mousehunt-improved-settings-advanced-override-styles .PagePreferences__settingName { - font-size: 15px; +.toggled .PagePreferences__titleText { + padding: 0; +} + +.toggled .PagePreferences__title { + padding: 0; +} + +.mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting:nth-child(odd) { + background-color: #f4f4f4; } diff --git a/src/utils/data.js b/src/utils/data.js index aedb9a05..23f47f90 100644 --- a/src/utils/data.js +++ b/src/utils/data.js @@ -100,7 +100,7 @@ const getData = async (key) => { const isExpired = await isCacheExpired(key); if (! isExpired) { - const cachedData = await cacheGet(key, false); + const cachedData = await dataCacheGet(key, false); if (cachedData) { return cachedData; } @@ -111,7 +111,7 @@ const getData = async (key) => { debuglog('utils-data', `Fetched data for ${key}`, data); if (data) { - cacheSet(key, data); + dataCacheSet(key, data); setCacheExpiration(key); } @@ -138,13 +138,13 @@ const clearCaches = async () => { } } - dbDelete('cache', 'expirations'); + await dbDelete('cache', 'expirations'); }; /** * Prime the caches. */ -const fillDataCaches = async () => { +const updateCaches = async () => { validDataFiles.forEach(async (file) => { await getData(file); }); @@ -223,6 +223,10 @@ const cacheSet = (key, value) => { dbSet('cache', { id: key, value }); }; +const dataCacheSet = (key, value) => { + dbSet('data', { id: key, value }); +}; + /** * Get a cache value. * @@ -240,6 +244,15 @@ const cacheGet = async (key, defaultValue = false) => { return cached.value; }; +const dataCacheGet = async (key, defaultValue = false) => { + const cached = await dbGet('data', key); + if (! cached) { + return defaultValue; + } + + return cached.value; +}; + /** * Delete a cache value. * @@ -256,7 +269,7 @@ export { clearCaches, getData, getHeaders, - fillDataCaches, + updateCaches, sessionGet, sessionSet }; diff --git a/src/utils/db.js b/src/utils/db.js index 3ba75dcc..2692a3b0 100644 --- a/src/utils/db.js +++ b/src/utils/db.js @@ -7,7 +7,7 @@ */ const database = async (databaseName) => { return new Promise((resolve, reject) => { - const request = indexedDB.open(`mh-improved-${databaseName}`, 1); + const request = indexedDB.open(`mh-improved-${databaseName}`, 5); request.onerror = (event) => { reject(event.target.error); @@ -92,6 +92,11 @@ const dbSet = async (databaseName, data) => { 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, reject) => { diff --git a/src/utils/debug.js b/src/utils/debug.js index 71e29cda..f2b55034 100644 --- a/src/utils/debug.js +++ b/src/utils/debug.js @@ -1,3 +1,4 @@ +import { getGlobal } from './global'; import { getSetting } from './settings'; /** @@ -7,7 +8,7 @@ import { getSetting } from './settings'; * @param {any} args Additional arguments to log. */ const debug = (message, ...args) => { - if (getSetting('debug.module', false)) { + if (getSetting('debug.module', false) || getGlobal('mh-improved-updating', false)) { // eslint-disable-next-line no-console console.log( `%cMH Improved%c: ${message}`, @@ -26,7 +27,7 @@ const debug = (message, ...args) => { * @param {any} args Additional arguments to log. */ const debuglog = (module, message, ...args) => { - if (getSetting('debug.all', false) || getSetting(`debug.${module}`, false)) { + if (getSetting('debug.all', false) || getSetting(`debug.${module}`, false) || getGlobal('mh-improved-updating', false)) { // eslint-disable-next-line no-console console.log( `%cMH Improved %c${module}%c ${message}`, diff --git a/src/utils/event-registry.js b/src/utils/event-registry.js index ec039212..964d53a6 100644 --- a/src/utils/event-registry.js +++ b/src/utils/event-registry.js @@ -1,19 +1,23 @@ /** * Add an event to the event registry. * - * @param {string} eventName The name of the event. - * @param {Function} eventCallback The callback to run when the event is fired. - * @param {Object} eventScope The scope to run the event in. - * @param {boolean} removeAfterFire Whether or not to remove the event listener after it's fired. - * @param {number} weight The weight of the event. - * @param {string} uniqueId The unique id of the event. + * @param {string} eventName The name of the event. + * @param {Function} eventCallback The callback to run when the event is fired. + * @param {Object} args The arguments for the event. */ -const addEvent = (eventName, eventCallback, eventScope, removeAfterFire, weight, uniqueId) => { +const addEvent = (eventName, eventCallback, args) => { + const { + eventScope = null, + removeAfterFire = false, + weight = 0, + id = null + } = args || {}; + if (! eventRegistry) { return; } - eventRegistry.addEventListener(eventName, eventCallback, eventScope, removeAfterFire, weight, uniqueId); + eventRegistry.addEventListener(eventName, eventCallback, eventScope, removeAfterFire, weight, id); }; /** diff --git a/src/utils/settings-markup.js b/src/utils/settings-markup.js index a0b63855..40124e16 100644 --- a/src/utils/settings-markup.js +++ b/src/utils/settings-markup.js @@ -553,9 +553,11 @@ const addSettingOnce = (options) => { const description = options.description || ''; const tab = 'mousehunt-improved-settings'; const settingSettings = options.subSettings || null; + const moduleType = options.moduleType || null; // Make sure we have the container for our settings. - const container = document.querySelector(`.mousehuntHud-page-tabContent.${tab}`); + let container = document.querySelector(`.mousehuntHud-page-tabContent.${tab}`); + const originalContainer = container; if (! container) { return false; } @@ -567,18 +569,53 @@ const addSettingOnce = (options) => { 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, '')}`; // If we don't have our custom settings section, then create it. let sectionExists = document.querySelector(`#${section.id}-wrapper`); if (! sectionExists) { - const title = makeElement('div', 'PagePreferences__title'); + const title = makeElement('div', 'PagePreferences__section'); title.id = section.id; - makeElement('h3', 'PagePreferences__titleText', section.name, title); - makeElement('div', 'PagePreferences__separator', '', title); + const titleSection = makeElement('div', 'PagePreferences__title'); + makeElement('h3', 'PagePreferences__titleText', section.name, titleSection); + // makeElement('div', 'PagePreferences__separator', '', titleSection); // Append it. + title.append(titleSection); container.append(title); if (section.description) { @@ -587,11 +624,11 @@ const addSettingOnce = (options) => { } // append a wrapper for the settings. - const settingsWrapper = makeElement('div', 'PagePreferences__settingsWrapper'); - settingsWrapper.id = `${section.id}-wrapper`; - container.append(settingsWrapper); + const sectionWrapper = makeElement('div', 'PagePreferences__sectionWrapper'); + sectionWrapper.id = `${section.id}-wrapper`; + container.append(sectionWrapper); - title.append(settingsWrapper); + title.append(sectionWrapper); sectionExists = document.querySelector(`#${section.id}-wrapper`); } @@ -605,10 +642,13 @@ const addSettingOnce = (options) => { } // Create the markup for the setting row. - const settings = makeElement('div', ['PagePreferences__settingsList', `PagePreferences__settingsList-${keySafe}`, `PagePreferences__settingsList-${section.id}`]); + 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) { @@ -624,20 +664,22 @@ const addSettingOnce = (options) => { settingNameText.href = `#${section.id}-${keySafe}`; settingNameText.setAttribute('data-setting', key); settingNameText.setAttribute('data-tab', tab); - settingNameText.setAttribute('data-default', defaultValue); + settingNameText.setAttribute('data-default', JSON.stringify(defaultValue)); settingName.append(settingNameText); - settingNameText.addEventListener('click', (event) => { - event.preventDefault(); - navigator.clipboard.writeText(`${window.location.href}#${section.id}-${keySafe}`); + 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', + showSuccessMessage({ + message: 'Copied link to clipboard', + append: settingNameText, + after: true, + classname: 'setting-link-copied', + }); }); - }); + } const defaultSettingText = makeElement('div', 'PagePreferences__settingDefault'); @@ -679,11 +721,9 @@ const addSettingOnce = (options) => { settingRowAction.append(makeSettingToggle({ key, defaultValue, tab, settings })); } - // Add the label and action to the settings row. settingRow.append(settingRowLabel); settingRow.append(settingRowAction); - // Add the settings row to the settings container. settings.append(settingRow); sectionExists.append(settings); @@ -756,6 +796,7 @@ const addSettingForModule = async (module) => { let moduleSettingRow = null; if (! submodule.alwaysLoad && ! submodule.beta) { moduleSettingRow = await addSetting({ + moduleType: module.id, name: submodule.name, id: submodule.id, group: submodule.group, @@ -773,6 +814,7 @@ const addSettingForModule = async (module) => { for (const subSettings of subSettingsGroup) { const subSettingRow = await addSetting({ + moduleType: module.id, name: subSettings.title, id: subSettings.id, group: submodule.group || false, diff --git a/src/utils/settings.js b/src/utils/settings.js index de609586..dec0dbb6 100644 --- a/src/utils/settings.js +++ b/src/utils/settings.js @@ -113,7 +113,18 @@ const getSetting = (key, defaultValue = false) => { */ const deleteSetting = (key) => { const settings = getSettings(); - delete settings[key]; + + 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)); }; diff --git a/src/utils/utils.js b/src/utils/utils.js index 9611fabd..48e0c8db 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -208,11 +208,16 @@ const doRequest = async (url, formData = {}) => { /** * Sleep for a given number of milliseconds. * - * @param {number} ms The number of milliseconds to sleep. + * @param {number} ms The number of milliseconds to sleep. + * @param {number} elapsed The time already elapsed. * * @return {Promise} A promise that resolves after the sleep. */ -const sleep = async (ms) => { +const sleep = async (ms, elapsed = 0) => { + if (elapsed) { + ms -= elapsed; + } + return new Promise((resolve) => setTimeout(resolve, ms)); }; From 142127e53c641fd1877e4c11dd013ea5453c5cee Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 15:59:09 -0500 Subject: [PATCH 33/91] Better Marketplace - Add option to show charts on category pages --- src/modules/better-marketplace/index.js | 48 +++++++++++++++++++ .../better-marketplace/settings/index.js | 7 ++- .../better-marketplace/styles/styles.css | 17 +++++++ 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/src/modules/better-marketplace/index.js b/src/modules/better-marketplace/index.js index 26e8b731..7fcde818 100644 --- a/src/modules/better-marketplace/index.js +++ b/src/modules/better-marketplace/index.js @@ -233,6 +233,50 @@ const waitForFooterReady = (attempts = 0) => { }, 300); }; +const addChartToCategories = async () => { + const items = document.querySelectorAll('.marketplaceView-table tr'); + items.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); + }); +}; + +let _showBrowseCategory = null; +let _showBrowser = null; +const 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(); + }; +}; + let originalSelect = null; let newSelect = null; @@ -253,6 +297,10 @@ const init = async () => { show: () => { waitForSearchReady(); overloadShowItem(); + + if (getSetting('better-marketplace.show-chart-images')) { + replaceShowBrowseCategory(); + } }, }, }); diff --git a/src/modules/better-marketplace/settings/index.js b/src/modules/better-marketplace/settings/index.js index 4ea92c26..6e6ab001 100644 --- a/src/modules/better-marketplace/settings/index.js +++ b/src/modules/better-marketplace/settings/index.js @@ -9,13 +9,16 @@ export default async () => { id: 'better-marketplace.search-all', title: 'Default to showing all items in search', default: false, - description: '', }, { id: 'better-marketplace.small-images', title: 'Smaller images', default: false, - description: '', + }, + { + id: 'better-marketplace.show-chart-images', + title: 'Show charts on category pages', + default: false, } ]; }; diff --git a/src/modules/better-marketplace/styles/styles.css b/src/modules/better-marketplace/styles/styles.css index 78e4ada6..4ed29afa 100644 --- a/src/modules/better-marketplace/styles/styles.css +++ b/src/modules/better-marketplace/styles/styles.css @@ -100,3 +100,20 @@ tr.open td.marketplaceView-table-name { .marketplaceView-item-averagePrice span { font-size: 12px; } + +.marketplaceView-table-chartImage { + position: absolute; + top: 0; + right: -30px; + bottom: 0; + height: 49px; + opacity: 0.5; +} + +.marketplaceView-table-name:hover .marketplaceView-table-chartImage { + opacity: 1; +} + +td.marketplaceView-table-name { + position: relative; +} From 584a107a7c579af27e6337b1d200fcbac861db95 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 16:17:02 -0500 Subject: [PATCH 34/91] Add update summary, update changelog, minor changes --- CHANGELOG.md | 91 ++++++++++++++ package.json | 2 +- src/data/settings.json | 1 + src/data/update-summary.json | 126 ++++++++++++++++++++ src/modules/better-travel/settings/index.js | 2 +- src/modules/lgs-reminder/index.js | 2 +- src/utils/maps.js | 54 +-------- 7 files changed, 227 insertions(+), 51 deletions(-) create mode 100644 src/data/update-summary.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b57a1e5..77c40f70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,96 @@ # Changelog +## Version 0.36.0 + +### New Features + +- Hide News Ticker module + +### Better Inventory + +- Fixes the recipe results tooltip not showing quickly & not caching the data + +### Better Item View + +- Adds a ‘Show Drop Rates’ setting + +### Better Journal + +- Journal replacement and modifications now happen more efficiently and faster +- More styles added +- Gold and points icons is now a separate option +- Unique link colors is now a separate option + +### Better Maps + +- Minor style updates + +### Better Marketplace + +- Add option to show charts on category pages + +### Better Mice + +- Adds a ‘Show Attraction Rates’ setting + +### Better Shops + +- Added new ‘Hide max quantity owned’ setting +- Added new setting to show quantity buttons for buy amount +- Adds ability to hit enter while typing in an input field instead of clicking the buy button. Hitting enter a second time will confirm it. + +### Better UI + +- Minor style updates +- Fixes delete button being hidden in inbox +- Updates game settings styles + +### Experiments + +- Added new experiment: Iceberg progress stats always visible +- Added new experiment: New settings styles +- Added new experiment: New settings styles (columns) +- Added new experiment: Scoreboard search on Hunter Profiles +- Shortened Location HUD toggle button text + +### Favorite Setups + +- Fixes bugs with favorite setups showing +- Saves location when saving setup +- Suggests setups for a location + +### Image Upscaling + +- rewrote for better performance and memory usage + +### Location HUDs: Bountiful Beanstalk + +- makes the inventory panel save whether it’s toggled or not +- can also toggle the loot multiplier panel +- adds slight animations and minor style updates +- makes the question mark button less obvious +- makes the autoharp icon move when hovering + +### Location HUDs: Iceberg + +- allows scrolling the map +- adds setting for always showing the progress tooltip +- adds animation to the iceberg +- adds more style updates + +### Location HUDs: Labyrinth + +- adds easter egg when clicking on the current tile or another tile +- scrambles both gems when you scramble one +- fixes the lantern reminder animating on every turn +- adds special styles for final exit doors +- updates other styles + +### Show Auras + +- Fixed duplication of icons +Style updates + ## Version 0.35.6 - Fixes error when getting AR data on sorted tab diff --git a/package.json b/package.json index b630ce52..1c8efac9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mh-ui", - "version": "0.35.6", + "version": "0.36.0", "description": "Improve your MouseHunt experience.", "author": "Brad Parbs (https://bradparbs.com/)", "license": "MIT", diff --git a/src/data/settings.json b/src/data/settings.json index 21f44ba1..a994ba10 100644 --- a/src/data/settings.json +++ b/src/data/settings.json @@ -5,6 +5,7 @@ "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", diff --git a/src/data/update-summary.json b/src/data/update-summary.json new file mode 100644 index 00000000..646dc922 --- /dev/null +++ b/src/data/update-summary.json @@ -0,0 +1,126 @@ +{ + "summary": "This release includes a new feature, a few bug fixes, and some improvements to the documentation.", + "details": [ + { + "title": "New Features", + "items": [ + "Hide News Ticker module" + ] + }, + { + "title": "Better Inventory", + "items": [ + "Fixes the recipe results tooltip not showing quickly & not caching the data" + ] + }, + { + "title": "Better Item View", + "items": [ + "Adds a ‘Show Drop Rates’ setting" + ] + }, + { + "title": "Better Journal", + "items": [ + "Journal replacement and modifications now happen more efficiently and faster", + "More styles added", + "Gold and points icons is now a separate option", + "Unique link colors is now a separate option" + ] + }, + { + "title": "Better Maps", + "items": [ + "Minor style updates" + ] + }, + { + "title": "Better Marketplace", + "items": [ + "Add option to show charts on category pages" + ] + }, + { + "title": "Better Mice", + "items": [ + "Adds a ‘Show Attraction Rates’ setting" + ] + }, + { + "title": "Better Shops", + "items": [ + "Added new ‘Hide max quantity owned’ setting", + "Added new setting to show quantity buttons for buy amount", + "Adds ability to hit enter while typing in an input field instead of clicking the buy button. Hitting enter a second time will confirm it." + ] + }, + { + "title": "Better UI", + "items": [ + "Minor style updates", + "Fixes delete button being hidden in inbox", + "Updates game settings styles" + ] + }, + { + "title": "Experiments", + "items": [ + "Added new experiment: Iceberg progress stats always visible", + "Added new experiment: New settings styles", + "Added new experiment: New settings styles (columns)", + "Added new experiment: Scoreboard search on Hunter Profiles", + "Shortened Location HUD toggle button text" + ] + }, + { + "title": "Favorite Setups", + "items": [ + "Fixes bugs with favorite setups showing", + "Saves location when saving setup", + "Suggests setups for a location" + ] + }, + { + "title": "Image Upscaling", + "items": [ + "rewrote for better performance and memory usage" + ] + }, + { + "title": "Location HUDs: Bountiful Beanstalk", + "items": [ + "makes the inventory panel save whether it’s toggled or not", + "can also toggle the loot multiplier panel", + "adds slight animations and minor style updates", + "makes the question mark button less obvious", + "makes the autoharp icon move when hovering" + ] + }, + { + "title": "Location HUDs: Iceberg", + "items": [ + "allows scrolling the map", + "adds setting for always showing the progress tooltip", + "adds animation to the iceberg", + "adds more style updates" + ] + }, + { + "title": "Location HUDs: Labyrinth", + "items": [ + "adds easter egg when clicking on the current tile or another tile", + "scrambles both gems when you scramble one", + "fixes the lantern reminder animating on every turn", + "adds special styles for final exit doors", + "updates other styles" + ] + }, + { + "title": "Show Auras", + "items": [ + "Fixed duplication of icons", + "Style updates" + ] + } + ] +} diff --git a/src/modules/better-travel/settings/index.js b/src/modules/better-travel/settings/index.js index 669bceb7..25992a1c 100644 --- a/src/modules/better-travel/settings/index.js +++ b/src/modules/better-travel/settings/index.js @@ -13,7 +13,7 @@ export default async () => { }, { id: 'better-travel.show-alphabetized-list', - title: 'Show alphabetized list on Simple Travel tab', + title: 'Show alphabetized list on Simple Travel', default: false, description: '', }, diff --git a/src/modules/lgs-reminder/index.js b/src/modules/lgs-reminder/index.js index 395eca24..a0982d57 100644 --- a/src/modules/lgs-reminder/index.js +++ b/src/modules/lgs-reminder/index.js @@ -206,7 +206,7 @@ const init = async () => { export default { id: 'lgs-reminder', - name: 'Lucky Golden Shield Duration & 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, diff --git a/src/utils/maps.js b/src/utils/maps.js index 798d46bd..3f839cbf 100644 --- a/src/utils/maps.js +++ b/src/utils/maps.js @@ -1,15 +1,8 @@ -import { - cacheGet, - cacheSet, - getData, - getHeaders, - sessionGet, - sessionSet -} from './data'; +import { database, dbGet, dbSet } from './db'; +import { getData, getHeaders, sessionGet, sessionSet } from './data'; import { getCurrentLocation } from './location'; import { getGlobal } from './global'; -import { getSetting } from './settings'; import { makeElement } from './elements'; /** @@ -308,28 +301,8 @@ const addMHCTData = async (mouse, appendTo, type = 'mouse') => { * @return {any|boolean} Cached value or false if not found. */ const getCachedValue = async (key) => { - if (getSetting('debug.no-cache')) { - return false; - } - - // check to see if it's in session storage first - const isInSession = sessionGet(key, null); - if (isInSession !== null) { - return JSON.parse(isInSession); - } - - const localStorageContainer = await cacheGet(getCacheKey()); - return localStorageContainer[key] || false; -}; - -/** - * Get the cache key for the current version of MH Improved, only needs to - * be bumped when the cache needs to be cleared or the cache structure changes. - * - * @return {string} Cache key. - */ -const getCacheKey = () => { - return `mh-improved-cached-ar-v${mhImprovedVersion.replaceAll('.', '-')}`; + const value = await dbGet('ar-cache', key); + return value === undefined ? false : value.value; }; /** @@ -339,23 +312,8 @@ const getCacheKey = () => { * @param {any} value Value to cache. * @param {boolean} saveToSession Whether to only save to session storage, not local storage. */ -const setCachedValue = (key, value, saveToSession = false) => { - if (saveToSession) { - sessionSet(key, JSON.stringify(value)); - return; - } - - const localStorageContainer = localStorage.getItem(getCacheKey()); - let container = {}; - if (localStorageContainer) { - container = JSON.parse(localStorageContainer); - } - - // set the value - container[key] = value; - - cacheSet(getCacheKey(), container); - localStorage.setItem(getCacheKey(), JSON.stringify(container)); +const setCachedValue = async (key, value ) => { + await dbSet('ar-cache', { id: key, value }); }; /** From 61bef3ff80d176737c8dd17889dbb7e071e2bce6 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 16:20:04 -0500 Subject: [PATCH 35/91] Linting --- src/utils/db.js | 2 +- src/utils/maps.js | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/utils/db.js b/src/utils/db.js index 2692a3b0..8043c722 100644 --- a/src/utils/db.js +++ b/src/utils/db.js @@ -95,7 +95,7 @@ const dbSet = async (databaseName, data) => { data = { data, id: data.id || Date.now() - } + }; const request = objectStore.put(data); diff --git a/src/utils/maps.js b/src/utils/maps.js index 3f839cbf..5efab69b 100644 --- a/src/utils/maps.js +++ b/src/utils/maps.js @@ -1,4 +1,4 @@ -import { database, dbGet, dbSet } from './db'; +import { dbGet, dbSet } from './db'; import { getData, getHeaders, sessionGet, sessionSet } from './data'; import { getCurrentLocation } from './location'; @@ -308,11 +308,10 @@ const getCachedValue = async (key) => { /** * Set the cached value for the given key. * - * @param {string} key Key to set the cached value for. - * @param {any} value Value to cache. - * @param {boolean} saveToSession Whether to only save to session storage, not local storage. + * @param {string} key Key to set the cached value for. + * @param {any} value Value to cache. */ -const setCachedValue = async (key, value ) => { +const setCachedValue = async (key, value) => { await dbSet('ar-cache', { id: key, value }); }; From b9f8e801c3163256984c9385f891d38ed9340e7e Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 16:20:34 -0500 Subject: [PATCH 36/91] linting --- src/modules/better-journal/journal-history/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/better-journal/journal-history/index.js b/src/modules/better-journal/journal-history/index.js index e91958bd..52307d0f 100644 --- a/src/modules/better-journal/journal-history/index.js +++ b/src/modules/better-journal/journal-history/index.js @@ -161,8 +161,6 @@ let lastResponsePage; const onJournalRequest = (data) => { const reportedCurrentPage = data.journal_page.pager.current; - console.log('onJournalRequest', 'currentPage', currentPage, 'reportedCurrentPage', reportedCurrentPage, 'lastResponsePage', lastResponsePage); - if (lastResponsePage === reportedCurrentPage) { return; } From e35b6a009ef4db91c7fac53b86f28bf127df3227 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sat, 16 Mar 2024 17:12:44 -0500 Subject: [PATCH 37/91] fixes and updates --- .../new-settings-styles-columns/styles.css | 18 ++++++++- .../modules/new-settings-styles/styles.css | 2 +- .../experiments/modules/troll-mode/index.js | 3 +- src/modules/favorite-setups/index.js | 4 ++ .../bountiful-beanstalk/styles.css | 4 ++ src/modules/settings/styles.css | 11 ++++- src/modules/update-notifications/index.js | 12 +++--- src/modules/update-notifications/styles.css | 40 ++++++++++++++++--- 8 files changed, 77 insertions(+), 17 deletions(-) diff --git a/src/modules/experiments/modules/new-settings-styles-columns/styles.css b/src/modules/experiments/modules/new-settings-styles-columns/styles.css index e54a3d8d..96570a1b 100644 --- a/src/modules/experiments/modules/new-settings-styles-columns/styles.css +++ b/src/modules/experiments/modules/new-settings-styles-columns/styles.css @@ -21,13 +21,19 @@ 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; @@ -49,7 +55,8 @@ .two-column.mousehunt-improved-settings #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.PagePreferences__subSetting { padding: 0 5px 0 10px; margin-right: 0; - margin-left: 0; + margin-left: 1px; + border-radius: 0; } .two-column.mousehunt-improved-settings .PagePreferences__settingsList-textarea .PagePreferences__setting, @@ -95,12 +102,14 @@ .two-column .inputBoxContainer.multiSelect { gap: 5px 10px; justify-content: flex-start; + margin-top: 5px; } .two-column #mousehunt-improved-settings-location-hud-wrapper { + gap: 0; height: 700px; padding: 11px 0 0; - margin: 0 -10px -10px -11px; + margin: 0 -10px -10px; overflow: hidden; } @@ -119,6 +128,11 @@ 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; +} + .PagePreferences .mousehuntHud-page-tabContent.game_settings.mousehunt-improved-settings.two-column .PagePreferences__settingDescription { padding: 0; } diff --git a/src/modules/experiments/modules/new-settings-styles/styles.css b/src/modules/experiments/modules/new-settings-styles/styles.css index 4a0c48ec..383bf940 100644 --- a/src/modules/experiments/modules/new-settings-styles/styles.css +++ b/src/modules/experiments/modules/new-settings-styles/styles.css @@ -45,5 +45,5 @@ } .PagePreferences__section { - padding: 10px 10px 0; + padding: 10px; } diff --git a/src/modules/experiments/modules/troll-mode/index.js b/src/modules/experiments/modules/troll-mode/index.js index 62dbd5b5..2025f134 100644 --- a/src/modules/experiments/modules/troll-mode/index.js +++ b/src/modules/experiments/modules/troll-mode/index.js @@ -1,4 +1,4 @@ -import { addStyles } from '@utils'; +import { addStyles, onTurn } from '@utils'; import styles from './styles.css'; @@ -77,5 +77,6 @@ const trollem2 = () => { */ export default async () => { trollEm(); + onTurn(trollem, 1000); trollem2(); }; diff --git a/src/modules/favorite-setups/index.js b/src/modules/favorite-setups/index.js index 31e6336e..f27360f8 100644 --- a/src/modules/favorite-setups/index.js +++ b/src/modules/favorite-setups/index.js @@ -22,6 +22,10 @@ import styles from './styles.css'; const getFavoriteSetups = () => { const faves = getSetting('favorite-setups.setups', []); + if (! faves.length) { + return []; + } + // remove any that are just null. return faves.filter(Boolean); }; diff --git a/src/modules/location-huds/bountiful-beanstalk/styles.css b/src/modules/location-huds/bountiful-beanstalk/styles.css index 25675990..c56e7a7a 100644 --- a/src/modules/location-huds/bountiful-beanstalk/styles.css +++ b/src/modules/location-huds/bountiful-beanstalk/styles.css @@ -190,3 +190,7 @@ .headsUpDisplayBountifulBeanstalkView__playHarpDialogButton--autoPlaying:hover .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonPlayText { opacity: 1; } + +.folkloreForestRegionView-dialog-recipeResult-image.itemImage .quantity { + background: rgb(255 255 255 / 75%); +} diff --git a/src/modules/settings/styles.css b/src/modules/settings/styles.css index 11ced3c1..134031f4 100644 --- a/src/modules/settings/styles.css +++ b/src/modules/settings/styles.css @@ -11,7 +11,6 @@ display: flex; gap: 10px; justify-content: flex-start; - padding-bottom: 10px; } .mousehunt-improved-settings .PagePreferences__settingNameText { @@ -228,7 +227,7 @@ #mousehunt-improved-settings-location-hud-wrapper { display: flex; flex-flow: column wrap; - gap: 0; + gap: 0 5px; place-content: center center; align-content: stretch; align-items: stretch; @@ -682,3 +681,11 @@ .mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting:nth-child(odd) { background-color: #f4f4f4; } + +.highlight .mousehuntSettingSlider.active { + border-color: #0ac7c7; +} + +#mousehunt-improved-settings-advanced-error-reporting { + padding-bottom: 0; +} diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index 1dbe3bb0..38d98e1c 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -27,11 +27,11 @@ const makeList = (title, items) => { return ''; } - let markup = `

${title}

    `; + let markup = `

    ${title}

      `; for (const item of items) { markup += `
    • ${item}
    • `; } - markup += '
    '; + markup += '
'; return markup; }; @@ -68,12 +68,12 @@ const showUpdateSummary = () => {
Want to contribute to MouseHunt Improved? Check out our GitHub.
+
- `; // Initiate the popup. diff --git a/src/modules/update-notifications/styles.css b/src/modules/update-notifications/styles.css index bac59085..d763dfaf 100644 --- a/src/modules/update-notifications/styles.css +++ b/src/modules/update-notifications/styles.css @@ -88,26 +88,56 @@ } .mh-improved-update-summary h2 { - padding-bottom: 5px; - margin-bottom: 5px; + 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 20px 20px; + margin: 0 0 5px 15px; list-style: disc; } .mh-improved-update-summary-buttons { display: flex; + flex-direction: column; + flex-grow: 1; gap: 10px; - align-items: center; - justify-content: center; + 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%, rgb(0 0 0 / 0%)) center top, + linear-gradient(rgb(0 0 0 / 0%), #e9d5a2 70%) center bottom, + radial-gradient(farthest-side at 50% 0, rgb(0 0 0 / 40%), rgb(0 0 0 / 0%)) center top, + radial-gradient(farthest-side at 50% 100%, rgb(0 0 0 / 40%), rgb(0 0 0 / 0%)) 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; +} From 2bd622a27478ac5fe3b9b0b3020de534055e88e9 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:18:47 -0500 Subject: [PATCH 38/91] Call journal replacements twice, once after delay --- src/modules/better-journal/journal-replacements/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/modules/better-journal/journal-replacements/index.js b/src/modules/better-journal/journal-replacements/index.js index e258cd1a..966699db 100644 --- a/src/modules/better-journal/journal-replacements/index.js +++ b/src/modules/better-journal/journal-replacements/index.js @@ -198,5 +198,10 @@ const processEntry = async (entry) => { export default async () => { addStyles(styles, 'better-journal-replacements'); - addEvent('journal-entry', processEntry, { weight: 1000, id: 'better-journal-replacements' }); + addEvent('journal-entry', (entry) => { + processEntry(entry); + setTimeout(() => { + processEntry(entry); + }, 500); + }, { weight: 1000, id: 'better-journal-replacements' }); }; From db2242a644d1f69a99dd81cf3764b643b2b4b4fe Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:33:42 -0500 Subject: [PATCH 39/91] Update styles.css in various modules --- .../location/folklore-forest.css | 6 +- .../journal-styles/styles/date-hiding.css | 1 + src/modules/better-mice/styles.css | 2 +- .../bountiful-beanstalk/styles.css | 42 +++++++- .../region-living-garden/styles.css | 21 +++- src/modules/user-highlighting/profile.css | 96 ++++++++++++++++--- 6 files changed, 145 insertions(+), 23 deletions(-) diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css index d0611511..db9439bc 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css @@ -13,15 +13,15 @@ } .journal .entry.folkloreForest-tableOfContents.wordCount .journaltext { - margin-left: 70px; + margin-left: 10px; font-size: 11px; } /* add a quill to the word count entry */ .journal .entry.folkloreForest-tableOfContents.wordCount::after { position: absolute; - top: 10px; - left: 0; + top: 2px; + left: 2px; width: 37px; height: 37px; color: #d9bb92; diff --git a/src/modules/better-journal/journal-styles/styles/date-hiding.css b/src/modules/better-journal/journal-styles/styles/date-hiding.css index f8b6be6f..4e8e2a00 100644 --- a/src/modules/better-journal/journal-styles/styles/date-hiding.css +++ b/src/modules/better-journal/journal-styles/styles/date-hiding.css @@ -15,6 +15,7 @@ .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.short.rift-whisker-woods-increase .journalbody .journaldate { display: none; } diff --git a/src/modules/better-mice/styles.css b/src/modules/better-mice/styles.css index fc97fd06..2305f024 100644 --- a/src/modules/better-mice/styles.css +++ b/src/modules/better-mice/styles.css @@ -103,7 +103,7 @@ } .mouseview-has-mhct .has-stages .mouse-ar-wrapper { - grid-template-columns: 120px 140px auto 50px; + grid-template-columns: 125px 200px auto 50px; } .mouseview-has-mhct .mouse-ar-wrapper div { diff --git a/src/modules/location-huds/bountiful-beanstalk/styles.css b/src/modules/location-huds/bountiful-beanstalk/styles.css index c56e7a7a..e2f88d30 100644 --- a/src/modules/location-huds/bountiful-beanstalk/styles.css +++ b/src/modules/location-huds/bountiful-beanstalk/styles.css @@ -18,11 +18,12 @@ .bountifulBeanstalkCastleView__maxNoiseLevel { padding: 0 2px; font-size: 17px; - vertical-align: middle; } .bountifulBeanstalkCastleView__noiseMeterLabel { - vertical-align: middle; + color: #ffefc7; + text-shadow: 0 0 1px #5b4200; + filter: drop-shadow(1px 1px 1px #000); } .headsUpDisplayBountifulBeanstalkView__baitImage { @@ -67,7 +68,9 @@ top: -20px; bottom: unset; left: -60px; + z-index: 30; width: 447px; + line-height: 1.75; color: #f2e3a6; background: #192518; border: 2px solid #85d523; @@ -91,8 +94,11 @@ } .bountifulBeanstalkCastleView__currentRoomLootMultiplier { - padding: 0 1px; - font-size: 14px; + font-size: 12px; +} + +.headsUpDisplayBountifulBeanstalk__inventoryContainer { + z-index: 29; } .bountifulBeanstalkPlayHarpDialogView__optionActionLabel { @@ -191,6 +197,34 @@ opacity: 1; } +.disabled .headsUpDisplayBountifulBeanstalkView__playHarpDialogButtonPlayText { + mix-blend-mode: normal; + opacity: 1; +} + .folkloreForestRegionView-dialog-recipeResult-image.itemImage .quantity { background: rgb(255 255 255 / 75%); } + +.bountifulBeanstalkCastleView__content:hover .bountifulBeanstalkCastleView__bossMarker { + transform: scale(1.2); +} + +.bountifulBeanstalkCastleView__bossMarker { + filter: drop-shadow(2px -1px 4px #000); + transition: 0.4s; + transform-origin: bottom; +} + +.headsUpDisplayBountifulBeanstalkView__climbNextRoomText, +.headsUpDisplayBountifulBeanstalkView__castleNextRoomText { + font-size: 12px; +} + +.bountifulBeanstalkCastleView__background { + transition: opacity 0.3s; +} + +.bountifulBeanstalkCastleView__background.is-boss-chase { + opacity: 0.7; +} diff --git a/src/modules/location-huds/region-living-garden/styles.css b/src/modules/location-huds/region-living-garden/styles.css index 73b38854..1235fbf9 100644 --- a/src/modules/location-huds/region-living-garden/styles.css +++ b/src/modules/location-huds/region-living-garden/styles.css @@ -37,9 +37,9 @@ .livingGardenHud .essenceContainer .item:first-child:hover, .livingGardenHud .essenceContainer .item:first-child:focus, .livingGardenHud .essenceContainer .item:first-child:active { - width: 24px; - padding-right: 2px; - padding-left: 16px; + width: 25px; + padding-right: 10px; + padding-left: 11px; margin-left: 22px; text-align: left; } @@ -208,8 +208,12 @@ 5px 2px 5px -1px #da7b34; } +.livingGardenHud .minigameContainer .curseContainer .curse.active { + cursor: pointer; +} + .livingGardenHud .minigameContainer .curseContainer .curse.active .help span { - margin: 0; + display: none; } .livingGardenHud.lost_city.corrupted .curse { @@ -245,3 +249,12 @@ .livingGardenHud .minigameContainer { z-index: 1; } + +.livingGardenHud { + margin-top: 25px; + margin-bottom: 20px; +} + +.livingGardenHud .essenceContainer .item.essence_a_crafting_item { + padding-left: 25px; +} diff --git a/src/modules/user-highlighting/profile.css b/src/modules/user-highlighting/profile.css index 44134242..79af8236 100644 --- a/src/modules/user-highlighting/profile.css +++ b/src/modules/user-highlighting/profile.css @@ -34,6 +34,7 @@ /* main hunter card */ .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 { @@ -51,6 +52,12 @@ .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, @@ -61,8 +68,10 @@ } /* corkboard */ -.mh-improved-fancy-profile .hunterInfoView-corkBoardBlock .messageBoardView-message { +.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 { @@ -70,7 +79,8 @@ } .PageHunterProfile .pageFrameView .mh-improved-fancy-profile .mousehuntPage-content textarea { - background-color: #513d4c; + background-color: #f8eff7; + border-color: #de72ba; } .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-idCardBlock-stats, @@ -85,13 +95,19 @@ } .mh-improved-fancy-profile .journalContainer .content { - margin: 0 -10px; - background: transparent; + padding: 0; + margin: 0; + background: transparent !important; } -.mh-improved-fancy-profile .journal .content .entry { +.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: #98448e; + border-color: #de72ba; } .mh-improved-fancy-profile .journal .content .entry.short.travel { @@ -110,11 +126,29 @@ .mh-improved-fancy-profile .friendsPage-friendRow .friendsPage-friendRow-titleBar { margin-bottom: 10px; - margin-left: -9px; + 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; } @@ -143,6 +177,7 @@ color: #513645; background-color: #d2c0ec; border-top: 1px solid #be9bbc; + border-radius: 0 0 6px 6px; box-shadow: none; } @@ -163,13 +198,17 @@ .mh-improved-fancy-profile .loyaltyBadgeView { background-image: url(https://www.mousehuntgame.com/images/ui/profile/loyalty-badge-3-year.png); - filter: hue-rotate(350deg); + filter: hue-rotate(237deg); } .mh-improved-fancy-profile .userInteractionButtonsView-button { filter: hue-rotate(170deg) opacity(0.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, @@ -224,7 +263,8 @@ .mh-improved-fancy-profile .hunterInfoView-achievementsBlock .mousehuntTabHeaderContainer .mousehuntTabHeader.active { color: #615d5d !important; background: linear-gradient(#dcf7ff 45%, #8adff1 55%); - border: none; + border-color: #de72ba; + border-radius: 7px 7px 0 0; box-shadow: none; } @@ -245,8 +285,42 @@ .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 .PageHunterProfile.mh-improved-fancy-profile .friendsProfileView-container, +.PageHunterProfile .pageFrameView .mh-improved-fancy-profile .friendsProfileView-container, .PageHunterProfile .pageFrameView .mh-improved-fancy-profile .hunterInfoView-wrapper .hunterInfoView-achievementsBlock .mousehuntTabContentContainer, -.PageHunterProfile .pageFrameView .PageHunterProfile.mh-improved-fancy-profile .friendsPage-friendRow { +.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; +} From 9109e7b6f4ae833d5c115243e879aade8181b7d1 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:36:08 -0500 Subject: [PATCH 40/91] Add click to equip cursebreaking charms in cursed city --- .../region-living-garden/index.js | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/modules/location-huds/region-living-garden/index.js b/src/modules/location-huds/region-living-garden/index.js index f28dc2d5..94e418ee 100644 --- a/src/modules/location-huds/region-living-garden/index.js +++ b/src/modules/location-huds/region-living-garden/index.js @@ -1,10 +1,46 @@ -import { addHudStyles } from '@utils'; +import { addHudStyles, makeElement } from '@utils'; import styles from './styles.css'; +const 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'; + }); +}; + +const isTwisted = () => { + let isNormal = true; + if (user.quests.QuestLivingGarden && undefined !== user.quests.QuestLivingGarden?.is_normal) { + isNormal = user.quests.QuestLivingGarden.is_normal; + } else if (user.quests.QuestLostCity && undefined !== user.quests.QuestLostCity?.is_normal) { + isNormal = user.quests.QuestLostCity.is_normal; + } else if (user.quests.QuestSandDunes && undefined !== user.quests.QuestSandDunes?.is_normal) { + isNormal = user.quests.QuestSandDunes.is_normal; + } + + return ! isNormal; +}; + /** * Initialize the module. */ export default async () => { addHudStyles(styles); + + clickCharmsToEquip(); }; From 2c0a88f3377af0673f1c586bbfc56a02890e49a0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:37:20 -0500 Subject: [PATCH 41/91] Makes the giant more visible during chase --- .../bountiful-beanstalk/index.js | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/modules/location-huds/bountiful-beanstalk/index.js b/src/modules/location-huds/bountiful-beanstalk/index.js index 1dd02995..e8a118fc 100644 --- a/src/modules/location-huds/bountiful-beanstalk/index.js +++ b/src/modules/location-huds/bountiful-beanstalk/index.js @@ -1,4 +1,4 @@ -import { addHudStyles, getSetting, saveSetting } from '@utils'; +import { addHudStyles, getSetting, onTurn, saveSetting } from '@utils'; import regionStyles from '../shared/folklore-forest/styles.css'; import styles from './styles.css'; @@ -17,6 +17,7 @@ const keepInventoryToggled = () => { 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; } @@ -28,9 +29,11 @@ const keepInventoryToggled = () => { 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); @@ -87,6 +90,20 @@ const funTime = () => { }); }; +const makeGiantMoreVisible = () => { + const background = document.querySelector('.bountifulBeanstalkCastleView__background'); + if (! background) { + return; + } + + const isGiantChase = user?.quests?.QuestBountifulBeanstalk?.castle?.is_boss_chase || false; + if (isGiantChase) { + background.classList.add('is-boss-chase'); + } else { + background.classList.remove('is-boss-chase'); + } +}; + /** * Initialize the module. */ @@ -95,6 +112,9 @@ export default async () => { keepInventoryToggled(); keepRoomDataToggled(); + makeGiantMoreVisible(); funTime(); + + onTurn(makeGiantMoreVisible, 1000); }; From f278ba128d4e6daced66ad21c89993473fb0b56b Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:37:37 -0500 Subject: [PATCH 42/91] Pull update summary from api --- src/modules/update-notifications/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index 38d98e1c..f81f36f2 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -2,8 +2,6 @@ import { addStyles, createPopup, onEvent } from '@utils'; import styles from './styles.css'; -import update from '@data/update-summary.json'; - const github = 'https://github.com/MHCommunity/mousehunt-improved'; const getExtensionLink = () => { @@ -36,7 +34,16 @@ const makeList = (title, items) => { return markup; }; -const showUpdateSummary = () => { +const showUpdateSummary = async () => { + const updateSummaries = await fetch('https://api.mouse.rip/update-summary'); + const updates = await updateSummaries.json(); + + if (! updates[mhImprovedVersion]) { + return; + } + + const update = updates[mhImprovedVersion]; + if (! update.summary && ! update.details) { return; } From 17a2b320e9b9959db7a013fa5fa94544fa6e1996 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:38:06 -0500 Subject: [PATCH 43/91] Fix journal changer incorrectly randomizing theme more than once per day --- src/modules/journal-changer/index.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/modules/journal-changer/index.js b/src/modules/journal-changer/index.js index 72283486..06845da7 100644 --- a/src/modules/journal-changer/index.js +++ b/src/modules/journal-changer/index.js @@ -1,13 +1,12 @@ import { addStyles, - cacheGet, - cacheSet, doRequest, getCurrentLocation, getSetting, makeElement, onEvent, - onNavigation + onNavigation, + saveSetting } from '@utils'; import journals from './journals.json'; @@ -142,7 +141,7 @@ const addRandomButton = () => { }; const changeJournalDaily = async () => { - const lastChangeValue = await cacheGet('journal-changer-last-change', 0); + const lastChangeValue = getSetting('journal-changer.last-change', 0); const lastChange = new Date(Number.parseInt(lastChangeValue, 10)); const now = new Date(); @@ -153,11 +152,11 @@ const changeJournalDaily = async () => { lastChange.getMonth() !== now.getMonth() || lastChange.getFullYear() !== now.getFullYear() ) { - const lastTheme = await cacheGet('journal-changer-last-theme', false); + const lastTheme = getSetting('journal-changer.last-theme', false); const theme = await randomizeTheme(lastTheme); - cacheSet('journal-changer-last-change', now.getTime()); - cacheSet('journal-changer-last-theme', theme); + saveSetting('journal-changer.last-change', now.getTime()); + saveSetting('journal-changer.last-theme', theme); } }; From 13bdc9aa297b3dbbb23f21ab46e86f109a2c65fb Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:38:59 -0500 Subject: [PATCH 44/91] remove update summary infavor of api --- src/data/update-summary.json | 126 ----------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 src/data/update-summary.json diff --git a/src/data/update-summary.json b/src/data/update-summary.json deleted file mode 100644 index 646dc922..00000000 --- a/src/data/update-summary.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "summary": "This release includes a new feature, a few bug fixes, and some improvements to the documentation.", - "details": [ - { - "title": "New Features", - "items": [ - "Hide News Ticker module" - ] - }, - { - "title": "Better Inventory", - "items": [ - "Fixes the recipe results tooltip not showing quickly & not caching the data" - ] - }, - { - "title": "Better Item View", - "items": [ - "Adds a ‘Show Drop Rates’ setting" - ] - }, - { - "title": "Better Journal", - "items": [ - "Journal replacement and modifications now happen more efficiently and faster", - "More styles added", - "Gold and points icons is now a separate option", - "Unique link colors is now a separate option" - ] - }, - { - "title": "Better Maps", - "items": [ - "Minor style updates" - ] - }, - { - "title": "Better Marketplace", - "items": [ - "Add option to show charts on category pages" - ] - }, - { - "title": "Better Mice", - "items": [ - "Adds a ‘Show Attraction Rates’ setting" - ] - }, - { - "title": "Better Shops", - "items": [ - "Added new ‘Hide max quantity owned’ setting", - "Added new setting to show quantity buttons for buy amount", - "Adds ability to hit enter while typing in an input field instead of clicking the buy button. Hitting enter a second time will confirm it." - ] - }, - { - "title": "Better UI", - "items": [ - "Minor style updates", - "Fixes delete button being hidden in inbox", - "Updates game settings styles" - ] - }, - { - "title": "Experiments", - "items": [ - "Added new experiment: Iceberg progress stats always visible", - "Added new experiment: New settings styles", - "Added new experiment: New settings styles (columns)", - "Added new experiment: Scoreboard search on Hunter Profiles", - "Shortened Location HUD toggle button text" - ] - }, - { - "title": "Favorite Setups", - "items": [ - "Fixes bugs with favorite setups showing", - "Saves location when saving setup", - "Suggests setups for a location" - ] - }, - { - "title": "Image Upscaling", - "items": [ - "rewrote for better performance and memory usage" - ] - }, - { - "title": "Location HUDs: Bountiful Beanstalk", - "items": [ - "makes the inventory panel save whether it’s toggled or not", - "can also toggle the loot multiplier panel", - "adds slight animations and minor style updates", - "makes the question mark button less obvious", - "makes the autoharp icon move when hovering" - ] - }, - { - "title": "Location HUDs: Iceberg", - "items": [ - "allows scrolling the map", - "adds setting for always showing the progress tooltip", - "adds animation to the iceberg", - "adds more style updates" - ] - }, - { - "title": "Location HUDs: Labyrinth", - "items": [ - "adds easter egg when clicking on the current tile or another tile", - "scrambles both gems when you scramble one", - "fixes the lantern reminder animating on every turn", - "adds special styles for final exit doors", - "updates other styles" - ] - }, - { - "title": "Show Auras", - "items": [ - "Fixed duplication of icons", - "Style updates" - ] - } - ] -} From b51903418b6c44f9bc55d1639b5fca77c70ffd2f Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:41:52 -0500 Subject: [PATCH 45/91] Update CHANGELOG.md with new features and settings --- CHANGELOG.md | 76 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77c40f70..68cf78e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### New Features -- Hide News Ticker module +- Adds "Hide News Ticker" module ### Better Inventory @@ -12,14 +12,14 @@ ### Better Item View -- Adds a ‘Show Drop Rates’ setting +- Adds a "Show Drop Rates" setting ### Better Journal -- Journal replacement and modifications now happen more efficiently and faster -- More styles added -- Gold and points icons is now a separate option -- Unique link colors is now a separate option +- Updates Journal replacement logic to happen more efficiently, quickly, and consistently +- Adds more styles for journal entries +- Adds a setting for "Show Gold and Points icons" +- Adds a setting for "Unique Loot Colors" ### Better Maps @@ -27,16 +27,16 @@ ### Better Marketplace -- Add option to show charts on category pages +- Adds a setting to show price history charts on category pages ### Better Mice -- Adds a ‘Show Attraction Rates’ setting +- Adds a ‘Show Attraction Rates’ setting, Minor style updates ### Better Shops -- Added new ‘Hide max quantity owned’ setting -- Added new setting to show quantity buttons for buy amount +- Adds a "Hide max quantity owned" setting, +- Adds a setting to show quantity buttons for buy amount - Adds ability to hit enter while typing in an input field instead of clicking the buy button. Hitting enter a second time will confirm it. ### Better UI @@ -47,11 +47,11 @@ ### Experiments -- Added new experiment: Iceberg progress stats always visible -- Added new experiment: New settings styles -- Added new experiment: New settings styles (columns) -- Added new experiment: Scoreboard search on Hunter Profiles -- Shortened Location HUD toggle button text +- Adds new experiment: Iceberg progress stats always visible +- Adds new experiment: New settings styles +- Adds new experiment: New settings styles (columns) +- Adds new experiment: Scoreboard search on Hunter Profiles +- Shortens Location HUD toggle button text ### Favorite Setups @@ -61,35 +61,47 @@ ### Image Upscaling -- rewrote for better performance and memory usage +- Updates processing logic to be more efficient and less memory intensive + +### Journal Changer + +- Fixes theme being randomized more than once per day ### Location HUDs: Bountiful Beanstalk -- makes the inventory panel save whether it’s toggled or not -- can also toggle the loot multiplier panel -- adds slight animations and minor style updates -- makes the question mark button less obvious -- makes the autoharp icon move when hovering +- Updates the inventory and loot multiplier panels to be save their toggle state +- Makes the giant more visible during chase +- Adds slight animations +- Minor style updates + +### Location HUDs: Folklore Forest Region + +- Minor style updates ### Location HUDs: Iceberg -- allows scrolling the map -- adds setting for always showing the progress tooltip -- adds animation to the iceberg -- adds more style updates +- Adds ability to scroll the map +- Adds setting for always showing the progress tooltip +- Adds floating animation to the Iceberg in the HUD +- Minor style updates ### Location HUDs: Labyrinth -- adds easter egg when clicking on the current tile or another tile -- scrambles both gems when you scramble one -- fixes the lantern reminder animating on every turn -- adds special styles for final exit doors -- updates other styles +- Adds easter egg when clicking on the current tile or another tile +- Updates gem scrambling animation +- Fixes the lantern reminder animating on every horn, instead of just once +- Adds special styles for final exit doors +- Minor style updates + +### Location HUDs: Living Garden Region + +- Adds ability to click to equip cursebreaking charms in Cursed City +- Minor style updates ### Show Auras -- Fixed duplication of icons -Style updates +- Fixed duplication of icons, Style updates + ## Version 0.35.6 From f80f8dea151bc5191d843f51681adc8f8eff8c71 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:44:25 -0500 Subject: [PATCH 46/91] Update tab header height and padding --- src/modules/fixes/styles/tabs.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/fixes/styles/tabs.css b/src/modules/fixes/styles/tabs.css index b83c1d0e..9bf9a260 100644 --- a/src/modules/fixes/styles/tabs.css +++ b/src/modules/fixes/styles/tabs.css @@ -23,7 +23,7 @@ a.mousehuntHud-page-tabHeader.collectibles span { } .mousehuntHud-page-tabHeader { - height: 29px; + height: 28px; } .mousehuntHud-page-tabHeader.active span, @@ -35,6 +35,6 @@ a.mousehuntHud-page-tabHeader.collectibles span { .mousehuntHud-page-tabHeader.active span, .mousehuntHud-page-tabHeader:hover span { - padding-bottom: 5px; + padding-bottom: 6px; margin-top: 0; } From c358ad93fc9aacea23429b40eb0d326fd94c0d42 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:49:18 -0500 Subject: [PATCH 47/91] Fix typo in troll mode function call --- src/modules/experiments/modules/troll-mode/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/experiments/modules/troll-mode/index.js b/src/modules/experiments/modules/troll-mode/index.js index 2025f134..12e7b514 100644 --- a/src/modules/experiments/modules/troll-mode/index.js +++ b/src/modules/experiments/modules/troll-mode/index.js @@ -77,6 +77,6 @@ const trollem2 = () => { */ export default async () => { trollEm(); - onTurn(trollem, 1000); + onTurn(trollEm, 1000); trollem2(); }; From 60cba388fa61cf37edfe4755b35bd7da0d5738e0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 20:59:26 -0500 Subject: [PATCH 48/91] Cleanup --- src/modules/better-journal/journal-replacements/index.js | 4 ++++ src/modules/better-mice/index.js | 2 +- src/modules/better-mice/mouse-page.js | 5 ++++- src/modules/favorite-setups/index.js | 2 +- src/modules/journal-changer/index.js | 2 +- src/modules/keyboard-shortcuts/actions.js | 7 ++++++- src/modules/larger-skin-images/index.js | 4 +++- src/utils/page.js | 2 +- 8 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/modules/better-journal/journal-replacements/index.js b/src/modules/better-journal/journal-replacements/index.js index 966699db..a32c4d30 100644 --- a/src/modules/better-journal/journal-replacements/index.js +++ b/src/modules/better-journal/journal-replacements/index.js @@ -178,6 +178,10 @@ const shouldSkip = (entry) => { 'vending_machine_purchase', ]); + if (! entry.classList) { + return true; + } + const classList = [...entry.classList]; return (classList.some((c) => keepOriginalClasses.has(c))); }; diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index 012dbc13..106a8c97 100644 --- a/src/modules/better-mice/index.js +++ b/src/modules/better-mice/index.js @@ -65,7 +65,7 @@ const isFavorite = async (mouseId) => { 'page_arguments[snuid]': window.user.sn_user_id, }); - if (! favorites.page?.tabs?.kings_crowns?.subtabs[0]?.mouse_crowns?.favourite_mice.length) { + if (! favorites?.page?.tabs?.kings_crowns?.subtabs[0]?.mouse_crowns?.favourite_mice.length) { return false; } diff --git a/src/modules/better-mice/mouse-page.js b/src/modules/better-mice/mouse-page.js index 366bb1da..3fd404f7 100644 --- a/src/modules/better-mice/mouse-page.js +++ b/src/modules/better-mice/mouse-page.js @@ -149,7 +149,10 @@ const makeKingsCrownsTabContent = async () => { 'page_arguments[sub_tab]': false, }); - crowns = crownsReq.page.tabs.kings_crowns.subtabs[0].mouse_crowns; + crowns = crownsReq?.page?.tabs?.kings_crowns?.subtabs[0]?.mouse_crowns || []; + if (crowns.length <= 0) { + return; + } sessionSet('kings-crowns', crowns); sessionSet('kings-crownsTime', Date.now()); } diff --git a/src/modules/favorite-setups/index.js b/src/modules/favorite-setups/index.js index f27360f8..46019b10 100644 --- a/src/modules/favorite-setups/index.js +++ b/src/modules/favorite-setups/index.js @@ -22,7 +22,7 @@ import styles from './styles.css'; const getFavoriteSetups = () => { const faves = getSetting('favorite-setups.setups', []); - if (! faves.length) { + if (! faves || ! Array.isArray(faves) || ! faves.length) { return []; } diff --git a/src/modules/journal-changer/index.js b/src/modules/journal-changer/index.js index 06845da7..deb4d82a 100644 --- a/src/modules/journal-changer/index.js +++ b/src/modules/journal-changer/index.js @@ -21,7 +21,7 @@ const getJournalThemes = async () => { action: 'get_themes', }); - if (! req.journal_themes) { + if (! req || ! req.journal_themes) { return []; } diff --git a/src/modules/keyboard-shortcuts/actions.js b/src/modules/keyboard-shortcuts/actions.js index 7d034254..d2d8f8ea 100644 --- a/src/modules/keyboard-shortcuts/actions.js +++ b/src/modules/keyboard-shortcuts/actions.js @@ -143,7 +143,12 @@ export default () => { id: 'show-tem', key: 'e', description: 'Show the TEM', - action: () => document.querySelector('button.campPage-trap-trapEffectiveness.campPage-trap-statsContainer').click(), + action: () => { + const tem = document.querySelector('button.campPage-trap-trapEffectiveness.campPage-trap-statsContainer'); + if (tem) { + tem.click(); + } + }, category: 'trap-setup', }, { diff --git a/src/modules/larger-skin-images/index.js b/src/modules/larger-skin-images/index.js index 0b00d7de..c6878039 100644 --- a/src/modules/larger-skin-images/index.js +++ b/src/modules/larger-skin-images/index.js @@ -52,7 +52,9 @@ const addSkinImages = async () => { imageEl.setAttribute('data-item-id', id); imageEl.addEventListener('click', (e) => { e.preventDefault(); - app.pages.CampPage.armItem(e.target); + if (app?.pages?.CampPage?.armItem) { + app.pages.CampPage.armItem(e.target); + } }); imageWrapper.append(imageEl); diff --git a/src/utils/page.js b/src/utils/page.js index 6621f5e5..6f3ae191 100644 --- a/src/utils/page.js +++ b/src/utils/page.js @@ -88,7 +88,7 @@ const getCurrentSubtab = () => { */ const getCurrentDialog = () => { const overlay = document.querySelector('#overlayPopup'); - if (overlay && overlay.classList.length <= 0) { + if (! overlay || ! overlay.classList || overlay.classList.length <= 0) { return null; } From 3814af7577471b26e7b5d91cf79486501fa0ef38 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 21:01:28 -0500 Subject: [PATCH 49/91] Remove unused function isTwisted() from region-living-garden module --- .../location-huds/region-living-garden/index.js | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/modules/location-huds/region-living-garden/index.js b/src/modules/location-huds/region-living-garden/index.js index 94e418ee..dd9948a7 100644 --- a/src/modules/location-huds/region-living-garden/index.js +++ b/src/modules/location-huds/region-living-garden/index.js @@ -1,4 +1,4 @@ -import { addHudStyles, makeElement } from '@utils'; +import { addHudStyles } from '@utils'; import styles from './styles.css'; @@ -23,19 +23,6 @@ const clickCharmsToEquip = () => { }); }; -const isTwisted = () => { - let isNormal = true; - if (user.quests.QuestLivingGarden && undefined !== user.quests.QuestLivingGarden?.is_normal) { - isNormal = user.quests.QuestLivingGarden.is_normal; - } else if (user.quests.QuestLostCity && undefined !== user.quests.QuestLostCity?.is_normal) { - isNormal = user.quests.QuestLostCity.is_normal; - } else if (user.quests.QuestSandDunes && undefined !== user.quests.QuestSandDunes?.is_normal) { - isNormal = user.quests.QuestSandDunes.is_normal; - } - - return ! isNormal; -}; - /** * Initialize the module. */ From 84fc1e8be25dd6de503958a142599726cbc28d82 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 21:02:25 -0500 Subject: [PATCH 50/91] Add margin and border-radius to word meter value --- src/modules/location-huds/table-of-contents/styles.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/location-huds/table-of-contents/styles.css b/src/modules/location-huds/table-of-contents/styles.css index 9b3f4646..6668058c 100644 --- a/src/modules/location-huds/table-of-contents/styles.css +++ b/src/modules/location-huds/table-of-contents/styles.css @@ -141,7 +141,9 @@ } .tableOfContentsView-wordMeter-value { + margin-right: 2px; font-size: 14px; + border-radius: 3px; } .tableOfContentsProgressView-nextBook-wordsRequired { From f6a5455de7028236293d19b2fd1951ea7108bbe0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 21:46:29 -0500 Subject: [PATCH 51/91] Update timeout values in onRequest function --- src/modules/better-journal/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/better-journal/index.js b/src/modules/better-journal/index.js index 86db7538..cbdcf3bb 100644 --- a/src/modules/better-journal/index.js +++ b/src/modules/better-journal/index.js @@ -72,7 +72,7 @@ const init = async () => { processEntries(); onRequest('*', () => { - setMultipleTimeout(processEntries, [0, 100, 500]); + setMultipleTimeout(processEntries, [100, 500, 1000]); }); }; From 330eb39fb339bb11c4fea838f3efec352e3453a7 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Sun, 17 Mar 2024 21:46:38 -0500 Subject: [PATCH 52/91] Update changelog --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68cf78e2..613be587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,7 +102,6 @@ - Fixed duplication of icons, Style updates - ## Version 0.35.6 - Fixes error when getting AR data on sorted tab From 7869d6a126335bd90ba09c5482de0bc81265772d Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:39:40 -0500 Subject: [PATCH 53/91] Update CSS styles for various modules --- src/modules/better-gifts/styles.css | 1 - .../better-inventory/styles/styles.css | 4 + src/modules/better-item-view/styles.css | 6 ++ .../better-journal/journal-icons/styles.css | 7 ++ .../journal-replacements/styles.css | 4 + .../custom-entries/location/toxic-spill.css | 9 +- src/modules/better-mice/styles.css | 21 +++-- src/modules/better-shops/qty-buttons.css | 5 + src/modules/better-shops/styles/cost.css | 2 +- src/modules/better-ui/styles/general.css | 4 + src/modules/better-ui/styles/profile.css | 11 +++ src/modules/better-ui/styles/tabs.css | 9 +- src/modules/favorite-setups/styles.css | 8 ++ src/modules/fixes/styles/preferences.css | 5 - src/modules/fixes/styles/tabs.css | 5 +- src/modules/hover-profiles/styles.css | 37 +++++++- .../location-huds/labyrinth/styles.css | 91 ------------------- .../pollution-outbreak/styles.css | 77 ++++++++++------ src/modules/show-auras/grid.css | 3 +- src/modules/show-auras/icons.css | 4 + src/modules/show-auras/list.css | 4 + 21 files changed, 164 insertions(+), 153 deletions(-) create mode 100644 src/modules/better-journal/journal-icons/styles.css diff --git a/src/modules/better-gifts/styles.css b/src/modules/better-gifts/styles.css index c36ec043..d656ffe6 100644 --- a/src/modules/better-gifts/styles.css +++ b/src/modules/better-gifts/styles.css @@ -443,7 +443,6 @@ a.mousehuntActionButton.giftSelectorView-action-confirm span { border-color: #424242; } -.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover, .mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .campPage-trap-statsContainer:hover { background-color: #494949; } diff --git a/src/modules/better-inventory/styles/styles.css b/src/modules/better-inventory/styles/styles.css index 3c9b7089..9aa81b47 100644 --- a/src/modules/better-inventory/styles/styles.css +++ b/src/modules/better-inventory/styles/styles.css @@ -546,3 +546,7 @@ a.inventoryPage-item-larryLexicon.tsitu-lock-convertible { 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; +} diff --git a/src/modules/better-item-view/styles.css b/src/modules/better-item-view/styles.css index 8d49931b..b4697c15 100644 --- a/src/modules/better-item-view/styles.css +++ b/src/modules/better-item-view/styles.css @@ -219,3 +219,9 @@ input.itemView-action-convert-quantity { display: flex; align-items: center; } + +.itemView-sidebar-checklistItem:nth-child(1), +.itemView-sidebar-checklistItem:nth-child(2), +.itemView-sidebar-checklistItem.checked { + display: block; +} diff --git a/src/modules/better-journal/journal-icons/styles.css b/src/modules/better-journal/journal-icons/styles.css new file mode 100644 index 00000000..61fc5b0b --- /dev/null +++ b/src/modules/better-journal/journal-icons/styles.css @@ -0,0 +1,7 @@ +.entry.short.misc.custom.refine_pollutinum .journaltext a::before { + display: none; +} + +.entry.short.misc.custom.refine_pollutinum .journaltext a { + padding: 0; +} diff --git a/src/modules/better-journal/journal-replacements/styles.css b/src/modules/better-journal/journal-replacements/styles.css index 6e61f150..3f66c018 100644 --- a/src/modules/better-journal/journal-replacements/styles.css +++ b/src/modules/better-journal/journal-replacements/styles.css @@ -5,3 +5,7 @@ .itemtransaction p.mhi-x-entry .dot { display: none; } + +.entry.short.relicHunter_catch br { + display: none; +} diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css index 116c0bc9..f3877172 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/toxic-spill.css @@ -1,13 +1,10 @@ .entry.short.misc.custom.refine_pollutinum { display: flex; align-items: center; - min-height: 35px; - padding-left: 5px; - font-size: 10px; - line-height: 15px; + height: 45px; background-color: #7f7; - background-position: 20px; - background-size: 25px; + background-position: 10px; + background-size: 50px; } .entry.short.misc.custom.torch_charm_event .refine_pollutinum { diff --git a/src/modules/better-mice/styles.css b/src/modules/better-mice/styles.css index 2305f024..c399e4ad 100644 --- a/src/modules/better-mice/styles.css +++ b/src/modules/better-mice/styles.css @@ -34,7 +34,6 @@ } .mouseview-title-group { - padding-bottom: 8px; font-size: 11px; } @@ -95,31 +94,30 @@ .mouseview-has-mhct .mouse-ar-wrapper { display: grid; - grid-template-columns: 150px auto 50px; + 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: 125px 200px auto 50px; + grid-template-columns: 2fr 3fr 4fr 50px; } .mouseview-has-mhct .mouse-ar-wrapper div { padding: 0 2px; + font-size: 12px; } .mouseview-has-mhct .mice-ar-wrapper { margin-right: 10px; } -.mouse-ar-wrapper .stage { - font-size: 10px; -} - -.mouse-ar-wrapper .cheese { - font-size: 11px; +.mouseview-has-mhct .mouse-ar-wrapper div.rate { + font-size: 13px; } .mouseview-has-mhct .ar-header { @@ -336,3 +334,8 @@ ul.minluck-list { .mouseCrownsView-group-mouse.landscape .mouseCrownsView-group-mouse-image { background-size: 175%; } + +.mouseView-group.mouseview-title-group { + display: flex; + flex-direction: column; +} diff --git a/src/modules/better-shops/qty-buttons.css b/src/modules/better-shops/qty-buttons.css index 15a58e41..e8accc62 100644 --- a/src/modules/better-shops/qty-buttons.css +++ b/src/modules/better-shops/qty-buttons.css @@ -21,3 +21,8 @@ .mh-improved-shop-buy-max { min-width: 25px; } + +.mh-improved-shop-qty, +.mh-improved-shop-buy-max { + user-select: none; +} diff --git a/src/modules/better-shops/styles/cost.css b/src/modules/better-shops/styles/cost.css index 88e98258..2fe07fad 100644 --- a/src/modules/better-shops/styles/cost.css +++ b/src/modules/better-shops/styles/cost.css @@ -89,7 +89,7 @@ a.itemPurchaseView-action-form-button.sell { margin-right: 10px; font-size: 11px; white-space: nowrap; - background-color: #f9f9f9; + background-color: #eee; border: 1px solid #ccc; border-radius: 5px; } diff --git a/src/modules/better-ui/styles/general.css b/src/modules/better-ui/styles/general.css index 552b897f..e8d033b6 100644 --- a/src/modules/better-ui/styles/general.css +++ b/src/modules/better-ui/styles/general.css @@ -443,3 +443,7 @@ input.itemView-action-convert-quantity { animation: none; } } + +.mousehuntHeaderView .dropdownContent a { + background-position-x: 8px; +} diff --git a/src/modules/better-ui/styles/profile.css b/src/modules/better-ui/styles/profile.css index 8f6dbbcf..c30fc59d 100644 --- a/src/modules/better-ui/styles/profile.css +++ b/src/modules/better-ui/styles/profile.css @@ -181,6 +181,17 @@ .hunterInfoView-wrapper .hunterInfoView-favoritesBlock-content-mouseImage { border-width: 2px; + transition: 0.2s; +} + +.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 { diff --git a/src/modules/better-ui/styles/tabs.css b/src/modules/better-ui/styles/tabs.css index f504fb2f..39f65c28 100644 --- a/src/modules/better-ui/styles/tabs.css +++ b/src/modules/better-ui/styles/tabs.css @@ -7,17 +7,22 @@ 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 #cbc6bb; + 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 #cbc6bb; + border: 1px solid #f7f5ee; border-bottom: none; + box-shadow: 0 1px #f7f5ee; } /* tab content */ diff --git a/src/modules/favorite-setups/styles.css b/src/modules/favorite-setups/styles.css index daa17b39..6cfa4b58 100644 --- a/src/modules/favorite-setups/styles.css +++ b/src/modules/favorite-setups/styles.css @@ -27,6 +27,14 @@ 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; diff --git a/src/modules/fixes/styles/preferences.css b/src/modules/fixes/styles/preferences.css index b9c2885c..c15fb13f 100644 --- a/src/modules/fixes/styles/preferences.css +++ b/src/modules/fixes/styles/preferences.css @@ -11,11 +11,6 @@ padding-left: 18px; } -.accountVerificationRewardsView__step.claimed { - background-image: url(https://www.mousehuntgame.com/images/ui/backgrounds/checkmark.png?asset_cache_version=2); - background-size: 30px; -} - .accountVerificationRewardsView__step.can_claim { background-image: none; } diff --git a/src/modules/fixes/styles/tabs.css b/src/modules/fixes/styles/tabs.css index 9bf9a260..47829fcd 100644 --- a/src/modules/fixes/styles/tabs.css +++ b/src/modules/fixes/styles/tabs.css @@ -23,11 +23,9 @@ a.mousehuntHud-page-tabHeader.collectibles span { } .mousehuntHud-page-tabHeader { - height: 28px; + height: 29px; } -.mousehuntHud-page-tabHeader.active span, -.mousehuntHud-page-tabHeader:hover span, .mousehuntHud-page-tabHeader span { padding-bottom: 0.5px; margin-top: 4px; @@ -37,4 +35,5 @@ a.mousehuntHud-page-tabHeader.collectibles span { .mousehuntHud-page-tabHeader:hover span { padding-bottom: 6px; margin-top: 0; + border-bottom: none; } diff --git a/src/modules/hover-profiles/styles.css b/src/modules/hover-profiles/styles.css index 225259ae..ec2ef8cf 100644 --- a/src/modules/hover-profiles/styles.css +++ b/src/modules/hover-profiles/styles.css @@ -11,6 +11,7 @@ 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; @@ -83,8 +84,8 @@ } #friend-data-wrapper .friendsPage-friendRow-environment-icon { - width: 25px; - height: 25px; + width: 27px; + height: 27px; margin-right: 3px; } @@ -128,9 +129,7 @@ box-sizing: border-box; display: flex; align-items: center; - width: 145px; height: 40px; - padding-right: 10px; margin-left: -10px; } @@ -212,3 +211,33 @@ .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; +} diff --git a/src/modules/location-huds/labyrinth/styles.css b/src/modules/location-huds/labyrinth/styles.css index 6b2506d7..1516debd 100644 --- a/src/modules/location-huds/labyrinth/styles.css +++ b/src/modules/location-huds/labyrinth/styles.css @@ -501,97 +501,6 @@ a.labyrinthHUD-door.labyrinthHUD-door-category-f::after { opacity: 1; } -.labyrinthHUD-exitContainer .labyrinthHUD-exit .mousehuntTooltip { - top: -3px; - bottom: unset; - display: none; - align-items: center; - width: 75px; - height: 49px; - padding: 0 2px; - margin-left: 7px; - color: #dad0d0; - background-color: rgb(51 47 43 / 85%); - border: none; - border-radius: 18px 18px 0 0; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit .mousehuntTooltip .mousehuntTooltip-arrow { - display: none; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit.disabled::after { - position: absolute; - inset: -5px -5px 0 -7px; - display: block; - content: ""; - background-color: #825c33d6; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - transition: 0.4s; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit:hover::after { - background-color: transparent; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit-y1::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit-h1::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit-s1::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit-n1::after { - position: absolute; - top: -40px; - right: -8px; - left: -8px; - display: flex; - align-items: center; - justify-content: center; - height: 40px; - font-size: 11px; - font-weight: 900; - color: #371d0085; - text-align: center; - content: ""; - transition: 0.3s; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit-y1::after { - content: "Paladin Weapon Master"; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit-h1::after { - content: "Manaforge Smith"; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit-s1::after { - content: "Soul Binder"; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit-n1::after { - top: -29px; - content: "Retired Minotaur"; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-y1:hover::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-h1:hover::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-s1:hover::after, -.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-n1:hover::after { - color: #f2c899; - opacity: 0.8; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit.mousehuntTooltipParent:hover .mousehuntTooltip { - display: flex; - animation: none; -} - -.labyrinthHUD-exitContainer .labyrinthHUD-exit.labyrinthHUD-exit-n1 .mousehuntTooltip { - top: 8px; - left: -1px; - width: 93px; - height: 60px; -} - .labyrinthHUD-secretContainer { font-weight: 900; background-color: transparent; diff --git a/src/modules/location-huds/pollution-outbreak/styles.css b/src/modules/location-huds/pollution-outbreak/styles.css index 18757b4b..d769be47 100644 --- a/src/modules/location-huds/pollution-outbreak/styles.css +++ b/src/modules/location-huds/pollution-outbreak/styles.css @@ -14,11 +14,10 @@ bottom: unset; left: 17px; z-index: 29; - padding: 2px 5px; - font-size: 14px; - background-color: rgb(255 255 255 / 35%); + padding: 2px 7px 2px 3px; + font-size: 12px; border-top: 1px solid #999; - border-radius: 5px 0 10px; + border-radius: 5px 0 10px 4px; } .pollutionOutbreakHUD-totalPollution-direction-status { @@ -27,14 +26,22 @@ /* move the 'hunters cleaning' to the top right */ .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: rgb(244 244 244 / 80%); +} + /* stylelint-disable prettier/prettier */ /* Upscale the shield icons */ @@ -76,11 +83,13 @@ .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: -1px; + top: 0; left: -1px; - width: 10px; + width: 13px; height: 15px; background-color: #9b9d9d; + background-position: center; + background-size: contain; border-radius: 0; } @@ -98,7 +107,7 @@ left: 1px; width: 16px; height: 15px; - background-color: none; + background-color: transparent; background-position: center; background-size: contain; } @@ -108,7 +117,7 @@ } .pollutionOutbreakHUD-pollution-title-block-progressBar { - background-color: rgb(70 157 48 / 95%); + background-color: rgb(70 157 48 / 75%); box-shadow: -3px 2px 1px 0 #6a6969 inset; } @@ -118,6 +127,7 @@ .pollutionOutbreakHUD-pollution-title-block.complete .pollutionOutbreakHUD-pollution-title-block-name { color: #d1d0cf; + box-shadow: inset 0 2px 1px 0 #6a6969; } .pollutionOutbreakHUD-pollution-title-block.active .pollutionOutbreakHUD-pollution-title-block-progressBar { @@ -198,7 +208,7 @@ span.pollutionOutbreakHUD-refineQuantity { a.pollutionOutbreakHUD-refineButton { top: 0; width: 52px; - height: 16px; + height: 17px; margin-right: 5px; background-position: 0 center; background-size: 100%; @@ -215,7 +225,7 @@ a.pollutionOutbreakHUD-refineButton:hover { position: absolute; inset: 0; display: flex; - align-items: flex-start; + align-items: center; justify-content: center; font-size: 12px; color: #494949; @@ -265,15 +275,16 @@ a.pollutionOutbreakHUD-refineButton:hover { display: block; width: auto; padding: 2px 5px; - font-size: 13px; + font-size: 12px; background: url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png?asset_cache_version=2) top right; - background-color: hsl(0deg 0% 100%); + 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 { @@ -318,8 +329,11 @@ a.pollutionOutbreakHUD-refineButton:hover { box-shadow: inset 0 0 25px 1px #63c833; } -.pollutionOutbreakHUD-item.active .pollutionOutbreakHUD-item-image { - box-shadow: inset 0 0 25px 1px #8dd06c; +.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 0 #8dd06c; } .pollutionOutbreakHUD-item.active .pollutionOutbreakHUD-item-quantity.quantity, @@ -333,44 +347,40 @@ a.pollutionOutbreakHUD-refineButton:hover { } .pollutionOutbreakHUD-pollution-title-block.hero::after { - width: 44px; + width: 41px; content: "30 hrs"; } .pollutionOutbreakHUD-pollution-title-block.knight::after { - width: 44px; + width: 41px; content: "16 hrs"; } .pollutionOutbreakHUD-pollution-title-block.lord_lady::after { - width: 44px; + width: 41px; content: "18 hrs"; } .pollutionOutbreakHUD-pollution-title-block.baron_baroness::after { - width: 44px; + width: 41px; content: "18 hrs"; } -.pollutionOutbreakHUD-pollution-title-block.count_countess::after { - width: 59px; - content: "1 day"; -} - +.pollutionOutbreakHUD-pollution-title-block.count_countess::after, .pollutionOutbreakHUD-pollution-title-block.duke_dutchess::after { - width: 59px; + width: 56px; content: "1 day"; } .pollutionOutbreakHUD-pollution-title-block.grand_duke::after { right: 1px; - width: 69px; + width: 67px; content: "1 day"; } .pollutionOutbreakHUD-pollution-title-block.archduke_archduchess::after { right: 0; - width: 65px; + width: 62px; content: "1 day"; } @@ -407,10 +417,6 @@ a.pollutionOutbreakHUD-refineButton:hover { 0 1px 1px 0 #6a6969 inset; } -.complete .pollutionOutbreakHUD-pollution-title-block-progressBar { - box-shadow: none; -} - .pollutionOutbreakHUD-pollution-title-block.complete::after, .pollutionOutbreakHUD-pollution-title-block.active::after { box-shadow: @@ -427,3 +433,14 @@ a.pollutionOutbreakHUD-refineButton:hover { .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; +} diff --git a/src/modules/show-auras/grid.css b/src/modules/show-auras/grid.css index 097e96da..d97c4d9f 100644 --- a/src/modules/show-auras/grid.css +++ b/src/modules/show-auras/grid.css @@ -41,6 +41,7 @@ text-align: center; } -.mh-improved-aura-view .expiry { +.mh-improved-aura-view .expiry, +.aura.QuestJetStreamAura { display: none; } diff --git a/src/modules/show-auras/icons.css b/src/modules/show-auras/icons.css index 5f7e7ce1..d0922f95 100644 --- a/src/modules/show-auras/icons.css +++ b/src/modules/show-auras/icons.css @@ -19,3 +19,7 @@ .mh-improved-aura-view .expiry { display: none; } + +.aura.QuestJetStreamAura { + display: none; +} diff --git a/src/modules/show-auras/list.css b/src/modules/show-auras/list.css index 5bb67408..0432a041 100644 --- a/src/modules/show-auras/list.css +++ b/src/modules/show-auras/list.css @@ -15,6 +15,10 @@ opacity: 1; } +.aura.QuestJetStreamAura { + display: none; +} + .mh-improved-aura-view .time { font-size: 10px; } From f9ee8d0394b4862d56bcf0d19aeb3f7d98f743a7 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:42:04 -0500 Subject: [PATCH 54/91] Add styles.css to better-journal-icons module --- src/modules/better-journal/journal-icons/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/better-journal/journal-icons/index.js b/src/modules/better-journal/journal-icons/index.js index 381cf574..ab551401 100644 --- a/src/modules/better-journal/journal-icons/index.js +++ b/src/modules/better-journal/journal-icons/index.js @@ -1,6 +1,7 @@ import { addStyles } from '@utils'; import minimalStyles from '../journal-icons-minimal/styles.css'; +import styles from './styles.css'; export default async () => { const existing = document.querySelector('#better-journal-icons'); @@ -15,5 +16,5 @@ export default async () => { document.head.append(style); - addStyles(minimalStyles, 'better-journal-icons'); + addStyles([styles, minimalStyles], 'better-journal-icons'); }; From dba1f881c7b8aa136ad4dff8487d05611503edc9 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:45:55 -0500 Subject: [PATCH 55/91] Make mice info view break group and subgroup into two lines --- src/modules/better-mice/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index 106a8c97..dbb4c770 100644 --- a/src/modules/better-mice/index.js +++ b/src/modules/better-mice/index.js @@ -214,7 +214,16 @@ const updateMouseView = async () => { const groupTitle = mouseView.querySelector('.mouseView-group.mouseview-title-group'); if (groupTitle) { - groupTitle.innerHTML = groupTitle.innerHTML.replace('Group: ', ''); + let newHtml = groupTitle.innerHTML.replace('Group: ', ''); + const subGroups = newHtml.split('('); + if (subGroups.length > 1) { + newHtml = `${subGroups[0]}(${subGroups[1]}`; + groupTitle.classList.add('mouseview-title-group-has-subgroup'); + } else { + newHtml = `${newHtml}`; + } + + groupTitle.innerHTML = newHtml; } const container = mouseView.querySelector('.mouseView-contentContainer'); From b87fed931516d61028fe1196fcd780ecfa2811ae Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:46:06 -0500 Subject: [PATCH 56/91] Add mice hover --- src/modules/better-mice/hover-mice/index.js | 174 ++++++++++++++++++ src/modules/better-mice/hover-mice/styles.css | 67 +++++++ src/modules/better-mice/index.js | 5 + src/modules/experiments/index.js | 4 + 4 files changed, 250 insertions(+) create mode 100644 src/modules/better-mice/hover-mice/index.js create mode 100644 src/modules/better-mice/hover-mice/styles.css diff --git a/src/modules/better-mice/hover-mice/index.js b/src/modules/better-mice/hover-mice/index.js new file mode 100644 index 00000000..12157b50 --- /dev/null +++ b/src/modules/better-mice/hover-mice/index.js @@ -0,0 +1,174 @@ +import { + addStyles, + doEvent, + doRequest, + makeElement, + onRequest, + onTurn, + sessionGet, + sessionSet, + sessionsDelete +} from '@utils'; + +import styles from './styles.css'; + +const fetchAndFillMouseData = async (mouseId) => { + if (isLoading) { + return; + } + + isLoading = true; + + let mouse; + + const cachedMouseData = sessionGet(`better-mice-hover-mice-${mouseId}`, false); + if (cachedMouseData) { + mouse = cachedMouseData; + } else { + const mouseDataRequest = await doRequest('managers/ajax/mice/getstat.php', { + action: 'get_mice', + 'mouse_types[]': mouseId, + }); + + if (! mouseDataRequest?.mice?.length) { + return; + } + + mouse = mouseDataRequest?.mice[0]; + + sessionSet(`better-mice-hover-mice-${mouseId}`, mouse); + } + + const mouseData = makeElement('div', 'mouse-data'); + + 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. Weight: ', 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; + + isLoading = false; +}; + +let mouseDataWrapper; +let isLoading = false; +const makeMouseMarkup = async (mouseId, e) => { + 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 = 'Loading...'; + + fetchAndFillMouseData(mouseId); + + // append to the body and position it + document.body.append(mouseDataWrapper); + const rect = e.target.getBoundingClientRect(); + const top = rect.top + window.scrollY; + const left = rect.left + window.scrollX; + + // Calculate the desired top position for the tooltip + let tooltipTop = top - mouseDataWrapper.offsetHeight - 10; + + // Check if the tooltip would end up off the screen + if (tooltipTop < 0) { + // If it would, position it below the target element instead + 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); // delay in milliseconds + }); + + parent.addEventListener('mouseenter', () => { + clearTimeout(timeoutId); + }); + } + + doEvent('mouse_hover'); +}; + +const main = () => { + 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;`); + + // On mouseover, show the small data popup + link.addEventListener('mouseover', (e) => { + makeMouseMarkup(mouseType, e); + }); + }); +}; + +const hoverMice = () => { + addStyles(styles, 'better-mice-hover-mice'); + + setTimeout(main, 500); + onRequest('*', () => { + setTimeout(main, 1000); + }); + + onTurn(() => { + sessionsDelete('better-mice-hover-mice-'); + }, 1000); +}; + +export default hoverMice; diff --git a/src/modules/better-mice/hover-mice/styles.css b/src/modules/better-mice/hover-mice/styles.css new file mode 100644 index 00000000..6df608e5 --- /dev/null +++ b/src/modules/better-mice/hover-mice/styles.css @@ -0,0 +1,67 @@ +#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; + height: 95px; + align-items: center; + gap: 10px; +} + +#mouse-data-wrapper .mouse-image { + height: 80px; + border-radius: 5px; + border: 1px solid #25211e; + margin-left: 10px; +} + +#mouse-data-wrapper .mouse-text { + display: flex; + flex-direction: column; + justify-content: space-around; + height: 80px; + margin-right: 10px; +} + +#mouse-data-wrapper .mouse-name { + font-size: 12px; + font-weight: 900; +} + +.mouse-catch-stats { + font-size: 10px; + display: grid; + grid-template-columns: 2fr 3fr; + gap: 0 20px; + margin-right: 10px; +} + +.mouse-catch-stats div { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + line-height: 1.5; +} diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index dbb4c770..298cb3a8 100644 --- a/src/modules/better-mice/index.js +++ b/src/modules/better-mice/index.js @@ -12,6 +12,7 @@ import { onOverlayChange } from '@utils'; +import hoverMice from './hover-mice'; import mousePage from './mouse-page'; import settings from './settings'; @@ -377,6 +378,10 @@ const init = async () => { main(); mousePage(); + if (getSetting('better-mice.show-mouse-hover', true)) { + hoverMice(); + } + replaceShowMouseImage(); }; diff --git a/src/modules/experiments/index.js b/src/modules/experiments/index.js index 324dd564..8404e919 100644 --- a/src/modules/experiments/index.js +++ b/src/modules/experiments/index.js @@ -51,6 +51,10 @@ const experiments = [ id: 'experiments.profile-scoreboard-search', title: 'Scoreboard search on Hunter Profiles', load: profileScoreboardSearch, + }, + { + id: 'better-mice.show-mouse-hover', + title: 'Show mice details on hover in journal', } ]; From a7bb56c9a0f297a7073ff75dae1c6155053a7d5c Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:46:24 -0500 Subject: [PATCH 57/91] Add quest class to aura view --- src/modules/show-auras/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/show-auras/index.js b/src/modules/show-auras/index.js index b2ab72e2..38a933e0 100644 --- a/src/modules/show-auras/index.js +++ b/src/modules/show-auras/index.js @@ -76,10 +76,12 @@ const addTrapBlock = () => { auraTrapBlock.id = 'mh-improved-aura-view'; aurasExpiry.forEach((aura) => { - const auraEl = makeElement('div', 'aura'); + const auraClasses = aura.element.classList; + + const questClass = [...auraClasses].find((c) => c.startsWith('Quest')); + const auraEl = makeElement('div', ['aura', questClass]); const auraImage = makeElement('div', 'image'); - const auraClasses = aura.element.classList; // copy the classes from the aura to the new element auraImage.classList.add(...auraClasses); auraImage.classList.remove('mousehuntTooltipParent'); From fcd305ea6abc368702ded4c6dc40e9dc24224c0f Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:46:33 -0500 Subject: [PATCH 58/91] Add more custom hud --- src/modules/custom-hud/index.js | 23 ++++++++++++++--------- src/modules/custom-hud/settings/index.js | 4 +++- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/modules/custom-hud/index.js b/src/modules/custom-hud/index.js index 5a1656bd..0691a110 100644 --- a/src/modules/custom-hud/index.js +++ b/src/modules/custom-hud/index.js @@ -20,18 +20,23 @@ const addStyleEl = () => { // eslint-disable-next-line unicorn/prefer-ternary if ('hud-blueprint' === setting) { style = `body .mousehuntHud-marbleDrawer { - background: - url(${pedestal}) -46px 0 no-repeat, - url(${pedestal}) 731px 0 no-repeat, - url(https://i.mouse.rip/mh-improved/custom-hud/${setting}.png) repeat-y top center; + background: url(${pedestal}) -46px 0 no-repeat, url(${pedestal}) 731px 0 no-repeat, url(https://i.mouse.rip/mh-improved/custom-hud/${setting}.png) repeat-y top center; + }`; + } else if ('suede' === setting) { + style = `.mousehuntHud-marbleDrawer { + background: url(${pedestal}) -51px 0 no-repeat, url(${pedestal}) 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?asset_cache_version=2) repeat-y; + }`; + } else if ('groovy-green' === setting) { + style = `body .mousehuntHud-marbleDrawer { + background: url(${pedestal}) -46px 0 no-repeat, url(${pedestal}) 731px 0 no-repeat,url(https://www.mousehuntgame.com/images/ui/hud/folklore_forest_region/pattern.png) repeat-y bott center/cover; }`; } else { style = `body .mousehuntHud-marbleDrawer { - background: - url(${pedestal}) -46px 0 no-repeat, - url(${pedestal}) 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; + background: url(${pedestal}) -46px 0 no-repeat, url(${pedestal}) 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 { diff --git a/src/modules/custom-hud/settings/index.js b/src/modules/custom-hud/settings/index.js index 450f2c07..23e85b66 100644 --- a/src/modules/custom-hud/settings/index.js +++ b/src/modules/custom-hud/settings/index.js @@ -18,9 +18,11 @@ export default async () => { { name: 'Teal', value: 'hud-teal' }, { name: 'Faded', value: 'hud-faded' }, { name: 'Gray', value: 'hud-gray' }, - { name: 'Blueprint', value: 'hud-blueprint' }, ], }, + { name: 'Suede', value: 'suede' }, + { name: 'Blueprint', value: 'hud-blueprint' }, + { name: 'Groovy Green', value: 'groovy-green' }, ]; return [{ From 315cd004c9bcb8d85e42ed5d6f31ff943e6fba92 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:46:47 -0500 Subject: [PATCH 59/91] styles --- src/modules/better-shops/styles/general.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/better-shops/styles/general.css b/src/modules/better-shops/styles/general.css index 2865c96e..77c54906 100644 --- a/src/modules/better-shops/styles/general.css +++ b/src/modules/better-shops/styles/general.css @@ -358,6 +358,10 @@ span.itemPurchaseView-action-confirm-refund.noRefund::after { height: 17px; } +.itemViewStatBlock-stat.title .itemPurchaseView-image-container .itemViewStatBlock-stat-icon { + background-size: 100%; +} + .itemViewStatBlock-stat.error .itemViewStatBlock-stat-value { background-color: unset; } From 606b0cda17ebcf192b916b6a084b67297bd45d4d Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:46:56 -0500 Subject: [PATCH 60/91] linting --- src/modules/better-mice/settings/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/better-mice/settings/index.js b/src/modules/better-mice/settings/index.js index d764162e..0387ecba 100644 --- a/src/modules/better-mice/settings/index.js +++ b/src/modules/better-mice/settings/index.js @@ -9,6 +9,6 @@ export default async () => { id: 'better-mice.show-attraction-rates', title: 'Show attraction rates', default: true, - }, + } ]; }; From 950f305880d18315bdc49924f3dcda193d408c44 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:47:06 -0500 Subject: [PATCH 61/91] Add loading placeholder to hover profiles --- src/modules/hover-profiles/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/hover-profiles/index.js b/src/modules/hover-profiles/index.js index 9a709048..12f5d7ab 100644 --- a/src/modules/hover-profiles/index.js +++ b/src/modules/hover-profiles/index.js @@ -2,6 +2,7 @@ import { addStyles, doEvent, doRequest, + makeElement, onEvent, onRequest, sessionGet, @@ -60,22 +61,21 @@ const getFriendId = async (target) => { return false; }; +let friendDataWrapper; const makeFriendMarkup = (friendId, data = null, skipCache = false, e) => { - if (! data || ! data.length || ! data[0].user_interactions.relationship) { - return; - } - if (! skipCache) { sessionSet(`mh-improved-cache-friend-${friendId}`, data); sessionSet(`mh-improved-cache-friend-${friendId}-timestamp`, Date.now()); } + 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 { - hg.pages.FriendsPage().getPlaceholderData(); + content = hg.utils.TemplateUtil.render('PageFriends_view_friend_row', hg.pages.FriendsPage().getPlaceholderData()); } const existing = document.querySelectorAll('#friend-data-wrapper'); @@ -85,9 +85,9 @@ const makeFriendMarkup = (friendId, data = null, skipCache = false, e) => { }); } - const friendDataWrapper = document.createElement('div', 'friend-data-wrapper'); + friendDataWrapper = makeElement('div', 'friend-data-wrapper'); friendDataWrapper.id = 'friend-data-wrapper'; - friendDataWrapper.innerHTML = content; + friendDataWrapper.innerHTML = content || 'Loading...'; // append to the body and position it document.body.append(friendDataWrapper); From ee323ba55da46159551f348de28fee5f7931fc84 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:47:17 -0500 Subject: [PATCH 62/91] Fix data caching issues --- src/utils/data.js | 40 +++++++++++++++++++++++++++------------- src/utils/maps.js | 6 +++++- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/utils/data.js b/src/utils/data.js index 23f47f90..e854c68a 100644 --- a/src/utils/data.js +++ b/src/utils/data.js @@ -213,6 +213,19 @@ const sessionGet = (key, defaultValue = false) => { return JSON.parse(value); }; +const sessionDelete = (key) => { + key = `mh-improved-${key}`; + sessionStorage.removeItem(key); +}; + +const sessionsDelete = (prefix) => { + for (const key of Object.keys(sessionStorage)) { + if (key.startsWith(prefix)) { + sessionStorage.removeItem(key); + } + } +}; + /** * Set a cache value. * @@ -227,6 +240,15 @@ const dataCacheSet = (key, value) => { dbSet('data', { id: key, value }); }; +const cacheGetHelper = async (key, defaultValue = false, db = 'cache') => { + const cached = await dbGet(db, key); + if (! cached?.data?.value) { + return defaultValue; + } + + return cached.data.value; +}; + /** * Get a cache value. * @@ -236,21 +258,11 @@ const dataCacheSet = (key, value) => { * @return {Object} The cache value. */ const cacheGet = async (key, defaultValue = false) => { - const cached = await dbGet('cache', key); - if (! cached) { - return defaultValue; - } - - return cached.value; + return await cacheGetHelper(key, defaultValue, 'cache'); }; const dataCacheGet = async (key, defaultValue = false) => { - const cached = await dbGet('data', key); - if (! cached) { - return defaultValue; - } - - return cached.value; + return await cacheGetHelper(key, defaultValue, 'data'); }; /** @@ -271,5 +283,7 @@ export { getHeaders, updateCaches, sessionGet, - sessionSet + sessionSet, + sessionDelete, + sessionsDelete }; diff --git a/src/utils/maps.js b/src/utils/maps.js index 5efab69b..187ba1d4 100644 --- a/src/utils/maps.js +++ b/src/utils/maps.js @@ -302,7 +302,11 @@ const addMHCTData = async (mouse, appendTo, type = 'mouse') => { */ const getCachedValue = async (key) => { const value = await dbGet('ar-cache', key); - return value === undefined ? false : value.value; + if (! value?.data?.value) { + return null; + } + + return value.data.value; }; /** From dd301ed7371450b1be2bb919d0168875eaceb5af Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:47:24 -0500 Subject: [PATCH 63/91] fix double journal replacements --- src/modules/better-journal/journal-replacements/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/better-journal/journal-replacements/index.js b/src/modules/better-journal/journal-replacements/index.js index a32c4d30..75f8ee81 100644 --- a/src/modules/better-journal/journal-replacements/index.js +++ b/src/modules/better-journal/journal-replacements/index.js @@ -123,6 +123,10 @@ const replacements = [ ]; const replaceInEntry = (entry) => { + if (entry.getAttribute('data-replaced')) { + return; + } + const element = entry.querySelector('.journalbody .journaltext'); replacements.forEach(async (string) => { @@ -136,6 +140,8 @@ const replaceInEntry = (entry) => { element.innerHTML = newText; } }); + + entry.setAttribute('data-replaced', 'true'); }; const updateLog = (entry) => { From a0d40ca537c8358ed06a3d8e5a2efc1e11cadc81 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 22:58:25 -0500 Subject: [PATCH 64/91] update changelog --- CHANGELOG.md | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 613be587..6aa27fbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,24 +6,33 @@ - Adds "Hide News Ticker" module +### Better Gifts + +- Minor style updates + ### Better Inventory - Fixes the recipe results tooltip not showing quickly & not caching the data +- Minor style updates ### Better Item View - Adds a "Show Drop Rates" setting +- Minor style updates ### Better Journal - Updates Journal replacement logic to happen more efficiently, quickly, and consistently +- Fixes issues with replacements happening multiple times - Adds more styles for journal entries - Adds a setting for "Show Gold and Points icons" - Adds a setting for "Unique Loot Colors" +- Minor style updates ### Better Maps - Minor style updates +- Fix AR data not being cached ### Better Marketplace @@ -31,7 +40,9 @@ ### Better Mice -- Adds a ‘Show Attraction Rates’ setting, Minor style updates +- Adds a "Show Attraction Rates" setting, Minor style updates +- Updates mice Group and Subgroup to be on two lines in Mouse popup +- Minor style updates ### Better Shops @@ -41,9 +52,13 @@ ### Better UI -- Minor style updates - Fixes delete button being hidden in inbox - Updates game settings styles +- Minor style updates + +### Custom HUD + +- Adds two more options for the Custom HUD background ### Experiments @@ -51,6 +66,7 @@ - Adds new experiment: New settings styles - Adds new experiment: New settings styles (columns) - Adds new experiment: Scoreboard search on Hunter Profiles +- Adds new experiment: Show mice details on hover in journal - Shortens Location HUD toggle button text ### Favorite Setups @@ -59,6 +75,15 @@ - Saves location when saving setup - Suggests setups for a location +### Fixes + +- Fixes tab heights + +### Hover Profiles + +- Adds loading display +- Fixes issues with multiple requests happening to fetch data + ### Image Upscaling - Updates processing logic to be more efficient and less memory intensive @@ -90,7 +115,6 @@ - Adds easter egg when clicking on the current tile or another tile - Updates gem scrambling animation - Fixes the lantern reminder animating on every horn, instead of just once -- Adds special styles for final exit doors - Minor style updates ### Location HUDs: Living Garden Region @@ -98,9 +122,14 @@ - Adds ability to click to equip cursebreaking charms in Cursed City - Minor style updates +### Location HUDs: Toxic Spill + +- Minor style updates + ### Show Auras - Fixed duplication of icons, Style updates +- Hides Jetstream aura to make the display less cluttered ## Version 0.35.6 From 3f0a02dcd26f9b493ef7fa7844887c1462eda1f0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 23:40:45 -0500 Subject: [PATCH 65/91] Fix offset calculation in lgs-reminder module --- src/modules/lgs-reminder/index.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/modules/lgs-reminder/index.js b/src/modules/lgs-reminder/index.js index a0982d57..e74e0c76 100644 --- a/src/modules/lgs-reminder/index.js +++ b/src/modules/lgs-reminder/index.js @@ -43,7 +43,7 @@ const getShieldEndDateTime = () => { const expiry = Date.parse(shieldExpiry); // subtract 5 hours from the expiry time for some reason. - const realExpiry = expiry - (5 * 60 * 60 * 1000); + const realExpiry = expiry - offset; return new Date(realExpiry); }; @@ -165,6 +165,17 @@ const main = () => { } }; +const setOffset = () => { + const userShieldExpiry = new Date(Date.parse(user.shield_expiry)); + const userShieldSeconds = new Date(new Date().setSeconds(new Date().getSeconds() + user.shield_seconds)); + const difference = userShieldExpiry - userShieldSeconds; + + // round to the nearest second + offset = Math.round(difference / 1000) * 1000; +}; + +let offset; + /** * Initialize the module. */ @@ -174,6 +185,8 @@ const init = async () => { return; } + setOffset(); + addStyles(styles, 'lgs-reminder'); main(); From 5639aa5435002ce5d98da1ebe0cd64e0f527502f Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 23:42:37 -0500 Subject: [PATCH 66/91] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6aa27fbd..f5abede7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -126,6 +126,10 @@ - Minor style updates +### Lucky Golden Shield Duration & Reminder + +- Fixes expiry time being off by a number of hours + ### Show Auras - Fixed duplication of icons, Style updates From 850c909340a70905155b4f5e3966d34710b910b3 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 23:47:14 -0500 Subject: [PATCH 67/91] fix lint --- src/modules/better-mice/hover-mice/styles.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/better-mice/hover-mice/styles.css b/src/modules/better-mice/hover-mice/styles.css index 6df608e5..eeea3533 100644 --- a/src/modules/better-mice/hover-mice/styles.css +++ b/src/modules/better-mice/hover-mice/styles.css @@ -25,16 +25,16 @@ #mouse-data-wrapper .mouse-data { display: grid; grid-template-columns: 90px 1fr; - height: 95px; - align-items: center; gap: 10px; + align-items: center; + height: 95px; } #mouse-data-wrapper .mouse-image { height: 80px; - border-radius: 5px; - border: 1px solid #25211e; margin-left: 10px; + border: 1px solid #25211e; + border-radius: 5px; } #mouse-data-wrapper .mouse-text { @@ -51,11 +51,11 @@ } .mouse-catch-stats { - font-size: 10px; display: grid; grid-template-columns: 2fr 3fr; gap: 0 20px; margin-right: 10px; + font-size: 10px; } .mouse-catch-stats div { From 3a0f154faf0cd5e669e629fd0a3012d0e46d7f24 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 23:54:33 -0500 Subject: [PATCH 68/91] Update journal item colors to use json file and dynamically create it, add snowball charm --- .../journal-item-colors/colors.json | 7 +++++++ .../better-journal/journal-item-colors/index.js | 15 +++++++++++++-- .../better-journal/journal-item-colors/styles.css | 14 -------------- 3 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 src/modules/better-journal/journal-item-colors/colors.json delete mode 100644 src/modules/better-journal/journal-item-colors/styles.css diff --git a/src/modules/better-journal/journal-item-colors/colors.json b/src/modules/better-journal/journal-item-colors/colors.json new file mode 100644 index 00000000..a5762970 --- /dev/null +++ b/src/modules/better-journal/journal-item-colors/colors.json @@ -0,0 +1,7 @@ +[ + { "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" } +] diff --git a/src/modules/better-journal/journal-item-colors/index.js b/src/modules/better-journal/journal-item-colors/index.js index c0baa96e..21a7722e 100644 --- a/src/modules/better-journal/journal-item-colors/index.js +++ b/src/modules/better-journal/journal-item-colors/index.js @@ -1,7 +1,18 @@ import { addStyles } from '@utils'; -import styles from './styles.css'; +import colors from './colors.json'; + +const makeStyles = () => { + let styles = ''; + + colors.forEach((color) => { + console.log(color); + styles += `.journal .entry a[href="https://www.mousehuntgame.com/item.php?item_type=${color.item}"] { color: ${color.color}; }`; + }); + + return styles; +}; export default async () => { - addStyles(styles, 'better-journal-link-colors'); + addStyles(makeStyles(), 'better-journal-link-colors'); }; diff --git a/src/modules/better-journal/journal-item-colors/styles.css b/src/modules/better-journal/journal-item-colors/styles.css deleted file mode 100644 index 16140736..00000000 --- a/src/modules/better-journal/journal-item-colors/styles.css +++ /dev/null @@ -1,14 +0,0 @@ -.journal .entry a.item[href="https://www.mousehuntgame.com/item.php?item_type=scavenger_hunt_hint_stat_item"], -.journal .entry a.item[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"] { /* stylelint-disable-line prettier/prettier */ - color: #1e831e; -} - -.journal .entry a.loot[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"], -.journal .entry a.lucky[href="https://www.mousehuntgame.com/item.php?item_type=fulminas_gift_convertible"] { /* stylelint-disable-line prettier/prettier */ - color: #a012a0; -} - -.journal .entry a.loot[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"], -.journal .entry a.lucky[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"] { /* stylelint-disable-line prettier/prettier */ - color: #8b9ec8; -} From 9ed586081b087c97f74974d711247256aaaa2495 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Mon, 18 Mar 2024 23:55:11 -0500 Subject: [PATCH 69/91] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5abede7..14473cd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ - Adds more styles for journal entries - Adds a setting for "Show Gold and Points icons" - Adds a setting for "Unique Loot Colors" +- Adds unique loot color for Snowball charms - Minor style updates ### Better Maps From 4c396b0060582511ef19d14b2918338c7fce5f39 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:35:55 -0500 Subject: [PATCH 70/91] update styles --- .../journal-icons-minimal/styles.css | 31 +++++++++++------- .../better-journal/journal-icons/styles.css | 5 +++ .../journal-styles/styles/backgrounds.css | 1 + .../styles/custom-entries/aura.css | 4 +++ .../location/folklore-forest.css | 5 +-- .../custom-entries/location/iceberg.css | 32 +++++++++++++++++-- .../custom-entries/location/labyrinth.css | 9 ++++++ .../journal-styles/styles/date-hiding.css | 4 +++ .../journal-styles/styles/fullstop.css | 1 + .../journal-styles/styles/general.css | 5 --- .../tsitu-location-catch-stats.css | 16 ++++++++-- .../inventory-only-open-multiple/styles.css | 7 ++-- .../location-huds/ancient-city/styles.css | 8 +++++ .../location-huds/iceberg/styles/styles.css | 1 + .../location-huds/labyrinth/styles.css | 4 --- .../region-living-garden/styles.css | 4 +++ 16 files changed, 106 insertions(+), 31 deletions(-) diff --git a/src/modules/better-journal/journal-icons-minimal/styles.css b/src/modules/better-journal/journal-icons-minimal/styles.css index 51558d11..f8da6cea 100644 --- a/src/modules/better-journal/journal-icons-minimal/styles.css +++ b/src/modules/better-journal/journal-icons-minimal/styles.css @@ -3,19 +3,23 @@ .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=snowball_trinket"], +.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"], +.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"] { position: relative; - padding-left: 18px; + 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=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: -4px; + left: -2px; display: inline-block; width: 19px; height: 19px; @@ -30,10 +34,6 @@ } /* Chrome charm */ -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"] { - padding-left: 15px; -} - .journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=chrome_trinket"]::before { background-image: url(https://i.mouse.rip/upscaled/7d9f0e220db8280b84b8bffe39cd803e.png); } @@ -48,15 +48,22 @@ } /* Snowball charm */ -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=snowball_trinket"] { - padding-left: 15px; -} - .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: 24px; +} + +.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: 1px; + background-image: url(https://www.mousehuntgame.com/images/items/stats/large/5da5d920ba95f944d4e5b37ae235685e.png?cv=2); +} + /* Don't show the icon in unstable charm trigger */ .journal .entry.unstable_charm_trigger a[href*="https://www.mousehuntgame.com/item.php?item_type="]:before { display: none; diff --git a/src/modules/better-journal/journal-icons/styles.css b/src/modules/better-journal/journal-icons/styles.css index 61fc5b0b..36008201 100644 --- a/src/modules/better-journal/journal-icons/styles.css +++ b/src/modules/better-journal/journal-icons/styles.css @@ -5,3 +5,8 @@ .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; +} diff --git a/src/modules/better-journal/journal-styles/styles/backgrounds.css b/src/modules/better-journal/journal-styles/styles/backgrounds.css index 4cb5c6d9..7254974c 100644 --- a/src/modules/better-journal/journal-styles/styles/backgrounds.css +++ b/src/modules/better-journal/journal-styles/styles/backgrounds.css @@ -58,6 +58,7 @@ .journal .content .entry.bonuscatchfailure, .journal .content .entry.bonuscatchsuccess { background-position: left; + background-size: cover; } .journal .content .entry.minimalJournalImage { diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css b/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css index b25638d5..863b5c3a 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css @@ -9,3 +9,7 @@ .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; +} diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css index db9439bc..831d0699 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css @@ -13,14 +13,15 @@ } .journal .entry.folkloreForest-tableOfContents.wordCount .journaltext { - margin-left: 10px; + max-width: 275px; + margin: 0 auto; font-size: 11px; } /* add a quill to the word count entry */ .journal .entry.folkloreForest-tableOfContents.wordCount::after { position: absolute; - top: 2px; + top: 20%; left: 2px; width: 37px; height: 37px; diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css index 61547ab1..efaf7900 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css @@ -5,8 +5,34 @@ font-style: inherit; } -.journal .iceberg_advance .journalbody, -.journal .iceberg_pushback .journalbody, -.journal .iceberg_pushback_prevented .journalbody { +.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; +} + +/* fixes alignment with hidden date */ +.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; +} diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css index 3fd82e2e..efd709e9 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css @@ -19,3 +19,12 @@ .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; +} diff --git a/src/modules/better-journal/journal-styles/styles/date-hiding.css b/src/modules/better-journal/journal-styles/styles/date-hiding.css index 4e8e2a00..c295b8a3 100644 --- a/src/modules/better-journal/journal-styles/styles/date-hiding.css +++ b/src/modules/better-journal/journal-styles/styles/date-hiding.css @@ -16,6 +16,10 @@ .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.short.rift-whisker-woods-increase .journalbody .journaldate { display: none; } diff --git a/src/modules/better-journal/journal-styles/styles/fullstop.css b/src/modules/better-journal/journal-styles/styles/fullstop.css index 29b8fe23..328136a4 100644 --- a/src/modules/better-journal/journal-styles/styles/fullstop.css +++ b/src/modules/better-journal/journal-styles/styles/fullstop.css @@ -40,6 +40,7 @@ .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: "."; diff --git a/src/modules/better-journal/journal-styles/styles/general.css b/src/modules/better-journal/journal-styles/styles/general.css index eac9115a..8d7c0b1e 100644 --- a/src/modules/better-journal/journal-styles/styles/general.css +++ b/src/modules/better-journal/journal-styles/styles/general.css @@ -234,8 +234,3 @@ p.mhi-x-entry { background-position: top, bottom, center; background-size: contain; } - -.journal .entry .journalbody .journaltext .lucky::after { - background-image: url(https://www.mousehuntgame.com/images/ui/camp/trap/stat_luck.png?asset_cache_version=2); - background-size: cover; -} diff --git a/src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css b/src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css index b7e36c85..a0bfbba5 100644 --- a/src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css +++ b/src/modules/better-ui/userscript-styles/tsitu-location-catch-stats.css @@ -26,7 +26,7 @@ #tsitu-location-stats button[style="float: right; font-size: 8px;"] { position: absolute; - top: 5px; + top: 7px; right: 5px; width: 20px; height: 20px; @@ -40,7 +40,7 @@ color: #926944; background-color: #eee; border-radius: 50%; - outline: 1px solid #ccc; + outline: 1px solid #926944; } #tsitu-location-stats > div br { @@ -63,6 +63,13 @@ 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; @@ -139,3 +146,8 @@ .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; +} diff --git a/src/modules/inventory-only-open-multiple/styles.css b/src/modules/inventory-only-open-multiple/styles.css index 06b4c63f..a77d9c04 100644 --- a/src/modules/inventory-only-open-multiple/styles.css +++ b/src/modules/inventory-only-open-multiple/styles.css @@ -3,7 +3,8 @@ 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="all"], +.inventoryPage-item.convertible .inventoryPage-item-content-action input[data-item-action="single"] { pointer-events: none; filter: grayscale(1); } @@ -13,7 +14,7 @@ filter: none; } -.inventoryPage-item.convertible .locked .inventoryPage-item-content-action input:first-of-type:not(:only-of-type), -.inventoryPage-item.convertible .locked .inventoryPage-item-content-action input.allButOne { +.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; } diff --git a/src/modules/location-huds/ancient-city/styles.css b/src/modules/location-huds/ancient-city/styles.css index 889f1996..0379563a 100644 --- a/src/modules/location-huds/ancient-city/styles.css +++ b/src/modules/location-huds/ancient-city/styles.css @@ -88,3 +88,11 @@ span.ancientCityHUD-alertLevel { 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); +} diff --git a/src/modules/location-huds/iceberg/styles/styles.css b/src/modules/location-huds/iceberg/styles/styles.css index c2309759..ff2acc03 100644 --- a/src/modules/location-huds/iceberg/styles/styles.css +++ b/src/modules/location-huds/iceberg/styles/styles.css @@ -3,6 +3,7 @@ top: 0; display: inline-flex; align-items: center; + font-size: 14px; border-color: #666; border-radius: 0; } diff --git a/src/modules/location-huds/labyrinth/styles.css b/src/modules/location-huds/labyrinth/styles.css index 1516debd..5a73c091 100644 --- a/src/modules/location-huds/labyrinth/styles.css +++ b/src/modules/location-huds/labyrinth/styles.css @@ -512,7 +512,3 @@ a.labyrinthHUD-door.labyrinthHUD-door-category-f::after { .labyrinthHUD-confirmDescription .labyrinthHUD-exit { top: -4px; } - -.ancientCityHUD-bossContainer.mousehuntTooltipParent.ancientCityHUD-boss-n.hiddenDistrict:active { - background-position: 0 0; -} diff --git a/src/modules/location-huds/region-living-garden/styles.css b/src/modules/location-huds/region-living-garden/styles.css index 1235fbf9..6dbd31b5 100644 --- a/src/modules/location-huds/region-living-garden/styles.css +++ b/src/modules/location-huds/region-living-garden/styles.css @@ -258,3 +258,7 @@ .livingGardenHud .essenceContainer .item.essence_a_crafting_item { padding-left: 25px; } + +.livingGardenHud .spongeDoubleYellow { + width: 55px; +} From 14d119439f20908e31ce7ee25e02e2193968542f Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:36:34 -0500 Subject: [PATCH 71/91] Add SEH styles --- .../event-locations/birthday/index.js | 47 +------- .../location-huds/event-locations/shared.js | 49 ++++++++ .../event-locations/spring-egg-hunt/index.js | 8 +- .../spring-egg-hunt/styles.css | 112 +++++++++++++++++- 4 files changed, 171 insertions(+), 45 deletions(-) create mode 100644 src/modules/location-huds/event-locations/shared.js diff --git a/src/modules/location-huds/event-locations/birthday/index.js b/src/modules/location-huds/event-locations/birthday/index.js index c5d01e10..176d8da4 100644 --- a/src/modules/location-huds/event-locations/birthday/index.js +++ b/src/modules/location-huds/event-locations/birthday/index.js @@ -1,5 +1,7 @@ import { addHudStyles, makeElement, onDialogShow, setMultipleTimeout } from '@utils'; +import { updateDateDates, updateDateTooltip } from '../shared'; + import styles from './styles.css'; const changeColors = () => { @@ -52,47 +54,6 @@ const changeColors = () => { popup.append(hat); }; -const updateDateTooltip = () => { - const tooltip = document.querySelector('.superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip'); - if (! tooltip) { - return; - } - - if (tooltip.getAttribute('data-changed')) { - return; - } - - tooltip.classList.add('bottom'); - tooltip.classList.remove('top'); - tooltip.setAttribute('data-changed', 'true'); -}; - -const spaceNumbers = (text) => { - return text.replaceAll(/(\d+)/g, ' $1 ').trim(); -}; - -const updateDateDates = () => { - const badge = document.querySelector('.superBrieFactoryHUD-dateCountdownMiniContainer .dateCountdownMini__remainingText'); - if (badge) { - if (badge.getAttribute('data-changed')) { - return; - } - - badge.innerHTML = spaceNumbers(badge.innerHTML); - badge.setAttribute('data-changed', 'true'); - } - - const tooltip = document.querySelector('.superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip .dateCountdown__datesContainer .dateCountdown__remainingText'); - if (tooltip) { - if (tooltip.getAttribute('data-changed')) { - return; - } - - tooltip.innerHTML = spaceNumbers(tooltip.innerHTML); - tooltip.setAttribute('data-changed', 'true'); - } -}; - /** * Always active. */ @@ -105,8 +66,8 @@ const birthdayLocation = async () => { addHudStyles(styles); setMultipleTimeout(() => { - updateDateTooltip(); - updateDateDates(); + updateDateTooltip('.superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip'); + updateDateDates('.superBrieFactoryHUD-dateCountdownMiniContainer .dateCountdownMini__remainingText', '.superBrieFactoryHUD-dateCountdownMiniWrapper.mousehuntTooltipParent .mousehuntTooltip .dateCountdown__datesContainer .dateCountdown__remainingText'); }, [100, 500, 1000]); onDialogShow('superBrieFactoryVendingMachinePopup', () => { diff --git a/src/modules/location-huds/event-locations/shared.js b/src/modules/location-huds/event-locations/shared.js new file mode 100644 index 00000000..d4ac5229 --- /dev/null +++ b/src/modules/location-huds/event-locations/shared.js @@ -0,0 +1,49 @@ +const 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'); +}; + +const spaceNumbers = (text) => { + return text.replaceAll(/(\d+)/g, ' $1 ').trim(); +}; + +const 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'); + } +}; + +export { + updateDateTooltip, + updateDateDates +}; diff --git a/src/modules/location-huds/event-locations/spring-egg-hunt/index.js b/src/modules/location-huds/event-locations/spring-egg-hunt/index.js index b1316843..fd1eac4a 100644 --- a/src/modules/location-huds/event-locations/spring-egg-hunt/index.js +++ b/src/modules/location-huds/event-locations/spring-egg-hunt/index.js @@ -1,4 +1,6 @@ -import { addStyles } from '@utils'; +import { addStyles, setMultipleTimeout } from '@utils'; + +import { updateDateDates } from '../shared'; import styles from './styles.css'; @@ -7,6 +9,10 @@ import styles from './styles.css'; */ const springEggHuntGlobal = async () => { addStyles(styles, 'location-hud-events-spring-egg-hunt'); + + setMultipleTimeout(() => { + updateDateDates('.springEggHuntCampHUD-dateCountdownMiniContainer .dateCountdownMini__remainingText'); + }, [100, 500, 1000]); }; /** diff --git a/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css b/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css index 01dedee9..0ba123f3 100644 --- a/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css +++ b/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css @@ -1 +1,111 @@ -/* Styles that apply to all locations */ +.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: -2px; + font-size: 13px; +} + +.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 { + display: flex; + align-items: center; +} + +.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: 0.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; +} From 2d1f65685b5854b2a02e46ea3abc3951ed20643a Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:37:29 -0500 Subject: [PATCH 72/91] Fix image upscaling --- src/modules/image-upscaling/index.js | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/src/modules/image-upscaling/index.js b/src/modules/image-upscaling/index.js index 2d2aa53b..f1d7e9e2 100644 --- a/src/modules/image-upscaling/index.js +++ b/src/modules/image-upscaling/index.js @@ -13,6 +13,7 @@ const stripUrl = (url) => { .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('?', '') @@ -155,7 +156,6 @@ const upscaleBackgroundImages = async () => { }); }; -let lastUpscaledRan = 0; const upscaleImages = async () => { if (isUpscaling) { return; @@ -163,13 +163,6 @@ const upscaleImages = async () => { isUpscaling = true; - // check when we last ran the upscale function and if it was less than 1 second ago, skip the upscale. - if (lastUpscaledRan > Date.now() - 100) { - // return; - } - - lastUpscaledRan = Date.now(); - observer.disconnect(); // Upscale the images. @@ -251,6 +244,8 @@ const main = async () => { }); observer.observe(document, observerOptions); + + upscaleImages(); }; const init = async () => { @@ -273,14 +268,6 @@ const init = async () => { setTimeout(upscaleImages, 500); }); - - onEvent('journal-entry', () => { - isUpscaling = true; - }); - - onEvent('journal-entries', () => { - isUpscaling = false; - }); }; export default { From 7c9c045492071abb7e37560df7e11a1893f0684c Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:37:54 -0500 Subject: [PATCH 73/91] Update journal list and replacements to work with more things --- .../better-journal/journal-list/index.js | 23 +++++++++++++++++++ .../journal-replacements/index.js | 22 ++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/modules/better-journal/journal-list/index.js b/src/modules/better-journal/journal-list/index.js index f7871cbf..6511f4e5 100644 --- a/src/modules/better-journal/journal-list/index.js +++ b/src/modules/better-journal/journal-list/index.js @@ -20,6 +20,7 @@ const makeListItems = (itemList) => { }; const splitText = (text) => { + text = text.replaceAll('Really, Really', 'Really Really'); const splitItems = text.split(/, | and /); return splitItems.map((item) => item.trim()).filter(Boolean); }; @@ -65,6 +66,22 @@ const getItemsFromText = (type, text) => { newText: `I opened ${suffix[1]} and received:`, }; } + + if ('other' === type) { + items = text.innerHTML.split('the following loot'); + if (items.length < 2) { + return { + list: [], + newText: text.innerHTML, + }; + } + + return { + items, + list: splitText(items[1]), + newText: `${items[0]} the following loot:`, + }; + } }; /** @@ -89,6 +106,10 @@ const formatAsList = async (entry) => { 'convertible_open', ]; + const otherClassesToCheck = [ + 'iceberg_defeated', + ]; + const classes = new Set(entry.classList); let type; @@ -98,6 +119,8 @@ const formatAsList = async (entry) => { type = 'loot'; } else if (convertibleClassesToCheck.some((c) => classes.has(c))) { type = 'convertible'; + } else if (otherClassesToCheck.some((c) => classes.has(c))) { + type = 'other'; } else { return; } diff --git a/src/modules/better-journal/journal-replacements/index.js b/src/modules/better-journal/journal-replacements/index.js index 75f8ee81..097c4bfc 100644 --- a/src/modules/better-journal/journal-replacements/index.js +++ b/src/modules/better-journal/journal-replacements/index.js @@ -177,6 +177,27 @@ const updateMouseImageLinks = (entry) => { }); }; +const 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]); + }); + } + }); +}; + const shouldSkip = (entry) => { const keepOriginalClasses = new Set([ 'lunar_lantern', @@ -200,6 +221,7 @@ const processEntry = async (entry) => { replaceInEntry(entry); updateLog(entry); updateMouseImageLinks(entry); + updateItemLinks(entry); }; /** From f6061f15f456562cdd34077eee8e58aa0acb7aef Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:38:21 -0500 Subject: [PATCH 74/91] Fix recipe results tooltip not showing on page navigation, only on refresh --- src/modules/better-inventory/recipes.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/better-inventory/recipes.js b/src/modules/better-inventory/recipes.js index 34abd62a..2bab5e08 100644 --- a/src/modules/better-inventory/recipes.js +++ b/src/modules/better-inventory/recipes.js @@ -303,6 +303,12 @@ export default async () => { subtab: 'recipe', }); + onNavigation(modifySmashableTooltip, { + page: 'inventory', + tab: 'crafting', + subtab: 'hammer', + }); + onEvent('js_dialog_show', warnOnBadCrafts); modifySmashableTooltip(); From 1830165c20b00dcf0f62f64b22890955105b34dd Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:38:47 -0500 Subject: [PATCH 75/91] Adds styles for the Tsuitu's autoloader --- src/modules/better-ui/index.js | 2 + .../userscript-styles/tsitu-autoloader.css | 91 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/modules/better-ui/userscript-styles/tsitu-autoloader.css diff --git a/src/modules/better-ui/index.js b/src/modules/better-ui/index.js index 066b64b9..ed6d407c 100644 --- a/src/modules/better-ui/index.js +++ b/src/modules/better-ui/index.js @@ -8,6 +8,7 @@ import journalHistorianStyles from './userscript-styles/journal-historian.css'; import lgsReminderStyles from './userscript-styles/lgs-reminder.css'; import mhctStyles from './userscript-styles/mhct.css'; import profilePlusStyles from './userscript-styles/profile-plus.css'; +import tsituAutoloaderStyles from './userscript-styles/tsitu-autoloader.css'; import tsituLocationCatchStatsStyles from './userscript-styles/tsitu-location-catch-stats.css'; import tsituQolStyles from './userscript-styles/tsitu-qol.css'; import tsituSupplySearchStyles from './userscript-styles/tsitu-supply-search.css'; @@ -29,6 +30,7 @@ const addUserscriptStyles = async () => { { id: 'userscript-styles-no-journal-historian-styles', styles: journalHistorianStyles }, { id: 'userscript-styles-no-lgs-reminder-styles', styles: lgsReminderStyles }, { id: 'userscript-styles-no-mhct-styles', styles: mhctStyles }, + { id: 'userscript-styles-no-tsitu-autoloader-styles', styles: tsituAutoloaderStyles }, { id: 'userscript-styles-no-tsitu-location-catch-stats-styles', styles: tsituLocationCatchStatsStyles }, { id: 'userscript-styles-no-tsitu-qol-styles', styles: tsituQolStyles }, { id: 'userscript-styles-no-tsitu-supply-search-styles', styles: tsituSupplySearchStyles }, diff --git a/src/modules/better-ui/userscript-styles/tsitu-autoloader.css b/src/modules/better-ui/userscript-styles/tsitu-autoloader.css new file mode 100644 index 00000000..f8030a0e --- /dev/null +++ b/src/modules/better-ui/userscript-styles/tsitu-autoloader.css @@ -0,0 +1,91 @@ +#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; +} From 9be8b5aa15d82c9b66fd7a2f0edee6ec8504ae9a Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:39:07 -0500 Subject: [PATCH 76/91] Fix potential null var in map travel confirmation --- src/utils/maps.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/maps.js b/src/utils/maps.js index 187ba1d4..75630da7 100644 --- a/src/utils/maps.js +++ b/src/utils/maps.js @@ -181,7 +181,7 @@ const showTravelConfirmationNoDetails = async (environment) => { type: environment.id, thumb: environment.image, header: environment.headerImage, - goals, + goals: goals || [], num_completed_goals: 0, num_total_goals: environmentMice.length, hunters: [], From 6b0ae85581d8f9cfc6c67abe814aef9c09702c65 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:39:22 -0500 Subject: [PATCH 77/91] cleanup --- .../better-journal/journal-item-colors/index.js | 1 - src/modules/better-mice/hover-mice/index.js | 10 +--------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/modules/better-journal/journal-item-colors/index.js b/src/modules/better-journal/journal-item-colors/index.js index 21a7722e..9c84e8f6 100644 --- a/src/modules/better-journal/journal-item-colors/index.js +++ b/src/modules/better-journal/journal-item-colors/index.js @@ -6,7 +6,6 @@ const makeStyles = () => { let styles = ''; colors.forEach((color) => { - console.log(color); styles += `.journal .entry a[href="https://www.mousehuntgame.com/item.php?item_type=${color.item}"] { color: ${color.color}; }`; }); diff --git a/src/modules/better-mice/hover-mice/index.js b/src/modules/better-mice/hover-mice/index.js index 12157b50..5b19b5a9 100644 --- a/src/modules/better-mice/hover-mice/index.js +++ b/src/modules/better-mice/hover-mice/index.js @@ -1,6 +1,5 @@ import { addStyles, - doEvent, doRequest, makeElement, onRequest, @@ -96,18 +95,13 @@ const makeMouseMarkup = async (mouseId, e) => { fetchAndFillMouseData(mouseId); - // append to the body and position it document.body.append(mouseDataWrapper); const rect = e.target.getBoundingClientRect(); const top = rect.top + window.scrollY; const left = rect.left + window.scrollX; - // Calculate the desired top position for the tooltip let tooltipTop = top - mouseDataWrapper.offsetHeight - 10; - - // Check if the tooltip would end up off the screen if (tooltipTop < 0) { - // If it would, position it below the target element instead tooltipTop = top + rect.height + 10; } @@ -130,15 +124,13 @@ const makeMouseMarkup = async (mouseId, e) => { parent.addEventListener('mouseleave', () => { timeoutId = setTimeout(() => { mouseDataWrapper.remove(); - }, 500); // delay in milliseconds + }, 500); }); parent.addEventListener('mouseenter', () => { clearTimeout(timeoutId); }); } - - doEvent('mouse_hover'); }; const main = () => { From 139aefa359047bb5bd08854d8671eeac83c35592 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:39:47 -0500 Subject: [PATCH 78/91] Adds Spring Egg Hunt horn as an option to custom horn --- src/modules/custom-horn/settings/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/custom-horn/settings/index.js b/src/modules/custom-horn/settings/index.js index de5641e2..29bae69c 100644 --- a/src/modules/custom-horn/settings/index.js +++ b/src/modules/custom-horn/settings/index.js @@ -24,6 +24,10 @@ export default async () => { name: 'Lunar New Year', value: 'huntersHornView--seasonalEvent-lunarNewYear', }, + { + name: 'Spring Egg Hunt', + value: 'huntersHornView--seasonalEvent-springEggHunt', + } ], }, { From 888119614b1f29e5c3ca0b740458e5fe48a76c47 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:39:59 -0500 Subject: [PATCH 79/91] Fix show auras duplicating --- src/modules/show-auras/index.js | 38 +++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/modules/show-auras/index.js b/src/modules/show-auras/index.js index 38a933e0..a16e15c6 100644 --- a/src/modules/show-auras/index.js +++ b/src/modules/show-auras/index.js @@ -61,26 +61,41 @@ const addExpiryWarning = () => { } }; +let isAppending = false; const addTrapBlock = () => { + if (isAppending) { + return; + } + + isAppending = true; + const trapSummary = document.querySelector('.trapSelectorView__trapStatSummaryContainer'); if (! trapSummary) { return; } - const existing = document.querySelector('#mh-improved-aura-view'); + let existing = document.querySelector('#mh-improved-aura-view'); if (existing) { - existing.remove(); + 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')); + const questClass = [...auraClasses].find((c) => c.startsWith('Quest') || c.startsWith('Event') || c.startsWith('Mini')); const auraEl = makeElement('div', ['aura', questClass]); + auraEl.id = auraKey; + const auraImage = makeElement('div', 'image'); // copy the classes from the aura to the new element auraImage.classList.add(...auraClasses); @@ -97,7 +112,14 @@ const addTrapBlock = () => { auraTrapBlock.append(auraEl); }); - trapSummary.append(auraTrapBlock); + existing = document.querySelector('#mh-improved-aura-view'); + if (existing) { + existing.replaceWith(auraTrapBlock); + } else { + trapSummary.append(auraTrapBlock); + } + + isAppending = false; }; const getAuras = () => { @@ -163,9 +185,11 @@ const getAuras = () => { const aurasExpiry = []; const main = () => { - getAuras(); - addExpiryWarning(); - addTrapBlock(); + setTimeout(() => { + getAuras(); + addExpiryWarning(); + addTrapBlock(); + }, 1000); }; const init = async () => { From b744c968e2306ee2ece0f3dbbf1086ead572cebd Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:40:05 -0500 Subject: [PATCH 80/91] update changelog --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14473cd9..4f114c58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ ### Better Inventory - Fixes the recipe results tooltip not showing quickly & not caching the data +- Fixes recipe results tooltip not showing on page navigation, only on refresh - Minor style updates ### Better Item View @@ -55,8 +56,13 @@ - Fixes delete button being hidden in inbox - Updates game settings styles +- Adds styles for the Tsuitu's autoloader - Minor style updates +### Custom Horn + +- Adds Spring Egg Hunt horn as an option + ### Custom HUD - Adds two more options for the Custom HUD background @@ -89,6 +95,10 @@ - Updates processing logic to be more efficient and less memory intensive +### Inventory - Only Open Multiple + +- Fixes issue with Open button being available when it shouldn't be + ### Journal Changer - Fixes theme being randomized more than once per day @@ -100,6 +110,10 @@ - Adds slight animations - Minor style updates +### Location HUDs: Event Location + +- Add Spring Egg Hunt styles + ### Location HUDs: Folklore Forest Region - Minor style updates From b2e669811a9980e699e4c22ffa43efabb54514f6 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:40:31 -0500 Subject: [PATCH 81/91] Comment out patreon link --- src/modules/update-notifications/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index f81f36f2..1add1055 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -57,7 +57,7 @@ const showUpdateSummary = async () => { const links = [ 'Settings', `Leave a review`, - 'Support on Patreon', + // 'Support on Patreon', `Report an issue`, ]; From 9feec88a990d2e42546a20d57d97add2f36080e6 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 20:42:37 -0500 Subject: [PATCH 82/91] Update folklore-forest.css with flexbox and height adjustments --- .../styles/custom-entries/location/folklore-forest.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css index 831d0699..fd28cba9 100644 --- a/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/folklore-forest.css @@ -8,6 +8,10 @@ } .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; } @@ -21,7 +25,7 @@ /* add a quill to the word count entry */ .journal .entry.folkloreForest-tableOfContents.wordCount::after { position: absolute; - top: 20%; + top: 10px; left: 2px; width: 37px; height: 37px; From 24bc2fad9c526742e41829f072510776b6c99eb0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:11:03 -0500 Subject: [PATCH 83/91] fix duplicate gold and points entries --- src/modules/better-journal/journal-gold-and-points/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/better-journal/journal-gold-and-points/index.js b/src/modules/better-journal/journal-gold-and-points/index.js index 339ee665..a5e602ac 100644 --- a/src/modules/better-journal/journal-gold-and-points/index.js +++ b/src/modules/better-journal/journal-gold-and-points/index.js @@ -10,6 +10,10 @@ const wrapGoldAndPoints = (entry) => { entry.setAttribute('data-modified-points-gold', true); + if (entry.querySelector('.mh-ui-points') || entry.querySelector('.mh-ui-gold')) { + return; + } + // Find the amount of points via a regex and wrap it in a span const points = entry.innerHTML.match(/worth (.+?) points/i); // also match the 'and X,XXX gold' part From 7998a29a616fe36956cb631a6477f113d2da59ed Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:11:17 -0500 Subject: [PATCH 84/91] fix show auras --- src/modules/lgs-reminder/styles.css | 4 ++-- src/modules/show-auras/grid.css | 2 ++ src/modules/show-auras/index.js | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/modules/lgs-reminder/styles.css b/src/modules/lgs-reminder/styles.css index 746c4069..e5ff4efb 100644 --- a/src/modules/lgs-reminder/styles.css +++ b/src/modules/lgs-reminder/styles.css @@ -1,9 +1,9 @@ .mousehunt-improved-lgs-reminder, .default.mhui-custom-shield .mousehunt-improved-lgs-reminder { position: absolute; - right: 10px; + right: 8px; bottom: 4px; - left: 15px; + left: 13px; z-index: 1; font-size: 11px; color: #684434; diff --git a/src/modules/show-auras/grid.css b/src/modules/show-auras/grid.css index d97c4d9f..573d5ffe 100644 --- a/src/modules/show-auras/grid.css +++ b/src/modules/show-auras/grid.css @@ -6,8 +6,10 @@ display: flex; flex-flow: row nowrap; justify-content: space-evenly; + max-width: 325px; padding: 5px 0; margin: 5px 0; + overflow: hidden; } .mh-improved-aura-view .aura { diff --git a/src/modules/show-auras/index.js b/src/modules/show-auras/index.js index a16e15c6..1faefb8e 100644 --- a/src/modules/show-auras/index.js +++ b/src/modules/show-auras/index.js @@ -127,11 +127,12 @@ const getAuras = () => { return; } - const auras = document.querySelectorAll('.trapImageView-trapAura.active'); + 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) { @@ -183,7 +184,7 @@ const getAuras = () => { }); }; -const aurasExpiry = []; +let aurasExpiry = []; const main = () => { setTimeout(() => { getAuras(); From c5513b6b63ec0817abb20568531201c19cfda6fb Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:11:36 -0500 Subject: [PATCH 85/91] update journal history --- .../better-journal/journal-history/index.js | 40 +++++++++++++------ src/utils/data.js | 1 + src/utils/db.js | 2 +- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/modules/better-journal/journal-history/index.js b/src/modules/better-journal/journal-history/index.js index 52307d0f..507ea49b 100644 --- a/src/modules/better-journal/journal-history/index.js +++ b/src/modules/better-journal/journal-history/index.js @@ -3,30 +3,35 @@ import { dbGet, dbGetAll, dbSet, + getData, onNavigation, onRequest } from '@utils'; -// import tempMiceImages from '@data/temp-mice-images.json'; - let pager; let journalEntries = []; let totalPages = 0; let currentPage = 0; -const tempMiceImages = []; - const makeEntriesMarkup = (entries) => { return entries.map((entry) => { + entry = { + id: entry.data?.id || 0, + date: entry.data?.date || '0:00', + location: entry.data?.location || '', + text: entry.data?.text || '', + type: entry.data?.type || [], + }; + let html = `
`; if (entry.mouse && entry.mouse.length > 0) { - const mouseImages = tempMiceImages.find((mouse) => mouse.type === entry.mouse); + const mouseImages = miceThumbs.find((mouse) => mouse.type === entry.mouse); if (mouseImages) { - html += `
`; + html += `
`; } } - html += `
${entry.date} - ${entry.location} - ${entry.id}
${entry.text}
`; + html += `
${entry.date} - ${entry.location}
${entry.text}
`; return html; }).join(''); @@ -47,13 +52,19 @@ const doPageStuff = (page, event) => { currentPage = page; - const journalEntryContainer = document.querySelector('#journalContainer .journalEntries'); - if (! journalEntryContainer) { - return; - } - const journalEntriesForPage = journalEntries.slice((page - 1) * 12, page * 12); - journalEntryContainer.innerHTML = makeEntriesMarkup(journalEntriesForPage); + const markup = makeEntriesMarkup(journalEntriesForPage); + + setTimeout(() => { + const journalEntryContainer = document.querySelector('#journalContainer .journalEntries'); + if (! journalEntryContainer) { + return; + } + + journalEntryContainer.innerHTML = markup; + + main(); + }, 500); }; const getPager = () => { @@ -171,7 +182,10 @@ const onJournalRequest = (data) => { main(); }; +let miceThumbs = []; export default async (enabled) => { + miceThumbs = await getData('mice-thumbs'); + if (enabled) { onNavigation(main, { page: 'camp' }); onRequest('pages/journal.php', onJournalRequest); diff --git a/src/utils/data.js b/src/utils/data.js index e854c68a..2851a168 100644 --- a/src/utils/data.js +++ b/src/utils/data.js @@ -11,6 +11,7 @@ const validDataFiles = new Set([ 'marketplace-hidden-items', 'mice-groups', 'mice-regions', + 'mice-thumbnails', 'minlucks', 'relic-hunter-hints', 'scoreboards', diff --git a/src/utils/db.js b/src/utils/db.js index 8043c722..ac5f3433 100644 --- a/src/utils/db.js +++ b/src/utils/db.js @@ -7,7 +7,7 @@ */ const database = async (databaseName) => { return new Promise((resolve, reject) => { - const request = indexedDB.open(`mh-improved-${databaseName}`, 5); + const request = indexedDB.open(`mh-improved-${databaseName}`, 6); request.onerror = (event) => { reject(event.target.error); From cb05bd0fa7130aa6a9726f272f852854d11e7960 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:11:45 -0500 Subject: [PATCH 86/91] update dark mode --- src/modules/dark-mode/styles.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/dark-mode/styles.css b/src/modules/dark-mode/styles.css index 74fc2a79..6f6fce55 100644 --- a/src/modules/dark-mode/styles.css +++ b/src/modules/dark-mode/styles.css @@ -51,6 +51,7 @@ color: transparent; } +.mh-dark-mode .itemPurchaseView-margin, .mh-dark-mode .itemPurchaseView-image-container, .mh-dark-mode .itemPurchaseView-content-container { background-color: #000; From 265f5bbcb0fa6408c1f0a9aff6b2cbf9397918f0 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:15:41 -0500 Subject: [PATCH 87/91] Update styles.css for spring-egg-hunt and settings modules --- .../event-locations/spring-egg-hunt/styles.css | 13 +++++++++++++ src/modules/settings/styles.css | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css b/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css index 0ba123f3..a36d2e7f 100644 --- a/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css +++ b/src/modules/location-huds/event-locations/spring-egg-hunt/styles.css @@ -109,3 +109,16 @@ .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; +} diff --git a/src/modules/settings/styles.css b/src/modules/settings/styles.css index 134031f4..4c52bfc1 100644 --- a/src/modules/settings/styles.css +++ b/src/modules/settings/styles.css @@ -172,6 +172,10 @@ background-color: #eee; } +.mh-dark-mode #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList:nth-child(even) { + background-color: #e8dbc0; +} + #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList .PagePreferences__settingName { font-size: 11px; } @@ -682,6 +686,10 @@ background-color: #f4f4f4; } +.mh-dark-mode .mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting:nth-child(odd) { + background-color: #e8dbc0; +} + .highlight .mousehuntSettingSlider.active { border-color: #0ac7c7; } From 5b58b23a35b3a943645fa93fa3019eba1fecaa47 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:31:09 -0500 Subject: [PATCH 88/91] update styles/fix linting --- src/modules/better-journal/journal-icons-minimal/styles.css | 2 +- src/modules/better-journal/journal-icons/styles.css | 3 +-- .../better-journal/journal-styles/styles/fullstop.css | 5 +++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/better-journal/journal-icons-minimal/styles.css b/src/modules/better-journal/journal-icons-minimal/styles.css index f8da6cea..79ba451e 100644 --- a/src/modules/better-journal/journal-icons-minimal/styles.css +++ b/src/modules/better-journal/journal-icons-minimal/styles.css @@ -4,7 +4,7 @@ .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=map_clue_stat_item"], +.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; diff --git a/src/modules/better-journal/journal-icons/styles.css b/src/modules/better-journal/journal-icons/styles.css index 36008201..7a52232b 100644 --- a/src/modules/better-journal/journal-icons/styles.css +++ b/src/modules/better-journal/journal-icons/styles.css @@ -6,7 +6,6 @@ padding: 0; } -.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]::before -{ +.journaltext a[href="https://www.mousehuntgame.com/item.php?item_type=map_clue_stat_item"]::before { left: 1px; } diff --git a/src/modules/better-journal/journal-styles/styles/fullstop.css b/src/modules/better-journal/journal-styles/styles/fullstop.css index 328136a4..bed931f3 100644 --- a/src/modules/better-journal/journal-styles/styles/fullstop.css +++ b/src/modules/better-journal/journal-styles/styles/fullstop.css @@ -55,3 +55,8 @@ .entry.short.supplytransferitem .journaltext #friend-data-wrapper a::after .entry.short.craft.convertible_open a.item::after { content: ""; } + +.journaltext .lucky::after { + margin: 0; + background: none; +} From 86d9c385aa890e3ffa0991553e33bb1de684dd5f Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:31:19 -0500 Subject: [PATCH 89/91] move marketplace charts to experiment --- src/modules/better-marketplace/settings/index.js | 5 ----- src/modules/experiments/index.js | 6 +++++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/modules/better-marketplace/settings/index.js b/src/modules/better-marketplace/settings/index.js index 6e6ab001..9f267fda 100644 --- a/src/modules/better-marketplace/settings/index.js +++ b/src/modules/better-marketplace/settings/index.js @@ -14,11 +14,6 @@ export default async () => { id: 'better-marketplace.small-images', title: 'Smaller images', default: false, - }, - { - id: 'better-marketplace.show-chart-images', - title: 'Show charts on category pages', - default: false, } ]; }; diff --git a/src/modules/experiments/index.js b/src/modules/experiments/index.js index 8404e919..9c4b9dba 100644 --- a/src/modules/experiments/index.js +++ b/src/modules/experiments/index.js @@ -54,7 +54,11 @@ const experiments = [ }, { id: 'better-mice.show-mouse-hover', - title: 'Show mice details on hover in journal', + title: 'Better Mice: Show mice details on hover in journal', + }, + { + id: 'better-marketplace.show-chart-images', + title: 'Better Marketplace: Show charts on category pages', } ]; From d173f326bf2e1ec6da7ff2de8587c773c416509b Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:31:24 -0500 Subject: [PATCH 90/91] update changelog --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f114c58..3ba585f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ ### New Features - Adds "Hide News Ticker" module +- Adds a number of new settings to various modules +- Adds a handful of new experimental features ### Better Gifts @@ -49,7 +51,7 @@ ### Better Shops - Adds a "Hide max quantity owned" setting, -- Adds a setting to show quantity buttons for buy amount +- Adds a "Show quantity & max buttons" for buy amount - Adds ability to hit enter while typing in an input field instead of clicking the buy button. Hitting enter a second time will confirm it. ### Better UI @@ -112,7 +114,7 @@ ### Location HUDs: Event Location -- Add Spring Egg Hunt styles +- Adds Spring Egg Hunt styles ### Location HUDs: Folklore Forest Region From 686e449958e9efc9469c7409665314c1d2491337 Mon Sep 17 00:00:00 2001 From: Brad Parbs Date: Tue, 19 Mar 2024 21:32:47 -0500 Subject: [PATCH 91/91] update update notification --- src/modules/update-notifications/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index 1add1055..cc4f16bd 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -76,8 +76,7 @@ const showUpdateSummary = async () => { Want to contribute to MouseHunt Improved? Check out our GitHub.