From 3ecb1eb4b46b37e73cdf1be4742d84ecbe16060d Mon Sep 17 00:00:00 2001 From: SES Date: Sun, 31 May 2026 20:46:43 +0200 Subject: [PATCH 1/4] Invincible Link ability --- include/dusk/settings.h | 1 + src/d/actor/d_a_alink_damage.inc | 13 ++++++++++++- src/dusk/settings.cpp | 2 ++ src/dusk/ui/settings.cpp | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index f48f5862ca..a8bf890f59 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -230,6 +230,7 @@ struct UserSettings { ConfigVar fastSpinner; ConfigVar freeMagicArmor; ConfigVar invincibleEnemies; + ConfigVar invincibleLink; // Technical ConfigVar restoreWiiGlitches; diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc index bccdbf7381..f78ac4c491 100644 --- a/src/d/actor/d_a_alink_damage.inc +++ b/src/d/actor/d_a_alink_damage.inc @@ -202,7 +202,12 @@ int daAlink_c::setDamagePoint(int i_dmgAmount, BOOL i_checkZoraMag, BOOL i_setDm if (!mpHIO->mDamage.m.mInvincible && g_debugHpMode == 0) #endif { - dComIfGp_setItemLifeCount(-i_dmgAmount, 0); +#if TARGET_PC + if (!dusk::getSettings().game.invincibleLink) +#endif + { + dComIfGp_setItemLifeCount(-i_dmgAmount, 0); + } } #if TARGET_PC @@ -490,6 +495,12 @@ BOOL daAlink_c::checkDamageAction() { return 0; } +#if TARGET_PC + if (dusk::getSettings().game.invincibleLink) { + return checkWolfBarrierHitReverse(); + } +#endif + if (mDamageTimer != 0) { return checkWolfBarrierHitReverse(); } diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 3bea017e2c..02b66fea29 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -123,6 +123,7 @@ UserSettings g_userSettings = { .fastSpinner {"game.fastSpinner", false}, .freeMagicArmor {"game.freeMagicArmor", false}, .invincibleEnemies {"game.invincibleEnemies", false}, + .invincibleLink {"game.invincibleLink", false}, // Technical .restoreWiiGlitches {"game.restoreWiiGlitches", false}, @@ -280,6 +281,7 @@ void registerSettings() { Register(g_userSettings.game.superClawshot); Register(g_userSettings.game.alwaysGreatspin); Register(g_userSettings.game.invincibleEnemies); + Register(g_userSettings.game.invincibleLink); 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 44fd9e1724..7096eb5ce5 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -213,6 +213,7 @@ void reset_for_speedrun_mode() { getSettings().game.fastSpinner.setSpeedrunValue(false); getSettings().game.freeMagicArmor.setSpeedrunValue(false); getSettings().game.invincibleEnemies.setSpeedrunValue(false); + getSettings().game.invincibleLink.setSpeedrunValue(false); getSettings().game.pauseOnFocusLost.setSpeedrunValue(false); aurora_set_pause_on_focus_lost(false); @@ -1294,6 +1295,8 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { "Lets the magic armor work without consuming rupees."); addCheat("Invincible Enemies", getSettings().game.invincibleEnemies, "Prevents enemies from taking damage."); + addCheat("Invincible Link", getSettings().game.invincibleLink, + "Makes Link ignore all incoming damage"); }); add_tab("Interface", [this](Rml::Element* content) { From c35d89a258f43988b6ef926c1bf160963cbccf3c Mon Sep 17 00:00:00 2001 From: SES Date: Mon, 1 Jun 2026 01:00:19 +0200 Subject: [PATCH 2/4] Add missing end period for consistency with other helpTexts --- src/dusk/ui/settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index 7096eb5ce5..670c3809a7 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -1296,7 +1296,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { addCheat("Invincible Enemies", getSettings().game.invincibleEnemies, "Prevents enemies from taking damage."); addCheat("Invincible Link", getSettings().game.invincibleLink, - "Makes Link ignore all incoming damage"); + "Makes Link ignore all incoming damage."); }); add_tab("Interface", [this](Rml::Element* content) { From fa2bd046137470e61b666c48a76c6639876dd9ef Mon Sep 17 00:00:00 2001 From: SES Date: Mon, 1 Jun 2026 01:39:45 +0200 Subject: [PATCH 3/4] Retry build From 99cc28d6591fa9b6181a49936ccb7e1c6940fae0 Mon Sep 17 00:00:00 2001 From: SES Date: Mon, 1 Jun 2026 11:42:15 +0200 Subject: [PATCH 4/4] Retry build