assign inventory item IDs in lobbies too

This commit is contained in:
Martin Michelsen
2023-12-28 10:22:48 -08:00
parent 09ac8921fe
commit 7b7c9d371f
+5 -8
View File
@@ -465,28 +465,25 @@ void Lobby::add_client(shared_ptr<Client> c, ssize_t required_client_id) {
this->leader_id = c->lobby_client_id; this->leader_id = c->lobby_client_id;
} }
// If the lobby is a game and there was no one in it, reassign all the floor // If this is a lobby or no one was here before this, reassign all the floor
// item IDs and reset the next item IDs // item IDs and reset the next item IDs
if (this->is_game()) { if (!this->is_game() || (leader_index >= this->max_clients)) {
if (leader_index >= this->max_clients) {
for (size_t x = 0; x < 12; x++) { for (size_t x = 0; x < 12; x++) {
this->next_item_id_for_client[x] = 0x00010000 + 0x00200000 * x; this->next_item_id_for_client[x] = 0x00010000 + 0x00200000 * x;
} }
this->next_game_item_id = 0xCC000000; this->next_game_item_id = 0xCC000000;
// Reassign all floor item IDs so they won't conflict with any players'
// item IDs
for (auto& m : this->floor_item_managers) { for (auto& m : this->floor_item_managers) {
this->next_game_item_id = m.reassign_all_item_ids(this->next_game_item_id); this->next_game_item_id = m.reassign_all_item_ids(this->next_game_item_id);
} }
} }
this->assign_inventory_and_bank_item_ids(c); this->assign_inventory_and_bank_item_ids(c);
// On BB, we send artificial flag state to fix an Episode 2 bug where the // On BB, we send artificial flag state to fix an Episode 2 bug where the
// CCA door lock state is overwritten by quests. // CCA door lock state is overwritten by quests.
if (c->version() == Version::BB_V4) { if (this->is_game() && (c->version() == Version::BB_V4)) {
c->config.set_flag(Client::Flag::SHOULD_SEND_ARTIFICIAL_FLAG_STATE); c->config.set_flag(Client::Flag::SHOULD_SEND_ARTIFICIAL_FLAG_STATE);
} }
}
// If the lobby is recording a battle record, add the player join event // If the lobby is recording a battle record, add the player join event
if (this->battle_record) { if (this->battle_record) {