From c04a9fd37b39c3a4e0811be3bd7b22e78a5776cd Mon Sep 17 00:00:00 2001
From: WinDanesz <31292708+WinDanesz@users.noreply.github.com>
Date: Mon, 1 Sep 2025 01:44:52 +0200
Subject: [PATCH] feat: Add config for flesh spells: fleshSpellsCauseSlowness,
diamondFleshArmorBonus, diamondFleshArmorToughnessBonus, ironFleshArmorBonus,
oakFleshArmorBonus, oakFleshHealthBonus
---
.../java/electroblob/wizardry/Settings.java | 58 ++++++++++++++++++-
.../wizardry/potion/PotionDiamondflesh.java | 11 ++--
.../wizardry/potion/PotionIronflesh.java | 9 ++-
.../wizardry/potion/PotionOakflesh.java | 11 ++--
.../assets/ebwizardry/lang/en_us.lang | 15 +++++
5 files changed, 92 insertions(+), 12 deletions(-)
diff --git a/src/main/java/electroblob/wizardry/Settings.java b/src/main/java/electroblob/wizardry/Settings.java
index 58707b82..4074fc61 100644
--- a/src/main/java/electroblob/wizardry/Settings.java
+++ b/src/main/java/electroblob/wizardry/Settings.java
@@ -373,6 +373,19 @@ public final class Settings {
/** [Synchronised] Multiplier for condenser upgrade mana regeneration amount */
public double condenserAmountMultiplier = 1.0;
+ /** [Synchronised] Whether flesh spells (DiamondFlesh, IronFlesh, OakFlesh) apply slowness */
+ public boolean fleshSpellsCauseSlowness = true;
+
+ /** [Synchronised] Armor bonus for DiamondFlesh spell */
+ public double diamondFleshArmorBonus = 4.0;
+ /** [Synchronised] Armor toughness bonus for DiamondFlesh spell */
+ public double diamondFleshArmorToughnessBonus = 3.0;
+ /** [Synchronised] Armor bonus for IronFlesh spell */
+ public double ironFleshArmorBonus = 4.0;
+ /** [Synchronised] Armor bonus for OakFlesh spell */
+ public double oakFleshArmorBonus = 3.0;
+ /** [Synchronised] Health bonus for OakFlesh spell */
+ public double oakFleshHealthBonus = 0.2;
/**
* [Synchronised] The maximum number of blocks a bookshelf can be from an arcane workbench or lectern to be
@@ -974,6 +987,49 @@ public final class Settings {
condenserAmountMultiplier = property.getDouble();
propOrder.add(property.getName());
+ property = config.get(DIFFICULTY_CATEGORY, "fleshSpellsCauseSlowness", true,
+ "Whether flesh spells (DiamondFlesh, IronFlesh, OakFlesh) apply slowness. When disabled, these spells only provide their defensive benefits without movement penalty.");
+ property.setLanguageKey("config." + Wizardry.MODID + ".flesh_spells_cause_slowness");
+ Wizardry.proxy.setToNamedBooleanEntry(property);
+ property.requiresMcRestart();
+ fleshSpellsCauseSlowness = property.getBoolean();
+ propOrder.add(property.getName());
+
+ property = config.get(DIFFICULTY_CATEGORY, "diamondFleshArmorBonus", 4.0,
+ "Armor bonus provided by the DiamondFlesh spell.");
+ property.setLanguageKey("config." + Wizardry.MODID + ".diamond_flesh_armor_bonus");
+ property.setRequiresWorldRestart(true);
+ diamondFleshArmorBonus = property.getDouble();
+ propOrder.add(property.getName());
+
+ property = config.get(DIFFICULTY_CATEGORY, "diamondFleshArmorToughnessBonus", 3.0,
+ "Armor toughness bonus provided by the DiamondFlesh spell.");
+ property.setLanguageKey("config." + Wizardry.MODID + ".diamond_flesh_armor_toughness_bonus");
+ property.setRequiresWorldRestart(true);
+ diamondFleshArmorToughnessBonus = property.getDouble();
+ propOrder.add(property.getName());
+
+ property = config.get(DIFFICULTY_CATEGORY, "ironFleshArmorBonus", 4.0,
+ "Armor bonus provided by the IronFlesh spell.");
+ property.setLanguageKey("config." + Wizardry.MODID + ".iron_flesh_armor_bonus");
+ property.setRequiresWorldRestart(true);
+ ironFleshArmorBonus = property.getDouble();
+ propOrder.add(property.getName());
+
+ property = config.get(DIFFICULTY_CATEGORY, "oakFleshArmorBonus", 3.0,
+ "Armor bonus provided by the OakFlesh spell.");
+ property.setLanguageKey("config." + Wizardry.MODID + ".oak_flesh_armor_bonus");
+ property.setRequiresWorldRestart(true);
+ oakFleshArmorBonus = property.getDouble();
+ propOrder.add(property.getName());
+
+ property = config.get(DIFFICULTY_CATEGORY, "oakFleshHealthBonus", 0.2,
+ "Health bonus provided by the OakFlesh spell (as a multiplier, e.g., 0.2 = 20% increase).");
+ property.setLanguageKey("config." + Wizardry.MODID + ".oak_flesh_health_bonus");
+ property.setRequiresWorldRestart(true);
+ oakFleshHealthBonus = property.getDouble();
+ propOrder.add(property.getName());
+
// These two aren't sliders because using a slider makes it difficult to fine-tune the numbers; the nature of a
@@ -1324,7 +1380,7 @@ public final class Settings {
shrineFiles = getResourceLocationList(property);
propOrder.add(property.getName());
- property = config.get(WORLDGEN_CATEGORY, "shrineRegenerationEnabled", true, "Whether conquered shrines should regenerate after a period of time. When disabled, shrines remain conquered permanently.");
+ property = config.get(WORLDGEN_CATEGORY, "shrineRegenerationEnabled", false, "Whether conquered shrines should regenerate after a period of time. When disabled, shrines remain conquered permanently.");
property.setLanguageKey("config." + Wizardry.MODID + ".shrine_regeneration_enabled");
shrineRegenerationEnabled = property.getBoolean();
propOrder.add(property.getName());
diff --git a/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java b/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java
index 3773ddbf..06492d1e 100644
--- a/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java
+++ b/src/main/java/electroblob/wizardry/potion/PotionDiamondflesh.java
@@ -13,12 +13,15 @@ public class PotionDiamondflesh extends PotionMagicEffect {
super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/diamondflesh.png"));
// This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet.
this.setPotionName("potion." + Wizardry.MODID + ":ironflesh");
- this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
- "158a8af2-6db0-4340-a01c-a7b60d10ddf4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ // Only apply slowness if the setting allows it
+ if(Wizardry.settings.fleshSpellsCauseSlowness) {
+ this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
+ "158a8af2-6db0-4340-a01c-a7b60d10ddf4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ }
this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR_TOUGHNESS,
- "a68d4532-5847-426c-9b03-d541b113cec2", 3.0f, EntityUtils.Operations.ADD);
+ "a68d4532-5847-426c-9b03-d541b113cec2", (float)Wizardry.settings.diamondFleshArmorToughnessBonus, EntityUtils.Operations.ADD);
this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR,
- "46a095be-82dd-43fd-8b67-13f51591eb8e", 4.0f, EntityUtils.Operations.ADD);
+ "46a095be-82dd-43fd-8b67-13f51591eb8e", (float)Wizardry.settings.diamondFleshArmorBonus, EntityUtils.Operations.ADD);
}
@Override
diff --git a/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java b/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java
index 3152fab8..04dbb9fd 100644
--- a/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java
+++ b/src/main/java/electroblob/wizardry/potion/PotionIronflesh.java
@@ -13,12 +13,15 @@ public class PotionIronflesh extends PotionMagicEffect {
super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/ironflesh.png"));
// This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet.
this.setPotionName("potion." + Wizardry.MODID + ":ironflesh");
- this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
- "fe607d55-50e3-4f4f-a959-6571503f92f4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ // Only apply slowness if the setting allows it
+ if(Wizardry.settings.fleshSpellsCauseSlowness) {
+ this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
+ "fe607d55-50e3-4f4f-a959-6571503f92f4", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ }
this.registerPotionAttributeModifier(SharedMonsterAttributes.KNOCKBACK_RESISTANCE,
"6f78206e-8dd4-4d44-9792-d7a882111951", 0.3f, EntityUtils.Operations.ADD);
this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR,
- "e1adff1e-8510-4a09-96ed-ef677cad20c1", 4.0f, EntityUtils.Operations.ADD);
+ "e1adff1e-8510-4a09-96ed-ef677cad20c1", (float)Wizardry.settings.ironFleshArmorBonus, EntityUtils.Operations.ADD);
}
@Override
diff --git a/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java b/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java
index a273b845..5881472d 100644
--- a/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java
+++ b/src/main/java/electroblob/wizardry/potion/PotionOakflesh.java
@@ -13,12 +13,15 @@ public class PotionOakflesh extends PotionMagicEffect {
super(isBadEffect, liquidColour, new ResourceLocation(Wizardry.MODID, "textures/gui/potion_icons/oakflesh.png"));
// This needs to be here because registerPotionAttributeModifier doesn't like it if the potion has no name yet.
this.setPotionName("potion." + Wizardry.MODID + ":ironflesh");
- this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
- "98b4ba66-7c50-4a4c-9f3f-40bcb37313b5", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ // Only apply slowness if the setting allows it
+ if(Wizardry.settings.fleshSpellsCauseSlowness) {
+ this.registerPotionAttributeModifier(SharedMonsterAttributes.MOVEMENT_SPEED,
+ "98b4ba66-7c50-4a4c-9f3f-40bcb37313b5", -0.1f, EntityUtils.Operations.MULTIPLY_CUMULATIVE);
+ }
this.registerPotionAttributeModifier(SharedMonsterAttributes.MAX_HEALTH,
- "ed9d0423-60f4-4998-bd8d-dc7c33bd45b8", 0.2f, EntityUtils.Operations.MULTIPLY_FLAT);
+ "ed9d0423-60f4-4998-bd8d-dc7c33bd45b8", (float)Wizardry.settings.oakFleshHealthBonus, EntityUtils.Operations.MULTIPLY_FLAT);
this.registerPotionAttributeModifier(SharedMonsterAttributes.ARMOR,
- "0b607c3f-fb14-43d7-96b5-1c1b6f6da242", 3.0f, EntityUtils.Operations.ADD);
+ "0b607c3f-fb14-43d7-96b5-1c1b6f6da242", (float)Wizardry.settings.oakFleshArmorBonus, EntityUtils.Operations.ADD);
}
@Override
diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang
index 165eadf1..cd93fd80 100644
--- a/src/main/resources/assets/ebwizardry/lang/en_us.lang
+++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang
@@ -1653,6 +1653,21 @@ config.ebwizardry.master_upgrade_limit.tooltip=Maximum number of upgrades a mast
config.ebwizardry.condenser_amount_multiplier=Condenser Amount Multiplier
config.ebwizardry.condenser_amount_multiplier.tooltip=Multiplier for condenser upgrade mana regeneration amount. Higher values make condensers more effective.
+
+config.ebwizardry.flesh_spells_cause_slowness=Flesh Spells Cause Slowness
+config.ebwizardry.flesh_spells_cause_slowness.tooltip=Whether flesh spells (DiamondFlesh, IronFlesh, OakFlesh) apply slowness. When disabled, these spells only provide their defensive benefits without movement penalty.
+config.ebwizardry.flesh_spells_cause_slowness.true=Yes - flesh spells slow you down
+config.ebwizardry.flesh_spells_cause_slowness.false=No - flesh spells don't slow you down
+config.ebwizardry.diamond_flesh_armor_bonus=DiamondFlesh Armor Bonus
+config.ebwizardry.diamond_flesh_armor_bonus.tooltip=Armor bonus provided by the DiamondFlesh spell.
+config.ebwizardry.diamond_flesh_armor_toughness_bonus=DiamondFlesh Armor Toughness Bonus
+config.ebwizardry.diamond_flesh_armor_toughness_bonus.tooltip=Armor toughness bonus provided by the DiamondFlesh spell.
+config.ebwizardry.iron_flesh_armor_bonus=IronFlesh Armor Bonus
+config.ebwizardry.iron_flesh_armor_bonus.tooltip=Armor bonus provided by the IronFlesh spell.
+config.ebwizardry.oak_flesh_armor_bonus=OakFlesh Armor Bonus
+config.ebwizardry.oak_flesh_armor_bonus.tooltip=Armor bonus provided by the OakFlesh spell.
+config.ebwizardry.oak_flesh_health_bonus=OakFlesh Health Bonus
+config.ebwizardry.oak_flesh_health_bonus.tooltip=Health bonus provided by the OakFlesh spell (as a multiplier, e.g., 0.2 = 20% increase).
config.ebwizardry.player_damage_scaling=Player Damage Scaling Factor
config.ebwizardry.player_damage_scaling.tooltip=Global damage scaling factor for the damage dealt by players casting spells, relative to 1.
config.ebwizardry.npc_damage_scaling=NPC Damage Scaling Factor