Player Descriptions, by Xrakisis I wrote this for my Age of Heroes codebase, (dystopia 1.4) this is what you see when you look at my char, Xrakisis. Xrakisis has blue-green eyes, is broad with a protruding beer belly, He has albino skin, as white as snow and short white hair. and my alt... Drakkul has green eyes, is broad with a protruding beer belly, He has pale skin and a bald head i think the number_range is telling me i drink too much beer, and need to go on a diet. // put this stuff in const.c const struct pc_eyes pc_eye_table [] = { {"null"}, {"hazel"}, {"red"}, {"blue"}, {"green"}, {"blue-green"}, {"light green"}, {"dark green"}, {"light brown"}, {"dark brown"}, {"black as coal"} }; const struct pc_looks pc_looks_table [] = { {"null"}, {"has albino skin, as white as snow"}, {"has pale skin"}, {"is slightly tanned"}, {"has tanned skin, with battle scars"}, {"has a dark complextion"} }; const struct pc_build pc_build_table [] = { {"null"}, {"lean and lanky"}, {"broad with a protruding beer belly"}, {"stocky"}, {"althleticly built"} }; const struct pc_hair pc_hair_table [] = { {"null"}, {"a bald head"}, {"short white hair"}, {"long white hair"}, {"short blond hair"}, {"long blond hair"}, {"short red hair"}, {"long red hair"}, {"short brown hair"}, {"long brown hair"}, {"short black hair"}, {"long black hair"} }; // somewhere where you want to have their desc generated.. // maybie selfclass, have this. if (ch->pcdata->pc_eyes == 0) ch->pcdata->pc_eyes = number_range(1,10); if (ch->pcdata->pc_looks == 0) ch->pcdata->pc_looks = number_range(1,4); if (ch->pcdata->pc_hair == 0) ch->pcdata->pc_hair = number_range(1,11); if (ch->pcdata->pc_build == 0) ch->pcdata->pc_build = number_range(1,4); // in act_info.c, in do_look... // below this.. else { act("You see nothing special about $M.", ch, NULL, victim, TO_CHAR); } // add this if (!IS_NPC(victim) && victim->pcRace != 0) { char const *eyes; char const *build; char const *looks; char const *hair; eyes = pc_eye_table[victim->pcdata->pc_eyes].pc_eyes; build = pc_build_table[victim->pcdata->pc_build].pc_build; looks = pc_looks_table[victim->pcdata->pc_looks].pc_looks; hair = pc_hair_table[victim->pcdata->pc_hair].pc_hair; sprintf(buf, "%s has %s eyes, is %s, \n\r", victim->name, eyes, build); send_to_char(buf, ch); if (victim->sex == SEX_FEMALE) send_to_char("She",ch); if (victim->sex == SEX_MALE) send_to_char("He",ch); sprintf(buf, " %s and %s. \n\r", looks, hair); send_to_char(buf, ch); } // in save.c fwrite_char fprintf(fp, "Pc_build %d\n", ch->pcdata->pc_build); fprintf(fp, "Pc_eyes %d\n", ch->pcdata->pc_eyes); fprintf(fp, "Pc_hair %d\n", ch->pcdata->pc_hair); fprintf(fp, "Pc_looks %d\n", ch->pcdata->pc_looks); ch->pcdata->pc_build = 0; ch->pcdata->pc_eyes = 0; ch->pcdata->pc_hair = 0; ch->pcdata->pc_looks = 0; KEY("Pc_build", ch->pcdata->pc_build, fread_number( fp ) ); KEY("Pc_eyes", ch->pcdata->pc_eyes, fread_number( fp ) ); KEY("Pc_hair", ch->pcdata->pc_hair, fread_number( fp ) ); KEY("Pc_looks", ch->pcdata->pc_looks, fread_number( fp ) ); merc.h in struct pc_data.. int pc_eyes; int pc_hair; int pc_looks; int pc_build; i put these under social_type.. struct pc_eyes { char pc_eyes[40]; }; struct pc_looks { char pc_looks[40]; }; struct pc_build { char pc_build[40]; }; struct pc_hair { char pc_hair[40]; }; then these.. extern const struct pc_eyes pc_eye_table []; extern const struct pc_looks pc_looks_table []; extern const struct pc_build pc_build_table []; extern const struct pc_hair pc_hair_table []; i put them over the tables for J.O.P.E