From c71d6ebc912273337ef7a87702570e09e5d58fe6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 21 Jul 2021 07:58:54 +0000 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 10 ++++++++++ server/gameserver/human.cc | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index ac9c471..d34b722 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -54,9 +54,19 @@ void Bullet::RecalcSelfCollider() void Bullet::OnHit(std::set& objects) { + std::shared_ptr old_context_ability = sender.Get()->context_ability; + a8::Vec2 old_context_dir = sender.Get()->context_dir; + a8::Vec2 old_context_pos = sender.Get()->context_pos; + sender.Get()->context_dir = dir; + sender.Get()->context_pos = GetPos(); + for (auto& target : objects) { target->OnBulletHit(this); } + + sender.Get()->context_dir = old_context_dir; + sender.Get()->context_pos = old_context_pos; + sender.Get()->context_ability = old_context_ability; } void Bullet::ProcBomb() diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index d72562b..567ffb3 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3541,7 +3541,7 @@ void Human::OnBulletHit(Bullet* bullet) sender->stats.damage_amount_out += finaly_dmg; #endif if (bullet->meta->buff_meta) { - MustBeAddBuff(this, bullet->meta->i->buffid()); + MustBeAddBuff(bullet->sender.Get(), bullet->meta->i->buffid()); } if (bullet->sender.Get() && bullet->sender.Get()->IsCar() && bullet->passenger.Get()) { DecHP(finaly_dmg,