添加head seeker perk

This commit is contained in:
17146 2024-08-11 00:48:30 +08:00
parent 0a2557751a
commit 037e7acdde
5 changed files with 38 additions and 1 deletions

View file

@ -286,6 +286,10 @@ public class LivingEventHandler {
handleKillingTallyDamage(stack, event); handleKillingTallyDamage(stack, event);
} }
if (DamageTypeTool.isGunFireDamage(source)) {
handleHeadSeekerTime(stack);
}
if (source.getDirectEntity() instanceof ProjectileEntity projectile) { if (source.getDirectEntity() instanceof ProjectileEntity projectile) {
if (PerkHelper.getItemPerkLevel(ModPerks.FOURTH_TIMES_CHARM.get(), stack) > 0) { if (PerkHelper.getItemPerkLevel(ModPerks.FOURTH_TIMES_CHARM.get(), stack) > 0) {
float bypassArmorRate = projectile.getBypassArmorRate(); float bypassArmorRate = projectile.getBypassArmorRate();
@ -300,6 +304,10 @@ public class LivingEventHandler {
handleFieldDoctor(stack, event, attacker); handleFieldDoctor(stack, event, attacker);
} }
} }
if (DamageTypeTool.isGunHeadshotDamage(source)) {
handleHeadSeekerDamage(stack, event);
}
} }
private static void handleGunPerksWhenDeath(LivingDeathEvent event) { private static void handleGunPerksWhenDeath(LivingDeathEvent event) {
@ -443,4 +451,23 @@ public class LivingEventHandler {
} }
} }
private static void handleHeadSeekerTime(ItemStack stack) {
int level = PerkHelper.getItemPerkLevel(ModPerks.HEAD_SEEKER.get(), stack);
if (level == 0) {
return;
}
stack.getOrCreateTag().putInt("HeadSeeker", 11 + level * 2);
}
private static void handleHeadSeekerDamage(ItemStack stack, LivingHurtEvent event) {
int level = PerkHelper.getItemPerkLevel(ModPerks.HEAD_SEEKER.get(), stack);
if (level == 0) {
return;
}
if (stack.getOrCreateTag().getInt("HeadSeeker") > 0) {
event.setAmount(event.getAmount() * (1.095f + 0.0225f * level));
}
}
} }

View file

@ -56,8 +56,10 @@ public class ModPerks {
public static final RegistryObject<Perk> KILL_CLIP = DAMAGE_PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE)); public static final RegistryObject<Perk> KILL_CLIP = DAMAGE_PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE));
public static final RegistryObject<Perk> GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE)); public static final RegistryObject<Perk> GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE));
public static final RegistryObject<Perk> KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE)); public static final RegistryObject<Perk> KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE));
public static final RegistryObject<Perk> HEAD_SEEKER = DAMAGE_PERKS.register("head_seeker", () -> new Perk("head_seeker", Perk.Type.DAMAGE));
public static final RegistryObject<Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE)); public static final RegistryObject<Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE));
public static void registerCompatPerks() { public static void registerCompatPerks() {
if (ModList.get().isLoaded(CompatHolder.DMV)) { if (ModList.get().isLoaded(CompatHolder.DMV)) {
AMMO_PERKS.register("blade_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("blade_bullet", Perk.Type.AMMO) AMMO_PERKS.register("blade_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("blade_bullet", Perk.Type.AMMO)

View file

@ -123,7 +123,7 @@ public abstract class GunItem extends Item {
@Override @Override
public boolean isFoil(ItemStack stack) { public boolean isFoil(ItemStack stack) {
return stack.getOrCreateTag().getBoolean("beast"); return false;
} }
@SubscribeEvent @SubscribeEvent
@ -176,6 +176,10 @@ public abstract class GunItem extends Item {
stack.getOrCreateTag().putInt("ammo", Math.min(mag, stack.getOrCreateTag().getInt("ammo") + 2)); stack.getOrCreateTag().putInt("ammo", Math.min(mag, stack.getOrCreateTag().getInt("ammo") + 2));
} }
} }
if (stack.getOrCreateTag().getInt("HeadSeeker") > 0) {
stack.getOrCreateTag().putInt("HeadSeeker", Math.max(0, stack.getOrCreateTag().getInt("HeadSeeker") - 1));
}
} }
public boolean canApplyPerk(ItemStack stack, Perk perk, Perk.Type slot) { public boolean canApplyPerk(ItemStack stack, Perk perk, Perk.Type slot) {

View file

@ -202,6 +202,8 @@
"des.superbwarfare.killing_tally": "Kill increases the weapon's damage until it is stowed or reloaded", "des.superbwarfare.killing_tally": "Kill increases the weapon's damage until it is stowed or reloaded",
"item.superbwarfare.gutshot_straight": "Gutshot Straight", "item.superbwarfare.gutshot_straight": "Gutshot Straight",
"des.superbwarfare.gutshot_straight": "Aiming down sights increases body shot damage", "des.superbwarfare.gutshot_straight": "Aiming down sights increases body shot damage",
"item.superbwarfare.head_seeker": "Head Seeker",
"des.superbwarfare.head_seeker": "Body shots landed with this weapon increase precision damage for a short time",
"perk.superbwarfare.tips": "[Perks]", "perk.superbwarfare.tips": "[Perks]",
"perk.superbwarfare.slot": "Type: ", "perk.superbwarfare.slot": "Type: ",

View file

@ -202,6 +202,8 @@
"des.superbwarfare.killing_tally": "完成击杀可提高此武器的伤害,效果持续至切换或填装武器", "des.superbwarfare.killing_tally": "完成击杀可提高此武器的伤害,效果持续至切换或填装武器",
"item.superbwarfare.gutshot_straight": "直击要害", "item.superbwarfare.gutshot_straight": "直击要害",
"des.superbwarfare.gutshot_straight": "瞄准时增加身体射击伤害", "des.superbwarfare.gutshot_straight": "瞄准时增加身体射击伤害",
"item.superbwarfare.head_seeker": "死亡寻觅者",
"des.superbwarfare.head_seeker": "使用此武器命中身体可在短时间内提高精准伤害",
"perk.superbwarfare.tips": "[武器模组]", "perk.superbwarfare.tips": "[武器模组]",
"perk.superbwarfare.slot": "类型: ", "perk.superbwarfare.slot": "类型: ",