From 0d1e680ddd8bf8b41f963e20ce91c6bfe7c5c770 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 4 Apr 2026 02:59:53 -0700 Subject: [PATCH] no sword recoil enhancement --- include/dusk/settings.h | 1 + src/d/actor/d_a_alink_cut.inc | 8 ++++++++ src/dusk/imgui/ImGuiMenuEnhancements.cpp | 5 +++++ src/dusk/settings.cpp | 1 + 4 files changed, 15 insertions(+) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index fddcd3b0f0..cd9a1e0cf0 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -31,6 +31,7 @@ struct UserSettings { bool biggerWallets; bool noReturnRupees; bool disableRupeeCutscenes; + bool noSwordRecoil; // Preferences bool enableMirrorMode; diff --git a/src/d/actor/d_a_alink_cut.inc b/src/d/actor/d_a_alink_cut.inc index 4e9dd18aee..8e61a262cb 100644 --- a/src/d/actor/d_a_alink_cut.inc +++ b/src/d/actor/d_a_alink_cut.inc @@ -7,6 +7,8 @@ #include "d/actor/d_a_b_gnd.h" #include "SSystem/SComponent/c_math.h" +#include "dusk/settings.h" + enum daAlink_CutNmParamType { CUT_NM_PARAM_VERTICAL, CUT_NM_PARAM_LEFT, @@ -369,6 +371,12 @@ BOOL daAlink_c::changeCutReverseProc(daAlink_c::daAlink_ANM i_anmID) { return procCutReverseInit(i_anmID); } + #if TARGET_PC + if (dusk::getSettings().game.noSwordRecoil) { + return FALSE; + } + #endif + if (checkNoResetFlg0(FLG0_CUT_AT_FLG) || mEquipItem == dItemNo_COPY_ROD_e) { cXyz sp28; Vec sp1C; diff --git a/src/dusk/imgui/ImGuiMenuEnhancements.cpp b/src/dusk/imgui/ImGuiMenuEnhancements.cpp index 8ed7b1d8c4..d0285789cd 100644 --- a/src/dusk/imgui/ImGuiMenuEnhancements.cpp +++ b/src/dusk/imgui/ImGuiMenuEnhancements.cpp @@ -27,6 +27,11 @@ namespace dusk { ImGui::SetTooltip("Rupees won't play cutscenes after you've collected them the first time"); } + ImGui::Checkbox("No Sword Recoil", &getSettings().game.noSwordRecoil); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Link won't recoil when his sword hits walls"); + } + ImGui::Checkbox("Hide TV Settings Screen", &getSettings().game.hideTvSettingsScreen); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Hides the TV calibration screen shown when loading a save"); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 734188987a..7e658f6e5c 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -27,6 +27,7 @@ UserSettings g_userSettings = { .biggerWallets = false, .noReturnRupees = false, .disableRupeeCutscenes = false, + .noSwordRecoil = false, // Preferences .enableMirrorMode = false,