Just some random thoughts on the mag_damage() function:
I was adding my druid class and wanted to give them
a bonus vs. fire and electricity (yeah, yeah, standard
AD&D druid :P ) so I made a variable in mag_damage()
called spell_type and made some constants
#define SPELL_TYPE_FIRE 1
#defome SPELL_TYPE_COLD 2
etc.
Then, down where the saving throw is done,
if (IS_DRUID(victim) &&
(spell_type == SPELL_TYPE_FIRE ||
spell_type == SPELL_TYPE_ELECTRICITY))
mod += 2;
Then add a new argument to mag_savingthrow which
is a modifier to the saveing throw die roll (which is
universally useful and I believe should be done in the
stock code *cough* *Jeremy* *cough* ;)
This also allows for all sorts of resist_XXX spells
and item flags (resist_fire, resist_cold, etc.) which
give a bonus to saving throws against certain types of
attacks.
Another thing I've done is to add a save_type variable
in mag_damage and some constants to which it can be set
based on the spell being cast:
#define SAVE_TYPE_HALF_DAM 1
#define SAVE_TYPE_NO_DAM 2
#define SAVE_TYPE_NO_SAVE 3
#define SAVE_TYPE_THACO 4
and use these to modify how the saving throw is done:
SAVE_TYPE_NO_SAVE doesn't allow a saving throw - all
the damage always gets through no matter what.
SAVE_TYPE_HALF_DAM is the current system - save for
half damage.
SAVE_TYPE_NO_DAM means if they make their saving throw,
they take no damage at all!
SAVE_TYPE_THACO means there is no save, but the caster
has to make a hit roll instead (copied the code
straight from fight.c).
Anybody else done anything interesting with their
mag_damage function?
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