mirror of
https://github.com/Auxilor/EcoSkills.git
synced 2026-01-02 05:46:57 +00:00
Added bravery and infernal resistance effects
This commit is contained in:
@@ -4,11 +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.EffectCraftsmanship;
|
||||
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;
|
||||
@@ -47,6 +49,8 @@ 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 INFERNAL_RESISTANCE = new EffectInfernalResistance();
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static void registerNewEffect(@NotNull final Effect effect) {
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.willfp.ecoskills.effects.effects
|
||||
|
||||
import com.willfp.eco.util.NumberUtils
|
||||
import com.willfp.ecoskills.effects.Effect
|
||||
import com.willfp.ecoskills.getEffectLevel
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.EventPriority
|
||||
import org.bukkit.event.entity.EntityDamageEvent
|
||||
|
||||
class EffectBravery: Effect(
|
||||
"bravery"
|
||||
) {
|
||||
override fun formatDescription(string: String, level: Int): String {
|
||||
return string.replace("%chance%", NumberUtils.format(config.getDouble("chance-per-level") * level))
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
fun handle(event: EntityDamageEvent) {
|
||||
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) {
|
||||
return
|
||||
}
|
||||
|
||||
val level = player.getEffectLevel(this)
|
||||
|
||||
val chance = config.getDouble("chance-per-level") * level
|
||||
|
||||
if (NumberUtils.randFloat(0.0, 100.0) < chance) {
|
||||
event.isCancelled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.EntityDamageByEntityEvent
|
||||
import org.bukkit.persistence.PersistentDataType
|
||||
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
fun handle(event: EntityDamageByEntityEvent) {
|
||||
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)) {
|
||||
return
|
||||
}
|
||||
|
||||
val level = player.getEffectLevel(this)
|
||||
|
||||
var multiplier = config.getDouble("percent-less-per-level") * level
|
||||
multiplier /= 100
|
||||
multiplier = 1 - multiplier
|
||||
|
||||
event.damage = event.damage * multiplier
|
||||
}
|
||||
}
|
||||
@@ -113,4 +113,13 @@ accelerated_escape:
|
||||
percent-faster-per-level: 4
|
||||
|
||||
# The duration to go faster for, in ticks
|
||||
ticks: 30
|
||||
ticks: 30
|
||||
infernal_resistance:
|
||||
description: "&a%chance%%&8 chance to ignore fire damage"
|
||||
|
||||
# The chance to ignore damage, as a percentage
|
||||
chance-per-level: 2
|
||||
bravery:
|
||||
description: "&8Take &a%chance%%&8 less damage from bosses"
|
||||
|
||||
percent-less-per-level: 1.5
|
||||
@@ -15,6 +15,10 @@ gui:
|
||||
- "&fEffects:"
|
||||
- "&8» &r&6Shamanism %ecoskills_shamanism_numeral%"
|
||||
- " %ecoskills_shamanism_description%"
|
||||
- "&8» &r&6Infernal Resistance %ecoskills_infernal_resistance_numeral%"
|
||||
- " %ecoskills_infernal_resistance_description%"
|
||||
- "&8» &r&6Bravery %ecoskills_bravery_numeral%"
|
||||
- " %ecoskills_bravery_description%"
|
||||
|
||||
rewards:
|
||||
# The actual rewards to be given
|
||||
@@ -22,6 +26,8 @@ rewards:
|
||||
- "defense::2"
|
||||
- "speed::1"
|
||||
- "shamanism::1"
|
||||
- "infernal_resistance::1"
|
||||
- "bravery::1:10:100"
|
||||
|
||||
# The chat messages to send on level up
|
||||
chat-messages:
|
||||
@@ -30,6 +36,17 @@ rewards:
|
||||
- " &8» &r&f+1 %ecoskills_speed_name%"
|
||||
- " &8» &r&6Shamanism %ecoskills_shamanism_numeral%"
|
||||
- " %ecoskills_shamanism_description%"
|
||||
- " &8» &r&6Infernal Resistance %ecoskills_infernal_resistance_numeral%"
|
||||
- " %ecoskills_infernal_resistance_description%"
|
||||
10:
|
||||
- " &8» &r&f+2 %ecoskills_defense_name%"
|
||||
- " &8» &r&f+1 %ecoskills_speed_name%"
|
||||
- " &8» &r&6Shamanism %ecoskills_shamanism_numeral%"
|
||||
- " %ecoskills_shamanism_description%"
|
||||
- " &8» &r&6Infernal Resistance %ecoskills_infernal_resistance_numeral%"
|
||||
- " %ecoskills_infernal_resistance_description%"
|
||||
- " &8» &r&6Bravery %ecoskills_bravery_numeral%"
|
||||
- " %ecoskills_bravery_description%"
|
||||
|
||||
# The lore to show in the levels gui
|
||||
progression-lore:
|
||||
@@ -38,6 +55,17 @@ rewards:
|
||||
- " &8» &r&f+1 %ecoskills_speed_name%"
|
||||
- " &8» &r&6Shamanism %ecoskills_shamanism_numeral%"
|
||||
- " %ecoskills_shamanism_description%"
|
||||
- " &8» &r&6Infernal Resistance %ecoskills_infernal_resistance_numeral%"
|
||||
- " %ecoskills_infernal_resistance_description%"
|
||||
10:
|
||||
- " &8» &r&f+2 %ecoskills_defense_name%"
|
||||
- " &8» &r&f+1 %ecoskills_speed_name%"
|
||||
- " &8» &r&6Shamanism %ecoskills_shamanism_numeral%"
|
||||
- " %ecoskills_shamanism_description%"
|
||||
- " &8» &r&6Infernal Resistance %ecoskills_infernal_resistance_numeral%"
|
||||
- " %ecoskills_infernal_resistance_description%"
|
||||
- " &8» &r&6Bravery %ecoskills_bravery_numeral%"
|
||||
- " %ecoskills_bravery_description%"
|
||||
|
||||
|
||||
# The experience to give for each hp of damage taken
|
||||
|
||||
Reference in New Issue
Block a user