--- deliantra/server/server/spell_attack.C 2008/05/17 15:25:19 1.59 +++ deliantra/server/server/spell_attack.C 2008/05/18 19:53:07 1.61 @@ -150,6 +150,7 @@ new_bolt->stats.dam++; tmp->stats.dam /= 2; /* reduce father bolt damage */ tmp->stats.dam++; + if ((new_bolt = m->insert (new_bolt, sx, sy, op))) update_turn_face (new_bolt); } @@ -1612,7 +1613,6 @@ * op is the spell effect. * note that duration is handled by process_object() in time.c */ - void move_ball_spell (object *op) { @@ -1749,8 +1749,11 @@ int basedir = op->direction; if (!basedir) - /* spray in all directions! 8) */ - basedir = (op->facing += op->state) % 8 + 1; + { + /* spray in all directions! 8) */ + op->facing = (op->facing + op->state) & 7; + basedir = op->facing + 1; + } #if 0 // this is bogus: it causes wrong places to be checked below @@ -1842,6 +1845,7 @@ return 0; object *tmp = archetype::get (SWARM_SPELL); + set_spell_skill (op, caster, spell, tmp); tmp->level = caster_level (caster, spell); /* needed later, to get level dep. right. */ tmp->spell = spell->other_arch->instance ();