From 36092f1fdb7fbf4d9929e1376c869c6ef68faecf Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Mon, 27 Apr 2026 18:29:14 -0400 Subject: [PATCH] added setting --- include/dusk/settings.h | 1 + src/dusk/imgui/ImGuiMenuGame.cpp | 3 +++ src/dusk/settings.cpp | 4 +++- src/f_op/f_op_actor.cpp | 4 +++- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 2acc69e43c..5ab2e4b6b2 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -71,6 +71,7 @@ struct UserSettings { ConfigVar disableRupeeCutscenes; ConfigVar noSwordRecoil; ConfigVar damageMultiplier; + ConfigVar hyperEnemies; ConfigVar noHeartDrops; ConfigVar instantDeath; ConfigVar fastClimbing; diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index 251fabd227..cd4dea568c 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -216,6 +216,8 @@ namespace dusk { ImGui::BeginDisabled(getSettings().game.speedrunMode); config::ImGuiSliderInt("Damage Multiplier", getSettings().game.damageMultiplier, 1, 8, "x%d"); + config::ImGuiCheckbox("Hyper Enemies", getSettings().game.hyperEnemies); + config::ImGuiCheckbox("Instant Death", getSettings().game.instantDeath); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Any hit will instantly kill you."); @@ -1122,6 +1124,7 @@ namespace dusk { getSettings().game.damageMultiplier.setValue(1); getSettings().game.instantDeath.setValue(false); getSettings().game.noHeartDrops.setValue(false); + getSettings().game.hyperEnemies.setValue(false); getSettings().game.infiniteHearts.setValue(false); getSettings().game.infiniteArrows.setValue(false); diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index ee6ba663ca..0cc40d607c 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -31,7 +31,8 @@ UserSettings g_userSettings = { .disableRupeeCutscenes {"game.disableRupeeCutscenes", false}, .noSwordRecoil {"game.noSwordRecoil", false}, .damageMultiplier {"game.damageMultiplier", 1}, - .noHeartDrops{"game.noHeartDrops", false}, + .hyperEnemies {"game.hyperEnemies", false}, + .noHeartDrops {"game.noHeartDrops", false}, .instantDeath {"game.instantDeath", false}, .fastClimbing {"game.fastClimbing", false}, .noMissClimbing {"game.noMissClimbing", false}, @@ -143,6 +144,7 @@ void registerSettings() { Register(g_userSettings.game.disableRupeeCutscenes); Register(g_userSettings.game.noSwordRecoil); Register(g_userSettings.game.damageMultiplier); + Register(g_userSettings.game.hyperEnemies); Register(g_userSettings.game.noHeartDrops); Register(g_userSettings.game.instantDeath); Register(g_userSettings.game.fastClimbing); diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp index 0e68293eeb..f1eb03d439 100644 --- a/src/f_op/f_op_actor.cpp +++ b/src/f_op/f_op_actor.cpp @@ -335,9 +335,11 @@ static int fopAc_Execute(void* i_this) { print_error_check_c error_check(actor, print_error_check_c::sEXECUTE); #endif - if (actor->group == fopAc_ENEMY_e) { + #if TARGET_PC + if (actor->group == fopAc_ENEMY_e && dusk::getSettings().game.hyperEnemies) { fpcMtd_Execute((process_method_class*)actor->sub_method, actor); } + #endif ret = fpcMtd_Execute((process_method_class*)actor->sub_method, actor);