1
This commit is contained in:
parent
cdc397100a
commit
ee7df3aa62
@ -17,6 +17,7 @@ enum CreatureStatus
|
|||||||
CS_DisableAttack,
|
CS_DisableAttack,
|
||||||
CS_ForceTeam,
|
CS_ForceTeam,
|
||||||
CS_PreDieSuspended,
|
CS_PreDieSuspended,
|
||||||
|
CS_DeadNoDrop,
|
||||||
CS_End
|
CS_End
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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())) {
|
||||||
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user