您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows the total multiplier of the item type and rarity in the item tooltip
// ==UserScript== // @name More Ore - View Multiplier // @namespace https://syns.studio/more-ore/ // @version 1.2 // @description Shows the total multiplier of the item type and rarity in the item tooltip // @author 123HD123 // @match https://syns.studio/more-ore/ // @icon https://syns.studio/more-ore/misc-tinyRock.22ef93dd.ico // @require https://greasyfork.org/scripts/444840-more-ore-notification/code/More%20Ore%20-%20Notification+.user.js // @grant none // ==/UserScript== (function() { const MOD_NAME = "View Multiplier"; const MOD_STORAGE_DEFAULT = { mutationObservers: [] }; const typeMultiplier = { Cloth: -.03, Cardboard: -.03, Plastic: -.03, Leather: 0, Stone: .01, Iron: .03, Silver: .03, Gold: .03, Steel: .08, Platinum: .08, Diamond: .2, Titanium: .2, Adamantite: .2, Alien: .2 }; const rarityMultiplier = { common: 0, uncommon: .01, rare: .02, unique: .05, epic: .1, legendary: .2, mythic: .3 }; const multiplierLevel = { WORST: 0.97, BAD: 1.10, AVERAGE: 1.11, AVERAGE2: 1.13, GOOD: 1.40, BEST: 1.50 }; window.mods = window.mods || {}; const Logger = NotificationPlus?.notify || console.log; if (Object.keys(window.mods).includes(MOD_NAME)) return Logger( "Warning: Mod named " + MOD_NAME + " has already been loaded", 3 ); NotificationPlus?.load(MOD_NAME); window.mods[MOD_NAME] = window.mods[MOD_NAME] || MOD_STORAGE_DEFAULT; const MOD_STORAGE = window.mods[MOD_NAME]; if (MOD_STORAGE.mutationObservers != []) MOD_STORAGE.mutationObservers.forEach(mutationObserver => mutationObserver.disconnect()); MOD_STORAGE.mutationObservers = []; let m = new MutationObserver(insertMultiplierStat); m.observe(document.querySelector(".tooltip-wrapper"), {childList: true}); MOD_STORAGE.mutationObservers.push(m); function insertMultiplierStat(mutationList, observer) { for(let mutation of mutationList) { let node = mutation.addedNodes.item(0)?.parentNode; if (node?.className?.includes("tooltip-wrapper")) { node.querySelectorAll(".tooltip-right")?.forEach(tooltip => { let itemName = tooltip.querySelector(".tooltip-item-name")?.children[1]; if (itemName == undefined) return; if (tooltip.querySelector(".stat-multiplier") != null) return; let totalMultiplier = (1 + rarityMultiplier[itemName.className] + typeMultiplier[itemName.innerText.split(" ")[0]]).toFixed(2); if (isNaN(totalMultiplier)) return; let stat = document.createElement("p"); stat.className = "stat-multiplier"; stat.innerHTML = `Multiplier ${getLevel(totalMultiplier)} <span><span class="bold">x${totalMultiplier}</span> <span class="icons positive"></span></span>`; tooltip.querySelector(".item-stats")?.append(stat); }); } } } function getLevel(multiplier) { if (multiplier == multiplierLevel.WORST) return "WORST"; if (multiplier <= multiplierLevel.BAD) return "BAD"; if (multiplier == multiplierLevel.AVERAGE || multiplier == multiplierLevel.AVERAGE2) return "AVERAGE"; if (multiplier <= multiplierLevel.GOOD) return "GOOD"; if (multiplier == multiplierLevel.BEST) return "BEST"; } })();