protected virtual void SetupChampionBody(IBody body, IEnumerable <IGrabableItem> items) { var hands = new IStorageType[] { ActionHandStorageType.Instance, ReadyHandStorageType.Instance }; var handsEnumerator = hands.Cast <IStorageType>().GetEnumerator(); foreach (var i in items) { var carryLocations = i.FactoryBase.CarryLocation; var storage = carryLocations.Except(hands.Concat(carryLocations.Where(x => !x.IsBodyPart))).FirstOrDefault(); if (storage == null) { storage = handsEnumerator.MoveNext() ? handsEnumerator.Current : BackPackStorageType.Instance; } if (storage == ConsumableStorageType.Instance) { storage = BackPackStorageType.Instance; } if (!body.GetStorage(storage).AddItem(i)) { throw new InvalidOperationException("Shouldn't be possible."); } } }