Re: Stats

From: Robert Moon (LegalWriter@msn.com)
Date: 06/02/00


----- Original Message -----
>From: Victor Wennberg <Victor.Wennberg@Swipnet.se>
>To: <CIRCLE@post.queensu.ca>
>Sent: Friday, June 02, 2000 11:05 AM
>Subject: [CIRCLE] Stats
>

>How do i change the max stats from like 25 to 200? Any tips / ideas /
pointers please.
>Victor Wennberg

For future reference, please do not send your messages in html format; use
plain text.  And now to your question...

There are many things to consider when increasing the maximum value of
stats.  Much of the CircleMUD code emulates the Dungeons and Dragons game
system -- and that includes the use of THAC0 values, saving throws, and the
very stats (attributes) the maximum values of which you want to increase.
The biggest hurdle you'll have to overcome is the use of arrays and
structures everywhere that are accessed by functions that reference a
character's stats in determining success.  Most of these structures are in
constants.c under the comment "str, int, wis, dex, con applies."

Since nearly all of these arrays abruptly stop at element 25, you'll find
yourself crashing all over the place if you increase the attribute values
beyond that number.  Adding more problems is the lack of a generalized
error-trapping function that will prevent calls to a stat-based array in
excess of the MAX_STAT_VALUE (if you were to #define such a thing).  If you
do decide to increase these values, you'll have to make some major changes
in the values these array elements return, since they'd suddenly be grossly
out of proportion.  You'd have to decide if you want to arbitrarily decide
upon the values of the 200 elements for *every single* stat-based structure
or switch over to a simplified way of determining stat-based bonuses and
penalties.

You might want to go with something along the lines of:

if (GET_STR(ch) >= 13)
  damage_bonus += (GET_STR(ch) - 12);
else if (GET_STR(ch) <= 8)
  damage_bonus += MAX(-8, (GET_STR(ch) - 9));

Of course, this is still based upon the premise that stat values of 9-12 are
considered "average" in the D&D world (and are, in fact, the most commonly
rolled bell curve numbers (with equal chance for each) when stats are
determined via 3d6.  The above example would provide a +1 bonus to damage
for every value beyond 12 and apply a penalty of -1 for every value below 9,
to a minimum of -8.  Of course, you'd soon get gigantic damage bonuses when
you entered the triple digits in Strength, which would require a rescaling
of the entire hit point system.  Alternatively, you could add to the
calculation to only give a +1 bonus for every 3 numbers above 12, or you
could set the average stat value from 9-12 to 100 and do bonuses and
penalties based on that.

The bottom line is that this is a significant overhaul of "how things work"
and will change many aspects of the game mechanics.  Before jumping in with
a tweak here and there, decide exactly what kind of game system you want.
Think to yourself "do I *really* need stats in the 200 range -- and if so,
why?  Is it because big numbers look "cool?"  Is it because you want to
stretch out the scale from weakling to Titan over a broader range?  Whatever
you decide, make sure you know what you're doing, or else you'll have a
nightmare of a time fixing the bugs that will creep up all over the place.

--Rob.
----------------
ICQ:  14598527


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/10/01 PDT