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