/* merc.h */ add in the con statements... CON_GET_HAIR CON_GET_WEIGHT CON_GET_HEIGHT CON_GET_EYE /* Under attack_type add */ /* Coded by Shinji - mudnet.net 7000 */ struct weight_type { char * name; long flag; int level; }; struct hair_type { char * name; long flag; int level; } struct eye_type { char * name; long flag; int level; } struct height_type { char * name; long flag; int level; } /* In struct pc_data add */ /* Coded by Shinji - mudnet.net 7000 */ int weight; int height; int hair; int eye; /* Underneath group_table add */ extern const struct eye_type eye_table []; /* Coded by Shinji - mudnet.net 7000 */ extern const struct hair_type hair_table []; /* Coded by Shinji - mudnet.net 7000 */ extern const struct height_type height_table []; /* Coded by Shinji - mudnet.net 7000 */ extern const struct weight_type weight_table []; /* Coded by Shinji - mudnet.net 7000 */ /* Under the PLR_ flags add */ /* Coded by Shinji - mudnet.net - 7000 */ #define WEIGHT_SLENDER (A) #define WEIGHT_SLIM (B) #define WEIGHT_AVERAGE (C) #define WEIGHT_STOCKY (D) #define WEIGHT_HEAVY (E) #define EYE_BLUE (A) #define EYE_GREEN (B) #define EYE_BROWN (C) #define HEIGHT_SHORT (A) #define HEIGHT_MIDGET (B) #define HEIGHT_AVERAGE (C) #define HEIGHT_TALL (D) #define HEIGHT_GIANT (E) #define HAIR_BLOND (A) #define HAIR_RED (B) #define HAIR_BLACK (C) /* Const.c, underneath the weapon tables add */ /* Coded by Shinji - mudnet.net 7000 */ const struct weight_type weight_table [] = { { "slender", WEIGHT_SLENDER, 1 }, { "slim", WEIGHT_SLIM, 1 }, { "average", WEIGHT_AVERAGE, 1 }, { "stocky", WEIGHT_STOCKY, 1 }, { "heavy", WEIGHT_HEAVEY, 1 }, { NULL, 0, 0 } }; const struct eye_type eye_table [] = { { "blue", EYE_BLUE, 1 }, { "green", EYE_GREEN, 1 }, { "brown", EYE_BROWN, 1 }, { NULL, 0, 0 } }; const struct height_type height_table [] = { { "short", HEIGHT_SHORT, 1 }, { "midget", HEIGHT_MIDGET, 1 }, { "average",HEIGHT_AVERAGE, 1 }, { "tall", HEIGHT_TALL, 1 }, { "giant", HEIGHT_GIANT, 1 }, { NULL, 0, 0 } }; const struct hair_type hair_table [] = { { "blond", HAIR_BLOND, 1 }, { "red", HAIR_RED, 1 }, { "black",HAIR_BLACK, 1 }, { NULL, 0, 0 } }; /* save.c */ /* in void fwrite_char */ /* Coded by Shinji - mudnet.net 7000 */ if (ch->pcdata->height) fprintf( fp, "Height %s\n", print_flags(ch->pcdata->height)); if (ch->pcdata->weight) fprintf( fp, "Weight %s\n", print_flags(ch->pcdata->weight)); if (ch->pcdata->eye) fprintf( fp, "Eye %s \n", print_flags(ch->pcdata->eye)); if (ch->pcdata->hair) fprintf( fp, "Hair %s\n", print_flags(ch->pcdata->hair)); /* in void fread_char */ /* In the designated cases */ KEY( "Height", ch->pcdata->height, fread_flag( fp ) ); KEY( "Weight", ch->pcdata->weight, fread_flag( fp ) ); KEY( "Eye", ch->pcdata->eye, fread_flag( fp ) ); KEY( "Hair", ch->pcdata->hair, fread_flag( fp ) ); /* Now the lengthy Part! */ /* comm.c */ in void nanny add: bool hairChoice, eyeChoice, heightChoice, sizeChoice after these lines... group_add(ch,"rom basics",FALSE); group_add(ch,class_table[ch->class].base_group,FALSE); ch->pcdata->learned[gsn_recall] = 50; add: write_to_buffer( d, echo_on_str, 0 ); write_to_buffer(d,"Which more suits your hair color for your character?\n\rBlonde, Red, Black? [B/R/L]: ",0); d->connected = CON_GET_HAIR; break; case CON_GET_HAIR: #if defined(unix) write_to_buffer( d, "\n\r", 2 ); #endif switch ( *argument ) { case 'b': case 'B': SET_BIT( ch->pcdata->hair, HAIR_BLOND ); REMOVE_BIT(ch->pcdata->hair, HAIR_RED); REMOVE_BIT(ch->pcdata->hair, HAIR_BLACK); hairChoice = TRUE; break; case 'r': case 'R': SET_BIT( ch->pcdata->hair, HAIR_RED ); REMOVE_BIT(ch->pcdata->hair, HAIR_BLACK); REMOVE_BIT(ch->pcdata->hair, HAIR_BLOND); hairChoice = TRUE; break; case 'l': case 'L': SET_BIT(ch->pcdata->hair,HAIR_BLACK); REMOVE_BIT(ch->pcdata->hair, HAIR_RED); REMOVE_BIT(ch->pcdata->hair, HAIR_BLOND); hairChoice = TRUE; default: write_to_buffer( d, "Please type either B/R/L? ", 0 ); hairChoice = FALSE; break; } if(!hairChoice) break; write_to_buffer(d,echo_on_str, 0); write_to_buffer(d,"Which eye color do you prefer for your character?\n\rBlue, Green, Brown? [B/G/R]: ",0); d->connected = CON_GET_EYE; break; case CON_GET_EYE: #if defined(unix) write_to_buffer( d, "\n\r", 2 ); #endif switch ( *argument ) { case 'b': case 'B': SET_BIT( ch->pcdata->eye, EYE_BLUE ); REMOVE_BIT(ch->pcdata->eye, EYE_GREEN); REMOVE_BIT(ch->pcdata->eye, EYE_BROWN); eyeChoice = TRUE; break; case 'g': case 'G': SET_BIT( ch->pcdata->eye, EYE_GREEN ); REMOVE_BIT(ch->pcdata->eye, EYE_BLUE); REMOVE_BIT(ch->pcdata->eye, EYE_BROWN); eyeChoice = TRUE; break; case 'r': case 'R': SET_BIT(ch->pcdata->eye,EYE_BROWN); REMOVE_BIT(ch->pcdata->eye, EYE_BLUE); REMOVE_BIT(ch->pcdata->eye, EYE_GREEN); eyeChoice = TRUE; default: write_to_buffer( d, "Please type either B/G/R? ", 0 ); eyeChoice = FALSE; break; } if(!eyeChoice) break; write_to_buffer(d,echo_on_str, 0); write_to_buffer(d,"Which height would best describe your character?\n\rShort, Midget, Average, Tall, Giant? [S/M/A/T/G]: ",0); d->connected = CON_GET_HEIGHT; break; case CON_GET_HEIGHT: #if defined(unix) write_to_buffer( d, "\n\r", 2 ); #endif switch ( *argument ) { case 's': case 'S': SET_BIT( ch->pcdata->height, HEIGHT_SHORT ); REMOVE_BIT(ch->pcdata->height, HEIGHT_MIDGET); REMOVE_BIT(ch->pcdata->height, HEIGHT_AVERAGE); REMOVE_BIT(ch->pcdata->height, HEIGHT_TALL); REMOVE_BIT(ch->pcdata->height, HEIGHT_GIANT); heightChoice = TRUE; break; case 'm': case 'M': SET_BIT( ch->pcdata->height, HEIGHT_MIDGET ); REMOVE_BIT(ch->pcdata->height, HEIGHT_SHORT ); REMOVE_BIT(ch->pcdata->height, HEIGHT_AVERAGE); REMOVE_BIT(ch->pcdata->height, HEIGHT_TALL); REMOVE_BIT(ch->pcdata->height, HEIGHT_GIANT); heightChoice = TRUE; break; case 'a': case 'A': SET_BIT(ch->pcdata->height,HEIGHT_AVERAGE); REMOVE_BIT(ch->pcdata->height, HEIGHT_SHORT ); REMOVE_BIT(ch->pcdata->height, HEIGHT_MIDGET); REMOVE_BIT(ch->pcdata->height, HEIGHT_TALL); REMOVE_BIT(ch->pcdata->height, HEIGHT_GIANT); heightChoice = TRUE; break; case 't': case 'T': SET_BIT(ch->pcdata->height,HEIGHT_TALL); REMOVE_BIT(ch->pcdata->height, HEIGHT_SHORT ); REMOVE_BIT(ch->pcdata->height, HEIGHT_MIDGET); REMOVE_BIT(ch->pcdata->height, HEIGHT_AVERAGE); REMOVE_BIT(ch->pcdata->height, HEIGHT_GIANT); heightChoice = TRUE; break; case 'g': case 'G' SET_BIT(ch->pcdata->height,HEIGHT_GIANT); REMOVE_BIT(ch->pcdata->height, HEIGHT_SHORT ); REMOVE_BIT(ch->pcdata->height, HEIGHT_MIDGET); REMOVE_BIT(ch->pcdata->height, HEIGHT_TALL); REMOVE_BIT(ch->pcdata->height, HEIGHT_AVERAGE); heightChoice; break; default: write_to_buffer( d, "Please type either S/M/A/T/G? ", 0 ); heightChoice = FALSE; break; } if(!heightChoice) break;