diff --git a/CHANGELOG.md b/CHANGELOG.md index 35e15047..3ba585f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,157 @@ # Changelog +## Version 0.36.0 + +### 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 + +- Minor style updates + +### 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 + +- 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" +- Adds unique loot color for Snowball charms +- Minor style updates + +### Better Maps + +- Minor style updates +- Fix AR data not being cached + +### Better Marketplace + +- Adds a setting to show price history charts on category pages + +### Better Mice + +- 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 + +- Adds a "Hide max quantity owned" setting, +- 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 + +- 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 + +### Experiments + +- 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 +- Adds new experiment: Show mice details on hover in journal +- Shortens Location HUD toggle button text + +### Favorite Setups + +- Fixes bugs with favorite setups showing +- 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 + +### 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 + +### Location HUDs: Bountiful Beanstalk + +- 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: Event Location + +- Adds Spring Egg Hunt styles + +### Location HUDs: Folklore Forest Region + +- Minor style updates + +### Location HUDs: Iceberg + +- 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 +- Updates gem scrambling animation +- Fixes the lantern reminder animating on every horn, instead of just once +- Minor style updates + +### Location HUDs: Living Garden Region + +- Adds ability to click to equip cursebreaking charms in Cursed City +- Minor style updates + +### Location HUDs: Toxic Spill + +- 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 +- Hides Jetstream aura to make the display less cluttered + ## Version 0.35.6 - Fixes error when getting AR data on sorted tab @@ -21,9 +173,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 +209,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 +361,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 +376,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 +435,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 +448,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 +612,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 +805,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 +832,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 +862,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 +906,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 +920,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 +1010,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 +1140,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 +1165,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 +1181,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 +1244,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 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 fb129f58..a994ba10 100644 --- a/src/data/settings.json +++ b/src/data/settings.json @@ -1,17 +1,41 @@ { "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-marketplace.show-chart-images", + "better-mice.show-attraction-rates", + "better-quests.m400-helper", + "better-send-supplies.pinned-items", + "better-tournaments.time-inline", + "better-travel.default-to-simple-travel", + "better-travel.show-alphabetized-list", + "debug.all", "debug.dialog", + "debug.events", + "debug.module-loading", "debug.navigation", "debug.request", - "debug.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/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/index.js b/src/index.js index 51fd142d..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' }, @@ -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. 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, 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-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/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-inventory/recipes.js b/src/modules/better-inventory/recipes.js index e3870aa9..2bab5e08 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'); }); }); }; @@ -288,6 +303,12 @@ export default async () => { subtab: 'recipe', }); + onNavigation(modifySmashableTooltip, { + page: 'inventory', + tab: 'crafting', + subtab: 'hammer', + }); + onEvent('js_dialog_show', warnOnBadCrafts); modifySmashableTooltip(); diff --git a/src/modules/better-inventory/styles/styles.css b/src/modules/better-inventory/styles/styles.css index 4765a626..9aa81b47 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,23 @@ 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; +} + +.inventoryPage-item.small .tooltip { + padding: 10px; +} 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-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/index.js b/src/modules/better-journal/index.js index 61786a47..cbdcf3bb 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, [100, 500, 1000]); + }); }; 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..a5e602ac --- /dev/null +++ b/src/modules/better-journal/journal-gold-and-points/index.js @@ -0,0 +1,35 @@ +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); + + 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 + 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 fa47d490..507ea49b 100644 --- a/src/modules/better-journal/journal-history/index.js +++ b/src/modules/better-journal/journal-history/index.js @@ -1,25 +1,37 @@ -import { dbGetAll, onNavigation, onRequest } from '@utils'; - -// import tempMiceImages from '@data/temp-mice-images.json'; +import { + addEvent, + dbGet, + dbGetAll, + dbSet, + getData, + onNavigation, + onRequest +} from '@utils'; 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(''); @@ -40,15 +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; + } - journalHistory(); + journalEntryContainer.innerHTML = markup; + + main(); + }, 500); }; const getPager = () => { @@ -69,7 +85,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; @@ -115,6 +131,43 @@ 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; @@ -129,9 +182,14 @@ const onJournalRequest = (data) => { main(); }; -const journalHistory = async () => { - onNavigation(main, { page: 'camp' }); - onRequest('pages/journal.php', onJournalRequest); -}; +let miceThumbs = []; +export default async (enabled) => { + miceThumbs = await getData('mice-thumbs'); -export default journalHistory; + if (enabled) { + onNavigation(main, { page: 'camp' }); + onRequest('pages/journal.php', onJournalRequest); + } + + 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..79ba451e 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=scavenger_hunt_hint_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,11 +48,27 @@ } /* 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; +} + +.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..ab551401 --- /dev/null +++ b/src/modules/better-journal/journal-icons/index.js @@ -0,0 +1,20 @@ +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'); + 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([styles, minimalStyles], 'better-journal-icons'); +}; diff --git a/src/modules/better-journal/journal-icons/styles.css b/src/modules/better-journal/journal-icons/styles.css index 50de7465..7a52232b 100644 --- a/src/modules/better-journal/journal-icons/styles.css +++ b/src/modules/better-journal/journal-icons/styles.css @@ -1,5587 +1,11 @@ -/* 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; +.entry.short.misc.custom.refine_pollutinum .journaltext a::before { + display: none; } -.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; +.entry.short.misc.custom.refine_pollutinum .journaltext a { + padding: 0; } -.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); +.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-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 new file mode 100644 index 00000000..9c84e8f6 --- /dev/null +++ b/src/modules/better-journal/journal-item-colors/index.js @@ -0,0 +1,17 @@ +import { addStyles } from '@utils'; + +import colors from './colors.json'; + +const makeStyles = () => { + let styles = ''; + + colors.forEach((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(makeStyles(), 'better-journal-link-colors'); +}; diff --git a/src/modules/better-journal/journal-list/index.js b/src/modules/better-journal/journal-list/index.js index ab380d66..6511f4e5 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) => { @@ -19,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); }; @@ -64,18 +66,30 @@ 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:`, + }; + } }; /** * 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; @@ -92,6 +106,10 @@ const formatAsList = async (args) => { 'convertible_open', ]; + const otherClassesToCheck = [ + 'iceberg_defeated', + ]; + const classes = new Set(entry.classList); let type; @@ -101,12 +119,16 @@ const formatAsList = async (args) => { type = 'loot'; } else if (convertibleClassesToCheck.some((c) => classes.has(c))) { type = 'convertible'; + } else if (otherClassesToCheck.some((c) => classes.has(c))) { + type = 'other'; } else { return; } entry.setAttribute('data-better-journal-processed', 'true'); + const text = entry.querySelector('.journalbody .journaltext'); + const { newText, list } = getItemsFromText(type, text); text.innerHTML = newText; @@ -119,5 +141,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..097c4bfc --- /dev/null +++ b/src/modules/better-journal/journal-replacements/index.js @@ -0,0 +1,239 @@ +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) => { + if (entry.getAttribute('data-replaced')) { + return; + } + + 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; + } + }); + + entry.setAttribute('data-replaced', 'true'); +}; + +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 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', + 'valentines_matchmaker', + 'vending_machine_purchase', + ]); + + if (! entry.classList) { + return true; + } + + 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); + updateItemLinks(entry); +}; + +/** + * Initialize the module. + */ +export default async () => { + addStyles(styles, 'better-journal-replacements'); + + addEvent('journal-entry', (entry) => { + processEntry(entry); + setTimeout(() => { + processEntry(entry); + }, 500); + }, { 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..3f66c018 --- /dev/null +++ b/src/modules/better-journal/journal-replacements/styles.css @@ -0,0 +1,11 @@ +.itemtransaction p.mhi-x-entry { + display: inline; +} + +.itemtransaction p.mhi-x-entry .dot { + display: none; +} + +.entry.short.relicHunter_catch br { + 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 99% rename from src/modules/better-journal/styles/backgrounds.css rename to src/modules/better-journal/journal-styles/styles/backgrounds.css index 4cb5c6d9..7254974c 100644 --- a/src/modules/better-journal/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/styles/custom-entries/aura.css b/src/modules/better-journal/journal-styles/styles/custom-entries/aura.css similarity index 67% rename from src/modules/better-journal/styles/custom-entries/aura.css rename to src/modules/better-journal/journal-styles/styles/custom-entries/aura.css index b25638d5..863b5c3a 100644 --- a/src/modules/better-journal/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/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 86% 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 index d0611511..fd28cba9 100644 --- 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 @@ -8,12 +8,17 @@ } .journal .entry.folkloreForest-tableOfContents.wordCount { + display: flex; + align-items: center; + justify-content: center; + height: 35px; background-color: #fff9ee; box-shadow: inset 0 0 9px -2px #a78f77; } .journal .entry.folkloreForest-tableOfContents.wordCount .journaltext { - margin-left: 70px; + max-width: 275px; + margin: 0 auto; font-size: 11px; } @@ -21,7 +26,7 @@ .journal .entry.folkloreForest-tableOfContents.wordCount::after { position: absolute; top: 10px; - left: 0; + left: 2px; width: 37px; height: 37px; color: #d9bb92; 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/journal-styles/styles/custom-entries/location/iceberg.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css new file mode 100644 index 00000000..efaf7900 --- /dev/null +++ b/src/modules/better-journal/journal-styles/styles/custom-entries/location/iceberg.css @@ -0,0 +1,38 @@ +.journal .content .iceberg_advance, +.journal .content .iceberg_pushback, +.journal .content .iceberg_pushback_prevented, +.journal .entry.riftFuroma { + font-style: inherit; +} + +.journal .content .iceberg_advance .journalbody, +.journal .content .iceberg_pushback .journalbody, +.journal .content .iceberg_pushback_prevented .journalbody { + font-size: 11px; +} + +.journal .content .iceberg_advance_prevented.general { + background-color: #a6d1ee; + background-position: 10px; +} + +.journal .content .iceberg_advance, +.journal .content .iceberg_advance_prevented, +.journal .content .iceberg_pushback, +.journal .content .iceberg_pushback_prevented { + padding-bottom: 6px; +} + +/* 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/styles/custom-entries/location/labyrinth.css b/src/modules/better-journal/journal-styles/styles/custom-entries/location/labyrinth.css similarity index 71% 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 index 3fd82e2e..efd709e9 100644 --- a/src/modules/better-journal/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/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 59% 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 index 116c0bc9..f3877172 100644 --- 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 @@ -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-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 86% rename from src/modules/better-journal/styles/date-hiding.css rename to src/modules/better-journal/journal-styles/styles/date-hiding.css index 9e248223..c295b8a3 100644 --- a/src/modules/better-journal/styles/date-hiding.css +++ b/src/modules/better-journal/journal-styles/styles/date-hiding.css @@ -15,6 +15,11 @@ .journal .content .entry.short.labyrinth.labyrinth-intersection .journalbody .journaldate, .journal .content .entry.short.misc.custom.chesla_trap_trigger .journalbody .journaldate, .journal .content .entry.short.misc.custom.birthday_factory.claim_package .journaldate, +.journal .content .entry.folkloreForest-tableOfContents.mythweaverIncrease .journaldate, +.journal .content .entry.iceberg_advance .journalbody .journaldate, +.journal .content .entry.iceberg_defeated .journalbody .journaldate, +.journal .content .entry.iceberg_phase_change .journalbody .journaldate, +.journal .content .entry.iceberg_advance_prevented.general .journalbody .journaldate, .journal .content .entry.short.rift-whisker-woods-increase .journalbody .journaldate { display: none; } @@ -45,6 +50,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 95% rename from src/modules/better-journal/styles/fullstop.css rename to src/modules/better-journal/journal-styles/styles/fullstop.css index 29b8fe23..bed931f3 100644 --- a/src/modules/better-journal/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: "."; @@ -54,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; +} diff --git a/src/modules/better-journal/styles/general.css b/src/modules/better-journal/journal-styles/styles/general.css similarity index 94% rename from src/modules/better-journal/styles/general.css rename to src/modules/better-journal/journal-styles/styles/general.css index 5ef4bd55..8d7c0b1e 100644 --- a/src/modules/better-journal/styles/general.css +++ b/src/modules/better-journal/journal-styles/styles/general.css @@ -234,13 +234,3 @@ p.mhi-x-entry { background-position: top, bottom, center; background-size: contain; } - -.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-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, + }, ]; }; diff --git a/src/modules/better-journal/styles/custom-entries/location/iceberg.css b/src/modules/better-journal/styles/custom-entries/location/iceberg.css deleted file mode 100644 index 9745ecc9..00000000 --- a/src/modules/better-journal/styles/custom-entries/location/iceberg.css +++ /dev/null @@ -1,6 +0,0 @@ -.journal .content .iceberg_advance, -.journal .content .iceberg_pushback, -.journal .content .iceberg_pushback_prevented, -.journal .entry.riftFuroma { - font-style: inherit; -} diff --git a/src/modules/better-journal/styles/link-colors.css b/src/modules/better-journal/styles/link-colors.css deleted file mode 100644 index 7d883dba..00000000 --- a/src/modules/better-journal/styles/link-colors.css +++ /dev/null @@ -1,9 +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; -} 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-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-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..9f267fda 100644 --- a/src/modules/better-marketplace/settings/index.js +++ b/src/modules/better-marketplace/settings/index.js @@ -9,13 +9,11 @@ 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: '', } ]; }; 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-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; +} 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..5b19b5a9 --- /dev/null +++ b/src/modules/better-mice/hover-mice/index.js @@ -0,0 +1,166 @@ +import { + addStyles, + 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); + + document.body.append(mouseDataWrapper); + const rect = e.target.getBoundingClientRect(); + const top = rect.top + window.scrollY; + const left = rect.left + window.scrollX; + + let tooltipTop = top - mouseDataWrapper.offsetHeight - 10; + if (tooltipTop < 0) { + tooltipTop = top + rect.height + 10; + } + + mouseDataWrapper.style.top = `${tooltipTop}px`; + mouseDataWrapper.style.left = `${left - (mouseDataWrapper.offsetWidth / 2) + (rect.width / 2)}px`; + let timeoutId; + + mouseDataWrapper.addEventListener('mouseleave', () => { + timeoutId = setTimeout(() => { + mouseDataWrapper.remove(); + }, 250); + }); + + mouseDataWrapper.addEventListener('mouseenter', () => { + clearTimeout(timeoutId); + }); + + const parent = e.target.parentElement; + if (parent) { + parent.addEventListener('mouseleave', () => { + timeoutId = setTimeout(() => { + mouseDataWrapper.remove(); + }, 500); + }); + + parent.addEventListener('mouseenter', () => { + clearTimeout(timeoutId); + }); + } +}; + +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..eeea3533 --- /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; + gap: 10px; + align-items: center; + height: 95px; +} + +#mouse-data-wrapper .mouse-image { + height: 80px; + margin-left: 10px; + border: 1px solid #25211e; + border-radius: 5px; +} + +#mouse-data-wrapper .mouse-text { + display: flex; + flex-direction: column; + justify-content: space-around; + height: 80px; + margin-right: 10px; +} + +#mouse-data-wrapper .mouse-name { + font-size: 12px; + font-weight: 900; +} + +.mouse-catch-stats { + display: grid; + grid-template-columns: 2fr 3fr; + gap: 0 20px; + margin-right: 10px; + font-size: 10px; +} + +.mouse-catch-stats div { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + line-height: 1.5; +} diff --git a/src/modules/better-mice/index.js b/src/modules/better-mice/index.js index 97e9d5f4..298cb3a8 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,9 @@ import { onOverlayChange } from '@utils'; -import { getData } from '@utils/data'; - -import mousepage from './mousepage'; +import hoverMice from './hover-mice'; +import mousePage from './mouse-page'; +import settings from './settings'; import styles from './styles.css'; @@ -64,7 +66,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; } @@ -211,9 +213,18 @@ 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) { + 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'); @@ -246,13 +257,17 @@ 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); 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 +277,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 +308,7 @@ const updateMouseView = async () => { miceArWrapper.append(mouseArWrapper); }); - if (mhctjson.length > 0) { + if (mhctJson.length > 0) { arWrapper.append(miceArWrapper); container.append(arWrapper); } @@ -361,7 +376,11 @@ let minlucks; const init = async () => { addStyles(styles, 'better-mice'); main(); - mousepage(); + mousePage(); + + if (getSetting('better-mice.show-mouse-hover', true)) { + hoverMice(); + } replaceShowMouseImage(); }; @@ -373,4 +392,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/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..3fd404f7 100644 --- a/src/modules/better-mice/mousepage.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()); } @@ -246,7 +249,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 +307,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 +363,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/better-mice/settings/index.js b/src/modules/better-mice/settings/index.js new file mode 100644 index 00000000..0387ecba --- /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..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: 120px 140px 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 { @@ -328,6 +326,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; } @@ -335,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-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/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..e8accc62 --- /dev/null +++ b/src/modules/better-shops/qty-buttons.css @@ -0,0 +1,28 @@ +.mh-improved-shop-buy-controls { + position: absolute; + top: 25px; + right: 0; + left: 0; + display: flex; + flex: 1 1 100%; + flex-flow: row wrap; + gap: 5px; + align-items: center; + justify-content: flex-start; + margin-top: 7px; + margin-left: 10px; +} + +.itemPurchaseView-action-form.clear-block { + position: relative; + margin-bottom: 40px; +} + +.mh-improved-shop-buy-max { + min-width: 25px; +} + +.mh-improved-shop-qty, +.mh-improved-shop-buy-max { + user-select: none; +} 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..2fe07fad 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; } @@ -88,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; } @@ -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..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; } @@ -541,3 +545,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); +} 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/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/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 }; diff --git a/src/modules/better-ui/index.js b/src/modules/better-ui/index.js index efb8f0fb..ed6d407c 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'; @@ -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'; @@ -15,6 +16,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 }, @@ -22,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 }, @@ -47,6 +56,8 @@ const init = async () => { addUserscriptStyles(); friends(); hud(); + + onRequest('users/dailyreward.php', kingsPromoTextChange); }; export default { 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/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..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 { @@ -258,7 +269,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/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/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/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; +} 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/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/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/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-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/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-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', + } ], }, { diff --git a/src/modules/custom-hud/index.js b/src/modules/custom-hud/index.js index 2399ed98..0691a110 100644 --- a/src/modules/custom-hud/index.js +++ b/src/modules/custom-hud/index.js @@ -16,22 +16,27 @@ 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(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(${pedastal}) -46px 0 no-repeat, - url(${pedastal}) 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 [{ 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; diff --git a/src/modules/debug/settings/index.js b/src/modules/debug/settings/index.js index 062eb9ab..35042b72 100644 --- a/src/modules/debug/settings/index.js +++ b/src/modules/debug/settings/index.js @@ -27,16 +27,12 @@ export default async () => { }, { id: 'debug.navigation', - title: 'Log page, tab, and subtab navigations' + title: 'Log page, tab, and subtab navigation' }, { 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/experiments/index.js b/src/modules/experiments/index.js index ebb4c8c9..9c4b9dba 100644 --- a/src/modules/experiments/index.js +++ b/src/modules/experiments/index.js @@ -1,6 +1,77 @@ -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, + }, + { + id: 'better-mice.show-mouse-hover', + title: 'Better Mice: Show mice details on hover in journal', + }, + { + id: 'better-marketplace.show-chart-images', + title: 'Better Marketplace: Show charts on category pages', + } +]; + +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 +81,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..96570a1b --- /dev/null +++ b/src/modules/experiments/modules/new-settings-styles-columns/styles.css @@ -0,0 +1,155 @@ +.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; + margin: 0; +} + +.two-column.mousehunt-improved-settings .mh-improved-custom-bg-preview, +.two-column.mousehunt-improved-settings .mh-improved-custom-horn-show-horn { + top: 10px; + right: 0; +} + +#mousehunt-improved-settings-design .PagePreferences__settingAction { + max-width: 200px; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-ultimate-checkmark-show.PagePreferences__subSetting .multi-toggle-row .PagePreferences__settingName { + max-width: 65px; + padding: 0; + overflow: hidden; + line-height: 14px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-ultimate-checkmark-show.PagePreferences__subSetting .multi-toggle-row { + gap: 0; + justify-items: stretch; +} + +.two-column.mousehunt-improved-settings .PagePreferences__settingsList.PagePreferences__subSetting { + margin-left: 5px; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-location-hud-wrapper .PagePreferences__settingsList.PagePreferences__subSetting { + padding: 0 5px 0 10px; + margin-right: 0; + margin-left: 1px; + border-radius: 0; +} + +.two-column.mousehunt-improved-settings .PagePreferences__settingsList-textarea .PagePreferences__setting, +.two-column.mousehunt-improved-settings .PagePreferences__settingsList-input .PagePreferences__setting { + display: flex; + flex-direction: column; + gap: 0; + align-items: stretch; + padding: 0; + margin: 0; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-advanced-mh-improved-advanced-settings { + position: relative; + top: unset; + right: unset; + display: flex; + align-items: flex-start; + padding: 0 0 10px; + margin: 0 0 10px; + border-bottom: 1px solid #e0cfb4; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-quick-send-supplies-items .inputBoxContainer.multiSelect { + display: grid; + grid-template-columns: 1fr 1fr; +} + +.two-column.mousehunt-improved-settings #mousehunt-improved-settings-feature-quick-send-supplies-items .multiSelect { + width: auto; + max-width: 140px; +} + +.two-column #mousehunt-improved-settings-better-better-gifts-ignore-bad-gifts select.inputBox.multiSelect { + max-width: 200px; +} + +.two-column select.inputBox.multiSelect { + max-width: 140px; + margin: 0; +} + +.two-column .inputBoxContainer.multiSelect { + gap: 5px 10px; + justify-content: flex-start; + margin-top: 5px; +} + +.two-column #mousehunt-improved-settings-location-hud-wrapper { + gap: 0; + height: 700px; + padding: 11px 0 0; + margin: 0 -10px -10px; + 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; +} + +.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; +} + +.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..383bf940 --- /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; +} 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 96% rename from src/modules/feature-flags/modules/troll-mode/index.js rename to src/modules/experiments/modules/troll-mode/index.js index 62dbd5b5..12e7b514 100644 --- a/src/modules/feature-flags/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/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/favorite-setups/index.js b/src/modules/favorite-setups/index.js index 9e379268..46019b10 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,14 @@ import { import styles from './styles.css'; const getFavoriteSetups = () => { - return getSetting('favorite-setups.setups', []); + const faves = getSetting('favorite-setups.setups', []); + + if (! faves || ! Array.isArray(faves) || ! faves.length) { + return []; + } + + // remove any that are just null. + return faves.filter(Boolean); }; const saveFavoriteSetup = async (setup, useGeneratedName = true) => { @@ -81,6 +89,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 +324,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 +342,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 +391,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 +512,6 @@ const makeBlueprintRow = async (setup, isCurrent = false) => { imageDisplay.style.backgroundImage = `url(${newItemImageUrl})`; }); - - // save the new item id. }); }); @@ -515,8 +531,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 +557,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 +638,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 +707,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 +725,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 +756,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 +793,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 +851,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 +888,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..6cfa4b58 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 { @@ -15,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; @@ -22,7 +42,7 @@ } .mh-improved-favorite-setups-blueprint-container .header { - margin: 10px 0; + margin-top: 10px; font-size: 13px; color: #926944; text-align: center; @@ -30,26 +50,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 +94,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 +111,7 @@ } .mh-improved-favorite-setups-blueprint-container .row.editing .button-wrapper { + align-self: flex-end; margin-right: 5px; } @@ -86,7 +121,7 @@ .mh-improved-favorite-setups-blueprint-container .controls .label { padding: 0 1px; - font-size: 13px; + font-size: 12px; text-align: center; } @@ -98,7 +133,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 +163,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 +232,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 +267,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 +322,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 +333,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 +343,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 */ } 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', }, 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..c15fb13f --- /dev/null +++ b/src/modules/fixes/styles/preferences.css @@ -0,0 +1,16 @@ +/* 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.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..47829fcd --- /dev/null +++ b/src/modules/fixes/styles/tabs.css @@ -0,0 +1,39 @@ +/* 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 span { + padding-bottom: 0.5px; + margin-top: 4px; +} + +.mousehuntHud-page-tabHeader.active span, +.mousehuntHud-page-tabHeader:hover span { + padding-bottom: 6px; + margin-top: 0; + border-bottom: none; +} 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%); +} 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/global-styles/styles/buttons.css b/src/modules/global-styles/styles/buttons.css index d1c84f62..edac1cd9 100644 --- a/src/modules/global-styles/styles/buttons.css +++ b/src/modules/global-styles/styles/buttons.css @@ -21,34 +21,50 @@ 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; } .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; +} 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; +} 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); 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/image-upscaling/index.js b/src/modules/image-upscaling/index.js index bb41b759..f1d7e9e2 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'; @@ -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,30 +156,25 @@ const upscaleBackgroundImages = async () => { }); }; -const upscaleImages = async (observer) => { +const upscaleImages = async () => { if (isUpscaling) { return; } - // Pause the observer while we are making changes. - if (observer) { - observer.disconnect(); - } - isUpscaling = true; + 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 +190,83 @@ const observerOptions = { }; let mapping = []; - +let observer; /** * Initialize the module. */ -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'; +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', + ]); - 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; - } - - // Don't run on the news ticker. - if (mutation.type === 'attributes' && mutation.target.classList.contains('ticker')) { + 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; } - // Pause the observer while we are making changes. - observer.disconnect(); - - upscaleImages(observer); + await upscaleImages(); } }); observer.observe(document, observerOptions); + upscaleImages(); +}; + +const init = async () => { + addStyles([styles, journalThemeStyles, viewsStyles], 'image-upscaling'); + + mapping = await getData('upscaled-images'); + + onEvent('mh-improved-init', main); + + main(); + onDialogShow('all', () => { - setTimeout(() => { - upscaleImages(); - }, 500); + setTimeout(upscaleImages, 500); + }); + + onRequest('*', () => { + if (isUpscaling) { + return; + } + + setTimeout(upscaleImages, 500); }); }; 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/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/journal-changer/index.js b/src/modules/journal-changer/index.js index 72283486..deb4d82a 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'; @@ -22,7 +21,7 @@ const getJournalThemes = async () => { action: 'get_themes', }); - if (! req.journal_themes) { + if (! req || ! req.journal_themes) { return []; } @@ -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); } }; 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/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; -} diff --git a/src/modules/lgs-reminder/index.js b/src/modules/lgs-reminder/index.js index 11d9a8e5..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); }; @@ -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'); @@ -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(); @@ -206,7 +219,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/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/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); }); 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/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/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/bountiful-beanstalk/index.js b/src/modules/location-huds/bountiful-beanstalk/index.js index 0f654df3..e8a118fc 100644 --- a/src/modules/location-huds/bountiful-beanstalk/index.js +++ b/src/modules/location-huds/bountiful-beanstalk/index.js @@ -1,11 +1,120 @@ -import { addHudStyles } from '@utils'; +import { addHudStyles, getSetting, onTurn, 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'); + toggleButton.classList.add('headsUpDisplayBountifulBeanstalk__inventoryContainerButton--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'); + 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); + }); +}; + +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); + }); +}; + +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. */ export default async () => { addHudStyles([regionStyles, styles]); + + keepInventoryToggled(); + keepRoomDataToggled(); + makeGiantMoreVisible(); + + funTime(); + + onTurn(makeGiantMoreVisible, 1000); }; diff --git a/src/modules/location-huds/bountiful-beanstalk/styles.css b/src/modules/location-huds/bountiful-beanstalk/styles.css index 4aefbca0..e2f88d30 100644 --- a/src/modules/location-huds/bountiful-beanstalk/styles.css +++ b/src/modules/location-huds/bountiful-beanstalk/styles.css @@ -6,20 +6,24 @@ } .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, .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 { @@ -37,8 +41,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 +65,15 @@ } .bountifulBeanstalkCastleView__plinthOverlay .mousehuntTooltip { - top: -31px; + top: -20px; bottom: unset; left: -60px; + z-index: 30; width: 447px; - line-height: 1.5; + line-height: 1.75; 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 +81,11 @@ } .bountifulBeanstalkCastleView__currentRoomName { - font-size: 14px; + font-size: 12px; } .bountifulBeanstalkCastleView__currentRoomLoot b { - font-size: 13px; + font-size: 10px; } .bountifulBeanstalkCastleView__plinthOverlay.mousehuntTooltipParent { @@ -92,6 +94,137 @@ } .bountifulBeanstalkCastleView__currentRoomLootMultiplier { - padding: 0 1px; - font-size: 14px; + font-size: 12px; +} + +.headsUpDisplayBountifulBeanstalk__inventoryContainer { + z-index: 29; +} + +.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; +} + +.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/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/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/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/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..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 @@ -1 +1,124 @@ -/* 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; +} + +.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/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/iceberg/index.js b/src/modules/location-huds/iceberg/index.js index 5cd6845b..7b97b744 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,68 @@ 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); + }); + }); +}; + /** * 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..ff2acc03 100644 --- a/src/modules/location-huds/iceberg/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; } @@ -13,16 +14,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 +43,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 +56,7 @@ } .icebergStatusTooltip .iceberg-sections { - width: 190px; + width: 175px; } .icebergStatusTooltip .iceberg-section { @@ -56,42 +64,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 +140,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 +168,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; +} 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..5a73c091 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,28 @@ 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-secretContainer { + font-weight: 900; + background-color: transparent; + border: none; + box-shadow: none; + mix-blend-mode: overlay; +} + +.labyrinthHUD-confirmDescription .labyrinthHUD-exit { + top: -4px; +} 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/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/location-huds/region-living-garden/index.js b/src/modules/location-huds/region-living-garden/index.js index f28dc2d5..dd9948a7 100644 --- a/src/modules/location-huds/region-living-garden/index.js +++ b/src/modules/location-huds/region-living-garden/index.js @@ -2,9 +2,32 @@ import { addHudStyles } 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'; + }); +}; + /** * Initialize the module. */ export default async () => { addHudStyles(styles); + + clickCharmsToEquip(); }; diff --git a/src/modules/location-huds/region-living-garden/styles.css b/src/modules/location-huds/region-living-garden/styles.css index 73b38854..6dbd31b5 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,16 @@ .livingGardenHud .minigameContainer { z-index: 1; } + +.livingGardenHud { + margin-top: 25px; + margin-bottom: 20px; +} + +.livingGardenHud .essenceContainer .item.essence_a_crafting_item { + padding-left: 25px; +} + +.livingGardenHud .spongeDoubleYellow { + width: 55px; +} 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 3dbba010..3fa43588 100644 --- a/src/modules/location-huds/rift-burroughs/index.js +++ b/src/modules/location-huds/rift-burroughs/index.js @@ -2,14 +2,17 @@ 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) { 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 +24,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'); @@ -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" + } +} 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 { 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'); } 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/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 */ diff --git a/src/modules/required/index.js b/src/modules/required/index.js index 4fa0a391..5b1de166 100644 --- a/src/modules/required/index.js +++ b/src/modules/required/index.js @@ -1,6 +1,6 @@ -import { doEvent, getFlag, onTurn } from '@utils'; +import { doEvent, getFlag, getHeaders, 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/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', diff --git a/src/modules/settings/styles.css b/src/modules/settings/styles.css index 540c322d..4c52bfc1 100644 --- a/src/modules/settings/styles.css +++ b/src/modules/settings/styles.css @@ -1,32 +1,27 @@ /* 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; justify-content: flex-start; - 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 +37,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 +50,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 +99,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 +115,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 +126,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,12 +165,17 @@ #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) { 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; } @@ -206,10 +196,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 +213,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; @@ -249,12 +231,11 @@ #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; - height: 360px; - margin-top: 5px; + height: 350px; } /* Export Settings */ @@ -320,10 +301,6 @@ padding: 3px; } -.mousehunt-improved-settings-export-popup .suffix { - display: none; -} - .mousehunt-improved-settings-export-popup-buttons pre { text-align: center; } @@ -335,8 +312,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 +414,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 +456,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 +532,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 +556,7 @@ #mousehunt-improved-settings-advanced-override-styles { padding-bottom: 15px; + margin-left: 0; } #mousehunt-improved-settings-advanced-override-flags input, @@ -639,10 +623,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 +658,42 @@ 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-advanced-override-styles .PagePreferences__settingName { + font-size: 15px; } -#mousehunt-improved-settings-beta-experiments > .PagePreferences__setting .PagePreferences__settingAction { +.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; +} + +.mh-dark-mode .mousehunt-improved-settings .PagePreferences__settingsList.active .PagePreferences__subSetting:nth-child(odd) { + background-color: #e8dbc0; +} + +.highlight .mousehuntSettingSlider.active { + border-color: #0ac7c7; +} + +#mousehunt-improved-settings-advanced-error-reporting { + padding-bottom: 0; } diff --git a/src/modules/show-auras/grid.css b/src/modules/show-auras/grid.css index a1a8e5d3..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-top: 10px; + margin: 5px 0; + overflow: hidden; } .mh-improved-aura-view .aura { @@ -15,6 +17,7 @@ flex-direction: column; align-content: center; align-items: center; + min-width: 50px; } .mh-improved-aura-view .trapImageView-trapAura, @@ -34,12 +37,13 @@ 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; } -.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 29865245..d0922f95 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, @@ -19,3 +19,7 @@ .mh-improved-aura-view .expiry { display: none; } + +.aura.QuestJetStreamAura { + display: none; +} diff --git a/src/modules/show-auras/index.js b/src/modules/show-auras/index.js index a4215797..1faefb8e 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) => { @@ -61,20 +61,42 @@ const addExpiryWarning = () => { } }; +let isAppending = false; const addTrapBlock = () => { + if (isAppending) { + return; + } + + isAppending = true; + const trapSummary = document.querySelector('.trapSelectorView__trapStatSummaryContainer'); if (! trapSummary) { return; } + let existing = document.querySelector('#mh-improved-aura-view'); + if (existing) { + return; + } + const auraTrapBlock = makeElement('div', ['mh-improved-aura-view', 'campPage-trap-trapEffectiveness']); auraTrapBlock.id = 'mh-improved-aura-view'; aurasExpiry.forEach((aura) => { - const auraEl = makeElement('div', 'aura'); + const auraKey = `mh-aura-${aura.type.toLowerCase().replaceAll(' ', '-')}`; + const existingAura = document.querySelector(`#${auraKey}`); + if (existingAura) { + return; + } - const auraImage = makeElement('div', 'image'); const auraClasses = aura.element.classList; + + 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); auraImage.classList.remove('mousehuntTooltipParent'); @@ -90,12 +112,14 @@ const addTrapBlock = () => { auraTrapBlock.append(auraEl); }); - const existing = document.querySelector('#mh-improved-aura-view'); + existing = document.querySelector('#mh-improved-aura-view'); if (existing) { existing.replaceWith(auraTrapBlock); } else { trapSummary.append(auraTrapBlock); } + + isAppending = false; }; const getAuras = () => { @@ -103,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) { @@ -159,11 +184,13 @@ const getAuras = () => { }); }; -const aurasExpiry = []; +let aurasExpiry = []; const main = () => { - getAuras(); - addExpiryWarning(); - addTrapBlock(); + setTimeout(() => { + getAuras(); + addExpiryWarning(); + addTrapBlock(); + }, 1000); }; const init = async () => { diff --git a/src/modules/show-auras/list.css b/src/modules/show-auras/list.css index 68edd0f4..0432a041 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, @@ -15,6 +15,10 @@ opacity: 1; } +.aura.QuestJetStreamAura { + display: none; +} + .mh-improved-aura-view .time { font-size: 10px; } @@ -23,6 +27,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: '', 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/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 +}; diff --git a/src/modules/update-notifications/index.js b/src/modules/update-notifications/index.js index 34856f71..cc4f16bd 100644 --- a/src/modules/update-notifications/index.js +++ b/src/modules/update-notifications/index.js @@ -1,77 +1,108 @@ -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; +const github = 'https://github.com/MHCommunity/mousehunt-improved'; + +const getExtensionLink = () => { + if ('chrome' === mhImprovedPlatform) { + return 'https://chromewebstore.google.com/detail/mousehunt-improved/fgjkidgknmkhnbeobehlfabjbignhkhm'; } - // 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'); + if ('firefox' === mhImprovedPlatform) { + return 'https://addons.mozilla.org/en-US/firefox/addon/mousehunt-improved/'; } - // Don't show except on the camp page. - if ('camp' !== getCurrentPage()) { - return; + if ('userscript' === mhImprovedPlatform) { + return 'https://greasyfork.org/en/scripts/465139-mousehunt-improved'; } - const banner = document.querySelector('.campPage-tabs .campPage-banner'); + return github; +}; - 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); +const makeList = (title, items) => { + if (! items || ! items.length) { + return ''; + } - 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); + let markup = `

${title}

    `; + for (const item of items) { + markup += `
  • ${item}
  • `; + } + markup += '
'; - const closeButton = makeElement('a', ['mhui-update-banner-close', 'mousehuntActionButton', 'small', 'cancel']); - makeElement('span', '', 'Dismiss', closeButton); - closeButton.addEventListener('click', (e) => { - e.preventDefault(); + return markup; +}; - bannerWrapper.classList.add('banner-fade-out'); - saveSetting('updates.banner', mhImprovedVersion); +const showUpdateSummary = async () => { + const updateSummaries = await fetch('https://api.mouse.rip/update-summary'); + const updates = await updateSummaries.json(); - removeBodyClass('mh-improved-has-update'); + if (! updates[mhImprovedVersion]) { + return; + } - setTimeout(() => { - bannerWrapper.remove(); - }, 1000); - }); + const update = updates[mhImprovedVersion]; - buttonWrapper.append(closeButton); + if (! update.summary && ! update.details) { + return; + } + + let lists = ''; - bannerContent.append(buttonWrapper); - bannerWrapper.append(bannerContent); + for (const list of update.details) { + lists += makeList(list.title, list.items); + } + + 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 +111,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..d763dfaf 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,130 @@ 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: 3px; + margin-bottom: 3px; + font-size: 1.25em; + font-weight: 900; + border-bottom: 1px solid #c1915a; } -.onboardArrow.mh-improved-onboarding-settings { - transform: translate(-100px, -60px); +.mh-improved-update-summary-links { + display: flex; + flex-direction: column; +} + +.mh-improved-update-summary ul { + margin: 0 0 5px 15px; + list-style: disc; +} + +.mh-improved-update-summary-buttons { + display: flex; + flex-direction: column; + flex-grow: 1; + gap: 10px; + justify-content: flex-end; + text-align: center; +} + +.mh-improved-update-summary-links ul { + font-size: 1.125em; + line-height: 2; +} + +.mh-improved-update-summary-changes { + display: grid; + grid-template-columns: 1fr; + gap: 0 10px; + justify-items: stretch; + max-height: 375px; + padding: 10px; + overflow: auto; + background: + linear-gradient(#e9d5a2 30%, 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; } diff --git a/src/modules/user-highlighting/profile.css b/src/modules/user-highlighting/profile.css index 19dba537..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,23 @@ } .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 { + background-color: #f2f2f2; } .mh-improved-fancy-profile .friendsPage-friendRow-image-border { @@ -106,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; } @@ -139,6 +177,7 @@ color: #513645; background-color: #d2c0ec; border-top: 1px solid #be9bbc; + border-radius: 0 0 6px 6px; box-shadow: none; } @@ -159,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, @@ -220,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; } @@ -241,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; +} 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/data.js b/src/utils/data.js index aedb9a05..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', @@ -100,7 +101,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 +112,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 +139,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); }); @@ -213,6 +214,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. * @@ -223,6 +237,19 @@ const cacheSet = (key, value) => { dbSet('cache', { id: key, value }); }; +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. * @@ -232,12 +259,11 @@ const cacheSet = (key, value) => { * @return {Object} The cache value. */ const cacheGet = async (key, defaultValue = false) => { - const cached = await dbGet('cache', key); - if (! cached) { - return defaultValue; - } + return await cacheGetHelper(key, defaultValue, 'cache'); +}; - return cached.value; +const dataCacheGet = async (key, defaultValue = false) => { + return await cacheGetHelper(key, defaultValue, 'data'); }; /** @@ -256,7 +282,9 @@ export { clearCaches, getData, getHeaders, - fillDataCaches, + updateCaches, sessionGet, - sessionSet + sessionSet, + sessionDelete, + sessionsDelete }; diff --git a/src/utils/db.js b/src/utils/db.js index 3ba75dcc..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}`, 1); + const request = indexedDB.open(`mh-improved-${databaseName}`, 6); 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/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/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/maps.js b/src/utils/maps.js index 7f7a7c9b..75630da7 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 { 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'; /** @@ -33,7 +26,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 +40,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. */ @@ -188,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: [], @@ -220,7 +213,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 +233,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 +284,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); @@ -308,54 +301,22 @@ 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 value = await dbGet('ar-cache', key); + if (! value?.data?.value) { + return null; } - 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('.', '-')}`; + return value.data.value; }; /** * 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 = (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 }); }; /** @@ -431,7 +392,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 +405,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 +415,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/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; } diff --git a/src/utils/settings-markup.js b/src/utils/settings-markup.js index cb239366..40124e16 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,10 +552,12 @@ 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; + 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, @@ -782,7 +824,7 @@ const addSettingForModule = async (module) => { ...module, subSetting: true, }, - subsettings: subSettings.settings, + subSettings: subSettings.settings, }); if (moduleSettingRow && subSettingRow) { 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/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), 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)); };