using SPTarkov.Server.Core.Models.Eft.Match; using SPTarkov.Server.Core.Models.Enums; namespace SPTarkov.Server.Core.Extensions; public static class EndRaidResultExtensions { private static readonly HashSet _deathStates = [ExitStatus.KILLED, ExitStatus.MISSINGINACTION, ExitStatus.LEFT]; /// /// Checks to see if player survives. run through will return false /// /// Post raid request /// True if survived public static bool IsPlayerSurvived(this EndRaidResult results) { return results.Result == ExitStatus.SURVIVED; } /// /// Is the player dead after a raid - dead = anything other than "survived" / "runner" /// /// Post raid request /// True if dead public static bool IsPlayerDead(this EndRaidResult results) { return _deathStates.Contains(results.Result.Value); } /// /// Has the player moved from one map to another /// /// Post raid request /// True if players transferred public static bool IsMapToMapTransfer(this EndRaidResult results) { return results.Result == ExitStatus.TRANSIT; } /// /// Was extract by car /// /// Result object from completed raid /// Car extract names /// True if extract was by car public static bool TookCarExtract(this EndRaidResult? requestResults, HashSet carExtracts) { // exit name is undefined on death if (string.IsNullOrEmpty(requestResults?.ExitName)) { return false; } if (requestResults.ExitName.ToLowerInvariant().Contains("v-ex")) { return true; } return carExtracts.Contains(requestResults.ExitName.Trim()); } /// /// Raid exit was via coop extract /// /// Result object from completed raid /// /// True when exit was coop extract public static bool TookCoopExtract(this EndRaidResult? raidResult, HashSet coopExtracts) { return raidResult?.ExitName is not null && coopExtracts.Contains(raidResult.ExitName.Trim()); } }