Greasy Fork

MH: Labyrinth Door Data Collector

Mousehunt data collection tool for avilible labyrinth doors

目前为 2019-07-18 提交的版本。查看 最新版本

// ==UserScript==
// @name         MH: Labyrinth Door Data Collector
// @author       Warden Slayer - Warden Slayer#2302
// @namespace    https://greasyfork.org/en/users/227259-wardenslayer
// @version      1.0.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
// ==/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-tilenone")) {
        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[1];
    var doorQuality = doorArray[2];
    var doorType = doorArray[3];
    //shorten door length
    if (doorLength == "Short") {
        doorLength = "S";
    } else if (doorLength == "Medium") {
        doorLength = "M";
    } else {
        doorLength = "L";
    }
    //shorten door quality
    if (doorQuality == "Plain") {
        doorQuality = "P";
    } else if (doorQuality == "Superior") {
        doorQuality = "S";
    } else {
        doorQuality = "E";
    }
    //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;
}