mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-11 02:53:16 -04:00
More Choices
- Add cosmetic and double defense options These both have been requested a couple times
This commit is contained in:
@@ -37,7 +37,9 @@ enum class GyroMode : u8 {
|
||||
enum class MagicArmorMode : u8 {
|
||||
NORMAL = 0,
|
||||
ON_DAMAGE = 1,
|
||||
NEVER = 2,
|
||||
DOUBLE_DEFENSE = 2,
|
||||
INVINCIBLE = 3,
|
||||
COSMETIC = 4,
|
||||
};
|
||||
|
||||
namespace config {
|
||||
@@ -68,7 +70,7 @@ struct ConfigEnumRange<GyroMode> {
|
||||
template <>
|
||||
struct ConfigEnumRange<MagicArmorMode> {
|
||||
static constexpr auto min = MagicArmorMode::NORMAL;
|
||||
static constexpr auto max = MagicArmorMode::NEVER;
|
||||
static constexpr auto max = MagicArmorMode::COSMETIC;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -12738,7 +12738,19 @@ void daAlink_c::setMagicArmorBrk(int i_status) {
|
||||
|
||||
BOOL daAlink_c::checkMagicArmorHeavy() const {
|
||||
#if TARGET_PC
|
||||
return checkMagicArmorWearAbility() && (dComIfGs_getRupee() == 0 && dusk::getSettings().game.armorRupeeDrain.getValue() == dusk::MagicArmorMode::NORMAL);
|
||||
if(!checkMagicArmorWearAbility()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch(dusk::getSettings().game.armorRupeeDrain) {
|
||||
case dusk::MagicArmorMode::NORMAL:
|
||||
return dComIfGs_getRupee() == 0;
|
||||
case dusk::MagicArmorMode::ON_DAMAGE:
|
||||
case dusk::MagicArmorMode::DOUBLE_DEFENSE:
|
||||
case dusk::MagicArmorMode::INVINCIBLE:
|
||||
case dusk::MagicArmorMode::COSMETIC:
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return checkMagicArmorWearAbility() && dComIfGs_getRupee() == 0;
|
||||
#endif
|
||||
|
||||
@@ -192,7 +192,7 @@ int daAlink_c::setDamagePoint(int i_dmgAmount, BOOL i_checkZoraMag, BOOL i_setDm
|
||||
|
||||
if (checkMagicArmorNoDamage()) {
|
||||
#if TARGET_PC
|
||||
if(dusk::getSettings().game.armorRupeeDrain.getValue() == dusk::MagicArmorMode::NEVER) {
|
||||
if(dusk::getSettings().game.armorRupeeDrain.getValue() == dusk::MagicArmorMode::INVINCIBLE) {
|
||||
i_dmgAmount = 0;
|
||||
}
|
||||
#endif
|
||||
@@ -202,6 +202,11 @@ int daAlink_c::setDamagePoint(int i_dmgAmount, BOOL i_checkZoraMag, BOOL i_setDm
|
||||
if (!mpHIO->mDamage.m.mInvincible && g_debugHpMode == 0)
|
||||
#endif
|
||||
{
|
||||
#if TARGET_PC
|
||||
if(checkMagicArmorWearAbility() && dusk::getSettings().game.armorRupeeDrain.getValue() == dusk::MagicArmorMode::DOUBLE_DEFENSE) {
|
||||
i_dmgAmount /= 2;
|
||||
}
|
||||
#endif
|
||||
dComIfGp_setItemLifeCount(-i_dmgAmount, 0);
|
||||
}
|
||||
|
||||
@@ -281,7 +286,26 @@ BOOL daAlink_c::checkIcePolygonDamage(cBgS_PolyInfo* i_poly) {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkMagicArmorNoDamage() {
|
||||
#ifdef TARGET_PC
|
||||
if (!checkMagicArmorWearAbility()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch(dusk::getSettings().game.armorRupeeDrain) {
|
||||
case dusk::MagicArmorMode::NORMAL:
|
||||
return !checkMagicArmorHeavy();
|
||||
case dusk::MagicArmorMode::ON_DAMAGE:
|
||||
return dComIfGs_getRupee() != 0;
|
||||
case dusk::MagicArmorMode::DOUBLE_DEFENSE:
|
||||
return false;
|
||||
case dusk::MagicArmorMode::INVINCIBLE:
|
||||
return true;
|
||||
case dusk::MagicArmorMode::COSMETIC:
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return checkMagicArmorWearAbility() && !checkMagicArmorHeavy();
|
||||
#endif
|
||||
}
|
||||
|
||||
int daAlink_c::checkPolyDamage() {
|
||||
|
||||
@@ -64,7 +64,9 @@ constexpr std::array kGyroInputModeLabels = {
|
||||
constexpr std::array kMagicArmorModes = {
|
||||
"Normal",
|
||||
"On Damage",
|
||||
"Never",
|
||||
"Double Defense",
|
||||
"Invincible",
|
||||
"Cosmetic",
|
||||
};
|
||||
|
||||
bool try_parse_backend(std::string_view backend, AuroraBackend& outBackend) {
|
||||
@@ -1142,7 +1144,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
||||
"Speeds up Spinner movement while holding R.");
|
||||
leftPane.register_control(
|
||||
leftPane.add_select_button({
|
||||
.key = "Magic Armor Rupee Drain",
|
||||
.key = "Magic Armor Behavior",
|
||||
.getValue =
|
||||
[] {
|
||||
return kMagicArmorModes[static_cast<u8>(getSettings().game.armorRupeeDrain.getValue())];
|
||||
@@ -1169,7 +1171,13 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
||||
config::Save();
|
||||
});
|
||||
}
|
||||
pane.add_rml("Control when the Magic Armor uses rupees.");
|
||||
pane.add_rml(
|
||||
"<br/>Control the behavior of the Magic Armor."
|
||||
"<br/><b>Normal</b> is its original behavior."
|
||||
"<br/><b>On Damage</b> only uses rupees when damaged. You will not become heavy when you run out."
|
||||
"<br/><b>Double Defense</b> never uses rupees and halves damage taken."
|
||||
"<br/><b>Invincible</b> never uses rupees and is immune to damage."
|
||||
"<br/><b>Cosmetic</b> uses no rupees and provides no other benefits.");
|
||||
});
|
||||
addCheat("Invincible Enemies", getSettings().game.invincibleEnemies,
|
||||
"Prevents enemies from taking damage.");
|
||||
|
||||
Reference in New Issue
Block a user