MH: Floating Islands HUD Enhancer

See more thing on your floating islands HUD!

安装此脚本?
作者推荐脚本

你可能也喜欢 MH: Profile+

安装此脚本
  1. // ==UserScript==
  2. // @name MH: Floating Islands HUD Enhancer
  3. // @author Warden Slayer
  4. // @namespace https://greasyfork.org/en/users/227259-wardenslayer
  5. // @version 1.7.1
  6. // @description See more thing on your floating islands HUD!
  7. // @icon https://www.mousehuntgame.com/images/items/weapons/974151e440f297f1b6d55385310ac63c.jpg?cv=2
  8. // @include https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
  9. // @include http://www.mousehuntgame.com/*
  10. // @include https://www.mousehuntgame.com/*
  11. // ==/UserScript==
  12. $(document).ready(function() {
  13. const debug = localStorage.getItem('ws.debug');
  14. if (user.environment_name == 'Floating Islands') {
  15. if (debug == true) {
  16. console.log('FI Script Started');
  17. }
  18. loadFunction()
  19. } else {
  20. if (debug == true) {
  21. console.log('Not in the FI');
  22. }
  23. }
  24. });
  25.  
  26. function loadFunction() {
  27. updateAndRender();
  28. setTimeout(renderSkyMap, 100);
  29. }
  30.  
  31. $(document).ajaxComplete(function(event,xhr,options){
  32. //console.log(options.url);
  33. if (options.url == 'https://www.mousehuntgame.com/managers/ajax/mice/getstat.php') {
  34. //console.log('mice');
  35. } else if (options.url == 'https://www.mousehuntgame.com/managers/ajax/users/userInventory.php') {
  36. //console.log('items');
  37. } else {
  38. // console.log('some other ajax');
  39. if (user.environment_name == 'Floating Islands') {
  40. loadFunction();
  41. }
  42. }
  43. });
  44.  
  45. //HUD Code
  46. function updateAndRender() {
  47. hg.utils.UserInventory.getItem('empyrean_codex_page_stat_item', function(data) {
  48. localStorage.setItem('ws.fi.numPages', data.quantity);
  49. hg.utils.UserInventory.getItem('floating_islands_cloud_gem_stat_item', function(data) {
  50. localStorage.setItem('ws.fi.numGlass', data.quantity);
  51. hg.utils.UserInventory.getItem('floating_islands_sky_ore_stat_item', function(data) {
  52. localStorage.setItem('ws.fi.numOre', data.quantity);
  53. renderHUD();
  54. }, true);
  55. }, true);
  56. }, true);
  57. }
  58.  
  59. function renderHUD() {
  60. const ShowPages = localStorage.getItem('ws.fi.showPages');
  61. let empyreanPages = $('.floatingIslandsHUD-statItem[data-item-type="empyrean_codex_page_stat_item"]');
  62. if (empyreanPages.length > 0 ) {
  63. } else {
  64. const itemContainer = $('.floatingIslandsHUD-statItemContainer');
  65. const statItem = $(itemContainer).find('.floatingIslandsHUD-statItem[data-item-type="bottled_wind_stat_item"]');
  66. let empyreanPages = $(statItem ).clone().appendTo(itemContainer);
  67. $(empyreanPages).find('.floatingIslandsHUD-item-image.bottled_wind_stat_item').removeClass('bottled_wind_stat_item').addClass('empyrean_codex_page_stat_item');
  68. $(empyreanPages).find('*').removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
  69. $(empyreanPages).removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
  70. $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-name').text('Empyrean Codex Page');
  71. const pageCount = parseInt(localStorage.getItem('ws.fi.numPages'),10);
  72. $(empyreanPages).find('.floatingIslandsHUD-statItem-quantity.quantity').text(pageCount);
  73. empyreanPages.removeAttr("href").removeAttr("onclick");
  74. $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').css({
  75. 'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/5d8cf4e7ab765abc5b4a72c44bae6b98.gif?cv=2)',
  76. });
  77. $(empyreanPages).find('.floatingIslandsHUD-state.floatingIslandsHUD-island').text('Empyrean Codex Page');
  78. }
  79. if (ShowPages == "Y") {
  80. $(empyreanPages).removeClass('hidden');
  81. } else {
  82. $(empyreanPages).addClass('hidden');
  83. }
  84. //Hide Wind on islands not launchpad
  85. if (user.quests.QuestFloatingIslands.hunting_site_atts.hunts_remaining != null) {
  86. $('.floatingIslandsHUD-statItem.mousehuntTooltipParent').filter('[data-item-type=bottled_wind_stat_item]').hide();
  87. }
  88. //wind on maybe
  89. const useWind = localStorage.getItem('ws.fi.useWind');
  90. const numWind = parseInt($('.floatingIslandsHUD-statItem-quantity.quantity').filter('[data-item-type=bottled_wind_stat_item]').text(),10);
  91. if (useWind == 'yes') {
  92. if (user.quests.QuestFloatingIslands.hunting_site_atts.is_fuel_enabled) {
  93. localStorage.setItem('ws.fi.useWind', 'no');
  94. } else {
  95. if (numWind > 0 ) {
  96. hg.views.HeadsUpDisplayFloatingIslandsView.toggleFuel();
  97. }
  98. }
  99. }
  100. //Hide retreat button if the warden/paragon is not caught already
  101. if (user.quests.QuestFloatingIslands.hunting_site_atts.has_defeated_enemy) {
  102. $('.floatingIslandsHUD-retreatButton').show();
  103. } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_enemy_encounter) {
  104. $('.floatingIslandsHUD-retreatButton').hide();
  105. } else if (user.quests.QuestFloatingIslands.hunting_site_atts.has_encountered_enemy) {
  106. $('.floatingIslandsHUD-retreatButton').show();
  107. } else {
  108. $('.floatingIslandsHUD-retreatButton').hide();
  109. }
  110. showOreGlass();
  111. showBossProgress();
  112. }
  113. $(document).on('click', '.floatingIslandsHUD-statItem[data-item-type="empyrean_codex_page_stat_item"]', function() {
  114. hg.views.ItemView.show('empyrean_codex_page_stat_item');
  115. //hg.views.ItemView.show($(this).attr('data-type'))
  116. })
  117.  
  118. function showOreGlass() {
  119. const oculusLevel = user.quests.QuestFloatingIslands.airship.oculus_level;
  120. const skyGlass = $('.floatingIslandsHUD-craftingItem.floating_islands_cloud_gem_stat_item').find("[data-item-type=floating_islands_cloud_gem_stat_item]");
  121. const skyGlassQty = parseInt(localStorage.getItem('ws.fi.numGlass'), 10);
  122. const skyOre = $('.floatingIslandsHUD-craftingItem.floating_islands_sky_ore_stat_item').find("[data-item-type=floating_islands_sky_ore_stat_item]");
  123. const skyOreQty = parseInt(localStorage.getItem('ws.fi.numOre'), 10);
  124. let upgradeCost = 0;
  125. if (oculusLevel == 1) {
  126. upgradeCost = 35;
  127. } else if (oculusLevel == 2) {
  128. upgradeCost = 150;
  129. } else if (oculusLevel == 3) {
  130. upgradeCost = 500;
  131. } else if (oculusLevel == 4) {
  132. upgradeCost = '1.2k';
  133. } else if (oculusLevel == 5) {
  134. upgradeCost = '2k';
  135. } else if (oculusLevel == 6) {
  136. upgradeCost = '3.5k';
  137. } else if (oculusLevel == 7) {
  138. upgradeCost = '8k';
  139. } else if (oculusLevel == 8) {
  140. upgradeCost = '10k';
  141. } else if (oculusLevel == 9) {
  142. upgradeCost = '2.5k';
  143. }
  144. $(skyGlass).text(skyGlassQty + '/' + upgradeCost);
  145. $(skyOre).text(skyOreQty + '/' + upgradeCost);
  146. }
  147.  
  148. function showBossProgress() {
  149. const allRemainingHunts = user.quests.QuestFloatingIslands.hunting_site_atts.enemy_encounter_hunts_remaining;
  150. let warGons = 'Paragon: ';
  151. if (user.quests.QuestFloatingIslands.hunting_site_atts.has_enemy == null) {
  152. warGons = 'Enemy: ';
  153. } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_high_altitude == null) {
  154. warGons = 'Warden: ';
  155. } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_vault_island != null) {
  156. warGons = 'Empress: ';
  157. }
  158. $('.floatingIslandsHUD-enemy-state.enemyApproaching:not(.enemyActive)').text(warGons + allRemainingHunts);
  159. }
  160.  
  161. function renderItemBag() {
  162. const itemBagBody = $('.floatingIslandsHUD-inventoryBag-itemContainer');
  163. const empyreanTroves = $('.floatingIslandsHUD-inventoryBag-item[data-item-type="empyrean_floating_loot_cache_convertible"]');
  164. let empyreanPages = "";
  165. empyreanPages = $(empyreanTroves).clone().appendTo(itemBagBody)
  166. $(empyreanPages).removeClass('active').removeClass('inactive');
  167. const ShowPages = localStorage.getItem('ws.fi.showPages');
  168. if (ShowPages == "Y") {
  169. $(empyreanPages).addClass('active');
  170. } else {
  171. $(empyreanPages).addClass('inactive');
  172. }
  173. $(empyreanPages).find('.floatingIslandsHUD-item-image.empyrean_floating_loot_cache_convertible').removeClass('empyrean_floating_loot_cache_convertible').addClass('empyrean_codex_page_stat_item');
  174. $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').find('*').removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
  175. $(empyreanPages).removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
  176. $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-name').text('Empyrean Codex Page');
  177. const pageCount = parseInt(localStorage.getItem('ws.fi.numPages'),10);
  178. $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-quantity.quantity').text(pageCount);
  179. $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').css({
  180. 'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/5d8cf4e7ab765abc5b4a72c44bae6b98.gif?cv=2)',
  181. });
  182. //
  183. itemBagBody.children().on('click', function () {hg.views.ItemView.show($(this).attr('data-item-type'))});
  184. }
  185.  
  186. $(document).on('click', '.floatingIslandsHUD-inventoryBagButton.mousehuntTooltipParent', function() {
  187. renderItemBag();
  188. })
  189. $(document).on('click', '.floatingIslandsHUD-inventoryBag-item-toggleButton[data-item-type="empyrean_codex_page_stat_item"]', function() {
  190. const empyreanPages = $('.floatingIslandsHUD-inventoryBag-item[data-item-type="empyrean_codex_page_stat_item"]');
  191. if (empyreanPages.hasClass('inactive')) {
  192. empyreanPages.removeClass('inactive').addClass('active');
  193. localStorage.setItem('ws.fi.showPages',"Y");
  194. } else if (empyreanPages.hasClass('active')) {
  195. empyreanPages.removeClass('active').addClass('inactive');
  196. localStorage.setItem('ws.fi.showPages',"");
  197. } else {
  198. empyreanPages.addClass('active');
  199. localStorage.setItem('ws.fi.showPages',"Y");
  200. }
  201. })
  202.  
  203. //Paragon Overlay
  204. function renderSkyMap() {
  205. drawParagons()
  206. // const body = $('.floatingIslandsAdventureBoard-container.paragon.loading.skyMap');
  207. // $(body).removeAttr("href").removeAttr("onclick");
  208. // const trapLibrary = $('.floatingIslandsAdventureBoard-trapLibrary-text:not(.wind)');
  209. // let useWindDiv = $('.floatingIslandsAdventureBoard-trapLibrary-text.wind');
  210. // if ($(useWindDiv).length == 0) {
  211. // useWindDiv = $(trapLibrary).clone().appendTo(body);
  212. // $(useWindDiv).addClass('wind');
  213. // }
  214. // let useWindCb = $(useWindDiv).find('.floatingIslandsAdventureBoard-trapLibrary-checkbox');
  215. // $(useWindCb).addClass('wind');
  216. // $(useWindDiv).children().empty().append(useWindCb).append("Use Wind");
  217. // forceWind();
  218. }
  219.  
  220. function forceWind() {
  221. const windBox = $('.floatingIslandsAdventureBoard-trapLibrary-checkbox.wind');
  222. const useWind = localStorage.getItem('ws.fi.useWind');
  223. if (useWind == 'yes') {
  224. $(windBox).prop('checked',true)
  225. } else {
  226. $(windBox).prop('checked',false)
  227. }
  228. }
  229.  
  230. // $(document).on('click', '.floatingIslandsAdventureBoard-trapLibrary-text:not(.wind)', function() {
  231. // if ($('.floatingIslandsAdventureBoard-trapLibrary').hasClass('disabled')){
  232. // } else {
  233. // hg.views.FloatingIslandsAdventureBoardView.toggleUseSavedSetup()
  234. // setTimeout(forceWind, 500)
  235. // }
  236. // })
  237. // $(document).on('click', '.floatingIslandsAdventureBoard-trapLibrary-text.wind', function() {
  238. // const windBox = $('.floatingIslandsAdventureBoard-trapLibrary-checkbox.wind');
  239. // const useWind = localStorage.getItem('ws.fi.useWind');
  240. // if ($('.floatingIslandsAdventureBoard-trapLibrary').hasClass('disabled')){
  241. // } else {
  242. // if (useWind == 'yes') {
  243. // $(windBox).prop('checked',false)
  244. // localStorage.setItem('ws.fi.useWind', 'no')
  245. // } else {
  246. // $(windBox).prop('checked',true)
  247. // localStorage.setItem('ws.fi.useWind', 'yes')
  248. // }
  249. // }
  250. // })
  251.  
  252. function drawParagons() {
  253. const overlayCont = $('.floatingIslandsAdventureBoard-container');
  254. if (overlayCont.length == 1) {
  255. const allParagons = $('.floatingIslandsHUD-powerType:not(.fipcmask)');
  256. $(allParagons).each(function(e){
  257. const thisParagon = $(this);
  258. hg.utils.MouseUtil.getMouse(thisParagon.context.classList[1]+'_paragon', function(resp,) {
  259. setTimeout(function(){thisParagon.text(resp.num_catches); }, (10-e)*35);
  260. })
  261. })
  262. }
  263. $('.floatingIslandsHUD-powerType').css({
  264. 'font-size': '14x',
  265. 'font-weight': 'bold',
  266. 'color': 'blue',
  267. });
  268. }
  269.  
  270.