public void RollSockets() { if (Type == null || Type.MaxSocketCount == 0) { return; } if (IsPreviouslyOwned || !Flags.HasFlag(ItemFlags.HasRandomSocketCount)) { return; } var table = new RandomizerTable(); var total = Type.MaxSocketCount * 100f; table.Add(new RandomizerNullValue(total)); for (var i = 1; i <= Type.MaxSocketCount; i++) { table.Add(new RandomizerIntValue(i, total / (2 * i))); } var result = table.Evaluate().FirstOrDefault() as RandomizerIntValue; if (result == null) { return; } for (var i = 0; i < result.Value; i++) { AddSocket(); } }
private List <GameObject> FromTable(EncounterData data) { var table = new RandomizerTable(data.UnitTable.Count); foreach (var episodeUnitData in data.UnitTable.Units) { var value = new RandomizerValue <int>( episodeUnitData.UnitId, episodeUnitData.Probability, episodeUnitData.IsUnique, episodeUnitData.IsGuaranteed, episodeUnitData.IsEnabled ); table.Add(value); } return(table.Evaluate() .OfType <RandomizerValue <int> >() .Select(value => value.Value) .Select(unitId => this.unitRepository.Find(unitId)) .ToList()); }