This commit is contained in:
aozhiwei 2022-11-23 12:40:42 +08:00
parent 5bef1d7f8b
commit 742f2d4087
3 changed files with 41 additions and 22 deletions

View File

@ -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();

View File

@ -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;
}

View File

@ -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;