From f8767596d24b195ceac458649f8b523b1d6c5bcb Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Wed, 7 May 2025 15:05:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B6=A1=E8=BD=AE=E5=A2=9E?= =?UTF-8?q?=E5=8E=8B=E5=99=A8perk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/event/ClientEventHandler.java | 10 ++++++++-- .../atsuishio/superbwarfare/init/ModPerks.java | 2 +- .../com/atsuishio/superbwarfare/perk/Perk.java | 4 ++++ .../perk/functional/TurboCharger.java | 17 +++++++++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/perk/functional/TurboCharger.java diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index fd35252cd..dab61e67d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -677,9 +677,15 @@ public class ClientEventHandler { burstFireAmount--; } + for (Perk.Type type : Perk.Type.values()) { + var instance = data.perk.getInstance(type); + if (instance != null) { + customRpm = instance.perk().getModifiedCustomRPM(customRpm, data, instance); + } + } + if (stack.is(ModItems.DEVOTION.get())) { - int perkLevel = data.perk.getLevel(ModPerks.TURBO_CHARGER); - customRpm = Math.min(customRpm + 15 + ((perkLevel > 0 ? 5 : 0) + 3 * perkLevel), 500); + customRpm = Math.min(customRpm + 15, 500); } if (stack.getItem() == ModItems.SENTINEL.get()) { diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java b/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java index 1e1c4f7c4..9ed9d1cdc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModPerks.java @@ -52,7 +52,7 @@ public class ModPerks { public static final DeferredHolder SUBSISTENCE = FUNC_PERKS.register("subsistence", Subsistence::new); public static final DeferredHolder FIELD_DOCTOR = FUNC_PERKS.register("field_doctor", FieldDoctor::new); public static final DeferredHolder REGENERATION = FUNC_PERKS.register("regeneration", Regeneration::new); - public static final DeferredHolder TURBO_CHARGER = FUNC_PERKS.register("turbo_charger", () -> new Perk("turbo_charger", Perk.Type.FUNCTIONAL)); + public static final DeferredHolder TURBO_CHARGER = FUNC_PERKS.register("turbo_charger", TurboCharger::new); public static final DeferredHolder POWERFUL_ATTRACTION = FUNC_PERKS.register("powerful_attraction", PowerfulAttraction::new); public static final DeferredHolder INTELLIGENT_CHIP = FUNC_PERKS.register("intelligent_chip", () -> new Perk("intelligent_chip", Perk.Type.FUNCTIONAL)); diff --git a/src/main/java/com/atsuishio/superbwarfare/perk/Perk.java b/src/main/java/com/atsuishio/superbwarfare/perk/Perk.java index d389df77a..466e327ed 100644 --- a/src/main/java/com/atsuishio/superbwarfare/perk/Perk.java +++ b/src/main/java/com/atsuishio/superbwarfare/perk/Perk.java @@ -78,6 +78,10 @@ public class Perk { return rpm; } + public int getModifiedCustomRPM(int rpm, GunData data, PerkInstance instance) { + return rpm; + } + /** * 在切换物品时触发 */ diff --git a/src/main/java/com/atsuishio/superbwarfare/perk/functional/TurboCharger.java b/src/main/java/com/atsuishio/superbwarfare/perk/functional/TurboCharger.java new file mode 100644 index 000000000..15ee06e08 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/perk/functional/TurboCharger.java @@ -0,0 +1,17 @@ +package com.atsuishio.superbwarfare.perk.functional; + +import com.atsuishio.superbwarfare.item.gun.data.GunData; +import com.atsuishio.superbwarfare.perk.Perk; +import com.atsuishio.superbwarfare.perk.PerkInstance; + +public class TurboCharger extends Perk { + + public TurboCharger() { + super("turbo_charger", Perk.Type.FUNCTIONAL); + } + + @Override + public int getModifiedCustomRPM(int rpm, GunData data, PerkInstance instance) { + return rpm + 5 + 3 * instance.level(); + } +}