public override void Start(ControlledDivision Host) { Debug.Log($"start split {Host.Soldiers.Count}"); List <Soldier> soldiers = new List <Soldier>(); var soldiersSplitIntoTypes = Host.SplitSoldiersIntoTypes(); foreach (var soldierTypeWanted in SoldiersToSplit) { var soldiersOfType = soldiersSplitIntoTypes[soldierTypeWanted.Key]; var soldiersTaken = soldiersOfType.Take(soldierTypeWanted.Value); soldiers.AddRange(soldiersTaken); soldiersTaken.ToList().ForEach(x => Host.Soldiers.Remove(x)); } var child = Host.Controller.CreateChild(soldiers); IsFinishedSpliting = true; base.Start(Host); Debug.Log($"end split {Host.Soldiers.Count} + {child.AttachedDivision.Soldiers.Count}"); }