private void ProcessUnit(Unit unit) { if (unit.IsDefeated) { var currentTask = unit.Tasks.FirstOrDefault(); if (currentTask != null && !currentTask.Storyline) { unit.Tasks.Remove(currentTask); } unit.UpdateRessuraction(); return; } if (unit.Tasks.Any()) { var currentTask = unit.Tasks.First(); if (currentTask.Storyline && dice.TestCombat()) { GenerateCombatTask(unit); } else { ProcessUnitTask(unit, currentTask); } } else { GenerateStorylineTask(unit); } }