/* Here is my do_level. I never could find one to do just like I wanted so I put this one togetehr * I know I don't have it in snipet format but there is not much to it. I just gave you what my files * say on it. I am sure you can figure it out. * No need to email me to tell me if you like it or not. No one ever does * jmikehavey@yahoo.com */ ********** UPDATE.C ***************** void gain_exp( CHAR_DATA *ch, int gain ) { char buf[MAX_STRING_LENGTH]; if ( IS_NPC(ch) || ch->level >= LEVEL_HERO ) return; ch->exp = UMAX( exp_per_level(ch,ch->pcdata->points), ch->exp + gain ); if ( ch->level < LEVEL_HERO && ch->exp >= exp_per_level(ch,ch->pcdata->points) * (ch->level+1) ) { sprintf(buf, "You qualify for level %d.\n\r",ch->level + 1); send_to_char(buf, ch); } } ********************** FIGHT.C *********************** xp = xp_compute( gch, victim, group_levels ); if ( ch->exp >= exp_per_level(ch,ch->pcdata->points) * (ch->level+1) ) { xp = 0; gain_exp (gch, xp); } else if (doublexp) { xp = xp * 2; sprintf (buf, "You receive {G%d{x (double)experience points.\n\r", xp); send_to_char (buf, gch); gain_exp (gch, xp); } else { xp = xp; sprintf( buf, "You receive %d experience points.\n\r", xp ); send_to_char( buf, gch ); gain_exp( gch, xp ); } ********************* act_comm.c *********************** /* Level */ void do_level( CHAR_DATA *ch, char *argument ) { char buf[MAX_STRING_LENGTH]; if ( ch->level < LEVEL_HERO && ch->exp >= exp_per_level(ch,ch->pcdata->points) * (ch->level+1) ) { send_to_char( "You raise a level!! ", ch ); ch->level += 1; sprintf(buf,"%s gained level %d",ch->name,ch->level); log_string(buf); sprintf(buf,"$N has attained level %d!",ch->level); wiznet(buf,ch,NULL,WIZ_LEVELS,0,0); advance_level(ch,FALSE); save_char_obj(ch); } else { sprintf(buf, "You do no qualify for level %d.\n\r",ch->level + 1); send_to_char(buf, ch); } }