This commit is contained in:
aozhiwei 2022-10-12 16:00:46 +08:00
parent 42357b0061
commit cd483b647f
2 changed files with 28 additions and 3 deletions

View File

@ -1140,12 +1140,12 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
hum->dead_timer = nullptr;
});
} else {
GetTrigger()->Die();
dead = true;
real_dead = true;
downed = false;
SetHP(0.0f);
dead_frameno = room->GetFrameNo();
GetTrigger()->Die();
OnDie();
KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 0);

View File

@ -750,12 +750,37 @@ void Skill::ProcJYFH()
void Skill::ProcFH()
{
int relive_times = 0;
owner->GetTrigger()->AddListener
(
kDieEvent,
[] (const std::vector<std::any>& params)
[this, relive_times] (const std::vector<std::any>& params) mutable
{
if (relive_times <= 0) {
++relive_times;
owner->real_dead = false;
owner->room->xtimer.AddDeadLineTimerAndAttach
(
meta->number_meta->float_time * 1000 / FRAME_RATE_MS,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Skill* skill = (Skill*)param.sender.GetUserData();
Creature* owner = skill->owner;
owner->dead = false;
owner->real_dead = false;
owner->downed = false;
owner->SetHP(owner->GetMaxHP() * skill->meta->number_meta->float_ratio2);
owner->SyncAroundPlayers(__FILE__, __LINE__, __func__);
owner->room->frame_event.AddRevive(owner->GetWeakPtrRef());
},
&xtimer_attacher.timer_list_,
[] (const a8::XParams& param)
{
}
);
}
}
);
}