diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index ab8c37f9..25bbb8e8 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -139,13 +139,15 @@ void Bullet::OnHit(std::set& objects) bool eat = false; if (!trace_target_id && !reporter_list) { if (mt::Param::s().bullet_through_wall_check) { - if (!room->BulletCanReach(born_pos.ToGlmVec3(), target->GetPos().ToGlmVec3())) { + if (!gun_meta->is_penetrate_thing() && + !room->BulletCanReach(born_pos.ToGlmVec3(), target->GetPos().ToGlmVec3())) { eat = true; } if (gun_meta->id() == 30905 && eat && sender.Get()) { glm::vec3 new_born_pos = born_pos.ToGlmVec3(); new_born_pos.y = target->GetPos().GetY(); - if (room->BulletCanReach(new_born_pos, target->GetPos().ToGlmVec3())) { + if (gun_meta->is_penetrate_thing() || + room->BulletCanReach(new_born_pos, target->GetPos().ToGlmVec3())) { eat = false; } }