saving throw formulas

From: Edward J Glamkowski (eglamkowski@ANGELFIRE.COM)
Date: 08/26/98


This is hopefully my last message on the formulas
for saving throws :)

Here's all the numbers for each class using linear
functions to describe the curves.  In general, this
worked quite well with almost all R^2s being > .99,
except in the warrior case, where they are mostly
in the .98s.
I also included the average of the coefficients for
each class, and a simplified one equation fits all
for each class.

Below all that, at the end of this message, is a
system I came up with that uses matricies to determine
saving throws, but small ones that are trivial to
modify.

Cleric
------
Para:    -1.6033x + 52.218  R^2 = .9599
Rod:     -1.4788x + 70.621  R^2 = .9908
Petri:   -1.4785x + 65.717  R^2 = .9916
Breath:  -1.4788x + 80.621  R^2 = .9908
Spell:   -1.4785x + 75.717  R^2 = .9916
Average: -1.5036x + 68.979

Or:
Save:    -1.5x + 70

Magic User
----------
Para:    -1.3984x + 72.876  R^2 = .9889
Rod:     -1.6125x + 54.793  R^2 = .9947
Petri:   -1.7324x + 65.952  R^2 = .9986
Breath:  -1.7324x + 75.952  R^2 = .9986
Spell:   -1.7324x + 60.952  R^2 = .9986
Average: -1.64162 + 66.105

Or:
Save:    -1.6 + 66

Thief
-----
Para:          -x + 66      R^2 = 1
Rod:     -1.9935x + 71.933  R^2 = .9999
Petri:   -1.0051x + 61.113  R^2 = .9996
Breath:        -x + 81      R^2 = 1
Spell:        -2x + 77      R^2 = 1
Average: -1.3997x + 72.609

Or:
Save:    -1.4x + 72

Warrior
-------
Para:    -2.1344x + 70.416  R^2 = .9818
Rod:     -2.1344x + 80.416  R^2 = .9818
Petri:    -2.133x + 75.395  R^2 = .9813
Breath:  -2.5028x + 87.793  R^2 = .9631
Spell:    -2.133x + 85.395  R^2 = .9813
Average: -2.2075x + 79.883

Or:
Save:    -2.2x + 80

--

/* Order of saving throws: PARA, ROD, PETRI, BREATH, SPELL */
/* This matrix determines the base saving throw for each   */
/* class (i.e. the saving throw needed at level 1).        */
int saving_throw_base[NUM_CLASSES][5] = {
        { 70, 55, 65, 75, 60 }, /* MU */
        { 60, 70, 65, 80, 75 }, /* CL */
        { 65, 70, 60, 80, 75 }, /* TH */
        { 70, 80, 75, 85, 85 }, /* WA */
};

/* This is the rate at which saving throws improve, *10 */
/* So, if a saving throw improves at a rate of 1.4 per  */
/* level, it is entered into this matrix as -14.        */
int saving_throw_improve[NUM_CLASSES][5] = {
        { -14, -16, -17, -17, -17 },
        { -16, -15, -15, -15, -15 },
        { -10, -20, -10, -10, -20 },
        { -21, -21, -21, -25, -21 },
};


byte saving_throws(int class_num, int type, int level) {
  float mod;

  mod = (saving_throw_improve[class_num][type] / 10.0) * (level - 1);

  return (saving_throw_base[class_num][type] + mod);
}



---
eglamkowski@angelfire.com
http://www.angelfire.com/nj/eglamkowski/null.html <- Null webring
http://www.angelfire.com/nj/eglamkowski/eia.html  <- EiA webring




Angelfire for your free web-based e-mail. http://www.angelfire.com


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



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