fix quest menu selection bug

This commit is contained in:
Martin Michelsen
2022-06-27 17:15:57 -07:00
parent 7064821ac5
commit 2bb3118c1a
+6 -5
View File
@@ -731,11 +731,12 @@ void process_menu_selection(shared_ptr<ServerState> s, shared_ptr<Client> c,
u16string password; u16string password;
u16string unknown_a1; u16string unknown_a1;
if (flags == 0) { uint8_t type_flags = flags & 3;
if (type_flags == 0) {
const auto& cmd = check_size_t<C_MenuSelection_10_Flag00>(data); const auto& cmd = check_size_t<C_MenuSelection_10_Flag00>(data);
menu_id = cmd.menu_id; menu_id = cmd.menu_id;
item_id = cmd.item_id; item_id = cmd.item_id;
} else if (flags == 1) { } else if (type_flags == 1) {
if (uses_unicode) { if (uses_unicode) {
const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag01>(data); const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag01>(data);
menu_id = cmd.menu_id; menu_id = cmd.menu_id;
@@ -747,7 +748,7 @@ void process_menu_selection(shared_ptr<ServerState> s, shared_ptr<Client> c,
item_id = cmd.item_id; item_id = cmd.item_id;
unknown_a1 = decode_sjis(cmd.unknown_a1); unknown_a1 = decode_sjis(cmd.unknown_a1);
} }
} else if (flags == 2) { } else if (type_flags == 2) {
if (uses_unicode) { if (uses_unicode) {
const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag02>(data); const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag02>(data);
menu_id = cmd.menu_id; menu_id = cmd.menu_id;
@@ -759,7 +760,7 @@ void process_menu_selection(shared_ptr<ServerState> s, shared_ptr<Client> c,
item_id = cmd.item_id; item_id = cmd.item_id;
password = decode_sjis(cmd.password); password = decode_sjis(cmd.password);
} }
} else if (flags == 3) { } else if (type_flags == 3) {
if (uses_unicode) { if (uses_unicode) {
const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag03>(data); const auto& cmd = check_size_t<C_MenuSelection_PC_BB_10_Flag03>(data);
menu_id = cmd.menu_id; menu_id = cmd.menu_id;
@@ -774,7 +775,7 @@ void process_menu_selection(shared_ptr<ServerState> s, shared_ptr<Client> c,
password = decode_sjis(cmd.password); password = decode_sjis(cmd.password);
} }
} else { } else {
throw runtime_error("invalid flag"); throw logic_error("invalid type flag");
} }
switch (menu_id) { switch (menu_id) {