From ebb7b35932dbbf7f220506ad2aee54a9719fed4b Mon Sep 17 00:00:00 2001 From: 0O0o0oOoO00 <11174151+0O0o0oOoO00@users.noreply.github.com> Date: Thu, 5 Jun 2025 18:51:56 +0800 Subject: [PATCH] fix: hook ys.Battle.BattleGateGuild.GeneralPackage --- blcrack/cracker/cracker.cpp | 22 ++++++++++++++++------ blcrack/cracker/cracker.hpp | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/blcrack/cracker/cracker.cpp b/blcrack/cracker/cracker.cpp index 0707dc30c..8ae5c13fb 100644 --- a/blcrack/cracker/cracker.cpp +++ b/blcrack/cracker/cracker.cpp @@ -403,6 +403,7 @@ void Cracker::load_lua_resources() { m_original.BossSingleBattleFleetSelectSubPanel_CheckValid = m_state["BossSingleBattleFleetSelectSubPanel"]["CheckValid"]; m_original.Chapter_IsEliteFleetLegal = m_state["Chapter"]["IsEliteFleetLegal"]; m_original.Ship_getShipProperties = m_state["Ship"]["getShipProperties"]; + m_original.ys_Battle_BattleGateGuild_GeneralPackage = m_state["ys"]["Battle"]["BattleGateGuild"]["GeneralPackage"]; } void Cracker::hook_all_lua_functions() { @@ -413,13 +414,22 @@ void Cracker::hook_all_lua_functions() { return m_original.GetBattleCheckResult(L, args); } - if (args.size() >= 3) { - double total_time = args[2]; - std::vector new_args(args.begin(), args.end()); - new_args[2] = sol::make_object(L, total_time / m_global_speedup_rate.load()); - return m_original.GetBattleCheckResult(sol::as_args(new_args)); + double total_time = args[2]; + std::vector new_args(args.begin(), args.end()); + new_args[2] = sol::make_object(L, total_time / m_global_speedup_rate.load()); + return m_original.GetBattleCheckResult(L, sol::as_args(new_args)); + }; + + m_state["ys"]["Battle"]["BattleGateGuild"]["GeneralPackage"] = [this](sol::this_state L, Lua::VariadicArgs args) -> Lua::Table { + CALLED(BattleGateGuild.GeneralPackage); + if (!IS_ENABLED(GLOBAL_SPEEDUP)) { + return m_original.ys_Battle_BattleGateGuild_GeneralPackage(L, args); } - return m_original.GetBattleCheckResult(L, args); + + Lua::Table ret = m_original.ys_Battle_BattleGateGuild_GeneralPackage(args); + double total_time = ret["total_time"]; + ret["total_time"] = total_time / m_global_speedup_rate.load(); + return ret; }; m_state["FinishStageCommand"]["GeneralPackage"] = [this](sol::this_state L, Lua::VariadicArgs args) -> Lua::Table { diff --git a/blcrack/cracker/cracker.hpp b/blcrack/cracker/cracker.hpp index 7d4fa91b1..004bf47d8 100644 --- a/blcrack/cracker/cracker.hpp +++ b/blcrack/cracker/cracker.hpp @@ -193,6 +193,7 @@ private: Lua::Function Ship_intimacyAdditions; Lua::Function GetBattleCheckResult; Lua::Function FinishStageCommand_GeneralPackage; + Lua::Function ys_Battle_BattleGateGuild_GeneralPackage; } m_original; struct { Lua::Function Ship_getIntimacyLevel;