From 0a2557751a01b8f5d0439e85f5dad92842398924 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Sat, 10 Aug 2024 23:37:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BD=B9=E5=8C=BB=E5=B8=88pe?= =?UTF-8?q?rk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/event/LivingEventHandler.java | 16 ++++++++++++++++ .../mcreator/superbwarfare/init/ModPerks.java | 1 + .../assets/superbwarfare/lang/en_us.json | 2 ++ .../assets/superbwarfare/lang/zh_cn.json | 2 ++ 4 files changed, 21 insertions(+) diff --git a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java index ea0dd16a6..7ef27e60b 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/LivingEventHandler.java @@ -295,6 +295,10 @@ public class LivingEventHandler { handleFourthTimesCharm(stack); } } + + if (!projectile.isZoom()) { + handleFieldDoctor(stack, event, attacker); + } } } @@ -427,4 +431,16 @@ public class LivingEventHandler { ); } + private static void handleFieldDoctor(ItemStack stack, LivingHurtEvent event, Player player) { + int level = PerkHelper.getItemPerkLevel(ModPerks.FIELD_DOCTOR.get(), stack); + if (level == 0) { + return; + } + + if (event.getEntity().isAlliedTo(player)) { + event.getEntity().heal(event.getAmount() * Math.min(1.0f, 0.25f + 0.05f * level)); + event.setCanceled(true); + } + } + } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java index dc86ddf71..101e8132c 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java @@ -46,6 +46,7 @@ public class ModPerks { public static final RegistryObject HEAL_CLIP = FUNC_PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL)); public static final RegistryObject FOURTH_TIMES_CHARM = FUNC_PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL)); public static final RegistryObject SUBSISTENCE = FUNC_PERKS.register("subsistence", () -> new Perk("subsistence", Perk.Type.FUNCTIONAL)); + public static final RegistryObject FIELD_DOCTOR = FUNC_PERKS.register("field_doctor", () -> new Perk("field_doctor", Perk.Type.FUNCTIONAL)); /** * Damage Perks diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index f181361cc..f68bb204c 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -193,6 +193,8 @@ "des.superbwarfare.fourth_times_charm": "Rapidly landing precision hits will return two rounds to the magazine", "item.superbwarfare.subsistence": "Subsistence", "des.superbwarfare.subsistence": "Defeating targets partially reloads the magazine from reserves", + "item.superbwarfare.field_doctor": "Field Doctor", + "des.superbwarfare.field_doctor": "腰射时发射的子弹可以治疗队友", "item.superbwarfare.kill_clip": "Kill Clip", "des.superbwarfare.kill_clip": "Increases the damage of weapon after dealing a final blow", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 44ddb9b61..9c15e03ab 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -193,6 +193,8 @@ "des.superbwarfare.fourth_times_charm": "快速精准命中目标会向弹匣中返还两枚弹药", "item.superbwarfare.subsistence": "维持生计", "des.superbwarfare.subsistence": "消灭目标会使弹药从备弹中转移并填装部分弹匣", + "item.superbwarfare.field_doctor": "役医师", + "des.superbwarfare.field_doctor": "腰射时发射的子弹可以治疗队友", "item.superbwarfare.kill_clip": "杀戮弹匣", "des.superbwarfare.kill_clip": "完成击杀后填装可提升武器伤害",