From 027d3c680ba1bd1f2b81c2a71fdbc127db74bc97 Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sun, 11 May 2025 22:29:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=86=99FireMode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 3 +- .../client/model/item/Glock18ItemModel.java | 7 ++-- .../client/model/item/Hk416ItemModel.java | 5 ++- .../client/model/item/VectorItemModel.java | 14 +++---- .../client/overlay/AmmoBarOverlay.java | 6 +-- .../event/ClientEventHandler.java | 16 +++---- .../superbwarfare/item/gun/GunItem.java | 12 ------ .../item/gun/data/DefaultGunData.java | 12 +++--- .../superbwarfare/item/gun/data/FireMode.java | 34 +++++++++++++++ .../superbwarfare/item/gun/data/GunData.java | 11 ++--- .../item/gun/data/value/StringEnumValue.java | 42 +++++++++++++++++++ .../network/message/send/FireModeMessage.java | 36 ++++++++-------- .../data/superbwarfare/guns/aa_12.json | 4 +- .../data/superbwarfare/guns/ak_12.json | 4 +- .../data/superbwarfare/guns/ak_47.json | 4 +- .../data/superbwarfare/guns/devotion.json | 4 +- .../data/superbwarfare/guns/glock_18.json | 4 +- .../data/superbwarfare/guns/hk_416.json | 4 +- .../data/superbwarfare/guns/insidious.json | 4 +- .../data/superbwarfare/guns/k_98.json | 2 +- .../data/superbwarfare/guns/m_4.json | 4 +- .../data/superbwarfare/guns/m_60.json | 4 +- .../data/superbwarfare/guns/minigun.json | 2 +- .../data/superbwarfare/guns/mk_14.json | 4 +- .../data/superbwarfare/guns/qbz_95.json | 4 +- .../data/superbwarfare/guns/rpk.json | 4 +- .../data/superbwarfare/guns/vector.json | 4 +- 27 files changed, 158 insertions(+), 96 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/item/gun/data/FireMode.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/item/gun/data/value/StringEnumValue.java diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index 0ebcbc94e..cc0c9af3c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -12,6 +12,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.WeaponVehicleEntity; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.item.gun.data.FireMode; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.network.message.send.*; import com.atsuishio.superbwarfare.tools.NBTTool; @@ -365,7 +366,7 @@ public class ClickHandler { && !data.bolt.needed.get()) && drawTime < 0.01 ) { - if (data.fireMode.get() == 1) { + if (data.fireMode.get() == FireMode.BURST) { if (ClientEventHandler.burstFireAmount == 0) { ClientEventHandler.burstFireAmount = data.burstAmount(); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java index 49f26f122..00f8e9162 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Glock18ItemModel.java @@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.item.gun.data.FireMode; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.handgun.Glock18Item; import net.minecraft.client.Minecraft; @@ -49,11 +50,11 @@ public class Glock18ItemModel extends GeoModel { if (!(stack.getItem() instanceof GunItem)) return; var data = GunData.from(stack); - int mode = data.fireMode.get(); - if (mode == 0) { + var mode = data.fireMode.get(); + if (mode == FireMode.SEMI) { switch_.setRotX(35 * Mth.DEG_TO_RAD); } - if (mode == 2) { + if (mode == FireMode.AUTO) { switch_.setRotX(0); } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java index 198df6fc5..a9973789f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/Hk416ItemModel.java @@ -5,6 +5,7 @@ import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.item.gun.data.FireMode; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; import com.atsuishio.superbwarfare.item.gun.rifle.Hk416Item; @@ -134,9 +135,9 @@ public class Hk416ItemModel extends GeoModel { l.setRotX(rotXBipod * Mth.DEG_TO_RAD); r.setRotX(rotXBipod * Mth.DEG_TO_RAD); - int mode = GunData.from(stack).fireMode.get(); + var mode = GunData.from(stack).fireMode.get(); - kuaimanji.setRotX(mode == 2 ? 90 * Mth.DEG_TO_RAD : 0); + kuaimanji.setRotX(mode == FireMode.AUTO ? 90 * Mth.DEG_TO_RAD : 0); ClientEventHandler.gunRootMove(getAnimationProcessor()); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java index aa7687826..02eb05a1f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/VectorItemModel.java @@ -55,15 +55,11 @@ public class VectorItemModel extends GeoModel { if (!(stack.getItem() instanceof GunItem)) return; var data = GunData.from(stack); - int mode = data.fireMode.get(); - if (mode == 0) { - kmj.setRotX(-120 * Mth.DEG_TO_RAD); - } - if (mode == 1) { - kmj.setRotX(-60 * Mth.DEG_TO_RAD); - } - if (mode == 2) { - kmj.setRotX(0); + + switch (data.fireMode.get()) { + case SEMI -> kmj.setRotX(-120 * Mth.DEG_TO_RAD); + case BURST -> kmj.setRotX(-60 * Mth.DEG_TO_RAD); + case AUTO -> kmj.setRotX(0); } float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java index 5e3f94914..da3b7d44f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/AmmoBarOverlay.java @@ -200,9 +200,9 @@ public class AmmoBarOverlay implements LayeredDraw.Layer { private static ResourceLocation getFireMode(GunData data) { return switch (data.fireMode.get()) { - case 1 -> BURST; - case 2 -> AUTO; - default -> SEMI; + case SEMI -> SEMI; + case BURST -> BURST; + case AUTO -> AUTO; }; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index dab61e67d..40b0e80dc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -12,6 +12,7 @@ import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity; import com.atsuishio.superbwarfare.entity.vehicle.base.WeaponVehicleEntity; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.item.gun.data.FireMode; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; import com.atsuishio.superbwarfare.network.message.send.*; @@ -492,10 +493,9 @@ public class ClientEventHandler { return; } var data = GunData.from(stack); - final var tag = data.tag(); var perk = data.perk.get(Perk.Type.AMMO); - int mode = data.fireMode.get(); + var mode = data.fireMode.get(); // 精准度 float times = (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8); @@ -581,7 +581,7 @@ public class ClientEventHandler { && !player.getCooldowns().isOnCooldown(stack.getItem()) && !GunData.from(stack).bolt.needed.get()) )) { - if (mode == 0) { + if (mode == FireMode.SEMI) { if (clientTimer.getProgress() == 0) { clientTimer.start(); shootClient(player); @@ -611,7 +611,7 @@ public class ClientEventHandler { } } else { - if (mode != 0 && clientTimer.getProgress() >= cooldown) { + if (mode != FireMode.SEMI && clientTimer.getProgress() >= cooldown) { clientTimer.stop(); } fireSpread = 0; @@ -619,7 +619,7 @@ public class ClientEventHandler { gunPartMove(times); - if (mode == 0 && clientTimer.getProgress() >= cooldown) { + if (mode == FireMode.SEMI && clientTimer.getProgress() >= cooldown) { clientTimer.stop(); } @@ -659,12 +659,12 @@ public class ClientEventHandler { if (!gunItem.canShoot(data)) return; if (stack.is(ModTags.Items.NORMAL_GUN)) { - int mode = data.fireMode.get(); - if (mode != 2) { + var mode = data.fireMode.get(); + if (mode != FireMode.AUTO) { holdFire = false; } - if (mode == 1) { + if (mode == FireMode.BURST) { if (data.ammo.get() == 1) { burstFireAmount = 1; } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java index b96e3c608..0077c8ac4 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -458,18 +458,6 @@ public abstract class GunItem extends Item implements CustomRendererItem { return ""; } - public enum FireMode { - SEMI(1), - BURST(2), - AUTO(4); - - public final int flag; - - FireMode(int i) { - this.flag = i; - } - } - public final Map> reloadTimeBehaviors = new HashMap<>(); /** diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/DefaultGunData.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/DefaultGunData.java index a7a8d6026..ed1b04e13 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/DefaultGunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/DefaultGunData.java @@ -3,6 +3,7 @@ package com.atsuishio.superbwarfare.item.gun.data; import com.google.gson.annotations.SerializedName; import java.util.List; +import java.util.Set; public class DefaultGunData { @@ -32,8 +33,12 @@ public class DefaultGunData { public int projectileAmount = 1; @SerializedName("Weight") public double weight; - @SerializedName("FireMode") - public int fireMode; + + @SerializedName("DefaultFireMode") + public FireMode defaultFireMode = FireMode.SEMI; + @SerializedName("AvailableFireModes") + public Set availableFireModes = Set.of(FireMode.SEMI); + @SerializedName("BurstAmount") public int burstAmount; @SerializedName("BypassesArmor") @@ -87,7 +92,4 @@ public class DefaultGunData { "!superbwarfare:longer_wire", "!superbwarfare:cupid_arrow" ); - - @SerializedName("AvailableFireModes") - public int availableFireModes = 1; } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/FireMode.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/FireMode.java new file mode 100644 index 000000000..4ba8fe524 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/FireMode.java @@ -0,0 +1,34 @@ +package com.atsuishio.superbwarfare.item.gun.data; + +import com.atsuishio.superbwarfare.Mod; +import com.google.gson.annotations.SerializedName; + +public enum FireMode { + @SerializedName("Semi") + SEMI("Semi"), + @SerializedName("Burst") + BURST("Burst"), + @SerializedName("Auto") + AUTO("Auto"); + + public final String name; + + FireMode(String name) { + this.name = name; + } + + public static FireMode fromValue(String value) { + for (var enumConstant : FireMode.values()) { + if (enumConstant.toString().equals(value)) { + return enumConstant; + } + } + Mod.LOGGER.warn("No FireMode with value {}", value); + return FireMode.SEMI; + } + + @Override + public String toString() { + return this.name; + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java index cff1bf96e..e05cbab6a 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/GunData.java @@ -27,10 +27,7 @@ import net.neoforged.neoforge.registries.DeferredHolder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.UUID; +import java.util.*; public class GunData { @@ -74,7 +71,7 @@ public class GunData { perk = new Perks(this); ammo = new IntValue(data, "Ammo"); - fireMode = new IntValue(data, "FireMode", defaultGunData().fireMode); + fireMode = new StringEnumValue<>(data, "FireMode", defaultGunData().defaultFireMode, FireMode::fromValue); level = new IntValue(data, "Level"); exp = new DoubleValue(data, "Exp"); upgradePoint = new DoubleValue(data, "UpgradePoint"); @@ -501,13 +498,13 @@ public class GunData { return availablePerks().contains(perk); } - public int getAvailableFireModes() { + public Set getAvailableFireModes() { return defaultGunData().availableFireModes; } // 可持久化属性开始 public final IntValue ammo; - public final IntValue fireMode; + public final StringEnumValue fireMode; public final IntValue level; public final DoubleValue exp; public final DoubleValue upgradePoint; diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/data/value/StringEnumValue.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/value/StringEnumValue.java new file mode 100644 index 000000000..68bc47fab --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/data/value/StringEnumValue.java @@ -0,0 +1,42 @@ +package com.atsuishio.superbwarfare.item.gun.data.value; + +import net.minecraft.nbt.CompoundTag; + +import java.util.function.Function; + +public class StringEnumValue { + private final CompoundTag tag; + private final String name; + private final T defaultValue; + private final Function toEnum; + + public StringEnumValue(CompoundTag tag, String name, T defaultValue, Function toEnum) { + this.tag = tag; + this.name = name; + this.defaultValue = defaultValue; + this.toEnum = toEnum; + } + + public T get() { + String value; + if (tag.contains(name)) { + value = tag.getString(name); + } else { + value = defaultValue.toString(); + } + return toEnum.apply(value); + } + + public void set(T value) { + if (value == defaultValue) { + tag.remove(name); + } else { + tag.putString(name, value.toString()); + } + } + + public void reset() { + set(defaultValue); + } + +} diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java index 6060ee4f5..2b11f87f3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/send/FireModeMessage.java @@ -4,6 +4,7 @@ import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.item.gun.GunItem; +import com.atsuishio.superbwarfare.item.gun.data.FireMode; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.tools.SoundTool; import io.netty.buffer.ByteBuf; @@ -35,50 +36,49 @@ public record FireModeMessage(int msgType) implements CustomPacketPayload { if (stack.getItem() instanceof GunItem) { var data = GunData.from(stack); var tag = data.tag(); - int fireMode = data.fireMode.get(); + var fireMode = data.fireMode.get(); - int mode = data.getAvailableFireModes(); - mode &= 0b111; + var mode = data.getAvailableFireModes(); - if (fireMode == 0) { - if ((mode & 2) != 0) { - data.fireMode.set(1); + if (fireMode == FireMode.SEMI) { + if (mode.contains(FireMode.BURST)) { + data.fireMode.set(FireMode.BURST); playChangeModeSound(player); data.save(); return; } - if ((mode & 4) != 0) { - data.fireMode.set(2); + if (mode.contains(FireMode.AUTO)) { + data.fireMode.set(FireMode.AUTO); playChangeModeSound(player); data.save(); return; } } - if (fireMode == 1) { - if ((mode & 4) != 0) { - data.fireMode.set(2); + if (fireMode == FireMode.BURST) { + if (mode.contains(FireMode.AUTO)) { + data.fireMode.set(FireMode.AUTO); playChangeModeSound(player); data.save(); return; } - if ((mode & 1) != 0) { - data.fireMode.set(0); + if (mode.contains(FireMode.SEMI)) { + data.fireMode.set(FireMode.SEMI); playChangeModeSound(player); data.save(); return; } } - if (fireMode == 2) { - if ((mode & 1) != 0) { - data.fireMode.set(0); + if (fireMode == FireMode.AUTO) { + if (mode.contains(FireMode.SEMI)) { + data.fireMode.set(FireMode.SEMI); playChangeModeSound(player); data.save(); return; } - if ((mode & 2) != 0) { - data.fireMode.set(1); + if (mode.contains(FireMode.BURST)) { + data.fireMode.set(FireMode.BURST); playChangeModeSound(player); data.save(); return; diff --git a/src/main/resources/data/superbwarfare/guns/aa_12.json b/src/main/resources/data/superbwarfare/guns/aa_12.json index b17bae060..a8aa7165d 100644 --- a/src/main/resources/data/superbwarfare/guns/aa_12.json +++ b/src/main/resources/data/superbwarfare/guns/aa_12.json @@ -8,13 +8,13 @@ "Magazine": 25, "ProjectileAmount": 12, "Weight": 7, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 64, "EmptyReloadTime": 85, "BypassesArmor": 0.05, "SoundRadius": 18, "RPM": 360, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@ShotgunAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/ak_12.json b/src/main/resources/data/superbwarfare/guns/ak_12.json index fceb4d5a9..a63ec9e4f 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_12.json +++ b/src/main/resources/data/superbwarfare/guns/ak_12.json @@ -9,13 +9,13 @@ "Velocity": 44.5, "Magazine": 30, "Weight": 4, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 52, "EmptyReloadTime": 58, "BypassesArmor": 0.23, "SoundRadius": 12, "RPM": 700, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/ak_47.json b/src/main/resources/data/superbwarfare/guns/ak_47.json index ed1215d87..44587408c 100644 --- a/src/main/resources/data/superbwarfare/guns/ak_47.json +++ b/src/main/resources/data/superbwarfare/guns/ak_47.json @@ -9,13 +9,13 @@ "Velocity": 36, "Magazine": 30, "Weight": 5, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 52, "EmptyReloadTime": 65, "BypassesArmor": 0.2, "SoundRadius": 14, "RPM": 600, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/devotion.json b/src/main/resources/data/superbwarfare/guns/devotion.json index d0285d83a..f3c328c79 100644 --- a/src/main/resources/data/superbwarfare/guns/devotion.json +++ b/src/main/resources/data/superbwarfare/guns/devotion.json @@ -8,13 +8,13 @@ "Velocity": 40, "Magazine": 55, "Weight": 6, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 73, "EmptyReloadTime": 95, "BypassesArmor": 0.25, "SoundRadius": 13, "RPM": 400, - "AvailableFireModes": 4, + "AvailableFireModes": ["Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/glock_18.json b/src/main/resources/data/superbwarfare/guns/glock_18.json index 67b9f4b79..b42748ed5 100644 --- a/src/main/resources/data/superbwarfare/guns/glock_18.json +++ b/src/main/resources/data/superbwarfare/guns/glock_18.json @@ -7,13 +7,13 @@ "Velocity": 17, "Magazine": 17, "Weight": 1, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 44, "EmptyReloadTime": 47, "BypassesArmor": 0.15, "SoundRadius": 8, "RPM": 1300, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@HandgunAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/hk_416.json b/src/main/resources/data/superbwarfare/guns/hk_416.json index 39fe9a19f..2c1c1dc23 100644 --- a/src/main/resources/data/superbwarfare/guns/hk_416.json +++ b/src/main/resources/data/superbwarfare/guns/hk_416.json @@ -9,13 +9,13 @@ "Velocity": 44, "Magazine": 30, "Weight": 4, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 56, "EmptyReloadTime": 64, "BypassesArmor": 0.25, "SoundRadius": 14, "RPM": 900, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/insidious.json b/src/main/resources/data/superbwarfare/guns/insidious.json index 557dd63e2..ca94755d6 100644 --- a/src/main/resources/data/superbwarfare/guns/insidious.json +++ b/src/main/resources/data/superbwarfare/guns/insidious.json @@ -7,13 +7,13 @@ "Velocity": 50, "Magazine": 48, "Weight": 6, - "FireMode": 1, + "DefaultFireMode": "Auto", "BurstAmount": 4, "EmptyReloadTime": 56, "BypassesArmor": 0.4, "SoundRadius": 12, "RPM": 900, - "AvailableFireModes": 2, + "AvailableFireModes": ["Burst"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/k_98.json b/src/main/resources/data/superbwarfare/guns/k_98.json index 5ded91d39..2023ba9be 100644 --- a/src/main/resources/data/superbwarfare/guns/k_98.json +++ b/src/main/resources/data/superbwarfare/guns/k_98.json @@ -8,7 +8,7 @@ "Magazine": 5, "BoltActionTime": 22, "Weight": 5, - "FireMode": 0, + "DefaultFireMode": "Auto", "EmptyReloadTime": 59, "PrepareTime": 29, "IterativeTime": 11, diff --git a/src/main/resources/data/superbwarfare/guns/m_4.json b/src/main/resources/data/superbwarfare/guns/m_4.json index 519c4b3ed..99b0dc734 100644 --- a/src/main/resources/data/superbwarfare/guns/m_4.json +++ b/src/main/resources/data/superbwarfare/guns/m_4.json @@ -9,13 +9,13 @@ "Velocity": 44, "Magazine": 30, "Weight": 4, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 56, "EmptyReloadTime": 64, "BypassesArmor": 0.25, "SoundRadius": 14, "RPM": 850, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/m_60.json b/src/main/resources/data/superbwarfare/guns/m_60.json index 892f6743f..4456bfe63 100644 --- a/src/main/resources/data/superbwarfare/guns/m_60.json +++ b/src/main/resources/data/superbwarfare/guns/m_60.json @@ -7,13 +7,13 @@ "Velocity": 43, "Magazine": 100, "Weight": 8, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 114, "EmptyReloadTime": 133, "BypassesArmor": 0.25, "SoundRadius": 15, "RPM": 600, - "AvailableFireModes": 4, + "AvailableFireModes": ["Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/minigun.json b/src/main/resources/data/superbwarfare/guns/minigun.json index 1afabc444..dc5570dac 100644 --- a/src/main/resources/data/superbwarfare/guns/minigun.json +++ b/src/main/resources/data/superbwarfare/guns/minigun.json @@ -9,7 +9,7 @@ "BypassesArmor": 0.3, "SoundRadius": 14, "RPM": 1200, - "FireMode": 2, + "DefaultFireMode": "Auto", "AmmoType": "@RifleAmmo", "ShootDelay": 20, "HeatPerShoot": 0.5, diff --git a/src/main/resources/data/superbwarfare/guns/mk_14.json b/src/main/resources/data/superbwarfare/guns/mk_14.json index 3c9cea373..917409a76 100644 --- a/src/main/resources/data/superbwarfare/guns/mk_14.json +++ b/src/main/resources/data/superbwarfare/guns/mk_14.json @@ -9,13 +9,13 @@ "Velocity": 42.5, "Magazine": 20, "Weight": 5, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 54, "EmptyReloadTime": 71, "BypassesArmor": 0.4, "SoundRadius": 16, "RPM": 700, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/qbz_95.json b/src/main/resources/data/superbwarfare/guns/qbz_95.json index edb5289f5..3ea7d89aa 100644 --- a/src/main/resources/data/superbwarfare/guns/qbz_95.json +++ b/src/main/resources/data/superbwarfare/guns/qbz_95.json @@ -9,13 +9,13 @@ "Velocity": 46, "Magazine": 30, "Weight": 4, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 60, "EmptyReloadTime": 74, "BypassesArmor": 0.28, "SoundRadius": 13, "RPM": 650, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/rpk.json b/src/main/resources/data/superbwarfare/guns/rpk.json index 0c11e0974..61d0a7e11 100644 --- a/src/main/resources/data/superbwarfare/guns/rpk.json +++ b/src/main/resources/data/superbwarfare/guns/rpk.json @@ -9,13 +9,13 @@ "Velocity": 38, "Magazine": 40, "Weight": 7, - "FireMode": 2, + "DefaultFireMode": "Auto", "NormalReloadTime": 52, "EmptyReloadTime": 65, "BypassesArmor": 0.23, "SoundRadius": 14, "RPM": 600, - "AvailableFireModes": 5, + "AvailableFireModes": ["Semi", "Auto"], "AmmoType": "@RifleAmmo", "AvailablePerks": [ "@Ammo", diff --git a/src/main/resources/data/superbwarfare/guns/vector.json b/src/main/resources/data/superbwarfare/guns/vector.json index d7a038c54..2d673d16a 100644 --- a/src/main/resources/data/superbwarfare/guns/vector.json +++ b/src/main/resources/data/superbwarfare/guns/vector.json @@ -7,14 +7,14 @@ "Velocity": 16, "Magazine": 13, "Weight": 3, - "FireMode": 2, + "DefaultFireMode": "Auto", "BurstAmount": 3, "NormalReloadTime": 46, "EmptyReloadTime": 64, "BypassesArmor": 0.15, "SoundRadius": 11, "RPM": 1200, - "AvailableFireModes": 7, + "AvailableFireModes": ["Semi", "Burst", "Auto"], "AmmoType": "@HandgunAmmo", "AvailablePerks": [ "@Ammo",