Adjust Density and Color of the Fog in shell shockers!
// ==UserScript== // @name Fog Mod for Shell Shockers // @version 0.2 // @author A3+++ // @description Adjust Density and Color of the Fog in shell shockers! // @match *://shellshock.io/* // @run-at document-start // @grant unsafeWindow // @namespace https://greasyfork.org/users/815159 // ==/UserScript== (function () { function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16) / 255, g: parseInt(result[2], 16) / 255, b: parseInt(result[3], 16) / 255 } : null; } const savedData = [0.01, "#FFFFFF", {}, null, null, null]; unsafeWindow.adjustObj = function (e) { savedData[2] = e; savedData[0] = savedData[2].fogDensity; savedData[1] = savedData[2].fogColor; savedData[3].innerText = savedData[0]; savedData[4].value = savedData[0]; savedData[5].value = savedData[1].toHexString(); } unsafeWindow.reset = function () { savedData[2].fogDensity = savedData[0]; savedData[3].innerText = savedData[2].fogDensity; savedData[4].value = savedData[2].fogDensity; savedData[2].fogColor = savedData[1]; savedData[5].value = savedData[1].toHexString(); } unsafeWindow.XMLHttpRequest = class extends unsafeWindow.XMLHttpRequest { constructor() { super(...arguments); } open() { if (arguments[1] && arguments[1].includes("js/shellshock.js")) { this.scriptMatch = true; } super.open(...arguments); } get response() { if (this.scriptMatch) { let responseText = super.response; let match = responseText.match(/([A-z][A-z])\.fogDensity=.01\);/); if (match) responseText = responseText.replace(match[0], match[0] + `window.adjustObj(${match[1]});`); return responseText; } return super.response; } }; let html = [`<div class="slidecontainer"><p>Fog Density: <span id="fogDisplay"></span></p><input type="range" min="0" max="1" step="0.0001" value="0.001" class="slider" id="fogSlider"></p></div>`, `<div><p>Fog Color: <input type="color" value="#0000ff" id="colorPicker"></div>`, `<div class="btn-container"><button id='resetBtn' onclick='window.reset()' class="ss_button btn_small btn_pink bevel_yolk"><center>Reset</center></button></div>` ].join(); let interval = setInterval(function () { let pauseButtons = document.getElementById("pauseButtons"); if (pauseButtons) { clearInterval(interval); let fogDiv = document.createElement("div"); fogDiv.innerHTML = '<br>' + html; pauseButtons.appendChild(fogDiv); savedData[3] = document.getElementById("fogDisplay"); savedData[4] = document.getElementById("fogSlider"); savedData[5] = document.getElementById("colorPicker"); savedData[3].innerText = savedData[0]; savedData[4].addEventListener("input", function () { let newFog = parseFloat(this.value); savedData[3].innerText = newFog; savedData[2].fogDensity = newFog; }); savedData[5].addEventListener("input", function () { savedData[2].fogColor = hexToRgb(this.value); }); } }, 1000); }())