1
This commit is contained in:
parent
341329b607
commit
ba66001914
@ -3391,38 +3391,42 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we
|
|||||||
real_dead = false;
|
real_dead = false;
|
||||||
downed = false;
|
downed = false;
|
||||||
SetHP(0.0f);
|
SetHP(0.0f);
|
||||||
if (real_killer_id != GetUniId() && GetTeam() && GetTeam()->HasReviveCoin(this)) {
|
|
||||||
real_dead = true;
|
|
||||||
dead_frameno = room->GetFrameNo();
|
dead_frameno = room->GetFrameNo();
|
||||||
GetTrigger()->Die(killer_id, weapon_id);
|
GetTrigger()->Die(killer_id, weapon_id);
|
||||||
if (real_dead) {
|
|
||||||
real_dead = false;
|
|
||||||
OnDie();
|
OnDie();
|
||||||
KillMgr::Instance()->OnHumanDead(this, &info);
|
KillMgr::Instance()->OnHumanDead(this, &info);
|
||||||
room->frame_event.AddDead(GetWeakPtrRef(), 1000 * mt::Param::s().revive_time);
|
room->frame_event.AddDead(GetWeakPtrRef(), mt::Param::s().pvp_revive_time);
|
||||||
|
a8::SetBitFlag(status, CS_Reviving);
|
||||||
dead_timer = room->xtimer.SetTimeoutWpEx
|
dead_timer = room->xtimer.SetTimeoutWpEx
|
||||||
(mt::Param::s().revive_time * SERVER_FRAME_RATE,
|
(mt::Param::s().pvp_revive_time * SERVER_FRAME_RATE,
|
||||||
[this] (int event, const a8::Args* args)
|
[this] (int event, const a8::Args* args)
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
real_dead = true;
|
if (!room->IsGameOver()) {
|
||||||
SendGameOver();
|
if (dead) {
|
||||||
|
a8::UnSetBitFlag(status, CS_Reviving);
|
||||||
|
++stats->revive;
|
||||||
|
dead = false;
|
||||||
|
real_dead = false;
|
||||||
|
downed = false;
|
||||||
|
SetHP(GetMaxHP());
|
||||||
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
|
room->frame_event.AddRevive(GetWeakPtrRef());
|
||||||
|
{
|
||||||
|
int buff_uniid = TryAddBuff(this, kInvincibleBuffId);
|
||||||
|
if (buff_uniid) {
|
||||||
|
Buff* buff = GetBuffByUniId(buff_uniid);
|
||||||
|
if (buff) {
|
||||||
|
room->xtimer.ModifyTime(buff->remover_timer, 6 * SERVER_FRAME_RATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
&xtimer_attacher);
|
&xtimer_attacher);
|
||||||
} else {
|
++revive_count;
|
||||||
OnDie();
|
|
||||||
KillMgr::Instance()->OnHumanDead(this, &info);
|
|
||||||
room->frame_event.AddDead(GetWeakPtrRef(), 0);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
real_dead = true;
|
|
||||||
dead_frameno = room->GetFrameNo();
|
|
||||||
GetTrigger()->Die(killer_id, weapon_id);
|
|
||||||
OnDie();
|
|
||||||
KillMgr::Instance()->OnHumanDead(this, &info);
|
|
||||||
room->frame_event.AddDead(GetWeakPtrRef(), 0);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (room->GetGasData().old_area_meta &&
|
if (room->GetGasData().old_area_meta &&
|
||||||
room->GetGasData().old_area_meta->CanRevive() &&
|
room->GetGasData().old_area_meta->CanRevive() &&
|
||||||
|
@ -1271,8 +1271,10 @@ void Player::_CMGameOver(f8::MsgHdr& hdr, const cs::CMGameOver& msg)
|
|||||||
|
|
||||||
void Player::_CMWatchWar(f8::MsgHdr& hdr, const cs::CMWatchWar& msg)
|
void Player::_CMWatchWar(f8::MsgHdr& hdr, const cs::CMWatchWar& msg)
|
||||||
{
|
{
|
||||||
|
if (!room->IsMobaModeRoom()) {
|
||||||
AsyncRequestWatchWar(true);
|
AsyncRequestWatchWar(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Player::_CMLeave(f8::MsgHdr& hdr, const cs::CMLeave& msg)
|
void Player::_CMLeave(f8::MsgHdr& hdr, const cs::CMLeave& msg)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user