MH: Labyrinth Door Data Collector

Mousehunt data collection tool for avilible labyrinth doors

当前为 2019-07-31 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name MH: Labyrinth Door Data Collector
  3. // @author Warden Slayer - Warden Slayer#2302
  4. // @namespace https://greasyfork.org/en/users/227259-wardenslayer
  5. // @version 1.0.9
  6. // @description Mousehunt data collection tool for avilible labyrinth doors
  7. // @include https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
  8. // @include http://www.mousehuntgame.com/*
  9. // @include https://www.mousehuntgame.com/*
  10. // @grant GM_setClipboard
  11. // ==/UserScript==
  12. $(document).ready(function() {
  13. buildCopyButton();
  14. });
  15.  
  16. function buildCopyButton() {
  17. if ($(".copyButtonContainer").length > 0) return;
  18. var copyButtonContainer = document.createElement("div");
  19. copyButtonContainer.classList.add("copyButtonContainer");
  20. var hudLocation = $(".hudLocationContent.labyrinth");
  21. //Copy Button
  22. var copyButton = document.createElement("button");
  23. copyButton.id = "copyButton";
  24. copyButton.innerText = "Copy to Clipboard";
  25. copyButton.addEventListener("click", copyData);
  26. copyButtonContainer.appendChild(copyButton);
  27. hudLocation.after(copyButtonContainer);
  28. $(".copyButtonContainer").css({
  29. float: "right"
  30. });
  31. }
  32.  
  33. function copyData() {
  34. var lastStep = $(".labyrinthHUD-hallway-padding").children().last();
  35. if ($(lastStep).hasClass("labyrinthHUD-hallway-tile active") || $(lastStep).hasClass("labyrinthHUD-hallway-tile locked")) {
  36. return;
  37. } else {
  38. var fealtyClues = $(".labyrinthHUD-clueDrawer-clue.y").find(".labyrinthHUD-clueDrawer-quantity").text();
  39. var techClues = $(".labyrinthHUD-clueDrawer-clue.h").find(".labyrinthHUD-clueDrawer-quantity").text();
  40. var scholarClues = $(".labyrinthHUD-clueDrawer-clue.s").find(".labyrinthHUD-clueDrawer-quantity").text();
  41. var treasureClues = $(".labyrinthHUD-clueDrawer-clue.t").find(".labyrinthHUD-clueDrawer-quantity").text();
  42. var farmingClues = $(".labyrinthHUD-clueDrawer-clue.f").find(".labyrinthHUD-clueDrawer-quantity").text();
  43. var deadEndClues = $(".labyrinthHUD-clueDrawer-clue.m").find(".labyrinthHUD-clueDrawer-quantity").text();
  44. var allDoors = $(".labyrinthHUD-doorContainer").children();
  45. //Add flag to denote shuffling
  46. var journalText = $(".journaltext");
  47. var journalArray = journalText.toArray(0);
  48. var shuffleFlag = parseJournal(journalArray);
  49. //Parse Doors
  50. var doorOne = $(allDoors).first();
  51. var doorThree = $(allDoors).last();
  52. var doorTwo = $(allDoors).not(doorOne).not(doorThree);
  53. var doorOneData = parseDoor(doorOne)
  54. var doorOneObj = new doorOption(doorOneData.doorLength,doorOneData.doorQuality,doorOneData.doorType);
  55. var doorTwoData = parseDoor(doorTwo)
  56. var doorTwoObj = new doorOption(doorTwoData.doorLength,doorTwoData.doorQuality,doorTwoData.doorType);
  57. var doorThreeData = parseDoor(doorThree)
  58. var doorThreeObj = new doorOption(doorThreeData .doorLength,doorThreeData.doorQuality,doorThreeData.doorType);
  59. var resultsArray = [fealtyClues,
  60. techClues,
  61. scholarClues,
  62. treasureClues,
  63. farmingClues,
  64. deadEndClues,
  65. doorOneObj.length,
  66. doorOneObj.quality,
  67. doorOneObj.type,
  68. doorTwoObj.length,
  69. doorTwoObj.quality,
  70. doorTwoObj.type,
  71. doorThreeObj.length,
  72. doorThreeObj.quality,
  73. doorThreeObj.type,
  74. shuffleFlag
  75. ];
  76. let results = resultsArray.join()
  77. console.log(results)
  78. GM_setClipboard(results)
  79. }
  80. }
  81.  
  82. function parseDoor(door) {
  83. var doorString = door.find(".labyrinthHUD-door-name-padding").text();
  84. var doorArray = doorString.split(/\s+/);
  85. var doorLength = doorArray[0];
  86. var doorQuality = doorArray[1];
  87. var doorType = doorArray[2];
  88. //shorten door length
  89. if (doorLength == "Long") {
  90. doorLength = "L";
  91. } else if (doorLength == "Medium") {
  92. doorLength = "M";
  93. } else {
  94. doorLength = "S";
  95. }
  96. //shorten door quality
  97. if (doorQuality == "Epic") {
  98. doorQuality = "E";
  99. } else if (doorQuality == "Superior") {
  100. doorQuality = "S";
  101. } else {
  102. doorQuality = "P";
  103. }
  104. //shorten door type
  105. if (doorType == "Fealty") {
  106. doorType = "Y";
  107. } else if (doorType == "Tech") {
  108. doorType = "H";
  109. } else if (doorType == "Scholar") {
  110. doorType = "S";
  111. } else if (doorType == "Treasury") {
  112. doorType = "T";
  113. } else if (doorType == "Farming") {
  114. doorType = "F";
  115. } else {
  116. doorType = "M";
  117. }
  118. return {doorLength,doorQuality,doorType}
  119. }
  120.  
  121. function parseJournal(array){
  122. var shuffleFlag = 0;
  123. array.forEach(function(elements) {
  124. var text = $(elements).text();
  125. if (text.includes("grinding whirr")) {
  126. shuffleFlag = 1;
  127. } else {
  128. }
  129. })
  130. return shuffleFlag;
  131. }
  132.  
  133. function doorOption(length, quality, type) {
  134. this.length = length;
  135. this.quality = quality;
  136. this.type = type;
  137. }