is there any way to get this list to ONLY show SPELLS. (not skills, not languages, not anything else.. just SPELLS)
This is from SmaugFUSS 1.9
This is from SmaugFUSS 1.9
void do_practice( CHAR_DATA* ch, const char* argument)
{
CHAR_DATA *mob;
char buf[MAX_STRING_LENGTH];
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;
if( argument[0] == '\0' )
{
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( " ----------------------------------[&CSpells&B]----------------------------------\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,
" ----------------------------------&C%ss&B----------------------------------\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, "%20.20s", skill->name );
if( ch->pcdata->learned[normalSn] > 0 )
set_pager_color( AT_SCORE, ch );
pager_printf( ch, " %3d%% ", ch->pcdata->learned[normalSn] );
if( ++col % 3 == 0 )
send_to_pager( "\r\n", ch );
}
if( col % 3 != 0 )
send_to_pager( "\r\n", ch );
set_pager_color( AT_MAGIC, ch );
pager_printf( ch, "You have %d practice sessions left.\r\n", ch->practice );
}
}