I'm not quite sure I follow you, but if you switch the ego's view, it's possible his footprint (what is used to check which control colours he is on) will be different, and so he'll be on different colours. I don't think that would really end up mattering though.
What I do when I'm having trouble diagnosing onControl problems, is print out the control mask in the menu bar (since I don't want a Print dialog coming up every game cycle). I make a function called FormatStatus, which works like FormatPrint, but prints to the menubar instead. I have it in Controls.sc, but you can put it in the room where you're having trouble for the time being, that way you don't need to recompile everything.
(procedure public (FormatStatus textorstring textid params)
(var temps[50])
(if(<u textorstring 1000)
Format(@temps textorstring textid rest params)
)(else
Format(@temps rest textorstring)
)
DrawStatus(@temps)
)
Then in your doit method, have something like
FormatStatus("ego is on: %04x " (send gEgo:onControl()))
Then compare the value you see in the menubar with those in the 2nd link I provided above. That should tell you exactly which colours the ego is on. (assuming you know how to work with hexadecimal)
If you see
"ego is on: 0046"
then you know the ego is on
ctlBROWN ($0040)
ctlNAVY ($0002)
ctlGREEN ($0004)