using Smaugfuss
what do I need to change so it only shows what I HAVE learned, not what i CAN learn?
void do_practice( CHAR_DATA* ch, const char* )
{
CHAR_DATA *mob;
int sn;
if( IS_NPC( ch ) )
return;
for( mob = ch->in_room->first_person; mob; mob = mob->next_in_room )
if( IS_NPC( mob ) && xIS_SET( mob->act, ACT_PRACTICE ) )
break;
int col;
short lasttype, cnt;
bool is_ok;
col = cnt = 0;
lasttype = SKILL_SPELL;
set_pager_color( AT_MAGIC, ch );
for( sn = 0; sn < num_skills; ++sn )
{
const SKILLTYPE *skill;
int normalSn;
// the first num_sorted_skills are sorted by type, so we don't want
// to index into skill_table -- that is sorted alphabetically -- so
// we need to do the following dance to check if we are in the
// sorted section or the unsorted section.
if( sn < num_sorted_skills )
{
skill = skill_table_bytype[sn];
// we are looping over the skills sorted by type.
// So, we need to get the normal sn as well.
normalSn = skill_lookup( skill->name );
}
else
{
skill = skill_table[sn];
normalSn = sn;
}
if( !skill || !skill->name || skill->name[0] == '\0' )
continue;
if( strcmp( skill->name, "reserved" ) == 0 && ( IS_IMMORTAL( ch ) || !CAN_CAST( ch ) ) )
{
if( col % 3 != 0 )
send_to_pager( "\r\n", ch );
set_pager_color( AT_MAGIC, ch );
send_to_pager_color( " &R[&WSpells&R]&W----------------------------------------------------------------------&z\r\n",
ch );
col = 0;
}
if( skill->type != lasttype )
{
if( !cnt )
send_to_pager( " (none)\r\n", ch );
else if( col % 3 != 0 )
send_to_pager( "\r\n", ch );
set_pager_color( AT_MAGIC, ch );
pager_printf_color( ch,
" &R[&W%ss&R]&W----------------------------------------------------------------------&z\r\n",
skill_tname[skill->type] );
col = cnt = 0;
}
lasttype = skill->type;
if( !IS_IMMORTAL( ch )
&& ( skill->guild != CLASS_NONE && ( !IS_GUILDED( ch ) || ( ch->pcdata->clan->Class != skill->guild ) ) ) )
continue;
if( mob )
{
if( skill->skill_level[mob->Class] > mob->level && skill->race_level[mob->race] > mob->level )
continue;
}
else
{
is_ok = FALSE;
if( ch->level >= skill->skill_level[ch->Class] )
is_ok = TRUE;
if( ch->level >= skill->race_level[ch->race] )
is_ok = TRUE;
if( !is_ok )
continue;
}
if( ch->pcdata->learned[sn] <= 0 && SPELL_FLAG( skill, SF_SECRETSKILL ) )
continue;
++cnt;
set_pager_color( AT_MAGIC, ch );
pager_printf( ch, "%22.20s", skill->name );
if( ch->pcdata->learned[normalSn] > 99 )
send_to_char( " &W[&GX&W]&z", ch);
else
if( ch->pcdata->learned[normalSn] < 99 )
send_to_char( " &W[ ]&z", ch);
if( ++col % 3 == 0 )
send_to_pager( "\r\n", ch );
}
if( col % 3 != 0 )
send_to_pager( "\r\n", ch );
what do I need to change so it only shows what I HAVE learned, not what i CAN learn?