diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index 3bdcf09c..6bdafa01 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -5220,10 +5220,10 @@ struct G_SetChallengeTime_6x95 { struct G_SelectChallengeModeFailureOption_6x97 { G_UnusedHeader header; - le_uint32_t unused1 = 0; + le_uint32_t client_id = 0; le_uint32_t is_retry = 0; + le_uint32_t unused1 = 0; le_uint32_t unused2 = 0; - le_uint32_t unused3 = 0; } __packed_ws__(G_SelectChallengeModeFailureOption_6x97, 0x14); // 6x98: Unknown diff --git a/src/QuestScript.cc b/src/QuestScript.cc index 5459413f..d6bc38e0 100644 --- a/src/QuestScript.cc +++ b/src/QuestScript.cc @@ -1788,9 +1788,11 @@ static const QuestScriptOpcodeDefinition opcode_defs[] = { // regA = client ID {0xF89F, {"player_recovery", "unknownF89F"}, {R_REG}, F_V2_V4}, - // These opcodes set, clear, and check (respectively) a flag that appears to do nothing at all. + // Disables or enables a flag that controls whether the Yes/No menu appears when entering a boss warp. {0xF8A0, {"disable_bosswarp_option", "unknownF8A0"}, {}, F_V2_V4}, {0xF8A1, {"enable_bosswarp_option", "unknownF8A1"}, {}, F_V2_V4}, + + // Gets the value (in regA) of the flag set by the above two opcodes (0 = Yes/No menu enabled, 1 = disabled). {0xF8A2, {"is_bosswarp_opt_disabled", "get_bosswarp_option"}, {W_REG}, F_V2_V4}, // Loads the player's serial number into the "flag buffer", which is a 4-byte buffer that can be written to event diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index 0f91120c..989da457 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -4812,7 +4812,7 @@ static asio::awaitable on_request_challenge_grave_recovery_item_bb(std::sh } static asio::awaitable on_challenge_mode_retry_or_quit(std::shared_ptr c, SubcommandMessage& msg) { - const auto& cmd = msg.check_size_t(); + auto& cmd = msg.check_size_t(); auto l = c->require_lobby(); auto leader_c = l->clients.at(l->leader_id); @@ -4820,6 +4820,10 @@ static asio::awaitable on_challenge_mode_retry_or_quit(std::shared_ptris_game() && (cmd.is_retry == 1) && l->quest && (l->quest->meta.challenge_template_index >= 0)) { auto s = l->require_server_state();