--- deliantra/server/server/spell_attack.C 2006/09/10 15:59:57 1.9 +++ deliantra/server/server/spell_attack.C 2006/09/10 23:24:12 1.10 @@ -1,7 +1,7 @@ /* * static char *rcsid_spell_attack_c = - * "$Id: spell_attack.C,v 1.9 2006/09/10 15:59:57 root Exp $"; + * "$Id: spell_attack.C,v 1.10 2006/09/10 23:24:12 root Exp $"; */ @@ -470,12 +470,14 @@ tmp->skill = op->skill; owner = get_owner (op); + if ((tmp->attacktype & AT_HOLYWORD || tmp->attacktype & AT_GODPOWER) && owner && !tailor_god_spell (tmp, owner)) { remove_ob (op); free_object (op); return; } + tmp->x = op->x; tmp->y = op->y; @@ -933,10 +935,8 @@ /* holy word stuff */ if ((tmp->attacktype & AT_HOLYWORD) || (tmp->attacktype & AT_GODPOWER)) - { - if (!tailor_god_spell (tmp, op)) - return 0; - } + if (!tailor_god_spell (tmp, op)) + return 0; if (dir) tmp->stats.sp = dir; @@ -952,6 +952,7 @@ if (tmp->range < 2 && spell->range >= 2) tmp->range = 2; } + tmp->stats.dam = spell->stats.dam + SP_level_dam_adjust (caster, spell); tmp->duration = spell->duration + SP_level_duration_adjust (caster, spell); @@ -963,6 +964,7 @@ else tmp->duration += caster->level / 3; } + if (tmp->attacktype & (AT_HOLYWORD | AT_TURN_UNDEAD)) { if (caster->type == PLAYER) @@ -971,7 +973,6 @@ tmp->duration += caster->level / 3; } - if (!(tmp->move_type & MOVE_FLY_LOW)) LOG (llevDebug, "cast_cone(): arch %s doesn't have flying 1\n", &spell->other_arch->name); @@ -979,6 +980,7 @@ { LOG (llevDebug, "cast_cone(): arch %s doesn't have move_on set\n", &spell->other_arch->name); } + insert_ob_in_map (tmp, m, op, 0); /* This is used for tracking spells so that one effect doesn't hit @@ -989,6 +991,7 @@ if (tmp->other_arch) cone_drop (tmp); } + return success; } @@ -1012,7 +1015,6 @@ if (op->state != NUM_ANIMATIONS (op) - 1) return; - env = object_get_env_recursive (op); if (op->env)