Hello, I use to use this site a lot, now I barely visit here. I think its approprate for me to give something back for all i used. I used this on circle30bpl17, i've also added this on circle-3.1 (just need to change the send_to_chars) Files needed: act.informative.c, act.wizard.c, class.c, interpreter.c, structs.h, utils.h IN act.informative.c In ACMD(do_who) find: } else { num_can_see++; sprintf(buf, "%s|8|6[|2%2d %s|6]|0 %s %s|0", (GET_LEVEL(tch) >= LVL_IMMORT ? CCNRM(ch, C_SPR) : ""), GET_LEVEL(tch), CLASS_ABBR(tch), FULLNAME(tch) ? FULLNAME(tch) : GET_NAME(tch), GET_TITLE(tch)); and add: if (GET_REMORT_LEVEL(tch) == 1) strcat(buf, " (teir)"); if (GET_REMORT_LEVEL(tch) == 2) strcat(buf, " (hero)"); if (GET_REMORT_LEVEL(tch) == 3) strcat(buf, " (avatar)"); if (GET_REMORT_LEVEL(tch) == 4) strcat(buf, " (high mortal)"); In act.wizard.c FIND : ACMD(do_set); BELOW ADD: ACMD(do_remort); AT THE VERY BOTTOM add: ACMD(do_remort) { char arg[MAX_STRING_LENGTH]; if(GET_LEVEL(ch) < LVL_IMMORT || GET_LEVEL(ch) > LVL_IMMORT){ send_to_char("You dont want to remort!", ch); return; } one_argument(argument, arg); if(GET_REMORT_LEVEL(ch) < 4) { switch(*arg) { case 'n': case 'N': send_to_char("\r\nYour not going to remort at this time.", ch); send_to_char("\r\nThe immortals have allowed you to stay at your level", ch); break; case 'y': case 'Y': send_to_char("\r\nCongrulations!", ch); send_to_char("\r\nYou have decided to remort!", ch); send_to_char("\r\nYou are now leaving you old body, to start a new!", ch); send_to_char("\r\nA new journey has begun for you!\r\n", ch); GET_LEVEL(ch) = 1; GET_REMORT_LEVEL(ch) = GET_REMORT_LEVEL(ch) + 1; ch->points.max_hit = 100; ch->points.max_mana = 100; ch->points.max_move = 100; ch->points.hit = 100; ch->points.mana = 100; ch->points.move = 100; ch->points.exp = 1; sprintf(buf, "%s has remorted to level 1.", GET_NAME(ch)); mudlog(buf, NRM, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE); break; default: send_to_char("\r\n(type: \"remort y\" if u DO OR \"remort n\" if you DON'T!", ch ); send_to_char("\r\nAre you sure you want to remort: ", ch); return; } } else { send_to_char("\r\nYou can't remort anymore!", ch); send_to_char("\r\nContact Matthew if you need help!", ch); } } /* some people forget the extra space needed here, so if you get an error just hit enter after this line */ END IN class.c FIND: /* Some initializations for characters, including initial skills */ void do_start(struct char_data *ch) { GET_LEVEL(ch) = 1; GET_EXP(ch) = 0; BELOW ADD: GET_REMORT_LEVEL(ch) = 0; IN interpreter.c FIND: ACMD(do_remove); BELOW ADD: ACMD(do_remort); farther down find: { "receive" , POS_STANDING, do_not_here , 1, 0 }, { "remove" , POS_RESTING , do_remove , 0, 0 }, BELOW ADD: { "remort" , POS_STANDING, do_remort , LVL_IMMORT, 0 }, IN struct.c FIND: struct player_special_data_saved { CHANGE ONE OF THE INT SPARES to int remort_level; In utils.h FIND: #define GET_TALK(ch, i) CHECK_PLAYER_SPECIAL((ch), ((ch)->player_specials->saved.talks[i])) BELOW ADD: #define GET_REMORT_LEVEL(ch) CHECK_PLAYER_SPECIAL((ch), ((ch)->player_specials->saved.remort_level))