From 3e62c1e96ef96982251326f7fc370eb1832bb6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFs?= <49660929+SailorSnoW@users.noreply.github.com> Date: Wed, 13 May 2026 06:52:35 +0200 Subject: [PATCH] Add Invincible Enemies cheat (#1123) --- include/dusk/settings.h | 1 + src/d/d_cc_uty.cpp | 8 ++++++++ src/dusk/settings.cpp | 2 ++ src/dusk/ui/settings.cpp | 3 +++ 4 files changed, 14 insertions(+) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index 2c73414412..43e565ed5e 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -172,6 +172,7 @@ struct UserSettings { ConfigVar fastRoll; ConfigVar fastSpinner; ConfigVar freeMagicArmor; + ConfigVar invincibleEnemies; // Technical ConfigVar restoreWiiGlitches; diff --git a/src/d/d_cc_uty.cpp b/src/d/d_cc_uty.cpp index ec9a177683..218cb362f4 100644 --- a/src/d/d_cc_uty.cpp +++ b/src/d/d_cc_uty.cpp @@ -15,6 +15,7 @@ #include "f_op/f_op_actor_mng.h" #if TARGET_PC #include "dusk/achievements.h" +#include "dusk/settings.h" #endif static int plCutLRC[58] = { @@ -429,6 +430,13 @@ fopAc_ac_c* cc_at_check(fopAc_ac_c* i_enemy, dCcU_AtInfo* i_AtInfo) { } } +#if TARGET_PC + if (dusk::getSettings().game.invincibleEnemies && + fopAcM_GetGroup(i_enemy) == fopAc_ENEMY_e) { + i_AtInfo->mAttackPower = 0; + } +#endif + if (i_AtInfo->mAttackPower != 0) { i_enemy->health -= i_AtInfo->mAttackPower; } diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 3af80d3a0f..5e3f73a366 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -107,6 +107,7 @@ UserSettings g_userSettings = { .fastRoll {"game.fastRoll", false}, .fastSpinner {"game.fastSpinner", false}, .freeMagicArmor {"game.freeMagicArmor", false}, + .invincibleEnemies {"game.invincibleEnemies", false}, // Technical .restoreWiiGlitches {"game.restoreWiiGlitches", false}, @@ -253,6 +254,7 @@ void registerSettings() { Register(g_userSettings.game.moonJump); Register(g_userSettings.game.superClawshot); Register(g_userSettings.game.alwaysGreatspin); + Register(g_userSettings.game.invincibleEnemies); Register(g_userSettings.game.enableFrameInterpolation); Register(g_userSettings.game.gyroMode); Register(g_userSettings.game.enableGyroAim); diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 961c3f1658..a63ed6371f 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -197,6 +197,7 @@ void reset_for_speedrun_mode() { getSettings().game.fastRoll.setSpeedrunValue(false); getSettings().game.fastSpinner.setSpeedrunValue(false); getSettings().game.freeMagicArmor.setSpeedrunValue(false); + getSettings().game.invincibleEnemies.setSpeedrunValue(false); getSettings().game.pauseOnFocusLost.setSpeedrunValue(false); aurora_set_pause_on_focus_lost(false); @@ -1134,6 +1135,8 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { "Speeds up Spinner movement while holding R."); addCheat("Free Magic Armor", getSettings().game.freeMagicArmor, "Lets the magic armor work without consuming rupees."); + addCheat("Invincible Enemies", getSettings().game.invincibleEnemies, + "Prevents enemies from taking damage."); }); add_tab("Interface", [this](Rml::Element* content) {