Here's what I have. If I remove the doit() method, I can reach state 6. Otherwise, I never get to state 6. I've checked and the timer bug is already fixed. You can try this code in a new template game:
(instance RoomScript of Script
(properties)
(method (doit)) // yeah, I know it's empty. Remove this & changeState will work properly
(method (changeState mainState)
= state mainState
(switch(state)
(case 0)
(case 5
= seconds 3
)
(case 6
Print("State 6!")
)
)
)
(method (handleEvent pEvent)
(super:handleEvent(pEvent))
/*****************************************
* Handle the possible said phrases here *
*****************************************/
(if(Said('look'))
(RoomScript:changeState(5))
)
)
)
So to test, run the game and type 'look'. After 3 seconds you should get the 'State 6!' message pop up, IF you've removed the doit(). Otherwise the print statement never displays.
EDIT: Nevermind, I found the issue! I needed this:
(method (doit)
(super:doit) // this is somewhat critical!
)