// ==UserScript== // @name MH: Labyrinth Door Data Collector // @author Warden Slayer - Warden Slayer#2302 // @namespace https://greasyfork.org/en/users/227259-wardenslayer // @version 1.0.4 // @description Mousehunt data collection tool for avilible labyrinth doors // @include https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js // @include http://www.mousehuntgame.com/* // @include https://www.mousehuntgame.com/* // @grant GM_setClipboard // @downloadURL none // ==/UserScript== $(document).ready(function() { buildCopyButton(); }); function buildCopyButton() { if ($(".copyButtonContainer").length > 0) return; var copyButtonContainer = document.createElement("div"); copyButtonContainer.classList.add("copyButtonContainer"); var hudLocation = $(".hudLocationContent.labyrinth"); //Copy Button var copyButton = document.createElement("button"); copyButton.id = "copyButton"; copyButton.innerText = "Copy to Clipboard"; copyButton.addEventListener("click", copyData) copyButtonContainer.appendChild(copyButton); hudLocation.after(copyButtonContainer); $(".copyButtonContainer").css({ float: "right" }); } function copyData() { var lastStep = $(".labyrinthHUD-hallway-padding").children().last(); if ($(lastStep).hasClass("labyrinthHUD-hallway-tile active") || $(lastStep).hasClass("labyrinthHUD-hallway-tile locked")) { return; } else { var fealtyClues = $(".labyrinthHUD-clueDrawer-clue.y").find(".labyrinthHUD-clueDrawer-quantity").text(); var techClues = $(".labyrinthHUD-clueDrawer-clue.h").find(".labyrinthHUD-clueDrawer-quantity").text(); var scholarClues = $(".labyrinthHUD-clueDrawer-clue.s").find(".labyrinthHUD-clueDrawer-quantity").text(); var treasureClues = $(".labyrinthHUD-clueDrawer-clue.t").find(".labyrinthHUD-clueDrawer-quantity").text(); var farmingClues = $(".labyrinthHUD-clueDrawer-clue.f").find(".labyrinthHUD-clueDrawer-quantity").text(); var deadEndClues = $(".labyrinthHUD-clueDrawer-clue.m").find(".labyrinthHUD-clueDrawer-quantity").text(); var allDoors = $(".labyrinthHUD-doorContainer").children(); //Add flag to denote shuffling //Need to check if having only 2 doors affects this. Will need to code a dummy DE door* var doorOne = $(allDoors).first(); var doorThree = $(allDoors).last(); var doorTwo = $(allDoors).not(doorOne).not(doorThree); parseDoor(doorOne) var doorOneData = new doorOption(localStorage.getItem("doorLength"), localStorage.getItem("doorQuality"), localStorage.getItem("doorType")); parseDoor(doorTwo) var doorTwoData = new doorOption(localStorage.getItem("doorLength"), localStorage.getItem("doorQuality"), localStorage.getItem("doorType")); parseDoor(doorThree) var doorThreeData = new doorOption(localStorage.getItem("doorLength"), localStorage.getItem("doorQuality"), localStorage.getItem("doorType")); var resultsArray = [fealtyClues, techClues, scholarClues, treasureClues, farmingClues, deadEndClues, doorOneData.length, doorOneData.quality, doorOneData.type, doorTwoData.length, doorTwoData.quality, doorTwoData.type, doorThreeData.length, doorThreeData.quality, doorThreeData.type ]; let results = resultsArray.join() console.log(results) GM_setClipboard(results) } } function parseDoor(door) { var doorString = door.find(".labyrinthHUD-door-name-padding").text(); var doorArray = doorString.split(/\s+/); var doorLength = doorArray[0]; var doorQuality = doorArray[1]; var doorType = doorArray[2]; //shorten door length if (doorLength == "Long") { doorLength = "L"; } else if (doorLength == "Medium") { doorLength = "M"; } else { doorLength = "S"; } //shorten door quality if (doorQuality == "Epic") { doorQuality = "E"; } else if (doorQuality == "Superior") { doorQuality = "S"; } else { doorQuality = "P"; } //shorten door type if (doorType == "Fealty") { doorType = "Y"; } else if (doorType == "Tech") { doorType = "H"; } else if (doorType == "Scholar") { doorType = "S"; } else if (doorType == "Treasury") { doorType = "T"; } else if (doorType == "Farming") { doorType = "F"; } else { doorType = "M"; } localStorage.setItem("doorLength", doorLength) localStorage.setItem("doorQuality", doorQuality) localStorage.setItem("doorType", doorType) } function doorOption(length, quality, type) { this.length = length; this.quality = quality; this.type = type; }