[CODE Snippet] Reroll stats for new char

BuckFloyd@aol.com
Date: 12/06/96


As I figure I've been mostly observing this form for quite a
while, and have had most of my questions answered, I thought
I'd finally share something, since my coding has improved,
albeit slightly.. I apologize for the spacing, but using 
AOL as a secondary account does have it's limitations.
(Alex, I hope I got it under 65.. :)

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...


+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
|   http://cspo.queensu.ca/~fletcher/Circle/list_faq.html   |
+-----------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/18/00 PST