--- deliantra/server/common/object.C 2008/12/23 01:51:27 1.267 +++ deliantra/server/common/object.C 2008/12/26 13:42:18 1.269 @@ -1085,7 +1085,7 @@ { pl->update_stats (); - if (glow_radius && pl->is_on_map () && pl->map->darkness) + if (glow_radius && pl->is_on_map () && pl->map->darklevel () > 0) update_all_los (pl->map, pl->x, pl->y); } } @@ -1167,7 +1167,7 @@ last = tmp; } - if (map->darkness && affects_los ()) + if (affects_los () && map->darklevel () > 0) update_all_los (map, x, y); } } @@ -1449,7 +1449,7 @@ * or just updating the P_UPTODATE for spaces within this area * of effect may be sufficient. */ - if (op->affects_los () && op->map->darkness) + if (op->affects_los () && op->map->darklevel () > 0) { op->ms ().invalidate (); update_all_los (op->map, op->x, op->y); @@ -1658,7 +1658,7 @@ inserted: /* reset the light list and los of the players on the map */ - if (op->glow_radius && is_on_map () && map->darkness) + if (op->glow_radius && is_on_map () && map->darklevel () > 0) { update_stats (); update_all_los (map, x, y); @@ -2606,8 +2606,20 @@ object *force = force_find (shstr_noise_force); if (force) - force->speed = 1.f / 4; // patch old speed up + force->speed_left = -1.f; // patch old speed up else - force_add (shstr_noise_force, 4); + { + force = archetype::get (shstr_noise_force); + + force->slaying = shstr_noise_force; + force->stats.food = 1; + force->speed_left = -1.f; + + force->set_speed (1.f / 4.f); + force->flag [FLAG_IS_USED_UP] = true; + force->flag [FLAG_APPLIED] = true; + + insert (force); + } }