C'est impossible que ce soit un problème de boucle, tu n'en as pas.
Par contre tu as plus de endif que de if, et tu clos un if avant le else, de plus c'est pas else mais elsif.
Begin MM_Monlitconfortable
If ( OnActivate == 1)
ShowRestMenu
endif
if ( GetPCSleep == 0 )
return
elseif( GetPCSleep == 1 )
MessageBox "Vous êtes désormais reposé."
Cast, "MM_repos" , "Player"
return
endif
End MM_Monlitconfortable
Ensuite niveau logique du if et des return :
Begin MM_Monlitconfortable
If ( OnActivate == 1)
ShowRestMenu
endif
if( GetPCSleep == 1 )
MessageBox "Vous êtes désormais reposé."
Cast, "MM_repos" , "Player"
endif
End MM_Monlitconfortable
Bon après, je ne suis pas un expert, j'ai juste regardé comment ça marchait pour pouvoir te répondre, soit 5-10 min.