diff --git a/src/Features/Tas/TasTools/AutoJumpTool.cpp b/src/Features/Tas/TasTools/AutoJumpTool.cpp index 484f7c0c3..961ea378f 100644 --- a/src/Features/Tas/TasTools/AutoJumpTool.cpp +++ b/src/Features/Tas/TasTools/AutoJumpTool.cpp @@ -15,9 +15,15 @@ void AutoJumpTool::Apply(TasFramebulk &bulk, const TasPlayerInfo &pInfo) { if (params.enabled) { if (pInfo.grounded && !pInfo.ducked && !hasJumpedLastTick) { bulk.buttonStates[TasControllerInput::Jump] = true; + if (params.ducked) { + bulk.buttonStates[TasControllerInput::Crouch] = true; + } hasJumpedLastTick = true; } else { bulk.buttonStates[TasControllerInput::Jump] = false; + if (params.ducked) { + bulk.buttonStates[TasControllerInput::Crouch] = false; + } hasJumpedLastTick = false; } } else { @@ -29,7 +35,17 @@ std::shared_ptr AutoJumpTool::ParseParams(std::vectorGetName(), vp.size())); - bool arg = vp[0] == "on"; + bool ducked = false; + bool enabled = false; - return std::make_shared(arg); + if (vp[0] == "on") { + enabled = true; + } else if (vp[0] == "ducked" || vp[0] == "duck") { + enabled = true; + ducked = true; + } else if (vp[0] != "off") { + throw TasParserException(Utils::ssprintf("Bad parameter for tool %s: %s", this->GetName(), vp[0].c_str())); + } + + return std::make_shared(enabled, ducked); } diff --git a/src/Features/Tas/TasTools/AutoJumpTool.hpp b/src/Features/Tas/TasTools/AutoJumpTool.hpp index 6584003b1..6342b0a76 100644 --- a/src/Features/Tas/TasTools/AutoJumpTool.hpp +++ b/src/Features/Tas/TasTools/AutoJumpTool.hpp @@ -5,9 +5,12 @@ struct AutoJumpToolParams : public TasToolParams { AutoJumpToolParams() : TasToolParams() { } - AutoJumpToolParams(bool enabled) - : TasToolParams(enabled) { + AutoJumpToolParams(bool enabled, bool ducked) + : TasToolParams(enabled) + , ducked(ducked) { } + + bool ducked = false; }; class AutoJumpTool : public TasToolWithParams {