From ec453d1fa874a6b2af5251cbdaeb7b62077f61e4 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sat, 28 Jan 2023 09:19:30 -0800 Subject: [PATCH] block auction commands in non-Ep3 proxy sessions --- src/ProxyCommands.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index e68e6500..cecae32d 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -1189,6 +1189,23 @@ static HandlerResult S_G_B9(shared_ptr, : HandlerResult::Type::SUPPRESS; } +static HandlerResult S_G_EF(shared_ptr, + ProxyServer::LinkedSession& session, uint16_t, uint32_t, string& data) { + if (session.newserv_client_config.cfg.flags & Client::Flag::IS_EPISODE_3) { + if (session.options.ep3_infinite_meseta) { + auto& cmd = check_size_t(data, + offsetof(S_StartCardAuction_GC_Ep3_EF, unused), 0xFFFF); + if (cmd.points_available != 0x7FFF) { + cmd.points_available = 0x7FFF; + return HandlerResult::Type::MODIFIED; + } + } + return HandlerResult::Type::FORWARD; + } else { + return HandlerResult::Type::SUPPRESS; + } +} + static HandlerResult S_G_BA(shared_ptr, ProxyServer::LinkedSession& session, uint16_t, uint32_t, string& data) { if (session.options.ep3_infinite_meseta) { @@ -1793,7 +1810,7 @@ static on_command_t handlers[0x100][6][2] = { /* EC */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* ED */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, /* EE */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, -/* EF */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, +/* EF */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_G_EF, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, /* F0 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}}, /* F1 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, /* F2 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}},