diff --git a/OpenRA.Mods.Common/Traits/Armament.cs b/OpenRA.Mods.Common/Traits/Armament.cs index e5a8e7da0c..c31c0bfad0 100644 --- a/OpenRA.Mods.Common/Traits/Armament.cs +++ b/OpenRA.Mods.Common/Traits/Armament.cs @@ -113,6 +113,8 @@ namespace OpenRA.Mods.Common.Traits IEnumerable damageModifiers; IEnumerable inaccuracyModifiers; + int ticksSinceLastShot; + List> delayedActions = new List>(); public WDist Recoil; @@ -169,6 +171,9 @@ namespace OpenRA.Mods.Common.Traits if (IsTraitDisabled) return; + if (ticksSinceLastShot < Weapon.ReloadDelay) + ++ticksSinceLastShot; + if (FireDelay > 0) --FireDelay; @@ -221,6 +226,11 @@ namespace OpenRA.Mods.Common.Traits if (!Weapon.IsValidAgainst(target, self.World, self)) return null; + if (ticksSinceLastShot >= Weapon.ReloadDelay) + Burst = Weapon.Burst; + + ticksSinceLastShot = 0; + var barrel = Barrels[Burst % Barrels.Length]; Func muzzlePosition = () => self.CenterPosition + MuzzleOffset(self, barrel); var legacyFacing = MuzzleOrientation(self, barrel).Yaw.Angle / 4; diff --git a/mods/ra/weapons/smallcaliber.yaml b/mods/ra/weapons/smallcaliber.yaml index 73af355121..eda0c40034 100644 --- a/mods/ra/weapons/smallcaliber.yaml +++ b/mods/ra/weapons/smallcaliber.yaml @@ -23,8 +23,8 @@ ZSU-23: Inherits: ^AACannon Burst: 2 - BurstDelay: 5 - ReloadDelay: 0 + BurstDelay: 0 + ReloadDelay: 5 Range: 10c0 Projectile: Bullet Speed: 3c340