using Robust.Shared.Random; namespace Content.Shared.EntityTable.ValueSelector; /// /// Gives a value between the two numbers specified, inclusive. /// public sealed partial class RangeNumberSelector : NumberSelector { /// /// The min and max value of this selector, both are inclusive. /// [DataField] public Vector2i Range = new(1, 1); public RangeNumberSelector(Vector2i range) { Range = range; } public override int Get(IRobustRandom rand) { // rand.Next() is inclusive on the first number and exclusive on the second number, // so we add 1 to the second number. return rand.Next(Range.X, Range.Y + 1); } public override float Odds() { return Range.X == 0 ? 1f / (Range.Y + 1) : 1; } public override float Average() { return (Range.X + Range.Y) / 2f; } }