I am agreeing with Phil on this one. I would bet money that your Ego isn't actually making it to that spot. I just tossed your changeState into a game to see what happened and it appeared to work fine. I had to change a couple of things because my current project is in sci1.1 though, so I am not positive.
I don't know about this line "(self:setScript(egoEnterScript))" in case 1, for now a "= seconds 1" would probably fit your needs just fine. Also, the "= gProgramControl TRUE" Try putting that in case 0, instead of outside the switch. But I don't think that is preventing it from hitting case 1, just something that I noticed.
If you want ego to ignore white lines to make sure he isn't getting hung up on one, in case 0 change the send gEgo statement to this...
(send gEgo:ignoreControl(ctlWHITE)setMotion(MoveTo 186 130 egoEnterScript))
I am assuming that the pPodLid is where ego is crawling towards, here is what you could do to make sure ego isn't getting hung up on that. In case 0, add in a quick call right underneath the ego line above, this...
(pPodLid:ignoreActors())
If there are any other views in the way, you will want to do the same for them too. If there are any other control lines that might be blocking ego, for instance yellow if you are using one of the door scripts you might want to ignore them too.
If you need to undo these changes, I believe it's observeControl(ctlWHITE) and ignoreActors(FALSE) and don't worry, I use the Studio syntax too lol