// ==UserScript==
// @name 怪物换皮
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 替换怪物图标为自定义图片 URL
// @match https://www.milkywayidle.com/*
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
const monsterImageMap = {
'fly': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'rat': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'skunk': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'porcupine': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'slimy': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'frog': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'snake': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'swampy': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'alligator': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'sea_snail': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'crab': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'aquahorse': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'nom_nom': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'turtle': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'jungle_sprite': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'myconid': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'treant': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'centaur_archer': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'stabby': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'slashy': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'smashy': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'shooty': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'boomy': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'eye': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'eyes': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'veyes': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'novice_sorcerer': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'ice_sorcerer': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'flame_sorcerer': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'elementalist': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'gummy_bear': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'panda': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'black_bear': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'grizzly_bear': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'polar_bear': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'zombie': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'vampire': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'werewolf': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'abyssal_imp': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'soul_hunter': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'infernal_warlock': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'granite_golem': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'magnetic_golem': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
'stalactite_golem': 'https://tupian.li/images/2025/04/26/680c4019ce7a1.gif',
// boss
'crystal_colossus': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'giant_shoebill': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'marine_huntress': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'luna_empress': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'gobo_chieftain': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'the_watcher': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'chronofrost_sorcerer': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'red_panda': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'dusk_revenant': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
'demonic_overlord': 'https://tupian.li/images/2025/04/18/6801c297a15ef.gif',
};
const replaceIcons = () => {
document.querySelectorAll('svg use[href*="combat_monsters_sprite"]').forEach(useEl => {
const href = useEl.getAttribute('href');
const monsterId = Object.keys(monsterImageMap).find(id => href.endsWith(id));
if (monsterId) {
const svgEl = useEl.closest('svg');
if (svgEl) {
const img = document.createElement('img');
img.src = monsterImageMap[monsterId];
img.style.width = svgEl.getAttribute('width') || '100%';
img.style.height = svgEl.getAttribute('height') || '100%';
img.style.objectFit = 'contain';
svgEl.parentNode.replaceChild(img, svgEl);
}
}
});
};
const observer = new MutationObserver(replaceIcons);
observer.observe(document.body, { childList: true, subtree: true });
setTimeout(replaceIcons, 500);
})();