From 8e50ea6aeaec8a1f2f2371500f45dc0331c81e5b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 12 Apr 2023 14:19:30 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/callfunc.cc | 4 ++++ server/gameserver/human.cc | 3 +++ 2 files changed, 7 insertions(+) diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index 005d1cc7..2ef8c97b 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -349,12 +349,16 @@ void CallFuncBuff::ProcAddEnergyShield() kUpdateEnergyShieldEvent, [this] (const a8::Args& args) mutable { + int value = args.Get(0); + int new_time = args.Get(1); + owner->AddEnergyShield(value); })); event_handlers_.push_back(owner->GetTrigger()->AddListener ( kDestoryEnergyShieldEvent, [this] (const a8::Args& args) mutable { + owner->RemoveBuffByUniId(buff_uniid); })); } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2ada0ee7..58c417d4 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -262,6 +262,9 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string killer_name, in max_energy_shield, true); GetTrigger()->ReceiveDmg(); + if (energy_shield <= 0) { + GetTrigger()->DestoryEnergyShield(); + } } else { float old_health = GetHP(); float new_health = std::max(0.0f, GetHP() - dec_hp);