From 5ad3556e20335098dc7dbcb127cc97c14d056ee3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Aug 2022 19:46:46 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index c106efaa..f27a9441 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -470,22 +470,29 @@ void Bullet::Check(float distance) } { Buff* hold_shield_buff = c->GetBuffByEffectId(kBET_HoldShield); - if (hold_shield_buff && !IsBomb()) { + if (hold_shield_buff && !IsBomb() && !c->dead && c != sender.Get()) { float shot_angle = 0.0f; if (c->GetMoveDir().IsZero()) { shot_angle = dir.CalcAngleEx(a8::Vec2::UP); } else { shot_angle = dir.CalcAngleEx(c->GetMoveDir()); } + CircleCollider collider; + collider.owner = c; + collider.rad = hold_shield_buff->meta->param1; if (shot_angle < A8_PI / 4) { - eat = true; - stop = true; - return; + if (TestCollision(room, &collider)) { + eat = true; + stop = true; + return; + } } else if (fabs(shot_angle) < 0.000001f && shot_angle + A8_PI < A8_PI / 4){ - eat = true; - stop = true; - return; + if (TestCollision(room, &collider)) { + eat = true; + stop = true; + return; + } } } }