public IEnumerable <Injury> DetermineInjury(int?roll) { if (!roll.HasValue) { roll = DiceRoller.RollD66(); } switch (roll.Value) { case 11: case 12: case 13: case 14: case 15: case 16: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.DEAD) }); case 21: var injuries = new List <Injury>(); injuries.Add(_injuryFactory.GetInjury((int)InjuryEnum.MULTIPLE_INJURIES)); var extraInjuries = DiceRoller.RollDie(); for (int i = 0; i < extraInjuries; i++) { injuries.Add(DetermineInjury(DiceRoller.MultipleInjuriesRoll()).FirstOrDefault()); } return(injuries); case 22: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.CHEST_WOUND) }); case 23: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.LEG_WOUND) }); case 24: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.ARM_WOUND) }); case 25: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.HEAD_WOUND) }); case 26: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.BLINDED_IN_ONE_EYE) }); case 31: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.PARTIALLY_DEAFENED) }); case 32: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.SHELL_SHOCK) }); case 33: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.HAND_INJURY) }); case 34: case 35: case 36: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.OLD_BATTLE_WOUND) }); case 41: case 42: case 43: case 44: case 45: case 46: case 51: case 52: case 53: case 54: case 55: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.FULL_RECOVERY) }); case 56: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.BITTER_ENMITY) }); case 61: case 62: case 63: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.CAPTURED) }); case 64: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.HORRIBLE_SCARS) }); case 65: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.IMPRESSIVE_SCARS) }); case 66: return(new[] { _injuryFactory.GetInjury((int)InjuryEnum.SURVIVES_AGAINST_THE_ODDS) }); default: HivemindException.NoSuchInjuryException(roll.Value); return(new Injury[] { }); } }