// TODO: Move Functionality to Sheriff-Class and only call from here public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] GameData.PlayerInfo target) { if (__instance == null || LocalPlayer == null || DeadPlayers.Count <= 0) { return; } if (!(LocalRole is Sheriff sheriff)) { return; } DeadPlayer deadPlayer = DeadPlayers.FirstOrDefault(x => target != null && x.Victim?.PlayerId == target.PlayerId); if (deadPlayer == null) { return; } if (__instance.PlayerId != sheriff.Owner.PlayerId) { return; } List <string> hints = deadPlayer.hintMessages.ToList(); var hintAmount = (int)(Main.OptionSheriffMaxHintAmount - (int)(deadPlayer.KillAge / 1000F / Main.OptionSheriffHintDecreaseInterval)); if (hintAmount < Main.OptionSheriffMinHintAmount) { hintAmount = (int)Main.OptionSheriffMinHintAmount; } for (var i = 0; i < hintAmount; i++) { string hint = hints[Rng.Next(hints.Count)]; hints.Remove(hint); if (string.IsNullOrWhiteSpace(hint)) { return; } if (AmongUsClient.Instance.AmClient) { HudManager.Instance?.Chat.AddChat(LocalPlayer, $"{deadPlayer.Victim.Data.PlayerName}: {hint}"); } if (hint.IndexOf("who", StringComparison.OrdinalIgnoreCase) >= 0) { Telemetry.Instance?.SendWho(); } } }
private decimal TotalSumOfDeathsGroupedPerPlayer(int id) { var totalDeaths = 0m; var playerKilled = DeadPlayers.FirstOrDefault(atWhere => atWhere.Id == id); if (playerKilled != null) { totalDeaths = playerKilled.TotalKills; } return(totalDeaths); }
private DeadPlayer FindPlayerDead(int id) { return(DeadPlayers.FirstOrDefault(atWhere => atWhere.Id == id)); }