Didn't expect to find another one, but here's another do_setrace bug, though it involves more than a missing !.
The problem is, if you try to "setrace whatever language common" then it tells you players cannot speak common. What's actually happening is there is a check for "value &= VALID_LANGS" and the value for "common" is 0, as enums start at 0. 0 & X = 0, so setrace could never toggle common language.
The codebase is set up in a way that makes it easy to fix.
mudcfg.h line 435
LANG_COMMON, LANG_ELVEN, LANG_DWARVEN, LANG_PIXIE,
change to
LANG_COMMON=1, LANG_ELVEN, LANG_DWARVEN, LANG_PIXIE,
Now all of the languages are bumped one value higher. Next:
build.cpp line 301
"common", "elvish", "dwarven", "pixie", "ogre",
These are in an array, so they still start at 0. Inserting a dummy language for 0:
"gibberish", "common", "elvish", "dwarven", "pixie", "ogre",
Means now common = 1 = common, and so on.
Logically, this is all that needs to happen because race files store them in string form so nothing will visibly change from inside the MUD.
However I wanted to save this one loop iteration worth of process time because I am crazy:
build.cpp line 830
for( size_t x = 0; x < ( sizeof( lang_names ) / sizeof( lang_names[0] ) ); ++x )
to
for( size_t x = 1; x < ( sizeof( lang_names ) / sizeof( lang_names[0] ) ); ++x )
So now it won't waste its time comparing against "gibberish" because it'll never come up.
And yes, I could have just opened the race files and edited "common" in or out of any race, but... I don't know, I'm crazy. I haven't even checked how/if languages operate. BUT STILL.
Anyway thanks again.