--- deliantra/server/server/spell_attack.C 2007/07/05 08:10:30 1.43 +++ deliantra/server/server/spell_attack.C 2007/08/24 01:41:02 1.48 @@ -345,7 +345,7 @@ ***************************************************************************/ /* expands an explosion. op is a piece of the - * explosion - this expans it in the different directions. + * explosion - this expands it in the different directions. * At least that is what I think this does. */ void @@ -485,6 +485,8 @@ op->move_on = 0; tmp->insert_at (op, op); + tmp->play_sound (tmp->sound); + /* remove the firebullet */ op->destroy (); } @@ -1087,7 +1089,6 @@ * dir = direction being cast * spell = spell object */ - int cast_smite_spell (object *op, object *caster, int dir, object *spell) { @@ -1175,7 +1176,6 @@ return 1; } - /**************************************************************************** * * MAGIC MISSILE code. @@ -1375,8 +1375,10 @@ return 0; } + tmp = tmp->head_ (); + /* If we've already got a force of this type, don't add a new one. */ - for (force = tmp->inv; force != NULL; force = force->below) + for (force = tmp->inv; force; force = force->below) { if (force->type == FORCE && force->subtype == FORCE_CHANGE_ABILITY) { @@ -1392,10 +1394,11 @@ } } - if (force == NULL) + if (!force) { force = get_archetype (FORCE_NAME); force->subtype = FORCE_CHANGE_ABILITY; + if (spell_ob->race) force->name = spell_ob->race; else @@ -1415,11 +1418,11 @@ new_draw_info (NDI_UNIQUE, 0, op, "You recast the spell while in effect."); } else - { - new_draw_info (NDI_UNIQUE, 0, op, "Recasting the spell had no effect."); - } + new_draw_info (NDI_UNIQUE, 0, op, "Recasting the spell had no effect."); + return 1; } + force->duration = spell_ob->duration + SP_level_duration_adjust (caster, spell_ob) * 50; force->speed = 1.f; force->speed_left = -1.f; @@ -1960,16 +1963,12 @@ return 1; } - - - /* cast_cause_disease: this spell looks along from the * player and infects someone. * op is the player/monster, caster is the object, dir is the direction * to cast, disease_arch is the specific disease, and type is the spell number * perhaps this should actually be in disease.c? */ - int cast_cause_disease (object *op, object *caster, object *spell, int dir) { @@ -1986,6 +1985,7 @@ */ if (!dir) dir = op->facing; + if (!dir) return 0; /* won't find anything if casting on ourself, so just return */ @@ -2029,7 +2029,7 @@ disease->stats.wc += dur_mod / 2; if (disease->magic > 0) - disease->magic += dur_mod / 4; + disease->magic += dur_mod / 8; if (disease->stats.maxhp > 0) disease->stats.maxhp += dur_mod;