Example #1
0
        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();
            }
        }
Example #2
0
        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());
        }