// ==UserScript== // @name MH: Labyrinth Door Data Collector // @author Warden Slayer - Warden Slayer#2302 // @namespace https://greasyfork.org/en/users/227259-wardenslayer // @version 1.1 // @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/Submit Data"; 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 A = isNaN(parseInt(fealtyClues, 10)); var B = isNaN(parseInt(techClues, 10)); var C = isNaN(parseInt(scholarClues, 10)); var D = isNaN(parseInt(treasureClues, 10)); var E = isNaN(parseInt(farmingClues, 10)); var F = isNaN(parseInt(deadEndClues, 10)); //if data is missing: stop if (A || B || C || D || E || F) { return } var allDoors = $(".labyrinthHUD-doorContainer").children(); //Add flag to denote shuffling var journalText = $(".journaltext"); var journalArray = journalText.toArray(0); var shuffleFlag = parseJournal(journalArray); //Parse Doors var doorOne = $(allDoors).first(); var doorThree = $(allDoors).last(); var doorTwo = $(allDoors).not(doorOne).not(doorThree); var doorOneData = parseDoor(doorOne) var doorOneObj = new doorOption(doorOneData.doorLength, doorOneData.doorQuality, doorOneData.doorType); var doorTwoData = parseDoor(doorTwo) var doorTwoObj = new doorOption(doorTwoData.doorLength, doorTwoData.doorQuality, doorTwoData.doorType); var doorThreeData = parseDoor(doorThree) var doorThreeObj = new doorOption(doorThreeData.doorLength, doorThreeData.doorQuality, doorThreeData.doorType); var resultsArray = [fealtyClues, techClues, scholarClues, treasureClues, farmingClues, deadEndClues, doorOneObj.length, doorOneObj.quality, doorOneObj.type, doorTwoObj.length, doorTwoObj.quality, doorTwoObj.type, doorThreeObj.length, doorThreeObj.quality, doorThreeObj.type, shuffleFlag ]; let results = resultsArray.join() console.log(results) GM_setClipboard(results) publishResults(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"; } return { doorLength, doorQuality, doorType } } function parseJournal(array) { var shuffleFlag = 0; array.forEach(function(elements) { var text = $(elements).text(); if (text.includes("grinding whirr")) { shuffleFlag = 1; } else {} }) return shuffleFlag; } function doorOption(length, quality, type) { this.length = length; this.quality = quality; this.type = type; } function publishResults(results) { var lastSubmit = localStorage.getItem('Last Submission'); if (results == lastSubmit) { return } const url = 'https://script.google.com/macros/s/AKfycbwmnDYV_3f5XFj7xzKcPclMcrzTaDkG1SMLwm2e8A8ABN5ms_j6/exec'; var form = new submitData(results) var jqxhr = $.ajax({ url: url, method: "GET", dataType: "json", data: form, }).success(function() { // do something console.log('Door Data Submitted!') localStorage.setItem('Last Submission', results) }); } function submitData(result_string) { this.The_String_From_The_Script = result_string; }