diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 30ee1ce2..708e6312 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3821,6 +3821,13 @@ void Human::CalcStats() } } if (room->IsMobaModeRoom()) { stats->victory = GetTeam() == room->GetVictoryTeam(); + if (GetTeam() == room->GetVictoryTeam()) { + GetTeam()->team_rank = 1; + room->GetMobaEnemyTeam(GetTeam())->team_rank = 2; + } else { + GetTeam()->team_rank = 2; + room->GetMobaEnemyTeam(GetTeam())->team_rank = 1; + } if (GetTeam()->team_rank == 1) { stats->settlement_color = 1; GetTeam()->settlement_color = 1; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 3e929c00..53127371 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3676,3 +3676,12 @@ int Room::GetMobaLeftTime() long long remain_time = xtimer.GetRemainTime(moba_over_timer); return (remain_time * FRAME_RATE_MS); } + +Team* Room::GetMobaEnemyTeam(Team* self_team) +{ + if (self_team == GetMobaTeamA()) { + return GetMobaTeamB(); + } else { + return GetMobaTeamA(); + } +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 255b80e9..b50e5d68 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -279,6 +279,7 @@ public: int GetMobaLeftTime(); Team* GetMobaTeamA() { return moba_team_a_; } Team* GetMobaTeamB() { return moba_team_b_; } + Team* GetMobaEnemyTeam(Team* self_team); RoomAgent* GetRoomAgent() { return room_agent_; } int GenShotUniid() { return ++current_shot_uniid_; } int InitWithMobaBattle(long ip_saddr, int socket_handle, std::shared_ptr msg,