On Fri, 16 Jun 2000, Elwartowski, William wrote:
> It seems to me that this is a bit strange. In the code all that GET_SAVE
> does
> is give the bonus saves. Wouldn't it be more logical to have GET_SAVE give
> the actual, complete, saving throw?
Nope, the behavior's correct. GET_SAVE gets info as it relates to the
character, not the class -- it's a readable/writable macro to get/change
the bonus/penalty save -- the saving throw for each class at a certain
level is a fixed value that should really only be needed where a saving
dice is being thrown; see mag_savingthrow, magic.c.
IOW, GET_SAVE() is an accessor for a variable, getting the entire
saving throw is a calculation not simple accessing of a data element.
( Most of the GET_* macros are purely variable accessors [-- well except
the GET_ things that access player_special_data which invoke
a CHECK_PLAYER_SPECIALS macro that attempts to prevent ignorant people
from ignorantly accessing the player_specials struct on a mob <chuckle
-- that thing should abort() instead of logging and trying to protect
people from their mistakes!>].
--
If the save total were needed more often than in magic.c it would
prolly make sense for it to have a calculation macro along the lines of
as follows, or perhaps just an inlined (dependant on compiler) function...
<pseudo-code>
#define SAVING_THROW(ch, type, modifier) \
((ch && type >= SAVING_PARA && type <= SAVING_SPELL) ?
(saving_throws((IS_NPC(ch) ? CLASS_WARRIOR: GET_CLASS(ch)), type, \
(ch)->player.level ) \
+ GET_SAVE(ch, type) + modifier) : 0)
</pseudo-code>
-Mysid
+------------------------------------------------------------+
| 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