Nie rozumiesz. 1*room_speed to jest 1 sekunda. Bez względu, czy room speed ma 10, 30, 300, czy 1000. Bo room_speed oznacza ile razy na sekundę wykona się step, a więc także ile razy odejmie się alarm. A to co ty napisałeś to jest po prostu alarm[0] = 30;, czyli 1/10 sekundy w Twoim przypadku.
p.s: mi się podoba, bo to z mojej ulubionej gry :)