World’s most persistent bouncing

I used the same algorithm for an earlier part of the code, used a basic de-bouncer on the functions, and it worked, like so:

    var lastClick = 0; 
var delay = 20;
function l_mage_menu(){ 
    if (lastClick >= (Date.now() - delay))
    return;
    lastClick = Date.now()

But for this it refuses to work and everything is running 3 times, whether it’s the alert window or the function being called. Cannot for the life of me figure out why.

document.addEventListener("DOMContentLoaded", (function(event) { 
    var buttons = document.querySelectorAll('.btn');//this acts like an array
        if (buttons){ 
            buttons.forEach(function getIndex(curVal2, LIndex2){ //current value and index in the list
                curVal2.addEventListener('click', function() {
                curVal2.classList.toggle("active2");
                buttons.forEach(function(x, sL2){ 
                    if(LIndex2 !== sL2) { //if list index is NOT equal to the selected list element, aka one has already been picked
                        x.classList.remove('active2');
                        };
                        current_index2 = LIndex2;
                        switch(current_index2){ 
                            case(0): //basic attack.
                            console.log("test1") //from here, call the menus
                            break;

                            case(1): //this one is spells
                            //use listener to execute the matching spell
            
                            let btn1 = document.getElementById("btn_1");
                            btn1.addEventListener("click", function(){
                                if(btn1.innerHTML == "Supreme Altar"){
                                    let ultima = document.getElementById('ultima_charge');
                                    if (ultima.value != 100){
                                        window.alert("Ultima not charged!");
                                    }else{
                                        SupremeAltar()
                                    }
                                }
                                else if (btn1.innerHTML == "Radiant Supernova"){
                                    let ultima = document.getElementById('ultima_charge');
                                    if (ultima.value != 100){
                                        window.alert("Ultima not charged!"); 
                                    }else{
                                        RadiantSupernova()
                                    }
                                }else if (btn1.innerHTML == "Thousand Men"){
                                    let ultima = document.getElementById('ultima_charge');
                                    if (ultima.value != 100){
                                        window.alert("Ultima not charged!");
                                    }else{
                                        ThousandMen()
                                    };

                                };


                            })
            
                        };
                 });

             });
    
        
        });
    };
}));