--- deliantra/server/common/object.C 2007/08/10 11:02:43 1.176 +++ deliantra/server/common/object.C 2007/08/19 19:34:05 1.181 @@ -1240,14 +1240,6 @@ op->remove (); -#if 0 - if (!m->active != !op->active) - if (m->active) - op->activate_recursive (); - else - op->deactivate_recursive (); -#endif - if (out_of_map (m, op->x, op->y)) { LOG (llevError, "Trying to insert object outside the map.\n%s\n", op->debug_desc ()); @@ -1423,9 +1415,6 @@ op->map->dirty = true; - /* If we have a floor, we know the player, if any, will be above - * it, so save a few ticks and start from there. - */ if (!(flag & INS_MAP_LOAD)) if (object *pl = ms.player ()) pl->contr->ns->floorbox_update (); @@ -2613,7 +2602,7 @@ title ? (const char *)title : "", flag_desc (flagdesc, 512), type); - if (env) + if (!this->flag[FLAG_REMOVED] && env) p += snprintf (p, 256, "(in %s)", env->debug_desc (info2)); if (map) @@ -2670,6 +2659,7 @@ esrv_update_item (UPD_FLAGS, this, old_container); new_draw_info_format (NDI_UNIQUE, 0, this, "You close %s.", query_name (old_container)); + play_sound (sound_find ("chest_close")); } if (new_container) @@ -2695,6 +2685,7 @@ esrv_update_item (UPD_FLAGS, this, new_container); esrv_send_inventory (this, new_container); + play_sound (sound_find ("chest_open")); } } @@ -2730,3 +2721,21 @@ insert (force); } +void +object::play_sound (faceidx sound) const +{ + if (!sound) + return; + + if (flag [FLAG_REMOVED]) + return; + + if (env) + { + if (object *pl = in_player ()) + pl->contr->play_sound (sound); + } + else + map->play_sound (sound, x, y); +} +