diff --git a/src/main/java/com/flansmod/client/handlers/KeyInputHandler.java b/src/main/java/com/flansmod/client/handlers/KeyInputHandler.java index 5eb8ded57..e73d65b4b 100644 --- a/src/main/java/com/flansmod/client/handlers/KeyInputHandler.java +++ b/src/main/java/com/flansmod/client/handlers/KeyInputHandler.java @@ -218,7 +218,7 @@ void checkEventKeys() animations.doReload(type.reloadTime, pumpDelay, pumpTime); data.reloadingRight = true; - data.burstRoundsRemainingRight = 0; + data.burstTicksRemainingRight = 0; } } } diff --git a/src/main/java/com/flansmod/common/PlayerData.java b/src/main/java/com/flansmod/common/PlayerData.java index b0c391828..4dcf005bc 100644 --- a/src/main/java/com/flansmod/common/PlayerData.java +++ b/src/main/java/com/flansmod/common/PlayerData.java @@ -85,7 +85,7 @@ public class PlayerData /** * When the player shoots a burst fire weapon, one shot is fired immediately and this counter keeps track of how many more should be fired */ - public int burstRoundsRemainingLeft = 0, burstRoundsRemainingRight = 0; + public int burstTicksRemainingLeft = 0, burstTicksRemainingRight = 0; // Handed getters and setters public float GetShootTime(EnumHand hand) @@ -99,15 +99,22 @@ public void SetShootTime(EnumHand hand, float set) else shootTimeRight = set; } - public int GetBurstRoundsRemaining(EnumHand hand) + public int GetBurstTicksRemaining(EnumHand hand) { - return hand == EnumHand.OFF_HAND ? burstRoundsRemainingLeft : burstRoundsRemainingRight; + return hand == EnumHand.OFF_HAND ? burstTicksRemainingLeft : burstTicksRemainingRight; } - public void SetBurstRoundsRemaining(EnumHand hand, int set) + public void SetBurstTicksRemaining(EnumHand hand, int set) { - if(hand == EnumHand.OFF_HAND) burstRoundsRemainingLeft = set; - else burstRoundsRemainingRight = set; + if(hand == EnumHand.OFF_HAND) burstTicksRemainingLeft = set; + else burstTicksRemainingRight = set; + } + + public boolean IsBursting(EnumHand hand) + { + if(GetBurstTicksRemaining(hand) > 0) + return true; + else return false; } public Vector3f[] lastMeleePositions; diff --git a/src/main/java/com/flansmod/common/guns/GunType.java b/src/main/java/com/flansmod/common/guns/GunType.java index f6c3e95fe..6dbd2d3d6 100644 --- a/src/main/java/com/flansmod/common/guns/GunType.java +++ b/src/main/java/com/flansmod/common/guns/GunType.java @@ -833,7 +833,7 @@ public float GetShootDelay(ItemStack stack) for(AttachmentType attachment : getCurrentAttachments(stack)) { if(attachment.modeOverride == EnumFireMode.BURST) - return Math.max(shootDelay, 3); + return Math.max(shootDelay, 1.5F); } float stackShootDelay = shootDelay; diff --git a/src/main/java/com/flansmod/common/guns/ItemGun.java b/src/main/java/com/flansmod/common/guns/ItemGun.java index 99e252138..defc30a62 100644 --- a/src/main/java/com/flansmod/common/guns/ItemGun.java +++ b/src/main/java/com/flansmod/common/guns/ItemGun.java @@ -57,6 +57,7 @@ import com.flansmod.common.enchantments.EnchantmentModule; import com.flansmod.common.enchantments.ItemGlove; import com.flansmod.common.guns.raytracing.FlansModRaytracer; +import com.flansmod.common.guns.GunType; import com.flansmod.common.network.PacketGunFire; import com.flansmod.common.network.PacketPlaySound; import com.flansmod.common.network.PacketReload; @@ -349,11 +350,23 @@ public void onUpdateClient(ItemStack gunstack, int gunSlot, World world, Entity case BURST: { //PlayerData burst rounds handled on client - if(data.GetBurstRoundsRemaining(hand) > 0) + if(hold && !held) { - shouldShootThisTick = true; + if(type.mode != EnumFireMode.BURST) + data.SetBurstTicksRemaining(hand, (int) (Math.max(type.shootDelay, 1.5F) * 3)); + else + data.SetBurstTicksRemaining(hand, (int) type.shootDelay * 3); + } + else if(held) + { + if(data.IsBursting(hand)) + { + shouldShootThisTick = true; + data.SetBurstTicksRemaining(hand, data.GetBurstTicksRemaining(hand) - 1); + } } - // Fallthrough to semi auto + else needsToReload = false; + break; } case SEMIAUTO: { diff --git a/src/main/java/com/flansmod/common/network/PacketGunAnimation.java b/src/main/java/com/flansmod/common/network/PacketGunAnimation.java index beb0958df..3eff7fa68 100644 --- a/src/main/java/com/flansmod/common/network/PacketGunAnimation.java +++ b/src/main/java/com/flansmod/common/network/PacketGunAnimation.java @@ -159,7 +159,7 @@ private void handleAnimation(GunAnimations animations, AnimationType type, Entit animations.doReload(reloadtime, pumpdelay, pumptime); PlayerData data = PlayerHandler.getPlayerData(player); data.shootTimeRight = data.shootTimeLeft = reloadtime; - data.SetBurstRoundsRemaining(hand, 0); + data.SetBurstTicksRemaining(hand, 0); data.reloadingLeft = data.reloadingRight = true; break;