1
This commit is contained in:
parent
72f4bbe89c
commit
12aa63a45a
@ -613,43 +613,57 @@ void Skill::ProcMYXY()
|
||||
{
|
||||
float speed_rate = SkillHelper::GetMyxySpeedRate(meta);
|
||||
float atk_rate = SkillHelper::GetMyxyAtkRate(meta);
|
||||
std::shared_ptr<int> immune_buff_uniid = std::make_shared<int>(0);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kStartSwitchWeaponBuffEvent,
|
||||
[this, speed_rate, atk_rate] (const std::vector<std::any>& params)
|
||||
[this, speed_rate, atk_rate, immune_buff_uniid] (const std::vector<std::any>& params)
|
||||
{
|
||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
return;
|
||||
}
|
||||
owner->GetAbility()->AddSpeedAddition(speed_rate);
|
||||
if (*immune_buff_uniid) {
|
||||
owner->RemoveBuffByUniId(*immune_buff_uniid);
|
||||
*immune_buff_uniid = 0;
|
||||
}
|
||||
*immune_buff_uniid = owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
kImmuneEffectBuffId,
|
||||
buff->skill_meta->i->skill_cd() * 1000,
|
||||
meta);
|
||||
}
|
||||
);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kEndSwitchWeaponBuffEvent,
|
||||
[this, speed_rate, atk_rate] (const std::vector<std::any>& params)
|
||||
[this, speed_rate, atk_rate, immune_buff_uniid] (const std::vector<std::any>& params)
|
||||
{
|
||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
return;
|
||||
}
|
||||
if (*immune_buff_uniid) {
|
||||
owner->RemoveBuffByUniId(*immune_buff_uniid);
|
||||
*immune_buff_uniid = 0;
|
||||
}
|
||||
owner->GetAbility()->DelSpeedAddition(speed_rate);
|
||||
}
|
||||
);
|
||||
#ifdef DEBUG
|
||||
{
|
||||
std::string dbg_msg = a8::Format
|
||||
(
|
||||
"skill_id:%d 免疫眩晕 攻击力:%f 移动提升:%f",
|
||||
{
|
||||
std::string dbg_msg = a8::Format
|
||||
(
|
||||
"skill_id:%d 免疫眩晕 攻击力:%f 移动提升:%f",
|
||||
{
|
||||
meta->i->skill_id(),
|
||||
atk_rate,
|
||||
speed_rate
|
||||
});
|
||||
owner->SendDebugMsg(dbg_msg);
|
||||
a8::XPrintf("%s\n", {dbg_msg});
|
||||
}
|
||||
meta->i->skill_id(),
|
||||
atk_rate,
|
||||
speed_rate
|
||||
});
|
||||
owner->SendDebugMsg(dbg_msg);
|
||||
a8::XPrintf("%s\n", {dbg_msg});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -657,10 +671,12 @@ void Skill::ProcGZJS()
|
||||
{
|
||||
float dmg_ruduce_rate = meta->number_meta->float_ratio2;
|
||||
std::weak_ptr<a8::XTimerPtr> dmg_ruduce_timer;
|
||||
std::shared_ptr<int> immune_buff_uniid = std::make_shared<int>(0);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kFlyHookCreateEvent,
|
||||
[this, dmg_ruduce_rate, dmg_ruduce_timer] (const std::vector<std::any>& params) mutable
|
||||
[this, dmg_ruduce_rate, dmg_ruduce_timer, immune_buff_uniid]
|
||||
(const std::vector<std::any>& params) mutable
|
||||
{
|
||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
@ -683,20 +699,42 @@ void Skill::ProcGZJS()
|
||||
},
|
||||
&xtimer_attacher.timer_list_);
|
||||
dmg_ruduce_timer = owner->room->xtimer.GetTimerPtr(timer);
|
||||
owner->TryAddBuffAndSetTime(owner,
|
||||
meta->number_meta->pb->buff_id(),
|
||||
meta->number_meta->float_time
|
||||
);
|
||||
|
||||
if (*immune_buff_uniid) {
|
||||
owner->RemoveBuffByUniId(*immune_buff_uniid);
|
||||
*immune_buff_uniid = 0;
|
||||
}
|
||||
*immune_buff_uniid = owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
kImmuneEffectBuffId,
|
||||
meta->number_meta->float_time * 1000,
|
||||
meta);
|
||||
|
||||
owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
kDispelEffectBuffId,
|
||||
0,
|
||||
meta);
|
||||
|
||||
owner->TryAddBuffAndSetTime
|
||||
(owner,
|
||||
meta->number_meta->pb->buff_id(),
|
||||
meta->number_meta->float_time
|
||||
);
|
||||
});
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
kFlyHookDestoryEvent,
|
||||
[this, dmg_ruduce_rate] (const std::vector<std::any>& params)
|
||||
[this, dmg_ruduce_rate, immune_buff_uniid] (const std::vector<std::any>& params)
|
||||
{
|
||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
return;
|
||||
}
|
||||
if (*immune_buff_uniid) {
|
||||
owner->RemoveBuffByUniId(*immune_buff_uniid);
|
||||
*immune_buff_uniid = 0;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user