diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 09a9587a..a8b26d23 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -901,12 +901,25 @@ void Skill::ProcFH() owner->real_dead = false; owner->downed = false; a8::UnSetBitFlag(owner->status, CS_DeadNoDrop); - owner->SetHP(owner->GetMaxHP() * skill->meta->number_meta->float_ratio2); owner->SyncAroundPlayers(__FILE__, __LINE__, __func__); owner->room->frame_event.AddRevive(owner->GetWeakPtrRef()); owner->TryAddBuff(owner, skill->meta->number_meta->pb->buff_id(), skill->meta); + owner->room->xtimer.AddDeadLineTimerAndAttach + ( + 3 * SERVER_FRAME_RATE, + a8::XParams() + .SetSender(skill), + [] (const a8::XParams& param) + { + Skill* skill = (Skill*)param.sender.GetUserData(); + Creature* owner = skill->owner; + owner->SetHP(owner->GetMaxHP() * skill->meta->number_meta->float_ratio2); + owner->SyncAroundPlayers(__FILE__, __LINE__, __func__); + + }, + &skill->xtimer_attacher.timer_list_); }, &xtimer_attacher.timer_list_, [] (const a8::XParams& param, bool is_destory)