This commit is contained in:
aozhiwei 2023-05-11 15:55:27 +08:00
commit 9c00a80f3d

View File

@ -347,9 +347,13 @@ void CallFuncBuff::ProcFlashMove()
void CallFuncBuff::ProcAddEnergyShield()
{
if (!owner->dead && !owner->downed) {
float dur_time = meta->GetBuffParam3(this) * FRAME_RATE_MS;
if (dur_time < 0.00001f) {
dur_time = 99999999;
}
if (owner->energy_shield > 0) {
is_valid_ = false;
owner->GetTrigger()->UpdateEnergyShield(hold_param2_, meta->GetDurationTime(this) * FRAME_RATE_MS);
owner->GetTrigger()->UpdateEnergyShield(hold_param2_, dur_time);
} else {
owner->AddEnergyShield(hold_param2_);
event_handlers_.push_back(owner->GetTrigger()->AddListener
@ -368,6 +372,16 @@ void CallFuncBuff::ProcAddEnergyShield()
{
owner->RemoveBuffByUniId(buff_uniid);
}));
owner->room->xtimer.SetTimeoutWpEx
(
dur_time / FRAME_RATE_MS,
[owner = owner] (int event, const a8::Args* args) mutable
{
if (a8::TIMER_DELETE_EVENT == event) {
owner->ClearEnergyShield();
}
},
&owner->xtimer_attacher);
}
}
}