This commit is contained in:
aozhiwei 2022-11-10 20:55:34 +08:00
parent cdc397100a
commit ee7df3aa62
3 changed files with 34 additions and 25 deletions

View File

@ -17,6 +17,7 @@ enum CreatureStatus
CS_DisableAttack, CS_DisableAttack,
CS_ForceTeam, CS_ForceTeam,
CS_PreDieSuspended, CS_PreDieSuspended,
CS_DeadNoDrop,
CS_End CS_End
}; };

View File

@ -2295,6 +2295,9 @@ void Human::DeadDrop()
#endif #endif
}; };
if (a8::HasBitFlag(status, CS_DeadNoDrop)) {
return;
}
if (GetRace() == kHumanRace && if (GetRace() == kHumanRace &&
!HasBuffEffect(kBET_Terminator) && !HasBuffEffect(kBET_Terminator) &&
!(HasBuffEffect(kBET_Become) && GetBuffByEffectId(kBET_Become)->FreezeOperate())) { !(HasBuffEffect(kBET_Become) && GetBuffByEffectId(kBET_Become)->FreezeOperate())) {

View File

@ -846,33 +846,38 @@ void Skill::ProcFH()
kDieEvent, kDieEvent,
[this, relive_times] (const std::vector<std::any>& params) mutable [this, relive_times] (const std::vector<std::any>& params) mutable
{ {
int killer_id = std::any_cast<int>(params.at(0));
if (relive_times <= 0) { if (relive_times <= 0) {
++relive_times; ++relive_times;
owner->real_dead = false; if (killer_id != owner->GetUniId()) {
owner->room->xtimer.AddDeadLineTimerAndAttach owner->real_dead = false;
( a8::SetBitFlag(owner->status, CS_DeadNoDrop);
meta->number_meta->float_time * 1000 / FRAME_RATE_MS, owner->room->xtimer.AddDeadLineTimerAndAttach
a8::XParams() (
.SetSender(this), meta->number_meta->float_time * 1000 / FRAME_RATE_MS,
[] (const a8::XParams& param) a8::XParams()
{ .SetSender(this),
Skill* skill = (Skill*)param.sender.GetUserData(); [] (const a8::XParams& param)
Creature* owner = skill->owner; {
owner->dead = false; Skill* skill = (Skill*)param.sender.GetUserData();
owner->real_dead = false; Creature* owner = skill->owner;
owner->downed = false; owner->dead = false;
owner->SetHP(owner->GetMaxHP() * skill->meta->number_meta->float_ratio2); owner->real_dead = false;
owner->SyncAroundPlayers(__FILE__, __LINE__, __func__); owner->downed = false;
owner->room->frame_event.AddRevive(owner->GetWeakPtrRef()); a8::UnSetBitFlag(owner->status, CS_DeadNoDrop);
owner->TryAddBuff(owner, owner->SetHP(owner->GetMaxHP() * skill->meta->number_meta->float_ratio2);
skill->meta->number_meta->pb->buff_id(), owner->SyncAroundPlayers(__FILE__, __LINE__, __func__);
skill->meta); owner->room->frame_event.AddRevive(owner->GetWeakPtrRef());
}, owner->TryAddBuff(owner,
&xtimer_attacher.timer_list_, skill->meta->number_meta->pb->buff_id(),
[] (const a8::XParams& param) skill->meta);
{ },
} &xtimer_attacher.timer_list_,
); [] (const a8::XParams& param)
{
}
);
}
} }
} }
); );