On Mon, 19 Mar 2001, flawed wrote: > So how would this be done? I used a slightly different approach, assigning random values from each third of the range depending on the player's choice at creation. It's a bit ugly and devoid of comments, but should still be easy to follow... This is what I used in nanny() case CON_QALIGN: /* query alignment of new user */ switch (*arg) { case 'b': case 'B': /* evil */ SET_BIT(d->character->char_specials.saved.act, PLR_ALIGN_EVIL); break; case 'g': case 'G': /* good */ SET_BIT(d->character->char_specials.saved.act, PLR_ALIGN_GOOD); break; case 'i': case 'I': /* neutral */ break; case 'r': case 'R': switch (number(0, 2)) { case 0: SET_BIT(d->character->char_specials.saved.act, PLR_ALIGN_EVIL); break; case 1: SET_BIT(d->character->char_specials.saved.act, PLR_ALIGN_GOOD); break; case 2: default: break; } break; default: SEND_TO_Q("That is not a valid choice...\r\n", d); if (IS_SET(d->character->player_specials->saved.pref, PRF_COLOR_1)) { if (d->character->player.sex == SEX_FEMALE) SEND_TO_Q(ALIGN_MENU_F_C, d); else SEND_TO_Q(ALIGN_MENU_M_C, d); } else { if (d->character->player.sex == SEX_FEMALE) SEND_TO_Q(ALIGN_MENU_F, d); else SEND_TO_Q(ALIGN_MENU_M, d); } return; } ...and then this is in roll_real_abils() if (IS_SET(ch->char_specials.saved.act, PLR_ALIGN_EVIL)) ch->char_specials.saved.alignment = number(-1000, -334); else if (IS_SET(ch->char_specials.saved.act, PLR_ALIGN_GOOD)) ch->char_specials.saved.alignment = number(334, 1000); else ch->char_specials.saved.alignment = number(-333, 333); ...and add the necessary preference bits into your player definition. I did things this way so that a reroll by an Imm would give them another semi-random alignment within their chosen ethos. I'm sure it's not the best way to do things, but it works. -- ShadowRealm Management - http://mud.yuggoth.org -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/04/01 PST