/*********************************** * Do NOT delete this file! * * -- Hannibal * ***********************************/ bool can_use_skpell( CHAR_DATA *ch, int sn ) { int iClass = 0; if ( IS_NPC( ch ) ) return TRUE; if ( ch->pcdata->learned[sn] > 0 ) return TRUE; return FALSE; } bool can_practice_skpell( CHAR_DATA *ch, int sn ) { int iClass = 0; if ( IS_NPC( ch ) ) return TRUE; if ( ch->pcdata->learned[sn] > 0 ) return TRUE; for ( iClass = 0; ch->class[iClass] != -1; iClass++ ) { if ( ch->level >= skill_table[sn].skill_level[ch->class[iClass]] ) return TRUE; } return FALSE; } bool has_spells( CHAR_DATA *ch ) { int iClass; if ( IS_NPC( ch ) ) return FALSE; for ( iClass = 0; ch->class[iClass] != -1; iClass++ ) if ( class_table[iClass].fMana ) return TRUE; return FALSE; } bool is_class( CHAR_DATA *ch, int class ) { int iClass; if ( IS_NPC( ch ) ) return FALSE; /* if( ch->class[0] == class ) return TRUE; */ for ( iClass = 0; ch->class[iClass] != -1; iClass++ ) { if ( ch->class[iClass] == class ) return TRUE; } return FALSE; } int prime_class( CHAR_DATA *ch ) { return ch->class[0]; } int number_classes( CHAR_DATA *ch ) { int iClass; if ( IS_NPC( ch ) ) return 0; for ( iClass = 0; ch->class[iClass] != -1; iClass++ ) ; return iClass; } char *class_long( CHAR_DATA *ch ) { static char buf [ 512 ]; int iClass; buf[0] = '\0'; if ( IS_NPC( ch ) ) return "Mobile"; for ( iClass = 0; ch->class[iClass] != -1 ; iClass++ ) { strcat( buf, "/" ); strcat( buf, class_table[ch->class[iClass]].who_long ); } return buf+1; } char *class_short( CHAR_DATA *ch ) { static char buf [ 512 ]; int iClass; buf[0] = '\0'; if ( IS_NPC( ch ) ) return "Mob"; for ( iClass = 0; ch->class[iClass] != -1 ; iClass++ ) { strcat( buf, "/" ); strcat( buf, class_table[ch->class[iClass]].who_name ); } return buf+1; } char *class_numbers( CHAR_DATA *ch, bool pSave ) { static char buf[ 512 ]; char buf2[ 10 ]; int iClass; buf[0] = '\0'; if ( IS_NPC( ch ) ) return "0"; for ( iClass = 0; ch->class[ iClass ] != -1; iClass++ ) { strcat( buf, " " ); sprintf( buf2, "%d", ch->class[iClass] ); strcat( buf, buf2 ); } if ( pSave ) strcat( buf, " -1" ); return buf+1; } bool gets_zapped( CHAR_DATA *ch, OBJ_DATA *obj ) { if ( !IS_NPC( ch ) ) if ( ( IS_OBJ_STAT( obj, ITEM_ANTI_EVIL ) && IS_EVIL ( ch ) ) || ( IS_OBJ_STAT( obj, ITEM_ANTI_GOOD ) && IS_GOOD ( ch ) ) || ( IS_OBJ_STAT( obj, ITEM_ANTI_NEUTRAL) && IS_NEUTRAL( ch ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_MAGE ) && is_class( ch, CLASS_MAGE ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_CLERIC ) && is_class( ch, CLASS_CLERIC ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_THIEF ) && is_class( ch, CLASS_THIEF ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_WARRIOR) && is_class( ch, CLASS_WARRIOR ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_PSI ) && is_class( ch, CLASS_PSIONICIST ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_DRUID ) && is_class( ch, CLASS_DRUID ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_RANGER ) && is_class( ch, CLASS_RANGER ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_PALADIN) && is_class( ch, CLASS_PALADIN ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_BARD ) && is_class( ch, CLASS_BARD ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_VAMP ) && is_class( ch, CLASS_VAMPIRE ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_NECRO ) && is_class( ch, CLASS_NECROMANCER ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_WWF ) && is_class( ch, CLASS_WEREWOLF ) ) || ( IS_ANTI_CLASS( obj, ITEM_ANTI_MONK ) && is_class( ch, CLASS_MONK ) ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_HUMAN ) && ch->race == RACE_HUMAN ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_ELF ) && ch->race == RACE_ELF ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_DWARF ) && ch->race == RACE_DWARF ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_PIXIE ) && ch->race == RACE_PIXIE ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_HALFLING ) && ch->race == RACE_HALFLING ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_DROW ) && ch->race == RACE_DROW ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_ELDER ) && ch->race == RACE_ELDER ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_OGRE ) && ch->race == RACE_OGRE ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_LIZARDMAN ) && ch->race == RACE_LIZARDMAN ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_DEMON ) && ch->race == RACE_DEMON ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_GHOUL ) && ch->race == RACE_GHOUL ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_ILLITHID ) && ch->race == RACE_ILLITHID ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_MINOTAUR ) && ch->race == RACE_MINOTAUR ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_SHADOW ) && ch->race == RACE_SHADOW ) || ( IS_ANTI_RACE( obj, ITEM_ANTI_TABAXI ) && ch->race == RACE_TABAXI ) ) return TRUE; return FALSE; }