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