From c26b2c05f3f499fbf5ca5a72935e75019a23af3f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 30 Jul 2020 09:59:21 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 4ab6070..ec7abdb 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -526,10 +526,15 @@ bool Human::IsCollisionInMapService() if (!collider->owner->dead && TestCollision((ColliderComponent*)collider)) { #endif if (last_collision_door_ != collider->owner) { + bool is_terminator_airdrop_box = false; + if (obstacle->IsEntitySubType(EST_RoomObstacle)) { + is_terminator_airdrop_box = ((RoomObstacle*)obstacle)->is_terminator_airdrop_box; + } if (!obstacle->IsDead(room) && obstacle->Attackable() && obstacle->meta->i->drop() != 0 && - room->GetGasData().gas_mode != GasInactive + room->GetGasData().gas_mode != GasInactive && + (!is_terminator_airdrop_box || GetRace() == kHumanRace) ) { obstacle->Die(room); if (obstacle->IsDead(room)) { @@ -542,13 +547,10 @@ bool Human::IsCollisionInMapService() DropItems(obstacle); } obstacle->BroadcastFullState(room); - if (obstacle->IsEntitySubType(EST_RoomObstacle)) { - bool is_terminator_airdrop_box = ((RoomObstacle*)obstacle)->is_terminator_airdrop_box; - if (is_terminator_airdrop_box && GetRace() == kHumanRace) { - MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID); - if (buff_meta) { - AddBuff(this, buff_meta, 1); - } + if (is_terminator_airdrop_box && GetRace() == kHumanRace) { + MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID); + if (buff_meta) { + AddBuff(this, buff_meta, 1); } } } else {