diff -ur Rom24/src/Makefile Rom24-Remort/src/Makefile
--- Rom24/src/Makefile	Wed Aug 23 14:52:38 1995
+++ Rom24-Remort/src/Makefile	Sun Sep  1 16:22:22 1996
@@ -7,7 +7,7 @@
 O_FILES = act_comm.o act_enter.o act_info.o act_move.o act_obj.o act_wiz.o \
           alias.o ban.o comm.o const.o db.o db2.o effects.o fight.o flags.o \
 	  handler.o healer.o interp.o note.o lookup.o magic.o magic2.o \
-	  music.o recycle.o save.o scan.o skills.o special.o tables.o \
+	  music.o recycle.o remort.o save.o scan.o skills.o special.o tables.o \
 	  update.o
 
 rom: $(O_FILES)
diff -ur Rom24/src/comm.c Rom24-Remort/src/comm.c
--- Rom24/src/comm.c	Thu Jul 18 06:43:36 1996
+++ Rom24-Remort/src/comm.c	Sun Sep  1 17:33:28 1996
@@ -1798,8 +1798,12 @@
 	{
 	    if (!race_table[race].pc_race)
 		break;
-	    write_to_buffer(d,race_table[race].name,0);
-	    write_to_buffer(d," ",1);
+	    if ( !race_table[race].remort_race ||
+	       (race_table[race].remort_race && IS_SET(ch->act,PLR_REMORT)))
+	    {
+		write_to_buffer(d,race_table[race].name,0);
+		write_to_buffer(d," ",1);
+	    }
 	}
 	write_to_buffer(d,"\n\r",0);
 	write_to_buffer(d,"What is your race (help for more information)? ",0);
@@ -1823,7 +1827,8 @@
 
 	race = race_lookup(argument);
 
-	if (race == 0 || !race_table[race].pc_race)
+	if (race == 0 || !race_table[race].pc_race ||
+	   ( race_table[race].remort_race && !IS_SET( ch->act, PLR_REMORT ) ) )
 	{
 	    write_to_buffer(d,"That is not a valid race.\n\r",0);
             write_to_buffer(d,"The following races are available:\n\r  ",0);
@@ -1831,8 +1836,12 @@
             {
             	if (!race_table[race].pc_race)
                     break;
-            	write_to_buffer(d,race_table[race].name,0);
-            	write_to_buffer(d," ",1);
+		if ( !race_table[race].remort_race ||
+		   (race_table[race].remort_race && IS_SET(ch->act,PLR_REMORT)))
+		{
+		    write_to_buffer(d,race_table[race].name,0);
+		    write_to_buffer(d," ",1);
+		}
             }
             write_to_buffer(d,"\n\r",0);
             write_to_buffer(d,
@@ -1884,9 +1893,13 @@
 	strcpy( buf, "Select a class [" );
 	for ( iClass = 0; iClass < MAX_CLASS; iClass++ )
 	{
-	    if ( iClass > 0 )
-		strcat( buf, " " );
-	    strcat( buf, class_table[iClass].name );
+	    if (!class_table[iClass].remort_class ||
+	       (class_table[iClass].remort_class && IS_SET(ch->act,PLR_REMORT)))
+	    {
+		if ( iClass > 0 )
+		    strcat( buf, " " );
+		strcat( buf, class_table[iClass].name );
+	    }
 	}
 	strcat( buf, "]: " );
 	write_to_buffer( d, buf, 0 );
@@ -1896,7 +1909,8 @@
     case CON_GET_NEW_CLASS:
 	iClass = class_lookup(argument);
 
-	if ( iClass == -1 )
+	if ( iClass == -1 ||
+	   ( class_table[iClass].remort_class && !IS_SET(ch->act,PLR_REMORT)))
 	{
 	    write_to_buffer( d,
 		"That's not a class.\n\rWhat IS your class? ", 0 );
@@ -2036,6 +2050,21 @@
 
         do_help(ch,"menu choice");
         break;
+
+    case CON_BEGIN_REMORT:
+	write_to_buffer( d, "Now beginning the remorting process.\n\r\n\r", 0 );
+	write_to_buffer( d, "The following races are available:\n\r  ", 0 );
+	for ( race = 1; race_table[race].name != NULL; race++ )
+	{
+	    if (!race_table[race].pc_race)
+		break;
+	    write_to_buffer(d,race_table[race].name,0);
+	    write_to_buffer(d," ",1);
+	}
+	write_to_buffer(d,"\n\r",0);
+	write_to_buffer(d,"What is your race (help for more information)? ",0);
+	d->connected = CON_GET_NEW_RACE;
+	break;
 
     case CON_READ_IMOTD:
 	write_to_buffer(d,"\n\r",2);
diff -ur Rom24/src/const.c Rom24-Remort/src/const.c
--- Rom24/src/const.c	Thu Jul 18 06:43:40 1996
+++ Rom24-Remort/src/const.c	Sun Sep  1 21:11:46 1996
@@ -169,7 +169,7 @@
 	name,		pc_race?,
 	act bits,	aff_by bits,	off bits,
 	imm,		res,		vuln,
-	form,		parts 
+	form,		parts,		remort_race?
     },
 */
     { "unique",		FALSE, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -178,63 +178,63 @@
 	"human",		TRUE, 
 	0,		0, 		0,
 	0, 		0,		0,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"elf",			TRUE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_CHARM,	VULN_IRON,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"dwarf",		TRUE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_POISON|RES_DISEASE, VULN_DROWNING,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"giant",		TRUE,
 	0,		0,		0,
 	0,		RES_FIRE|RES_COLD,	VULN_MENTAL|VULN_LIGHTNING,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"bat",			FALSE,
 	0,		AFF_FLYING|AFF_DARK_VISION,	OFF_DODGE|OFF_FAST,
 	0,		0,		VULN_LIGHT,
-	A|G|V,		A|C|D|E|F|H|J|K|P
+	A|G|V,		A|C|D|E|F|H|J|K|P,	FALSE
     },
 
     {
 	"bear",			FALSE,
 	0,		0,		OFF_CRUSH|OFF_DISARM|OFF_BERSERK,
 	0,		RES_BASH|RES_COLD,	0,
-	A|G|V,		A|B|C|D|E|F|H|J|K|U|V
+	A|G|V,		A|B|C|D|E|F|H|J|K|U|V,	FALSE
     },
 
     {
 	"cat",			FALSE,
 	0,		AFF_DARK_VISION,	OFF_FAST|OFF_DODGE,
 	0,		0,		0,
-	A|G|V,		A|C|D|E|F|H|J|K|Q|U|V
+	A|G|V,		A|C|D|E|F|H|J|K|Q|U|V,	FALSE
     },
 
     {
 	"centipede",		FALSE,
 	0,		AFF_DARK_VISION,	0,
 	0,		RES_PIERCE|RES_COLD,	VULN_BASH,
- 	A|B|G|O,		A|C|K	
+ 	A|B|G|O,		A|C|K,		FALSE
     },
 
     {
 	"dog",			FALSE,
 	0,		0,		OFF_FAST,
 	0,		0,		0,
-	A|G|V,		A|C|D|E|F|H|J|K|U|V
+	A|G|V,		A|C|D|E|F|H|J|K|U|V,	FALSE
     },
 
     {
@@ -243,56 +243,56 @@
 	IMM_COLD|IMM_POISON|IMM_HOLY|IMM_NEGATIVE|IMM_MENTAL|IMM_DISEASE
 	|IMM_DROWNING,	RES_BASH|RES_LIGHT,
 	VULN_SLASH|VULN_FIRE|VULN_ACID|VULN_LIGHTNING|VULN_ENERGY,
-	E|J|M|cc,	A|B|C|G|H|K
+	E|J|M|cc,	A|B|C|G|H|K,		FALSE
     },
 
     { 	"dragon", 		FALSE, 
 	0, 			AFF_INFRARED|AFF_FLYING,	0,
 	0,			RES_FIRE|RES_BASH|RES_CHARM, 
 	VULN_PIERCE|VULN_COLD,
-	A|H|Z,		A|C|D|E|F|G|H|I|J|K|P|Q|U|V|X
+	A|H|Z,		A|C|D|E|F|G|H|I|J|K|P|Q|U|V|X,	FALSE
     },
 
     {
 	"fido",			FALSE,
 	0,		0,		OFF_DODGE|ASSIST_RACE,
 	0,		0,			VULN_MAGIC,
-	A|B|G|V,	A|C|D|E|F|H|J|K|Q|V
+	A|B|G|V,	A|C|D|E|F|H|J|K|Q|V,	FALSE
     },		
    
     {
 	"fox",			FALSE,
 	0,		AFF_DARK_VISION,	OFF_FAST|OFF_DODGE,
 	0,		0,		0,
-	A|G|V,		A|C|D|E|F|H|J|K|Q|V
+	A|G|V,		A|C|D|E|F|H|J|K|Q|V,	FALSE
     },
 
     {
 	"goblin",		FALSE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_DISEASE,	VULN_MAGIC,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"hobgoblin",		FALSE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_DISEASE|RES_POISON,	0,
-	A|H|M|V,        A|B|C|D|E|F|G|H|I|J|K|Y
+	A|H|M|V,        A|B|C|D|E|F|G|H|I|J|K|Y, FALSE
     },
 
     {
 	"kobold",		FALSE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_POISON,	VULN_MAGIC,
-	A|B|H|M|V,	A|B|C|D|E|F|G|H|I|J|K|Q
+	A|B|H|M|V,	A|B|C|D|E|F|G|H|I|J|K|Q, FALSE
     },
 
     {
 	"lizard",		FALSE,
 	0,		0,		0,
 	0,		RES_POISON,	VULN_COLD,
-	A|G|X|cc,	A|C|D|E|F|H|K|Q|V
+	A|G|X|cc,	A|C|D|E|F|H|K|Q|V,	FALSE
     },
 
     {
@@ -300,49 +300,49 @@
 	0,		AFF_INFRARED,		ASSIST_RACE|ASSIST_ALIGN,
 	IMM_CHARM|IMM_DISEASE|IMM_MENTAL|IMM_HOLY|IMM_NEGATIVE,
 			RES_FIRE|RES_COLD|RES_ACID,	0,
-	H,		A|B|C|G|H|J|K
+	H,		A|B|C|G|H|J|K,		FALSE
     },
 
     {
 	"orc",			FALSE,
 	0,		AFF_INFRARED,	0,
 	0,		RES_DISEASE,	VULN_LIGHT,
-	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K
+	A|H|M|V,	A|B|C|D|E|F|G|H|I|J|K,	FALSE
     },
 
     {
 	"pig",			FALSE,
 	0,		0,		0,
 	0,		0,		0,
-	A|G|V,	 	A|C|D|E|F|H|J|K
+	A|G|V,	 	A|C|D|E|F|H|J|K,	FALSE
     },	
 
     {
 	"rabbit",		FALSE,
 	0,		0,		OFF_DODGE|OFF_FAST,
 	0,		0,		0,
-	A|G|V,		A|C|D|E|F|H|J|K
+	A|G|V,		A|C|D|E|F|H|J|K,	FALSE
     },
     
     {
 	"school monster",	FALSE,
 	ACT_NOALIGN,		0,		0,
 	IMM_CHARM|IMM_SUMMON,	0,		VULN_MAGIC,
-	A|M|V,		A|B|C|D|E|F|H|J|K|Q|U
+	A|M|V,		A|B|C|D|E|F|H|J|K|Q|U,	FALSE
     },	
 
     {
 	"snake",		FALSE,
 	0,		0,		0,
 	0,		RES_POISON,	VULN_COLD,
-	A|G|X|Y|cc,	A|D|E|F|K|L|Q|V|X
+	A|G|X|Y|cc,	A|D|E|F|K|L|Q|V|X,	FALSE
     },
  
     {
 	"song bird",		FALSE,
 	0,		AFF_FLYING,		OFF_FAST|OFF_DODGE,
 	0,		0,		0,
-	A|G|W,		A|C|D|E|F|H|K|P
+	A|G|W,		A|C|D|E|F|H|K|P,	FALSE
     },
 
     {
@@ -350,21 +350,21 @@
 	0,		AFF_REGENERATION|AFF_INFRARED|AFF_DETECT_HIDDEN,
 	OFF_BERSERK,
  	0,	RES_CHARM|RES_BASH,	VULN_FIRE|VULN_ACID,
-	A|B|H|M|V,		A|B|C|D|E|F|G|H|I|J|K|U|V
+	A|B|H|M|V,		A|B|C|D|E|F|G|H|I|J|K|U|V,	FALSE
     },
 
     {
 	"water fowl",		FALSE,
 	0,		AFF_SWIM|AFF_FLYING,	0,
 	0,		RES_DROWNING,		0,
-	A|G|W,		A|C|D|E|F|H|K|P
+	A|G|W,		A|C|D|E|F|H|K|P,	FALSE
     },		
   
     {
 	"wolf",			FALSE,
 	0,		AFF_DARK_VISION,	OFF_FAST|OFF_DODGE,
 	0,		0,		0,	
-	A|G|V,		A|C|D|E|F|J|K|Q|V
+	A|G|V,		A|C|D|E|F|J|K|Q|V,	FALSE
     },
 
     {
@@ -372,14 +372,14 @@
 	0,		AFF_FLYING|AFF_DETECT_INVIS|AFF_DETECT_HIDDEN,
 	OFF_BASH|OFF_FAST|OFF_DODGE,
 	IMM_POISON,	0,	VULN_LIGHT,
-	A|B|G|Z,		A|C|D|E|F|H|J|K|Q|V|X
+	A|B|G|Z,		A|C|D|E|F|H|J|K|Q|V|X,	FALSE
     },
 
     {
 	"unique",		FALSE,
 	0,		0,		0,
 	0,		0,		0,		
-	0,		0
+	0,		0,		FALSE
     },
 
 
@@ -436,25 +436,25 @@
     {
 	"mage", "Mag",  STAT_INT,  OBJ_VNUM_SCHOOL_DAGGER,
 	{ 3018, 9618 },  75,  20, 6,  6,  8, TRUE,
-	"mage basics", "mage default"
+	"mage basics", "mage default", FALSE
     },
 
     {
 	"cleric", "Cle",  STAT_WIS,  OBJ_VNUM_SCHOOL_MACE,
 	{ 3003, 9619 },  75,  20, 2,  7, 10, TRUE,
-	"cleric basics", "cleric default"
+	"cleric basics", "cleric default", FALSE
     },
 
     {
 	"thief", "Thi",  STAT_DEX,  OBJ_VNUM_SCHOOL_DAGGER,
 	{ 3028, 9639 },  75,  20,  -4,  8, 13, FALSE,
-	"thief basics", "thief default"
+	"thief basics", "thief default", FALSE
     },
 
     {
 	"warrior", "War",  STAT_STR,  OBJ_VNUM_SCHOOL_SWORD,
 	{ 3022, 9633 },  75,  20,  -10,  11, 15, FALSE,
-	"warrior basics", "warrior default"
+	"warrior basics", "warrior default", FALSE
     }
 };

diff -ur Rom24/src/interp.c Rom24-Remort/src/interp.c
--- Rom24/src/interp.c	Thu Jul 18 06:44:10 1996
+++ Rom24-Remort/src/interp.c	Sun Sep  1 16:46:46 1996
@@ -168,6 +168,8 @@
     { "outfit",		do_outfit,	POS_RESTING,	 0,  LOG_NORMAL, 1 },
     { "password",	do_password,	POS_DEAD,	 0,  LOG_NEVER,  1 },
     { "prompt",		do_prompt,	POS_DEAD,        0,  LOG_NORMAL, 1 },
+    { "remor",		do_remor,	POS_DEAD,	 0,  LOG_ALWAYS, 0 },
+    { "remort",		do_remort,	POS_STANDING,    0,  LOG_ALWAYS, 1 },
     { "scroll",		do_scroll,	POS_DEAD,	 0,  LOG_NORMAL, 1 },
     { "title",		do_title,	POS_DEAD,	 0,  LOG_NORMAL, 1 },
     { "unalias",	do_unalias,	POS_DEAD,	 0,  LOG_NORMAL, 1 },
diff -ur Rom24/src/interp.h Rom24-Remort/src/interp.h
--- Rom24/src/interp.h	Thu Jul 18 06:44:48 1996
+++ Rom24-Remort/src/interp.h	Sun Sep  1 16:47:36 1996
@@ -217,6 +217,8 @@
 DECLARE_DO_FUN(	do_recho	);
 DECLARE_DO_FUN(	do_recite	);
 DECLARE_DO_FUN(	do_remove	);
+DECLARE_DO_FUN( do_remor	);
+DECLARE_DO_FUN( do_remort	);
 DECLARE_DO_FUN(	do_rent		);
 DECLARE_DO_FUN( do_replay	);
 DECLARE_DO_FUN(	do_reply	);
diff -ur Rom24/src/merc.h Rom24-Remort/src/merc.h
--- Rom24/src/merc.h	Thu Jul 18 06:44:58 1996
+++ Rom24-Remort/src/merc.h	Sun Sep  1 17:27:28 1996
@@ -241,6 +241,7 @@
 #define CON_READ_IMOTD			13
 #define CON_READ_MOTD			14
 #define CON_BREAK_CONNECT		15
+#define CON_BEGIN_REMORT		16
 
 
 
@@ -374,6 +375,7 @@
     bool	fMana;			/* Class gains mana on level	*/
     char *	base_group;		/* base skills gained		*/
     char *	default_group;		/* default skills gained	*/
+    bool	remort_class;		/* is a remort class		*/
 };
 
 struct item_type
@@ -416,6 +418,7 @@
     long	vuln;			/* vuln bits for the race */
     long	form;			/* default form flag for the race */
     long	parts;			/* default parts for the race */
+    bool	remort_race;		/* is a remort race */
 };
 
 
@@ -1238,6 +1241,7 @@
 #define PLR_FREEZE		(Y)
 #define PLR_THIEF		(Z)
 #define PLR_KILLER		(aa)
+#define PLR_REMORT		(bb)	/* Or another free bit */
 
 
 /* RT comm flags -- may be used on both mobs and chars */
@@ -1474,8 +1478,10 @@
     bool		group_known	[MAX_GROUP];
     sh_int		points;
     bool              	confirm_delete;
+    bool		confirm_remort;
     char *		alias[MAX_ALIAS];
     char * 		alias_sub[MAX_ALIAS];
+    int			incarnations;
 };
 
 /* Data for generating characters -- only used during generation */
diff -ur Rom24/src/save.c Rom24-Remort/src/save.c
--- Rom24/src/save.c	Thu Jul 18 06:44:30 1996
+++ Rom24-Remort/src/save.c	Sun Sep  1 16:52:54 1996
@@ -277,6 +277,9 @@
 	    ch->pcdata->condition[2],
 	    ch->pcdata->condition[3] );
 
+	fprintf( fp, "Incr %d\n",
+	    ch->pcdata->incarnations );
+
 	/* write alias */
         for (pos = 0; pos < MAX_ALIAS; pos++)
 	{
@@ -567,6 +570,7 @@
     ch->pcdata->condition[COND_THIRST]	= 48; 
     ch->pcdata->condition[COND_FULL]	= 48;
     ch->pcdata->condition[COND_HUNGER]	= 48;
+    ch->pcdata->incarnations		= 1;
 
     found = FALSE;
     fclose( fpReserve );
@@ -985,6 +989,7 @@
 	    KEY( "Id",		ch->id,			fread_number( fp ) );
 	    KEY( "InvisLevel",	ch->invis_level,	fread_number( fp ) );
 	    KEY( "Inco",	ch->incog_level,	fread_number( fp ) );
+	    KEY( "Incr",	ch->pcdata->incarnations, fread_number(fp) );
 	    KEY( "Invi",	ch->invis_level,	fread_number( fp ) );
 	    break;
 
