Ensure correct number of thieves are selected (#23270)

Fix thief selection

Co-authored-by: Rainfall <rainfey0+git@gmail.com>
This commit is contained in:
Rainfey
2024-01-01 02:25:28 +00:00
committed by GitHub
parent 8e473d2369
commit 3ea7c5e4f7

View File

@@ -81,11 +81,19 @@ public sealed class ThiefRuleSystem : GameRuleSystem<ThiefRuleComponent>
var startThiefCount = Math.Min(component.MaxAllowThief, component.StartCandidates.Count);
var thiefPool = _antagSelection.FindPotentialAntags(component.StartCandidates, component.ThiefPrototypeId);
//TO DO: When voxes specifies are added, increase their chance of becoming a thief by 4 times >:)
var selectedThieves = _antagSelection.PickAntag(_random.Next(1, startThiefCount), thiefPool);
foreach(var thief in selectedThieves)
//Add 1, as Next() is exclusive of maxValue
var numberOfThievesToSelect = _random.Next(1, startThiefCount + 1);
//While we dont have the correct number of thieves, and there are potential thieves remaining
while (component.ThievesMinds.Count < numberOfThievesToSelect && thiefPool.Count > 0)
{
MakeThief(component, thief, component.PacifistThieves);
Log.Info($"{numberOfThievesToSelect} thieves required, {component.ThievesMinds.Count} currently chosen, {thiefPool.Count} potentials");
var selectedThieves = _antagSelection.PickAntag(numberOfThievesToSelect - component.ThievesMinds.Count, thiefPool);
foreach (var thief in selectedThieves)
{
MakeThief(component, thief, component.PacifistThieves);
}
}
}