diff --git a/src/MHServerEmu.Games/Entities/Hotspot.cs b/src/MHServerEmu.Games/Entities/Hotspot.cs index a26180c5..d0a20dea 100644 --- a/src/MHServerEmu.Games/Entities/Hotspot.cs +++ b/src/MHServerEmu.Games/Entities/Hotspot.cs @@ -49,6 +49,8 @@ namespace MHServerEmu.Games.Entities private int _activePowerTargetCount; private bool _killSelf; + private Picker _targetPicker; // Reusable picker for AppliesIntervalPowers hotspots, remove this if we implement picker pooling. + public Hotspot(Game game) : base(game) { SetFlag(EntityFlags.IsHotspot, true); @@ -67,6 +69,9 @@ namespace MHServerEmu.Games.Entities if (hotspotProto.DirectApplyToMissilesData?.EvalPropertiesToApply != null || hotspotProto.Negatable) SetFlag(EntityFlags.IsCollidableHotspot, true); + if (hotspotProto.IntervalPowersRandomTarget) + _targetPicker = new(Game.Random); + return true; } @@ -796,7 +801,7 @@ namespace MHServerEmu.Games.Entities if (hotspotProto.IntervalPowersRandomTarget) { - Picker picker = new(Game.Random); + Picker picker = _targetPicker; var hasLOS = TriBool.Undefined; ulong prevTargetId = InvalidId;