From a4a44b56ce718f0400d41728d2c2e749b72c1f3d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 18 Jul 2023 11:18:42 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 998a13fe..4cf4eb14 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -6,6 +6,8 @@ #include #include +#include + #include "creature.h" #include "room.h" #include "skill.h" @@ -3007,10 +3009,20 @@ void Creature::NetInitOk() bool Creature::IsNearGas(float distance) { - Position p; - p.FromGlmVec3(glm::vec3(room->GetGasData().pos_new.x, 0, room->GetGasData().pos_new.y)); - float gas_distance = GetPos().Distance2D2(p); - return gas_distance + GetRadius() * 2 + distance > room->GetGasData().rad_new; + float radius = GetRadius() + distance; + bool b1 = a8::CircleContainCircle + (room->GetGasData().pos_old, + room->GetGasData().gas_progress, + glm::vec2(GetPos().GetX(), GetPos().GetZ()), + radius + ); + bool b2 = a8::CircleContainCircle + (room->GetGasData().pos_new, + room->GetGasData().rad_new, + glm::vec2(GetPos().GetX(), GetPos().GetZ()), + radius + ); + return !b1 && !b2; } float Creature::GetSafeAreaRaidus()