diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index eaa275d..26a96f9 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -577,22 +577,41 @@ void Obstacle::OnExplosionHit(Explosion* e) bool Obstacle::CanThroughable(Creature* c) { - #if 0 - if (meta->i->attack_type() == 4) { - return true; + switch (meta->i->collision_hit()) { + case kCollisionHitPass: + { + return true; + } + break; + default: + { + return false; + } + break; } - #endif return false; } bool Obstacle::CanThroughable(Bullet* bullet) { - #if 0 - if (meta->i->attack_type() == 4) { + switch (meta->i->bullet_hit()) { + case kBulletHitPass: + { + return true; + } + break; + case kBulletHitOnlySpecDmg: + { return !(meta->receive_special_damage_type != 0 && ((bullet->gun_meta->special_damage_type & meta->receive_special_damage_type) != 0)); + } + break; + default: + { + return false; + } + break; } - #endif return false; }