Initial Ascend Ailments implementation
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package net.fretux.ailments.effect;
|
||||
|
||||
import net.fretux.ailments.config.AilmentsConfig;
|
||||
import net.fretux.ailments.damage.ModDamageSources;
|
||||
import net.fretux.ailments.util.EffectSourceUtil;
|
||||
import net.fretux.ailments.util.HemorrhageTracker;
|
||||
import net.minecraft.world.effect.MobEffect;
|
||||
import net.minecraft.world.effect.MobEffectCategory;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
|
||||
public final class BleedEffect extends MobEffect {
|
||||
public BleedEffect() { super(MobEffectCategory.HARMFUL, 0xAA0000); }
|
||||
|
||||
@Override public boolean isDurationEffectTick(int duration, int amplifier) {
|
||||
int interval = amplifier <= 0 ? AilmentsConfig.value(AilmentsConfig.BLEED_INTERVAL_0)
|
||||
: amplifier == 1 ? AilmentsConfig.value(AilmentsConfig.BLEED_INTERVAL_1)
|
||||
: AilmentsConfig.value(AilmentsConfig.BLEED_INTERVAL_2);
|
||||
return duration % interval == 0;
|
||||
}
|
||||
|
||||
@Override public void applyEffectTick(LivingEntity entity, int amplifier) {
|
||||
if (entity.level().isClientSide) return;
|
||||
double base = amplifier <= 0 ? AilmentsConfig.value(AilmentsConfig.BLEED_DAMAGE_0)
|
||||
: amplifier == 1 ? AilmentsConfig.value(AilmentsConfig.BLEED_DAMAGE_1)
|
||||
: AilmentsConfig.value(AilmentsConfig.BLEED_DAMAGE_2);
|
||||
float potency = EffectSourceUtil.getPotency(entity, EffectSourceUtil.BLEED);
|
||||
boolean damaged = entity.hurt(ModDamageSources.bleed(entity.level()), (float) (base * potency));
|
||||
if (damaged) HemorrhageTracker.recordBleedDamage(entity, amplifier, potency);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user