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