From: takeda@mathlab.sunysb.edu Snippets of a Immortal commanded called avator which let an immortal to level down to a certain level by type level blah you can use your character to test stuff and also your character can also die :) i am also commenting this so you newbies coders can understand it and can help learn how to code faster :) got lazy on the commenting at the end...wonder if i teacher is on this list if so i'm dead :p. /* Written by takeda (takeda@mathlab.sunysb.edu) */ void do_avator( CHAR_DATA *ch, char *argument ) /* Procedure Avator */ { /* Declaration */ char buf[MAX_STRING_LENGTH]; /* buf */ char arg1[MAX_INPUT_LENGTH]; /* arg1 */ OBJ_DATA *obj_next; /* obj data which is a pointer */ OBJ_DATA *obj; /* obj */ int level; /* level */ int iLevel; /* ilevel */ argument = one_argument( argument, arg1 ); /* Check statements */ if ( arg1[0] == '\0' || !is_number( arg1 ) ) { send_to_char( "Syntax: avator .\n\r", ch ); return; } if ( IS_NPC(ch) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( ( level = atoi( arg1 ) ) < 1 || level > MAX_LEVEL ) { sprintf(buf, "Level must be 1 to %d.\n\r", MAX_LEVEL ); send_to_char( buf, ch ); return; } if ( level > get_trust( ch ) ) { send_to_char( "Limited to your trust level.\n\r", ch ); sprintf(buf, "Your Trust is %d.\n\r",ch->trust); send_to_char(buf,ch); return; } /* Your trust stays so you will have all immortal command */ /* SO their trust stays there */ if(ch->trust == 0) { ch->trust = ch->level; } /* Level gains*/ if ( level <= ch->level ) { int temp_prac; send_to_char( "Lowering a player's level!\n\r", ch ); send_to_char( "**** OOOOHHHHHHHHHH NNNNOOOO ****\n\r",ch ); temp_prac = ch->practice; ch->level = 1; ch->exp = exp_per_level(ch,ch->pcdata->points); ch->max_hit = 20; ch->max_mana = 100; ch->max_move = 100; ch->practice = 0; ch->hit = ch->max_hit; ch->mana = ch->max_mana; ch->move = ch->max_move; advance_level( ch, TRUE ); ch->practice = temp_prac; } else { send_to_char( "Raising a player's level!\n\r", ch ); send_to_char( "**** OOOOHHHHHHHHHH YYYYEEEESSS ****\n\r", ch); } for ( iLevel = ch->level ; iLevel < level; iLevel++ ) { ch->level += 1; advance_level( ch,TRUE); } sprintf(buf,"You are now level %d.\n\r",ch->level); send_to_char(buf,ch); ch->exp = exp_per_level(ch,ch->pcdata->points) * UMAX( 1, ch->level ); /* Forces the person to remove all the eq.... so level restriction still apply */ if(ch->level < 103) { for (obj = ch->carrying; obj; obj = obj_next) } obj_next = obj->next_content; if (obj->wear_loc != WEAR_NONE && can_see_obj (ch, obj)) remove_obj (ch, obj->wear_loc, TRUE); } } save_char_obj(ch); /* save character */ return; }