diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index c1ac10ff..e29fef13 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -812,8 +812,13 @@ void RoomObstacle::CalcTempPassObjects() RoomObstacle* obstacle = (RoomObstacle*)param.sender.GetUserData(); Room* room = obstacle->room; std::list del_objs; - for (auto& pair : *temp_pass_objects_) { - + for (auto& pair : *obstacle->temp_pass_objects_) { + if (!pair.second.Get() || !obstacle->TestCollision(room, pair.second.Get())) { + del_objs.push_back(pair.first); + } + } + for (int obj_uniid : del_objs) { + obstacle->temp_pass_objects_->erase(obj_uniid); } if (obstacle->temp_pass_objects_->empty()) { room->xtimer.DeleteTimer(room->xtimer.GetRunningTimer());