1
This commit is contained in:
parent
8245e38da5
commit
3ebbdf55a0
@ -980,66 +980,6 @@ void Human::FindPathInMapService()
|
|||||||
void Human::FillSMGameOver(cs::SMGameOver& msg)
|
void Human::FillSMGameOver(cs::SMGameOver& msg)
|
||||||
{
|
{
|
||||||
int alive_team_num = room->GetAliveTeamNum();
|
int alive_team_num = room->GetAliveTeamNum();
|
||||||
if (stats.rank <= 0) {
|
|
||||||
std::vector<Human*> human_list;
|
|
||||||
room->TraverseHumanList(a8::XParams(),
|
|
||||||
[&human_list] (Human* hum, a8::XParams& param) -> bool
|
|
||||||
{
|
|
||||||
if (hum->leave_frameno_ == 0 ||
|
|
||||||
hum->leave_frameno_ > hum->room->GetBattleStartFrameNo()) {
|
|
||||||
human_list.push_back(hum);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
std::sort(human_list.begin(), human_list.end(),
|
|
||||||
[] (Human* a, Human* b )
|
|
||||||
{
|
|
||||||
if (a->real_dead && b->real_dead) {
|
|
||||||
if (a->dead_frameno == b->dead_frameno) {
|
|
||||||
return a->GetUniId() < b->GetUniId();
|
|
||||||
} else {
|
|
||||||
return a->dead_frameno == 0 ||
|
|
||||||
(b->dead_frameno != 0 && a->dead_frameno > b->dead_frameno);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (a->real_dead) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (b->real_dead) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return a->GetUniId() < b->GetUniId();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
int rank = human_list.size();
|
|
||||||
for (size_t i = 0; i < human_list.size(); ++i) {
|
|
||||||
if (human_list[i] == this) {
|
|
||||||
rank = i + 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (alive_team_num == 1) {
|
|
||||||
if (room->GetAliveTeam() == GetTeam()) {
|
|
||||||
rank = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stats.rank = rank;
|
|
||||||
if (room->IsPveRoom()) {
|
|
||||||
} else {
|
|
||||||
stats.victory = stats.rank == 1;
|
|
||||||
if (GetTeam()->GetAliveNum() <= 0) {
|
|
||||||
GetTeam()->team_rank = room->GetAliveTeamNum();
|
|
||||||
}
|
|
||||||
if (stats.victory) {
|
|
||||||
GetTeam()->team_rank = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (room->IsPveRoom()) {
|
|
||||||
if (stats.pve_kill_boss) {
|
|
||||||
stats.victory = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stats.victory) {
|
if (stats.victory) {
|
||||||
msg.set_watchable(false);
|
msg.set_watchable(false);
|
||||||
@ -1073,11 +1013,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
|
|||||||
(
|
(
|
||||||
[this, &msg] (Human* member) -> bool
|
[this, &msg] (Human* member) -> bool
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
{
|
{
|
||||||
#else
|
|
||||||
if (this != member) {
|
|
||||||
#endif
|
|
||||||
member->FillMFTeamData(this, msg.add_team_data(), true);
|
member->FillMFTeamData(this, msg.add_team_data(), true);
|
||||||
cs::MFPlayerStats* p = msg.add_player_stats();
|
cs::MFPlayerStats* p = msg.add_player_stats();
|
||||||
member->FillMFPlayerStats(p);
|
member->FillMFPlayerStats(p);
|
||||||
@ -1085,12 +1021,6 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
{
|
|
||||||
cs::MFPlayerStats* p = msg.add_player_stats();
|
|
||||||
FillMFPlayerStats(p);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
msg.set_total_team_num(room->GetTeamNum());
|
msg.set_total_team_num(room->GetTeamNum());
|
||||||
if (room->IsPveRoom()) {
|
if (room->IsPveRoom()) {
|
||||||
@ -2215,8 +2145,21 @@ void Human::GenBattleReportData(a8::MutableXObject* params)
|
|||||||
rank = 1;
|
rank = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
stats.rank = rank;
|
stats.rank = rank;
|
||||||
|
if (room->IsPveRoom()) {
|
||||||
|
if (stats.pve_kill_boss) {
|
||||||
|
stats.victory = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
stats.victory = stats.rank == 1;
|
||||||
|
if (GetTeam()->GetAliveNum() <= 0) {
|
||||||
|
GetTeam()->team_rank = room->GetAliveTeamNum();
|
||||||
|
}
|
||||||
|
if (stats.victory) {
|
||||||
|
GetTeam()->team_rank = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!stats.statemented) {
|
if (!stats.statemented) {
|
||||||
stats.Statement(this);
|
stats.Statement(this);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user