From 7ec616edd48f9f8b0ed5ad1b4c9bc6a3008e2821 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Jul 2021 05:15:14 +0000 Subject: [PATCH] 1 --- server/gameserver/roomobstacle.cc | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 8da81a9..99ad184 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -193,6 +193,31 @@ void RoomObstacle::SpecExplosion() meta->i->explosion_effect(), meta->i->damage() ); + { + std::set human_list; + room->grid_service->TraverseAllLayerHumanList + (room->GetRoomIdx(), + *grid_list_, + [this, &human_list] (Human* hum, bool& stop) + { + if (master.Get()->team_id != hum->team_id && TestCollision(room, hum)) { + human_list.insert(hum); + } + } + ); + if (!human_list.empty()) { + for (Human* hum : human_list) { + for (int buff_id : meta->buff_list) { + MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id); + if (buff_meta) { + hum->AddBuff(master.Get(), + buff_meta, + 1); + } + } + } + } + } } } int total_explosion_times = meta->i->explosion_times(); @@ -219,16 +244,12 @@ void RoomObstacle::Active() break; case kObstacleMine: { - #if 0 ActiveMine(); - #endif } break; case kObstacleTrap: { - #if 0 ActiveTrap(); - #endif } break; case kObstaclePosionGas: