--- deliantra/server/server/spell_attack.C 2008/05/18 17:52:53 1.60 +++ deliantra/server/server/spell_attack.C 2008/05/18 19:53:07 1.61 @@ -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 ();