using SoulstormReplayReader.Core.Domain.Action; namespace SoulstormReplayReader.Core.Domain.BugCheckers; public sealed class GenBugChecker(int playerId, RaceEnum playerRace) : BugCheckerBase(playerId, playerRace) { private const int TicksRange = 4; private const int GensToTrigger = 3; private int _startTick; private int _gensBuilt; public override void Check(IGameAction action) { if (IsCompleted) return; if (PlayerId != action.PlayerId) return; if (action.Cmd != 117 || action.Arg != 141) return; if (_startTick == 0 || action.Tick - _startTick > TicksRange) { _startTick = action.Tick; _gensBuilt = 0; return; } if (++_gensBuilt == GensToTrigger) { Accusation = $"GenBug: {GensToTrigger}+ gens added in under {TicksRange / 8.0} sec"; IsCompleted = true; } } }