BFDIA 5b Mod Menu

Mod menu to change level progress, deaths, win tokens, and additional features in BFDIA 5b

  1. // ==UserScript==
  2. // @name BFDIA 5b Mod Menu
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.5
  5. // @description Mod menu to change level progress, deaths, win tokens, and additional features in BFDIA 5b
  6. // @author BakedCake
  7. // @match https://coppersalts.github.io/HTML5b/
  8. // @license CC BY-ND 4.0 - See below
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. let menu = document.createElement("div");
  16. menu.style.position = "fixed";
  17. menu.style.top = "10px";
  18. menu.style.left = "10px";
  19. menu.style.padding = "10px";
  20. menu.style.border = "2px solid white";
  21. menu.style.fontFamily = "Arial, sans-serif";
  22. menu.style.zIndex = "9999";
  23. menu.style.borderRadius = "8px";
  24. menu.style.width = "300px";
  25. menu.style.cursor = "move";
  26. menu.style.userSelect = "none";
  27. menu.style.transition = "all 0.3s ease-in-out";
  28.  
  29. function updateTheme() {
  30. let hour = new Date().getHours();
  31. if (hour >= 7 && hour < 19) {
  32. menu.style.background = "rgba(255, 255, 255, 0.9)";
  33. menu.style.color = "black";
  34. menu.style.border = "2px solid black";
  35. } else {
  36. menu.style.background = "rgba(0, 0, 0, 0.8)";
  37. menu.style.color = "white";
  38. menu.style.border = "2px solid white";
  39. }
  40. }
  41.  
  42. updateTheme();
  43. setInterval(updateTheme, 60000);
  44.  
  45. let isDragging = false;
  46. let offsetX, offsetY;
  47.  
  48. menu.addEventListener("mousedown", (e) => {
  49. isDragging = true;
  50. offsetX = e.clientX - menu.offsetLeft;
  51. offsetY = e.clientY - menu.offsetTop;
  52. });
  53.  
  54. document.addEventListener("mousemove", (e) => {
  55. if (isDragging) {
  56. menu.style.left = `${e.clientX - offsetX}px`;
  57. menu.style.top = `${e.clientY - offsetY}px`;
  58. }
  59. });
  60.  
  61. document.addEventListener("mouseup", () => {
  62. isDragging = false;
  63. });
  64.  
  65. let closeButton = document.createElement("button");
  66. closeButton.innerText = "X";
  67. closeButton.style.position = "absolute";
  68. closeButton.style.top = "5px";
  69. closeButton.style.right = "5px";
  70. closeButton.style.cursor = "pointer";
  71. closeButton.addEventListener("click", () => {
  72. if (confirm("Are you sure you want to close the mod menu?")) {
  73. menu.remove();
  74. }
  75. });
  76. menu.appendChild(closeButton);
  77.  
  78. let title = document.createElement("h3");
  79. title.innerText = "BFDIA 5b Mod Menu";
  80. title.style.margin = "0 0 10px 0";
  81. title.style.textAlign = "center";
  82. menu.appendChild(title);
  83.  
  84. let inputLevel = document.createElement("input");
  85. inputLevel.type = "number";
  86. inputLevel.placeholder = "Enter level...";
  87. inputLevel.style.width = "100%";
  88. inputLevel.style.marginBottom = "5px";
  89. menu.appendChild(inputLevel);
  90.  
  91. let buttonLevel = document.createElement("button");
  92. buttonLevel.innerText = "Set Level";
  93. buttonLevel.style.width = "100%";
  94. buttonLevel.style.cursor = "pointer";
  95. menu.appendChild(buttonLevel);
  96.  
  97. let inputDeath = document.createElement("input");
  98. inputDeath.type = "number";
  99. inputDeath.placeholder = "Enter deaths...";
  100. inputDeath.style.width = "100%";
  101. inputDeath.style.marginBottom = "5px";
  102. menu.appendChild(inputDeath);
  103.  
  104. let buttonDeath = document.createElement("button");
  105. buttonDeath.innerText = "Set Deaths";
  106. buttonDeath.style.width = "100%";
  107. buttonDeath.style.cursor = "pointer";
  108. menu.appendChild(buttonDeath);
  109.  
  110. let levelDisplay = document.createElement("p");
  111. levelDisplay.style.marginTop = "10px";
  112. levelDisplay.style.textAlign = "center";
  113. menu.appendChild(levelDisplay);
  114.  
  115. let unlockButton = document.createElement("button");
  116. unlockButton.innerText = "Unlock all levels";
  117. unlockButton.style.width = "100%";
  118. unlockButton.style.cursor = "pointer";
  119. unlockButton.style.marginTop = "5px";
  120. menu.appendChild(unlockButton);
  121.  
  122. let winTokenButton = document.createElement("button");
  123. winTokenButton.innerText = "Collect all Win Tokens";
  124. winTokenButton.style.width = "100%";
  125. winTokenButton.style.cursor = "pointer";
  126. winTokenButton.style.marginTop = "5px";
  127. menu.appendChild(winTokenButton);
  128.  
  129. let wipeDataButton = document.createElement("button");
  130. wipeDataButton.innerText = "Wipe Data";
  131. wipeDataButton.style.width = "100%";
  132. wipeDataButton.style.cursor = "pointer";
  133. wipeDataButton.style.marginTop = "5px";
  134. menu.appendChild(wipeDataButton);
  135.  
  136. function updateLevelDisplay() {
  137. let currentProgress = localStorage.getItem('levelProgress') || "0";
  138. let currentDeaths = localStorage.getItem('deathCount') || "0";
  139. levelDisplay.innerText = `Level Progress: ${currentProgress} | Deaths: ${currentDeaths}`;
  140. }
  141.  
  142. buttonLevel.addEventListener("click", function() {
  143. let newValue = inputLevel.value;
  144. if (newValue !== "") {
  145. localStorage.setItem('levelProgress', newValue);
  146. updateLevelDisplay();
  147. }
  148. });
  149.  
  150. buttonDeath.addEventListener("click", function() {
  151. let newValue = inputDeath.value;
  152. if (newValue !== "") {
  153. localStorage.setItem('deathCount', newValue);
  154. updateLevelDisplay();
  155. }
  156. });
  157.  
  158. unlockButton.addEventListener("click", function() {
  159. localStorage.setItem('levelProgress', "53");
  160. updateLevelDisplay();
  161. });
  162.  
  163. winTokenButton.addEventListener("click", function() {
  164. localStorage.setItem('gotCoin', 'true,'.repeat(53).slice(0, -1));
  165. });
  166.  
  167. wipeDataButton.addEventListener("click", function() {
  168. localStorage.clear();
  169. updateLevelDisplay();
  170. });
  171.  
  172. let credits = document.createElement("p");
  173. credits.innerHTML = "Thanks to <a href='https://www.youtube.com/@minechat638' target='_blank'>@minechat638</a> | <a href='https://www.youtube.com/@bakedcake02' target='_blank'>BakedCake</a>";
  174. credits.style.textAlign = "center";
  175. credits.style.marginTop = "10px";
  176. menu.appendChild(credits);
  177.  
  178. updateLevelDisplay();
  179. document.body.appendChild(menu);
  180. })();