diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index b2c8e0d..8ec9377 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -154,8 +154,8 @@ bool Hero::IsCollisionInMapService() ( (collider->type == CT_Aabb && aabb_box.Intersect((ColliderComponent*)collider)) || (collider->type == CT_Circle && self_collider_->Intersect((ColliderComponent*)collider)) - ) - ) { + ) && + !obstacle->CanThroughable(this)) { if (last_collision_door_ != collider->owner) { OptResult opt_result = kOptPass; obstacle->OnCollisionTrigger(this, opt_result); diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 32ec457..f59d691 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -507,6 +507,9 @@ void RoomObstacle::Die(Room* room) bool RoomObstacle::CanThroughable(Creature* c) { + if (meta->i->thing_type() == kObstacleOilBucket) { + return true; + } if (master.Get()) { return master.Get()->team_id == c->team_id && temp_through_; } else {