Well, I checked that while ago. Couldn't really tell whats going on with it as there was no clear statement when integer value provided during a choice of difficulty modifies force hint value. I really cant find the actual source of where this fuction is declared to contribute its value to hint setting altough I am 100% sure it works that way as on knight and master levels this force hint is just gone.
Any relation to force hint is in:
extern cvar_t *g_spskill;
static void Svcmd_Difficulty_f(void)
{
if(gi.argc() == 1)
{
if(g_spskill->integer == 0)
{
gi.Printf( S_COLOR_GREEN "Current Difficulty: Padawan" S_COLOR_WHITE "\n" );
}
else if(g_spskill->integer == 1)
{
gi.Printf( S_COLOR_GREEN "Current Difficulty: Jedi" S_COLOR_WHITE "\n" );
}
else if(g_spskill->integer == 2)
{
int crosshairHint = gi.Cvar_VariableIntegerValue("cg_crosshairForceHint");
int handicap = gi.Cvar_VariableIntegerValue("handicap");
if(handicap == 100 && crosshairHint == 0)
{
gi.Printf( S_COLOR_GREEN "Current Difficulty: Jedi Knight" S_COLOR_WHITE "\n" );
}
else if(handicap == 50 && crosshairHint == 0)
{
gi.Printf( S_COLOR_GREEN "Current Difficulty: Jedi Master" S_COLOR_WHITE "\n" );
}
else
{
gi.Printf( S_COLOR_GREEN "Current Difficulty: Jedi Knight (Custom)" S_COLOR_WHITE "\n" );
gi.Printf( S_COLOR_GREEN "Crosshair Force Hint: %i" S_COLOR_WHITE "\n", crosshairHint != 0 ? 1 : 0 );
gi.Printf( S_COLOR_GREEN "Handicap: %i" S_COLOR_WHITE "\n", handicap );
}
}
else
{
gi.Printf( S_COLOR_RED "Invalid difficulty cvar set! g_spskill (%i) [0-2] is valid range only" S_COLOR_WHITE "\n", g_spskill->integer );
}
}
}
but then again its just to display text after setting up difficulty value trough console.
It's kind of weird since I was able to pin point other functions where g_spskill was used to manipulate player balance, LP, shield recharge, heal amount etc, however this one elude me
I also tried a method to set forcehint value as constant in cg_main.ccp but I guess it's still being overwritten during difficulty choice at new game menu.
I changed it from this
{ &cg_crosshairForceHint, "cg_crosshairForceHint", "1", CVAR_ARCHIVE|CVAR_SAVEGAME|CVAR_NORESTART },
to this
{ &cg_crosshairForceHint, "cg_crosshairForceHint", "1", 0 },
which I assume was correct when I looked into config of other cvars where first "value" is I guess default and then modifier where 0 says do not pull data from anywhere.
Altough I am unsure if I think correctly.