您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
color codes mice on Folklore Forest maps according to type
// ==UserScript== // @name MouseHunt - Folklore Forest Map color Coder // @author in59te // @namespace https://greasyfork.org/en/users/739524-in59te // @version 0.9 // @description color codes mice on Folklore Forest maps according to type // @match http://www.mousehuntgame.com/* // @match https://www.mousehuntgame.com/* // Based off original script by Tsitu // ==/UserScript== const SeedMice = [ "Root Rummager", "Grit Grifter", ]; const FarmSpecialMice = [ "Land Loafer", "Loathsome Locust", "Monstrous Midge" ]; const PestsMice = [ "Angry Aphid", "Wily Weevil", "Mighty Mite" ]; const StandardPondMice = [ "Beachcomber", "Sand Sifter", "Tackle Tracker" ]; const GrubMice = [ "Pompous Perch", "Careless Catfish", "Melodramatic Minnow" ]; const ClamMice = [ "Sinister Squid", "Nefarious Nautilus", "Vicious Vampire Squid" ]; const StormyMice = [ "Architeuthulhu of the Abyss" ]; const StandardNonWritingMice = [ "Brothers Grimmaus", "Hans Cheesetian Squeakersen", "Madame d'Ormouse", ]; const StandardWritingMice = [ "Humphrey Dumphrey", "Little Bo Squeak", "Little Miss Fluffet" ]; const SBOnlyMice = [ "Crazed Cultivator", "Matriarch Gander", "Covetous Coastguard" ]; const FirstDDMice = [ "Fibbocchio", "Pinkielina", "Princess and the Olive" ]; const SecondDDMice = [ "Flamboyant Flautist", "Greenbeard", "Ice Regent" ]; const FinalDDMice = [ "Bitter Grammarian", "Mythweaver" ]; function colorize() { let SBOnlycolor = "#FFFFFF"; // white let SBOnlyCount = 0; let Seedcolor = "#0FF380"; // light green let SeedCount = 0; let Pestscolor = "#0EA635"; // med green let PestsCount = 0; let FarmSpecialcolor = "#0B6222"; // dark green let FarmSpecialCount = 0; let StandardPondcolor = "#5BF8DC"; // light blue let StandardPondCount = 0; let Grubcolor = "#0F97F7"; // normal blue let GrubCount = 0; let Clamcolor = "#07568C"; // dark blue let ClamCount = 0; let Stormycolor = "#8428CC"; // some shade of purple let StormyCount = 0; let StandardWritingcolor = "#FC5E78"; // cherry let StandardWritingCount = 0; let StandardNonWritingcolor = "#CDCDCD"; // grey let StandardNonWritingCount = 0; let FirstDDcolor = "#FDFAA2"; // yellow let FirstDDCount = 0; let SecondDDcolor = "#F8943A"; // orange let SecondDDCount = 0; let FinalDDcolor = "#D6A80B"; // gold let FinalDDCount = 0; const greycolor = "#949494"; const isChecked = localStorage.getItem("highlightPref") === "uncaught-only" ? true : false; const isCheckedStr = isChecked ? "checked" : ""; if ( document.querySelectorAll(".treasureMapView-goals-group-goal").length === 0 ) { return; } document.querySelectorAll(".treasureMapView-goals-group-goal").forEach(el => { el.querySelector("span").style = "color: black; font-size: 11px;"; const mouseName = el.querySelector(".treasureMapView-goals-group-goal-name") .textContent; if (SeedMice.indexOf(mouseName) > -1) { el.style.backgroundColor = Seedcolor; if (el.className.indexOf(" complete ") < 0) { SeedCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (FarmSpecialMice.indexOf(mouseName) > -1) { el.style.backgroundColor = FarmSpecialcolor; if (el.className.indexOf(" complete ") < 0) { FarmSpecialCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (PestsMice.indexOf(mouseName) > -1) { el.style.backgroundColor = Pestscolor; if (el.className.indexOf(" complete ") < 0) { PestsCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (StandardPondMice.indexOf(mouseName) > -1) { el.style.backgroundColor = StandardPondcolor; if (el.className.indexOf(" complete ") < 0) { StandardPondCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (GrubMice.indexOf(mouseName) > -1) { el.style.backgroundColor = Grubcolor; if (el.className.indexOf(" complete ") < 0) { GrubCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (ClamMice.indexOf(mouseName) > -1) { el.style.backgroundColor = Clamcolor; if (el.className.indexOf(" complete ") < 0) { ClamCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (StormyMice.indexOf(mouseName) > -1) { el.style.backgroundColor = Stormycolor; if (el.className.indexOf(" complete ") < 0) { StormyCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (StandardNonWritingMice.indexOf(mouseName) > -1) { el.style.backgroundColor = StandardNonWritingcolor; if (el.className.indexOf(" complete ") < 0) { StandardNonWritingCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (StandardWritingMice.indexOf(mouseName) > -1) { el.style.backgroundColor = StandardWritingcolor; if (el.className.indexOf(" complete ") < 0) { StandardWritingCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (SBOnlyMice.indexOf(mouseName) > -1) { el.style.backgroundColor = SBOnlycolor; if (el.className.indexOf(" complete ") < 0) { SBOnlyCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (FirstDDMice.indexOf(mouseName) > -1) { el.style.backgroundColor = FirstDDcolor; if (el.className.indexOf(" complete ") < 0) { FirstDDCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (SecondDDMice.indexOf(mouseName) > -1) { el.style.backgroundColor = SecondDDcolor; if (el.className.indexOf(" complete ") < 0) { SecondDDCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } else if (FinalDDMice.indexOf(mouseName) > -1) { el.style.backgroundColor = FinalDDcolor; if (el.className.indexOf(" complete ") < 0) { FinalDDCount++; } else { if (isChecked) el.style.backgroundColor = "white"; } } }); Seedcolor = SeedCount > 0 ? Seedcolor : greycolor; FarmSpecialcolor = FarmSpecialCount > 0 ? FarmSpecialcolor : greycolor; Pestscolor = PestsCount > 0 ? Pestscolor : greycolor; StandardPondcolor = StandardPondCount > 0 ? StandardPondcolor : greycolor; Grubcolor = GrubCount > 0 ? Grubcolor : greycolor; Clamcolor = ClamCount > 0 ? Clamcolor : greycolor; Stormycolor = StormyCount > 0 ? Stormycolor : greycolor; StandardNonWritingcolor = StandardNonWritingCount > 0 ? StandardNonWritingcolor : greycolor; StandardWritingcolor = StandardWritingCount > 0 ? StandardWritingcolor : greycolor; SBOnlycolor = SBOnlyCount > 0 ? SBOnlycolor : greycolor; FirstDDcolor = FirstDDCount > 0 ? FirstDDcolor : greycolor; SecondDDcolor = SecondDDCount > 0 ? SecondDDcolor : greycolor; FinalDDcolor = FinalDDCount > 0 ? FinalDDcolor : greycolor; // Remove existing GWH Map related elements before proceeding document.querySelectorAll(".ff-map").forEach(el => el.remove()); const masterDiv = document.createElement("div"); masterDiv.className = "ff-map"; masterDiv.style = "display: inline-flex; margin-bottom: 10px; width: 100%; text-align: center; line-height: 1.5; overflow: hidden"; const spanStyle = "; width: auto; padding: 5px; font-weight: bold; font-size: 10px; text-shadow: 0px 0px 11px white"; const SeedSpan = document.createElement("span"); SeedSpan.style = "background-color: " + Seedcolor + spanStyle; SeedSpan.innerHTML = "Seed<br>" + SeedCount; const FarmSpecialSpan = document.createElement("span"); FarmSpecialSpan.style = "background-color: " + FarmSpecialcolor + spanStyle; FarmSpecialSpan.innerHTML = "Farm Spec<br>" + FarmSpecialCount; const PestsSpan = document.createElement("span"); PestsSpan.style = "background-color: " + Pestscolor + spanStyle; PestsSpan.innerHTML = "Pest<br>" + PestsCount; const StandardPondSpan = document.createElement("span"); StandardPondSpan.style = "background-color: " + StandardPondcolor + spanStyle; StandardPondSpan.innerHTML = "Pd Std<br>" + StandardPondCount; const GrubSpan = document.createElement("span"); GrubSpan.style = "background-color: " + Grubcolor + spanStyle; GrubSpan.innerHTML = "Grub<br>" + GrubCount; const ClamSpan = document.createElement("span"); ClamSpan.style = "background-color: " + Clamcolor + spanStyle; ClamSpan.innerHTML = "Clam<br>" + ClamCount; const StormySpan = document.createElement("span"); StormySpan.style = "background-color: " + Stormycolor + spanStyle; StormySpan.innerHTML = "Storm<br>" + StormyCount; const StandardNonWritingSpan = document.createElement("span"); StandardNonWritingSpan.style = "background-color: " + StandardNonWritingcolor + spanStyle; StandardNonWritingSpan.innerHTML = "Std w/o write<br>" + StandardNonWritingCount; const StandardWritingSpan = document.createElement("span"); StandardWritingSpan.style = "background-color: " + StandardWritingcolor + spanStyle; StandardWritingSpan.innerHTML = "Std w write<br>" + StandardWritingCount; const SBOnlySpan = document.createElement("span"); SBOnlySpan.style = "background-color: " + SBOnlycolor + spanStyle; SBOnlySpan.innerHTML = "SB Only<br>" + SBOnlyCount; const FirstDDSpan = document.createElement("span"); FirstDDSpan.style = "background-color: " + FirstDDcolor + spanStyle; FirstDDSpan.innerHTML = "1DD<br>" + FirstDDCount; const SecondDDSpan = document.createElement("span"); SecondDDSpan.style = "background-color: " + SecondDDcolor + spanStyle; SecondDDSpan.innerHTML = "2DD<br>" + SecondDDCount; const FinalDDSpan = document.createElement("span"); FinalDDSpan.style = "background-color: " + FinalDDcolor + spanStyle; FinalDDSpan.innerHTML = "FDD<br>" + FinalDDCount; // Highlight uncaught only feature const highlightLabel = document.createElement("label"); highlightLabel.htmlFor = "tsitu-highlight-box"; highlightLabel.innerText = "Highlight uncaught mice only"; const highlightBox = document.createElement("input"); highlightBox.type = "checkbox"; highlightBox.name = "tsitu-highlight-box"; highlightBox.style.verticalAlign = "middle"; highlightBox.checked = isChecked; highlightBox.addEventListener("click", function () { if (highlightBox.checked) { localStorage.setItem("highlightPref", "uncaught-only"); } else { localStorage.setItem("highlightPref", "all"); } colorize(); }); const highlightDiv = document.createElement("div"); highlightDiv.className = "ff-map"; highlightDiv.style = "float: right; position: relative; z-index: 1"; highlightDiv.appendChild(highlightBox); highlightDiv.appendChild(highlightLabel); // Assemble masterDiv masterDiv.appendChild(SBOnlySpan); masterDiv.appendChild(SeedSpan); masterDiv.appendChild(PestsSpan); masterDiv.appendChild(FarmSpecialSpan); masterDiv.appendChild(StandardPondSpan); masterDiv.appendChild(GrubSpan); masterDiv.appendChild(ClamSpan); masterDiv.appendChild(StormySpan); masterDiv.appendChild(StandardNonWritingSpan); masterDiv.appendChild(StandardWritingSpan); masterDiv.appendChild(FirstDDSpan); masterDiv.appendChild(SecondDDSpan); masterDiv.appendChild(FinalDDSpan); // Inject into DOM const insertEl = document.querySelector( ".treasureMapView-leftBlock .treasureMapView-block-content" ); if ( insertEl && document.querySelector( ".treasureMapRootView-header-navigation-item.tasks.active" // On "Active Maps" ) ) { insertEl.insertAdjacentElement("afterbegin", highlightDiv); insertEl.insertAdjacentElement("afterbegin", masterDiv); } // "Goals" button document.querySelector("[data-type='show_goals']").onclick = function () { colorize(); }; } // Listen to XHRs, opening a map always at least triggers board.php const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function () { this.addEventListener("load", function () { const chestEl = document.querySelector( ".treasureMapView-mapMenu-rewardName" ); // Add in FF map names here if (chestEl) { const chestName = chestEl.textContent; if ( chestName && (chestName.indexOf("Farming and Fishing Treasure Chest") >= 0) || (chestName.indexOf("Folklore Forest Prelude Treasure Chest") >= 0) ) { colorize(); } } }); originalOpen.apply(this, arguments); };