diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java index 9a971f3..66e0d07 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoskills/effects/Effects.java @@ -4,14 +4,13 @@ import com.google.common.collect.ImmutableSet; import com.willfp.eco.core.config.updating.ConfigUpdater; import com.willfp.ecoskills.effects.effects.EffectAcceleratedEscape; import com.willfp.ecoskills.effects.effects.EffectBountifulHarvest; -import com.willfp.ecoskills.effects.effects.EffectBravery; +import com.willfp.ecoskills.effects.effects.EffectInfernalResistance; import com.willfp.ecoskills.effects.effects.EffectCraftsmanship; import com.willfp.ecoskills.effects.effects.EffectDazzle; import com.willfp.ecoskills.effects.effects.EffectDodging; import com.willfp.ecoskills.effects.effects.EffectEfficientBrewing; import com.willfp.ecoskills.effects.effects.EffectEyeOfTheDepths; import com.willfp.ecoskills.effects.effects.EffectGoldenYield; -import com.willfp.ecoskills.effects.effects.EffectInfernalResistance; import com.willfp.ecoskills.effects.effects.EffectMysticResilience; import com.willfp.ecoskills.effects.effects.EffectPotionmaster; import com.willfp.ecoskills.effects.effects.EffectSatiation; @@ -19,6 +18,7 @@ import com.willfp.ecoskills.effects.effects.EffectSeamlessMovement; import com.willfp.ecoskills.effects.effects.EffectSecondChance; import com.willfp.ecoskills.effects.effects.EffectSerratedStrikes; import com.willfp.ecoskills.effects.effects.EffectShamanism; +import com.willfp.ecoskills.effects.effects.EffectStrongImpact; import com.willfp.ecoskills.effects.effects.EffectVersatileTools; import org.bukkit.NamespacedKey; import org.jetbrains.annotations.ApiStatus; @@ -50,9 +50,10 @@ public class Effects { public static final Effect GOLDEN_YIELD = new EffectGoldenYield(); public static final Effect DODGING = new EffectDodging(); public static final Effect ACCELERATED_ESCAPE = new EffectAcceleratedEscape(); - public static final Effect BRAVERY = new EffectBravery(); + public static final Effect BRAVERY = new EffectInfernalResistance(); public static final Effect INFERNAL_RESISTANCE = new EffectInfernalResistance(); public static final Effect DAZZLE = new EffectDazzle(); + public static final Effect STRONG_IMPACT = new EffectStrongImpact(); @ApiStatus.Internal public static void registerNewEffect(@NotNull final Effect effect) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectBravery.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectBravery.kt index bb8a245..a10491a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectBravery.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectBravery.kt @@ -1,41 +1,44 @@ package com.willfp.ecoskills.effects.effects +import com.willfp.eco.util.NamespacedKeyUtils import com.willfp.eco.util.NumberUtils import com.willfp.ecoskills.effects.Effect import com.willfp.ecoskills.getEffectLevel +import org.bukkit.entity.Boss +import org.bukkit.entity.ElderGuardian import org.bukkit.entity.Player import org.bukkit.event.EventHandler import org.bukkit.event.EventPriority -import org.bukkit.event.entity.EntityDamageEvent +import org.bukkit.event.entity.EntityDamageByEntityEvent +import org.bukkit.persistence.PersistentDataType + class EffectBravery: Effect( "bravery" ) { override fun formatDescription(string: String, level: Int): String { - return string.replace("%chance%", NumberUtils.format(config.getDouble("chance-per-level") * level)) + return string.replace("%percent_less%", NumberUtils.format(config.getDouble("percent-less-per-level") * level)) } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - fun handle(event: EntityDamageEvent) { + fun handle(event: EntityDamageByEntityEvent) { val player = event.entity if (player !is Player) { return } - if (event.cause != EntityDamageEvent.DamageCause.FIRE - && event.cause != EntityDamageEvent.DamageCause.FIRE_TICK - && event.cause != EntityDamageEvent.DamageCause.LAVA - && event.cause != EntityDamageEvent.DamageCause.HOT_FLOOR) { + if (event.damager !is Boss && event.damager !is ElderGuardian + && !event.damager.persistentDataContainer.has(NamespacedKeyUtils.create("ecobosses", "boss"), PersistentDataType.STRING)) { return } val level = player.getEffectLevel(this) - val chance = config.getDouble("chance-per-level") * level + var multiplier = config.getDouble("percent-less-per-level") * level + multiplier /= 100 + multiplier = 1 - multiplier - if (NumberUtils.randFloat(0.0, 100.0) < chance) { - event.isCancelled = true - } + event.damage = event.damage * multiplier } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectInfernalResistance.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectInfernalResistance.kt index fe39a8f..c4ebc70 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectInfernalResistance.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/effects/effects/EffectInfernalResistance.kt @@ -1,44 +1,41 @@ package com.willfp.ecoskills.effects.effects -import com.willfp.eco.util.NamespacedKeyUtils import com.willfp.eco.util.NumberUtils import com.willfp.ecoskills.effects.Effect import com.willfp.ecoskills.getEffectLevel -import org.bukkit.entity.Boss -import org.bukkit.entity.ElderGuardian import org.bukkit.entity.Player import org.bukkit.event.EventHandler import org.bukkit.event.EventPriority -import org.bukkit.event.entity.EntityDamageByEntityEvent -import org.bukkit.persistence.PersistentDataType - +import org.bukkit.event.entity.EntityDamageEvent class EffectInfernalResistance: Effect( "infernal_resistance" ) { override fun formatDescription(string: String, level: Int): String { - return string.replace("%percent_less%", NumberUtils.format(config.getDouble("percent-less-per-level") * level)) + return string.replace("%chance%", NumberUtils.format(config.getDouble("chance-per-level") * level)) } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) - fun handle(event: EntityDamageByEntityEvent) { + fun handle(event: EntityDamageEvent) { val player = event.entity if (player !is Player) { return } - if (event.damager !is Boss && event.damager !is ElderGuardian - && !event.damager.persistentDataContainer.has(NamespacedKeyUtils.create("ecobosses", "boss"), PersistentDataType.STRING)) { + if (event.cause != EntityDamageEvent.DamageCause.FIRE + && event.cause != EntityDamageEvent.DamageCause.FIRE_TICK + && event.cause != EntityDamageEvent.DamageCause.LAVA + && event.cause != EntityDamageEvent.DamageCause.HOT_FLOOR) { return } val level = player.getEffectLevel(this) - var multiplier = config.getDouble("percent-less-per-level") * level - multiplier /= 100 - multiplier = 1 - multiplier + val chance = config.getDouble("chance-per-level") * level - event.damage = event.damage * multiplier + if (NumberUtils.randFloat(0.0, 100.0) < chance) { + event.isCancelled = true + } } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/effects.yml b/eco-core/core-plugin/src/main/resources/effects.yml index 29717ee..41d9667 100644 --- a/eco-core/core-plugin/src/main/resources/effects.yml +++ b/eco-core/core-plugin/src/main/resources/effects.yml @@ -120,7 +120,7 @@ infernal_resistance: # The chance to ignore damage, as a percentage chance-per-level: 2 bravery: - description: "&8Take &a%chance%%&8 less damage from bosses" + description: "&8Take &a%percent_less%%&8 less damage from bosses" # The percent less damage to take percent-less-per-level: 1.5