From d765bc61eb9b09ab580626d3d22943a6008d63f5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 14 Sep 2022 10:52:24 +0800 Subject: [PATCH] 1 --- server/gameserver/buff.cc | 4 ++-- server/gameserver/bullet.cc | 2 +- server/gameserver/human.cc | 21 ++++++++++++--------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 3f635fba..ed86b9fc 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -962,8 +962,8 @@ void Buff::ProcReserveMove() void Buff::ProcHoldShield() { - owner->shield_hp_ = meta->int_param2; - owner->shield_max_hp_ = meta->int_param2; + owner->shield_hp_ = meta->int_param3; + owner->shield_max_hp_ = meta->int_param3; owner->room->frame_event.AddPropChg(owner->GetWeakPtrRef(), kPropShieldHp, owner->shield_max_hp_, diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index c37d3774..33a948c0 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -515,7 +515,7 @@ void Bullet::Check(float distance) float shot_angle = shot_angle = dir.CalcAngleEx(c->GetAttackDir()); CircleCollider collider; collider.owner = c; - collider.rad = hold_shield_buff->meta->param1; + collider.rad = hold_shield_buff->meta->param2; if (shot_angle * 180 < 90.0f) { if (TestCollision(room, &collider)) { c->OnBulletHit(this); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 39ddb9b0..4c5616fb 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3506,16 +3506,19 @@ void Human::OnBulletHit(Bullet* bullet) { Buff* buff = GetBuffByEffectId(kBET_HoldShield); if (buff) { - float finaly_dmg = bullet->sender.Get()->GetBattleContext()->CalcDmg(this, bullet); - shield_hp_ = std::max(0.0f, shield_hp_ - finaly_dmg); - room->frame_event.AddPropChg(GetWeakPtrRef(), - kPropShieldHp, - shield_max_hp_, - shield_hp_); - if (shield_hp_ <= 0) { - RemoveBuffByUniId(buff->buff_uniid); + float shot_angle = shot_angle = bullet->dir.CalcAngleEx(GetAttackDir()); + if (shot_angle * 180 < 90.0f) { + float finaly_dmg = bullet->sender.Get()->GetBattleContext()->CalcDmg(this, bullet); + shield_hp_ = std::max(0.0f, shield_hp_ - finaly_dmg); + room->frame_event.AddPropChg(GetWeakPtrRef(), + kPropShieldHp, + shield_max_hp_, + shield_hp_); + if (shield_hp_ <= 0) { + RemoveBuffByUniId(buff->buff_uniid); + } + return; } - return; } } #ifdef DEBUG