diff --git a/src/main/java/electroblob/wizardry/Settings.java b/src/main/java/electroblob/wizardry/Settings.java index 1018491e..3dcf28eb 100644 --- a/src/main/java/electroblob/wizardry/Settings.java +++ b/src/main/java/electroblob/wizardry/Settings.java @@ -198,6 +198,9 @@ public final class Settings { public boolean playerBlockDamage = true; /** [Server-only] Whether spells cast by dispensers can destroy blocks in the world. */ public boolean dispenserBlockDamage = true; + /** [Server-only] Whether damage should be registered with the old system (wizardry_magic/indirect_wizardry_magic) prefixed damage with the elements like + * necromancy_indirect_wizardry_magic, necromancy_wizardry_magic*/ + public boolean damageTypePerElement = false; /** [Server-only] Whether to revert to the old wand upgrade system, which only requires tomes of arcana. */ public boolean legacyWandLevelling = false; /** [Server-only] Whether to tweak the blindness effect to reduce follow distance when used on non-players. */ @@ -625,6 +628,15 @@ public final class Settings { dispenserBlockDamage = property.getBoolean(); propOrder.add(property.getName()); + property = config.get(GAMEPLAY_CATEGORY, "damageTypePerElement", false, + "Whether damage should be registered with the old system (wizardry_magic/indirect_wizardry_magic) prefixed damage with the elements like " + + "necromancy_indirect_wizardry_magic, necromancy_wizardry_magic. This is disabled by default to not break existing modpacks." + + "The intention of this setting is to allow differentiating various damage types for e.g. the Distinct Damage Descriptions mod"); + property.setLanguageKey("config." + Wizardry.MODID + ".damage_type_per_element"); + Wizardry.proxy.setToNamedBooleanEntry(property); + damageTypePerElement = property.getBoolean(); + propOrder.add(property.getName()); + property = config.get(GAMEPLAY_CATEGORY, "playersMoveEachOther", true, "Whether to allow players to move other players around using magic."); property.setLanguageKey("config." + Wizardry.MODID + ".players_move_each_other"); diff --git a/src/main/java/electroblob/wizardry/util/MagicDamage.java b/src/main/java/electroblob/wizardry/util/MagicDamage.java index 787c3cb3..193535d8 100644 --- a/src/main/java/electroblob/wizardry/util/MagicDamage.java +++ b/src/main/java/electroblob/wizardry/util/MagicDamage.java @@ -1,5 +1,7 @@ package electroblob.wizardry.util; +import electroblob.wizardry.Settings; +import electroblob.wizardry.Wizardry; import electroblob.wizardry.entity.living.*; import net.minecraft.entity.Entity; import net.minecraft.entity.boss.EntityDragon; @@ -195,7 +197,7 @@ public class MagicDamage extends EntityDamageSource implements IElementalDamage * @return A damagesource object of type EntityDamageSource */ public static DamageSource causeDirectMagicDamage(Entity caster, DamageType type, boolean isRetaliatory){ - return new MagicDamage(DIRECT_MAGIC_DAMAGE, caster, type, isRetaliatory); + return new MagicDamage(getDirectDamageNameForType(type), caster, type, isRetaliatory); } /** @@ -241,7 +243,15 @@ public class MagicDamage extends EntityDamageSource implements IElementalDamage */ public static DamageSource causeIndirectMagicDamage(Entity magic, Entity caster, DamageType type, boolean isRetaliatory){ - return new IndirectMagicDamage(INDIRECT_MAGIC_DAMAGE, magic, caster, type, isRetaliatory); + return new IndirectMagicDamage(getIndirectDamageNameForType(type), magic, caster, type, isRetaliatory); + } + + public static String getIndirectDamageNameForType(DamageType type) { + return Wizardry.settings.damageTypePerElement ? type.name().toLowerCase() + "_" + INDIRECT_MAGIC_DAMAGE : INDIRECT_MAGIC_DAMAGE; + } + + public static String getDirectDamageNameForType(DamageType type) { + return Wizardry.settings.damageTypePerElement ? type.name().toLowerCase() + "_" + DIRECT_MAGIC_DAMAGE : DIRECT_MAGIC_DAMAGE; } @Override diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index 845761d9..2512a691 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -1448,6 +1448,25 @@ key.ebwizardry.spell_8=Spell Slot 8 death.attack.wizardry_magic=%1$s was killed by %2$s using magic death.attack.indirect_wizardry_magic=%1$s was killed by %2$s using magic +death.attack.magic_wizardry_magic=%1$s was killed by %2$s using magic +death.attack.magic_indirect_wizardry_magic=%1$s was killed by %2$s using magic + +death.attack.fire_wizardry_magic=%1$s was killed by %2$s using fire magic +death.attack.fire_indirect_wizardry_magic=%1$s was killed by %2$s using fire magic +death.attack.frost_wizardry_magic=%1$s was killed by %2$s using frost magic +death.attack.frost_indirect_wizardry_magic=%1$s was killed by %2$s using frost magic +death.attack.shock_wizardry_magic=%1$s was killed by %2$s using a shock magic +death.attack.shock_indirect_wizardry_magic=%1$s was killed by %2$s using shock magic +death.attack.wither_wizardry_magic=%1$s was killed by %2$s using withering magic +death.attack.wither_indirect_wizardry_magic=%1$s was killed by %2$s withering magic +death.attack.poison_wizardry_magic=%1$s was killed by %2$s using poison magic +death.attack.poison_indirect_wizardry_magic=%1$s was killed by %2$s poison magic +death.attack.force_wizardry_magic=%1$s was killed by %2$s using a magical force +death.attack.force_indirect_wizardry_magic=%1$s was killed by %2$s using magical force +death.attack.blast_wizardry_magic=%1$s was killed by %2$s using a magical blast +death.attack.blast_indirect_wizardry_magic=%1$s was killed by %2$s using magical blast +death.attack.radiant_wizardry_magic=%1$s was killed by %2$s using radiant magic +death.attack.radiant_indirect_wizardry_magic=%1$s was killed by %2$s using radiant magic soundCategory.ebwizardry_spells=Spells @@ -1516,6 +1535,8 @@ config.ebwizardry.player_block_damage.true=Yes - kaboom! config.ebwizardry.player_block_damage.false=No - activate anti-grief (TM) config.ebwizardry.dispenser_block_damage=Dispenser Block Damage config.ebwizardry.dispenser_block_damage.tooltip=Whether spells cast by dispensers can destroy blocks in the world. Wizardry makes every attempt to respect protection mods and plugins, but cannot guarantee it will work in all cases for every mod. If you need absolutely watertight anti-grief, disable this setting. +config.ebwizardry.damage_type_per_element=Damage Type Per Element +config.ebwizardry.damage_type_per_element.tooltip=Whether damage should be registered with the old system (wizardry_magic/indirect_wizardry_magic) prefixed damage with the elements like necromancy_indirect_wizardry_magic, necromancy_wizardry_magic. This is disabled by default to not break existing modpacks. The intention of this setting is to allow differentiating various damage types for e.g. the Distinct Damage Descriptions mod config.ebwizardry.telekinetic_disarmament=Telekinetic Disarmament config.ebwizardry.telekinetic_disarmament.tooltip=Whether to allow players to disarm other players using the telekinesis spell. Disable to prevent stealing of items. config.ebwizardry.telekinetic_disarmament.true=Yes - let people steal things diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index f4010434..59d555f6 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -5,7 +5,7 @@ "version" : "4.3.7", "mcversion" : "1.12.2", "url" : "https://minecraft.curseforge.com/projects/electroblobs-wizardry", - "credits" : "\nDesigned, coded and textured by Electroblob.\nDiscord Moderators: FavouriteDragon, WinDanesz\nCode contributed by: Corail31, 12foo, Shadows-of-Fire, Tora-B, Avatair, Aeronica, UltraHex, Azim-Palmer, raoulvdberge, rafasoares, xinyuan-liu, SettingDust, Aralu115.\nTranslators: Alsentar (Spanish), MadWrist (Mexican Spanish), VilagVil, kellixon, bigenergy, MugGod2 & DrHesperus (Russian), Hahdrim & Crowller (French), lorrampi (Brazilian Portuguese), ZHENGLOC, dragon-evol, Hokorizero, TUsama & Determancer (Chinese - Simplified), shejery, rewi_wire, 방통 & red1854th (Korean), Trozuu & Olej (Polish), BirdyDragon & Lemopav (German), chesterccj305 (Chinese - Traditional), Bombadil (Hungarian).\nSound Effects: OhhWowProductions, fredzed, deleted_user_3277771, DiscoveryME, OGSoundFX, leosalom, juskiddink", + "credits" : "\nDesigned, coded and textured by Electroblob.\nDiscord Moderators: FavouriteDragon, WinDanesz\nCode contributed by: Corail31, 12foo, Shadows-of-Fire, Tora-B, Avatair, Aeronica, UltraHex, Azim-Palmer, raoulvdberge, rafasoares, xinyuan-liu, SettingDust, Aralu115, WinDanesz, ZettaSword.\nTranslators: Alsentar (Spanish), MadWrist (Mexican Spanish), VilagVil, kellixon, bigenergy, MugGod2 & DrHesperus (Russian), Hahdrim & Crowller (French), lorrampi (Brazilian Portuguese), ZHENGLOC, dragon-evol, Hokorizero, TUsama & Determancer (Chinese - Simplified), shejery, rewi_wire, 방통 & red1854th (Korean), Trozuu & Olej (Polish), BirdyDragon & Lemopav (German), chesterccj305 (Chinese - Traditional), Bombadil (Hungarian).\nSound Effects: OhhWowProductions, fredzed, deleted_user_3277771, DiscoveryME, OGSoundFX, leosalom, juskiddink", "authorList" : [ "Electroblob" ],