pass playercount to midround antag calculation
/// Tries to get the next non-filled definition based on the current amount of selected minds and other factors.
/// </summary>
public bool TryGetNextAvailableDefinition(Entity<AntagSelectionComponent> ent,
- [NotNullWhen(true)] out AntagSelectionDefinition? definition)
+ [NotNullWhen(true)] out AntagSelectionDefinition? definition,
+ int? players = null)
{
definition = null;
- var totalTargetCount = GetTargetAntagCount(ent);
+ var totalTargetCount = GetTargetAntagCount(ent, players);
var mindCount = ent.Comp.SelectedMinds.Count;
if (mindCount >= totalTargetCount)
return false;
DebugTools.AssertEqual(antag.SelectionTime, AntagSelectionTime.PostPlayerSpawn);
- if (!TryGetNextAvailableDefinition((uid, antag), out var def))
+ // do not count players in the lobby for the antag ratio
+ var players = _playerManager.NetworkedSessions.Count(x => x.AttachedEntity != null);
+
+ if (!TryGetNextAvailableDefinition((uid, antag), out var def, players))
continue;
if (TryMakeAntag((uid, antag), args.Player, def.Value))