From 64d7ec5cde9fcc9769f98936dc463d31592e933a Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Thu, 2 Feb 2023 20:01:48 -0800 Subject: [PATCH] fix item tracking in battle/challenge modes --- src/ChatCommands.cc | 2 +- src/ReceiveCommands.cc | 9 ++++++++- src/ReceiveSubcommands.cc | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ChatCommands.cc b/src/ChatCommands.cc index a1e142fe..c10521af 100644 --- a/src/ChatCommands.cc +++ b/src/ChatCommands.cc @@ -955,7 +955,7 @@ static void server_command_what(shared_ptr, shared_ptr l, return; } if (!(l->flags & Lobby::Flag::ITEM_TRACKING_ENABLED)) { - send_text_message(c, u"$C4Item tracking is off"); + send_text_message(c, u"$C4Item tracking is\nnot available"); } else { float min_dist2 = 0.0f; uint32_t nearest_item_id = 0xFFFFFFFF; diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index da445cdf..f1d430ef 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -3101,7 +3101,14 @@ shared_ptr create_game_generic( return nullptr; } - bool item_tracking_enabled = (c->version() == GameVersion::BB) | s->item_tracking_enabled; + // TODO: We disable item tracking for battle and challenge mode because + // players' inventories are reset when they start the quests, and the server + // is not notified when this happens. We'll have to implement this anyway for + // BB, but for now we ignore it. + bool item_tracking_enabled = + (c->version() == GameVersion::BB) | + (s->item_tracking_enabled && + !(flags & (Lobby::Flag::BATTLE_MODE | Lobby::Flag::CHALLENGE_MODE))); shared_ptr game = s->create_lobby(); game->name = name; diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index 3c0b51f9..5cbc0eec 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -1405,7 +1405,7 @@ subcommand_handler_t subcommand_handlers[0x100] = { /* 87 */ nullptr, /* 88 */ on_subcommand_forward_check_size_game, /* 89 */ on_subcommand_forward_check_size_game, - /* 8A */ nullptr, + /* 8A */ on_subcommand_forward_check_size_game, /* 8B */ nullptr, /* 8C */ nullptr, /* 8D */ on_subcommand_forward_check_size_client,