Mario ModMenu [N] to hide menu

Including: ESP, Fly Hack, Infinity Coins, Freeze Enemies, Kill Enemies, Invincibility, Custom Background Color Infinity Score, Infinity Time, Infinity Lives!

// ==UserScript==
// @name         Mario ModMenu [N] to hide menu
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Including: ESP, Fly Hack, Infinity Coins, Freeze Enemies, Kill Enemies, Invincibility, Custom Background Color  Infinity Score, Infinity Time, Infinity Lives!
// @author       You
// @license      MIT
// @match        https://gamaverse.com/c/f/g/super-mario-bros/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=gamaverse.com
// @grant        none
// @run-at      document-idle
// ==/UserScript==

window.addEventListener('load', function() {

if(location.href=="https://gamaverse.com/c/f/g/super-mario-bros/") {

var ww = document.createElement('div')
ww.id="modWrap"
ww.innerHTML=`
<a id="title">GabiMod</a>
<div id="mods">
    <div id="checks">
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Player ESP</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Enemy ESP</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Tracers</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Distance</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Star</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Freeze Entities</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Fly Hack</a>
    </div>
    <div class="checkW">
        <input class="check" type="checkbox">
        <a class="checkDesc">Invincible</a>
    </div>
    </div>
    <br>
    <div id="values">
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set Coins">
        <input type="button" class="modBtn" value="Apply">
    </div>
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set Score">
        <input type="button" class="modBtn" value="Apply">
    </div>
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set Lives">
        <input type="button" class="modBtn" value="Apply">
    </div>
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set Gravity">
        <input type="button" class="modBtn" value="Apply">
    </div>
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set Time">
        <input type="button" class="modBtn" value="Apply">
    </div>
    <div class="mod">
        <input type="text" class="modInput" placeholder="Set BG Color">
        <input type="button" class="modBtn" value="Apply">
        </div>
    </div>
    <div id="buttonMods">
    <button class="buttonMod">Turn Big</button>
    <button class="buttonMod">Shoot Flames</button>
    <button class="buttonMod">Kill Nearby Enemies</button>
    <button class="buttonMod">Remove Bushes</button>
    <button class="buttonMod">Remove Clouds</button>
    <button class="buttonMod">Remove Hills</button>
    <button class="buttonMod">Remove Pipes</button>
    <button class="buttonMod">Remove Bricks</button>
    <button class="buttonMod">Remove Mystery Blocks</button>
    <button class="buttonMod">Remove Stones</button>
    </div>
</div>

<style>
    ::-webkit-scrollbar {
        width: 0.8vw;
    }

    ::-webkit-scrollbar-thumb {
        background: rgb(151, 151, 151);
        border-radius: 10px;
    }

    ::-webkit-scrollbar-thumb:hover {
        background: #c7c7c7;
    }

    #title {
        position: relative;
        display: inline-block;
        height: 0;
        top: 1%;
        font-size: 10pt;
        color: c6c6c6;
    }

    #modWrap {
        z-index: 3232;
        position: absolute;
        font-family: "Lucida Console", "Courier New", monospace;
        border: 2px #505050 solid;
        border-radius: 0.5vw;
        background: black;
        user-select: none;
        opacity: 0.95;
        height: 20vw;
        width: 17vw;
    }


    #mods {
        position: relative;
        overflow-y: scroll;
        overflow-x: hidden;
        height: 79%;
        top: 10%;

    }

    #checks {
        text-align: left;
        position: relative;
        top: 2%;
        left: 5%;
    }

    .checkW {
        margin-top: 2%;
    }

    .check {
        outline: #acacac 1px solid;
        vertical-align: middle;
        appearance: none;
        border-radius: 30%;
        height: 1.3vw;
        width: 1.3vw;
        top: 30%;
    }

    .check:checked {
        background-color: #acacac;
    }

    .checkDesc {
        color: white;
        font-size: 1.2vw;
    }


    #values {
        position: relative;
    }

    .mod {
        position: relative;
        margin-bottom: 3%;
        margin-top: 3%;
    }


    .modInput {
        border-radius: 0.4vw 0 0 0.4vw;
        border: 2px #505050 solid;
        background: #b0b0b0;
        height: 18%;
        width: 60%;
    }

    .modInput,
    ::-webkit-input-placeholder {
        position: relative;
        color: #505050;
        left: 4%;
    }

    .modInput:focus {
        outline: none
    }

    .modBtn {
        border-radius: 0 0.4vw 0.4vw 0;
        border: 2px #505050 solid;
        background: #505050;
        transition: all 0.3s;
        position: relative;
        font-size: 10pt;
        color: #c0c0c0;
        height: 18%;
        width: 25%;
        left: -1%;
    }
    .modBtn:hover {
        background: #707070;
    }


    #buttonMods {
        position: absolute;
        left: 3%;
        height: 100%;
    }
    .buttonMod {
        border: 2px #c0c0c0 solid;
        background: #505050;
        transition: all 0.3s;
        border-radius: 0.4vw;
        margin-bottom: 2%;
        margin-top: 2%;
        color: #d0d0d0;
        height: 14%;
        width: 90%;

    }
    .buttonMod:hover {
        background: #707070;
    }
</style>`
document.body.appendChild(ww)
var title = document.getElementById('title')
var gui = document.getElementById('modWrap')

window.onload = addListeners();


function addListeners(){
    title.addEventListener('mousedown', mouseDown, false);
    window.addEventListener('mouseup', mouseUp, false);
}
function mouseUp() {
    window.removeEventListener('mousemove', divMove, true);
    document.body.style.userSelect="all"
}

function mouseDown(e){
    document.body.style.userSelect="none"
    window.addEventListener('mousemove', divMove, true);
}

function divMove(e) {
    gui.style.left=e.clientX-110+"px"
    gui.style.top=e.clientY-10+"px"
}





var pEsp = false;
var eEsp = false;
var tracer = false;
var eDis = false;
var invi = false;
var canvas = document.querySelector("body > canvas")



drawThingOnCanvas = (function() {
    var cached_function = drawThingOnCanvas;
    return function() {
        var result = cached_function.apply(this, arguments); // use .apply() to call it
        updateDrawings() // <- add this function to update function
        return result;
    };
})()

function updateDrawings() {
    for(var i=0;i<characters.length;i++) {
        if(characters[i].type=="mario" && pEsp==true) {
            context.beginPath()
            context.strokeStyle="#00ff00"
            context.strokeRect(
                characters[i].left,
                characters[i].top,
                characters[i].width*4,
                characters[i].height*4
            )
            context.stroke()
        }
        if(characters[i].collide.name=='collideEnemy' || characters[i].collide.name=='nc') {
            var dx = mario.left-characters[i].left
            var dy = mario.top-characters[i].top
            var distance = Math.round(Math.sqrt(dx*dx+dy*dy))
            if(abs(distance)<canvas.width-mario.left-50) {


                if(characters[i].type!="mario" && eEsp==true) {
                    context.beginPath()
                    context.strokeStyle="#ff0000"
                    context.strokeRect(
                        characters[i].left,
                        characters[i].top,
                        characters[i].width*4,
                        characters[i].height*4
                    )
                    context.stroke()
                }

                if(characters[i].type!="mario" && tracer==true) {
                    console.log(characters[i].type)
                    context.beginPath()
                    context.moveTo(mario.left+15,mario.top+10)
                    context.lineTo(characters[i].left+13,characters[i].top+10)
                    context.strokeStyle="#00ff00"
                    context.stroke()
                }
                if(characters[i].type!="mario" && eDis==true) {
                    context.fillStyle = "blue";
                    context.font = "bold 10px Arial";
                    context.textAlign = 'center';
                    context.textBaseline = 'middle';
                    context.rotate(40+"deg")
                    context.fillText(distance, ((characters[i].left+mario.left)/2), ((mario.top+characters[i].top)/2));
                }
            }
        }
    }
}
var flyUpT
var flyUpF
var flyE = 0

document.addEventListener('keydown', (e) => {
    if(flyE==1) {
        if (e.key=="ArrowUp" || e.key==" " || e.key=="w") {
            keydown(32)
            mario.gravity=-1
            mario.yvel=0;
        }
        if(e.key=="ArrowDown" || e.key=="s") {
            keydown(32)
            mario.gravity=1
            mario.yvel=0;
        }
    }
})
document.addEventListener('keyup', (e) => {
    if(flyE==1) {
        if (e.key=="ArrowUp" || e.key==" " || e.key=="w") {
            keyup(32)
            mario.gravity=0.00000001
            mario.yvel=0;
        }
        if(e.key=="ArrowDown" || e.key=="s") {
            keyup(32)
            mario.gravity=0.000000001
            mario.yvel=0;
        }
    }
})



var check = document.getElementsByClassName("check")
var modBtn = document.getElementsByClassName("modBtn")
var modInput = document.getElementsByClassName("modInput")
var modInput = document.getElementsByClassName("modInput")
var buttonMod = document.getElementsByClassName("buttonMod")




check[0].addEventListener('click', (e) => {
    if(check[0].checked==true) {
        pEsp = true;
    }
    else {
        pEsp = false
    }
})
check[1].addEventListener('click', (e) => {
        if(check[1].checked==true) {
        eEsp = true;
    }
    else {
        eEsp = false
    }
})
check[2].addEventListener('click', (e) => {
    if(check[2].checked==true) {
        tracer = true;
    }
    else {
        tracer = false
    }
})
check[3].addEventListener('click', (e) => {
    if(check[3].checked==true) {
        eDis = true;
    }
    else {
        eDis = false
    }
})
check[4].addEventListener('click', (e) => {
    if(check[4].checked==true) {

        ++mario.star;
        play("Powerup.wav");
        playTheme("Starman", true);
        addEvent(marioRemoveStar, 549849343343, mario);
        switchClass(mario, "normal", "star");
        addSpriteCycle(mario, ["star1", "star2", "star3", "star4"], "star", 5);
    }
    else {

var me = mario
    mario.star=0;
    addEvent(marioRemoveStar, 0, mario);
    switchClass(mario, "star", "normal");
    clearAllCycles(mario, ["star1", "star2", "star3", "star4"], "star", 5);
    }
})
var freeze
check[5].addEventListener('click', (e) => {
    if(check[5].checked==true) {
        freeze = setInterval(function() {
            for(var i=0;i<characters.length;i++) {
                if(characters[i].type!="mario") {
                    if(characters[i].xvel<-1) {
                        characters[i].lastSpeed = characters[i].speed
                        characters[i].xvel=0
                    }
                    if(characters[i].xvel>-1) {
                        characters[i].lastSpeed = -characters[i].speed
                        characters[i].xvel=0
                    }
                }
            }
        },300)
    }
    else {
        clearInterval(freeze)
        for(var i=0;i<characters.length;i++) {
            if(characters[i].type!="mario") {
                characters[i].xvel=characters[i].lastSpeed
            }
        }
    }
})
check[6].addEventListener('click', (e) => {
     flyE ^= true

    if(flyE==0) {
        mario.gravity=0.48
    }
})
var invii
check[7].addEventListener('click', (e) => {
    if(check[7].checked==true) {
        invii = setInterval(function() {
            for(var i=0;i<characters.length;i++) {
                if(characters[i].collide.name=='collideEnemy') {
                    characters[i].collide = function nc() {}
                }
            }
        },500)
    }
    else {
        clearInterval(invii)
        for(var i=0;i<characters.length;i++) {
            if(characters[i].collide.name=='nc') {

                characters[i].collide = (function() {
                    var cf = collideEnemy
                    return function() {
                        var res = cf.apply(this,arguments)
                        return res
                    }
                })()
            }

        }
    }
})
modBtn[0].addEventListener('click', function() {
    data.coins.amount=parseInt(modInput[0].value)
    updateDataElement(data.coins)
})
modBtn[1].addEventListener('click', function() {
    data.score.amount=parseInt(modInput[1].value)
    updateDataElement(data.score)
})
modBtn[2].addEventListener('click', function() {
    data.lives.amount=parseInt(modInput[2].value)
    updateDataElement(data.lives)
})
modBtn[3].addEventListener('click', function() {
    mario.gravity=parseInt(modInput[3].value)/30
})
modBtn[4].addEventListener('click', function() {
    data.time.amount=parseInt(modInput[4].value)
    updateDataElement(data.time)
})
modBtn[5].addEventListener('click', function() {
    map.area.fillStyle=modInput[5].value
})
function remScenery(name) {
    for(var i=0;i<scenery.length;i++) {
        if(scenery[i].title.includes(name)) {
            fireExplodes(scenery[i])
        }
    }
}

buttonMod[0].addEventListener('click', function() {
    mario.shrooming = true;
    mario.power=2
    marioGetsBig(mario)
    storeMarioStats();
})
buttonMod[1].addEventListener('click', function() {
    mario.shrooming = true;
    mario.power=3
    marioGetsBig(mario)
    marioGetsFire(mario)
    storeMarioStats();
})
buttonMod[2].addEventListener('click', function() {
    for(var i=0;i<characters.length;i++) {
        if(characters[i].type=="goomba" || characters[i].type=="koopa") {
            fireExplodes(characters[i])
        }
    }
})
buttonMod[3].addEventListener('click', function() {
    remScenery("Bush")
})
buttonMod[4].addEventListener('click', function() {
    remScenery("Cloud")
})
buttonMod[5].addEventListener('click', function() {
    remScenery("Hill")
})
buttonMod[6].addEventListener('click', function() {
    for(var i=0;i<solids.length;i++) {
        if(solids[i].title=="Pipe") {
            fireExplodes(solids[i])
        }
    }
})
buttonMod[7].addEventListener('click', function() {
    for(var i=0;i<solids.length;i++) {
        if(solids[i].title=="Brick") {
            fireExplodes(solids[i])
        }
    }
})
buttonMod[8].addEventListener('click', function() {
    for(var i=0;i<solids.length;i++) {
        if(solids[i].title=="Block") {
            fireExplodes(solids[i])
        }
    }
})
buttonMod[9].addEventListener('click', function() {
    for(var i=0;i<solids.length;i++) {
        if(solids[i].title=="Stone") {
            fireExplodes(solids[i])
        }
    }
})

var hideMenu = 0;

document.addEventListener('keydown', (e) => {
    if(e.key=="n") {
        if(hideMenu==0) {
            document.getElementById('modWrap').style.display="none"
        }
        if(hideMenu==1) {
            document.getElementById('modWrap').style.display=""
        }
        hideMenu ^= true;

    }
})

}
}, false);