From 14f7e822d63e15388a7a8cb1e520a5332f0bfc91 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 12 Aug 2019 16:48:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=BA=E5=99=A8=E4=BA=BA?= =?UTF-8?q?=E8=87=AA=E7=88=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index e9eb312..d542794 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -318,7 +318,30 @@ bool Human::IsCollision() (last_collision_door == nullptr || last_collision_door != entity) && TestCollision(entity) ){ - objects.push_back(entity); + Obstacle* obstacle = (Obstacle*)entity; + if (!obstacle->dead && + obstacle->meta->i->attack_type() == 1 && + obstacle->meta->i->drop() != 0 && + room->gas_data.gas_mode != GasInactive && + !a8::HasBitFlag(status, HS_Fly) && + !a8::HasBitFlag(status, HS_Jump) + ) { + obstacle->health = 0; + obstacle->dead = obstacle->health <= 0.01f; + obstacle->dead_frameno = room->frame_no; + if (obstacle->dead) { + #if 0 + if (obstacle->meta->i->damage_dia() > 0.01f && + obstacle->meta->i->damage() > 0.01f) { + obstacle->Explosion(this); + } + #endif + room->ScatterDrop(obstacle->pos, obstacle->meta->i->drop()); + } + obstacle->BroadcastFullState(); + } else { + objects.push_back(entity); + } } } break;