diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 8a29131e..490aa8a1 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3276,11 +3276,18 @@ void Human::CalcStats() } stats->rank = rank; if (room->IsPveRoom()) { - if (stats->pve_kill_boss) { + if (room->pve_data.pve_kill_boss) { stats->victory = true; stats->settlement_color = 1; GetTeam()->settlement_color = 1; GetTeam()->team_rank = 1; + } else { + if (GetTeam()->GetAliveNum() <= 0) { + stats->victory = false; + stats->settlement_color = 0; + GetTeam()->settlement_color = 0; + GetTeam()->team_rank = 1; + } } } else { stats->victory = stats->rank == 1; diff --git a/server/gameserver/pvedata.cc b/server/gameserver/pvedata.cc index 488ea745..c23a1012 100644 --- a/server/gameserver/pvedata.cc +++ b/server/gameserver/pvedata.cc @@ -69,7 +69,9 @@ void PveData::OnBeKill(Hero* hero) ( [] (Human* hum) -> bool { - hum->stats->pve_kill_boss = true; + if (!hum->dead) { + hum->stats->pve_kill_boss = true; + } return true; } );