/// <inheritdoc /> public void PerkLevelUp(IPerk perk) { if (perk is null) { throw new ArgumentNullException(nameof(perk)); } var activePerkIsValid = Perks.Contains(perk); if (!activePerkIsValid) { throw new InvalidOperationException("Указанный перк не является активным для текущего актёра."); } var nextLevel = PerkHelper.GetNextLevel(perk.Scheme, perk.CurrentLevel); perk.CurrentLevel = nextLevel; UpdatePerks(); DoPerkArchieved(perk); }