diff --git a/OpenRA.Mods.Common/Traits/Attack/AttackGarrisoned.cs b/OpenRA.Mods.Common/Traits/Attack/AttackGarrisoned.cs index c8cddd0b6b..c30549f309 100644 --- a/OpenRA.Mods.Common/Traits/Attack/AttackGarrisoned.cs +++ b/OpenRA.Mods.Common/Traits/Attack/AttackGarrisoned.cs @@ -78,6 +78,7 @@ namespace OpenRA.Mods.Common.Traits public class AttackGarrisoned : AttackFollow, INotifyPassengerEntered, INotifyPassengerExited, IRender { public new readonly AttackGarrisonedInfo Info; + INotifyAttack[] notifyAttacks; readonly Lazy coords; readonly List armaments; readonly List muzzles; @@ -97,6 +98,12 @@ namespace OpenRA.Mods.Common.Traits paxRender = new Dictionary(); } + protected override void Created(Actor self) + { + notifyAttacks = self.TraitsImplementing().ToArray(); + base.Created(self); + } + protected override Func> InitializeGetArmaments(Actor self) { return () => armaments; @@ -182,7 +189,7 @@ namespace OpenRA.Mods.Common.Traits muzzleAnim.PlayThen(sequence, () => muzzles.Remove(muzzleFlash)); } - foreach (var npa in self.TraitsImplementing()) + foreach (var npa in notifyAttacks) npa.Attacking(self, target, a, barrel); } }