From 1a66f298987d606d61aa89e4deb369d315fca7b8 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 4 Apr 2021 21:46:58 +0100 Subject: [PATCH] Added LightningNearbyEntities and began adding effects to default bosses --- .../ecobosses/bosses/effects/Effects.java | 2 + .../effects/LightningNearbyEntities.java | 51 +++++++++++++++++++ .../src/main/resources/bosses/steel_golem.yml | 3 +- .../src/main/resources/bosses/tarantula.yml | 3 +- 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/effects/LightningNearbyEntities.java diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java index 782b4f7..4166fe0 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/Effects.java @@ -2,6 +2,7 @@ package com.willfp.ecobosses.bosses.effects; import com.google.common.collect.ImmutableMap; import com.willfp.ecobosses.bosses.effects.effects.DamageNearbyPlayers; +import com.willfp.ecobosses.bosses.effects.effects.LightningNearbyEntities; import lombok.experimental.UtilityClass; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,6 +18,7 @@ public class Effects { */ private static final Map, Effect>> EFFECTS = new ImmutableMap.Builder, Effect>>() .put("damage-nearby-players", DamageNearbyPlayers::new) + .put("lightning-nearby-entities", LightningNearbyEntities::new) .build(); /** diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/effects/LightningNearbyEntities.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/effects/LightningNearbyEntities.java new file mode 100644 index 0000000..840a8e6 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/effects/effects/LightningNearbyEntities.java @@ -0,0 +1,51 @@ +package com.willfp.ecobosses.bosses.effects.effects; + +import com.willfp.eco.util.LightningUtils; +import com.willfp.eco.util.NumberUtils; +import com.willfp.ecobosses.bosses.EcoBoss; +import com.willfp.ecobosses.bosses.effects.Effect; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class LightningNearbyEntities extends Effect { + private final int frequency; + private final double chance; + private final double damage; + private final double radius; + + public LightningNearbyEntities(@NotNull final List args) { + super(args); + + if (args.size() < 4) { + showConfigError("Incorrect amount of arguments!"); + } + + frequency = Integer.parseInt(args.get(0)); + chance = Double.parseDouble(args.get(1)); + radius = Double.parseDouble(args.get(2)); + damage = Double.parseDouble(args.get(3)); + } + + @Override + public String getUsage() { + return "lightning-nearby-entities::::"; + } + + @Override + public void tick(@NotNull final EcoBoss boss, + @NotNull final LivingEntity entity, + final long tick) { + if (tick % frequency == 0) { + for (Entity nearbyEntity : entity.getNearbyEntities(radius, radius, radius)) { + if (NumberUtils.randFloat(0, 100) < chance) { + if (nearbyEntity instanceof LivingEntity) { + LightningUtils.strike((LivingEntity) nearbyEntity, damage); + } + } + } + } + } +} diff --git a/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml b/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml index dc0682c..85a687a 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml @@ -54,7 +54,8 @@ broadcast: - "&f - &8%third%&f (%third_damage% Damage)" - "" -effects: [] +effects: + - "damage-nearby-players:15:2:3" defence: immunities: diff --git a/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml b/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml index e047002..be1739d 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml @@ -54,7 +54,8 @@ broadcast: - "&f - &4%third%&f (%third_damage% Damage)" - "" -effects: [] +effects: + - "lightning-nearby-entities:100:15:2:3" defence: immunities: