From 4b256e23bcbe3949c1fd962677d225f4cecf2bc8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 21 Jun 2021 06:28:01 +0000 Subject: [PATCH] =?UTF-8?q?8.=E7=A9=BA=E8=A2=AD=EF=BC=8C=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=EF=BC=8C=E6=94=AF=E6=8C=81=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e31a090..469eb44 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3928,11 +3928,20 @@ void Room::AirRaid(int airraid_id) } a8::Vec2 dir = a8::Vec2::UP; dir.Rotate(a8::RandAngle()); - a8::Vec2 center = gas_data_.pos_new + dir * (500 + rand() % 300); + a8::Vec2 center = gas_data_.pos_new + dir * (100 + rand() % gas_data_.new_area_meta->i->rad()); #if 1 - Player* hum = GetOneAlivePlayer(); - if (hum) { - center = hum->GetPos(); + { + std::vector humans; + GetAlivePlayers(humans, GetRoomMaxPlayerNum()); + if (humans.size() > 3) { + std::random_shuffle(humans.begin(), humans.end()); + for (Human* hum : humans) { + if (!hum->poisoning) { + center = hum->GetPos() + dir * (200 + rand() % 500); + break; + } + } + } } #endif frame_event.AddAirRaid(raid_meta->i->appear_time(), center, raid_meta->i->rad());