Line 960 in world/client.cpp:
	Code:
	        // Racial Languages
        SetRacialLanguages( &pp ); // bUsh
        SetRaceStartingSkills( &pp ); // bUsh
        SetClassStartingSkills( &pp ); // bUsh
        pp.skills[SENSE_HEADING + 1] = 200;
 At least on my setup using the latest release (871/2006-10-22), this sets Singing to 200 rather than sense heading.
Changed it to:
	Code:
	        pp.skills[SENSE_HEADING] = 200;
 and this sets sense heading correctly for the newly created character.
Once that is working as it should, the following "optimization" to zone/client.cpp seems appropriate:
Line 1663 in zone/client.cpp:
	Code:
	bool Client::CheckIncreaseSkill(int skillid, int chancemodi) {
        if (IsAIControlled()) // no skillups while chamred =p
                return false;
        if (skillid > HIGHEST_SKILL)
                return false;
        if (skillid == SENSE_HEADING)
                return false;
 Since sense heading is maxed anyway, we don't need to do a skill gain check on it.
Cheers,
-Chris