This commit is contained in:
aozhiwei 2022-10-18 17:51:17 +08:00
parent 39cd029f4d
commit 1dcc6a951f

View File

@ -684,10 +684,11 @@ void Skill::ProcGZJS()
float dmg_ruduce_rate = meta->number_meta->float_ratio2; float dmg_ruduce_rate = meta->number_meta->float_ratio2;
std::weak_ptr<a8::XTimerPtr> dmg_ruduce_timer; std::weak_ptr<a8::XTimerPtr> dmg_ruduce_timer;
std::shared_ptr<int> immune_buff_uniid = std::make_shared<int>(0); std::shared_ptr<int> immune_buff_uniid = std::make_shared<int>(0);
std::shared_ptr<int> hold_gun_buff_uniid = std::make_shared<int>(0);
owner->GetTrigger()->AddListener owner->GetTrigger()->AddListener
( (
kFlyHookCreateEvent, kFlyHookCreateEvent,
[this, dmg_ruduce_rate, dmg_ruduce_timer, immune_buff_uniid] [this, dmg_ruduce_rate, dmg_ruduce_timer, immune_buff_uniid, hold_gun_buff_uniid]
(const std::vector<std::any>& params) mutable (const std::vector<std::any>& params) mutable
{ {
Bullet* bullet = std::any_cast<Bullet*>(params.at(0)); Bullet* bullet = std::any_cast<Bullet*>(params.at(0));
@ -722,6 +723,16 @@ void Skill::ProcGZJS()
meta->number_meta->float_time * 1000, meta->number_meta->float_time * 1000,
meta); meta);
if (*hold_gun_buff_uniid) {
owner->RemoveBuffByUniId(*hold_gun_buff_uniid);
*hold_gun_buff_uniid = 0;
}
*hold_gun_buff_uniid = owner->TryAddBuffAndSetTime
(owner,
meta->number_meta->pb->buff_id(),
meta->number_meta->float_time * 1000,
meta);
owner->TryAddBuffAndSetTime owner->TryAddBuffAndSetTime
(owner, (owner,
kDispelEffectBuffId, kDispelEffectBuffId,
@ -737,12 +748,16 @@ void Skill::ProcGZJS()
owner->GetTrigger()->AddListener owner->GetTrigger()->AddListener
( (
kFlyHookDestoryEvent, kFlyHookDestoryEvent,
[this, dmg_ruduce_rate, immune_buff_uniid] (const std::vector<std::any>& params) [this, dmg_ruduce_rate, immune_buff_uniid, hold_gun_buff_uniid] (const std::vector<std::any>& params)
{ {
if (*immune_buff_uniid) { if (*immune_buff_uniid) {
owner->RemoveBuffByUniId(*immune_buff_uniid); owner->RemoveBuffByUniId(*immune_buff_uniid);
*immune_buff_uniid = 0; *immune_buff_uniid = 0;
} }
if (*hold_gun_buff_uniid) {
owner->RemoveBuffByUniId(*hold_gun_buff_uniid);
*hold_gun_buff_uniid = 0;
}
} }
); );
} }