diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index 48f69e46..7b2f7088 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -4627,6 +4627,11 @@ static void on_EA_BB(shared_ptr c, uint16_t command, uint32_t flag, stri send_all_nearby_team_metadatas_to_client(c, true); break; case 0x14EA: + // On Sega's original servers, this command was likely used for requesting + // other players' team membership information (15EA) only when the player + // pressed Tab in lobbies to show players' team names. newserv instead + // sends team membership whenever any player joins the lobby, so we ignore + // the 14EA requests. break; case 0x18EA: // Ranking information send_team_rank_info(c); diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index a4e5e37c..f770335d 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -677,12 +677,19 @@ static void on_set_player_visible(shared_ptr c, uint8_t command, uint8_t forward_subcommand(c, command, flag, data, size, 0x1F, 0x21); auto l = c->lobby.lock(); - if (l && !l->is_game() && !is_v1(c->version())) { - send_arrow_update(l); - } - if (l && !l->is_game() && l->check_flag(Lobby::Flag::IS_OVERFLOW)) { - send_message_box(c, "$C6All lobbies are full.\n\n$C7You are in a private lobby. You can use the\nteleporter to join other lobbies if there is space\navailable."); - send_lobby_message_box(c, ""); + if (l) { + if (!l->is_game()) { + if (!is_v1(c->version())) { + send_arrow_update(l); + } + if (l->check_flag(Lobby::Flag::IS_OVERFLOW)) { + send_message_box(c, "$C6All lobbies are full.\n\n$C7You are in a private lobby. You can use the\nteleporter to join other lobbies if there is space\navailable."); + send_lobby_message_box(c, ""); + } + } + if (c->version() == Version::BB_V4) { + send_all_nearby_team_metadatas_to_client(c, false); + } } } } diff --git a/src/SendCommands.cc b/src/SendCommands.cc index 343df98a..adc43a65 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -1802,9 +1802,6 @@ void send_join_lobby_t(shared_ptr c, shared_ptr l, shared_ptrversion())) { send_player_records_t(c, l, joining_client); } - if (c->version() == Version::BB_V4) { - send_all_nearby_team_metadatas_to_client(c, false); - } uint8_t lobby_type; if (c->config.override_lobby_number != 0x80) {