41 lines
1.6 KiB
Java
41 lines
1.6 KiB
Java
package com.atsuishio.superbwarfare.perk.damage;
|
|
|
|
import com.atsuishio.superbwarfare.item.gun.data.GunData;
|
|
import com.atsuishio.superbwarfare.perk.Perk;
|
|
import com.atsuishio.superbwarfare.perk.PerkInstance;
|
|
import com.atsuishio.superbwarfare.tools.DamageTypeTool;
|
|
import net.minecraft.world.damagesource.DamageSource;
|
|
import net.minecraft.world.entity.LivingEntity;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class KillingTally extends Perk {
|
|
|
|
public KillingTally() {
|
|
super("killing_tally", Perk.Type.DAMAGE);
|
|
}
|
|
|
|
@Override
|
|
public void preReload(GunData data, PerkInstance instance, @Nullable LivingEntity living) {
|
|
data.perk.getTag(this).remove("KillingTally");
|
|
}
|
|
|
|
@Override
|
|
public void onKill(GunData data, PerkInstance instance, LivingEntity target, DamageSource source) {
|
|
if (DamageTypeTool.isGunDamage(source)) {
|
|
data.perk.getTag(this).putInt("KillingTally", Math.min(3, data.perk.getTag(this).getInt("KillingTally") + 1));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public float getModifiedDamage(float damage, GunData data, PerkInstance instance, @Nullable LivingEntity target, DamageSource source) {
|
|
if (DamageTypeTool.isGunDamage(source)) {
|
|
return damage * (1.0f + (0.1f * instance.level()) * data.perk.getTag(this).getInt("KillingTally"));
|
|
}
|
|
return super.getModifiedDamage(damage, data, instance, target, source);
|
|
}
|
|
|
|
@Override
|
|
public void onChangeSlot(GunData data, PerkInstance instance, @Nullable LivingEntity living) {
|
|
data.perk.getTag(this).remove("KillingTally");
|
|
}
|
|
}
|