public void RunTill(int round = int.MaxValue) { using (Concurrency.Current.Lock(Attacker.AttackStub, Defender.Local)) { while (battleManager.ExecuteTurn()) { CurrentRound = battleManager.Round; if ((CurrentRound = battleManager.Round) >= round) { return; } Thread.Sleep(new TimeSpan(0, 0, 0, TurnIntervalInSecond)); } } }