From 6c2c5935ed444f8e6f082a11f90e75d20dd4c5e3 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:02:49 -0700 Subject: [PATCH] fix RangeNumberSelector to actually be inclusive (#36155) * fix RangeNumberSelector to actually be inclusive * Convert all random number stuff to randomint and prune unused code * another heisentest??? * another heisentest after a heisentest. im going to lose it. --- .../EntityTable/EntitySelectors/EntSelector.cs | 2 +- .../EntitySelectors/EntityTableSelector.cs | 2 +- .../ValueSelector/ConstantNumberSelector.cs | 8 +++----- .../EntityTable/ValueSelector/NumberSelector.cs | 5 +---- .../EntityTable/ValueSelector/RangeNumberSelector.cs | 12 +++++------- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs index eea4dd85a7..8443ec2c06 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs @@ -20,7 +20,7 @@ public sealed partial class EntSelector : EntityTableSelector IEntityManager entMan, IPrototypeManager proto) { - var num = (int) Math.Round(Amount.Get(rand, entMan, proto)); + var num = Amount.Get(rand); for (var i = 0; i < num; i++) { yield return Id; diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index 2533f17dc5..d0a7a4d578 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -30,7 +30,7 @@ public abstract partial class EntityTableSelector IEntityManager entMan, IPrototypeManager proto) { - var rolls = Rolls.Get(rand, entMan, proto); + var rolls = Rolls.Get(rand); for (var i = 0; i < rolls; i++) { if (!rand.Prob(Prob)) diff --git a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs index 0baf6785f4..a1a7e4ac58 100644 --- a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs @@ -1,5 +1,3 @@ -using Robust.Shared.Prototypes; - namespace Content.Shared.EntityTable.ValueSelector; /// @@ -8,14 +6,14 @@ namespace Content.Shared.EntityTable.ValueSelector; public sealed partial class ConstantNumberSelector : NumberSelector { [DataField] - public float Value = 1; + public int Value = 1; - public ConstantNumberSelector(float value) + public ConstantNumberSelector(int value) { Value = value; } - public override float Get(System.Random rand, IEntityManager entMan, IPrototypeManager proto) + public override int Get(System.Random rand) { return Value; } diff --git a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs index 8a7743c9dd..763578a384 100644 --- a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs @@ -1,6 +1,5 @@ using Content.Shared.EntityTable.EntitySelectors; using JetBrains.Annotations; -using Robust.Shared.Prototypes; namespace Content.Shared.EntityTable.ValueSelector; @@ -10,7 +9,5 @@ namespace Content.Shared.EntityTable.ValueSelector; [ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] public abstract partial class NumberSelector { - public abstract float Get(System.Random rand, - IEntityManager entMan, - IPrototypeManager proto); + public abstract int Get(System.Random rand); } diff --git a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs index e8356fcbb7..b84736d1ee 100644 --- a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs @@ -1,7 +1,3 @@ -using System.Numerics; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - namespace Content.Shared.EntityTable.ValueSelector; /// @@ -10,10 +6,12 @@ namespace Content.Shared.EntityTable.ValueSelector; public sealed partial class RangeNumberSelector : NumberSelector { [DataField] - public Vector2 Range = new(1, 1); + public Vector2i Range = new(1, 1); - public override float Get(System.Random rand, IEntityManager entMan, IPrototypeManager proto) + public override int Get(System.Random rand) { - return rand.NextFloat(Range.X, Range.Y + 1); + // 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); } }