Greasy Fork is available in English.

🐭️ MouseHunt - Shields

Change your MouseHunt shield to an event shield, like the Halloween shield.

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         🐭️ MouseHunt - Shields
// @version      1.7.0
// @description  Change your MouseHunt shield to an event shield, like the Halloween shield.
// @license      MIT
// @author       bradp
// @namespace    bradp
// @match        https://www.mousehuntgame.com/*
// @icon         https://i.mouse.rip/mouse.png
// @grant        none
// @run-at       document-end
// @require      https://cdn.jsdelivr.net/npm/mousehunt-utils@1.5.3/mousehunt-utils.js
// @require      https://cdn.jsdelivr.net/npm/script-migration@1.1.1
// ==/UserScript==

((function () {
  'use strict';

  const addClass = (el, shieldClass) => {
    const classToAdd = shieldClass.replace('.', ' ');

    classToAdd.split(' ').forEach((className) => {
      el.classList.add(className);
    });
  };

  const changeShield = () => {
    const classesToUse = [];

    shieldChoices.forEach((shield) => {
      const setting = getSetting(`${shield}-shield`);
      if (setting) {
        classesToUse.push(shield);
      }
    });

    const shieldEl = document.querySelector('.mousehuntHud-shield');
    if (! shieldEl) {
      return;
    }

    // Remove all shield classes.
    shieldEl.classList.remove(...shieldChoices);

    if (classesToUse.length > 1) {
      // If there are multiple shields, use a random one.
      const randomShield = classesToUse[ Math.floor(Math.random() * classesToUse.length) ];
      addClass(shieldEl, randomShield);
    } else if (classesToUse.length === 1) {
      // If there is only one shield, use that one.
      addClass(shieldEl, classesToUse[ 0 ]);
    }
  };

  const titleBadge = () => {
    let title = user.title_name || 'novice';
    title = title.toLowerCase();

    title.replace('lady', 'lord');
    title.replace('wo', '');
    title.replace('ess', '');
    title.replace('duch', 'duke');

    const titleImages = {
      novice: 'https://www.mousehuntgame.com/images/titles/84bc1109b5cd7aa8c24d195bc8207c38.png?cv=2',
      apprentice: 'https://www.mousehuntgame.com/images/titles/3f1e44bbaa7138da4c326819e9f3f0a8.png?cv=2',
      initiate: 'https://www.mousehuntgame.com/images/titles/6f4673dd2d9d1e98b4569667d702a775.png?cv=2',
      journeyman: 'https://www.mousehuntgame.com/images/titles/e96387f7261b95c0eeab9291e4e594e1.png?cv=2',
      master: 'https://www.mousehuntgame.com/images/titles/ad6875955f541159133c6d3798519f81.png?cv=2',
      grandmaster: 'https://www.mousehuntgame.com/images/titles/35ee6056a09037fb13a9195881875045.png?cv=2',
      legendary: 'https://www.mousehuntgame.com/images/titles/0da3761747914f497c16dc2051ba132d.png?cv=2',
      hero: 'https://www.mousehuntgame.com/images/titles/fca35751046f4bcc972716ca484b6d61.png?cv=2',
      knight: 'https://www.mousehuntgame.com/images/titles/398dca9a8c7703de969769491622ca32.png?cv=2',
      lord: 'https://www.mousehuntgame.com/images/titles/9a6acd429a9a3a4849ed13901288b0b8.png?cv=2',
      baron: 'https://www.mousehuntgame.com/images/titles/ea9c0ec2e6d3d81c14e61f5ce924d0e1.png?cv=2',
      count: 'https://www.mousehuntgame.com/images/titles/dd11711a25b80db90e0306193f2e8d78.png?cv=2',
      duke: 'https://www.mousehuntgame.com/images/titles/eb46ac1e8197b13299ab860f07d963db.png?cv=2',
      grandduke: 'https://www.mousehuntgame.com/images/titles/87937fa96bbb3b2dd3225df883002642.png?cv=2',
      archduke: 'https://www.mousehuntgame.com/images/titles/043efe31de4f0f2e0ddca590fe829032.png?cv=2',
      viceroy: 'https://www.mousehuntgame.com/images/titles/e2e79f6f9201a4d4e7a89684fbb5356f.png?cv=2',
      elder: 'https://www.mousehuntgame.com/images/titles/0f3cf224bf98457f6b5bad91ab1c7bd2.png?cv=2',
      sage: 'https://www.mousehuntgame.com/images/titles/cb49e43c5e4460da7c09fe28ca4f44ce.png?cv=2',
      fabled: 'https://www.mousehuntgame.com/images/titles/5daba92a8d609834aa8b789f37544e08.png?cv=2',
    };

    return titleImages[ title ];
  };

  /**
   * Add the settings.
   */
  const addShieldSettings = () => {
    const tab = addSettingsTab();
    const settingSection = {
      id: 'mh-shields',
      name: 'MouseHunt Shields',
      description: 'Replaces the default shield. If multiple shields are enabled, a random one will be used.',
    };

    addSetting('Birthday', 'birthday-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 10)', 'birthday.year10-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 11)', 'birthday.year11-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 12)', 'birthday.year12-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 13)', 'birthday.year13-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 14)', 'birthday.year14-shield', false, '', settingSection, tab);
    addSetting('Birthday (Year 15)', 'birthday.year15-shield', false, '', settingSection, tab);
    addSetting('Halloween', 'halloween-shield', false, '', settingSection, tab);
    addSetting('Remembrance Day', 'remembrance_day-shield', false, '', settingSection, tab);
    addSetting('Valentine\'s', 'valentines-shield', false, '', settingSection, tab);
    addSetting('Great Winter Hunter', 'winter_hunt-shield', false, '', settingSection, tab);
    addSetting('Larry\'s Football Challenge', 'larrys_football_challenge-shield', false, '', settingSection, tab);
    addSetting('Spring Egg Hunt', 'eggs-shield', false, '', settingSection, tab);
    addSetting('Title ', 'title-shield', false, 'Hunter Title badge', settingSection, tab);
    addSetting('Fabled ', 'fabled-shield', false, 'Custom shield with Fabled Badge', settingSection, tab);
    addSetting('Scrambles ', 'scrambles-shield', false, 'Bawk!', settingSection, tab);
    addSetting('Jerry ', 'jerry-shield', false, 'Custom shield with Jerry', settingSection, tab);
    addSetting('Romeno ', 'romeno-shield', false, 'Custom shield with Romeno', settingSection, tab);
    addSetting('Captain America', 'capt-america-shield', false, '', settingSection, tab);
    addSetting('Hylian Shield', 'hylian-shield', false, '', settingSection, tab);
  };

  const shieldChoices = [
    'remembrance_day',
    'winter_hunt',
    'valentines',
    'birthday',
    'birthday.year10',
    'birthday.year11',
    'birthday.year12',
    'birthday.year13',
    'birthday.year14',
    'birthday.year15',
    'larrys_football_challenge',
    'halloween',
    'scrambles',
    'jerry',
    'romeno',
    'title',
    'fabled',
    'capt-america',
    'hylian',
    'eggs',
  ];

  onPageChange({ change: changeShield });
  changeShield();

  onPageChange({ change: addShieldSettings });
  addShieldSettings();

  addStyles(`#mh-shields .defaultSettingText {
    display: none;
  }

  #mh-shields .settingRowTable {
    display: inline-block;
    width: 300px;
  }

  #mh-shields .settingRowTable:nth-child(even) {
    margin-right: 50px;
  }

  #mh-shields .settingRow {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: space-between;
  }

  .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);
  }

  .mousehuntHud-shield.scrambles.golden {
    background-image: url(https://i.mouse.rip/shield-scrambles-bawk.png), url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?asset_cache_version=2);
  }

  .mousehuntHud-shield.scrambles {
    background-image: url(https://i.mouse.rip/shield-scrambles-bawk.png);
  }

  .mousehuntHud-shield.jerry.golden {
    background-image: url(https://i.mouse.rip/shield-jerry.png), url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?asset_cache_version=2);
  }

  .mousehuntHud-shield.jerry {
    background-image: url(https://i.mouse.rip/shield-jerry.png);
  }

  .mousehuntHud-shield.capt-america.golden {
    background-image: url(https://i.mouse.rip/shield-capt-america.png), url(https://www.mousehuntgame.com/images/ui/elements/header_golden_shield.gif?asset_cache_version=2);
  }

  .mousehuntHud-shield.capt-america {
    background-image: url(https://i.mouse.rip/shield-capt-america.png);
  }

  .mousehuntHud-shield.hylian::after {
    position: absolute;
    top: -8px;
    left: 7px;
    width: 145px;
    height: 145px;
    content: "";
    background-image: url(https://i.mouse.rip/shield-hylian.png?2);
    background-repeat: no-repeat;
    background-size: contain;
  }

  .mousehuntHud-shield.romeno::after {
    position: absolute;
    bottom: -8px;
    left: -30px;
    z-index: 1;
    width: 140px;
    height: 140px;
    content: "";
    background-image: url(https://i.mouse.rip/shield-romeno.png);
    background-repeat: no-repeat;
    background-size: contain;
  }

  .mousehuntHud-shield.title::after {
    position: absolute;
    top: 3px;
    left: 8px;
    width: 120px;
    height: 120px;
    content: "";
    background-image: url(${titleBadge()});
    filter: drop-shadow(0 0 10px #ff970a);
    background-repeat: no-repeat;
    background-size: contain;
  }

  .mousehuntHud-shield.fabled::after {
    position: absolute;
    top: 3px;
    left: 8px;
    width: 120px;
    height: 120px;
    content: "";
    background-image: url(https://i.mouse.rip/shield-fabled.png);
    filter: drop-shadow(0 0 10px #ff970a);
    background-repeat: no-repeat;
    background-size: contain;
  }

  .mousehuntHud-shield.eggs::after {
    position: absolute;
    position: absolute;
    top: 2px;
    left: 0px;
    width: 137px;
    height: 137px;
    content: "";
    // background-image: url(https://i.mouse.rip/eggs-shield.png);
    background-image: url(https://i.mouse.rip/shield-eggs-alt.png);
    background-repeat: no-repeat;
    background-size: contain
  }
  `);

  migrateUserscript('🐭️ MouseHunt - Shields', 'https://greasyfork.org/en/scripts/454147-mousehunt-shields');
})());