var playersPerOperative = nukeops.PlayersPerOperative;
var maxOperatives = nukeops.MaxOperatives;
+ // Dear lord what is happening HERE.
var everyone = new List<IPlayerSession>(ev.PlayerPool);
var prefList = new List<IPlayerSession>();
+ var medPrefList = new List<IPlayerSession>();
var cmdrPrefList = new List<IPlayerSession>();
var operatives = new List<IPlayerSession>();
{
prefList.Add(player);
}
-
+ if (profile.AntagPreferences.Contains(nukeops.MedicRoleProto))
+ {
+ medPrefList.Add(player);
+ }
if (profile.AntagPreferences.Contains(nukeops.CommanderRolePrototype))
{
cmdrPrefList.Add(player);
for (var i = 0; i < numNukies; i++)
{
+ // TODO: Please fix this if you touch it.
IPlayerSession nukeOp;
// Only one commander, so we do it at the start
if (i == 0)
{
if (cmdrPrefList.Count == 0)
{
- if (prefList.Count == 0)
+ if (medPrefList.Count == 0)
{
- if (everyone.Count == 0)
+ if (prefList.Count == 0)
{
- Logger.InfoS("preset",
- "Insufficient ready players to fill up with nukeops, stopping the selection");
- break;
+ if (everyone.Count == 0)
+ {
+ Logger.InfoS("preset", "Insufficient ready players to fill up with nukeops, stopping the selection");
+ break;
+ }
+ nukeOp = _random.PickAndTake(everyone);
+ Logger.InfoS("preset", "Insufficient preferred nukeop commanders, agents or nukies, picking at random.");
+ }
+ else
+ {
+ nukeOp = _random.PickAndTake(prefList);
+ everyone.Remove(nukeOp);
+ Logger.InfoS("preset", "Insufficient preferred nukeop commander or agents, picking at random from regular op list.");
}
-
- nukeOp = _random.PickAndTake(everyone);
- Logger.InfoS("preset",
- "Insufficient preferred nukeop commanders or nukies, picking at random.");
}
else
{
- nukeOp = _random.PickAndTake(prefList);
+ nukeOp = _random.PickAndTake(medPrefList);
everyone.Remove(nukeOp);
- Logger.InfoS("preset",
- "Insufficient preferred nukeop commanders, picking at random from regular op list.");
+ prefList.Remove(nukeOp);
+ Logger.InfoS("preset", "Insufficient preferred nukeop commanders, picking an agent");
}
}
else
nukeOp = _random.PickAndTake(cmdrPrefList);
everyone.Remove(nukeOp);
prefList.Remove(nukeOp);
+ medPrefList.Remove(nukeOp);
Logger.InfoS("preset", "Selected a preferred nukeop commander.");
}
}
- else
+ else if (i == 1)
{
- if (prefList.Count == 0)
+ if (medPrefList.Count == 0)
{
- if (everyone.Count == 0)
+ if (prefList.Count == 0)
{
- Logger.InfoS("preset",
- "Insufficient ready players to fill up with nukeops, stopping the selection");
- break;
+ if (everyone.Count == 0)
+ {
+ Logger.InfoS("preset", "Insufficient ready players to fill up with nukeops, stopping the selection");
+ break;
+ }
+ nukeOp = _random.PickAndTake(everyone);
+ Logger.InfoS("preset", "Insufficient preferred nukeop commanders, agents or nukies, picking at random.");
+ }
+ else
+ {
+ nukeOp = _random.PickAndTake(prefList);
+ everyone.Remove(nukeOp);
+ Logger.InfoS("preset", "Insufficient preferred nukeop commander or agents, picking at random from regular op list.");
}
-
- nukeOp = _random.PickAndTake(everyone);
- Logger.InfoS("preset", "Insufficient preferred nukeops, picking at random.");
}
else
{
- nukeOp = _random.PickAndTake(prefList);
+ nukeOp = _random.PickAndTake(medPrefList);
everyone.Remove(nukeOp);
- Logger.InfoS("preset", "Selected a preferred nukeop.");
+ Logger.InfoS("preset", "Insufficient preferred nukeop commanders, picking an agent");
}
+
+ }
+ else
+ {
+ nukeOp = _random.PickAndTake(prefList);
+ everyone.Remove(nukeOp);
+ Logger.InfoS("preset", "Selected a preferred nukeop commander.");
}
operatives.Add(nukeOp);
break;
case 1:
name = Loc.GetString("nukeops-role-agent") + " " + _random.PickAndTake(component.OperativeNames[component.NormalNames]);
- role = component.OperativeRoleProto;
+ role = component.MedicRoleProto;
gear = component.MedicStartGearPrototype;
break;
default: