--- deliantra/server/server/spell_attack.C 2008/05/17 14:57:23 1.58 +++ deliantra/server/server/spell_attack.C 2008/05/17 15:25:19 1.59 @@ -1732,6 +1732,13 @@ #endif object *owner = op->env; + if (!owner) // MUST not happen, remove when true TODO + { + LOG (llevError, "swarm spell found outside inventory: %s\n", op->debug_desc ()); + op->destroy (); + return; + } + if (!op->duration || !owner->is_on_map ()) { op->destroy (); @@ -1848,8 +1855,9 @@ for (int i = 0; i < spell->duration; i++) tmp->duration += die_roll (1, 3, op, PREFER_HIGH); - tmp->direction = dir; tmp->invisible = 1; + tmp->flag [FLAG_NO_DROP] = 1; // make sure it stays in inv, or else + tmp->direction = dir; tmp->facing = rndm (1, 8); // initial firing direction tmp->state = rndm (4) * 2 + 1; // direction increment