javascript – if no detecta que tenga un valor a 9999

Ahora mismo estoy recreando una pelea de un famoso videojuego en la que , si el programa detecta que el jugador tiene 9999 de vida, los hechizos de recuperación no hacen efecto. Sin embargo, si tiene menos, le da +1% cada segundo durante X.

Aquí tengo el fragmento del código:

rec.addEventListener('click',()=>{
                
                let recu = setInterval(function(arma_hp, pj_hp, arma_vel, pj_vel, res){

                    if(pj_hp == 9999){
                        document.querySelector('.healed').innerHTML='MERMA';
                        setTimeout(function(){document.querySelector('.healed').innerHTML=""},50);
                    } 
                    else {
                        let san = parseInt(9999/1.50);
                        pj_hp = pj_hp+san;
                        document.querySelector('.healed').innerHTML=san;
                        setTimeout(function(){document.querySelector('.healed').innerHTML=""},50);

                            if(pj_hp > 9999){
                                pj_hp = 9999
                            }
                    }
                },100);
                let cls = setInterval(function(){clearInterval(recu); clearInterval(cls)},10000);


                document.querySelector('.au-content').innerHTML = '';
                setTimeout(function(){selectTurn(arma_hp, pj_hp, arma_vel, pj_vel, res)},3000);
            });

Lo primero que el primer if, no detecta bien si el pj está a 9999, ya que, en los dos primeros turnos, lo va a estar. Y le cura, a parte de no un 1%, casi un 60%. Ya me contaréis el por qué del asunto.

No se qué parte del código tengo mal y llevo ayer atascado con ello y yo juraría que está bien. Eso si, no funciona como yo quiero que funcione.

Respecto a la operación de let san, ahora mismo está en 9999/1.5, pero anteriormente la puse a 9999/1.99 y nada tampoco, ni 1% ni nada.

¿Qué tengo mal planteado?