您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Color codes mice on birthday maps according to decorations // & cheese. Based off tsitu's work.
- // ==UserScript==
- // @name MouseHunt - Birthday Map Color Coder 2021
- // @author Vinnie, Blende & Tran Situ (tsitu), in59te
- // @version 1.111
- // @description Color codes mice on birthday maps according to decorations // & cheese. Based off tsitu's work.
- // @match http://www.mousehuntgame.com/*
- // @match https://www.mousehuntgame.com/*
- // @namespace https://greasyfork.org/en/scripts/397287-mousehunt-birthday-map-color-coder-2020
- // @include http://apps.facebook.com/mousehunt/*
- // @include https://apps.facebook.com/mousehunt/*
- // ==/UserScript==
- const mixingMice = [
- "Force Fighter Blue",
- "Force Fighter Green",
- "Force Fighter Pink",
- "Force Fighter Red",
- "Force Fighter Yellow",
- "Super FighterBot MegaSupreme",
- ];
- const breakMice = [
- "Breakdancer",
- "Fete Fromager",
- "Dance Party",
- "El Flamenco",
- "Para Para Dancer"
- ];
- const pumpMice = [
- "Reality Restitch",
- "Time Punk",
- "Time Tailor",
- "Time Thief",
- "Space Party-Time Plumber"
- ];
- const qaMice = [
- "Cupcake Candle Thief",
- "Cupcake Cutie",
- "Sprinkly Sweet Cupcake Cook",
- "Cupcake Camo",
- "Cupcake Runner"
- ];
- const bossMice = [
- "Vincent, The Magnificent"
- ];
- const sbMice = [
- "Cheesy Party"
- ];
- const factoryMice = [
- "Factory Technician"
- ];
- const standardMice = [
- "Birthday",
- "Buckethead",
- "Present",
- "Pintail",
- "Dinosuit",
- "Sleepwalker",
- "Terrible Twos"
- ];
- const birthdayMaps = [
- "Rare Birthday Treasure Chest",
- "Birthday Treasure Chest",
- "Rare Gilded Birthday Treasure Chest",
- "Gilded Birthday Treasure Chest",
- "Rare Gilded Birthday Treasure Chest",
- ];
- function colorize() {
- let mixingColor = "#c97c49"; // brown-ish
- let mixingCount = 0;
- let breakColor = "#f06a60"; // red
- let breakCount = 0;
- let pumpColor = "#5ae031"; // green
- let pumpCount = 0;
- let qaColor = "#4fcaf0"; // blue
- let qaCount = 0;
- let bossColor = "#cd87ff"; // light purple
- let bossCount = 0;
- let sbColor = "#66ffff"; // teal-ish
- let sbCount = 0;
- let standardColor = "#afa500"; // mountain dew-ish
- let standardCount = 0;
- let factoryColor = "#e6e6ff";
- let factoryCount = 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 (mixingMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = mixingColor;
- if (el.className.indexOf(" complete ") < 0) {
- mixingCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (breakMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = breakColor;
- if (el.className.indexOf(" complete ") < 0) {
- breakCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (pumpMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = pumpColor;
- if (el.className.indexOf(" complete ") < 0) {
- pumpCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (qaMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = qaColor;
- if (el.className.indexOf(" complete ") < 0) {
- qaCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (bossMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = bossColor;
- if (el.className.indexOf(" complete ") < 0) {
- bossCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (sbMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = sbColor;
- if (el.className.indexOf(" complete ") < 0) {
- sbCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (factoryMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = factoryColor;
- if (el.className.indexOf(" complete ") < 0) {
- factoryCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- } else if (standardMice.indexOf(mouseName) > -1) {
- el.style.backgroundColor = standardColor;
- if (el.className.indexOf(" complete ") < 0) {
- standardCount++;
- } else {
- if (isChecked) el.style.backgroundColor = "white";
- }
- }
- });
- mixingColor = mixingCount > 0 ? mixingColor : greyColor;
- breakColor = breakCount > 0 ? breakColor : greyColor;
- pumpColor = pumpCount > 0 ? pumpColor : greyColor;
- qaColor = qaCount > 0 ? qaColor : greyColor;
- bossColor = bossCount > 0 ? bossColor : greyColor;
- sbColor = sbCount > 0 ? sbColor : greyColor;
- factoryColor = factoryCount > 0 ? factoryColor : greyColor;
- standardColor = standardCount > 0 ? standardColor : greyColor;
- // Remove existing birthday Map related elements before proceeding
- document.querySelectorAll(".tsitu-birthday-map").forEach(el => el.remove());
- const masterDiv = document.createElement("div");
- masterDiv.className = "tsitu-birthday-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: 12.5px";
- const mixingSpan = document.createElement("span");
- mixingSpan.style = "background-color: " + mixingColor + spanStyle;
- mixingSpan.innerHTML = "Mixing<br>" + mixingCount;
- const breakSpan = document.createElement("span");
- breakSpan.style = "background-color: " + breakColor + spanStyle;
- breakSpan.innerHTML = "Break<br>" + breakCount;
- const pumpSpan = document.createElement("span");
- pumpSpan.style = "background-color: " + pumpColor + spanStyle;
- pumpSpan.innerHTML = "Pump<br>" + pumpCount;
- const qaSpan = document.createElement("span");
- qaSpan.style = "background-color: " + qaColor + spanStyle;
- qaSpan.innerHTML = "QA<br>" + qaCount;
- const vinnieSpan = document.createElement("span");
- vinnieSpan.style = "background-color: " + bossColor + spanStyle;
- vinnieSpan.innerHTML = "Vinnie<br>" + bossCount;
- const sbSpan = document.createElement("span");
- sbSpan.style = "background-color: " + sbColor + spanStyle;
- sbSpan.innerHTML = "SB+<br>" + sbCount;
- const factorySpan = document.createElement("span");
- factorySpan.style = "background-color: " + factoryColor + spanStyle;
- factorySpan.innerHTML = "Factory Charm<br>" + factoryCount;
- const standardSpan = document.createElement("span");
- standardSpan.style = "background-color: " + standardColor + spanStyle;
- standardSpan.innerHTML = "Standard<br>" + standardCount;
- // 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 = "tsitu-birthday-map";
- highlightDiv.style =
- "margin-bottom: 5px; width: 35%; border: 1px dotted black";
- highlightDiv.appendChild(highlightBox);
- highlightDiv.appendChild(highlightLabel);
- // Assemble masterDiv
- masterDiv.appendChild(mixingSpan);
- masterDiv.appendChild(breakSpan);
- masterDiv.appendChild(pumpSpan);
- masterDiv.appendChild(qaSpan);
- masterDiv.appendChild(vinnieSpan);
- masterDiv.appendChild(sbSpan);
- masterDiv.appendChild(factorySpan);
- masterDiv.appendChild(standardSpan);
- // Inject into DOM
- const insertEl = document.querySelector(
- ".treasureMapView-leftBlock .treasureMapView-block-content"
- );
- if (
- insertEl &&
- document.querySelector(
- ".treasureMapRootView-header-navigation-item.tasks.active"
- )
- ) {
- 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 mapEl = document.querySelector(".treasureMapView-mapMenu-rewardName");
- if (mapEl) {
- const mapName = mapEl.textContent;
- if (mapName && birthdayMaps.indexOf(mapName) > -1) {
- colorize();
- }
- }
- });
- originalOpen.apply(this, arguments);
- };