using EFT; using System.Collections.Generic; namespace SPT.Custom.CustomAI { public static class AiHelpers { /// /// Bot is a PMC when it has IsStreamerModeAvailable flagged and has a wildspawn type of 'pmcBEAR' or 'pmcUSEC' /// /// Bots role /// Bot details /// public static bool BotIsSptPmc(WildSpawnType botRoleToCheck, BotOwner ___botOwner_0) { if (___botOwner_0.Profile.Info.IsStreamerModeAvailable) { // PMCs can sometimes have their role changed to 'assaultGroup' by the client, we need an alternate way to figure out if they're a spt pmc return true; } return botRoleToCheck is WildSpawnType.pmcBEAR or WildSpawnType.pmcUSEC; } public static bool BotIsPlayerScav(WildSpawnType role, string nickname) { // Check bot is pscav by looking for the opening parentheses of their nickname e.g. scavname (pmc name) return role == WildSpawnType.assault && nickname.Contains("("); } public static bool BotIsSimulatedPlayerScav(WildSpawnType role, BotOwner botOwner) { // Assault and has "(" character in name = simulated p scav var nicknameContainsPScvCharacter = botOwner.Profile.Info.Nickname?.Contains("("); return nicknameContainsPScvCharacter.HasValue && nicknameContainsPScvCharacter.Value && role == WildSpawnType.assault; } public static List GetAllMembers(this BotsGroup group) { List members = new List(); if (group != null) { for (int m = 0; m < group.MembersCount; m++) { members.Add(group.Member(m)); } } return members; } /// /// Returns true if the player is found in the collection by searching for matching player Id's /// /// /// /// public static bool ContainsPlayer(this IEnumerable players, IPlayer playerToCheck) { if (playerToCheck == null) { return false; } foreach (IPlayer player in players) { if (player != null && player.Id == playerToCheck.Id) { return true; } } return false; } } }