From c38018316b05ac994b2ad5bd804775484464f06f Mon Sep 17 00:00:00 2001 From: Crypto137 Date: Tue, 24 Mar 2026 20:29:50 +0300 Subject: [PATCH] Add reusable picker for IntervalPowersRandomTarget hotspots --- src/MHServerEmu.Games/Entities/Hotspot.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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;