public override void Execute(IImpactChangePerkCharges data) { var value = (int)_logic.Calculate(data.Value); var unitData = _units.ExplorerUnits .Select(x => { var(unit, _) = _units.GetUnit(x); return(unit); }) .FirstOrDefault(x => { x.PerkCharges.TryGetValue(data.PerkId, out value); return(value > 0); }); if (unitData == null) { throw new Exception($"Закончились заряды перка"); } unitData.PerkCharges[data.PerkId] -= 1; LogicLog.ChangePerkCharge(data.PerkId, value); }