diff --git a/core/src/main/java/com/nisovin/magicspells/spells/targeted/DamageSpell.java b/core/src/main/java/com/nisovin/magicspells/spells/targeted/DamageSpell.java index 261bc1d4f..8a194502b 100644 --- a/core/src/main/java/com/nisovin/magicspells/spells/targeted/DamageSpell.java +++ b/core/src/main/java/com/nisovin/magicspells/spells/targeted/DamageSpell.java @@ -23,6 +23,8 @@ public class DamageSpell extends TargetedSpell implements TargetedEntitySpell, T private final ConfigData damageType; private final ConfigData creditCaster; private final ConfigData damage; + private final ConfigData invulnerableTime; + private final ConfigData bypassInvulnerableTime; public DamageSpell(MagicConfig config, String spellName) { super(config, spellName); @@ -30,6 +32,8 @@ public DamageSpell(MagicConfig config, String spellName) { spellDamageType = getConfigDataString("spell-damage-type", ""); creditCaster = getConfigDataBoolean("credit-caster", true); damage = getConfigDataDouble("damage", 4); + invulnerableTime = getConfigDataInt("invulnerable-time", _ -> null); + bypassInvulnerableTime = getConfigDataBoolean("bypass-invulnerable-time", false); damageType = getConfigDataRegistryEntry("damage-type", RegistryKey.DAMAGE_TYPE, null) .orDefault(data -> switch (data.caster()) { @@ -60,8 +64,12 @@ public CastResult castAtEntity(SpellData data) { if (data.hasCaster() && creditCaster.get(data)) builder.withCausingEntity(data.caster()).withDirectEntity(data.caster()); + if (bypassInvulnerableTime.get(data)) data.target().setNoDamageTicks(0); data.target().damage(damage, builder.build()); + Integer invulnerableTime = this.invulnerableTime.get(data); + if (invulnerableTime != null) data.target().setNoDamageTicks(invulnerableTime); + playSpellEffects(data); return new CastResult(PostCastAction.HANDLE_NORMALLY, data); }