Modo Invincible con control total de potencia y velocidad + menú moderno
// ==UserScript==
// @name Invincible Wobble Mode FINAL
// @namespace https://tu-namespace
// @version 5.0
// @description Modo Invincible con control total de potencia y velocidad + menú moderno
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// --- Estilos del menú y animación dinámica ---
const style = document.createElement("style");
style.textContent = `
#invincibleMenu {
position: fixed;
top: 10px;
left: 10px;
background: rgba(25,25,25,0.9);
padding: 14px;
border-radius: 12px;
color: white;
font-family: Arial, sans-serif;
font-size: 14px;
z-index: 999999;
width: 190px;
display: flex;
flex-direction: column;
gap: 10px;
box-shadow: 0 4px 12px rgba(0,0,0,0.45);
border: 1px solid rgba(255,255,255,0.15);
backdrop-filter: blur(6px);
}
#closeMenu {
position: absolute;
top: -8px;
right: -8px;
background: #ff4444;
color: white;
border: none;
width: 22px;
height: 22px;
border-radius: 50%;
cursor: pointer;
font-size: 13px;
font-weight: bold;
line-height: 22px;
text-align: center;
}
#invincibleBtn {
background: #ffcc00;
border: none;
padding: 7px 14px;
border-radius: 6px;
cursor: pointer;
font-weight: bold;
transition: 0.2s;
}
#invincibleBtn:hover {
background: #ffe066;
}
.sliderLabel {
font-size: 12px;
opacity: 0.8;
}
.slider {
width: 100%;
}
#credits {
font-size: 10px;
opacity: 0.7;
text-align: center;
}
.wobbleInvincible {
animation: wobbleInv var(--wobbleSpeed, 0.1s) infinite ease-in-out;
}
@keyframes wobbleInv {
0% { transform: rotate(0deg) scale(1); }
20% { transform: rotate(var(--wobblePower, 10deg)) scale(1.1); }
40% { transform: rotate(calc(var(--wobblePower, 10deg) * -1)) scale(1.1); }
60% { transform: rotate(calc(var(--wobblePower, 10deg) * 1.2)) scale(1.15); }
80% { transform: rotate(calc(var(--wobblePower, 10deg) * -1.2)) scale(1.15); }
100% { transform: rotate(0deg) scale(1); }
}
`;
document.head.appendChild(style);
// --- Crear menú ---
const menu = document.createElement("div");
menu.id = "invincibleMenu";
menu.innerHTML = `
<button id="closeMenu">X</button>
<button id="invincibleBtn">Invincible Mode</button>
<div class="sliderLabel">Potencia</div>
<input type="range" id="powerSlider" class="slider" min="1" max="10000" value="300">
<div class="sliderLabel">Velocidad</div>
<input type="range" id="speedSlider" class="slider" min="1" max="10000" value="100">
<div id="credits">hecho por marcos</div>
`;
document.body.appendChild(menu);
let active = false;
const powerSlider = document.getElementById("powerSlider");
const speedSlider = document.getElementById("speedSlider");
// --- Actualizar variables CSS dinámicas ---
function updateWobbleVars() {
const power = powerSlider.value / 10; // 1–10000 → 0.1–1000 grados
const speed = speedSlider.value / 1000; // 1–10000 → 0.001–10s
document.documentElement.style.setProperty("--wobblePower", power + "deg");
document.documentElement.style.setProperty("--wobbleSpeed", speed + "s");
}
powerSlider.oninput = updateWobbleVars;
speedSlider.oninput = updateWobbleVars;
updateWobbleVars();
// --- Botón cerrar ---
document.getElementById("closeMenu").onclick = () => {
menu.remove();
};
// --- Activar/desactivar efecto ---
document.getElementById("invincibleBtn").onclick = () => {
active = !active;
const imgs = document.querySelectorAll("img");
imgs.forEach(img => {
if (active) {
img.classList.add("wobbleInvincible");
} else {
img.classList.remove("wobbleInvincible");
}
});
document.getElementById("invincibleBtn").textContent =
active ? "Invincible Mode: ON" : "Invincible Mode";
};
})();