public Monster GetEncounter() { if (!Encounters.Any()) { return(null); } var totalChance = Encounters.Sum(x => x.Percentage); var result = Rng.Between(1, totalChance); var total = 0; foreach (var encounter in Encounters) { total += encounter.Percentage; if (result <= total) { return(MonsterFactory.Get(encounter.Id)); } } ; return(null); }