private static void ApplyCEOLoyalty(GameEntity company, TeamInfo team, GameContext gameContext, ref Bonus <int> bonus, GameEntity worker, WorkerRole role) { bool hasCeo = HasMainManagerInTeam(company.team.Teams[0]); bonus.AppendAndHideIfZero("No CEO", hasCeo ? 0 : -4); var manager = GetMainManagerRole(team); var lead = GetWorkerByRole(manager, team, gameContext); if (lead == null) { bonus.Append($"No {Humans.GetFormattedRole(manager)} in team", -4); } else { var CEORating = Humans.GetRating(lead); var workerRating = Humans.GetRating(worker); if (CEORating < workerRating) { bonus.Append($"Incompetent leader (leader rating less than {workerRating})", -1); } } }
private static void ApplyDuplicateWorkersLoyalty(GameEntity company, TeamInfo team, GameContext gameContext, ref Bonus <int> bonus, GameEntity worker, WorkerRole role) { var roles = team.Managers.Select(h => h.WorkerComponent.WorkerRole); bool hasDuplicateWorkers = roles.Count(r => r == role) > 1; if (hasDuplicateWorkers) { bonus.AppendAndHideIfZero("Too many " + Humans.GetFormattedRole(role) + "'s", -10); } }