9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 05:46:57 +00:00

Implemented serrated strikes

This commit is contained in:
Auxilor
2021-08-21 11:40:16 +01:00
parent 00a8e28c39
commit 49004b3b75

View File

@@ -1,8 +1,55 @@
package com.willfp.ecoskills.effects.effects
import com.willfp.eco.core.scheduling.RunnableTask
import com.willfp.eco.util.NumberUtils
import com.willfp.ecoskills.effects.Effect
import com.willfp.ecoskills.getEffectLevel
import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
import org.bukkit.event.entity.EntityDamageByEntityEvent
import java.util.concurrent.atomic.AtomicInteger
class EffectSerratedStrikes: Effect(
"serrated_strikes"
) {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
fun handle(event: EntityDamageByEntityEvent) {
val player = event.damager
val victim = event.entity
if (player !is Player) {
return
}
if (victim !is LivingEntity) {
return
}
val level = player.getEffectLevel(this)
if (NumberUtils.randFloat(0.0, 100.0) >= config.getDouble("chance-per-level") * level) {
return
}
val bleedDamage = config.getDouble("bleed-tick-damage")
var bleedCount = config.getInt("bleed-ticks")
bleedCount *= level
val finalBleedCount = bleedCount
val currentBleedCount = AtomicInteger(0)
plugin.runnableFactory.create { bukkitRunnable: RunnableTask ->
currentBleedCount.addAndGet(1)
victim.damage(bleedDamage)
if (currentBleedCount.get() >= finalBleedCount) {
bukkitRunnable.cancel()
}
}.runTaskTimer(config.getInt("bleed-tick-spacing").toLong(), config.getInt("bleed-tick-spacing").toLong())
}
}