In der Interpreter#update Methode wird pro frame eine Schleife ausgeführt die zuerst einmal prüft ob das Event auf irgendetwas wartet, falls nicht wird das nächste Kommando ausgeführt und anschließend geschaut ob das Event dabei abgebrochen wurde.
Die Schleife wird dann so lange wiederholt bis irgendeine dieser Warte/Abbruch Bedinung erfüllt wurde.

Der Code der sich mit dem Wait befasst sieht so aus:
Code:
      # If waiting
      if @wait_count > 0
        # Decrease wait count
        @wait_count -= 1
        return
      end
Und findet sich ab Zeile 167. Auch gut zu wissen ist, dass die Wartezeiten die du im Editor eingibst eigentlich *2 genommen werden, wenn du Wartezeiten dierekt in ruby implementierst musst du berücksichtigen, dass ein Frame in Wirklichkeit 1/40 Sekunde entspricht und nicht 1/20 wie im Editor.

Wartezeiten an für sich lassen sich einfach einbauen, die Methode Graphics.update welche man jeden Frame aufrufen sollte wartet nämlich gleichzeitig auf den nächsten Frame.
Sleep ist dabei keine gute Lösung, immerhin hälst du damit das gesamte geschehen an, was in einem Spiel sicherlich nicht gut kommt.