diff --git a/OpenRA.Mods.RA/Activities/HeliAttack.cs b/OpenRA.Mods.RA/Activities/HeliAttack.cs index ce5de18142..054cc14b3c 100644 --- a/OpenRA.Mods.RA/Activities/HeliAttack.cs +++ b/OpenRA.Mods.RA/Activities/HeliAttack.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA.Activities return this; } - var range = self.GetPrimaryWeapon().Range - 1; + var range = self.traits.Get().GetMaximumRange() - 1; var dist = target.CenterLocation - self.CenterLocation; var desiredFacing = Util.GetFacing(dist, unit.Facing); diff --git a/OpenRA.Mods.RA/AttackLeap.cs b/OpenRA.Mods.RA/AttackLeap.cs index 53c62339d6..fda15067a5 100644 --- a/OpenRA.Mods.RA/AttackLeap.cs +++ b/OpenRA.Mods.RA/AttackLeap.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA if (!target.IsValid) return; if (self.GetCurrentActivity() is Leap) return; - var weapon = self.GetPrimaryWeapon(); + var weapon = self.traits.Get().Weapons[0].Info; if (weapon.Range * Game.CellSize * weapon.Range * Game.CellSize < (target.CenterLocation - self.CenterLocation).LengthSquared) return; diff --git a/OpenRA.Mods.RA/Combat.cs b/OpenRA.Mods.RA/Combat.cs index 5776f73b6b..768635b3dd 100755 --- a/OpenRA.Mods.RA/Combat.cs +++ b/OpenRA.Mods.RA/Combat.cs @@ -126,6 +126,9 @@ namespace OpenRA.Mods.RA facing = 0 }; + if (args.weapon.Report != null) + Sound.Play(args.weapon.Report + ".aud", pos); + DoImpacts(args); } @@ -176,17 +179,6 @@ namespace OpenRA.Mods.RA return true; } - public static WeaponInfo GetPrimaryWeapon(this Actor self) - { - var info = self.Info.Traits.GetOrDefault(); - if (info == null) return null; - - var weapon = info.PrimaryWeapon; - if (weapon == null) return null; - - return Rules.Weapons[weapon.ToLowerInvariant()]; - } - static float2 GetRecoil(Actor self, float recoil) { var abInfo = self.Info.Traits.GetOrDefault(); diff --git a/OpenRA.Mods.RA/DemoTruck.cs b/OpenRA.Mods.RA/DemoTruck.cs index 6daa3102c8..21bedd8600 100644 --- a/OpenRA.Mods.RA/DemoTruck.cs +++ b/OpenRA.Mods.RA/DemoTruck.cs @@ -40,10 +40,7 @@ namespace OpenRA.Mods.RA self.World.AddFrameEndTask( w => { Combat.DoExplosion(self, info.PrimaryWeapon, self.CenterLocation, altitude); - var report = self.GetPrimaryWeapon().Report; - if (report != null) - Sound.Play(report + ".aud", self.CenterLocation); - + // Remove from world self.Kill(self); detonatedBy.Owner.Kills++; diff --git a/OpenRA.Mods.RA/RenderRangeCircle.cs b/OpenRA.Mods.RA/RenderRangeCircle.cs index 05a7734b41..a1dcf92179 100644 --- a/OpenRA.Mods.RA/RenderRangeCircle.cs +++ b/OpenRA.Mods.RA/RenderRangeCircle.cs @@ -23,7 +23,7 @@ namespace OpenRA.Mods.RA self.World.WorldRenderer.DrawRangeCircle( Color.FromArgb(128, Color.Yellow), - self.CenterLocation, (int)self.GetPrimaryWeapon().Range); + self.CenterLocation, (int)self.traits.Get().GetMaximumRange()); } } }