Okay so what (Graph grGET_COLOURS) (or rather GDetect) does is ask the video driver how many colors it has, so that playing on CGA or worse disables the item. At least that seems to be the idea but the CGA drivers don't seem to give the correct values, or the SetMenu call is doing it wrong because Larry 3's color-changing feature just keeps trucking.
I did some quick testing in a new game, and it reports 16 colors for EGA320 and MCGA320, -1 for CGA320C and CGA320BW so that implies it's the former, but the SetMenu call is also wrong it seems. What you really want to do is this: (if (!= (Graph grGET_COLOURS) 16)
(SetMenu MENU_COLOURS smMENU_ENABLE FALSE)
else
(SetMenu MENU_COLOURS smMENU_SAID '/color')
)
That's 112 instead of 32. The interpreter source doesn't check for 32 smMENU_NOSAID at all, but it does check 112 smMENU_ENABLE.
Personally I'd suggest just getting rid of the whole item. It's a Larry smell, like the SQ5 status bar and font in the SCI11 template.