1
This commit is contained in:
parent
5bef1d7f8b
commit
742f2d4087
@ -2717,7 +2717,7 @@ void Human::OnDie()
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
{
|
if (real_dead) {
|
||||||
std::set<Human*> over_humans;
|
std::set<Human*> over_humans;
|
||||||
if (!leave_) {
|
if (!leave_) {
|
||||||
if (!HasNoDownedTeammate()) {
|
if (!HasNoDownedTeammate()) {
|
||||||
@ -4624,7 +4624,14 @@ 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 (GetBattleContext()->GetReviveCoin() > 0 && real_killer_id != GetUniId()) {
|
if (real_killer_id != GetUniId() && GetTeam() && GetTeam()->HasReviveCoin(this)) {
|
||||||
|
real_dead = true;
|
||||||
|
dead_frameno = room->GetFrameNo();
|
||||||
|
GetTrigger()->Die(killer_id, weapon_id);
|
||||||
|
if (real_dead) {
|
||||||
|
real_dead = false;
|
||||||
|
OnDie();
|
||||||
|
KillMgr::Instance()->OnHumanDead(this, &info);
|
||||||
room->frame_event.AddDead(GetWeakPtrRef(), 1000 * MetaMgr::Instance()->revive_time);
|
room->frame_event.AddDead(GetWeakPtrRef(), 1000 * MetaMgr::Instance()->revive_time);
|
||||||
dead_timer = room->xtimer.AddDeadLineTimerAndAttach
|
dead_timer = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
(MetaMgr::Instance()->revive_time * SERVER_FRAME_RATE,
|
(MetaMgr::Instance()->revive_time * SERVER_FRAME_RATE,
|
||||||
@ -4642,10 +4649,11 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we
|
|||||||
Human* hum = (Human*)param.sender.GetUserData();
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
hum->dead_timer = nullptr;
|
hum->dead_timer = nullptr;
|
||||||
});
|
});
|
||||||
dead_frameno = room->GetFrameNo();
|
} else {
|
||||||
GetTrigger()->Die(killer_id, weapon_id);
|
|
||||||
OnDie();
|
OnDie();
|
||||||
KillMgr::Instance()->OnHumanDead(this, &info);
|
KillMgr::Instance()->OnHumanDead(this, &info);
|
||||||
|
room->frame_event.AddDead(GetWeakPtrRef(), 0);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
real_dead = true;
|
real_dead = true;
|
||||||
dead_frameno = room->GetFrameNo();
|
dead_frameno = room->GetFrameNo();
|
||||||
|
@ -140,3 +140,13 @@ void Team::AddCombineMemberNum(int member_num)
|
|||||||
{
|
{
|
||||||
combined_team_member_num_ += member_num;
|
combined_team_member_num_ += member_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Team::HasReviveCoin(Human* member)
|
||||||
|
{
|
||||||
|
for (Human* member : members_) {
|
||||||
|
if (member->GetBattleContext()->GetReviveCoin() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -28,6 +28,7 @@ class Team
|
|||||||
void AddCombineMemberNum(int member_num);
|
void AddCombineMemberNum(int member_num);
|
||||||
Human* GetMemberByUniId(int member_id);
|
Human* GetMemberByUniId(int member_id);
|
||||||
int GetInitTeamMemberNum() { return init_team_member_num_; };
|
int GetInitTeamMemberNum() { return init_team_member_num_; };
|
||||||
|
bool HasReviveCoin(Human* member);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int team_id_ = 0;
|
int team_id_ = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user