From: BuckFloyd@aol.com Subject: Reroll stats for new char I added the ability to reroll a characters stats when a new character first logs onto the mud... So.. here it is.. Keep in mind that I've added races, so your modifications might be a bit different. My code is a 30bpl11 base. As is, the code works just dandy for me. It's rather basic, but functional. No colors or that sort of rot. Use at your own risk... :) -- Buck ========================================================= In structs.h: #define CON_DELCNF2 16 /* Delete confirmation 2 */ #define CON_QRACE 17 /* Race? */ + #define CON_QROLLSTATS 18 /* Roll stats */ ------------------- In interpreter.c At the top, in /* external functions */.. int isbanned(char *hostname); int Valid_Name(char *newname); + void roll_real_abils(struct char_data *ch); Then skip down.. if you don't have races, modify CON_QCLASS instead.. case CON_QRACE: if ((GET_RACE(d->character) = parse_race(*arg)) == CLASS_UNDEFINED) { SEND_TO_Q("\r\nThat's not a race.\r\nRace: ", d); return; break; } + SEND_TO_Q("\r\nPress enter to roll your stats.", d); + STATE(d) = CON_QROLLSTATS; + break; + case CON_QROLLSTATS: + switch (*arg) { + case 'y': + case 'Y': + break; + case 'n': + case 'N': + default: + roll_real_abils(d->character); + sprintf(buf, "\r\nStr: [%d/%d] Int: [%d] Wis: [%d] Dex:" + " [%d] Con: [%d] Cha: [%d]", + GET_STR(d->character), GET_ADD(d->character), + GET_INT(d->character), GET_WIS(d->character), + GET_DEX(d->character), GET_CON(d->character), + GET_CHA(d->character)); + SEND_TO_Q(buf, d); + SEND_TO_Q("\r\n\r\nKeep these stats? (y/N)", d); + return; + } /* if (d->pos < 0) * d->pos = create_entry(GET_NAME(d->character)); */ if (GET_PFILEPOS(d->character) < 0) GET_PFILEPOS(d->character) = create_entry(GET_NAME(d->character)); init_char(d->character); save_char(d->character, NOWHERE); SEND_TO_Q(motd, d); SEND_TO_Q("\r\n\n*** PRESS RETURN: ", d); STATE(d) = CON_RMOTD; -------------------- In class.c: void do_start(struct char_data * ch) { void advance_level(struct char_data * ch); GET_LEVEL(ch) = 1; GET_EXP(ch) = 1; set_title(ch, NULL); +/* Rem out roll_real - called from nanny() instead -Buck */ +/* + roll_real_abils(ch); +*/ -------------------- In db.c: In void init_char(struct char_data * ch): ch->char_specials.saved.affected_by = 0; for (i = 0; i < 5; i++) GET_SAVE(ch, i) = 0; +/* Rem'ed out the following for reroll in nanny() - Buck */ +/* + ch->real_abils.intel = 25; + ch->real_abils.wis = 25; + ch->real_abils.dex = 25; + ch->real_abils.str = 25; + ch->real_abils.str_add = 100; + ch->real_abils.con = 25; + ch->real_abils.cha = 25; +*/ ========================================================== And I think that's it.. All I can remember changing, anyways..Hope it works for you...