<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SPTarkov.Server.Core</name>
    </assembly>
    <members>
        <member name="M:SPTarkov.Server.Core.Callbacks.AchievementCallbacks.GetAchievements(System.String,SPTarkov.Server.Core.Models.Eft.Profile.GetAchievementListRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/achievement/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.AchievementCallbacks.Statistic(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/achievement/statistic
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GetBotLimit(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/bot/limit
                Is called by client to define each bot roles wave limit
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GetBotDifficulty(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/bot/difficulty
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GetAllBotDifficulties(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/bot/difficulties
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GenerateBots(System.String,SPTarkov.Server.Core.Models.Eft.Bot.GenerateBotsRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/bot/generate
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GetBotCap(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/bot/maxCap
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BotCallbacks.GetBotBehaviours">
            <summary>
                Handle singleplayer/settings/bot/getBotBehaviours
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BtrDeliveryCallbacks.ProcessDeliveries">
            <summary>
            Process BTR delivery items of all profiles prior to being given back to the player through the mail service
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BtrDeliveryCallbacks.ProcessDeliveryByProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Process delivery items of a single profile prior to being given back to the player through the mail service
            </summary>
            <param name="sessionId">Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BtrDeliveryCallbacks.FilterDeliveryItems(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get all delivery items that are ready to be processed in a specific profile
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>All delivery items that are ready to be processed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BtrDeliveryCallbacks.ProcessDeliveryItems(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Profile.BtrDelivery},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            This method orchestrates the processing of delivery items in a profile
            </summary>
            <param name="packagesToBeDelivered">The delivery items to process</param>
            <param name="sessionId">session ID that should receive the processed items</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BuildsCallbacks.GetBuilds(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BuildsCallbacks.CreateMagazineTemplate(System.String,SPTarkov.Server.Core.Models.Eft.Builds.SetMagazineRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/magazine/save
            </summary>
            <param name="url"></param>
            <param name="request"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BuildsCallbacks.SetWeapon(System.String,SPTarkov.Server.Core.Models.Eft.PresetBuild.PresetBuildActionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/weapon/save
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BuildsCallbacks.SetEquipment(System.String,SPTarkov.Server.Core.Models.Eft.PresetBuild.PresetBuildActionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/equipment/save
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BuildsCallbacks.DeleteBuild(System.String,SPTarkov.Server.Core.Models.Eft.PresetBuild.RemoveBuildRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/delete
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BundleCallbacks.GetBundles(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/bundles
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.BundleCallbacks.GetBundle(System.String,System.Object,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
               Handle requests to /files/bundle <br/>
               <br/>
               Makes sure the output is set to BUNDLE so that the BundleSerializer's <see cref="M:SPTarkov.Server.Core.Routers.Serializers.BundleSerializer.CanHandle(System.String)"/> can handle it.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ClientLogCallbacks.ClientLog(System.String,SPTarkov.Server.Core.Models.Spt.Logging.ClientLogRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /singleplayer/log
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ClientLogCallbacks.ReleaseNotes">
            <summary>
                Handle /singleplayer/release
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ClientLogCallbacks.BsgLogging">
            <summary>
                Handle /singleplayer/enableBSGlogging
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.GetCustomisationUnlocks(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/customization/storage
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.GetTraderSuits(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/customization
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.BuyCustomisation(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Customization.BuyClothingRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle CustomizationBuy event
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.GetHideoutCustomisation(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/customization/offer/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.GetStorage(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/customization/storage
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.CustomizationCallbacks.SetCustomisation(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Customization.CustomizationSetRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle CustomizationSet
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetSettings(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/settings
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetGlobals(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/globals
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetTemplateItems(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/items
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetTemplateHandbook(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/handbook/templates
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetTemplateSuits(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/customization
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetTemplateCharacter(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/account/customization
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetHideoutSettings(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/settings
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetHideoutAreas(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/areas
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetHideoutProduction(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/production/recipes
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetLocalesLanguages(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/languages
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetLocalesMenu(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/menu/locale
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetLocalesGlobal(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/locale
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetQteList(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/qte/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetItemPrices(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/items/prices/
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DataCallbacks.GetDialogue(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetClientDialogueRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Handle /client/dialogue
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetFriendList(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetChatServerList(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetChatServerListRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/chatServer/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetMailDialogList(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetMailDialogListRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/list
                TODO: request properties are not handled
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetMailDialogView(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetMailDialogViewRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/view
            </summary>
            <param name="url"></param>
            <param name="request"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetMailDialogInfo(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetMailDialogInfoRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/info
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.RemoveDialog(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.RemoveDialogRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/remove
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.PinDialog(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.PinDialogRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/pin
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.UnpinDialog(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.PinDialogRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/unpin
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.SetRead(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.SetDialogReadRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/read
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.GetAllAttachments(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.GetAllAttachmentsRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/getAllAttachments
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.SendMessage(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.SendMessageRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/msg/send
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.ListOutbox(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/list/outbox
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.ListInbox(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/list/inbox
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.SendFriendRequest(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.FriendRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/send
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.AcceptAllFriendRequests(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/accept-all
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.AcceptFriendRequest(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.AcceptFriendRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/accept
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.DeclineFriendRequest(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.DeclineFriendRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/decline
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.CancelFriendRequest(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.CancelFriendRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/request/cancel
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.DeleteFriend(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.DeleteFriendRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/delete
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.IgnoreFriend(System.String,SPTarkov.Server.Core.Models.Eft.Common.Request.UIDRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/ignore/set
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.UnIgnoreFriend(System.String,SPTarkov.Server.Core.Models.Eft.Common.Request.UIDRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/ignore/remove
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.ClearMail(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.ClearMailMessageRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/mail/dialog/clear
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.CreateGroupMail(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.CreateGroupMailRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/mail/dialog/group/create
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.ChangeMailGroupOwner(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.ChangeGroupMailOwnerRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/mail/dialog/group/owner/change
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.AddUserToMail(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.AddUserGroupMailRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/mail/dialog/group/users/add
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.DialogueCallbacks.RemoveUserFromMail(System.String,SPTarkov.Server.Core.Models.Eft.Dialog.RemoveUserGroupMailRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/mail/dialog/group/users/remove
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.VersionValidate(System.String,SPTarkov.Server.Core.Models.Eft.Game.VersionValidateRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/version/validate
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GameStart(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/start
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GameLogout(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/logout
                Save profiles on game close
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetGameConfig(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/config
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.PutHwMetrics(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/putHWMetrics
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetGameMode(System.String,SPTarkov.Server.Core.Models.Eft.Game.GameModeRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/mode
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetServer(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/server/list
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetCurrentGroup(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/current
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.ValidateGameVersion(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/checkVersion
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GameKeepalive(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/keepalive
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetVersion(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/version
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.ReportNickname(System.String,SPTarkov.Server.Core.Models.Eft.Common.Request.UIDRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/report/send and handle /client/reports/lobby/send
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetRaidTime(System.String,SPTarkov.Server.Core.Models.Eft.Game.GetRaidTimeRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/settings/getRaidTime
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetSurvey(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/survey
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.GetSurveyView(System.String,SPTarkov.Server.Core.Models.Eft.Game.SendSurveyOpinionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/survey/view
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.SendSurveyOpinion(System.String,SPTarkov.Server.Core.Models.Eft.Game.SendSurveyOpinionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/survey/opinion
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.GameCallbacks.ReceiveClientMods(System.String,SPTarkov.Server.Core.Models.Eft.Game.SendClientModsRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/clientmods
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HealthCallbacks.OffraidEat(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.OffraidEatRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Eat
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HealthCallbacks.OffraidHeal(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.OffraidHealRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Heal
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HealthCallbacks.HealthTreatment(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.HealthTreatmentRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RestoreHealth
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.Upgrade(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutUpgradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutUpgrade event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.UpgradeComplete(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutUpgradeCompleteRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutUpgradeComplete event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.PutItemsInAreaSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutPutItemInRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutPutItemsInAreaSlots
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.TakeItemsFromAreaSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeItemOutRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutTakeItemsFromAreaSlots event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.ToggleArea(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutToggleAreaRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutToggleArea event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.SingleProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutSingleProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutSingleProductionStart event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.ScavCaseProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutScavCaseStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutScavCaseProductionStart event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.ContinuousProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutContinuousProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutContinuousProductionStart
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.TakeProduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeProductionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutTakeProduction event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.HandleQTEEvent(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HandleQTEEventRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutQuickTimeEvent
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.RecordShootingRangePoints(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.RecordShootingRangePoints,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle client/game/profile/items/moving - RecordShootingRangePoints
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.ImproveArea(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutImproveAreaRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - RecordShootingRangePoints
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.CancelProduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCancelProductionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - HideoutCancelProductionCommand
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.CicleOfCultistProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCircleOfCultistProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.HideoutDeleteProductionCommand(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutDeleteProductionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - HideoutDeleteProductionCommand
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.HideoutCustomizationApplyCommand(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCustomizationApplyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - HideoutCustomizationApply
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.HideoutCallbacks.HideoutCustomizationSetMannequinPose(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCustomizationSetMannequinPoseRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving - hideoutCustomizationSetMannequinPose
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InraidCallbacks.RegisterPlayer(System.String,SPTarkov.Server.Core.Models.Eft.InRaid.RegisterPlayerRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/location/getLocalloot
                Store active map in profile + applicationContext
            </summary>
            <param name="url"></param>
            <param name="info">register player request</param>
            <param name="sessionID">Session id</param>
            <returns>Null http response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InraidCallbacks.SaveProgress(System.String,SPTarkov.Server.Core.Models.Eft.InRaid.ScavSaveRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle raid/profile/scavsave
            </summary>
            <param name="url"></param>
            <param name="info">Save progress request</param>
            <param name="sessionID">Session id</param>
            <returns>Null http response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InraidCallbacks.GetRaidMenuSettings">
            <summary>
                Handle singleplayer/settings/raid/menu
            </summary>
            <returns>JSON as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InraidCallbacks.GetTraitorScavHostileChance(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/scav/traitorscavhostile
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InraidCallbacks.GetBossTypes(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/bosstypes
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InsuranceCallbacks.GetInsuranceCost(System.String,SPTarkov.Server.Core.Models.Eft.Insurance.GetInsuranceCostRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/insurance/items/list/cost
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InsuranceCallbacks.Insure(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Insurance.InsureRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Insure event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.MoveItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMoveRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle client/game/profile/items/moving Move event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.RemoveItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryRemoveRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle Remove event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.SplitItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySplitRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle Split event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.MergeItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMergeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.TransferItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryTransferRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.SwapItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySwapRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Swap
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.FoldItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryFoldRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.ToggleItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryToggleRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.TagItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryTagRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.BindItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryBindRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.UnBindItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryBindRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.ExamineItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryExamineRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.ReadEncyclopedia(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryReadEncyclopediaRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle ReadEncyclopedia
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.SortInventory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySortRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle ApplyInventoryChanges
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.CreateMapMarker(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryCreateMarkerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.DeleteMapMarker(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryDeleteMarkerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.EditMapMarker(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryEditMarkerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.OpenRandomLootContainer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.OpenRandomLootContainerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle OpenRandomLootContainer
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.RedeemProfileReward(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.RedeemProfileRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.SetFavoriteItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.SetFavoriteItems,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle game/profile/items/moving SetFavoriteItems
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.FailQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.FailQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                TODO: MOVE INTO QUEST CODE
                Handle game/profile/items/moving - QuestFail
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.InventoryCallbacks.PinOrLock(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.PinOrLockItemRequest,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ItemEventCallbacks.IsCriticalError(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.ItemEvent.Warning})">
            <summary>
                Return true if the passed in list of warnings contains critical issues
            </summary>
            <param name="warnings">The list of warnings to check for critical errors</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.LocationCallbacks.GetLocationData(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/locations
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.LocationCallbacks.GetAirdropLoot(System.String,SPTarkov.Server.Core.Models.Eft.Location.GetAirdropLootRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/airdrop/loot
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.UpdatePing(System.String,SPTarkov.Server.Core.Models.Eft.Match.UpdatePingRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/updatePing
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.ExitMatch(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/exit
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.ExitFromMenu(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/exit_from_menu
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.GroupCurrent(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/current
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.StartGroupSearch(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/looking/start
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.StopGroupSearch(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/looking/stop
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.SendGroupInvite(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupInviteSendRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/invite/send
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.AcceptGroupInvite(System.String,SPTarkov.Server.Core.Models.Eft.Match.RequestIdRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/invite/accept
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.DeclineGroupInvite(System.String,SPTarkov.Server.Core.Models.Eft.Match.RequestIdRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/invite/decline
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.CancelGroupInvite(System.String,SPTarkov.Server.Core.Models.Eft.Match.RequestIdRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/invite/cancel
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.TransferGroup(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupTransferRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/transfer
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.CancelAllGroupInvite(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/invite/cancel-all
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.PutMetrics(System.String,SPTarkov.Server.Core.Models.Eft.Match.PutMetricsRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/putMetrics
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.EventDisconnect(System.String,SPTarkov.Server.Core.Models.Eft.Match.PutMetricsRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/analytics/event-disconnect
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.ServerAvailable(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/available
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.JoinMatch(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupJoinRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle match/group/start_game
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.GetMetrics(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/getMetricsConfig
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.GetGroupStatus(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupStatusRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Called periodically while in a group
                Handle client/match/group/status
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.DeleteGroup(System.String,SPTarkov.Server.Core.Services.InRaid.MatchLocationService.DeleteGroupRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/delete
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.LeaveGroup(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/leave
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.RemovePlayerFromGroup(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupPlayerRemoveRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/player/remove
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.StartLocalRaidAsync(System.String,SPTarkov.Server.Core.Models.Eft.Match.StartLocalRaidRequestData,SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/start
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.EndLocalRaidAsync(System.String,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData,SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/end
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.GetRaidConfiguration(System.String,SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/raid/configuration
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.GetConfigurationByProfile(System.String,SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/raid/configuration-by-profile
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.RaidReady(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/raid/ready
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.NotRaidReady(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/raid/not-ready
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.MatchCallbacks.StartGameAsGroupLeader(System.String,SPTarkov.Server.Core.Models.Eft.Match.MatchGroupStartGameRequest,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Handle client/match/group/start_game
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ModLoaderCallbacks.GetCustomEnumEntries(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /singleplayer/customEnumEntries
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ModLoaderCallbacks.GetCustomizationTraders(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /singleplayer/moddedTraders
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NoteCallbacks.AddNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle AddNote event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Add note request</param>
            <param name="sessionID">Session/player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NoteCallbacks.EditNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle EditNote event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Edit note request</param>
            <param name="sessionID">Session/player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NoteCallbacks.DeleteNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle DeleteNote event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Delete note request</param>
            <param name="sessionID">Session/player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NotifierCallbacks.SendNotification(SPTarkov.Server.Core.Models.Common.MongoId,Microsoft.AspNetCore.Http.HttpRequest,Microsoft.AspNetCore.Http.HttpResponse,System.Object)">
            <summary>
                If we don't have anything to send, it's ok to not send anything back
                because notification requests can be long-polling. In fact, we SHOULD wait
                until we actually have something to send because otherwise we'd spam the client
                and the client would abort the connection due to spam.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NotifierCallbacks.GetNotifier(System.String,SPTarkov.Server.Core.Models.Utils.IRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                TODO: removed from client?
                Handle push/notifier/get
                Handle push/notifier/getwebsocket
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NotifierCallbacks.CreateNotifierChannel(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/notifier/channel/create
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NotifierCallbacks.SelectProfile(System.String,SPTarkov.Server.Core.Models.Eft.Common.Request.UIDRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/select
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.NotifierCallbacks.Notify(System.String,System.Object,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.PrestigeCallbacks.GetPrestige(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/prestige/list
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.PrestigeCallbacks.ObtainPrestige(System.String,SPTarkov.Server.Core.Models.Eft.Prestige.ObtainPrestigeRequestList,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/prestige/obtain
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.CreateProfile(System.String,SPTarkov.Server.Core.Models.Eft.Profile.ProfileCreateRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/create
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetProfileData(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/list
                Get the complete player profile (scav + pmc character)
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.RegenerateScav(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/savage/regenerate
                Handle the creation of a scav profile for player
                Occurs post-raid and when profile first created immediately after character details are confirmed by player
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.ChangeVoice(System.String,SPTarkov.Server.Core.Models.Eft.Profile.ProfileChangeVoiceRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/voice/change event
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.ChangeNickname(System.String,SPTarkov.Server.Core.Models.Eft.Profile.ProfileChangeNicknameRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/nickname/change event
                Client allows player to adjust their profile name
            </summary>
            <returns>Client response as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.ValidateNickname(System.String,SPTarkov.Server.Core.Models.Eft.Profile.ValidateNicknameRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/nickname/validate
            </summary>
            <returns>Client response as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetReservedNickname(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/nickname/reserved
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetProfileStatus(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/profile/status
                Called when creating a character when choosing a character face/voice
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetOtherProfile(System.String,SPTarkov.Server.Core.Models.Eft.Profile.GetOtherProfileRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/profile/view
                Called when viewing another players profile
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetProfileSettings(System.String,SPTarkov.Server.Core.Models.Eft.Profile.GetProfileSettingsRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/profile/settings
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.SearchProfiles(System.String,SPTarkov.Server.Core.Models.Eft.Profile.SearchProfilesRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/search
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetMiniProfile(System.String,SPTarkov.Server.Core.Models.Eft.Launcher.GetMiniProfileRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle launcher/profile/info
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.ProfileCallbacks.GetAllMiniProfiles(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /launcher/profiles
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.ChangeRepeatableQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.RepeatableQuestChangeRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RepeatableQuestChange event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.AcceptQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.AcceptQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestAccept event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.CompleteQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.CompleteQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestComplete event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.HandoverQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.HandoverQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestHandover event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.ListQuests(System.String,SPTarkov.Server.Core.Models.Eft.Quests.ListQuestsRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/quest/list
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.QuestCallbacks.ActivityPeriods(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/repeatalbeQuests/activityPeriods
                <para>
                Yes the typo is intended, BSG has it in the live client as well and it has to match
                </para>
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.Search(System.String,SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/ragfair/search
                Handle client/ragfair/find
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.GetMarketPrice(System.String,SPTarkov.Server.Core.Models.Eft.Ragfair.GetMarketPriceRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/ragfair/itemMarketPrice
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.AddOffer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RagFairAddOffer event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.RemoveOffer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.RemoveOfferRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RagFairRemoveOffer event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.ExtendOffer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.ExtendOfferRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RagFairRenewOffer event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.GetFleaPrices(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/items/prices
                Called when clicking an item to list on flea
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.SendReport(System.String,SPTarkov.Server.Core.Models.Eft.Ragfair.SendRagfairReportRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/reports/ragfair/send
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RagfairCallbacks.GetFleaOfferById(System.String,SPTarkov.Server.Core.Models.Eft.Ragfair.GetRagfairOfferByIdRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/ragfair/offer/findbyid
            </summary>
            <param name="url"></param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RepairCallbacks.TraderRepair(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Repair.TraderRepairActionDataRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle TraderRepair event
                use trader to repair item
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.RepairCallbacks.Repair(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Repair.RepairActionDataRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Repair event
                Use repair kit to repair item
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TradeCallbacks.ProcessTrade(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessBaseTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/items/moving TradingConfirm event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TradeCallbacks.ProcessRagfairTrade(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessRagfairTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RagFairBuyOffer event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TradeCallbacks.SellAllFromSavage(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.SellScavItemsToFenceRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle SellAllFromSavage event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TraderCallbacks.GetTraderSettings(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/api/traderSettings
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TraderCallbacks.GetTrader(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/api/getTrader
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.TraderCallbacks.GetAssort(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/api/getTraderAssort
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.WeatherCallbacks.GetWeather(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/weather
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.WeatherCallbacks.GetLocalWeather(System.String,SPTarkov.Server.Core.Models.Eft.Common.EmptyRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/localGame/weather
            </summary>
            <param name="url"></param>
            <param name="_"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.WishlistCallbacks.AddToWishlist(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.AddToWishlistRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle AddToWishList event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.WishlistCallbacks.RemoveFromWishlist(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.RemoveFromWishlistRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RemoveFromWishList event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Callbacks.WishlistCallbacks.ChangeWishlistItemCategory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.ChangeWishlistItemCategoryRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle ChangeWishlistItemCategory
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="info"></param>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.AchievementController.GetAchievements(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get base achievements
            </summary>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.AchievementController.GetAchievementStatics(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Shows % of 'other' players who've completed each achievement
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>CompletedAchievementsResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetBotPresetGenerationLimit(System.String)">
            <summary>
                Return the number of bot load-out varieties to be generated
            </summary>
            <param name="type">bot Type we want the load-out gen count for</param>
            <returns>number of bots to generate</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetBotCoreDifficulty">
            <summary>
                Handle singleplayer/settings/bot/difficulty
                Get the core.json difficulty settings from database/bots
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetBotDifficulty(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String,System.Boolean)">
            <summary>
                Get bot difficulty settings
                Adjust PMC settings to ensure they engage the correct bot types
            </summary>
            <param name="sessionId">Which user is requesting his bot settings</param>
            <param name="type">what bot the server is requesting settings for</param>
            <param name="diffLevel">difficulty level server requested settings for</param>
            <param name="ignoreRaidSettings">OPTIONAL - should raid settings chosen pre-raid be ignored</param>
            <returns>Difficulty object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetAllBotDifficulties">
            <summary>
                Handle singleplayer/settings/bot/difficulties
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.Generate(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Bot.GenerateBotsRequestData)">
            <summary>
                Generate bots for a wave
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
            <returns>List of bots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GenerateBotWaves(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Bot.GenerateBotsRequestData,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Generate bots for passed in wave data
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Client bot generation request</param>
            <param name="pmcProfile">Player profile generating bots</param>
            <returns>List of generated bots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GenerateBotWave(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Bot.GenerateCondition,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Generate bots for a single wave request
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="generateRequest"></param>
            <param name="botGenerationDetails"></param>
            <returns>Result of generating bot wave</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.TryGenerateSingleBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,System.Int32)">
            <summary>
            Try to generate and cache a single bot
            </summary>
            <returns>BotBase object or null.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetMostRecentRaidSettings(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Pull raid settings from Application context
            </summary>
            <returns>GetRaidConfigurationRequestData if it exists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetPmcLevelRangeForMap(System.String)">
            <summary>
                Get min/max level range values for a specific map
            </summary>
            <param name="location">Map name e.g. factory4_day</param>
            <returns>MinMax values</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetBotGenerationDetailsForWave(SPTarkov.Server.Core.Models.Eft.Bot.GenerateCondition,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean,SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData)">
            <summary>
                Create a BotGenerationDetails for the bot generator to use
            </summary>
            <param name="condition">Data from client defining bot type and difficulty</param>
            <param name="pmcProfile">Player who is generating bots</param>
            <param name="allPmcsHaveSameNameAsPlayer">Should all PMCs have same name as player</param>
            <param name="raidSettings">Settings chosen pre-raid by player in client</param>
            <returns>BotGenerationDetails</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetBotCap(System.String)">
            <summary>
                Get the max number of bots allowed on a map
                Looks up location player is entering when getting cap value
            </summary>
            <param name="location">The map location cap was requested for</param>
            <returns>bot cap for map</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BotController.GetAiBotBrainTypes">
            <summary>
                Get weights for what each bot type should use as a brain - used by client
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.GetUserBuilds(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/handbook/builds/my/list
            </summary>
            <param name="sessionID">Session/player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.SaveWeaponBuild(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.PresetBuild.PresetBuildActionRequestData)">
            <summary>
                Handle client/builds/weapon/save
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.SaveEquipmentBuild(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.PresetBuild.PresetBuildActionRequestData)">
            <summary>
                Handle client/builds/equipment/save event
            </summary>
            <param name="sessionID">Session/player id</param>
            <param name="request"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.RemoveBuild(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.PresetBuild.RemoveBuildRequestData)">
            <summary>
                Handle client/builds/delete
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.CreateMagazineTemplate(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Builds.SetMagazineRequest)">
            <summary>
                Handle client/builds/magazine/save
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.BuildController.RemovePlayerBuild(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/builds/delete
                Remove build from players profile
            </summary>
            <param name="idToRemove"></param>
            <param name="sessionID">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ClientLogController.ClientLog(SPTarkov.Server.Core.Models.Spt.Logging.ClientLogRequest)">
            <summary>
                Handle /singleplayer/log
            </summary>
            <param name="logRequest"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.GetTraderSuits(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get purchasable clothing items from trader that match players side (usec/bear)
            </summary>
            <param name="traderId">trader to look up clothing for</param>
            <param name="sessionId">Session id</param>
            <returns>Suit array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.BuyCustomisation(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Customization.BuyClothingRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle CustomizationBuy event
                Purchase/unlock a clothing item from a trader
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="buyClothingRequest">Request object</param>
            <param name="sessionId">Session id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.OutfitAlreadyPurchased(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Has an outfit been purchased by a player
            </summary>
            <param name="suitId">clothing id</param>
            <param name="sessionId">Session id of profile to check for clothing in</param>
            <returns>true if already purchased</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.GetTraderClothingOffer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get clothing offer from trader by suit id
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="offerId"></param>
            <returns>Suit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.PayForClothingItems(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Customization.PaymentItemForClothing},SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Update output object and player profile with purchase details
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="itemsToPayForClothingWith">Clothing purchased</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.GetAllTraderSuits(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all suits from Traders
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.GetHideoutCustomisation">
            <summary>
                Handle client/hideout/customization/offer/list
            </summary>
            <returns>Hideout customizations</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.GetCustomisationStorage(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/customization/storage
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.SetCustomisation(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Customization.CustomizationSetRequest,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Handle CustomizationSet event
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
            <param name="pmcData">Players PMC profile</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.CustomizationController.ApplyClothingItemToProfile(SPTarkov.Server.Core.Models.Eft.Customization.CustomizationSetOption,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Applies a purchased suit to the players doll
            </summary>
            <param name="customisation">Suit to apply to profile</param>
            <param name="pmcData">Profile to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.RegisterChatBot(SPTarkov.Server.Core.Helpers.Dialogue.IDialogueChatBot)">
            <summary>
            </summary>
            <param name="chatBot"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.Update">
            <summary>
                Handle onUpdate spt event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetFriendList(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/friend/list
            </summary>
            <param name="sessionId">session id</param>
            <returns>GetFriendListDataResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetActiveChatBots">
            <summary>
                Get all active chatbots
            </summary>
            <returns>Active chatbots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GenerateDialogueList(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/list
                Create array holding trader dialogs and mail interactions with player
                Set the content of the dialogue on the list tab.
            </summary>
            <param name="sessionId">Session Id</param>
            <returns>list of dialogs</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetDialogueInfo(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the content of a dialogue
            </summary>
            <param name="dialogueId">Dialog id</param>
            <param name="sessionId">Session Id</param>
            <returns>DialogueInfo</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetDialogueInfo(SPTarkov.Server.Core.Models.Eft.Profile.Dialogue,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the content of a dialogue
            </summary>
            <param name="dialogue">Dialog</param>
            <param name="sessionId">Session Id</param>
            <returns>DialogueInfo</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetDialogueUsers(SPTarkov.Server.Core.Models.Eft.Profile.Dialogue,System.Nullable{SPTarkov.Server.Core.Models.Enums.MessageType},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the users involved in a dialog (player + other party)
            </summary>
            <param name="dialog">The dialog to check for users</param>
            <param name="messageType">What type of message is being sent</param>
            <param name="sessionId">Player id</param>
            <returns>UserDialogInfo list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GenerateDialogueView(SPTarkov.Server.Core.Models.Eft.Dialog.GetMailDialogViewRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/view
                Handle player clicking 'messenger' and seeing all the messages they've received
                Set the content of the dialogue on the details panel, showing all the messages
                for the specified dialogue.
            </summary>
            <param name="request">Get dialog request</param>
            <param name="sessionId">Session id</param>
            <returns>GetMailDialogViewResponseData object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetDialogByIdFromProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.Dialog.GetMailDialogViewRequestData)">
            <summary>
                Get dialog from player profile, create if doesn't exist
            </summary>
            <param name="profile">Player profile</param>
            <param name="request">get dialog request</param>
            <returns>Dialogue</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetProfilesForMail(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo})">
            <summary>
                Get the users involved in a mail between two entities
            </summary>
            <param name="fullProfile">Player profile</param>
            <param name="userDialogs">The participants of the mail</param>
            <returns>UserDialogInfo list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetUnreadMessagesWithAttachmentsCount(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a count of messages with attachments from a particular dialog
            </summary>
            <param name="sessionId">Session id</param>
            <param name="dialogueId">Dialog id</param>
            <returns>Count of messages with attachments</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetActiveMessagesFromDialog(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get messages from a specific dialog that have items not expired
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="dialogueId">Dialog to get mail attachments from</param>
            <returns>Message array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.MessagesHaveUncollectedRewards(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Profile.Message})">
            <summary>
                Does list have messages with uncollected rewards (includes expired rewards)
            </summary>
            <param name="messages">Messages to check</param>
            <returns>true if uncollected rewards found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetLimitedMessages(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Profile.Message},System.Nullable{System.Int32},System.Nullable{System.Decimal})">
            <summary>
            Gets a subset of messages from before a certain time
            </summary>
            <param name="allMessages">The superset of messages</param>
            <param name="limit">The maximum number of messages to return, null/0 means all</param>
            <param name="time">Limit to messages before this Unix time (seconds since epoch), null/0 means all</param>
            <returns>List of matching messages</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.RemoveDialogue(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/remove
                Remove an entire dialog with an entity (trader/user)
            </summary>
            <param name="dialogueId">id of the dialog to remove</param>
            <param name="sessionId">Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.SetDialoguePin(SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/pin and handle client/mail/dialog/unpin
            </summary>
            <param name="dialogueId"></param>
            <param name="shouldPin"></param>
            <param name="sessionId">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.SetRead(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/read
                Set a dialog to be read (no number alert/attachment alert)
            </summary>
            <param name="dialogueIds">Dialog ids to set as read</param>
            <param name="sessionId">Player profile id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetAllAttachments(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/mail/dialog/getAllAttachments
                Get all uncollected items attached to mail in a particular dialog
            </summary>
            <param name="dialogueId">Dialog to get mail attachments from</param>
            <param name="sessionId">Session id</param>
            <returns>GetAllAttachmentsResponse or null if dialogue doesn't exist</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.SendMessage(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Dialog.SendMessageRequest)">
            <summary>
                handle client/mail/msg/send
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.GetMessageWithAttachments(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Profile.Message})">
            <summary>
                Return list of messages with uncollected items (includes expired)
            </summary>
            <param name="messages">Messages to parse</param>
            <returns>messages with items to collect</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.ProcessExpiredInsurance(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Delete expired items from all messages in player profile + send expired messages. triggers when updating traders.
            </summary>
            <param name="sessionId">Session id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.SendExpiredInsuranceMessages(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Send expired insurance messages and remove expired items from messages
            </summary>
            <param name="sessionId">Session id</param>
            <param name="dialogueId">Trader dialog id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.RemoveStaleExpiredInsuranceNotifications(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.Dialogue,System.Collections.Generic.List{System.String})">
            <summary>
                Remove empty expired insurance notifications from a dialog, keeping only the newest.
            </summary>
            <param name="sessionId">Session id</param>
            <param name="dialog">Trader dialog to clean up</param>
            <param name="insuranceExpiredMessageIds">Trader expired insurance message template ids</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.MessageHasExpired(SPTarkov.Server.Core.Models.Eft.Profile.Message)">
            <summary>
                Has a dialog message expired
            </summary>
            <param name="message">Message to check expiry of</param>
            <returns>True = expired</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.SendFriendRequest(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Dialog.FriendRequestData)">
            <summary>
                Handle client/friend/request/send
            </summary>
            <param name="sessionID">Session/player id</param>
            <param name="request">Sent friend request</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.DeleteFriend(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Dialog.DeleteFriendRequest)">
            <summary>
                Handle client/friend/delete
            </summary>
            <param name="sessionID">Session/player id</param>
            <param name="request">Sent delete friend request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.DialogueController.ClearMessages(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Dialog.ClearMailMessageRequest)">
            <summary>
            Clear messages from a specified dialogue
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Client request to clear messages</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GameStart(System.String,SPTarkov.Server.Core.Models.Common.MongoId,System.Int64)">
            <summary>
                Handle client/game/start
            </summary>
            <param name="url"></param>
            <param name="sessionId">Session/Player id</param>
            <param name="startTimeStampMs"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetGameConfig(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/config
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>GameConfigResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetGameMode(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Game.GameModeRequestData)">
            <summary>
                Handle client/game/mode
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="requestData"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetServer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/server/list
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetCurrentGroup(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/match/group/current
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetValidGameVersion(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/checkVersion
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetKeepAlive(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/keepalive
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetRaidTime(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Game.GetRaidTimeRequest)">
            <summary>
                Handle singleplayer/settings/getRaidTime
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.GetSurvey(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.WarnOnActiveBotReloadSkill(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Players set botReload to a high value and don't expect the crazy fast reload speeds, give them a warn about it
            </summary>
            <param name="pmcProfile">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.UpdateProfileHealthValues(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                When player logs in, iterate over all active effects and reduce timer
            </summary>
            <param name="pmcProfile">Profile to adjust values for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.DecreaseBodyPartEffectTimes(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Double,System.Double)">
            <summary>
                Check for and update any timers on effect found on body parts
            </summary>
            <param name="pmcProfile">Player</param>
            <param name="hpRegenPerHour"></param>
            <param name="diffSeconds"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.SendPraporGiftsToNewProfiles(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Send starting gifts to profile after x days
            </summary>
            <param name="pmcProfile">Profile to add gifts to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.SendMechanicGiftsToNewProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Mechanic sends players a measuring tape on profile start for some reason
            </summary>
            <param name="pmcProfile"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.SaveActiveModsToProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Get a list of installed mods and save their details to the profile being used
            </summary>
            <param name="fullProfile">Profile to add mod details to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.AddPlayerToPmcNames(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Add the logged in players name to PMC name pool
            </summary>
            <param name="pmcProfile">Profile of player to get name from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.GameController.LogProfileDetails(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
            </summary>
            <param name="fullProfile"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HealthController.OffRaidHeal(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.OffraidHealRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                When healing in menu
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Healing request</param>
            <param name="sessionID">Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HealthController.OffRaidEat(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.OffraidEatRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Eat event
                Consume food/water outside a raid
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Eat request</param>
            <param name="sessionID">Session id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HealthController.ApplyEdibleEffect(SPTarkov.Server.Core.Models.Eft.Common.Tables.CurrentMinMax,SPTarkov.Server.Core.Models.Eft.Common.Tables.EffectsHealthProperties,System.Boolean,SPTarkov.Server.Core.Models.Eft.Health.OffraidEatRequestData)">
            <summary>
                Apply effects to profile from consumable used
            </summary>
            <param name="bodyValue">Hydration/Energy</param>
            <param name="consumptionDetails">Properties of consumed item</param>
            <param name="foodIsSingleUse">Single use item</param>
            <param name="request">Client request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HealthController.HealthTreatment(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Health.HealthTreatmentRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RestoreHealth event
                Occurs on post-raid healing page
            </summary>
            <param name="pmcData">player profile</param>
            <param name="healthTreatmentRequest">Request data from client</param>
            <param name="sessionID">Session id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.StartUpgrade(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutUpgradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutUpgrade event
                Start a hideout area upgrade
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Start upgrade request</param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.UpgradeComplete(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutUpgradeCompleteRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutUpgradeComplete event
                Complete a hideout area upgrade
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Completed upgrade request</param>
            <param name="sessionID">Session/player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.SetWallVisibleIfPrereqsMet(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Upgrade wall status to visible in profile if medstation/water collector are both level 1
            </summary>
            <param name="pmcData">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.AddContainerImprovementToProfile(SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea,SPTarkov.Server.Core.Models.Eft.Hideout.Stage)">
            <summary>
                Add a stash upgrade to profile
            </summary>
            <param name="output">Client response</param>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="profileParentHideoutArea"></param>
            <param name="dbHideoutArea">Area of hideout player is upgrading</param>
            <param name="hideoutStage">Stage player is upgrading to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.AddUpdateInventoryItemToProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea,SPTarkov.Server.Core.Models.Eft.Hideout.Stage)">
            <summary>
                Add an inventory item to profile from a hideout area stage data
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="dbHideoutArea">Hideout area from db being upgraded</param>
            <param name="hideoutStage">Stage area upgraded to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.AddContainerUpgradeToClientOutput(SPTarkov.Server.Core.Models.Common.MongoId,System.String,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea,SPTarkov.Server.Core.Models.Eft.Hideout.Stage,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Include container upgrade in client response
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="changedHideoutStashesKey">Key of hideout area that's been upgraded</param>
            <param name="hideoutDbData"></param>
            <param name="hideoutStage"></param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.PutItemsInAreaSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutPutItemInRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Handle HideoutPutItemsInAreaSlots
            Take item from player inventory and place it inside hideout area slot
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="addItemToHideoutRequest">request from client to place item in area slot</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.TakeItemsFromAreaSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeItemOutRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutTakeItemsFromAreaSlots event
                Remove item from hideout area and place into player inventory
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Take item out of area request</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.RemoveResourceFromArea(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeItemOutRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea)">
            <summary>
                Find resource item in hideout area, add copy to player inventory, remove Item from hideout slot
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="removeResourceRequest">client request</param>
            <param name="output">Client response</param>
            <param name="hideoutArea">Area fuel is being removed from</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.ToggleArea(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutToggleAreaRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutToggleArea event
                Toggle area on/off
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Toggle area request</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.SingleProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutSingleProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutSingleProductionStart event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.ScavCaseProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutScavCaseStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutScavCaseProductionStart event
                Handles event after clicking 'start' on the scav case hideout page
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.GetScavCaseTime(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Nullable{System.Double})">
            <summary>
                Adjust scav case time based on fence standing
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="productionTime">Time to complete scav case in seconds</param>
            <returns>Adjusted scav case time in seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.ContinuousProductionStart(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutContinuousProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Start production of continuously created item
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Continuous production request</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.TakeProduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeProductionRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle HideoutTakeProduction event
                Take completed item out of hideout area and place into player inventory
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Remove production from area request</param>
            <param name="sessionID">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HandleRecipe(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeProductionRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Take recipe-type production out of hideout area and place into player inventory
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="recipe">Completed recipe of item</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Remove production from area request</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.UnstackRewardIntoValidSize(SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction,System.Collections.Generic.List{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}},System.Boolean)">
            <summary>
                Ensure non-stackable rewards are 'unstacked' into something valid for a players stash
            </summary>
            <param name="recipe">Recipe with reward</param>
            <param name="itemAndChildrenToSendToPlayer">Reward items to unstack</param>
            <param name="rewardIsPreset">Reward is a preset</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HandlePresetReward(SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction)">
            <summary>
            </summary>
            <param name="recipe"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.GetCustomSptHoursCraftingTaskConditionCounter(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction)">
            <summary>
                Create our own craft counter
                Get the "CounterHoursCrafting" TaskConditionCounter from a profile
            </summary>
            <param name="pmcData">Profile to get counter from</param>
            <param name="recipe">Recipe being crafted</param>
            <returns>TaskConditionCounter</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HandleScavCase(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeProductionRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handles generating scav case rewards and sending to player inventory
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Get rewards from scavcase craft request</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HandleQTEEventOutcome(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HandleQTEEventRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle HideoutQuickTimeEvent on client/game/profile/items/moving
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">QTE result object</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HandleMusclePain(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.QteResult)">
            <summary>
                Apply mild/severe muscle pain after gym use
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="finishEffect">Effect data to apply after completing QTE gym event</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.ApplyWorkoutSkillGain(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Hideout.QteEffect},System.Double,SPTarkov.Server.Core.Utils.QteRandomUtil)">
            <summary>
                Apply skill xp for a single successful workout rep to a randomly chosen candidate skill.
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="skillRewards">Skill reward effects from the QTE single-success effect</param>
            <param name="gymEffectivity">Muscle pain reduction to gym effectiveness (0 = no pain)</param>
            <param name="rng">Deterministic QTE RNG, replayed in step with the client</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.GetMusclePainGymEffectivity(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the gym effectiveness reduction caused by the players existing muscle pain.
                Mirrors client severe/mild GymEffectivity lookup
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <returns>Effectivity reduction (0 = no muscle pain)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.TryBreakArm(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Utils.QteRandomUtil,System.Int32)">
            <summary>
                Roll for a broken arm after a failed workout rep and apply a fracture if it occurs
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="rng">Deterministic QTE RNG, replayed in step with the client</param>
            <param name="coef">Client QTEResult.ActionsFailed - the running total of failed reps so far</param>
            <returns>True if an arm was fractured</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HasSevereMusclePain(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Does the player have a severe muscle pain effect on their chest
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <returns>True if severe muscle pain is present</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.RecordShootingRangePoints(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.RecordShootingRangePoints)">
            <summary>
                Record a high score from the shooting range into a player profiles `overallcounters`
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">shooting range score request></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.ImproveArea(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutImproveAreaRequestData)">
            <summary>
                Handle client/game/profile/items/moving - HideoutImproveArea
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Improve area request</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.CancelProduction(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCancelProductionRequestData)">
            <summary>
                Handle client/game/profile/items/moving HideoutCancelProductionCommand
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Cancel production request data</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HideoutDeleteProductionCommand(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutDeleteProductionRequestData)">
            <summary>
                Handle HideoutDeleteProductionCommand event
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Delete production request</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HideoutCustomizationApply(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCustomizationApplyRequestData)">
            <summary>
                Handle HideoutCustomizationApply event
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Apply hideout customisation request</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.GetHideoutCustomisationType(System.String)">
            <summary>
                Map an internal customisation type to a client hideout customisation type
            </summary>
            <param name="type"></param>
            <returns>hideout customisation type</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.AddMissingPresetStandItemsToProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Hideout.Stage,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="equipmentPresetStage">Current EQUIPMENT_PRESETS_STAND stage data</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="equipmentPresetHideoutArea"></param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.HideoutCustomizationSetMannequinPose(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCustomizationSetMannequinPoseRequest)">
            <summary>
                Handle HideoutCustomizationSetMannequinPose event
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="request">Client request</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.GetQteList(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/hideout/qte/list
                Get quick time event list for hideout
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.HideoutController.Update">
            <summary>
                Called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event
            Updates hideout craft times
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InRaidController.AddPlayer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.InRaid.RegisterPlayerRequestData)">
            <summary>
                Save locationId to active profiles in-raid object AND app context
            </summary>
            <param name="sessionId">Session id</param>
            <param name="info">Register player request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InRaidController.SavePostRaidProfileForScav(SPTarkov.Server.Core.Models.Eft.InRaid.ScavSaveRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle raid/profile/scavsave
                Save profile state to disk
                Handles pmc/pscav
            </summary>
            <param name="offRaidProfileData"></param>
            <param name="sessionId">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InRaidController.GetInRaidConfig">
            <summary>
                Get the inraid config from configs/inraid.json
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InRaidController.GetTraitorScavHostileChance(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle singleplayer/scav/traitorscavhostile
                Get a % chance a scav will be hostile to the player when they're also a scav
            </summary>
            <param name="url"></param>
            <param name="sessionId">Session/Player id</param>
            <returns>% chance scav is hostile to player</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InRaidController.GetBossTypes(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all boss role types e.g. bossTagilla
            </summary>
            <param name="url"></param>
            <param name="sessionId">Session/Player id</param>
            <returns>string array of boss types</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessReturn">
            <summary>
                Process insurance items of all profiles prior to being given back to the player through the mail service
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessReturnByProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Process insurance items of a single profile prior to being given back to the player through the mail service
            </summary>
            <param name="sessionId">Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.FilterInsuredItems(SPTarkov.Server.Core.Models.Common.MongoId,System.Nullable{System.Int64})">
            <summary>
                Get all insured items that are ready to be processed in a specific profile
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="time">The time to check ready status against. Current time by default</param>
            <returns>All insured items that are ready to be processed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessInsuredItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Profile.Insurance},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                This method orchestrates the processing of insured items in a profile
            </summary>
            <param name="insuranceDetails">The insured items to process</param>
            <param name="sessionId">session ID that should receive the processed items</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.CountAllInsuranceItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Profile.Insurance})">
            <summary>
                Count all items in all insurance packages
            </summary>
            <param name="insuranceDetails"></param>
            <returns>Count of insured items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.RemoveInsurancePackageFromProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.Insurance)">
            <summary>
                Remove an insurance package from a profile using the package's system data information.
            </summary>
            <param name="sessionId">The session ID of the profile to remove the package from.</param>
            <param name="insPackage">The array index of the insurance package to remove.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.FindItemsToDelete(System.String,SPTarkov.Server.Core.Models.Eft.Profile.Insurance)">
            <summary>
                Finds the items that should be deleted based on the given Insurance object
            </summary>
            <param name="rootItemParentId">The ID that should be assigned to all "hideout"/root items</param>
            <param name="insured">The insurance object containing the items to evaluate for deletion</param>
            <returns>A Set containing the IDs of items that should be deleted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.PopulateParentAttachmentsMap(System.String,SPTarkov.Server.Core.Models.Eft.Profile.Insurance,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Initialize a dictionary that holds main-parents to all of their attachments. Note that "main-parent" in this
                context refers to the parent item that an attachment is attached to. For example, a suppressor attached to a gun,
                not the backpack that the gun is located in (the gun's parent).
            </summary>
            <param name="rootItemParentID">The ID that should be assigned to all "hideout"/root items</param>
            <param name="insured">The insurance object containing the items to evaluate</param>
            <param name="itemsMap">A Dictionary for quick item look-up by item ID</param>
            <returns>A dictionary containing parent item IDs to arrays of their attachment items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.RemoveNonModdableAttachments(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Remove attachments that can not be moddable in-raid from the parentAttachmentsMap. If no moddable attachments
                remain, the parent is removed from the map as well
            </summary>
            <param name="parentAttachmentsMap">Dictionary containing parent item IDs to arrays of their attachment items</param>
            <param name="itemsMap">Hashset containing parent item IDs to arrays of their attachment items which are not moddable in-raid</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessRegularItems(SPTarkov.Server.Core.Models.Eft.Profile.Insurance,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Process "regular" insurance items. Any insured item that is not an attached, attachment is considered a "regular"
                item. This method iterates over them, preforming item deletion rolls to see if they should be deleted. If so,
                they (and their attached, attachments, if any) are marked for deletion in the toDelete Dictionary
            </summary>
            <param name="insured">Insurance object containing the items to evaluate</param>
            <param name="toDelete">Hashset to keep track of items marked for deletion</param>
            <param name="parentAttachmentsMap">Dictionary containing parent item IDs to arrays of their attachment items</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessAttachments(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Process parent items and their attachments, updating the toDelete Set accordingly
            </summary>
            <param name="mainParentToAttachmentsMap">Dictionary containing parent item IDs to arrays of their attachment items</param>
            <param name="itemsMap">Dictionary for quick item look-up by item ID</param>
            <param name="insuredTraderId">Trader ID from the Insurance object</param>
            <param name="toDelete">Tracked attachment ids to be removed</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.ProcessAttachmentByParent(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by
                their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the
                number of deletions has been counted, the attachments are added to the toDelete Set, starting with the most
                valuable attachments first
            </summary>
            <param name="attachments">Array of attachment items to sort, filter, and roll</param>
            <param name="traderId">ID of the trader to that has ensured these items</param>
            <param name="toDelete">array that accumulates the IDs of the items to be deleted</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.LogAttachmentsBeingRemoved(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
                Write out attachments being removed
            </summary>
            <param name="attachmentIdsToRemove"></param>
            <param name="attachments"></param>
            <param name="attachmentPrices"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.WeightAttachmentsByPrice(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Get dictionary of items with their corresponding price
            </summary>
            <param name="attachments">Item attachments</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.GetAttachmentCountToRemove(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get count of items to remove from weapon (take into account trader + price of attachment)
            </summary>
            <param name="weightedAttachmentByPrice">Dict of item Tpls and their rouble price</param>
            <param name="traderId">Trader the attachment is insured against</param>
            <returns>Attachment count to remove</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.RemoveItemsFromInsurance(SPTarkov.Server.Core.Models.Eft.Profile.Insurance,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Remove items from the insured items that should not be returned to the player
            </summary>
            <param name="insured">The insured items to process</param>
            <param name="toDelete">The items that should be deleted</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.SendMail(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.Insurance)">
            <summary>
                Handle sending the insurance message to the user that potentially contains the valid insurance items
            </summary>
            <param name="sessionId">Profile that should receive the insurance message</param>
            <param name="insurance">context of insurance to use</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.IsMapLabsAndInsuranceDisabled(SPTarkov.Server.Core.Models.Eft.Profile.Insurance,System.String)">
            <summary>
                Edge case - labs doesn't allow for insurance returns unless location config is edited
            </summary>
            <param name="insurance">The insured items to process</param>
            <param name="labsId">OPTIONAL - id of labs location</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.IsMapLabyrinthAndInsuranceDisabled(SPTarkov.Server.Core.Models.Eft.Profile.Insurance,System.String)">
            <summary>
                Edge case - labyrinth doesn't allow for insurance returns unless location config is edited
            </summary>
            <param name="insurance">The insured items to process</param>
            <param name="labyrinthId">OPTIONAL - id of labyrinth location</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.HandleLabsInsurance(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{System.String}},SPTarkov.Server.Core.Models.Eft.Profile.Insurance)">
            <summary>
                Update IInsurance object with new messageTemplateId and wipe out items array data
            </summary>
            <param name="traderDialogMessages"></param>
            <param name="insurance"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.HandleLabyrinthInsurance(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{System.String}},SPTarkov.Server.Core.Models.Eft.Profile.Insurance)">
            <summary>
                Update IInsurance object with new messageTemplateId and wipe out items array data
            </summary>
            <param name="traderDialogMessages"></param>
            <param name="insurance"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.RollForDelete(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Roll for chance of item being 'lost'
            </summary>
            <param name="traderId">Trader item was insured with</param>
            <param name="insuredItem">Item being rolled on</param>
            <returns>Should item be deleted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.Insure(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Insurance.InsureRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle Insure event, Add insurance to an item
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Insurance request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse object to send to client</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.InsureSoftInserts(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Insurance.InsureRequestData)">
            <summary>
                Ensure soft inserts of Armor that has soft insert slots, Allows armors to come back after being lost correctly
            </summary>
            <param name="itemWithSoftInserts">Armor item to be insured</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Insurance request data</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InsuranceController.Cost(SPTarkov.Server.Core.Models.Eft.Insurance.GetInsuranceCostRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/insurance/items/list/cost
                Calculate insurance cost
            </summary>
            <param name="request">request object</param>
            <param name="sessionId">Session/Player id</param>
            <returns>Dictionary keyed by trader with every item price from each trader</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.MoveItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMoveRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Move Item - change location of item with parentId and slotId, transfers items from one profile to another if fromOwner/toOwner is set in the body.
                Otherwise, move is contained within the same profile_f
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="moveRequest">Move request data</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.AppendTraderExploitErrorResponse(SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Get an event router response with inventory trader message
            </summary>
            <param name="output">Item event router response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.PinOrLock(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.PinOrLockItemRequest,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle /client/game/profile/items/moving - PinLock
                Requires no response to client, only server change
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Pin/Lock request data</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.SetDialogueProgress(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.SaveDialogueStateRequest,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle /client/game/profile/items/moving SaveDialogueState
            </summary>
            <param name="pmcData">Player's PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <param name="output"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.SetFavoriteItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.SetFavoriteItems,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/game/profile/items/moving SetFavoriteItems
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.RedeemProfileReward(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.RedeemProfileRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/game/profile/items/moving RedeemProfileReward
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.FlagItemsAsInspectedAndRewardXp(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Flag an item as seen in profiles encyclopedia + add inspect xp to profile
            </summary>
            <param name="itemTpls">Inspected item tpls</param>
            <param name="fullProfile">Profile to add xp to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.OpenRandomLootContainer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.OpenRandomLootContainerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle OpenRandomLootContainer event
                Handle event fired when a container is unpacked (e.g. halloween pumpkin)
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.EditMapMarker(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryEditMarkerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Edit an existing map marker
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Edit marker request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.DeleteMapMarker(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryDeleteMarkerRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Delete a map marker
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Delete marker request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.SortInventory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySortRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Add note to a map
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Add marker request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.ReadEncyclopedia(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryReadEncyclopediaRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Flag item as 'seen' by player in profile
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.ExamineItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryExamineRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle examining an item
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Examine item request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.GetExaminedItemTpl(SPTarkov.Server.Core.Models.Eft.Inventory.InventoryExamineRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the tpl of an item from the examine request object
            </summary>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns>Item tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.UnBindItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryBindRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Unbind an inventory item from quick access menu at bottom of player screen
                Handle unbind event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.BindItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryBindRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle bind event
                Bind an inventory item to the quick access menu at bottom of player screen
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="bindRequest"></param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.TagItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryTagRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add a tag to an inventory item
            </summary>
            <param name="pmcData">Profile with item to add tag to</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.ToggleItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryToggleRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Toggles "Toggleable" items like night vision goggles and face shields.
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Toggle request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.FoldItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryFoldRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handles folding of Weapons
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Fold item request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.SwapItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySwapRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Swap Item
                used for "reload" if you have weapon in hands and magazine is somewhere else in rig or backpack in equipment
                Also used to swap items using quick selection on character screen
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Swap item request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.TransferItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryTransferRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                TODO: Adds no data to output to send to client, is this by design?
                Transfer items from one stack into another while keeping original stack
                Used to take items from scav inventory into stash or to insert ammo into mags (shotgun ones) and reloading weapon by clicking "Reload"
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Transfer item request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.MergeItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMergeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Fully merge 2 inventory stacks together into one stack (merging where both stacks remain is called 'transfer')
                Deletes item from `body.item` and adding number of stacks into `body.with`
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Merge stacks request</param>
            <param name="sessionID">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.SplitItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventorySplitRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Split Item stack - 1 stack into 2
            </summary>
            <param name="pmcData">(unused, getOwnerInventoryItems() gets profile)</param>
            <param name="request">Split stack request</param>
            <param name="sessionID">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.InventoryController.DiscardItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryRemoveRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Implements "Discard" functionality from Main menu (Stash etc.)
                Removes item from PMC Profile
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Discard item request</param>
            <param name="sessionId">Session/Player id</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.Ping">
            <summary>
                Returns a simple string of Pong!
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.Types">
            <summary>
                Returns all available profile types and descriptions for creation.
                - This is also localised.
            </summary>
            <returns>dict of profile names + description</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.Login(SPTarkov.Server.Core.Models.Eft.Launcher.LoginRequestData)">
            <summary>
                Checks if login details were correct.
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.Register(SPTarkov.Server.Core.Models.Eft.Launcher.RegisterData)">
            <summary>
                Register a new profile.
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.Remove(SPTarkov.Server.Core.Models.Eft.Launcher.LoginRequestData)">
            <summary>
                Remove profile from server.
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.SptVersion">
            <summary>
                Gets the Servers SPT Version.
                - "4.0.0"
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.EftVersion">
            <summary>
                Gets the compatible EFT Version.
                - "0.14.9.31124"
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.LoadedMods">
            <summary>
                Gets the Servers loaded mods.
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.ModPages">
            <summary>
                Gets a list of mod-registered SIC pages.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LauncherV2Controller.CreateAccount(SPTarkov.Server.Core.Models.Eft.Launcher.RegisterData)">
            <summary>
                Creates the account from provided details.
            </summary>
            <param name="info"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LocationController.GenerateAll(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/locations
                Get all maps base location properties without loot data
            </summary>
            <param name="sessionId">Players Id</param>
            <returns>LocationsGenerateAllResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.LocationController.GetAirDropLoot(SPTarkov.Server.Core.Models.Eft.Location.GetAirdropLootRequest)">
            <summary>
                Handle client/airdrop/loot
            </summary>
            <param name="request"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.GetEnabled">
            <summary>
                Handle client/match/available
            </summary>
            <returns>True if server should be available</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.DeleteGroup(SPTarkov.Server.Core.Services.InRaid.MatchLocationService.DeleteGroupRequest)">
            <summary>
                Handle client/match/group/delete
            </summary>
            <param name="request">Delete group request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.JoinMatch(SPTarkov.Server.Core.Models.Eft.Match.MatchGroupJoinRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle match/group/start_game
            </summary>
            <param name="request">Start game request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ProfileStatusResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.GetGroupStatus(SPTarkov.Server.Core.Models.Eft.Match.MatchGroupStatusRequest)">
            <summary>
                Handle client/match/group/status
            </summary>
            <param name="request">Group status request</param>
            <returns>MatchGroupStatusResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.ConfigureOfflineRaid(SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/raid/configuration
            </summary>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.ConvertDifficultyDropdownIntoBotDifficulty(System.String)">
            <summary>
                Convert a difficulty value from pre-raid screen to a bot difficulty
            </summary>
            <param name="botDifficulty">dropdown difficulty value</param>
            <returns>Bot difficulty</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.StartLocalRaidAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Match.StartLocalRaidRequestData,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/start
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Start raid request</param>
            <returns>StartLocalRaidResponseData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.MatchController.EndLocalRaidAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/end
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Emd local raid request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NoteController.AddNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Add note request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NoteController.EditNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Edit note request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NoteController.DeleteNote(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Notes.NoteActionRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Delete note request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NotifierController.NotifyAsync(SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
                Resolve an array of session notifications.
                If no notifications are currently queued then intermittently check for new notifications until either
                one or more appear or when a timeout expires.
                If no notifications are available after the timeout, use a default message.
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the notification operation.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NotifierController.GetChannel(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/notifier/channel/create
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>NotifierChannel</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.NotifierController.GetServer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the notifier server url
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>Notification server url</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.PresetController.Initialize">
            <summary>
                Keyed by item tpl, value = collection of preset ids
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.PrestigeController.GetPrestige(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle /client/prestige/list
                Get a collection of all possible prestiges
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>Prestige</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.PrestigeController.ObtainPrestige(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Prestige.ObtainPrestigeRequestList)">
            <summary>
                <para>Handle /client/prestige/obtain</para>
                Going to Prestige 1 grants the below
                <list type="bullet">
                    <item>5% of skills should be transferred over</item>
                    <item>5% of mastering should be transferred over</item>
                    <item>Earned achievements should be transferred over</item>
                    <item>Profile stats should be transferred over</item>
                    <item>Prestige progress should be transferred over</item>
                    <item>Items and rewards for Prestige 1</item>
                </list>
                Going to Prestige 2 grants the below
                <list type="bullet">
                    <item>10% of skills should be transfered over</item>
                    <item>10% of mastering should be transfered over</item>
                    <item>Earned achievements should be transfered over</item>
                    <item>Profile stats should be transfered over</item>
                    <item>Prestige progress should be transfered over</item>
                    <item>Items and rewards for Prestige 2</item>
                </list>
                Each time resetting the below
                <list type="bullet">
                    <item>Trader standing</item>
                    <item>Task progress</item>
                    <item>Character level</item>
                    <item>Stash</item>
                    <item>Hideout progress</item>
                </list>
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GetMiniProfiles">
            <summary>
                Handle /launcher/profiles
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GetMiniProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle launcher/profile/info
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GetCompleteProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/list
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>Return a full profile, scav and pmc profiles + meta data</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.CreateProfile(SPTarkov.Server.Core.Models.Eft.Profile.ProfileCreateRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/create
            </summary>
            <param name="request">Create profile request</param>
            <param name="sessionId">Player id</param>
            <returns>Player id</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GeneratePlayerScav(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Generate a player scav object
                PMC profile MUST exist first before player-scav can be generated
            </summary>
            <param name="sessionId">Player id</param>
            <returns>PmcData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.ValidateNickname(SPTarkov.Server.Core.Models.Eft.Profile.ValidateNicknameRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/nickname/validate
            </summary>
            <param name="request">Validate nickname request</param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.ChangeNickname(SPTarkov.Server.Core.Models.Eft.Profile.ProfileChangeNicknameRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/nickname/change event
                Client allows player to adjust their profile name
            </summary>
            <param name="request">Change nickname request</param>
            <param name="sessionId">Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.ChangeVoice(SPTarkov.Server.Core.Models.Eft.Profile.ProfileChangeVoiceRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/voice/change event
            </summary>
            <param name="request">Change voice request</param>
            <param name="sessionID">Player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.SearchProfiles(SPTarkov.Server.Core.Models.Eft.Profile.SearchProfilesRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/game/profile/search
            </summary>
            <param name="request">Search profiles request</param>
            <param name="sessionID">Player id</param>
            <returns>Found profiles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GetProfileStatus(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/profile/status
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.GetOtherProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.GetOtherProfileRequest)">
            <summary>
                Handle client/profile/view
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Get other profile request</param>
            <returns>GetOtherProfileResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.ProfileController.SetChosenProfileIcon(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.GetProfileSettingsRequest)">
            <summary>
                Handle client/profile/settings
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="request">Get profile settings request</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.GetClientQuests(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/quest/list
                Get all quests visible to player
                Exclude quests with incomplete preconditions (level/loyalty)
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>Collection of Quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.AcceptQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.AcceptQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestAccept event
                Handle the client accepting a quest and starting it
                Send starting rewards if any to player and
                Send start notification if any to player
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="acceptedQuest">Quest accepted</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.AddTaskConditionCountersToProfile(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition},SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add a quest condition counters to chosen profile
                Currently only used to add `SellItemToTrader` conditions
            </summary>
            <param name="questConditionsToAdd">Conditions to iterate over and possibly add to profile</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="questId">Quest where conditions originated</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.CompleteQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.CompleteQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestComplete event
                Update completed quest in profile
                Add newly unlocked quests to profile
                Also recalculate their level due to exp rewards
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Complete quest request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.HandoverQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.HandoverQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle QuestHandover event
                Player hands over an item to trader to complete/partially complete quest
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Handover request</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.ShowRepeatableQuestInvalidConditionError(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Show warning to user and write to log that repeatable quest failed a condition check
            </summary>
            <param name="questId">Quest id that failed</param>
            <param name="conditionId">Relevant condition id that failed</param>
            <param name="output">Client response</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.ShowQuestItemHandoverMatchError(SPTarkov.Server.Core.Models.Eft.Quests.HandoverQuestRequestData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Show warning to user and write to log quest item handed over did not match what is required
            </summary>
            <param name="handoverQuestRequest">Handover request</param>
            <param name="itemHandedOver">Non-matching item found</param>
            <param name="handoverRequirements">Quest handover requirements</param>
            <param name="output">Response to send to user</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.UpdateProfileTaskConditionCounterValue(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                Increment a backend counter stored value by an amount
                Create counter if it does not exist
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="conditionId">Backend counter id to update</param>
            <param name="questId">Quest id counter is associated with</param>
            <param name="counterValue">Value to increment the backend counter with</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.QuestController.FailQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.FailQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle /client/game/profile/items/moving - QuestFail
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request">Fail quest request</param>
            <param name="sessionID">Session/Player id</param>
            <param name="output"></param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.Update">
            <summary>
                Check all profiles and sell player offers / send player money for listing if it sold
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetOffers(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData)">
            <summary>
                Handles client/ragfair/find
                Returns an object containing an array of flea offers to show to player
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="searchRequest">Search request data from client</param>
            <returns>Flea offers that match required search parameters</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.PaginateOffers(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,SPTarkov.Server.Core.Models.Eft.Ragfair.GetOffersResult)">
            <summary>
            Paginate offers based on search request properties
            </summary>
            <param name="searchRequest">Client request</param>
            <param name="result">Object to return to client</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.SetTraderOfferStackSize(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Adjust ragfair offer stack count to match same value as traders assort stack count
            </summary>
            <param name="offer">Flea offer to adjust stack size of</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.SetTraderOfferPurchaseLimits(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Update a trader flea offer with buy restrictions stored in the traders assort
            </summary>
            <param name="offer">Flea offer to update</param>
            <param name="fullProfile">Players full profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.AddIndexValueToOffers(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer})">
            <summary>
                Add index to all offers passed in (0-indexed)
            </summary>
            <param name="offers">Offers to add index value to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetSpecificCategories(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer})">
            <summary>
                Get categories for the type of search being performed, linked/required/all
            </summary>
            <param name="pmcProfile"></param>
            <param name="searchRequest">Client search request data</param>
            <param name="offers">Ragfair offers to get categories for</param>
            <returns>Record with templates + counts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.IsLinkedSearch(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData)">
            <summary>
                Is the flea search being performed a 'linked' search type
            </summary>
            <param name="searchRequest">Search request</param>
            <returns>True = a 'linked' search type</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.IsRequiredSearch(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData)">
            <summary>
                Is the flea search being performed a 'required' search type
            </summary>
            <param name="searchRequest">Search request</param>
            <returns>True if it is a 'required' search type</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetOffersForSearchType(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get offers for the client based on type of search being performed
            </summary>
            <param name="searchRequest">Client search request data</param>
            <param name="itemsToAdd">Comes from ragfairHelper.filterCategories()</param>
            <param name="traderAssorts">Trader assorts</param>
            <param name="pmcProfile"></param>
            <returns>Array of offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetItemMinAvgMaxFleaPriceValues(SPTarkov.Server.Core.Models.Eft.Ragfair.GetMarketPriceRequestData,System.Boolean)">
            <summary>
                Called when creating an offer on flea, fills values in top right corner
            </summary>
            <param name="getPriceRequest">Client request object</param>
            <param name="ignoreTraderOffers">OPTIONAL - Should trader offers be ignored in the calculation</param>
            <returns>min/avg/max values for an item based on flea offers available</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.AddPlayerOffer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                List item(s) on flea for sale
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="offerRequest">Flea list creation offer</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.IsValidPlayerOfferRequest(SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData)">
            <summary>
                Is the item to be listed on the flea valid
            </summary>
            <param name="offerRequest">Client offer request</param>
            <returns>Is offer valid</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetOfferType(SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData)">
            <summary>
                Given a client request, determine what type of offer is being created single/multi/pack
            </summary>
            <param name="offerRequest">Client request</param>
            <returns>FleaOfferType</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CreateMultiOffer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Create a flea offer for multiples of the same item, can be single items or items with multiple in the stack
                e.g. 2 ammo stacks of 30 cartridges each
                Each item can be purchased individually
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="offerRequest">Offer request from client</param>
            <param name="fullProfile">Full profile of player</param>
            <param name="output">output Response to send to client</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CreatePackOffer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Create a flea offer for multiple items, can be single items or items with multiple in the stack
                e.g. 2 ammo stacks of 30 cartridges each
                The entire package must be purchased in one go
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="offerRequest">Offer request from client</param>
            <param name="fullProfile">Full profile of player</param>
            <param name="output">Response to send to client</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CreateSingleOffer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Create a flea offer for a single item - includes an item with > 1 sized stack
                e.g. 1 ammo stack of 30 cartridges
            </summary>
            <param name="sessionID">Session/Player id</param>
            <param name="offerRequest">Offer request from client</param>
            <param name="fullProfile">Full profile of player</param>
            <param name="output">Response to send to client</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.ChargePlayerTaxFee(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Double,System.Int32,SPTarkov.Server.Core.Models.Eft.Ragfair.AddOfferRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Charge player a listing fee for using flea, pulls charge from data previously sent by client
            </summary>
            <param name="sessionId"></param>
            <param name="rootItem">Base item being listed (used when client tax cost not found and must be done on server)</param>
            <param name="pmcData"></param>
            <param name="requirementsPriceInRub">Rouble cost player chose for listing (used when client tax cost not found and must be done on server)</param>
            <param name="itemStackCount">How many items were listed by player (used when client tax cost not found and must be done on server)</param>
            <param name="offerRequest">Add offer request object from client</param>
            <param name="output">ItemEventRouterResponse</param>
            <returns>True if charging tax to player failed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CreatePlayerOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Ragfair.Requirement},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean)">
            <summary>
                Create a flea offer for a player
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="requirements"></param>
            <param name="items">Item(s) to list on flea (with children)</param>
            <param name="sellInOnePiece">Is this a pack offer</param>
            <returns>RagfairOffer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CalculateRequirementsPriceInRub(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Ragfair.Requirement})">
            <summary>
                Get the handbook price in roubles for the items being listed
            </summary>
            <param name="requirements"></param>
            <returns>Rouble price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetItemsToListOnFleaFromInventory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Find items with their children from players inventory
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="itemIdsFromFleaOfferRequest">Request</param>
            <returns>GetItemsToListOnFleaFromInventoryResult</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.FlagOfferForRemoval(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Flag an offer as being ready for removal - sets expiry for very near future
                Will be picked up by update() once expiry time has passed
            </summary>
            <param name="offerId">Id of offer to remove</param>
            <param name="sessionId">Session id of requesting player</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.ExtendOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.ExtendOfferRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Extend a flea offers active time
            </summary>
            <param name="extendRequest">Extend time request</param>
            <param name="sessionId">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.CreateBuyTradeRequestObject(SPTarkov.Server.Core.Models.Enums.CurrencyType,System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Create a basic trader request object with price and currency type
            </summary>
            <param name="currency">What currency: RUB, EURO, USD</param>
            <param name="value">Amount of currency</param>
            <param name="pmcId">Players id</param>
            <returns>ProcessBuyTradeRequestData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RagfairController.GetAllFleaPrices">
            <summary>
                Get prices for all items on flea
            </summary>
            <returns>Dictionary of tpl and item price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepairController.TraderRepair(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Repair.TraderRepairActionDataRequest,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Handle TraderRepair event
                Repair with trader
            </summary>
            <param name="sessionID">session id</param>
            <param name="request">endpoint request data</param>
            <param name="pmcData">player profile</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepairController.RepairWithKit(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Repair.RepairActionDataRequest,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Handle Repair event
                Repair with repair kit
            </summary>
            <param name="sessionId">session id</param>
            <param name="body">endpoint request data</param>
            <param name="pmcData">player profile</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.AcceptRepeatableQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.AcceptQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle the client accepting a repeatable quest and starting it
                Send starting rewards if any to player and
                Send start notification if any to player
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="acceptedQuest">Repeatable quest accepted</param>
            <param name="sessionID">Session/Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.ChangeRepeatableQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.RepeatableQuestChangeRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RepeatableQuestChange event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="changeRequest">Change quest request</param>
            <param name="sessionID">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GetRepeatableQuestFromProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Look for an accepted quest inside player profile, return quest that matches
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="questId">Quest id to return</param>
            <returns>RepeatableQuest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.UseFreeRefreshIfAvailable(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.Common.Tables.PmcDataRepeatableQuest,System.String)">
            <summary>
                Some accounts have access to free repeatable quest refreshes
                Track the usage of them inside players profile
            </summary>
            <param name="fullProfile">Full player profile</param>
            <param name="repeatableSubType">Can be daily / weekly / scav repeatable</param>
            <param name="repeatableTypeName">Subtype of repeatable quest: daily / weekly / scav</param>
            <returns>Is the repeatable being replaced for free</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.CleanUpRepeatableChangeRequirements(SPTarkov.Server.Core.Models.Eft.Common.Tables.PmcDataRepeatableQuest,System.String)">
            <summary>
                Clean up the repeatables `changeRequirement` dictionary of expired data
            </summary>
            <param name="repeatablesOfTypeInProfile">repeatables that have the replaced and new quest</param>
            <param name="replacedQuestId">Id of the replaced quest</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.AttemptToGenerateRepeatableQuest(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Generate a repeatable quest
            </summary>
            <param name="sessionId">Session/Player id</param>
            <param name="pmcData">Players PMC profile</param>
            <param name="questTypePool">What type/level range of quests can be generated for player</param>
            <param name="repeatableConfig">Config for the quest type to generate</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.PickAndGenerateRandomRepeatableQuest(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderInfo},SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                This method is called by /GetClientRepeatableQuests/ and creates one element of quest type format (see
                assets/database/templates/repeatableQuests.json).
                It randomly draws a quest type (currently Elimination, Completion or Exploration) as well as a trader who is
                providing the quest
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcLevel">Player's level for requested items and reward generation</param>
            <param name="pmcTraderInfo">Players trader standing/rep levels</param>
            <param name="questTypePool">Possible quest types pool</param>
            <param name="repeatableConfig">Repeatable quest config</param>
            <returns>RepeatableQuest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.DrawRandomTraderId(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderInfo},System.String,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Draws a random trader to assign a repeatable task to
            </summary>
            <param name="traderInfos">Trader info</param>
            <param name="questType">Type of quest</param>
            <param name="repeatableConfig">Repeatable config</param>
            <returns>Randomly selected traderId</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.RemoveQuestFromProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Remove the provided quest from pmc and scav character profiles
            </summary>
            <param name="fullProfile">Profile to remove quest from</param>
            <param name="questToReplaceId">Quest id to remove from profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GetRepeatableById(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Find a repeatable (daily/weekly/scav) from a players profile by its id
            </summary>
            <param name="questId">Id of quest to find</param>
            <param name="pmcData">Profile that contains quests to look through</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GetClientRepeatableQuests(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/repeatableQuests/activityPeriods
                Returns an array of objects in the format of repeatable quests to the client.
                repeatableQuestObject = {
                *id: Unique Id,
                name: "Daily",
                endTime: the time when the quests expire
                activeQuests: currently available quests in an array. Each element of quest type format(see assets/ database / templates / repeatableQuests.json).
                inactiveQuests: the quests which were previously active(required by client to fail them if they are not completed)
                }
                The method checks if the player level requirement for repeatable quests(e.g.daily lvl5, weekly lvl15) is met and if the previously active quests
                are still valid.This ischecked by endTime persisted in profile accordning to the resetTime configured for each repeatable kind(daily, weekly)
                in QuestCondig.js
                If the condition is met, new repeatableQuests are created, old quests(which are persisted in the profile.RepeatableQuests[i].activeQuests) are
                moved to profile.RepeatableQuests[i].inactiveQuests.This memory is required to get rid of old repeatable quest data in the profile, otherwise
                they'll litter the profile's Quests field.
                (if the are on "Succeed" but not "Completed" we keep them, to allow the player to complete them and get the rewards)
                The new quests generated are again persisted in profile.RepeatableQuests
            </summary>
            <param name="sessionID">Session/Player id</param>
            <returns>Array of repeatable quests</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.TryGenerateRandomRepeatable(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Try to generate a repeatable task at random
            </summary>
            <param name="sessionId">sessionId to generate for</param>
            <param name="pmcData">Pmc profile to add the quest to</param>
            <param name="questTypePool">Pool of quests to pick from</param>
            <param name="repeatableConfig">Repeatable quest config</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GetRepeatableQuestSubTypeFromProfile(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get repeatable quest data from profile from name (daily/weekly), creates base repeatable quest object if none exists
            </summary>
            <param name="repeatableConfig">daily/weekly config</param>
            <param name="pmcData">Players PMC profile</param>
            <returns>PmcDataRepeatableQuest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.CanProfileAccessRepeatableQuests(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if a repeatable quest type (daily/weekly) is active for the given profile
            </summary>
            <param name="repeatableConfig">Repeatable quest config</param>
            <param name="pmcData">Players PMC profile</param>
            <returns>True if profile has access to repeatables</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.PlayerHasDailyPmcQuestsUnlocked(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Does player have daily pmc quests unlocked
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="repeatableConfig">Config of daily type to check</param>
            <returns>True if unlocked</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.PlayerHasDailyScavQuestsUnlocked(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Does player have daily scav quests unlocked
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <returns>True if unlocked</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.ProcessExpiredQuests(SPTarkov.Server.Core.Models.Eft.Common.Tables.PmcDataRepeatableQuest,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests
            </summary>
            <param name="generatedRepeatables">Repeatables to process (daily/weekly)</param>
            <param name="pmcData">Players PMC profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GenerateQuestPool(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,System.Int32)">
            <summary>
                Used to create a quest pool during each cycle of repeatable quest generation. The pool will be subsequently
                narrowed down during quest generation to avoid duplicate quests. Like duplicate extractions or elimination quests
                where you have to e.g. kill scavs in same locations
            </summary>
            <param name="repeatableConfig">main repeatable quest config</param>
            <param name="pmcLevel">Players level</param>
            <returns>Allowed quest pool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.CreateEmptyQuestPool(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Create a pool of quests to generate quests from
            </summary>
            <param name="repeatableConfig">Main repeatable config</param>
            <returns>QuestTypePool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.RepeatableQuestController.GetQuestCount(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Get count of repeatable quests profile should have access to
            </summary>
            <param name="repeatableConfig"></param>
            <param name="fullProfile">Full player profile</param>
            <returns>Quest count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.ConfirmTrading(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessBaseTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle TradingConfirm event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionID">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.ConfirmRagfairTrading(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessRagfairTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RagFairBuyOffer event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionID">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.BuyTraderItemFromRagfair(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Trade.OfferRequest,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Buy an item off the flea sold by a trader
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="fleaOffer">Offer being purchased</param>
            <param name="requestOffer">request data from client</param>
            <param name="output">Output to send back to client</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.BuyPmcItemFromRagfair(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Trade.OfferRequest,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Buy an item off the flea sold by a PMC
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="fleaOffer">Offer being purchased</param>
            <param name="requestOffer">request data from client</param>
            <param name="output">Output to send back to client</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.SellScavItemsToFence(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.SellScavItemsToFenceRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle SellAllFromSavage event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.MailMoneyToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Send the specified rouble total to player as mail
            </summary>
            <param name="sessionId">Session id</param>
            <param name="roublesToSend">amount of roubles to send</param>
            <param name="trader">Trader to sell items to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TradeController.GetPriceOfItemAndChildren(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Nullable{System.Int32}},SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderBase)">
            <summary>
                Looks up an items children and gets total handbook price for them
            </summary>
            <param name="parentItemId">parent item that has children we want to sum price of</param>
            <param name="items">All items (parent + children)</param>
            <param name="handbookPrices">Prices of items from handbook</param>
            <param name="traderDetails">Trader being sold to, to perform buy category check against</param>
            <returns>Rouble price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TraderController.Load">
            <summary>
                Runs when onLoad event is fired
                Iterate over traders, ensure a pristine copy of their assorts is stored in traderAssortService
                Store timestamp of next assort refresh in nextResupply property of traders .base object
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TraderController.AdjustTraderItemPrices(SPTarkov.Server.Core.Models.Eft.Common.Tables.Trader,System.Double)">
            <summary>
                Adjust trader item prices based on config value multiplier
                only applies to items sold for currency
            </summary>
            <param name="trader">Trader to adjust prices of</param>
            <param name="multiplier">Coef to apply to traders' items' prices</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TraderController.Update">
            <summary>
                Runs when onUpdate is fired
                If current time is > nextResupply(expire) time of trader, refresh traders assorts and
                Fence is handled slightly differently
            </summary>
            <returns>True if ran successfully</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.TraderController.GetItemPrices(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/items/prices/TRADERID
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.WeatherController.Generate">
            <summary>
                Handle client/weather
            </summary>
            <returns>WeatherData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.WeatherController.GenerateLocal(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/localGame/weather
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>GetLocalWeatherResponseData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.WishlistController.AddToWishList(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.AddToWishlistRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle AddToWishList
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.WishlistController.RemoveFromWishList(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.RemoveFromWishlistRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle RemoveFromWishList event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Controllers.WishlistController.ChangeWishListItemCategory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Wishlist.ChangeWishlistItemCategoryRequest,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle changeWishlistItemCategory event
            </summary>
            <param name="pmcData">Players PMC profile</param>
            <param name="request"></param>
            <param name="sessionId">Session/Player id</param>
            <returns></returns>
        </member>
        <member name="T:SPTarkov.Server.Core.DI.IOnDIConstruct">
             <summary>
             Provides a static hook that is invoked while the dependency injection container is being constructed.
             </summary>
             <remarks>
             This hook is intended for advanced or special-case service registration.
            
             In SPT, normal dependency injection should usually be handled by applying the appropriate <see cref="T:SPTarkov.DI.Annotations.Injectable"/>
             attribute to a class. Classes marked as injectable are discovered and registered automatically, so mods
             do not need to use this interface for standard service registration.
            
             This hook is useful when a mod needs to manually add services to the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
             before the service provider is built. A common use case is registering mod-specific configurations
             or other services that cannot be registered through the normal injectable attribute flow.
            
             Implementations should avoid resolving services from the container here. At this point, the service
             provider has not been built yet. This method should only add registrations to the provided
             <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>.
             </remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.IOnDIConstruct.OnDIConstructAsync(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Threading.CancellationToken)">
            <summary>
            Called during dependency injection construction, before the service provider is built.
            </summary>
            <param name="serviceCollection">
            The service collection that the mod may add additional service registrations to.
            </param>
            <param name="cancellationToken">Cancelled when server startup is aborted, for example by Ctrl-C.</param>
            <returns>
            A task that completes when the mod has finished adding its service registrations.
            </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.IOnLoad.OnLoadAsync(System.Threading.CancellationToken)">
             <summary>
             Called when the server is loading through its various <see cref="P:SPTarkov.DI.Annotations.Injectable.TypePriority">load order</see> stages.
             </summary>
             <param name="cancellationToken">
             A token that is cancelled when the server is shutting down gracefully, such as from Ctrl+C,
             a termination signal, or another controlled shutdown request.
             </param>
             <returns>
             A task that completes when the load operation has finished.
             </returns>
             <remarks>
             Implementations should observe <paramref name="cancellationToken"/> and stop work as soon as
             reasonably possible when cancellation is requested.
            
             Pass the token to any asynchronous APIs that accept one, such as file I/O, HTTP requests,
             database calls, or delays. For long-running synchronous work, periodically call
             <see cref="M:System.Threading.CancellationToken.ThrowIfCancellationRequested"/>.
            
             Do not treat cancellation as an error. If cancellation is requested, allow
             <see cref="T:System.OperationCanceledException"/> to propagate unless cleanup is required.
             </remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.IOnUpdate.OnUpdateAsync(System.Int64,System.Threading.CancellationToken)">
             <summary>
             Called repeatedly while the server is running.
             </summary>
             <param name="secondsSinceLastRun">
             The number of seconds since this component last completed successfully.
             A successful update is one that returns <see langword="true"/>.
             </param>
             <param name="cancellationToken">
             A token that is cancelled when the server is shutting down gracefully, such as from Ctrl+C,
             a termination signal, or another controlled shutdown request.
             </param>
             <returns>
             A task that completes with <see langword="true"/> when the update ran successfully and the
             last-run timestamp should be updated; otherwise, <see langword="false"/> to leave the
             last-run timestamp unchanged.
             </returns>
             <remarks>
             Implementations should observe <paramref name="cancellationToken"/> and stop work as soon as
             reasonably possible when cancellation is requested.
            
             Pass the token to any asynchronous APIs that accept one, such as file I/O, HTTP requests,
             database calls, or delays. For long-running synchronous work, periodically call
             <see cref="M:System.Threading.CancellationToken.ThrowIfCancellationRequested"/>.
            
             Do not treat cancellation as an error. If cancellation is requested, allow
             <see cref="T:System.OperationCanceledException"/> to propagate unless cleanup is required.
            
             Returning <see langword="true"/> indicates that the update completed successfully. Returning
             <see langword="false"/> can be used when the update intentionally skipped work and should be
             called again later with the same accumulated elapsed time.
             </remarks>
        </member>
        <member name="T:SPTarkov.Server.Core.DI.RouteAction">
            <summary>
            Describes a route and the action that should be executed when the route is invoked.
            </summary>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="action">
            The action to execute for the route.
            The parameters are, in order: the route URL, the request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </param>
            <param name="bodyType">
            The expected request body type for the route, or <see langword="null"/> when
            the route does not declare a specific body type.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.RouteAction.#ctor(System.String,System.Func{System.String,SPTarkov.Server.Core.Models.Utils.IRequestData,SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask{System.Object}},System.Type)">
            <summary>
            Describes a route and the action that should be executed when the route is invoked.
            </summary>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="action">
            The action to execute for the route.
            The parameters are, in order: the route URL, the request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </param>
            <param name="bodyType">
            The expected request body type for the route, or <see langword="null"/> when
            the route does not declare a specific body type.
            </param>
        </member>
        <member name="P:SPTarkov.Server.Core.DI.RouteAction.url">
            <summary>
            The route URL or route pattern associated with the action.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.DI.RouteAction.action">
            <summary>
            The action to execute for the route.
            The parameters are, in order: the route URL, the request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.DI.RouteAction.bodyType">
            <summary>
            The expected request body type for the route, or <see langword="null"/> when
            the route does not declare a specific body type.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.DI.RouteAction`1">
            <summary>
            Describes a route and a strongly typed action that should be executed when the route is invoked.
            </summary>
            <typeparam name="TRequest">
            The strongly typed request body type expected by the route.
            </typeparam>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="typedAction">
            The strongly typed action to execute for the route.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.RouteAction`1.#ctor(System.String,System.Func{System.String,`0,SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask{System.String}})">
            <summary>
            Describes a route and a strongly typed action that should be executed when the route is invoked.
            </summary>
            <typeparam name="TRequest">
            The strongly typed request body type expected by the route.
            </typeparam>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="typedAction">
            The strongly typed action to execute for the route.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </param>
        </member>
        <member name="P:SPTarkov.Server.Core.DI.RouteAction`1.typedAction">
            <summary>
            The strongly typed action to execute for the route.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            an optional output value, and a cancellation token sourced from
            <c>HttpContext.RequestAborted</c>.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.DI.StreamedRouteAction`1">
            <summary>
            Describes a route and a strongly typed action whose payload is serialised straight into the response
            stream rather than into a finished JSON string. Worth using for responses of several megabytes.
            </summary>
            <typeparam name="TRequest">
            The strongly typed request body type expected by the route.
            </typeparam>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="typedAction">
            The strongly typed action to execute for the route, returning the payload to serialise.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            and a cancellation token sourced from <c>HttpContext.RequestAborted</c>. There is no output
            value because a streamed payload cannot be passed on to another route.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.DI.StreamedRouteAction`1.#ctor(System.String,System.Func{System.String,`0,SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask{SPTarkov.Server.Core.Models.Spt.Servers.StreamedJsonBody}})">
            <summary>
            Describes a route and a strongly typed action whose payload is serialised straight into the response
            stream rather than into a finished JSON string. Worth using for responses of several megabytes.
            </summary>
            <typeparam name="TRequest">
            The strongly typed request body type expected by the route.
            </typeparam>
            <param name="url">
            The route URL or route pattern associated with the action.
            </param>
            <param name="typedAction">
            The strongly typed action to execute for the route, returning the payload to serialise.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            and a cancellation token sourced from <c>HttpContext.RequestAborted</c>. There is no output
            value because a streamed payload cannot be passed on to another route.
            </param>
        </member>
        <member name="P:SPTarkov.Server.Core.DI.StreamedRouteAction`1.typedAction">
            <summary>
            The strongly typed action to execute for the route, returning the payload to serialise.
            The parameters are, in order: the route URL, the typed request data, the session ID,
            and a cancellation token sourced from <c>HttpContext.RequestAborted</c>. There is no output
            value because a streamed payload cannot be passed on to another route.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.FindSlotForItem(System.Int32[0:,0:],System.Nullable{System.Int32},System.Nullable{System.Int32})">
            <summary>
                Finds a slot for an item in a given 2D container map
            </summary>
            <param name="container2D">List of container with positions filled/free</param>
            <param name="itemWidthX">Width of item</param>
            <param name="itemHeightY">Height of item</param>
            <returns>Location to place item in container</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.TryFillContainerMapWithItem(System.Int32[0:,0:],System.Int32,System.Int32,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,System.String@)">
            <summary>
                Find a free slot for an item to be placed at
            </summary>
            <param name="container2D">Container to place item in</param>
            <param name="columnStartPositionX">Container y size</param>
            <param name="rowStartPositionY">Container x size</param>
            <param name="itemXWidth">Items width</param>
            <param name="itemYHeight">Items height</param>
            <param name="isRotated">is item rotated</param>
            <param name="errorMessage">Error message if failed</param>
            <returns>bool = true when successful</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.RowIsFull(System.Int32[0:,0:],System.Int32)">
            <summary>
            Is the requested row full
            </summary>
            <param name="container2D">Container to check</param>
            <param name="rowIndex">Index of row to check</param>
            <returns>True = full</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.ContainerIsFull(System.Int32[0:,0:])">
            <summary>
            Is every slot in container full
            </summary>
            <param name="container2D">Container to check</param>
            <returns>True = full</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.ItemBiggerThan1X1(System.Int32,System.Int32)">
            <summary>
            Is the item size values passed in bigger than 1x1
            </summary>
            <param name="itemWidth">Width of item</param>
            <param name="itemHeight">Height of item</param>
            <returns>True = bigger than 1x1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ContainerExtensions.CanItemBePlacedInContainerAtPosition(System.Int32[0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
                Can an item of specified size be placed inside a 2d container at a specific position
            </summary>
            <param name="container">Container to find space in</param>
            <param name="itemStartVerticalPos">Starting y position for item</param>
            <param name="itemStartHorizontalPos">Starting x position for item</param>
            <param name="itemWidth">Items width (y)</param>
            <param name="itemHeight">Items height (x)</param>
            <returns>True - slot found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.CurrencyTypeExtensions.GetCurrencyTpl(SPTarkov.Server.Core.Models.Enums.CurrencyType)">
            <summary>
                Gets currency TPL from TAG
            </summary>
            <param name="currency"></param>
            <returns>Tpl of currency</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.FormatToBsgTime(System.DateTimeOffset)">
            <summary>
                Formats the time part of a date as a UTC string.
            </summary>
            <param name="dateTimeOffset">The date to format in UTC.</param>
            <returns>The formatted time as 'HH-MM-SS'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.FormatToBsgTime(System.DateTime)">
            <summary>
                Formats the time part of a date as a UTC string.
            </summary>
            <param name="dateTime">The date to format in UTC.</param>
            <returns>The formatted time as 'HH-MM-SS'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.FormatToBsgDate(System.DateTimeOffset)">
            <summary>
                Formats the date part of a date as a UTC string.
            </summary>
            <param name="dateTimeOffset">The date to format in UTC.</param>
            <returns>The formatted date as 'YYYY-MM-DD'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.FormatToBsgDate(System.DateTime)">
            <summary>
                Formats the date part of a date as a UTC string.
            </summary>
            <param name="dateTime">The date to format in UTC.</param>
            <returns>The formatted date as 'YYYY-MM-DD'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.Pad(System.Int32)">
            <summary>
                Pads a number with a leading zero if it is less than 10.
            </summary>
            <param name="number">The number to pad.</param>
            <returns>The padded number as a string.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.GetBsgFormattedWeatherTime(System.DateTime)">
            <summary>
                Get current time formatted to fit BSGs requirement
            </summary>
            <param name="date"> Date to format into bsg style </param>
            <returns> Time formatted in BSG format </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.DateIsBetweenTwoDates(System.DateTime,System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
                Does the provided date fit between the two defined dates?
                Excludes year
                Inclusive of end date up to 23 hours 59 minutes
            </summary>
            <param name="dateToCheck">Date to check is between 2 dates</param>
            <param name="startMonth">Lower bound for month</param>
            <param name="startDay">Lower bound for day</param>
            <param name="endMonth">Upper bound for month</param>
            <param name="endDay">Upper bound for day</param>
            <returns>True when inside date range</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.GetClosestDate(System.DateTime,System.DayOfWeek)">
            <summary>
            Get the closest monday to passed in datetime
            </summary>
            <param name="dateTime">Date to get closest monday of</param>
            <param name="startDay">Starting day of week - Default = Monday</param>
            <returns>Monday as DateTime</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DateTimeExtensions.GetMostRecentPreviousDay(System.DateTime,System.DayOfWeek,System.Boolean)">
            <summary>
            Get the most recent requested day from date
            </summary>
            <param name="dateTime">Date to start from</param>
            <param name="desiredDay">Desired day to find</param>
            <param name="inclusiveOfToday">Should today be included in check, default = true</param>
            <returns>Datetime of desired day</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DictionaryExtensions.AddOrUpdate``1(System.Collections.Generic.IDictionary{``0,System.Double},``0,System.Double)">
            <summary>
            Add a value by key to a dictionary, if the key doesn't exist, create it
            </summary>
            <typeparam name="T">Dictionary key type</typeparam>
            <param name="dict">Dictionary to add/update</param>
            <param name="key">Key to update by</param>
            <param name="value">Value to add to key</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.DictionaryExtensions.AddOrUpdate``1(System.Collections.Generic.IDictionary{``0,System.Int32},``0,System.Int32)">
            <summary>
            Add a value by key to a dictionary, if the key doesn't exist, create it
            </summary>
            <typeparam name="T">Dictionary key type</typeparam>
            <param name="dict">Dictionary to add/update</param>
            <param name="key">Key to update by</param>
            <param name="value">Value to add to key</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.EndRaidResultExtensions.IsPlayerSurvived(SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult)">
            <summary>
                Checks to see if player survives. run through will return false
            </summary>
            <param name="results"> Post raid request </param>
            <returns> True if survived </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.EndRaidResultExtensions.IsPlayerDead(SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult)">
            <summary>
                Is the player dead after a raid - dead = anything other than "survived" / "runner"
            </summary>
            <param name="results"> Post raid request </param>
            <returns> True if dead </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.EndRaidResultExtensions.IsMapToMapTransfer(SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult)">
            <summary>
                Has the player moved from one map to another
            </summary>
            <param name="results"> Post raid request </param>
            <returns> True if players transferred </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.EndRaidResultExtensions.TookCarExtract(SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult,System.Collections.Generic.HashSet{System.String})">
            <summary>
                Was extract by car
            </summary>
            <param name="requestResults">Result object from completed raid</param>
            <param name="carExtracts">Car extract names</param>
            <returns> True if extract was by car </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.EndRaidResultExtensions.TookCoopExtract(SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult,System.Collections.Generic.HashSet{System.String})">
            <summary>
            Raid exit was via coop extract
            </summary>
            <param name="raidResult">Result object from completed raid</param>
            <param name="coopExtracts"></param>
            <returns>True when exit was coop extract</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.FullProfileExtensions.AddSuitsToProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Add a list of suit ids to a profiles suit list, no duplicates
            </summary>
            <param name="fullProfile">Profile to add clothing to</param>
            <param name="clothingIds">Clothing Ids to add to profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.FullProfileExtensions.AddCustomisationUnlocksToProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Add customisations to game profiles based on game edition
            </summary>
            <param name="fullProfile">Profile to add customisations to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.FullProfileExtensions.GetGameEdition(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Get the game edition of a profile chosen on creation in Launcher
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.FullProfileExtensions.AddExtraRepeatableQuest(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                Add the given number of extra repeatable quests for the given type of repeatable to the users profile
            </summary>
            <param name="fullProfile">Profile to add the extra repeatable to</param>
            <param name="repeatableId">The ID of the type of repeatable to increase</param>
            <param name="rewardValue">The number of extra repeatables to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.FullProfileExtensions.IsDeveloperAccount(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Is the provided session id for a developer account
            </summary>
            <param name="fullProfile">Profile to check</param>
            <returns>True if account is developer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemEventRouterResponseExtensions.AddItemStackSizeChangeIntoEventResponse(SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Add item stack change object into output route event response
            </summary>
            <param name="output">Response to add item change event into</param>
            <param name="sessionId">Session id</param>
            <param name="item">Item that was adjusted</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.IsSameItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.ISet{System.String})">
            <summary>
            This method will compare two items and see if they are equivalent
            This method will NOT compare IDs on the items
            </summary>
            <param name="item1">first item to compare</param>
            <param name="item2">second item to compare</param>
            <param name="compareUpdProperties">Upd properties to compare between the items</param>
            <returns>true if they are the same</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.ItemIsInsideContainer(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Check if item is stored inside a container
            </summary>
            <param name="itemToCheck">Item to check is inside of container</param>
            <param name="desiredContainerSlotId">Name of slot to check item is in e.g. SecuredContainer/Backpack</param>
            <param name="items">Inventory with child parent items to check</param>
            <returns>True when item is in container</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetItemStackSize(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Get the size of a stack, return 1 if no stack object count property found
            </summary>
            <param name="item">Item to get stack size of</param>
            <returns>size of stack</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GenerateItemsMap(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Create a dictionary from a collection of items, keyed by item id
            </summary>
            <param name="items">Collection of items</param>
            <returns>Dictionary of items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.AdoptOrphanedItems(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.String)">
            <summary>
            Adopts orphaned items by resetting them as root "hideout" items. Helpful in situations where a parent has been
            deleted from a group of items and there are children still referencing the missing parent. This method will
            remove the reference from the children to the parent and set item properties to root values.
            </summary>
            <param name="rootId">The ID of the "root" of the container</param>
            <param name="items">Array of Items that should be adjusted</param>
            <returns>Returns Array of Items that have been adopted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetItemWithChildrenTpls(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Recursive function that looks at every item from parameter and gets their children's Ids + includes parent item in results
            </summary>
            <param name="items">List of items (item + possible children)</param>
            <param name="baseItemId">Parent item's id</param>
            <returns>list of child item ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.HasBuyRestrictions(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Check if the passed in item has buy count restrictions
            </summary>
            <param name="itemToCheck">Item to check</param>
            <returns>true if it has buy restrictions</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetChildId(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Gets the identifier for a child using slotId, locationX and locationY.
            </summary>
            <param name="item">Item.</param>
            <returns>SlotId OR slotId, locationX, locationY.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.FixItemStackCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Update items upd.StackObjectsCount to be 1 if its upd is missing or StackObjectsCount is undefined
            </summary>
            <param name="item">Item to update</param>
            <returns>Fixed item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetItemWithChildren(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
            Get an item with its attachments (children)
            </summary>
            <param name="items">List of items (item + possible children)</param>
            <param name="baseItemId">Parent item's id</param>
            <param name="excludeStoredItems">OPTIONAL - Include only mod items, exclude items stored inside root item</param>
            <returns>list of Item objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetItemWithChildren(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}},System.Boolean)">
            <summary>
            Get an item with its attachments (children), using a lookup built by
            <see cref="M:SPTarkov.Server.Core.Extensions.ItemExtensions.CreateParentIdLookupCache(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item@,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})"/>. Build the lookup once when walking many items in the same
            collection, as building it costs a pass over all of them.
            </summary>
            <param name="rootItem">Item to start from</param>
            <param name="childrenByParent">Items keyed by their parentId</param>
            <param name="excludeStoredItems">OPTIONAL - Include only mod items, exclude items stored inside root item</param>
            <returns>list of Item objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.CreateParentIdLookupCache(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item@,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Cache items by their parentId
            </summary>
            <param name="items">items to process</param>
            <param name="baseItemId">Id of root item</param>
            <param name="rootItem">Root item from inputted data</param>
            <returns>Dictionary of items keyed by their parentId</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.ToLootItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Convert an Item to SptLootItem
            </summary>
            <param name="item">Item to convert</param>
            <returns>Converted SptLootItem</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetSecureContainerItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Get a list of the item IDs (NOT tpls) inside a secure container
            </summary>
            <param name="items">Inventory items to look for secure container in</param>
            <returns>List of ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.ReplaceIDs(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Regenerate all GUIDs with new IDs, except special item types (e.g. quest, sorting table, etc.)
            </summary>
            <param name="items"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.RemapRootItemId(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Update a root items _id property value to be unique
            </summary>
            <param name="itemWithChildren">Item to update root items _id property</param>
            <param name="newId">Optional: new id to use</param>
            <returns>New root id</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.GetInventoryItemHash(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Create 2 hashsets for passed in items, keyed by the items ID and by the items parentId
            </summary>
            <param name="inventoryItems">Items to hash</param>
            <returns>InventoryItemHash</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.RemoveFiRStatusFromItemsInContainer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.String)">
            <summary>
                Remove spawned in session (FiR) status from items inside a container
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="containerSlotId">Container slot id to find items for and remove FiR from e.g. "Backpack"</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.AddUpd(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Add a blank Upd object to an item
            </summary>
            <param name="item"></param>
            <returns>True = Upd added</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ItemExtensions.EnsureItemHasValidStackCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Ensure an item has an upd object with a stack count of 1
            </summary>
            <param name="item">Item to check</param>
        </member>
        <member name="T:SPTarkov.Server.Core.Extensions.LootContainerSettingsExtensions">
            <summary>
            Get the rouble amount for the desired container, multiplied by the current map bot will spawn on
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.LootContainerSettingsExtensions.GetContainerRoubleTotalByLevel(System.Int32,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Spt.Config.MinMaxLootValue})">
            <summary>
                Gets the rouble cost total for loot in a bots backpack by the bots level
                Will return 0 for non PMCs
            </summary>
            <param name="botLevel">level of the bot</param>
            <param name="containerLootValuesPool">Pocket/vest/backpack</param>
            <returns>rouble amount</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.CumulativeSum(System.Collections.Generic.IEnumerable{System.Double})">
            <summary>
                Helper to create the cumulative sum of all enumerable elements
                [1, 2, 3, 4].CumulativeSum() = [1, 3, 6, 10]
            </summary>
            <param name="values">The enumerable with numbers of which to calculate the cumulative sum</param>
            <returns>cumulative sum of values</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.CumulativeSum(System.Collections.Generic.IEnumerable{System.Single})">
            <summary>
                Helper to create the cumulative sum of all enumerable elements
                [1, 2, 3, 4].CumulativeSum() = [1, 3, 6, 10]
            </summary>
            <param name="values">The enumerable with numbers of which to calculate the cumulative sum</param>
            <returns>cumulative sum of values</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.Product(System.Collections.Generic.IEnumerable{System.Double},System.Double)">
            <summary>
                Helper to create the product of each element times factor
            </summary>
            <param name="values">The enumerable of numbers which shall be multiplied by the factor</param>
            <param name="factor">Number to multiply each element by</param>
            <returns>An enumerable of elements all multiplied by the factor</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.Product(System.Collections.Generic.IEnumerable{System.Single},System.Single)">
            <summary>
                Helper to create the product of each element times factor
            </summary>
            <param name="values">The enumerable of numbers which shall be multiplied by the factor</param>
            <param name="factor">Number to multiply each element by</param>
            <returns>An enumerable of elements all multiplied by the factor</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.Approx(System.Double,System.Double,System.Double)">
            <summary>
                Helper to determine if one double is approx equal to another double
            </summary>
            <param name="value">Value to check</param>
            <param name="target">Target value</param>
            <param name="error">Error value</param>
            <returns>True if value is approx target within the error range</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.Approx(System.Nullable{System.Double},System.Double,System.Double)">
            <summary>
                Helper to determine if one double is approx equal to another double
            </summary>
            <param name="value">Value to check</param>
            <param name="target">Target value</param>
            <param name="error">Error value</param>
            <returns>True if value is approx target within the error range</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MathExtensions.Approx(System.Single,System.Single,System.Single)">
            <summary>
                Helper to determine if one float is approx equal to another float
            </summary>
            <param name="value">Value to check</param>
            <param name="target">Target value</param>
            <param name="error">Error value</param>
            <returns>True if value is approx target within the error range</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MongoIdExtensions.IsValidMongoId(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Determines whether the specified <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/> is a valid 24-character hexadecimal string,
            which is the standard format for MongoDB ObjectIds.
            </summary>
            <param name="mongoId">The <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/> to validate.</param>
            <returns><see langword="true"/> if the <paramref name="mongoId"/> is a valid MongoDB ObjectId; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.MongoIdExtensions.IsValidMongoId(System.String)">
            <summary>
            Determines whether the specified string is a valid 24-character hexadecimal representation
            of a MongoDB ObjectId.
            </summary>
            <param name="mongoId">The string to validate as a MongoDB ObjectId.</param>
            <returns><see langword="true"/> if the <paramref name="mongoId"/> is a valid MongoDB ObjectId; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProductionExtensions.IsCraftComplete(SPTarkov.Server.Core.Models.Eft.Common.Tables.Production)">
            <summary>
                Has the craft completed
                Ignores bitcoin farm/cultist circle as they're continuous crafts
            </summary>
            <param name="craft">Craft to check</param>
            <returns>True when craft is complete</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProductionExtensions.IsCraftOfType(SPTarkov.Server.Core.Models.Eft.Common.Tables.Production,SPTarkov.Server.Core.Models.Enums.Hideout.HideoutAreas)">
            <summary>
                Is a craft from a particular hideout area
            </summary>
            <param name="craft">Craft to check</param>
            <param name="hideoutType">Type to check craft against</param>
            <returns>True if it is from that area</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProductionExtensions.FlagCultistCircleCraftAsComplete(SPTarkov.Server.Core.Models.Eft.Common.Tables.Production)">
            <summary>
            Craft has completed, update its properties to reflect its new state
            </summary>
            <param name="production">Craft to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetQuestItemsInProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Return all quest items current in the supplied profile
            </summary>
            <param name="profile">Profile to get quest items from</param>
            <returns>List of item objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.UnlockHideoutWallInProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Upgrade hideout wall from starting level to interactable level if necessary stations have been upgraded
            </summary>
            <param name="profile">Profile to upgrade wall in</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.ProfileHasConditionCounters(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Does the provided profile contain any condition counters
            </summary>
            <param name="profile"> Profile to check for condition counters </param>
            <returns> Profile has condition counters </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetSkillFromProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.SkillTypes)">
            <summary>
                Get a specific common skill from supplied profile
            </summary>
            <param name="profile">Player profile</param>
            <param name="skill">Skill to look up and return value from</param>
            <returns>Common skill object from desired profile</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetSkillBonusMultipliedBySkillLevel(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.SkillTypes,System.Double)">
            <summary>
                Get a multiplier based on player's skill level and value per level
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="skill">Player skill from profile</param>
            <param name="valuePerLevel">Value from globals.config.SkillsSettings - `PerLevel`</param>
            <returns>Multiplier from 0 to 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetScavKarmaLevel(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the scav karma level for a profile
                Is also the fence trader rep level
            </summary>
            <param name="pmcData">pmc profile</param>
            <returns>karma level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.IsItemInStash(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Recursively checks if the given item is
                inside the stash, that is it has the stash as
                ancestor with slotId=hideout
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="itemToCheck">Item to look for</param>
            <returns>True if item exists inside stash</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetBonusValueFromProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.BonusType)">
            <summary>
                Iterate over all bonuses and sum up all bonuses of desired type in provided profile
            </summary>
            <param name="pmcProfile">Player profile</param>
            <param name="desiredBonus">Bonus to sum up</param>
            <returns>Summed bonus value or 0 if no bonus found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.CalculateLevel(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Tables.ExpTable[])">
            <summary>
                Calculates the current level of a player based on their accumulated experience points.
                This method iterates through an experience table to determine the highest level achieved
                by comparing the player's experience against cumulative thresholds.
            </summary>
            <param name="pmcData"> Player profile </param>
            <param name="expTable">Experience table from globals.json</param>
            <returns>
                The calculated level of the player as an integer, or null if the level cannot be determined.
                This value is also assigned to <see cref="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Info.Level" /> within the provided profile.
            </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.DoesItemHaveRootId(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does the provided item have a root item with the provided id
            </summary>
            <param name="pmcData">Profile with items</param>
            <param name="item">Item to check</param>
            <param name="rootId">Root item id to check for</param>
            <returns>True when item has rootId, false when not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetQuestStatus(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get status of a quest in player profile by its id
            </summary>
            <param name="pmcData">Profile to search</param>
            <param name="questId">Quest id to look up</param>
            <returns>QuestStatus enum</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.RemoveItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle Remove event
                Remove item from player inventory + insured items array
                Also deletes child items
            </summary>
            <param name="profile">Profile to remove item from (pmc or scav)</param>
            <param name="itemId">Items id to remove</param>
            <param name="sessionId">Session id</param>
            <param name="output">OPTIONAL - ItemEventRouterResponse</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.ProfileMeetsTraderLoyaltyLevelToBuyOffer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Does Player have necessary trader loyalty to purchase flea offer
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="fleaOffer">Flea offer being bought</param>
            <returns>True if player can buy offer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileExtensions.GetLockedTraderIds(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get Ids of traders with an unlocked status of "false"
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>Hashset of Trader ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.ProfileMigratorExtensions.Sort(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Migration.IProfileMigration})">
            <summary>
            Sorts the profile migrations in dependency order, ensuring that each migration appears
            after all of its prerequisite migrations.
            </summary>
            <param name="profileMigrations">The collection of profile migrations to sort.</param>
            <returns>A topologically sorted list of migrations.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.QuestConditionExtensions.GetQuestConditions(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition},System.Func{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition}})">
            <summary>
            Get all quest conditions from provided list
            </summary>
            <param name="questConditions">Input conditions</param>
            <param name="furtherFilter">OPTIONAL - Additional filter code to run</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.RagfairOfferExtensions.IsStale(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,System.Int64)">
            <summary>
                Is the passed in offer stale - end time > passed in time
            </summary>
            <param name="offer">Offer to check</param>
            <param name="time">Time to check offer against</param>
            <returns>True - offer is stale</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.RagfairOfferExtensions.IsTraderOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Does this offer come from a trader
            </summary>
            <param name="offer">Offer to check</param>
            <returns>True = from trader</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.RagfairOfferExtensions.IsPlayerOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Was this offer created by a human player
            </summary>
            <param name="offer"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.RagfairOfferExtensions.IsFakePlayerOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Was this offer created by a fake player
            </summary>
            <param name="offer"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TemplateItemExtensions.IsQuestItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Check if item is quest item
            </summary>
            <param name="templateItem">Item to check quest status of</param>
            <returns>true if item is flagged as quest item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TemplateItemExtensions.GetWeaponsDefaultMagazineTpl(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a weapons default magazine template id
            </summary>
            <param name="weaponTemplate">Weapon to get default magazine for</param>
            <returns>Tpl of magazine</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TemplateItemExtensions.GetDefaultPlateTpl(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Get the default plate an armor has in its db item
            </summary>
            <param name="armorItem">Item to look up default plate</param>
            <param name="modSlot">front/back</param>
            <returns>Tpl of plate</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TemplateItemExtensions.HasNoSlotsCartridgesOrChambers(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Does the passed in <see cref="T:SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem"/> lack slots, cartridges or chambers
            </summary>
            <param name="item">Item to check</param>
            <returns>True if it lacks cartridges/chamber slots, False if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TraderAssortExtensions.RemoveItemFromAssort(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
            Remove an item from an assort
            Must be removed from the assorts; items + barterScheme + LoyaltyLevel
            </summary>
            <param name="assort">Assort to remove item from</param>
            <param name="itemId">Id of item to remove from assort</param>
            <param name="isFlea">Is the assort being modified the flea market assort</param>
            <returns>Modified assort</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TraderAssortExtensions.RemoveItemsFromAssort(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Given the blacklist provided, remove root items from assort
            </summary>
            <param name="assortToFilter">Trader assort to modify</param>
            <param name="itemsTplsToRemove">Item TPLs the assort should not have</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.TraderAssortExtensions.MergeAssorts(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
                Merge two trader assort files together
            </summary>
            <param name="firstAssort"> Assort #1 </param>
            <param name="secondAssort"> Assort #2 </param>
            <returns> Merged assort </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.WildSpawnTypeExtensions.IsPmc(SPTarkov.Server.Core.Models.Eft.Common.WildSpawnType)">
            <summary>
                Is the passed in bot role a PMC (USEC/Bear/PMC)
            </summary>
            <param name="botRole">bot role to check</param>
            <returns>true if is pmc</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Extensions.WildSpawnTypeExtensions.GetPmcSideByRole(SPTarkov.Server.Core.Models.Eft.Common.WildSpawnType)">
            <summary>
                Get the corresponding side when pmcBEAR or pmcUSEC is passed in
            </summary>
            <param name="botRole">role to get side for</param>
            <returns>Usec/Bear</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GenerateModsForEquipment(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails,System.Boolean)">
            <summary>
                Check mods are compatible and add to array
            </summary>
            <param name="equipment">Equipment item to add mods to</param>
            <param name="parentId">Mod list to choose from</param>
            <param name="parentTemplate">parentId of item to add mod to</param>
            <param name="settings">Template object of item to add mods to</param>
            <param name="specificBlacklist">The relevant blacklist from bot.json equipment dictionary</param>
            <param name="shouldForceSpawn">should this mod be forced to spawn</param>
            <returns>Item + compatible mods as an array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.FilterPlateModsForSlotByLevel(SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties,System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Nullable{System.Int32})">
            <summary>
                Filter a bots plate pool based on its current level
            </summary>
            <param name="settings">Bot equipment generation settings</param>
            <param name="modSlot">Armor slot being filtered</param>
            <param name="existingPlateTplPool">Plates tpls to choose from</param>
            <param name="armorItem">The armor items db template</param>
            <returns>Array of plate tpls to choose from</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetMinMaxArmorPlateClass(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem})">
            <summary>
                Gets the minimum and maximum plate class levels from an array of plates
            </summary>
            <param name="platePool">Pool of plates to sort by armorClass to get min and max</param>
            <returns>MinMax of armorClass from plate pool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetDefaultPresetArmorSlot(SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Get the matching armor slot from the default preset matching passed in armor tpl
            </summary>
            <param name="armorItemTpl"></param>
            <param name="modSlot"></param>
            <returns>Armor IItem</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GenerateModsForWeapon(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest)">
            <summary>
                Add mods to a weapon using the provided mod pool
            </summary>
            <param name="sessionId">Session id</param>
            <param name="request">Data used to generate the weapon</param>
            <returns>Weapon + mods array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ShouldForceSubStockSlots(System.String,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Should the provided bot have its stock chance values altered to 100%
            </summary>
            <param name="modSlot">Slot to check</param>
            <param name="botEquipConfig">Bots equipment config/chance values</param>
            <param name="modToAddTemplate">Mod being added to bots weapon</param>
            <returns>True if it should</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ModIsFrontOrRearSight(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Is passed in modslot a front or rear sight
            </summary>
            <param name="modSlot">Slot to check</param>
            <param name="tpl"></param>
            <returns>true if it's a front/rear sight</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ModSlotCanHoldScope(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does the provided mod details show the mod can hold a scope
            </summary>
            <param name="modSlot">e.g. mod_scope, mod_mount</param>
            <param name="modsParentId">Parent id of mod item</param>
            <returns>true if it can hold a scope</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.AdjustSlotSpawnChances(System.Collections.Generic.Dictionary{System.String,System.Double},System.Collections.Generic.List{System.String},System.Double)">
            <summary>
                Set mod spawn chances to defined amount
            </summary>
            <param name="modSpawnChances">Chance dictionary to update</param>
            <param name="modSlotsToAdjust"></param>
            <param name="newChancePercent"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ModSlotCanHoldMuzzleDevices(System.String,System.String)">
            <summary>
                Does the provided modSlot allow muzzle-related items
            </summary>
            <param name="modSlot">Slot id to check</param>
            <param name="modsParentId">OPTIONAL: parent id of modslot being checked</param>
            <returns>True if modSlot can have muzzle-related items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.SortModKeys(System.Collections.Generic.HashSet{System.String},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Sort mod slots into an ordering that maximises chance of a successful weapon generation
            </summary>
            <param name="unsortedSlotKeys">Array of mod slot strings to sort</param>
            <param name="itemTplWithKeysToSort">The Tpl of the item with mod keys being sorted</param>
            <returns>Sorted array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetModItemSlotFromDbTemplate(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a Slot property for an item (chamber/cartridge/slot)
            </summary>
            <param name="modSlot">e.g patron_in_weapon</param>
            <param name="parentTemplate">item template</param>
            <returns>Slot item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ShouldModBeSpawned(SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot,System.String,System.Collections.Generic.Dictionary{System.String,System.Double},SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters)">
            <summary>
                Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot
            </summary>
            <param name="itemSlot">slot the item sits in from db</param>
            <param name="modSlotName">Name of slot the mod sits in</param>
            <param name="modSpawnChances">Chances for various mod spawns</param>
            <param name="botEquipConfig">Various config settings for generating this type of bot</param>
            <returns>ModSpawn.SPAWN when mod should be spawned, ModSpawn.DEFAULT_MOD when default mod should spawn, ModSpawn.SKIP when mod is skipped</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.ChooseModToPutIntoSlot(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest)">
            <summary>
                Choose a mod to fit into the desired slot
            </summary>
            <param name="request">Data used to choose an appropriate mod with</param>
            <returns>itemHelper.getItem() result</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetFilteredMagazinePoolByCapacity(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Given the passed in array of magazine tpls, look up the min size set in config and return only those that have that size or larger
            </summary>
            <param name="modSpawnRequest">Request data</param>
            <param name="modPool">Pool of magazine tpls to filter</param>
            <returns>Filtered pool of magazine tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetCompatibleWeaponModTplForSlotFromPool(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot,System.Nullable{SPTarkov.Server.Core.Models.Enums.ModSpawn},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.String)">
            <summary>
                Choose a weapon mod tpl for a given slot from a pool of choices
                Checks chosen tpl is compatible with all existing weapon items
            </summary>
            <param name="request"></param>
            <param name="modPool">Pool of mods that can be picked from</param>
            <param name="parentSlot">Slot the picked mod will have as a parent</param>
            <param name="choiceTypeEnum">How should the chosen tpl be handled: DEFAULT_MOD/SPAWN/SKIP</param>
            <param name="weapon">Array of weapon items chosen item will be added to</param>
            <param name="modSlotName">Name of slot picked mod will be placed into</param>
            <returns>Chosen weapon details</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetCompatibleModFromPool(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Nullable{SPTarkov.Server.Core.Models.Enums.ModSpawn},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            </summary>
            <param name="modPool">Pool of item Tpls to choose from</param>
            <param name="modSpawnType">How should the slot choice be handled - forced/normal etc</param>
            <param name="weapon">Weapon mods at current time</param>
            <returns>IChooseRandomCompatibleModResult</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetFilteredModPool(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Get a list of mod tpls that are compatible with the current weapon
            </summary>
            <param name="modPool"></param>
            <param name="tplBlacklist">Tpls that are incompatible and should not be used</param>
            <returns>string array of compatible mod tpls with weapon</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetModPoolForSlot(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Filter mod pool down based on various criteria:
                Is slot flagged as randomisable
                Is slot required
                Is slot flagged as default mod only
            </summary>
            <param name="request"></param>
            <param name="weaponTemplate">Mods root parent (weapon/equipment)</param>
            <returns>Array of mod tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetModPoolForDefaultSlot(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a pool of mods from the default weapon preset for passed in weapon
            </summary>
            <param name="request"></param>
            <param name="weaponTemplate"></param>
            <returns>Hashset of mods keyed by slot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetMatchingModFromPreset(SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get Desired item from preset
            </summary>
            <param name="request"></param>
            <param name="weaponTemplate"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetMatchingPreset(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl)
            </summary>
            <param name="weaponTemplate">Weapons db template</param>
            <param name="parentItemTpl">Tpl of the parent item</param>
            <returns>Default preset found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.WeaponModComboIsIncompatible(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Temp fix to prevent certain combinations of weapons with mods that are known to be incompatible
            </summary>
            <param name="weapon">Array of items that make up a weapon</param>
            <param name="modTpl">Mod to check compatibility with weapon</param>
            <returns>True if incompatible</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.CreateModItem(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Create a mod item with provided parameters as properties + add upd property
            </summary>
            <param name="modId">_id</param>
            <param name="modTpl">_tpl</param>
            <param name="parentId">parentId</param>
            <param name="modSlot">slotId</param>
            <param name="modTemplate">Used to add additional properties in the upd object</param>
            <param name="botRole">The bots role mod is being created for</param>
            <returns>Item object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetAmmoContainers">
            <summary>
                Get a list of containers that hold ammo
                e.g. mod_magazine / patron_in_weapon_000
            </summary>
            <returns>string array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetRandomModTplFromItemDb(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot,System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Get a random mod from an items compatible mods Filter array
            </summary>
            <param name="fallbackModTpl">Default value to return if parentSlot Filter is empty</param>
            <param name="parentSlot">Item mod will go into, used to get compatible items</param>
            <param name="modSlot">Slot to get mod to fill</param>
            <param name="items">Items to ensure picked mod is compatible with</param>
            <returns>Item tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.IsModValidForSlot(System.Nullable{System.Collections.Generic.KeyValuePair{System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem}},SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Check if mod exists in db + is for a required slot
            </summary>
            <param name="modToAdd">Db template of mod to check</param>
            <param name="slotAddedToTemplate">Slot object the item will be placed as child into</param>
            <param name="modSlot">Slot the mod will fill</param>
            <param name="parentTemplate">Db template of the mods being added</param>
            <param name="botRole">Bots wildspawntype (assault/pmcBot/exUsec etc)</param>
            <returns>True if valid for slot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.AddCompatibleModsForProvidedMod(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.IDictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId}}},SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails)">
            <summary>
                Find mod tpls of a provided type and add to its modPool
            </summary>
            <param name="desiredSlotName">Slot to look up and add we are adding tpls for (e.g. mod_scope)</param>
            <param name="modTemplate">db object for modItem we get compatible mods from</param>
            <param name="modPool">Pool of mods we are adding to</param>
            <param name="botEquipBlacklist">A blacklist of items that cannot be picked</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.GetDynamicModPool(System.String,System.String,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails)">
            <summary>
                Get the possible items that fit a slot
            </summary>
            <param name="parentItemId">item tpl to get compatible items for</param>
            <param name="modSlot">Slot item should fit in</param>
            <param name="botEquipBlacklist">Equipment that should not be picked</param>
            <returns>Array of compatible items for that slot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.FilterModsByBlacklist(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails,System.String)">
            <summary>
                Take a list of tpls and filter out blacklisted values using itemFilterService + botEquipmentBlacklist
            </summary>
            <param name="modTplPool">Base mod tpls to filter</param>
            <param name="botEquipBlacklist">Equipment blacklist details for bot level range</param>
            <param name="modSlot">Mod slot mods belong to</param>
            <returns>New set of tpls not in blacklist(s)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.FillCamora(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId}}},System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                With the shotgun revolver (60db29ce99594040e04c4a27) 12.12 introduced CylinderMagazines.
                Those magazines (e.g. 60dc519adf4c47305f6d410d) have a "Cartridges" entry with a _max_count=0.
                Ammo is not put into the magazine directly but assigned to the magazine's slots: The "camora_xxx" slots.
                This function is a helper called by generateModsForItem for mods with parent type "CylinderMagazine"
            </summary>
            <param name="items">The items where the CylinderMagazine's camora are appended to</param>
            <param name="modPool">ModPool which should include available cartridges</param>
            <param name="cylinderMagParentId">The CylinderMagazine's UID</param>
            <param name="cylinderMagTemplate">The CylinderMagazine's template</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.MergeCamoraPools(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId}})">
            <summary>
                Take a record of camoras and merge the compatible shells into one array
            </summary>
            <param name="camorasWithShells">Dictionary of camoras we want to merge into one array</param>
            <returns>String array of shells for multiple camora sources</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotEquipmentModGenerator.FilterSightsByWeaponType(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId}})">
            <summary>
                Filter out non-whitelisted weapon scopes
                Controlled by bot.json weaponSightWhitelist
                e.g. filter out rifle scopes from SMGs
            </summary>
            <param name="weapon">Weapon scopes will be added to</param>
            <param name="scopes">Full scope pool</param>
            <param name="botWeaponSightWhitelist">Whitelist of scope types by weapon base type</param>
            <returns>Array of scope tpls that have been filtered to just ones allowed for that weapon type</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GeneratePlayerScav(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Generate a player scav bot object
            </summary>
            <param name="sessionId">Session id</param>
            <param name="role">e.g. assault / pmcbot</param>
            <param name="difficulty">easy/normal/hard/impossible</param>
            <param name="botTemplate">base bot template to use  (e.g. assault/pmcbot)</param>
            <param name="profile">profile of player generating pscav</param>
            <returns>BotBase</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.PrepareAndGenerateBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Create 1 bot of the type/side/difficulty defined in botGenerationDetails
            </summary>
            <param name="sessionId">Session id</param>
            <param name="botGenerationDetails">details on how to generate bots</param>
            <returns>constructed bot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetPreparedBotBaseClone(System.String,System.String,System.String)">
            <summary>
                Get a clone of the default bot base object and adjust its role/side/difficulty values
            </summary>
            <param name="botRole">Role bot should have</param>
            <param name="botSide">Side bot should have</param>
            <param name="difficulty">Difficult bot should have</param>
            <returns>Cloned bot base</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetBotBaseClone">
            <summary>
                Get a clone of the database\bots\base.json file
            </summary>
            <returns>BotBase object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GenerateBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Create a IBotBase object with equipment/loot/exp etc
            </summary>
            <param name="sessionId">Session id</param>
            <param name="bot">Bots base file</param>
            <param name="botJsonTemplate">Bot template from db/bots/x.json</param>
            <param name="botGenerationDetails">details on how to generate the bot</param>
            <returns>BotBase object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.ShouldSimulatePlayerScav(System.String)">
            <summary>
                Should this bot have a name like "name (Pmc Name)" and be altered by client patch to be hostile to player
            </summary>
            <param name="botRole">Role bot has</param>
            <returns>True if name should be simulated pscav</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetExperienceRewardForKillByDifficulty(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Common.MinMax{System.Int32}},System.String,System.String)">
            <summary>
                Get exp for kill by bot difficulty
            </summary>
            <param name="experiences">Dict of difficulties and experience</param>
            <param name="botDifficulty">the killed bots difficulty</param>
            <param name="role">Role of bot (optional, used for error logging)</param>
            <returns>Experience for kill</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetStandingChangeForKillByDifficulty(System.Collections.Generic.Dictionary{System.String,System.Double},System.String,System.String)">
            <summary>
                Get the standing value change when player kills a bot
            </summary>
            <param name="standingsForKill">Dictionary of standing values keyed by bot difficulty</param>
            <param name="botDifficulty">Difficulty of bot to look up</param>
            <param name="role">Role of bot (optional, used for error logging)</param>
            <returns>Standing change value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetAggressorBonusByDifficulty(System.Collections.Generic.Dictionary{System.String,System.Double},System.String,System.String)">
            <summary>
                Get the aggressor bonus value when player kills a bot
            </summary>
            <param name="aggressorBonuses">Dictionary of standing values keyed by bot difficulty</param>
            <param name="botDifficulty">Difficulty of bot to look up</param>
            <param name="role">Role of bot (optional, used for error logging)</param>
            <returns>Standing change value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.AddAdditionalPocketLootWeightsForUnheardBot(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType)">
            <summary>
                Unheard PMCs need their pockets expanded
            </summary>
            <param name="botJsonTemplate">Bot data to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.RemoveBlacklistedLootFromBotTemplate(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory)">
            <summary>
                Remove items from item.json/lootableItemBlacklist from bots inventory
            </summary>
            <param name="botInventory">Bot to filter</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.SetBotAppearance(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase,SPTarkov.Server.Core.Models.Eft.Common.Tables.Appearance,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Choose various appearance settings for a bot using weights: head/body/feet/hands
            </summary>
            <param name="bot">Bot to adjust</param>
            <param name="appearance">Appearance settings to choose from</param>
            <param name="botGenerationDetails">Generation details</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GenerateHealth(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeHealth,System.Boolean)">
            <summary>
                Converts health object to the required format
            </summary>
            <param name="healthObj">health object from bot json</param>
            <param name="playerScav">Is a pscav bot being generated</param>
            <returns>Health object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetLowestHpBodyPart(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.BodyPart})">
            <summary>
                Get the bodyPart with the lowest hp
            </summary>
            <param name="bodyParts">Body parts</param>
            <returns>Part with the lowest hp</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GenerateSkills(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotDbSkills)">
            <summary>
                Get a bots skills with randomised progress value between the min and max values
            </summary>
            <param name="botSkills">Skills that should have their progress value randomised</param>
            <returns>Skills</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetCommonSkillsWithRandomisedProgressValue(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Common.MinMax{System.Double}})">
            <summary>
                Randomise the progress value of passed in skills based on the min/max value
            </summary>
            <param name="skills">Skills to randomise</param>
            <returns>Skills with randomised progress values as a collection</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetMasteringSkillsWithRandomisedProgressValue(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Common.MinMax{System.Double}})">
            <summary>
            Randomise the progress value of passed in skills based on the min/max value
            </summary>
            <param name="masteringSkills">Skills to randomise</param>
            <returns>Skills with randomised progress values as a collection</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.AddIdsToBot(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Generate an id+aid for a bot and apply
            </summary>
            <param name="bot">bot to update</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GenerateInventoryId(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Update a profiles profile.Inventory.equipment value with a freshly generated one.
                Update all inventory items that make use of this value too.
            </summary>
            <param name="profile">Profile to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.SetRandomisedGameVersionAndCategory(SPTarkov.Server.Core.Models.Eft.Common.Tables.Info)">
            <summary>
                Randomise a bots game version and account category.
                Chooses from all the game versions (standard, eod etc).
                Chooses account type (default, Sherpa, etc).
            </summary>
            <param name="botInfo">bot info object to update</param>
            <returns>Chosen game version</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.AddDogtagToBot(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Add a side-specific (usec/bear) dogtag item to a bots inventory
            </summary>
            <param name="bot">bot to add dogtag to</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotGenerator.GetDogtagTplByGameVersionAndSide(System.String,System.String)">
            <summary>
                Get a dogtag tpl that matches the bots game version and side
            </summary>
            <param name="side">Usec/Bear</param>
            <param name="gameVersion">edge_of_darkness / standard</param>
            <returns>item tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GenerateInventory(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Add equipment/weapons/loot to bot
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="sessionId">Session id</param>
            <param name="botJsonTemplate">Base json db file for the bot having its loot generated</param>
            <param name="botGenerationDetails">Details related to generating a bot</param>
            <returns>PmcInventory object with equipment/weapons/loot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GenerateInventoryBase">
            <summary>
                Create a pmcInventory object with all the base/generic items needed
            </summary>
            <returns>PmcInventory object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GenerateAndAddEquipmentToBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,SPTarkov.Server.Core.Models.Eft.Common.Tables.Chances,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData)">
            <summary>
                Add equipment to a bot
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="sessionId">Session id</param>
            <param name="templateInventory">bot/x.json data from db</param>
            <param name="wornItemChances">Chances items will be added to bot</param>
            <param name="botInventory">Inventory to add equipment to</param>
            <param name="botGenerationDetails">Details related to generating a bot</param>
            <param name="raidConfig">RadiConfig</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GetPocketPoolByGameEdition(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,System.Boolean)">
            <summary>
                Get RootEquipmentPool id based on game version
            </summary>
            <param name="chosenGameVersion"></param>
            <param name="templateInventory"></param>
            <param name="isPmc">is bot a PMC</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.FilterRigsToThoseWithProtection(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Enums.EquipmentSlots,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}},System.String)">
            <summary>
                Remove non-armored rigs from parameter data
            </summary>
            <param name="templateEquipment">Equipment to filter TacticalVest of</param>
            <param name="botRole">Role of bot vests are being filtered for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.FilterRigsToThoseWithoutProtection(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Enums.EquipmentSlots,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}},System.String,System.Boolean)">
            <summary>
                Remove armored rigs from parameter data
            </summary>
            <param name="templateEquipment">Equipment to filter TacticalVest by</param>
            <param name="botRole">Role of bot vests are being filtered for</param>
            <param name="allowEmptyResult">Should the function return all rigs when 0 unarmored are found</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GenerateEquipment(SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties)">
            <summary>
                Add a piece of equipment with mods to inventory from the provided pools
            </summary>
            <param name="settings">Values to adjust how item is chosen and added to bot</param>
            <returns>true when item added</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GetFilteredDynamicModsForItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId}})">
            <summary>
                Get all possible mods for item and filter down based on equipment blacklist from bot.json config
            </summary>
            <param name="itemTpl">Item mod pool is being retrieved and filtered</param>
            <param name="equipmentBlacklist">Blacklist to filter mod pool with</param>
            <returns>Filtered pool of mods</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GenerateAndAddWeaponsToBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,SPTarkov.Server.Core.Models.Eft.Common.Tables.Chances,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.Generation)">
            <summary>
                Work out what weapons bot should have equipped and add them to bot inventory
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="templateInventory">bot/x.json data from db</param>
            <param name="equipmentChances">Chances bot can have equipment equipped</param>
            <param name="sessionId">Session id</param>
            <param name="botInventory">Inventory to add weapons to</param>
            <param name="botGenerationDetails">Details related to generating a bot</param>
            <param name="itemGenerationLimitsMinMax">Limits for items the bot can have</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.GetDesiredWeaponsForBot(SPTarkov.Server.Core.Models.Eft.Common.Tables.Chances)">
            <summary>
                Calculate if the bot should have weapons in Primary/Secondary/Holster slots
            </summary>
            <param name="equipmentChances">Chances bot has certain equipment</param>
            <returns>What slots bot should have weapons generated for</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotInventoryGenerator.AddWeaponAndMagazinesToInventory(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Generators.Bot.DesiredWeapons,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,SPTarkov.Server.Core.Models.Eft.Common.Tables.Chances,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.Generation)">
            <summary>
                Add weapon + spare mags/ammo to bots inventory
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="sessionId">Session id</param>
            <param name="weaponSlot">Weapon slot being generated</param>
            <param name="templateInventory">bot/x.json data from db</param>
            <param name="botInventory">Inventory to add weapon+mags/ammo to</param>
            <param name="equipmentChances">Chances bot can have equipment equipped</param>
            <param name="botGenerationDetails">Details related to generating a bot</param>
            <param name="itemGenerationWeights"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotLevelGenerator.GenerateBotLevel(SPTarkov.Server.Core.Models.Common.MinMax{System.Int32},SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Return a randomised bot level and exp value
            </summary>
            <param name="levelDetails">Min and max of level for bot</param>
            <param name="botGenerationDetails">Details to help generate a bot</param>
            <param name="bot">Bot the level is being generated for</param>
            <returns>IRandomisedBotLevelResult object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotLevelGenerator.ChooseBotLevel(System.Double,System.Double,System.Int32,System.Double)">
            <summary>
            Choose a randomised level based on inputs
            </summary>
            <param name="min">Lowest level to choose</param>
            <param name="max">Highest level to choose</param>
            <param name="shift">Bias shift to apply to the random number generation</param>
            <param name="number">Number of iterations to use for generating a Gaussian random number</param>
            <returns>Bot level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotLevelGenerator.GetRelativePmcBotLevelRange(SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Common.MinMax{System.Int32},System.Int32)">
            <summary>
                Return the min and max level a PMC can be
            </summary>
            <param name="botGenerationDetails">Details to help generate a bot</param>
            <param name="levelDetails"></param>
            <param name="maxAvailableLevel">Max level allowed</param>
            <returns>A MinMax of the lowest and highest level to generate the bots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GenerateRandomWeapon(SPTarkov.Server.Core.Models.Common.MongoId,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Double})">
            <summary>
                Pick a random weapon based on weightings and generate a functional weapon
            </summary>
            <param name="sessionId">Session identifier</param>
            <param name="equipmentSlot">Primary/secondary/holster</param>
            <param name="botTemplateInventory">e.g. assault.json</param>
            <param name="botGenerationDetails">Details related to generating a bot</param>
            <param name="weaponParentId">Details related to generating a bot</param>
            <param name="modChances"></param>
            <returns>GenerateWeaponResult object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.PickWeightedWeaponTemplateFromPool(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory)">
            <summary>
                Gets a random weighted weapon from a bot's pool of weapons.
            </summary>
            <param name="equipmentSlot">Primary/secondary/holster</param>
            <param name="botTemplateInventory">e.g. assault.json</param>
            <returns>Weapon template</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GenerateWeaponByTpl(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Double},SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Generates a weapon based on the supplied weapon template.
            </summary>
            <param name="sessionId">The session identifier.</param>
            <param name="weaponTpl">Weapon template to generate (use pickWeightedWeaponTplFromPool()).</param>
            <param name="slotName">Slot to fit into, primary/secondary/holster.</param>
            <param name="botTemplateInventory">e.g. assault.json.</param>
            <param name="weaponParentId">Parent ID of the weapon being generated.</param>
            <param name="modChances">Dictionary of item types and % chance weapon will have that mod.</param>
            <param name="botGenerationDetails"></param>
            <returns>GenerateWeaponResult object.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.AddCartridgeToChamber(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
                Insert cartridge(s) into a weapon
                Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc
            </summary>
            <param name="weaponWithModsList">Weapon and mods</param>
            <param name="ammoTemplate">Cartridge to add to weapon</param>
            <param name="chamberSlotIds">Name of slots to create or add ammo to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.ConstructWeaponBaseList(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Create a list with weapon base as the only element and
                add additional properties based on weapon type
            </summary>
            <param name="weaponTemplate">Weapon template to create item with</param>
            <param name="weaponParentId">Weapons parent id</param>
            <param name="equipmentSlot">e.g. primary/secondary/holster</param>
            <param name="weaponItemTemplate">Database template for weapon</param>
            <param name="botRole">For durability values</param>
            <returns>Base weapon item in a list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetPresetWeaponMods(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Get the mods necessary to kit out a weapon to its preset level
            </summary>
            <param name="weaponTemplate">Weapon to find preset for</param>
            <param name="equipmentSlot">The slot the weapon will be placed in</param>
            <param name="weaponParentId">Value used for the parent id</param>
            <param name="itemTemplate">Item template</param>
            <param name="botRole">Bot role</param>
            <returns>List of weapon mods</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.IsWeaponValid(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.String)">
            <summary>
                Checks if all required slots are occupied on a weapon and all its mods.
            </summary>
            <param name="weaponAndChildren">Weapon + mods</param>
            <param name="botRole">Role of bot weapon is for</param>
            <returns>True if valid</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.AddExtraMagazinesToInventory(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponResult,SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.String)">
            <summary>
                Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets.
                Additionally, adds extra bullets to SecuredContainer
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="generatedWeaponResult">Object with properties for generated weapon (weapon mods pool / weapon template / ammo tpl)</param>
            <param name="magWeights">Magazine weights for count to add to inventory</param>
            <param name="inventory">Inventory to add magazines to</param>
            <param name="botRole">The bot type we're generating extra mags for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.AddUbglGrenadesToBotInventory(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponResult,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
                Add Grenades for UBGL to bot's vest and secure container
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="weaponMods">Weapon list with mods</param>
            <param name="generatedWeaponResult">Result of weapon generation</param>
            <param name="inventory">Bot inventory to add grenades to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.AddAmmoToSecureContainer(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
                Add ammo to the secure container.
            </summary>
            <param name="botId">Id of bot we're adding ammo to</param>
            <param name="stackCount">How many stacks of ammo to add.</param>
            <param name="ammoTpl">Ammo type to add.</param>
            <param name="stackSize">Size of the ammo stack to add.</param>
            <param name="inventory">Player inventory.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetMagazineTemplateFromWeaponTemplate(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Get a weapons magazine template from a weapon template.
            </summary>
            <param name="weaponMods">Mods from a weapon template.</param>
            <param name="weaponTemplate">Weapon to get magazine template for.</param>
            <param name="botRole">The bot type we are getting the magazine for.</param>
            <returns>Magazine template string.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetWeightedCompatibleAmmo(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Finds and returns a compatible ammo template based on the bots ammo weightings (x.json/inventory/equipment/ammo)
            </summary>
            <param name="cartridgePool">Dictionary of all cartridges keyed by type e.g. Caliber556x45NATO</param>
            <param name="weaponTemplate">Weapon details from database we want to pick ammo for</param>
            <returns>Ammo template that works with the desired gun</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetCompatibleCartridgesFromWeaponTemplate(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get the cartridge ids from a weapon template that work with the weapon
            </summary>
            <param name="weaponTemplate">Weapon db template to get cartridges for</param>
            <returns>List of cartridge tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetCompatibleCartridgesFromMagazineTemplate(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get the cartridge ids from a weapon's magazine template that work with the weapon
            </summary>
            <param name="weaponTemplate">Weapon db template to get magazine cartridges for</param>
            <returns>Hashset of cartridge tpls</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when weaponTemplate is null.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.GetWeaponCaliber(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a weapons compatible cartridge caliber
            </summary>
            <param name="weaponTemplate">Weapon to look up caliber of</param>
            <returns>Caliber as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.FillExistingMagazines(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Fill existing magazines to full, while replacing their contents with specified ammo
            </summary>
            <param name="weaponMods">Weapon with children</param>
            <param name="magazine">Magazine item</param>
            <param name="cartridgeTemplate">Cartridge to insert into magazine</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.FillUbgl(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add desired ammo template as item to weapon modifications list, placed as child to UBGL.
            </summary>
            <param name="weaponMods">Weapon with children.</param>
            <param name="ubglMod">Underbarrrel grenade launcher item.</param>
            <param name="ubglAmmoTpl">Grenade ammo template.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.AddOrUpdateMagazinesChildWithAmmo(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Add cartridges to a weapons magazine
            </summary>
            <param name="weaponWithMods">Weapon with magazine to amend</param>
            <param name="magazine">Magazine item details we're adding cartridges to</param>
            <param name="chosenAmmoTpl">Cartridge to put into the magazine</param>
            <param name="magazineTemplate">Magazines db template</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.BotWeaponGenerator.FillCamorasWithAmmo(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Fill each Camora with a bullet
            </summary>
            <param name="weaponMods">Weapon mods to find and update camora mod(s) from</param>
            <param name="magazineId">Magazine id to find and add to</param>
            <param name="ammoTpl">Ammo template id to hydrate with</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.Generate(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Update a player profile to include a new player scav profile
            </summary>
            <param name="sessionID">session id to specify what profile is updated</param>
            <returns>profile object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.AddAdditionalLootToPlayerScavContainers(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Enums.EquipmentSlots})">
            <summary>
                Add items picked from `playerscav.lootItemsToAddChancePercent`
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="possibleItemsToAdd">dict of tpl + % chance to be added</param>
            <param name="scavData"></param>
            <param name="containersToAddTo">Possible slotIds to add loot to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.ConstructBotBaseTemplate(System.String)">
            <summary>
                Get a baseBot template
                If the parameter doesnt match "assault", take parts from the loot type and apply to the return bot template
            </summary>
            <param name="botTypeForLoot">bot type to use for inventory/chances</param>
            <returns>IBotType object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.AdjustBotTemplateWithKarmaSpecificSettings(SPTarkov.Server.Core.Models.Spt.Config.KarmaLevel,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType)">
            <summary>
                Adjust equipment/mod/item generation values based on scav karma levels
            </summary>
            <param name="karmaSettings">Values to modify the bot template with</param>
            <param name="baseBotNode">bot template to modify according to karma level settings</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.GetKarmaLimitValuesByKey(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationWeightingItems)">
            <summary>
            Get a bots item type weightings based on the desired key
            </summary>
            <param name="key">e.g. "healing" / "looseLoot"</param>
            <param name="botItemWeights"></param>
            <returns>GenerationData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Bot.PlayerScavGenerator.SetScavCooldownTimer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Set cooldown till scav is playable
                take into account scav cooldown bonus
            </summary>
            <param name="scavData">scav profile</param>
            <param name="pmcData">pmc profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.FenceBaseAssortGenerator.GenerateFenceBaseAssorts">
            <summary>
                Create base fence assorts dynamically and store in memory
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.FenceBaseAssortGenerator.IsAmmoAbovePenetrationLimit(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Check ammo in boxes + loose ammos has a penetration value above the configured value in trader.json / ammoMaxPenLimit
            </summary>
            <param name="rootItemDb"> Ammo box or ammo item from items.db </param>
            <returns>True if penetration value is above limit set in config</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.FenceBaseAssortGenerator.GetAmmoPenetrationPower(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get the penetration power value of an ammo, works with ammo boxes and raw ammos
            </summary>
            <param name="rootItemDb"> Ammo box or ammo item from items.db </param>
            <returns> Penetration power of passed in item, undefined if it doesn't have a power </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.FenceBaseAssortGenerator.AddChildrenToArmorModSlots(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Add soft inserts + armor plates to an armor
            </summary>
            <param name="armor"> Armor item array to add mods into </param>
            <param name="itemDbDetails">Armor items db template</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.FenceBaseAssortGenerator.IsValidFenceItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Check if item is valid for being added to fence assorts
            </summary>
            <param name="item"> Item to check </param>
            <returns> True if valid fence item </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.GetItemSpawnLimitsForBot(System.String)">
            <summary>
            Get a dictionary of item tpls and the number of times they can be spawned on a single bot
            Keyed by bot type
            </summary>
            <param name="botRole">Role of bot to get limits for</param>
            <returns>Item spawn limits</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.GenerateLoot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
                Add loot to bots containers
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="sessionId">Session id</param>
            <param name="botJsonTemplate">Clone of Base JSON db file for the bot having its loot generated</param>
            <param name="botGenerationDetails">Details relating to generating a bot</param>
            <param name="botInventory">Inventory to add loot to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.GetAvailableContainersBotCanStoreItemsIn(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
                Get an array of the containers a bot has on them (pockets/backpack/vest)
            </summary>
            <param name="botInventory">Bot to check</param>
            <returns>Array of available slots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.AddForcedMedicalItemsToPmcSecure(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Force healing items onto bot to ensure they can heal in-raid
            </summary>
            <param name="botInventory">Inventory to add items to</param>
            <param name="botRole">Role of bot (pmcBEAR/pmcUSEC)</param>
            <param name="botId">Bots unique identifier</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.AddLootFromPool(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Enums.EquipmentSlots},System.Double,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.String,SPTarkov.Server.Core.Models.Spt.Bots.ItemSpawnLimitSettings,System.Double,System.Boolean)">
            <summary>
                Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit or space limit is reached
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="pool">Pool of items to pick from with weight</param>
            <param name="equipmentSlots">What equipment slot will the loot items be added to</param>
            <param name="totalItemCount">Max count of items to add</param>
            <param name="inventoryToAddItemsTo">Bot inventory loot will be added to</param>
            <param name="botRole">Role of the bot loot is being generated for (assault/pmcbot)</param>
            <param name="itemSpawnLimits">Item spawn limits the bot must adhere to</param>
            <param name="totalValueLimitRub">Total value of loot allowed in roubles</param>
            <param name="isPmc">Is bot being generated for a pmc</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.CreateWalletLoot(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Adds loot to the specified Wallet
            </summary>
            <param name="walletId"> Wallet to add loot to</param>
            <returns>Generated list of currency stacks with the wallet as their parent</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.AddRequiredChildItemsToParent(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean,System.String)">
            <summary>
                Some items need child items to function, add them to the itemToAddChildrenTo array
            </summary>
            <param name="itemToAddTemplate">Db template of item to check</param>
            <param name="itemToAddChildrenTo">Item to add children to</param>
            <param name="isPmc">Is the item being generated for a pmc (affects money/ammo stack sizes)</param>
            <param name="botRole">role bot has that owns item</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.AddLooseWeaponsToInventorySlot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,SPTarkov.Server.Core.Models.Enums.EquipmentSlots,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,System.Collections.Generic.Dictionary{System.String,System.Double})">
            <summary>
                Add generated weapons to inventory as loot
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="sessionId">Session/Player id</param>
            <param name="botInventory">Inventory to add preset to</param>
            <param name="equipmentSlot">Slot to place the preset in (backpack)</param>
            <param name="botGenerationDetails"></param>
            <param name="templateInventory">Bots template, assault.json</param>
            <param name="modChances">Chances for mods to spawn on weapon</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.ItemHasReachedSpawnLimit(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String,SPTarkov.Server.Core.Models.Spt.Bots.ItemSpawnLimitSettings)">
            <summary>
                Check if an item has reached its bot-specific spawn limit
            </summary>
            <param name="itemTemplate">Item we check to see if its reached spawn limit</param>
            <param name="botRole">Bot type</param>
            <param name="itemSpawnLimits"></param>
            <returns>true if item has reached spawn limit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.RandomiseMoneyStackSize(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Randomise the stack size of a money object, uses different values for pmc or scavs
            </summary>
            <param name="botRole">Role bot has that has money stack</param>
            <param name="itemTemplate">item details from db</param>
            <param name="moneyItem">Money item to randomise</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.RandomiseAmmoStackSize(System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Randomise the size of an ammo stack
            </summary>
            <param name="isPmc">Is ammo on a PMC bot</param>
            <param name="itemTemplate">item details from db</param>
            <param name="ammoItem">Ammo item to randomise</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.GetItemSpawnLimitsForBotType(System.String)">
            <summary>
                Get spawn limits for a specific bot type from bot.json config
                If no limit found for a non pmc bot, fall back to defaults
            </summary>
            <param name="botRole">what role does the bot have</param>
            <returns>Dictionary of tplIds and limit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.BotLootGenerator.GetMatchingIdFromSpawnLimits(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
                Get the parentId or tplId of item inside spawnLimits object if it exists
            </summary>
            <param name="itemTemplate">item we want to look for in spawn limits</param>
            <param name="spawnLimits">Limits to check for item</param>
            <returns>id as string, otherwise undefined</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GenerateLocationLoot(System.String)">
            <summary>
            Generate Loot for provided location ()
            </summary>
            <param name="locationId">Id of location (e.g. bigmap/factory4_day)</param>
            <returns>Collection of spawn points with loot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GenerateStaticContainers(System.String,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}})">
            Create a list of container objects with randomised loot
            <param name="locationId">Location to generate for</param>
            <param name="staticAmmoDist">Static ammo distribution</param>
            <returns>List of container objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.LocationRandomisationEnabled(System.String)">
            <summary>
            Is loot container randomisation enabled for this location + globally
            </summary>
            <param name="locationId">Location to check</param>
            <returns>true = enabled</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetRandomisableContainersOnMap(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticContainerData})">
            <summary>
                Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist
            </summary>
            <param name="staticContainers">All static containers to pick from</param>
            <returns>StaticContainerData collection</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetGuaranteedContainers(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticContainerData})">
            <summary>
                Get containers with 100% spawn rate or have a type on the randomistion ignore list
            </summary>
            <param name="staticContainersOnMap"></param>
            <returns>IStaticContainerData collection</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetContainersByProbability(System.String,SPTarkov.Server.Core.Generators.Loot.ContainerGroupCount)">
            <summary>
                Choose a number of containers based on their probability value to fulfil the desired count in
                containerData.chosenCount
            </summary>
            <param name="groupId">Name of the group the containers are being collected for</param>
            <param name="containerData">Containers and probability values for a groupId</param>
            <returns>List of chosen container Ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetGroupIdToContainerMappings(SPTarkov.Server.Core.Models.Eft.Common.StaticContainer,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticContainerData})">
            <summary>
                Get a mapping of each groupId and the containers in that group + count of containers to spawn on map
            </summary>
            <param name="staticContainerGroupData">Container group values</param>
            <param name="staticContainersOnMap"></param>
            <returns>dictionary keyed by groupId</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.AddLootToContainer(SPTarkov.Server.Core.Models.Eft.Common.StaticContainerData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticForced},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.StaticLootDetails},System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.String)">
            <summary>
                Choose loot to put into a static container based on weighting
                Handle forced items + seasonal item removal when not in season
            </summary>
            <param name="staticContainer">The container itself we will add loot to</param>
            <param name="staticForced">Loot we need to force into the container</param>
            <param name="staticLootDist">staticLoot.json</param>
            <param name="staticAmmoDist">staticAmmo.json</param>
            <param name="locationName">Name of the map to generate static loot for</param>
            <returns>StaticContainerData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetWeightedCountOfContainerItems(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.StaticLootDetails},System.String)">
            <summary>
                Look up a containers itemCountDistribution data and choose an item count based on the found weights
            </summary>
            <param name="containerTypeId">Container to get item count for</param>
            <param name="staticLootDist">staticLoot.json</param>
            <param name="locationName">Map name (to get per-map multiplier for from config)</param>
            <returns>item count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetPossibleLootItemsForContainer(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.StaticLootDetails})">
            <summary>
                Get all possible loot items that can be placed into a container
                Do not add seasonal items if found + current date is inside seasonal event
            </summary>
            <param name="containerTypeId">Container to get possible loot for</param>
            <param name="staticLootDist">staticLoot.json</param>
            <returns>ProbabilityObjectArray of item tpls + probability</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetLooseLootMultiplierForLocation(System.String)">
            <summary>
            Get the loose loot multiplier for this location, or the default if location not found
            </summary>
            <param name="location">Location to get value for</param>
            <returns>multiplier</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetStaticLootMultiplierForLocation(System.String)">
            <summary>
            Get the static loot multiplier for this location, or the default if location not found
            </summary>
            <param name="location">Location to get value for</param>
            <returns>multiplier</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GenerateDynamicLoot(SPTarkov.Server.Core.Models.Eft.Common.LooseLoot,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.String)">
            <summary>
                Create array of loose + forced loot using probability system
            </summary>
            <param name="dynamicLootDist"></param>
            <param name="staticAmmoDist"></param>
            <param name="locationName">Location to generate loot for</param>
            <returns>Array of spawn points with loot in them</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetForcedDynamicLoot(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Spawnpoint},System.String,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}})">
            <summary>
                Force items to be added to loot spawn points, primarily quest items
            </summary>
            <param name="forcedSpawnPoints">Forced loot locations that must be added</param>
            <param name="locationName">Name of map currently having force loot created for</param>
            <param name="staticAmmoDist"></param>
            <returns>Collection of spawn points with forced loot in them</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.CreateDynamicLootItem(SPTarkov.Server.Core.Models.Eft.Common.SptLootItem,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.SptLootItem},System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}})">
            <summary>
                Create array of item (with child items) and return
            </summary>
            <param name="chosenItem"> Item we want to spawn in the position </param>
            <param name="lootItems"> Location loot Template </param>
            <param name="staticAmmoDist"> Ammo distributions </param>
            <returns> ContainerItem object </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.CreateStaticLootItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.String)">
            <summary>
            Hydrate an item with children if necessary
            HIGHLY BRITTLE, LEGACY CODE
            </summary>
            <param name="chosenTpl">Item tpl to add children to</param>
            <param name="staticAmmoDist">Ammo pool</param>
            <param name="parentId"></param>
            <returns>ContainerItem</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GetArmorItems(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
            Get an armor with its children
            </summary>
            <param name="chosenTpl">Armor tpl</param>
            <param name="rootItem">Base armor item</param>
            <param name="items">Pool of items to look for armor in</param>
            <param name="armorDbTemplate">Db template of armor we are looking for</param>
            <returns>Armor + children</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.CreateWeaponRootAndChildren(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}@)">
            <summary>
            Attempt to find default preset for passed in tpl and construct a weapon with children.
            If no preset found, return chosenTpl as Item object
            </summary>
            <param name="chosenTpl">Tpl of item to get preset for</param>
            <param name="cartridgePool">Pool of cartridges to pick from</param>
            <param name="parentId"></param>
            <param name="items">Root item + children</param>
            <returns>Root Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LocationLootGenerator.GenerateStaticMagazineItem(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Given the provided magazine root item, add cartridges to a magazine
            </summary>
            <param name="staticAmmoDist"></param>
            <param name="rootItem">Magazine item</param>
            <param name="itemTemplate">Db item of magazine</param>
            <param name="items">Item pool with magazine</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.CreateRandomLoot(SPTarkov.Server.Core.Models.Spt.Services.LootRequest)">
            <summary>
                Generate a list of items based on configuration options parameter
            </summary>
            <param name="options">parameters to adjust how loot is generated</param>
            <returns>An array of loot items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.CreateForcedLoot(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MinMax{System.Int32}})">
            <summary>
                Generate An array of items
                TODO - handle ammo packs
            </summary>
            <param name="forcedLootToAdd">Dictionary of item tpls with minmax values</param>
            <returns>Array of Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetItemRewardPool(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Boolean,System.Boolean,System.Boolean)">
            <summary>
                Get pool of items from item db that fit passed in param criteria
            </summary>
            <param name="itemTplBlacklist">Prevent these items</param>
            <param name="itemTypeWhitelist">Only allow these items</param>
            <param name="useRewardItemBlacklist">Should item.json reward item config be used</param>
            <param name="allowBossItems">Should boss items be allowed in result</param>
            <param name="blockSeasonalItemsOutOfSeason">Prevent seasonal items appearing outside their defined season</param>
            <returns>results of filtering + blacklist used</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.IsArmorOfDesiredProtectionLevel(SPTarkov.Server.Core.Models.Spt.Tables.Preset,SPTarkov.Server.Core.Models.Spt.Services.LootRequest)">
            <summary>
                Filter armor items by their front plates protection level - top if it's a helmet
            </summary>
            <param name="armor">Armor preset to check</param>
            <param name="options">Loot request options - armor level etc</param>
            <returns>True if item has desired armor level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.InitItemLimitCounter(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Int32})">
            <summary>
                Construct item limit record to hold max and current item count for each item type
            </summary>
            <param name="limits">limits as defined in config</param>
            <returns>record, key: item tplId, value: current/max item count allowed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.FindAndAddRandomItemToLoot(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Generators.Loot.ItemLimit},SPTarkov.Server.Core.Models.Spt.Services.LootRequest,System.Collections.Generic.List{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Find a random item in items.json and add to result array
            </summary>
            <param name="items">items to choose from</param>
            <param name="itemTypeCounts">item limit counts</param>
            <param name="options">item filters</param>
            <param name="result">array to add found item to</param>
            <returns>true if item was valid and added to pool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetRandomisedStackCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Spt.Services.LootRequest)">
            <summary>
                Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values
            </summary>
            <param name="item">item to get stack count of</param>
            <param name="options">loot options</param>
            <returns>stack count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.FindAndAddRandomPresetToLoot(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Spt.Tables.Preset},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Generators.Loot.ItemLimit},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.List{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Find a random item in items.json and add to result list
            </summary>
            <param name="presetPool">Presets to choose from</param>
            <param name="itemTypeCounts">Item limit counts</param>
            <param name="itemBlacklist">Items to skip</param>
            <param name="result">List to add chosen preset to</param>
            <returns>true if preset was valid and added to pool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetSealedWeaponCaseLoot(SPTarkov.Server.Core.Models.Spt.Config.SealedAirdropContainerSettings)">
            <summary>
                Sealed weapon containers have a weapon + associated mods inside them + assortment of other things (food/meds)
            </summary>
            <param name="containerSettings">sealed weapon container settings</param>
            <returns>List of items with children lists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetSealedContainerNonWeaponModRewards(SPTarkov.Server.Core.Models.Spt.Config.SealedAirdropContainerSettings,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get non-weapon mod rewards for a sealed container
            </summary>
            <param name="containerSettings">Sealed weapon container settings</param>
            <param name="weaponDetailsDb">Details for the weapon to reward player</param>
            <returns>List of item with children lists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetSealedContainerWeaponModRewards(SPTarkov.Server.Core.Models.Spt.Config.SealedAirdropContainerSettings,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},SPTarkov.Server.Core.Models.Spt.Tables.Preset)">
            <summary>
                Iterate over the container weaponModRewardLimits settings and create a list of weapon mods to reward player
            </summary>
            <param name="containerSettings">Sealed weapon container settings</param>
            <param name="linkedItemsToWeapon">All items that can be attached/inserted into weapon</param>
            <param name="chosenWeaponPreset">The weapon preset given to player as reward</param>
            <returns>List of item with children lists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.GetRandomLootContainerLoot(SPTarkov.Server.Core.Models.Spt.Config.RewardDetails)">
            <summary>
                Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards
            </summary>
            <param name="rewardContainerDetails"></param>
            <returns>List of item with children lists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.LootGenerator.PickRewardItem(SPTarkov.Server.Core.Models.Spt.Config.RewardDetails)">
            <summary>
                Pick a reward item based on the reward details data
            </summary>
            <param name="rewardContainerDetails"></param>
            <returns>Single tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GeneratePMCPocketLootPool(System.String)">
            <summary>
                Create a List of loot items a PMC can have in their pockets
            </summary>
            <param name="pmcRole">Role of PMC having loot generated (bear or usec)</param>
            <returns>Dictionary of string and number</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GeneratePMCVestLootPool(System.String)">
            <summary>
                Create a dictionary of loot items a PMC can have in their vests with a corresponding weight of being picked to spawn
            </summary>
            <param name="pmcRole">Role of PMC having loot generated (bear or usec)</param>
            <returns>Dictionary item template ids and a weighted chance of being picked</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GeneratePMCBackpackLootPool(System.String)">
            <summary>
                Create a List of loot items a PMC can have in their backpack
            </summary>
            <param name="pmcRole">Role of PMC having loot generated (bear or usec)</param>
            <returns>Dictionary of string and number</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GenerateLootPool(System.String,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},System.Func{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Boolean})">
            <summary>
            Helper method to generate a loot pool of item tpls based on the inputs provided
            </summary>
            <param name="pmcRole">Role of PMC to generate loot for (pmcBEAR or pmcUSEC)</param>
            <param name="allowedItemTypeWhitelist">A list of item types the pmc can spawn</param>
            <param name="itemTplAndParentBlacklist">Item and parent blacklist</param>
            <param name="genericItemCheck">An optional delegate to validate the TemplateItem object being processed</param>
            <returns>Dictionary of items and weights inversely tied to the items price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GetContainerLootBlacklist">
            <summary>
            Get a generic all-container blacklist
            </summary>
            <returns>Hashset of blacklisted items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GetPMCPriceOverrides(System.String,System.String)">
            <summary>
            Convert a PMC role "pmcBEAR/pmcUSEC" into a type and get price overrides if they exist
            </summary>
            <param name="pmcRole">role of PMC to look up</param>
            <param name="slot">Container (e.g. pocket)</param>
            <returns>Dictionary of overrides</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.GetItemPrice(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
            Get an items price from db or override if it exists
            </summary>
            <param name="tpl">Item tpl to get price of</param>
            <param name="pmcPriceOverrides"></param>
            <returns>Rouble price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.ItemFitsInto2By2Slot(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Check if item has a width/height that lets it fit into a 2x2 slot
                1x1 / 1x2 / 2x1 / 2x2
            </summary>
            <param name="item">Item to check size of</param>
            <returns>true if it fits</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Loot.PMCLootGenerator.ItemFitsInto1By2Slot(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Check if item has a width/height that lets it fit into a 1x2 slot
                1x1 / 1x2 / 2x1
            </summary>
            <param name="item">Item to check size of</param>
            <returns>true if it fits</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.PmcWaveGenerator.AddPmcWaveToLocation(System.String,SPTarkov.Server.Core.Models.Eft.Common.BossLocationSpawn)">
            <summary>
                Add a pmc wave to a map
            </summary>
            <param name="locationId"> e.g. factory4_day, bigmap </param>
            <param name="waveToAdd"> Boss wave to add to map </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.PmcWaveGenerator.ApplyWaveChangesToAllMaps">
            <summary>
                Add custom boss and normal waves to all maps found in config/location.json to db
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.PmcWaveGenerator.ApplyWaveChangesToMapByName(System.String)">
            <summary>
                Add custom boss and normal waves to a map found in config/location.json to db by name
            </summary>
            <param name="name"> e.g. factory4_day, bigmap </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.PmcWaveGenerator.ApplyWaveChangesToMap(SPTarkov.Server.Core.Models.Eft.Common.LocationBase)">
            <summary>
                Add custom boss and normal waves to a map found in config/location.json to db by LocationBase
            </summary>
            <param name="location"> Location Object </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairAssortGenerator.GenerateRagfairAssortItems">
            <summary>
                Generate a list of lists (item + children) the flea can sell
            </summary>
            <returns> List of lists (item + children)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairAssortGenerator.GetPresetsToAdd">
            <summary>
                Get presets from globals to add to flea. <br />
                ragfairConfig.dynamic.showDefaultPresetsOnly decides if it's all presets or just defaults
            </summary>
            <returns> List of Preset </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairAssortGenerator.CreateRagfairAssortRootItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Create a base assort item and return it with populated values + 999999 stack count + unlimited count = true
            </summary>
            <param name="tplId"> tplId to add to item </param>
            <param name="id"> id to add to item </param>
            <returns> Hydrated Item object </returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.OfferCounter">
            Internal counter to ensure each offer created has a unique value for its intId property
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateAndAddFleaOffer(SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails)">
            <summary>
                Create a flea offer and store it in the Ragfair server offers array
            </summary>
            <param name="details">Data needed to create a flea offer</param>
            <returns>RagfairOffer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateOffer(SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails)">
            <summary>
                Create an offer object ready to send to ragfairOfferService.addOffer()
            </summary>
            <param name="details">Data needed to create a flea offer</param>
            <returns>RagfairOffer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateUserDataForFleaOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
                Create the user object stored inside each flea offer object
            </summary>
            <param name="userId">User creating the offer</param>
            <param name="isTrader">Is the user creating the offer a trader</param>
            <returns>RagfairOfferUser</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreatePlayerUserDataForFleaOffer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Create the user object stored inside each flea offer object
            </summary>
            <param name="userId">Player id</param>
            <returns>OfferUser object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.ConvertOfferRequirementsIntoRoubles(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Ragfair.OfferRequirement})">
            <summary>
                Calculate the offer price that's listed on the flea listing
            </summary>
            <param name="offerRequirements"> barter requirements for offer </param>
            <returns> rouble cost of offer </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GetAvatarUrl(System.Boolean,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get avatar url from trader table in db
            </summary>
            <param name="isTrader"> Is user we're getting avatar for a trader </param>
            <param name="userId"> Persons id to get avatar of </param>
            <returns> Url of avatar as String </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CalculateRoublePrice(System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Convert a count of currency into roubles
            </summary>
            <param name="currencyCount"> Amount of currency to convert into roubles </param>
            <param name="currencyType"> Type of currency (euro/dollar/rouble) </param>
            <returns> Count of roubles </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GetRating(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a flea trading rating for the passed in user
            </summary>
            <param name="userId"> User to get flea rating of </param>
            <returns> Flea rating value </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GetOfferEndTime(SPTarkov.Server.Core.Models.Enums.OfferCreator,SPTarkov.Server.Core.Models.Common.MongoId,System.Int64)">
            <summary>
                Get number of section until offer should expire
            </summary>
            <param name="creatorType"></param>
            <param name="userId"> ID of the offer owner </param>
            <param name="time"> Time the offer is posted in seconds </param>
            <returns> Number of seconds until offer expires </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GenerateDynamicOffers(System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Create multiple offers for items by using a unique list of items we've generated previously
            </summary>
            <param name="expiredOffers"> Optional, expired offers to regenerate </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateOffersFromAssort(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean,SPTarkov.Server.Core.Models.Spt.Config.Dynamic)">
            <summary>
                Generates offers from an item and it's children on the flea market
            </summary>
            <param name="assortItemWithChildren"> Item with its children to process into offers </param>
            <param name="isExpiredOffer"> Is an expired offer </param>
            <param name="config"> Ragfair dynamic config </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RemoveBannedPlatesFromPreset(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Spt.Config.ArmorPlateBlacklistSettings)">
            <summary>
                Iterate over an items children and look for plates above desired level and remove them
            </summary>
            <param name="presetWithChildren"> Preset to check for plates </param>
            <param name="plateSettings"> Settings </param>
            <returns> True if plates removed </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateSingleOfferForItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Boolean,SPTarkov.Server.Core.Models.Enums.OfferCreator)">
            <summary>
                Create one flea offer for a specific item
            </summary>
            <param name="sellerId"> ID of seller</param>
            <param name="itemWithChildren"> Item to create offer for</param>
            <param name="isPreset"> Is item a weapon preset</param>
            <param name="itemToSellDetails"> Raw DB item details </param>
            <param name="isExpiredOffer">Offer being created is to replace an expired, existing offer</param>
            <param name="offerCreator">What type of entity created this offer</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RemoveArmorPlates(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Run % check to remove removable armor plates from item
            </summary>
            <param name="itemWithChildren">Armor item</param>
            <param name="rootItem">Root armor item</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GenerateFleaOffersForTrader(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Generate trader offers on flea using the traders assort data
            </summary>
            <param name="traderId"> Trader to generate offers for </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RandomiseOfferItemUpdProperties(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Enums.OfferCreator)">
            <summary>
                Get array of an item with its mods + condition properties (e.g. durability) <br />
                Apply randomisation adjustments to condition if item base is found in ragfair.json/dynamic/condition
            </summary>
            <param name="userId"> ID of owner of item </param>
            <param name="itemWithMods"> Item and mods, get condition of first item (only first array item is modified) </param>
            <param name="itemDetails"> DB details of first item</param>
            <param name="offerCreator"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GetDynamicConditionIdForTpl(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the relevant condition id if item tpl matches in ragfair.json/condition
            </summary>
            <param name="tpl"> Item to look for matching condition object</param>
            <returns> Condition ID </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RandomiseItemCondition(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Alter an items condition based on its item base type
            </summary>
            <param name="conditionSettingsId"> Also the parentID of item being altered </param>
            <param name="itemWithMods"> Item to adjust condition details of </param>
            <param name="itemDetails"> DB Item details of first item in list </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RandomiseWeaponDurability(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Double,System.Double)">
            <summary>
                Adjust an items durability/maxDurability value
            </summary>
            <param name="item"> Item (weapon/armor) to adjust </param>
            <param name="itemDbDetails"> Item details from DB </param>
            <param name="maxMultiplier"> Value to multiply max durability by </param>
            <param name="currentMultiplier"> Value to multiply current durability by </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.RandomiseArmorDurabilityValues(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Double,System.Double)">
            <summary>
                Randomise the durability values for an armors plates and soft inserts
            </summary>
            <param name="armorWithMods"> Armor item with its child mods </param>
            <param name="currentMultiplier"> Chosen multiplier to use for current durability value </param>
            <param name="maxMultiplier"> Chosen multiplier to use for max durability value </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.AddMissingConditions(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Add missing conditions to an item if needed. <br />
                Durability for repairable items. <br />
                HpResource for medical items.
            </summary>
            <param name="item"> Item to add conditions to </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateBarterBarterScheme(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Spt.Config.BarterDetails)">
            <summary>
                Create a barter-based barter scheme, if not possible, fall back to making barter scheme currency based
            </summary>
            <param name="offerItems"> Items for sale in offer </param>
            <param name="barterConfig"> Barter config from ragfairConfig.Dynamic.barter </param>
            <returns> Barter scheme </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.GetFleaPricesAsArray">
            <summary>
                Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter`
            </summary>
            <returns> List with tpl/price values </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Ragfair.RagfairOfferGenerator.CreateCurrencyBarterScheme(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean,System.Double)">
            <summary>
                Create a random currency-based barter scheme for an array of items
            </summary>
            <param name="offerWithChildren"> Items on offer </param>
            <param name="isPackOffer"> Is the barter scheme being created for a pack offer </param>
            <param name="multiplier"> What to multiply the resulting price by </param>
            <returns> Barter scheme for offer </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.Generate(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Generates a valid Completion quest
            </summary>
            <param name="sessionId">session Id to generate the quest for</param>
            <param name="pmcLevel">player's level for requested items and reward generation</param>
            <param name="traderId">trader from which the quest will be provided</param>
            <param name="questTypePool"></param>
            <param name="repeatableConfig">
                The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig
                for the requested quest
            </param>
            <returns>quest type format for "Completion" (see assets/database/templates/repeatableQuests.json)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GetItemsToRetrievePool(SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Generate a pool of item tpls the player should reasonably be able to retrieve
            </summary>
            <param name="completionConfig">Completion quest type config</param>
            <param name="itemTplBlacklist">Item tpls to not add to pool</param>
            <returns>Set of item tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GetItemsWithinBudget(System.Int32,System.Collections.Generic.List{System.Double},System.Collections.Generic.List{System.Double},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Filter item pool down to items we can afford on our budget
            </summary>
            <param name="pmcLevel">Level of pmc</param>
            <param name="levelsConfig">Levels config</param>
            <param name="roublesConfig">Roubles config</param>
            <param name="itemsToRetrievePool">Item pool</param>
            <returns>Filtered items and roubles budget</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GetWhitelistedItemSelection(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Int32)">
            <summary>
                Filter item selection to items in the whitelist
            </summary>
            <param name="itemSelection">Item selection to filter</param>
            <param name="pmcLevel">Level of pmc</param>
            <returns>Filtered selection, or original if null or empty</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GetBlacklistedItemSelection(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Int32)">
            <summary>
                Filter item selection based on the blacklist
            </summary>
            <param name="itemSelection">Item selection to filter</param>
            <param name="pmcLevel">Level of pmc</param>
            <returns>Filtered selection, or original if null or empty</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GenerateAvailableForFinish(SPTarkov.Server.Core.Models.Eft.Common.Tables.RepeatableQuest,SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Common.MongoId},System.Double)">
            <summary>
                Generate the available for finish conditions for this quest
            </summary>
            <param name="quest">Quest to add the conditions to</param>
            <param name="completionConfig">Completion config</param>
            <param name="itemSelection">Filtered item selection</param>
            <param name="roublesBudget">Budget in roubles</param>
            <returns>Chosen item template Ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.CompletionQuestGenerator.GenerateCondition(SPTarkov.Server.Core.Models.Common.MongoId,System.Double,SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig)">
            <summary>
                A repeatable quest, besides some more or less static components, exists of reward and condition (see
                assets/database/templates/repeatableQuests.json)
                This is a helper method for GenerateCompletionQuest to create a completion condition (of which a completion quest
                theoretically can have many)
            </summary>
            <param name="itemTpl">Id of the item to request</param>
            <param name="value">Amount of items of this specific type to request</param>
            <param name="completionConfig">Completion config from quest.json</param>
            <returns>object of "Completion"-condition</returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator._bodyPartsToClient">
            <summary>
            Body parts to present to the client as opposed to the body part information in quest data.
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.MaxDistDifficulty">
            <summary>
            MaxDistDifficulty is defined by 2, this could be a tuning parameter if we don't like the reward generation
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.Generate(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Generate a randomised Elimination quest
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcLevel">Player's level for requested items and reward generation</param>
            <param name="traderId">Trader from which the quest will be provided</param>
            <param name="questTypePool">Pools for quests (used to avoid redundant quests)</param>
            <param name="repeatableConfig">
                The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig
                for the requested quest
            </param>
            <returns>Object of quest type format for "Elimination" (see assets/database/templates/repeatableQuests.json)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GetBotTypeToEliminate(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool)">
            <summary>
                Gets and filters a bot type for this elimination quest
            </summary>
            <param name="generationData">Generation data</param>
            <param name="questTypePool">Quest pool to generate from</param>
            <returns>target, filtered targets config</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.TryGetLocationKey(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData,SPTarkov.Server.Core.Models.Spt.Repeatable.EliminationPool,System.String,System.Collections.Generic.List{System.String},System.String@)">
            <summary>
                Try and get a location key to generate this quest for
            </summary>
            <param name="generationData">Generation data</param>
            <param name="targetPool">Target pool</param>
            <param name="botTypeToEliminate">Bot type to eliminate</param>
            <param name="locations">locations to choose from</param>
            <param name="locationKey">selected location key</param>
            <returns>True if location key selected, false otherwise</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateBodyParts(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData,System.Double@)">
            <summary>
                Selects body parts to add to the condition. Modifies the bodyPartDifficulty based on selection.
            </summary>
            <param name="generationData">Generation data</param>
            <param name="bodyPartDifficulty">BodyPartDifficulty to modify based on selection</param>
            <returns>List of selected body parts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.IsDistanceRequirementAllowed(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData,System.String,System.String,SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray{System.String,SPTarkov.Server.Core.Models.Spt.Config.BossInfo})">
            <summary>
                Determines if we're allowed to generate a distance requirement for this location.
            Takes into account location whitelist, random chance, and boss location modifiers
            </summary>
            <param name="generationData">Generation data</param>
            <param name="botTypeToEliminate">Bot type to eliminate</param>
            <param name="locationKey">Location key to check</param>
            <param name="targetsConfig">Targets config</param>
            <returns>True if allowed, false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateDistanceRequirement(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData)">
            <summary>
                Generate a distance requirement and difficulty modifier
            </summary>
            <param name="generationData">Generation data</param>
            <returns>distance and difficulty modifier</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateWeaponCategoryRequirement(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData,System.Nullable{System.Int32})">
            <summary>
                Generate a weapon category requirement
            </summary>
            <param name="generationData">Generation data</param>
            <param name="distance">Distance to generate it for, pass null if not required</param>
            <returns>Weapon requirement category selected</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateSpecificWeaponRequirement(SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.EliminationQuestGenerationData)">
            <summary>
                Generate a specific weapon to use, only use this if we aren't already using a weapon category requirement
            </summary>
            <param name="generationData">Generation data</param>
            <returns>Weapon to use</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GetEliminationKillCount(System.String,SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray{System.String,SPTarkov.Server.Core.Models.Spt.Config.BossInfo},SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig)">
            <summary>
                Get a number of kills needed to complete elimination quest
            </summary>
            <param name="targetKey"> Target type desired e.g. anyPmc/bossBully/Savage </param>
            <param name="targetsConfig"> Config of the target </param>
            <param name="eliminationConfig"> Config of the elimination </param>
            <returns> Number of AI to kill </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateEliminationLocation(System.Collections.Generic.List{System.String})">
            <summary>
                A repeatable quest, besides some more or less static components, exists of reward and condition (see
                assets/database/templates/repeatableQuests.json)
                This is a helper method for GenerateEliminationQuest to create a location condition.
            </summary>
            <param name="location">the location on which to fulfill the elimination quest</param>
            <returns>Elimination-location-subcondition object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.EliminationQuestGenerator.GenerateEliminationCondition(System.String,System.Collections.Generic.List{System.String},System.Nullable{System.Double},System.String,System.String)">
            <summary>
                Create kill condition for an elimination quest
            </summary>
            <param name="target">Bot type target of elimination quest e.g. "AnyPmc", "Savage"</param>
            <param name="targetedBodyParts">Body parts player must hit</param>
            <param name="distance">Distance from which to kill (currently only >= supported)</param>
            <param name="allowedWeapon">What weapon must be used - undefined = any</param>
            <param name="allowedWeaponCategory">What category of weapon must be used - undefined = any</param>
            <returns>EliminationCondition object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.Generate(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Generates a valid Exploration quest
            </summary>
            <param name="sessionId">session id for the quest</param>
            <param name="pmcLevel">player's level for reward generation</param>
            <param name="traderId">trader from which the quest will be provided</param>
            <param name="questTypePool">Pools for quests (used to avoid redundant quests)</param>
            <param name="repeatableConfig">
                The configuration for the repeatably kind (daily, weekly) as configured in QuestConfig
                for the requested quest
            </param>
            <returns>object of quest type format for "Exploration" (see assets/database/templates/repeatableQuests.json)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.TryGetLocationInfo(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig,SPTarkov.Server.Core.Models.Spt.Repeatable.QuestTypePool,SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.LocationInfo@)">
            <summary>
                Draws a location from the exploration location pool
            </summary>
            <param name="repeatableConfig"></param>
            <param name="explorationConfig"></param>
            <param name="pool">Pool to draw from</param>
            <param name="locationInfo">Location chosen</param>
            <returns>True if location selected, false if no locations remain</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.GetNumberOfExits(SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig,System.Boolean)">
            <summary>
                Get the number of times the player needs to exit
            </summary>
            <param name="explorationConfig">Exploration config</param>
            <param name="requiresSpecificExtract">Is this a specific extract</param>
            <returns>Number of exit requirements</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.GetLocationExitsForSide(System.String,SPTarkov.Server.Core.Models.Enums.PlayerGroup)">
            <summary>
                Filter a maps exits to just those for the desired side
            </summary>
            <param name="locationKey">Map id (e.g. factory4_day)</param>
            <param name="playerGroup">Pmc/Scav</param>
            <returns>List of Exit objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.TryGenerateAvailableForFinish(SPTarkov.Server.Core.Models.Eft.Common.Tables.RepeatableQuest,SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.LocationInfo)">
            <summary>
                Generate the initial available for finish condition
            </summary>
            <param name="quest">quest to add the condition to</param>
            <param name="locationInfo">LocationInfo object with the generated data</param>
            <returns>True if generated, false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.TryGenerateSpecificExtractRequirement(SPTarkov.Server.Core.Models.Eft.Common.Tables.RepeatableQuest,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig,SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.LocationInfo)">
            <summary>
                Adds a specific extract requirement to the quest
            </summary>
            <param name="quest">quest to add it to</param>
            <param name="repeatableConfig">repeatable config</param>
            <param name="explorationConfig">exploration config</param>
            <param name="locationInfo">LocationInfo object with the generated data</param>
            <returns>True if generated, false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.ExplorationQuestGenerator.GenerateQuestConditionCounter(SPTarkov.Server.Core.Models.Eft.Common.Exit)">
            <summary>
                Exploration repeatable quests can specify a required extraction point.
                This method creates the according object which will be appended to the conditions list
            </summary>
            <param name="exit">The exit name to generate the condition for</param>
            <returns>Exit condition</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GenerateReward(System.Int32,System.Double,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Spt.Config.BaseQuestConfig,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Generate the reward for a mission. A reward can consist of: <br />
                - Experience <br />
                - Money <br />
                - GP coins <br />
                - Weapon preset <br />
                - Items <br />
                - Trader Reputation <br />
                - Skill level experience <br />
                <br />
                The reward is dependent on the player level as given by the wiki. The exact mapping of pmcLevel to <br />
                experience / money / items / trader reputation can be defined in QuestConfig.js <br />
                <br />
                There's also a random variation of the reward the spread of which can be also defined in the config <br />
                <br />
                Additionally, a scaling factor w.r.t. quest difficulty going from 0.2...1 can be used
            </summary>
            <param name="pmcLevel"> Level of player reward is being generated for </param>
            <param name="difficulty"> Reward scaling factor from 0.2 to 1 </param>
            <param name="traderId"> Trader reward will be given by </param>
            <param name="repeatableConfig"> Config for quest type (daily, weekly) </param>
            <param name="eliminationConfig"> Base Quest config</param>
            <param name="rewardTplBlacklist"> Optional: list of tpls to NOT use when picking a reward </param>
            <returns> QuestRewards </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GetRewardableItemsFromPoolWithinBudget(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},System.Int32,System.Double,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Get an array of items + stack size to give to player as reward that fit inside a rouble budget.
            </summary>
            <param name="itemPool"> All possible items to choose rewards from </param>
            <param name="maxItemCount"> Total number of items to reward </param>
            <param name="itemRewardBudget"> Rouble budget all item rewards must fit in </param>
            <param name="repeatableConfig"> Config for quest type </param>
            <returns> Dictionary of items and stack size</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.CalculateAmmoStackSizeThatFitsBudget(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Double,System.Int32)">
            <summary>
                Get a count of cartridges that fits the rouble budget amount provided.<br />
                e.g. how many M80s for 50,000 roubles.
            </summary>
            <param name="itemSelected"> Cartridge template </param>
            <param name="roublesBudget"> Rouble budget </param>
            <param name="rewardNumItems"> Count of rewarded items </param>
            <returns> Count that fits budget (min 1) </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GetRandomisedRewardItemStackSizeByPrice(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a randomised number a reward items stack size should be based on its handbook price
            </summary>
            <param name="item"> Reward item to get stack size for </param>
            <returns> Matching stack size for the passed in items price </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.ChooseRewardItemsWithinBudget(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Select a number of items that have a collective value of the passed in parameter
            </summary>
            <param name="repeatableConfig"> Config </param>
            <param name="roublesBudget"> Total value of items to return </param>
            <param name="traderId"> ID of the trader who will give player reward </param>
            <returns> List of reward items that fit budget </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.FilterRewardPoolWithinBudget(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},System.Double,System.Double)">
            <summary>
                Filters a list of reward Items within a budget.
            </summary>
            <param name="rewardItems"> List of reward items to filter </param>
            <param name="roublesBudget"> The budget remaining for rewards </param>
            <param name="minPrice"> The minimum priced item to include </param>
            <returns> List of Items </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GetRandomWeaponPresetWithinBudget(System.Double,System.Int32)">
            <summary>
                Choose a random Weapon preset that fits inside a rouble amount limit
            </summary>
            <param name="roublesBudget"> Budget in roubles </param>
            <param name="rewardIndex"> Index of the reward </param>
            <returns> Dictionary of the reward and it's price, can return null. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GeneratePresetReward(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,System.Int32,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean)">
            <summary>
                Helper to create a reward item structured as required by the client
            </summary>
            <param name="tpl"> ItemId of the rewarded item </param>
            <param name="count"> Amount of items to give </param>
            <param name="index"> All rewards will be appended to a list, for unknown reasons the client wants the index </param>
            <param name="preset"> Optional list of preset items </param>
            <param name="foundInRaid"> If generated Item is found in raid, default True </param>
            <returns> Object of "Reward"-item-type </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GenerateItemReward(SPTarkov.Server.Core.Models.Common.MongoId,System.Double,System.Int32,System.Boolean)">
            <summary>
                Helper to create a reward item structured as required by the client
            </summary>
            <param name="tpl"> ItemId of the rewarded item </param>
            <param name="count"> Amount of items to give</param>
            <param name="index"> All rewards will be appended to a list, for unknown reasons the client wants the index</param>
            <param name="foundInRaid"> If generated Item is found in raid, default True </param>
            <returns> Object of "Reward"-item-type </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.GetRewardableItems(SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Picks rewardable items from items.json <br />
                This means they must: <br />
                - Fit into the inventory <br />
                - Shouldn't be keys <br />
                - Have a price greater than 0
            </summary>
            <param name="repeatableQuestConfig"> Config </param>
            <param name="traderId"> ID of trader who will give reward to player </param>
            <returns> List of rewardable items [[_tpl, itemTemplate],...] </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.RepeatableQuests.RepeatableQuestRewardGenerator.IsValidRewardItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Checks if an id is a valid item. Valid meaning that it's an item that may be a reward
                or content of bot loot. Items that are tested as valid may be in a player backpack or stash.
            </summary>
            <param name="tpl"> Template id of item to check</param>
            <param name="itemTplBlacklist"> Specific item tpls to ignore </param>
            <param name="itemTypeBlacklist"> Specific item base types to ignore </param>
            <param name="itemBaseWhitelist"> Default null, specific trader item base classes</param>
            <returns> True if item is valid reward </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.Generate(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Create an array of rewards that will be given to the player upon completing their scav case build
            </summary>
            <param name="recipeId">recipe of the scav case craft</param>
            <returns>Product array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.CacheDbItems">
            <summary>
                Get all db items that are not blacklisted in scavcase config or global blacklist
                Store in class field
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.PickRandomRewards(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},SPTarkov.Server.Core.Models.Spt.Hideout.RewardCountAndPriceDetails,System.String)">
            <summary>
                Pick a number of items to be rewards, the count is defined by the values in `itemFilters` param
            </summary>
            <param name="items">item pool to pick rewards from</param>
            <param name="itemFilters">how the rewards should be filtered down (by item count)</param>
            <param name="rarity">Rarity of reward</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.RewardShouldBeMoney">
            <summary>
                Choose if money should be a reward based on the moneyRewardChancePercent config chance in scavCaseConfig
            </summary>
            <returns>true if reward should be money</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.RewardShouldBeAmmo">
            <summary>
                Choose if ammo should be a reward based on the ammoRewardChancePercent config chance in scavCaseConfig
            </summary>
            <returns>true if reward should be ammo</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetRandomMoney">
            <summary>
                Choose from rouble/dollar/euro at random
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetRandomAmmo(System.String)">
            <summary>
                Get a random ammo from items.json that is not in the ammo blacklist AND inside the price range defined in scavcase.json config
            </summary>
            <param name="rarity">The rarity desired ammo reward is for</param>
            <returns>random ammo item from items.json</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.RandomiseContainerItemRewards(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},System.String)">
            <summary>
                Take all the rewards picked create the Product object array ready to return to calling code.
                Also add a stack count to ammo and money
            </summary>
            <param name="rewardItems">items to convert</param>
            <param name="rarity">The rarity desired ammo reward is for</param>
            <returns>Product array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetFilteredItemsByPrice(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},SPTarkov.Server.Core.Models.Spt.Hideout.RewardCountAndPriceDetails)">
            <summary>
            </summary>
            <param name="dbItems">all items from the items.json</param>
            <param name="itemFilters">controls how the dbItems will be filtered and returned (handbook price)</param>
            <returns>filtered dbItems array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetScavCaseRewardCountsAndPrices(SPTarkov.Server.Core.Models.Eft.Hideout.ScavRecipe)">
            <summary>
                Gathers the reward min and max count params for each reward quality level from config and scavcase.json into a single object
            </summary>
            <param name="scavCaseDetails">production.json/scavRecipes object</param>
            <returns>ScavCaseRewardCountsAndPrices object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetRandomAmountRewardForScavCase(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Randomises the size of ammo and money stacks
            </summary>
            <param name="itemToCalculate">ammo or money item</param>
            <param name="rarity">rarity (common/rare/superrare)</param>
            <returns>value to set stack count to</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetRandomisedAmmoRewardStackSize(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Randomises the size of ammo stacks
            </summary>
            <param name="itemToCalculate">ammo or money item</param>
            <returns>value to set stack count to</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.ScavCaseRewardGenerator.GetRandomisedMoneyRewardStackSize(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Randomises the size of money stacks
            </summary>
            <param name="itemToCalculate">ammo or money item</param>
            <param name="rarity">rarity (common/rare/superrare)</param>
            <returns>value to set stack count to</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weapons.Implementations.ExternalInventoryMagGen.GetRandomExternalMagazineForInternalMagazineGun(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Get a random compatible external magazine for a weapon, exclude internal magazines from possible pool
            </summary>
            <param name="weaponTpl"> Weapon to get mag for </param>
            <param name="magazineBlacklist"> Blacklisted magazines </param>
            <returns> Item of chosen magazine </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.GenerateWeather(SPTarkov.Server.Core.Models.Enums.Season,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Spt.Config.WeatherPreset,System.Double}@,System.Nullable{System.Int64},System.Nullable{SPTarkov.Server.Core.Models.Spt.Config.WeatherPreset})">
            <summary>
            Generate a weather object to send to client
            </summary>
            <param name="currentSeason">What season is weather being generated for</param>
            <param name="presetWeights">Weather preset weights to pick from (values will be altered when generating more than 1)</param>
            <param name="timestamp">Optional - Current time in millisecond ticks</param>
            <param name="previousPreset">Optional -What weather preset was last generated</param>
            <returns>A generated <see cref="N:SPTarkov.Server.Core.Generators.Weather"/> object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.GetWeatherPresetWeightsBySeason(SPTarkov.Server.Core.Models.Enums.Season)">
            <summary>
            Gets weather property weights for the provided season
            </summary>
            <param name="currentSeason">Desired season to get weights for</param>
            <returns>A dictionary of weather preset weights</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.GenerateWeatherByPreset(SPTarkov.Server.Core.Models.Spt.Config.WeatherPreset,System.Nullable{System.Int64})">
            <summary>
            Creates a <see cref="N:SPTarkov.Server.Core.Generators.Weather"/> object that adheres to the chosen preset
            </summary>
            <param name="chosenPreset">The weather preset chosen to generate</param>
            <param name="timestamp">OPTIONAL - generate the weather object with a specific time instead of now</param>
            <returns>A generated <see cref="N:SPTarkov.Server.Core.Generators.Weather"/> object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.GetWeatherWeightsByPreset(SPTarkov.Server.Core.Models.Spt.Config.WeatherPreset)">
            <summary>
            Get the weather preset weights based on passed in preset, get defaults if preset not found in config
            </summary>
            <param name="weatherPreset">Desired preset</param>
            <returns>PresetWeights</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.GetRaidTemperature(SPTarkov.Server.Core.Models.Spt.Config.PresetWeights,System.Int64)">
            <summary>
                Choose a temperature for the raid based on time of day
            </summary>
            <param name="weather"> What season Tarkov is currently in </param>
            <param name="inRaidTimestamp"> What time is the raid running at </param>
            <returns> Timestamp </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Generators.Weather.WeatherGenerator.SetCurrentDateTime(SPTarkov.Server.Core.Models.Eft.Weather.Weather,System.Nullable{System.Int64})">
            <summary>
                Set Weather date/time/timestamp values to now
            </summary>
            <param name="weather"> Object to update </param>
            <param name="timestamp"> Optional, timestamp used </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotDifficultyHelper.GetBotDifficultySettings(System.String,System.String,SPTarkov.Server.Core.Models.Spt.Tables.BotTable)">
            <summary>
                Get difficulty settings for desired bot type, if not found use assault bot types
            </summary>
            <param name="type">bot type to retrieve difficulty of</param>
            <param name="desiredDifficulty">difficulty to get settings for (easy/normal etc)</param>
            <param name="botTableDb">bots from database</param>
            <returns>Difficulty object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotDifficultyHelper.GetDifficultySettings(System.String,System.String)">
            <summary>
                Get difficulty settings for a PMC
            </summary>
            <param name="type">"usec" / "bear"</param>
            <param name="difficulty">what difficulty to retrieve</param>
            <returns>Difficulty object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotDifficultyHelper.ConvertBotDifficultyDropdownToBotDifficulty(System.String)">
            <summary>
                Translate chosen value from pre-raid difficulty dropdown into bot difficulty value
            </summary>
            <param name="dropDownDifficulty">Dropdown difficulty value to convert</param>
            <returns>bot difficulty</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotDifficultyHelper.ChooseRandomDifficulty">
            <summary>
                Choose a random difficulty from - easy/normal/hard/impossible
            </summary>
            <returns>random difficulty</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GenerateExtraPropertiesForItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String,System.Boolean)">
            <summary>
                Adds properties to an item
                e.g. Repairable / HasHinge / Foldable / MaxDurability
            </summary>
            <param name="itemTemplate">Item extra properties are being generated for</param>
            <param name="botRole">Used by weapons to randomize the durability values. Null for non-equipped items</param>
            <param name="forceStackObjectsCount">Force property on item</param>
            <returns>Item Upd object with extra properties</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GetRandomizedResourceValue(System.Double,SPTarkov.Server.Core.Models.Spt.Config.RandomisedResourceValues)">
            <summary>
                Choose a random value between a min and max for a resource to be
            </summary>
            <param name="maxResource">Max resource value of medical items</param>
            <param name="randomizationValues">Value provided from config</param>
            <returns>Randomized value from maxHpResource</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GetBotEquipmentSettingFromConfig(System.String)">
            <summary>
            Get equipment specific flags (e.g. nvg settings) for a particular bot type
            </summary>
            <param name="botRole">bot to get settings for</param>
            <returns>Equipment filter settings</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GenerateWeaponRepairableProperties(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Create a repairable object for a weapon that containers durability + max durability properties
            </summary>
            <param name="itemTemplate">weapon object being generated for</param>
            <param name="botRole">type of bot being generated for</param>
            <returns>Repairable object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GenerateArmorRepairableProperties(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Create a repairable object for an armor that containers durability + max durability properties
            </summary>
            <param name="itemTemplate">weapon object being generated for</param>
            <param name="botRole">type of bot being generated for</param>
            <returns>Repairable object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.IsItemIncompatibleWithCurrentItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Can item be added to another item without conflict
            </summary>
            <param name="itemsEquipped">Items to check compatibilities with</param>
            <param name="tplToCheck">Tpl of the item to check for incompatibilities</param>
            <param name="equipmentSlot">Slot the item will be placed into</param>
            <returns>false if no incompatibilities, also has incompatibility reason</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.GetBotEquipmentRole(System.String)">
            <summary>
                Convert a bots role to the equipment role used in config/bot.json
            </summary>
            <param name="botRole">Role to convert</param>
            <returns>Equipment role (e.g. pmc / assault / bossTagilla)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotGeneratorHelper.AddItemWithChildrenToEquipmentSlot(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Enums.EquipmentSlots},SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
                Adds an item with all its children into specified equipmentSlots, wherever it fits
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="equipmentSlots">Slot to try and add item+children into</param>
            <param name="rootItemId">Root item id to use as mod items parentId</param>
            <param name="rootItemTplId">Root items tpl id</param>
            <param name="itemWithChildren">Item to add</param>
            <param name="inventory">Inventory to add item+children into</param>
            <returns>ItemAddedResult result object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetBotTemplate(System.String)">
            <summary>
                Get a template object for the specified botRole from bots.types db
            </summary>
            <param name="role">botRole to get template for</param>
            <returns>BotType object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.IsBotPmc(System.String)">
            <summary>
                Is the passed in bot role a PMC (USEC/Bear/PMC)
            </summary>
            <param name="botRole">bot role to check</param>
            <returns>true if is pmc</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetBotRandomizationDetails(System.Int32,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters)">
            <summary>
                Get randomization settings for bot from config/bot.json
            </summary>
            <param name="botLevel">level of bot</param>
            <param name="botEquipConfig">bot equipment json</param>
            <returns>RandomisationDetails</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetPmcSideByRole(System.String)">
            <summary>
                Get the corresponding side when pmcBEAR or pmcUSEC is passed in
            </summary>
            <param name="botRole">role to get side for</param>
            <returns>side (usec/bear)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetPmcSideByRole(SPTarkov.Server.Core.Models.Eft.Common.WildSpawnType)">
            <summary>
                Get the corresponding side when pmcBEAR or pmcUSEC is passed in
            </summary>
            <param name="botRole">role to get side for</param>
            <returns>side (usec/bear)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetRandomizedPmcSide">
            <summary>
                Get a randomized PMC side based on bot config value 'isUsec'
            </summary>
            <returns>pmc side as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetPmcNicknameOfMaxLength(System.Int32,System.String)">
            <summary>
                Get a PMC name that fits the desired length
            </summary>
            <param name="maxLength">Max length of name, inclusive</param>
            <param name="side">OPTIONAL - what side PMC to get name from (usec/bear)</param>
            <returns>name of PMC</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetPmcFactionBySide(System.String)">
            <summary>
            Choose a faction based on the passed in side (usec/bear) or choose randomly if not provided
            </summary>
            <param name="side">usec/bear</param>
            <returns>usec/bear</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GetOrAddEligiblePmcNamesFromCache(System.String,System.Int32)">
            <summary>
            Cache Pmcs against their length and faction, return values that match requirement
            </summary>
            <param name="chosenFaction">bear/usec</param>
            <param name="maxLength">Max length of name</param>
            <returns>Collection of names</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotHelper.GatherPmcNamesOfLength(System.String,System.Int32)">
            <summary>
            Get names that match the side and length defined in parameters
            </summary>
            <param name="chosenFaction">bear/usec</param>
            <param name="maxLength">max length of name to return</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotWeaponGeneratorHelper.GetRandomizedBulletCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get a randomized number of bullets for a specific magazine
            </summary>
            <param name="magCounts">Weights of magazines</param>
            <param name="magTemplate">Magazine to generate bullet count for</param>
            <returns>Bullet count number</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotWeaponGeneratorHelper.GetRandomizedMagazineCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData)">
            <summary>
                Get a randomized count of magazines
            </summary>
            <param name="magCounts">Min and max value returned value can be between</param>
            <returns>Numerical value of magazine count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotWeaponGeneratorHelper.MagazineIsCylinderRelated(System.String)">
            <summary>
                Is this magazine cylinder related (revolvers and grenade launchers)
            </summary>
            <param name="magazineParentName">The name of the magazines parent</param>
            <returns>True if it is cylinder related</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotWeaponGeneratorHelper.CreateMagazineWithAmmo(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Create a magazine using the parameters given
            </summary>
            <param name="magazineTpl">Tpl of the magazine to create</param>
            <param name="ammoTpl">Ammo to add to magazine</param>
            <param name="magTemplate">Template object of magazine</param>
            <returns>Item array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.BotWeaponGeneratorHelper.AddAmmoIntoEquipmentSlots(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Enums.EquipmentSlots})">
            <summary>
                Add a specific number of cartridges to a bots inventory (defaults to vest and pockets)
            </summary>
            <param name="botId">Bots unique identifier</param>
            <param name="ammoTpl">Ammo tpl to add to vest/pockets</param>
            <param name="cartridgeCount">Number of cartridges to add to vest/pockets</param>
            <param name="inventory">Bot inventory to add cartridges to</param>
            <param name="equipmentSlotsToAddTo">What equipment slots should bullets be added into</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.DurabilityLimitsHelper.GetRandomizedMaxWeaponDurability(System.String)">
            <summary>
                Get max durability for a weapon based on bot role
            </summary>
            <param name="botRole">Role of bot to get max durability for</param>
            <returns>Max durability of weapon</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.DurabilityLimitsHelper.GetRandomizedMaxArmorDurability(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String)">
            <summary>
                Get max durability value for armor based on bot role
            </summary>
            <param name="itemTemplate">Item to get max durability for</param>
            <param name="botRole">Role of bot to get max durability for</param>
            <returns>max durability</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.DurabilityLimitsHelper.GetRandomizedWeaponDurability(System.String,System.Double)">
            <summary>
                Get randomised current weapon durability by bot role
            </summary>
            <param name="botRole">Role of bot to get current durability for</param>
            <param name="maxDurability">Max durability of weapon</param>
            <returns>Current weapon durability</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.DurabilityLimitsHelper.GetDurabilityRole(System.String)">
            <summary>
                Convert a bots role into a durability role used for looking up durability values with
            </summary>
            <param name="botRole">Role to convert</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Bot.DurabilityLimitsHelper.GetRandomizedArmorDurability(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.String,System.Double)">
            <summary>
                Get randomised current armor durability by bot role
            </summary>
            <param name="itemTemplate">Unused - Item to get current durability of</param>
            <param name="botRole">Role of bot to get current durability for</param>
            <param name="maxDurability">Max durability of armor</param>
            <returns>Current armor durability</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.PaymentHelper.IsMoneyTpl(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Is the passed in tpl money (also checks custom currencies in inventoryConfig.customMoneyTpls)
            </summary>
            <param name="tpl">Item Tpl to check</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.ApplyRewards(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward},System.String,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            Apply the given rewards to the passed in profile.
            </summary>
            <param name="rewards">List of rewards to apply.</param>
            <param name="rewardSource">The source of the rewards (Achievement, quest).</param>
            <param name="fullProfile">The full profile to apply the rewards to.</param>
            <param name="profileData">The profile data (could be the scav profile).</param>
            <param name="rewardSourceId">The quest or achievement ID, used for finding production unlocks.</param>
            <param name="questResponse">Response to quest completion when a production is unlocked.</param>
            <returns>List of items that is the reward.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.RewardIsForGameEdition(SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward,System.String)">
            <summary>
            Does the provided reward have a game version requirement to be given and does it match.
            </summary>
            <param name="reward">Reward to check.</param>
            <param name="gameVersion">Version of game to check reward against.</param>
            <returns>True if it has requirement, false if it doesn't pass check.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.FindAndAddHideoutProductionIdToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile
            also update client response recipeUnlocked array with craft id
            </summary>
            <param name="pmcData">Player profile.</param>
            <param name="craftUnlockReward">Reward with craft unlock details.</param>
            <param name="questId">Quest or achievement ID with craft unlock reward.</param>
            <param name="sessionId">Session id.</param>
            <param name="response">Response to send back to client.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.GetRewardProductionMatch(SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Find hideout craft for the specified reward.
            </summary>
            <param name="craftUnlockReward">Reward with craft unlock details.</param>
            <param name="questId">Quest or achievement ID with craft unlock reward.</param>
            <returns>List of matching HideoutProduction objects.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.GetMatchingProductions(SPTarkov.Server.Core.Models.Enums.Hideout.HideoutAreas,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward)">
            <summary>
            Find a hideout craft (production) based on input parameter data
            </summary>
            <param name="desiredHideoutAreaType">Hideout area craft is for</param>
            <param name="questId">Id of quest with production unlock</param>
            <param name="craftUnlockReward">Reward given by quest</param>
            <returns>Hideout crafts that match input parameters</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.GetRewardItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward},System.String)">
            <summary>
            Gets a flat list of reward items from the given rewards for the specified game version.
            </summary>
            <param name="rewards">Array of rewards to get the items from.</param>
            <param name="gameVersion">The game version of the profile.</param>
            <returns>Array of items with the correct maxStack.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.ProcessReward(SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward)">
            <summary>
            Take reward item and set FiR status, fix stack sizes, and fix mod Ids.
            </summary>
            <param name="reward">Reward item to fix.</param>
            <returns>Fixed rewards.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.GenerateArmorRewardChildSlots(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward)">
            <summary>
            Add missing mod items to an armor reward.
            </summary>
            <param name="originalRewardRootItem">Original armor reward item from IReward.items object.</param>
            <param name="reward">Armor reward.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.RewardHelper.AddAchievementToProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Add an achievement to player profile and handle any rewards for the achievement.
            Triggered from a quest, or another achievement.
            </summary>
            <param name="fullProfile">Profile to add achievement to.</param>
            <param name="achievementId">Id of achievement to add.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.TradeHelper.BuyItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessBuyTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Buy item from flea or trader
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="buyRequestData">data from client</param>
            <param name="sessionId">Session id</param>
            <param name="foundInRaid">Should item be found in raid</param>
            <param name="output">Item event router response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.TradeHelper.SellItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessSellTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Sell item to trader
            </summary>
            <param name="profileWithItemsToSell">Profile to remove items from</param>
            <param name="profileToReceiveMoney">Profile to accept the money for selling item</param>
            <param name="sellRequest">Request data</param>
            <param name="sessionId">Session id</param>
            <param name="output">Item event router response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Commerce.TradeHelper.CheckPurchaseIsWithinTraderItemLimit(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                Traders allow a limited number of purchases per refresh cycle (default 60 mins)
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Profile making the purchase</param>
            <param name="traderId">Trader assort is purchased from</param>
            <param name="assortBeingPurchased">the item from trader being bought</param>
            <param name="assortId">Id of assort being purchased</param>
            <param name="count">How many of the item are being bought</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Dialogue.Commando.SptCommands.GiveCommand.GiveSptCommand.GetGlobalsLocale(System.String)">
            <summary>
                Return the desired locale, falls back to english if it cannot be found
            </summary>
            <param name="desiredLocale">Locale code, e.g. "fr" for french</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Dialogue.Commando.SptCommands.GiveCommand.GiveSptCommand.IsItemAllowed(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
            A "simple" function that checks if an item is supposed to be given to a player or not
            </summary>
            <param name="templateItem">Template item to check</param>
            <returns>true if its obtainable</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Dialogue.Commando.SptCommands.GiveCommand.StringSimilarity.Match(System.String,System.String,System.Int32,System.Boolean)">
            <summary>
            Converted from: https://github.com/stephenjjbrown/string-similarity-js/blob/master/src/string-similarity.ts
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Helpers.Dialogue.Commando.SptCommands.ProfileCommand.ProfileSptCommand._commandRegex">
            <summary>
            Regex to account for all these cases
            spt profile level 20
            spt profile skill metabolism 10
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Dialogue.IDialogueChatBot.HandleMessage(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Dialog.SendMessageRequest)">
            <summary>
            Handles messages for the chatbot. If a message can't be handled, <see cref="F:System.String.Empty"/> should be used.
            </summary>
            <returns>The response of the bot, or <see cref="F:System.String.Empty"/> if the request could not be handled.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.CounterTrackerHelper.AddDataToTrack(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Int32})">
            <summary>
            Add dictionary of keys and their matching limits to track
            </summary>
            <param name="maxCounts">Values to store</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.CounterTrackerHelper.IncrementCount(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
            Increment the counter for passed in key, get back value determining if max value passed
            </summary>
            <param name="key"></param>
            <param name="countToIncrementBy"></param>
            <returns>True = above max count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.SetInventory(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean,System.Boolean)">
            <summary>
                Update a player's inventory post-raid.
                Remove equipped items from pre-raid.
                Add new items found in raid to profile.
                Store insurance items in profile.
            </summary>
            <param name="sessionId">Session id</param>
            <param name="serverProfile">Profile to update</param>
            <param name="postRaidProfile">Profile returned by client after a raid</param>
            <param name="isSurvived">Indicates if the player survived the raid</param>
            <param name="isTransfer">Indicates if it is a transfer operation</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.RemoveFiRStatusFromItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Remove FiR status from items.
            </summary>
            <param name="items">Items to process</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.AddItemsToInventory(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Add items from one parameter into another.
            </summary>
            <param name="itemsToAdd">Items we want to add</param>
            <param name="serverInventoryItems">Location to add items to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.DeleteInventory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Clear PMC inventory of all items except those that are exempt.
                Used post-raid to remove items after death.
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="sessionId">Player/Session id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.GetInventoryItemsLostOnDeath(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get a list of items from a profile that will be lost on death.
            </summary>
            <param name="pmcProfile">Profile to get items from</param>
            <returns>List of items lost on death</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.InRaidHelper.IsItemKeptAfterDeath(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Does the provided item's slotId mean it's kept on the player after death?
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="itemToCheck">Item to check should be kept</param>
            <returns>true if item is kept after death</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.WeatherHelper.GetInRaidTime">
            <summary>
                Assumes current time
                Get the current in-raid time - does not include an accurate date, only time
            </summary>
            <returns>Date object of current in-raid time</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.WeatherHelper.GetInRaidTime(System.Int64)">
            <summary>
                Get the current in-raid time - does not include an accurate date, only time
            </summary>
            <param name="timestamp">Fixed timestamp</param>
            <returns>Date object of current in-raid time</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.WeatherHelper.IsNightTime(SPTarkov.Server.Core.Models.Enums.DateTimeEnum,System.String)">
            <summary>
                Is the current raid at nighttime
            </summary>
            <param name="timeVariant">PASS OR CURR (from raid settings)</param>
            <param name="mapLocation">map name. E.g. factory4_day</param>
            <returns>True when nighttime</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.InRaid.WeatherHelper.IsHourAtNightTime(System.Int32)">
            <summary>
                Is the provided hour at night, nighttime is after 2100 and before 0600
            </summary>
            <param name="currentHour">Hour to check</param>
            <returns>True if nighttime hour</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.HasItemWithTpl(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
            Does the provided pool of items contain the desired item
            </summary>
            <param name="itemPool">Item collection to check</param>
            <param name="itemTpl">Item to look for</param>
            <param name="slotId">OPTIONAL - slotId of desired item</param>
            <returns>True if pool contains item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemFromPoolByTpl(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
            Get the first item from provided pool with the desired tpl
            </summary>
            <param name="itemPool">Item collection to search</param>
            <param name="tpl">Item tpl to find</param>
            <param name="slotId">OPTIONAL - slotId of desired item</param>
            <returns>Item or null if no item found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsSameItems(System.Collections.Generic.ICollection{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.ICollection{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.ISet{System.String})">
            <summary>
            This method will compare two items (with all its children) and see if they are equivalent
            This method will NOT compare IDs on the items
            </summary>
            <param name="item1">first item with all its children to compare</param>
            <param name="item2">second item with all its children to compare</param>
            <param name="compareUpdProperties">Upd properties to compare between the items</param>
            <returns>true if they are the same</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GenerateUpdForItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
            Helper method to generate an Upd based on a template
            </summary>
            <param name="itemTemplate">The item template to generate an Upd for</param>
            <returns>An Upd with all the default properties set</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsValidItem(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.ISet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Checks if a tpl is a valid item. Valid meaning that it's an item that can be stored in stash
            <br/><br/>
            Valid means:
            <br/>
            Not quest item
            <br/>
            'Item' type
            <br/>
            Not on the invalid base types array
            <br/>
            Price above 0 roubles
            <br/>
            </summary>
            <param name="tpl">Template id to check</param>
            <param name="invalidBaseTypes">OPTIONAL - Base types deemed invalid</param>
            <returns>true for items that may be in player possession and not quest items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsValidItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.ISet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Checks if a tpl is a valid item. Valid meaning that it's an item that can be stored in stash
            Valid means:
            Not quest item
            'Item' type
            Not on the invalid base types array
            Price above 0 roubles
            </summary>
            <param name="item">Item from DB to check</param>
            <param name="invalidBaseTypes">OPTIONAL - Base types deemed invalid</param>
            <returns>true for items that may be in player possession and not quest items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsOfBaseclass(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Check if the tpl / template id provided is a descendant of the baseclass
            </summary>
            <param name="tpl">Item template id to check</param>
            <param name="baseClassTpl">Baseclass to check for</param>
            <returns>is the tpl a descendant</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsOfBaseclasses(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Check if item has any of the supplied base classes
            </summary>
            <param name="tpl">Item to check base classes of</param>
            <param name="baseClassTpls">Base classes to check for</param>
            <returns>True if any supplied base classes match</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ArmorItemCanHoldMods(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does the provided item have the chance to require soft armor inserts
            Only applies to helmets/vest/armors
            Not all headgear needs them
            </summary>
            <param name="itemTpl">Tpl to check</param>
            <returns>Does item have the possibility ot need soft inserts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ArmorItemHasRemovableOrSoftInsertSlots(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does the provided item tpl need soft/removable inserts to function
            </summary>
            <param name="itemTpl">Armor item</param>
            <returns>True if item needs some kind of insert</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ArmorItemHasRemovablePlateSlots(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does the provided tpl have ability to hold removable plate items
            </summary>
            <param name="itemTpl">Item tpl to check for plate support</param>
            <returns>True when armor can hold plates</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ItemRequiresSoftInserts(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does the provided item tpl require soft inserts to become a valid armor item
            </summary>
            <param name="itemTpl">Item tpl to check</param>
            <returns>True if it needs armor inserts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetSoftInsertSlotIds">
            <summary>
            Get all soft insert slot ids
            </summary>
            <returns>A List of soft insert ids (e.g. soft_armor_back, helmet_top)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsSoftInsertId(System.String)">
            <summary>
                Does the passed in slot id match a soft insert id
            </summary>
            <param name="slotId">slotId value to check</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemAndChildrenPrice(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Returns the items total price based on the handbook or as a fallback from the prices.json if the item is not
            found in the handbook. If the price can't be found at all return 0
            </summary>
            <param name="tpls">item tpls to look up the price of</param>
            <returns>Total price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Returns the item price based on the handbook or as a fallback from the prices.json if the item is not
                found in the handbook. If the price can't be found at all return 0
            </summary>
            <param name="tpl">Item to look price up of</param>
            <returns>Price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemMaxPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Returns the item price based on the handbook or as a fallback from the prices.json if the item is not
                found in the handbook. If the price can't be found at all return 0
            </summary>
            <param name="tpl">Item to look price up of</param>
            <returns>Price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetStaticItemPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the static (handbook) price in roubles for an item by tpl
            </summary>
            <param name="tpl">Items tpl id to look up price</param>
            <returns>Price in roubles (0 if not found)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetDynamicItemPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the dynamic (flea) price in roubles for an item by tpl
            </summary>
            <param name="tpl">Items tpl id to look up price</param>
            <returns>Price in roubles (undefined if not found)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemsClone">
            <summary>
                Get cloned copy of all item data from items.json
            </summary>
            <returns>List of TemplateItem objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItem(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Gets item data from items.json
            </summary>
            <param name="itemTpl">template id to look up</param>
            <returns>KvP, key = bool, value = template item object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ItemHasSlots(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Checks if the item has slots
            </summary>
            <param name="itemTpl">Template id of the item to check</param>
            <returns>True if the item has slots</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsItemInDb(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Checks if the item is in the database
            </summary>
            <param name="itemTpl">Id of the item to check</param>
            <returns>true if the item is in the database</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemQualityModifierForItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean)">
            <summary>
            Calculate the average quality of an item and its children
            </summary>
            <param name="itemWithChildren">An offers item to process</param>
            <param name="skipArmorItemsWithoutDurability">Skip over armor items without durability</param>
            <returns>% quality modifier between 0 and 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemQualityModifier(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Boolean)">
            <summary>
            Get normalized value (0-1) based on item condition
            Will return -1 for base armor items with 0 durability
            </summary>
            <param name="item">Item to check</param>
            <param name="skipArmorItemsWithoutDurability">return -1 for armor items that have max durability of 0</param>
            <returns>Number between 0 and 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetRepairableItemQualityValue(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Eft.Common.Tables.UpdRepairable,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Get a quality value based on a repairable item's current state between current and max durability
            </summary>
            <param name="itemDetails">Db details for item we want quality value for</param>
            <param name="repairable">Repairable properties</param>
            <param name="item">Item quality value is for</param>
            <returns>number between 0 and 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.FindAndReturnChildrenByAssort(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Find children of the item in a given assort (weapons parts for example, need recursive loop function)
            </summary>
            <param name="itemIdToFind">Template id of item to check for</param>
            <param name="assort">List of items to check in</param>
            <returns>List of children of requested item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.FindAndReturnChildrenByAssort(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
            Find children of the item in a given assort, using a lookup built by
            <see cref="M:SPTarkov.Server.Core.Extensions.ItemExtensions.CreateParentIdLookupCache(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item@,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})"/>. Build the lookup once when looking up many
            items in the same assort, as building it costs a pass over the whole assort.
            </summary>
            <param name="itemIdToFind">Template id of item to check for</param>
            <param name="lookup">Assort items keyed by their parentId</param>
            <returns>List of children of requested item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsDogtag(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Checks if the passed template id is a dog tag.
            </summary>
            <param name="tpl">Template id to check.</param>
            <returns>True if it is a dogtag.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsItemTplStackable(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Checks if the passed item can be stacked.
            </summary>
            <param name="tpl">Item to check.</param>
            <returns>True if it can be stacked.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.SplitStack(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Splits the item stack if it exceeds its items StackMaxSize property into child items of the passed parent.
            </summary>
            <param name="itemToSplit">Item to split into smaller stacks.</param>
            <returns>List of root item + children.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.SplitStackIntoSeparateItems(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Turns items like money into separate stacks that adhere to max stack size.
            </summary>
            <param name="itemToSplit">Item to split into smaller stacks.</param>
            <returns>List of separate item stacks.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.FindBarterItems(System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Finds Barter items from a list of items.
            </summary>
            <param name="by">Tpl or id.</param>
            <param name="itemsToSearch">Array of items to iterate over.</param>
            <param name="desiredBarterItemIds">List of desired barter item ids.</param>
            <returns>List of Item objects.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ReplaceProfileInventoryIds(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.InsuredItem})">
            <summary>
               Regenerate all GUIDs with new IDs, except special item types (e.g. quest, sorting table, etc.)
            This function mutates the bot inventory list.
            </summary>
            <param name="inventory">Inventory to replace Ids in</param>
            <param name="insuredItems">Insured items that should not have their IDs replaced</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ReplaceIDs(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.InsuredItem})">
            <summary>
                Regenerate all GUIDs with new IDs, except special item types (e.g. quest, sorting table, etc.) This
                function will not mutate the original items list, but will return a new list with new GUIDs.
            </summary>
            <param name="originalItems">Items to adjust the IDs of</param>
            <param name="pmcData">Player profile</param>
            <param name="insuredItems">Insured items that should not have their IDs replaced</param>
            <returns>Items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.TryReplaceFastPanelId(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Trys to find the original id in FastPanel, if it exists set it to the new value
            </summary>
            <param name="fastPanel">Fast panel dictionary to check</param>
            <param name="originalId">Original id of the item</param>
            <param name="newId">New Id of the item</param>
            <returns>True if replaced, otherwise false</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.SetFoundInRaid(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Mark the passed in list of items as found in raid.
                Modifies passed in items
                Will not flag ammo or currency as FiR
            </summary>
            <param name="items">The list of items to mark as FiR</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.SetFoundInRaid(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Boolean)">
            <summary>
                Mark the passed in list of items as found in raid.
                Modifies passed in items
            </summary>
            <param name="item">The list of items to mark as FiR</param>
            <param name="excludeCurrency">Skip adding FiR status to currency items</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsRaidModdable(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Checks to see if the item is *actually* moddable in-raid. Checks include the items existence in the database, the
                parent items existence in the database, the existence (and value) of the items `RaidModdable` property, and that
                the parents slot-required property exists, matches that of the item, and its value.
            </summary>
            <param name="item">The item to be checked</param>
            <param name="parent">The parent of the item to be checked</param>
            <returns>True if the item is actually moddable, false if it is not, and null if the check cannot be performed.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetAttachmentMainParent(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Retrieves the main parent item for a given attachment item.
                This method traverses up the hierarchy of items starting from a given `itemId`, until it finds the main parent
                item that is not an attached attachment itself. In other words, if you pass it an item id of a suppressor, it
                will traverse up the muzzle brake, barrel, upper receiver, and return the gun that the suppressor is ultimately
                attached to, even if that gun is located within multiple containers.
                It's important to note that traversal is expensive, so this method requires that you pass it a Map of the items
                to traverse, where the keys are the item IDs and the values are the corresponding Item objects. This alleviates
                some of the performance concerns, as it allows for quick lookups of items by ID.
            </summary>
            <param name="itemId">The unique identifier of the item for which to find the main parent.</param>
            <param name="itemsMap">A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup.</param>
            <returns>The Item object representing the top-most parent of the given item, or null if no such parent exists.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsAttachmentAttached(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Determines if an item is an attachment that is currently attached to its parent item
            </summary>
            <param name="item">The item to check</param>
            <returns>true if the item is attached attachment, otherwise false</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetEquipmentParent(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
             <summary>
             Retrieves the equipment parent item for a given item.
            
             This method traverses up the hierarchy of items starting from a given `itemId`, until it finds the equipment
             parent item. In other words, if you pass it an item id of a suppressor, it will traverse up the muzzle brake,
             barrel, upper receiver, gun, nested backpack, and finally return the backpack Item that is equipped.
            
             It's important to note that traversal is expensive, so this method requires that you pass it a Dictionary of the items
             to traverse, where the keys are the item IDs and the values are the corresponding Item objects. This alleviates
             some of the performance concerns, as it allows for quick lookups of items by ID.
             </summary>
             <param name="itemId">The unique identifier of the item for which to find the equipment parent.</param>
             <param name="itemsMap">A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup.</param>
             <returns>The Item object representing the equipment parent of the given item, or `null` if no such parent exists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemSize(System.Collections.Generic.ICollection{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get the inventory size of an item
            </summary>
            <param name="items">Item with children</param>
            <param name="rootItemId">The base items root id</param>
            <returns>ItemSize object (width and height)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.AddCartridgesToAmmoBox(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Add cartridges to the ammo box with correct max stack sizes
            </summary>
            <param name="ammoBox">Box to add cartridges to</param>
            <param name="ammoBoxDetails">Item template from items db</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.FillMagazineWithRandomCartridge(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.String,System.Double,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
            Add child items (cartridges) to a magazine
            </summary>
            <param name="magazine">Magazine to add child items to</param>
            <param name="magTemplate">Db template of magazine</param>
            <param name="staticAmmoDist">Cartridge distribution</param>
            <param name="caliber">Caliber of cartridge to add to magazine</param>
            <param name="minSizePercent">OPTIONAL - % the magazine must be filled to</param>
            <param name="defaultCartridgeTpl">OPTIONAL -Cartridge to use when none found</param>
            <param name="weapon">OPTIONAL -Weapon the magazine will be used for (if passed in uses Chamber as whitelist)</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.FillMagazineWithCartridge(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                Add child items to a magazine of a specific cartridge
            </summary>
            <param name="magazineWithChildCartridges">Magazine to add child items to</param>
            <param name="magTemplate">Db template of magazine</param>
            <param name="cartridgeTpl">Cartridge to add to magazine</param>
            <param name="minSizeMultiplier">% the magazine must be filled to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetRandomValidCaliber(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Choose a random bullet type from the list of possible a magazine has
            </summary>
            <param name="magTemplate">Magazine template from Db</param>
            <returns>Tpl of cartridge</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.DrawAmmoTpl(System.String,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.StaticAmmoDetails}},System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.ISet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Chose a randomly weighted cartridge that fits
            </summary>
            <param name="caliber">Desired caliber</param>
            <param name="staticAmmoDist">Cartridges and their weights</param>
            <param name="fallbackCartridgeTpl">If a cartridge cannot be found in the above staticAmmoDist param, use this instead</param>
            <param name="cartridgeWhitelist">OPTIONAL whitelist for cartridges</param>
            <returns>Tpl of cartridge</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.CreateCartridges(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,System.Double)">
            <summary>
                Create a basic cartridge object
            </summary>
            <param name="parentId">container cartridges will be placed in</param>
            <param name="ammoTpl">Cartridge to insert</param>
            <param name="stackCount">Count of cartridges inside parent</param>
            <param name="location">Location inside parent (e.g. 0, 1)</param>
            <returns>Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemName(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the name of an item from the locale file using the item tpl
            </summary>
            <param name="itemTpl">Tpl of item to get name of</param>
            <returns>Full name, short name if not found</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetItemTplsOfBaseType(System.String)">
            <summary>
                Get all item tpls with a desired base type
            </summary>
            <param name="desiredBaseType">Item base type wanted</param>
            <returns>Array of tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.AddChildSlotItems(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.Dictionary{System.String,System.Double},System.Boolean)">
            <summary>
                Add child slot items to an item, chooses random child item if multiple choices exist
            </summary>
            <param name="itemToAdd">array with single object (root item)</param>
            <param name="itemToAddTemplate">Db template for root item</param>
            <param name="modSpawnChanceDict">Optional dictionary of mod name + % chance mod will be included in item (e.g. front_plate: 100)</param>
            <param name="requiredOnly">Only add required mods</param>
            <returns>Item with children</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetCompatibleTplFromArray(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Get a compatible tpl from the array provided where it is not found in the provided incompatible mod tpls parameter
            </summary>
            <param name="tplPool">Tpls to randomly choose from</param>
            <param name="tplBlacklist">Incompatible tpls to disallow</param>
            <returns>Chosen tpl or undefined</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.IsRemovablePlateSlot(System.String)">
            <summary>
                Is the provided item._props.Slots._name property a plate slot
            </summary>
            <param name="slotName">Name of slot (_name) of Items Slot array</param>
            <returns>True if it is a slot that holds a removable plate</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetRemovablePlateSlotIds">
            <summary>
            Get a list of slot names that hold removable plates
            </summary>
            <returns>Array of slot ids (e.g. front_plate)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.ReparentItemAndChildren(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Generate new unique ids for child items while preserving hierarchy
            </summary>
            <param name="rootItem">Base/primary item</param>
            <param name="itemWithChildren">Primary item + children of primary item</param>
            <returns>Item array with updated IDs</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.AddUpdObjectToItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.String)">
            <summary>
            Add a blank upd object to passed in item if it does not exist already
            </summary>
            <param name="item">item to add upd to</param>
            <param name="warningMessageWhenMissing">text to write to log when upd object was not found</param>
            <returns>True when upd object was added</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetContainerMapping(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a 2D grid of a container's item slots
            </summary>
            <param name="containerTpl">Tpl id of the container</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.ItemHelper.GetBlankContainerMap(System.Int32,System.Int32)">
            <summary>
                Get a blank two-dimensional representation of a container
            </summary>
            <param name="horizontalSizeX">Width of container (columns)</param>
            <param name="verticalSizeY">Height of container (rows)</param>
            <returns>Two-dimensional representation of container</returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Helpers.Items.PresetHelper.PresetCache">
            <summary>
                Preset cache - key = item tpl, value = preset ids
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultPresets">
            <summary>
            Get weapon and armor default presets, keyed to preset id NOT item tpl
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultPresetsByTplKey">
            <summary>
            Get weapon and armor default presets, keyed to root items tpl
            </summary>
            <returns>dictionary of presets keyed by the root items tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultWeaponPresets">
            <summary>
            Get default weapon presets
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultEquipmentPresets">
            <summary>
            Get default equipment presets
            </summary>
            <returns>Dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.IsPreset(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is the provided id a preset id
            </summary>
            <param name="id">Value to check</param>
            <returns>True = preset exists for this id</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.IsPresetBaseClass(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Checks to see if the preset is of the given base class
            </summary>
            <param name="id">id of the preset</param>
            <param name="baseClass">BaseClasses enum to check against</param>
            <returns>True if the preset is of the given base class, false otherwise</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.HasPreset(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does the provided tpl have a preset
            </summary>
            <param name="templateId">Tpl id to check</param>
            <returns>True if preset exists for tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetAllPresets">
            <summary>
            Get all presets from globals db
            </summary>
            <returns>List</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetPresets(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a clone of a tpls presets
            </summary>
            <param name="templateId">Tpl to get presets for</param>
            <returns>List</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultPreset(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a cloned default preset for passed in item tpl
            </summary>
            <param name="templateId">Items tpl to get preset for</param>
            <returns>null if no default preset, otherwise Preset</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetBaseItemTpl(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the presets root item tpl
            </summary>
            <param name="presetId">Preset id to look up</param>
            <returns>tpl mongoid</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Items.PresetHelper.GetDefaultPresetOrItemPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Return the price of the preset for the given item tpl, or for the tpl itself if no preset exists
            </summary>
            <param name="tpl">The item template to get the price of</param>
            <returns>The price of the given item preset, or base item if no preset exists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.DialogueHelper.GetMessagePreview(SPTarkov.Server.Core.Models.Eft.Profile.Dialogue)">
            <summary>
                Get the preview contents of the last message in a dialogue.
            </summary>
            <param name="dialogue"></param>
            <returns>MessagePreview</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.DialogueHelper.GetMessageItemContents(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the item contents for a particular message.
            </summary>
            <param name="messageId"></param>
            <param name="sessionId">Session/player id</param>
            <param name="itemId">Item being moved to inventory</param>
            <returns>Collection of items from message</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.DialogueHelper.GetDialogsForProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the dialogs dictionary for a profile, create if it doesn't exist
            </summary>
            <param name="sessionId">Session/player id</param>
            <returns>Dialog dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.DialogueHelper.GetDialogueFromProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Find and return a profiles dialogue by id
            </summary>
            <param name="profileId">Profile to look in</param>
            <param name="dialogueId">Dialog to return</param>
            <returns>Dialogue</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.HydrateHandbookCache">
            <summary>
                Create an in-memory cache of all items with associated handbook price in handbookPriceCache class
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.GetTemplatePrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get price from internal cache, if cache empty look up price directly in handbook (expensive)
                If no values found, return 0
            </summary>
            <param name="tpl">Item tpl to look up price for</param>
            <returns>price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.GetTemplatePriceForItems(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Sum price of supplied items with handbook prices
            </summary>
            <param name="items">Items to Sum</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.TemplatesWithParent(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all items in template with the given parent category
            </summary>
            <param name="parentId"></param>
            <returns>string array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.IsCategory(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does category exist in handbook cache
            </summary>
            <param name="category"></param>
            <returns>true if exists in cache</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.ChildrenCategories(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all items associated with a categories parent
            </summary>
            <param name="categoryParent"></param>
            <returns>string array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.InRoubles(System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Convert non-roubles into roubles
            </summary>
            <param name="nonRoubleCurrencyCount">Currency count to convert</param>
            <param name="currencyTypeFrom">What current currency is</param>
            <returns>Count in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HandbookHelper.FromRoubles(System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Convert roubles into another currency
            </summary>
            <param name="roubleCurrencyCount">roubles to convert</param>
            <param name="currencyTypeTo">Currency to convert roubles into</param>
            <returns>currency count in desired type</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HealthHelper.ApplyHealthChangesToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseHealth,System.Boolean)">
            <summary>
                Update player profile vitality values with changes from client request object
            </summary>
            <param name="pmcProfileToUpdate">Player profile to apply changes to</param>
            <param name="healthChanges">Changes to apply </param>
            <param name="isDead">Is the player dead</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HealthHelper.PlayerHadGearOnRaidStart(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory)">
            <summary>
            Did the player start raid with gear, if false, they are 'cursed'
            </summary>
            <param name="inventory">Players inventory at start of raid</param>
            <returns>True = they had enough gear to not be classed as 'cursed'</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HealthHelper.ModifyProfileHealthProperties(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BodyPartHealth},System.Collections.Generic.HashSet{System.String},System.Boolean,System.Boolean)">
            <summary>
                Apply Health values to profile
            </summary>
            <param name="profileToAdjust">Player profile on server</param>
            <param name="bodyPartChanges">Changes to apply</param>
            <param name="effectsToSkip"></param>
            <param name="isDead"></param>
            <param name="playerWasCursed">Did player enter raid with no equipment</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HealthHelper.AdjustProfileHydrationEnergyTemperature(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseHealth)">
            <summary>
                Adjust hydration/energy/temperate
            </summary>
            <param name="profileToUpdate">Profile to update</param>
            <param name="healthChanges"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.RegisterProduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutSingleProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add production to profiles' Hideout.Production array
            </summary>
            <param name="pmcData">Profile to add production to</param>
            <param name="productionRequest">Production request</param>
            <param name="sessionId">Session id</param>
            <returns>client response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.RegisterProduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutContinuousProductionStartRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add production to profiles' Hideout.Production array
            </summary>
            <param name="pmcData">Profile to add production to</param>
            <param name="productionRequest">Production request</param>
            <param name="sessionId">Session id</param>
            <returns>client response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.InitProduction(SPTarkov.Server.Core.Models.Common.MongoId,System.Double,System.Nullable{System.Boolean})">
            <summary>
                This convenience function initializes new Production Object
                with all the constants.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.ApplyPlayerUpgradesBonus(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Bonus)">
            <summary>
                Apply bonus to player profile given after completing hideout upgrades
            </summary>
            <param name="profileData">Profile to add bonus to</param>
            <param name="bonus">Bonus to add to profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdatePlayerHideout(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Process a players hideout, update areas that use resources + increment production timers
            </summary>
            <param name="sessionId">Session id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetHideoutProperties(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get various properties that will be passed to hideout update-related functions
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>Hideout-related values</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.DoesWaterCollectorHaveFilter(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea)">
            <summary>
                Does a water collection hideout area have a water filter installed
            </summary>
            <param name="waterCollector">Hideout area to check</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateProductionTimers(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProperties)">
            <summary>
                Iterate over productions and update their progress timers
            </summary>
            <param name="pmcData">Profile to check for productions and update</param>
            <param name="hideoutProperties">Hideout properties</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateWaterCollectorProductionTimer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProperties)">
            <summary>
                Update progress timer for water collector
            </summary>
            <param name="pmcData">profile to update</param>
            <param name="productionId">id of water collection production to update</param>
            <param name="hideoutProperties">Hideout properties</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateProductionProgress(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProperties)">
            <summary>
                Update a productions progress value based on the amount of time that has passed
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="prodId">Production id being crafted</param>
            <param name="recipe">Recipe data being crafted</param>
            <param name="hideoutProperties"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.DoesProgressMatchProductionTime(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if a productions progress value matches its corresponding recipes production time value
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="prodId">Production id</param>
            <returns>progress matches productionTime from recipe</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateScavCaseProductionTimer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Update progress timer for scav case
            </summary>
            <param name="pmcData">Profile to update</param>
            <param name="productionId">Id of scav case production to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateAreasWithResources(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProperties)">
            <summary>
                Iterate over hideout areas that use resources (fuel/filters etc) and update associated values
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Profile to update areas of</param>
            <param name="hideoutProperties">hideout properties</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetAreasWithResourceUse(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea})">
            <summary>
            Get Hideout areas that consume resources
            </summary>
            <param name="hideoutAreas">Areas to filter</param>
            <returns>Collection of hideout areas</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateFuel(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean)">
            <summary>
                Decrease fuel from generator slots based on amount of time since last time this occurred
            </summary>
            <param name="generatorArea">Hideout area</param>
            <param name="pmcData">Player profile</param>
            <param name="isGeneratorOn">Is the generator turned on since last update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetAdjustedCraftTimeWithSkills(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
                Get craft time and make adjustments to account for dev profile + crafting skill level
            </summary>
            <param name="pmcData">Player profile making craft</param>
            <param name="recipeId">Recipe being crafted</param>
            <param name="applyHideoutManagementBonus">Should the hideout management bonus be applied to the calculation</param>
            <returns>Items craft time with bonuses subtracted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateWaterFilters(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea,SPTarkov.Server.Core.Models.Eft.Common.Tables.Production,System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Adjust water filter objects resourceValue or delete when they reach 0 resource
            </summary>
            <param name="waterFilterArea">Water filter area to update</param>
            <param name="production">Production object</param>
            <param name="isGeneratorOn">Is generator enabled</param>
            <param name="pmcData">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetTimeAdjustedWaterFilterDrainRate(System.Int64,System.Double,System.Double,System.Double)">
            <summary>
                Get an adjusted water filter drain rate based on time elapsed since last run,
                handle edge case when craft time has gone on longer than total production time
            </summary>
            <param name="secondsSinceServerTick">Time passed</param>
            <param name="totalProductionTime">Total time collecting water</param>
            <param name="productionProgress">How far water collector has progressed</param>
            <param name="baseFilterDrainRate">Base drain rate</param>
            <returns>Drain rate (adjusted)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetWaterFilterDrainRate(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the water filter drain rate based on hideout bonuses player has
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>Drain rate</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetTotalProductionTimeSeconds(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the production time in seconds for the desired production
            </summary>
            <param name="prodId">Id, e.g. Water collector id</param>
            <returns>Seconds to produce item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetAreaUpdObject(System.Double,System.Nullable{System.Double},System.Double,System.Boolean)">
            <summary>
                Create an upd object using passed in parameters
            </summary>
            <param name="stackCount"></param>
            <param name="resourceValue"></param>
            <param name="resourceUnitsConsumed"></param>
            <param name="isFoundInRaid"></param>
            <returns>Upd</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.UpdateBitcoinFarm(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Production,System.Nullable{System.Int32},System.Boolean)">
            <summary>
            Increment bitcoin farm progress
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="btcProduction">Hideout btc craft</param>
            <param name="btcFarmCGs"></param>
            <param name="isGeneratorOn">Is hideout generator powered</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.AddBtcToProduction(SPTarkov.Server.Core.Models.Eft.Common.Tables.Production,System.Double)">
            <summary>
                Add bitcoin object to btc production products array and set progress time
            </summary>
            <param name="btcProd">Bitcoin production object</param>
            <param name="coinCraftTimeSeconds">Time to craft a bitcoin</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetTimeElapsedSinceLastServerTick(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction)">
            <summary>
                Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="isGeneratorOn">Is the generator on for the duration of elapsed time</param>
            <param name="recipe">Hideout production recipe being crafted we need the ticks for</param>
            <returns>Amount of time elapsed in seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetBTCSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get a count of how much possible BTC can be gathered by the profile
            </summary>
            <param name="pmcData">Profile to look up</param>
            <returns>Coin slot count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetEliteSkillAdditionalBitcoinSlotCount">
            <summary>
                Get a count of how many additional bitcoins player hideout can hold with elite skill
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetHideoutManagementConsumptionBonus(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                HideoutManagement skill gives a consumption bonus the higher the level
                0.5% per level per 1-51, (25.5% at max)
            </summary>
            <param name="pmcData">Profile to get hideout consumption level from</param>
            <returns>Consumption bonus</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetSkillProductionTimeReduction(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Double,SPTarkov.Server.Core.Models.Enums.SkillTypes,System.Double)">
            <summary>
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="productionTime">Time to complete hideout craft in seconds</param>
            <param name="skill">Skill bonus to get reduction from</param>
            <param name="amountPerLevel">Skill bonus amount to apply</param>
            <returns>Seconds to reduce craft time by</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetBTC(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutTakeProductionRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Gather crafted BTC from hideout area and add to inventory
                Reset production start timestamp if hideout area at full coin capacity
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Take production request</param>
            <param name="sessionId">Session id</param>
            <param name="output">Output object to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.HideoutImprovementIsComplete(SPTarkov.Server.Core.Models.Eft.Common.Tables.HideoutImprovement)">
            <summary>
                Hideout improvement is flagged as complete
            </summary>
            <param name="improvement">hideout improvement object</param>
            <returns>true if complete</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.SetHideoutImprovementsToCompleted(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Iterate over hideout improvements not completed and check if they need to be adjusted
            </summary>
            <param name="profileData">Profile to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.ApplyPlaceOfFameDogtagBonus(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Add/remove bonus combat skill based on number of dogtags in place of fame hideout area
            </summary>
            <param name="pmcData">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.GetDogtagCombatSkillBonusPercent(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Calculate the raw dogtag combat skill bonus for place of fame based on number of dogtags
                Reverse engineered from client code
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="activeDogtags">Active dogtags in place of fame dogtag slots</param>
            <returns>Combat bonus</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.HideoutHelper.RemoveHideoutWallBuffsAndDebuffs(SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                The wall pollutes a profile with various temp buffs/debuffs,
                Remove them all
            </summary>
            <param name="wallAreaDb">Hideout area data</param>
            <param name="pmcData">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.AddItemsToStash(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Inventory.AddItemsDirectRequest,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Add multiple items to player stash (assuming they all fit)
            </summary>
            <param name="sessionId">Session id</param>
            <param name="request">AddItemsDirectRequest request</param>
            <param name="pmcData">Player profile</param>
            <param name="output">Client response object</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.AddItemToStash(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Inventory.AddItemDirectRequest,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Add whatever is passed in request.itemWithModsToAdd into player inventory (if it fits)
            </summary>
            <param name="sessionId">Session id</param>
            <param name="request">AddItemDirect request</param>
            <param name="pmcData">Player profile</param>
            <param name="output">Client response object</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.SetFindInRaidStatusForItem(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Boolean)">
            <summary>
                Set FiR status for an item + its children
            </summary>
            <param name="itemWithChildren">An item</param>
            <param name="foundInRaid">Item was found in raid</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.RemoveTraderRagfairRelatedUpdProperties(SPTarkov.Server.Core.Models.Eft.Common.Tables.Upd)">
            <summary>
                Remove properties from a Upd object used by a trader/ragfair that are unnecessary to a player
            </summary>
            <param name="upd">Object to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.CanPlaceItemsInInventory(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Can all provided items be added into player inventory
            </summary>
            <param name="sessionId">Player id</param>
            <param name="itemsWithChildren">Array of items with children to try and fit</param>
            <returns>True all items fit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.CanPlaceItemsInContainer(System.Int32[0:,0:],System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Do the provided items all fit into the grid
            </summary>
            <param name="containerFS2D">Container grid to fit items into</param>
            <param name="itemsWithChildren">Items to try and fit into grid</param>
            <returns>True all fit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.CanPlaceItemInContainer(System.Int32[0:,0:],System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Does an item fit into a container grid
            </summary>
            <param name="containerFS2D">Container grid</param>
            <param name="itemWithChildren">Item to check fits</param>
            <returns>True it fits</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.PlaceItemInContainer(System.Int32[0:,0:],System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.String,System.String)">
            <summary>
                Find a free location inside a container to fit the item
            </summary>
            <param name="containerFS2D">Container grid to add item to</param>
            <param name="itemWithChildren">Item to add to grid</param>
            <param name="containerId">Id of the container we're fitting item into</param>
            <param name="desiredSlotId">Slot id value to use, default is "hideout"</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.PlaceItemInInventory(System.Int32[0:,0:],System.Int32[0:,0:],System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.Boolean,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Find a location to place an item into inventory and place it
            </summary>
            <param name="stashFS2D">2-dimensional representation of the container</param>
            <param name="sortingTableFS2D">2-dimensional representation of the sorting table slots</param>
            <param name="itemWithChildren">Item to place with children</param>
            <param name="playerInventory">Players inventory</param>
            <param name="useSortingTable">Should sorting table to be used if main stash has no space</param>
            <param name="output">Output to send back to client</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.RemoveItem(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Handle Remove event
                Remove item from player inventory + insured items array
                Also deletes child items
            </summary>
            <param name="profile">Profile to remove item from (pmc or scav)</param>
            <param name="itemId">Items id to remove</param>
            <param name="sessionId">Session id</param>
            <param name="output">OPTIONAL - ItemEventRouterResponse</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.RemoveItemAndChildrenFromMailRewards(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryRemoveRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Delete desired item from a player profiles mail
            </summary>
            <param name="sessionId">Session id</param>
            <param name="removeRequest">Remove request</param>
            <param name="output">OPTIONAL - ItemEventRouterResponse</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.RemoveItemByCount(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Find item by id in player inventory and remove x of its count
            </summary>
            <param name="pmcData">player profile</param>
            <param name="itemId">Item id to decrement StackObjectsCount of</param>
            <param name="countToRemove">Number of item to remove</param>
            <param name="sessionId">Session id</param>
            <param name="output">ItemEventRouterResponse</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetItemSize(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Get the height and width of an item - can have children that alter size
            </summary>
            <param name="itemTpl">Item to get size of</param>
            <param name="itemId">Items id to get size of</param>
            <param name="inventoryItems"></param>
            <returns>[width, height]</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetSizeByInventoryItemHash(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Helpers.Profile.InventoryItemHash)">
            <summary>
                Calculates the size of an item including attachments
                takes into account if item is folded
            </summary>
            <param name="itemTpl">Items template id</param>
            <param name="itemId">Items id</param>
            <param name="inventoryItemHash">Hashmap of inventory items</param>
            <returns>An array representing the [width, height] of the item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetContainerMap(System.Int32,System.Int32,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a 2d mapping of a container with what grid slots are filled
            </summary>
            <param name="containerSizeHorizontalX">Horizontal (Column) size of container</param>
            <param name="containerSizeVerticalY">Vertical (Row) size of container</param>
            <param name="itemList">Players inventory items</param>
            <param name="containerId">Id of the container</param>
            <returns>Two-dimensional representation of container</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetOwnerInventoryItems(SPTarkov.Server.Core.Models.Eft.Inventory.InventoryBaseActionRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Return the inventory that needs to be modified (scav/pmc etc)
                Changes made to result apply to character inventory
                Based on the item action, determine whose inventories we should be looking at for from and to.
            </summary>
            <param name="request">Item interaction request</param>
            <param name="itemId">Item being moved/split/etc to inventory</param>
            <param name="sessionId">Session id / players Id</param>
            <returns>OwnerInventoryItems with inventory of player/scav to adjust</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetStashSlotMap(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get a two-dimensional array to represent stash slots
                0 value = free, 1 = taken
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>2-dimensional array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetContainerSlotMap(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a blank two-dimensional array representation of a container
            </summary>
            <param name="containerTpl">Container to get data for</param>
            <returns>blank two-dimensional array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetSortingTableSlotMap(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get a two-dimensional array representation of the players sorting table
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>two-dimensional array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetPlayerStashSize(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get Players Stash Size
            </summary>
            <param name="pmcData">Profile to get stash size of</param>
            <returns>Horizontal and vertical size of stash</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetProfileStashTpl(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the players stash items tpl
            </summary>
            <param name="profile">Profile to get tpl</param>
            <returns>Stash tpl</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.MoveItemToProfile(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMoveRequestData)">
            <summary>
                Internal helper function to transfer an item + children from one profile to another.
            </summary>
            <param name="sourceItems">Inventory of the source (can be non-player)</param>
            <param name="toItems">Inventory of the destination</param>
            <param name="request">Move request</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.MoveItemInternal(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMoveRequestData,System.String@)">
            <summary>
                Internal helper function to move item within the same profile.
            </summary>
            <param name="pmcData">profile to edit</param>
            <param name="inventoryItems"></param>
            <param name="moveRequest">client move request</param>
            <param name="errorMessage"></param>
            <returns>True if move was successful</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.UpdateFastPanelBinding(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Update fast panel bindings when an item is moved into a container that doesn't allow quick slot access
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="itemBeingMoved">item being moved</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.HandleCartridgeMove(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Inventory.InventoryMoveRequestData)">
            <summary>
            Helper function to handle cartridges in inventory if any of them exist.
            </summary>
            <param name="items"></param>
            <param name="request"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetRandomLootContainerRewardDetails(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get details for how a random loot container should be handled, max rewards, possible reward tpls
            </summary>
            <param name="itemTpl">Container being opened</param>
            <returns>Reward details</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.InventoryHelper.GetInventoryConfig">
            <summary>
                Get inventory configuration
            </summary>
            <returns>Inventory configuration</returns>
        </member>
        <member name="P:SPTarkov.Server.Core.Helpers.Profile.PrestigeHelper.PrestigeAchievements">
            <summary>
            The key is prestige id, the value is Achievement id
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.PrestigeHelper.CopyStats(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
            Copy over profile stats from old profile to new
            Remove some stats once copied over
            </summary>
            <param name="newProfile">Profile to add stats to</param>
            <param name="oldProfile">Profile to copy stats from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.RemoveQuestConditionFromProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.Dictionary{System.String,System.String})">
            <summary>
                Remove/reset a completed quest condition from players profile quest data
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="questConditionId">Quest with condition to remove</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.RemoveAllDialoguesFromProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Removes all trader/pmc/etc dialogues from a profile.
                Useful in scenarios where the profile has too many dialogues to properly handle saving/loading due to size
            </summary>
            <param name="sessionId">Player profile</param>
            <returns>Whether anything was cleared and the number of dialogues removed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetProfiles">
            <summary>
                Get all profiles from server
            </summary>
            <returns>Dictionary of profiles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetCompleteProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the pmc and scav profiles as an array by profile id
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>Array of PmcData objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.SanitizeProfileForClient(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Sanitize any information from the profile that the client does not expect to receive
            </summary>
            <param name="clonedProfile">A clone of the full player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.IsNicknameTaken(SPTarkov.Server.Core.Models.Eft.Profile.ValidateNicknameRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if a nickname is used by another profile loaded by the server
            </summary>
            <param name="nicknameRequest">nickname request object</param>
            <param name="sessionId">Session id</param>
            <returns>True if already in use</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.AddExperienceToPmc(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Add experience to a PMC inside the players profile
            </summary>
            <param name="sessionId">Session id</param>
            <param name="experienceToAdd">Experience to add to PMC character</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetProfileByPmcId(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Iterate all profiles and find matching pmc profile by provided id
            </summary>
            <param name="pmcId">Profile id to find</param>
            <returns>PmcData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetExperience(System.Int32)">
            <summary>
                Get experience value for given level
            </summary>
            <param name="level">Level to get xp for</param>
            <returns>Number of xp points for level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetLevelFromExperience(System.Int32)">
            <summary>
                Get level from an expected experience value
            </summary>
            <param name="experience">Experience number to get level for</param>
            <returns>Level expected</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetMaxLevel">
            <summary>
                Get the max level a player can be
            </summary>
            <returns>Max level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetDefaultSptDataObject">
            <summary>
                Get default Spt data object
            </summary>
            <returns>Spt</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetFullProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get full representation of a players profile json
            </summary>
            <param name="sessionId">Profile id to get</param>
            <returns>SptProfile object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetFullProfileByAccountId(System.String)">
            <summary>
                Get full representation of a players profile JSON by the account ID, or undefined if not found
            </summary>
            <param name="accountId">Account ID to find</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetChatRoomMemberFromSessionId(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Retrieve a ChatRoomMember formatted profile for the given session ID
            </summary>
            <param name="sessionId">The session ID to return the profile for</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetChatRoomMemberFromPmcProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Retrieve a ChatRoomMember formatted profile for the given PMC profile data
            </summary>
            <param name="pmcProfile">The PMC profile data to format into a ChatRoomMember structure</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetPmcProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a PMC profile by its session id
            </summary>
            <param name="sessionId">Profile id to return</param>
            <returns>PmcData object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.IsPlayer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Is given user id a player
            </summary>
            <param name="userId">Id to validate</param>
            <returns>True is a player</returns>
            UNUSED?
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetScavProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a full profiles scav-specific sub-profile
            </summary>
            <param name="sessionId">Profiles id</param>
            <returns>IPmcData object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetDefaultCounters">
            <summary>
                Get baseline counter values for a fresh profile
            </summary>
            <returns>Default profile Stats object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.IsWiped(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                is this profile flagged for data removal
            </summary>
            <param name="sessionId">Profile id</param>
            <returns>True if profile is to be wiped of data/progress</returns>
            TODO: logic doesn't feel right to have IsWiped being nullable
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.RemoveSecureContainer(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Iterate over player profile inventory items and find the secure container and remove it
            </summary>
            <param name="profile">Profile to remove secure container from</param>
            <returns>profile without secure container</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.FlagGiftReceivedInProfile(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Int32)">
            <summary>
                Flag a profile as having received a gift
                Store giftId in profile spt object
            </summary>
            <param name="playerId">Player to add gift flag to</param>
            <param name="giftId">Gift player received</param>
            <param name="maxCount">Limit of how many of this gift a player can have</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.PlayerHasReceivedMaxNumberOfGift(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Int32)">
            <summary>
                Check if profile has received a gift by id
            </summary>
            <param name="playerId">Player profile to check for gift</param>
            <param name="giftId">Gift to check for</param>
            <param name="maxGiftCount">Max times gift can be given to player</param>
            <returns>True if player has received gift previously</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.IncrementStatCounter(SPTarkov.Server.Core.Models.Eft.Common.Tables.CounterKeyValue[],System.String)">
            <summary>
                Find Stat in profile counters and increment by one.
            </summary>
            <param name="counters">Counters to search for key</param>
            <param name="keyToIncrement">Key</param>
            Was Includes in Node so might not be exact?
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.HasEliteSkillLevel(SPTarkov.Server.Core.Models.Enums.SkillTypes,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if player has a skill at elite level
            </summary>
            <param name="skill">Skill to check</param>
            <param name="pmcProfile">Profile to find skill in</param>
            <returns>True if player has skill at elite level</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.AddSkillPointsToPlayer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.SkillTypes,System.Double,System.Boolean)">
            <summary>
                Add points to a specific skill in player profile, adjusted for low levels by default
            </summary>
            <param name="pmcProfile">Player profile with skill</param>
            <param name="skill">Skill to add points to</param>
            <param name="pointsToAddToSkill">Points to add</param>
            <param name="useSkillProgressRateMultiplier">Skills are multiplied by a value in globals, default is off to maintain compatibility with legacy code</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.AddSkillPointsToPlayer(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.SkillTypes,System.Double,System.Boolean,System.Boolean)">
            <summary>
                Add points to a specific skill in player profile
            </summary>
            <param name="pmcProfile">Player profile with skill</param>
            <param name="skill">Skill to add points to</param>
            <param name="pointsToAddToSkill">Points to add</param>
            <param name="useSkillProgressRateMultiplier">Skills are multiplied by a value in globals, default is off to maintain compatibility with legacy code</param>
            <param name="adjustSkillExpForLowLevels">Skills are multiplied by a multiplier for lower levels; if false, treats every level as requiring 100 points</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.AdjustSkillExpForLowLevels(System.Double,System.Double)">
            <summary>
                This method calculates the adjusted skill progression for lower levels.
            </summary>
            <param name="currentProgress">Current internal progress value of the skill, used to determine current level</param>
            <param name="visualProgressAmount">The amount of visual progress to add</param>
            <returns>Scaled skill progress according to level</returns>
            <remarks>
                It expects to be passed on a value as expected per the visual progress on the UI.
                It will return scaled internal progress according to the current skill level, to match Tarkovs skill progression curve.
                So passing on "0.4" will always yield +0.4 progress on the UI for the player.
            </remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.IsDeveloperAccount(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Is the provided session id for a developer account
            </summary>
            <param name="sessionId">Profile id to check</param>
            <returns>True if account is developer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.AddStashRowsBonusToProfile(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Add stash row bonus to profile or increments rows given count if it already exists
            </summary>
            <param name="sessionId">Profile id to give rows to</param>
            <param name="rowsToAdd">How many rows to give profile</param>
            <returns>The stash rows bonus id, this is needed for ws notification if we send one</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.ReplaceProfilePocketTpl(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.String)">
            <summary>
                Find a profiles "Pockets" item and replace its tpl with passed in value
            </summary>
            <param name="pmcProfile">Player profile</param>
            <param name="newPocketTpl">New tpl to set profiles Pockets to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetOtherProfileFavorites(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Return a favorites list in the format expected by the GetOtherProfile call
            </summary>
            <param name="profile"></param>
            <returns>A list of Item objects representing the favorited data</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetProfileTemplateForSide(System.String,System.String)">
            <summary>
            Get a profile template by the account and side
            </summary>
            <param name="accountEdition">Edition of profile desired, e.g. "Standard"</param>
            <param name="side">Side of profile desired, e.g. "Bear"</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetProfileTemplateFlagValue(System.String,System.String)">
            <summary>
            Look up a key inside the `CustomFlags` property from a profile template
            </summary>
            <param name="accountEdition">Edition of profile desired, e.g. "Standard"</param>
            <param name="flagKey">key stored in CustomFlags dictionary</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetAccountCurrency(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
            Gets the currencies in the profiles inventory
            </summary>
            <param name="profile">Full profile</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.GetProfileStats(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
            Currently returns a template of data for the profiles stats
            </summary>
            <param name="profile">Full profile</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.FormatMinSeconds(System.Int64)">
            <summary>
            Taken from the client with interpolation instead, returns a format of MM:SS
            </summary>
            <param name="seconds"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.FormatHoursMins(System.Int64)">
            <summary>
            Taken from the client with interpolation instead, returns a format of HH:MM
            </summary>
            <param name="seconds"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileHelper.FormatOverallLifetime(System.Int32)">
            <summary>
            Taken from the client with interpolation instead, returns a format of - or HH:MM or DD or YYDD
            </summary>
            <param name="regDate"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.CheckForOrphanedModdedData(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Checks profile inventory for items that do not exist inside the items DB
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="fullProfile"> Profile to check inventory of </param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedItemException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedClothingException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedTraderException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
            <remarks>Exceptions thrown are from called methods, this method does not throw exceptions directly, but they are possible.</remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidItems(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Removes all invalid item ids from the provided profile
            </summary>
            <param name="sessionId">SessionId to check</param>
            <param name="fullProfile">Full profile to check</param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedItemException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidUserBuilds(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Checks for and removes invalid user builds containing items that no longer exist
            </summary>
            <param name="fullProfile">Full profile to check</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidDialogRecords(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Check for and remove invalid user dialogs
            </summary>
            <param name="fullProfile">Full profile to check</param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedTraderException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidClothing(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Check for and remove invalid clothing items
            </summary>
            <param name="fullProfile">Full profile to check</param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedClothingException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidRepeatableQuests(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Check for and remove invalid repeatable quests
            </summary>
            <param name="fullProfile">Full profile to check</param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedTraderException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.RemoveInvalidTraderPurchases(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Check for and remove invalid trader purchases from traders that no longer exist
            </summary>
            <param name="fullProfile">Full profile to check</param>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Items.InvalidModdedTraderException">Thrown if <see cref="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">RemoveModItemsFromProfile</see> is false.</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.ShouldRemoveWeaponEquipmentBuild(System.String,SPTarkov.Server.Core.Models.Eft.Profile.UserBuild,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem})">
            <summary>
                Check whether a weapon build should be removed from the equipment list.
            </summary>
            <param name="buildType"> The type of build, used for logging only </param>
            <param name="build"> The build to check for invalid items </param>
            <param name="itemsDb"> The items database to use for item lookup </param>
            <returns> True if the build should be removed from the build list, false otherwise </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Profile.ProfileValidatorHelper.ShouldRemoveMagazineBuild(SPTarkov.Server.Core.Models.Eft.Profile.MagazineBuild,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem})">
            <summary>
                Checks whether magazine build shou8ld be removed form the build list.
            </summary>
            <param name="magazineBuild"> The magazine build to check for validity </param>
            <param name="itemsDb"> The items database to use for item lookup </param>
            <returns> True if the build should be removed from the build list, false otherwise </returns>
        </member>
        <member name="P:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.SellToTraderQuestConditionCache">
            <summary>
            List of <see cref="N:SPTarkov.Server.Core.Helpers.Quest"/> conditions that require trader sales be tracked and incremented, keyed by <see cref="!:Quest.Id"/>
            We need to keep track of quests with `SellItemToTrader` finish conditions to avoid expensive lookups during trading.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.DoesPlayerLevelFulfilCondition(System.Int32,SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition)">
            <summary>
                returns true if the level condition is satisfied
            </summary>
            <param name="playerLevel">Players level</param>
            <param name="condition">Quest condition</param>
            <returns>true if player level is greater than or equal to quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetDeltaQuests(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest})">
            <summary>
                Get new quests in `after` that are not in `before`
            </summary>
            <param name="before">List of quests #1</param>
            <param name="after">List of quests #2</param>
            <returns>quests not in before</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestNameFromLocale(System.String)">
            <summary>
                Get quest name by quest id
            </summary>
            <param name="questId">id to get</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.TraderLoyaltyLevelRequirementCheck(SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if trader has sufficient loyalty to fulfill quest requirement
            </summary>
            <param name="questProperties">Quest props</param>
            <param name="profile">Player profile</param>
            <returns>true if loyalty is high enough to fulfill quest requirement</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.TraderStandingRequirementCheck(SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if trader has sufficient standing to fulfill quest requirement
            </summary>
            <param name="questProperties">Quest props</param>
            <param name="profile">Player profile</param>
            <returns>true if standing is high enough to fulfill quest requirement</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.CompareAvailableForValues(System.Double,System.Double,System.String)">
            <summary>
            Helper to map symbols to actions
            </summary>
            <param name="current">First value</param>
            <param name="required">Second value</param>
            <param name="compareMethod">Symbol to compare two values with e.g. ">="</param>
            <returns>Outcome of comparison</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestReadyForProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.QuestStatusEnum,SPTarkov.Server.Core.Models.Eft.Quests.AcceptQuestRequestData)">
            <summary>
            Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="newState">State the new quest should be in when returned</param>
            <param name="acceptedQuest">Details of accepted quest from client</param>
            <returns>quest status object for storage in profile</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetNewlyAccessibleQuestsWhenStartingQuest(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get quests that can be shown to player after starting a quest
            </summary>
            <param name="startedQuestId">Quest started by player</param>
            <param name="sessionId">Session/Player id</param>
            <returns>Quests accessible to player including newly unlocked quests now quest (startedQuestId) was started</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.ShowEventQuestToPlayer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Should a seasonal/event quest be shown to the player
            </summary>
            <param name="questId">Quest to check</param>
            <returns>true = show to player</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.QuestIsForOtherSide(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is the quest for the opposite side the player is on
            </summary>
            <param name="playerSide">Player side (usec/bear)</param>
            <param name="questId">QuestId to check</param>
            <returns>true = quest isn't for player</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.QuestIsProfileBlacklisted(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is the provided quest prevented from being viewed by the provided game version
            (Inclusive filter)
            </summary>
            <param name="gameVersion">Game version to check against</param>
            <param name="questId">Quest id to check</param>
            <returns>True = Quest should not be visible to game version</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.QuestIsProfileWhitelisted(System.String,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is the provided quest able to be seen by the provided game version
            (Exclusive filter)
            </summary>
            <param name="gameVersion">Game version to check against</param>
            <param name="questId">Quest id to check</param>
            <returns>True = Quest should be visible to game version</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.FailedUnlocked(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get quests that can be shown to player after failing a quest
            </summary>
            <param name="failedQuestId">Id of the quest failed by player</param>
            <param name="sessionId">Session/Player id</param>
            <returns>List of Quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.ChangeItemStack(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            Sets the item stack to new value, or delete the item if value is less than or equal 0
            </summary>
            <param name="pmcData">Profile</param>
            <param name="itemId">Id of item to adjust stack size of</param>
            <param name="newStackSize">Stack size to adjust to</param>
            <param name="sessionId">Session id</param>
            <param name="output">ItemEvent router response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestsWithOnlyLevelRequirementStartCondition(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest})">
            <summary>
            Get quests, strip all requirement conditions except level
            </summary>
            <param name="quests">quests to process</param>
            <returns>quest list without conditions</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.RemoveQuestConditionsExceptLevel(SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest)">
            <summary>
            Remove all quest conditions except for level requirement
            </summary>
            <param name="quest">quest to clean</param>
            <returns>Quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetSellToTraderQuests(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest})">
            <summary>
            Get all quests with finish condition `SellItemToTrader`.
            The first time this method is called it will cache the conditions by quest id in <see cref="P:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.SellToTraderQuestConditionCache"/>` and return that thereafter.
            </summary>
            <param name="quests">Quests to process</param>
            <returns>List of quests with `SellItemToTrader` finish condition(s)</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetActiveSellToTraderConditionCounters(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get all active condition counters for `SellItemToTrader` conditions
            </summary>
            <param name="pmcData">Profile to check</param>
            <returns>List of active TaskConditionCounters</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.IncrementSoldToTraderCounters(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessSellTradeRequestData)">
            <summary>
            Look over all active conditions and increment them as needed
            </summary>
            <param name="profileWithItemsToSell">profile selling the items</param>
            <param name="profileToReceiveMoney">profile to receive the money</param>
            <param name="sellRequest">request with items to sell</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.IncrementSoldToTraderCounter(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.TaskConditionCounter,SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition,SPTarkov.Server.Core.Models.Eft.Trade.ProcessSellTradeRequestData)">
            <summary>
            Increment an individual condition counter
            </summary>
            <param name="profileWithItemsToSell">Profile selling the items</param>
            <param name="taskCounter">condition counter to increment</param>
            <param name="questCondition">quest condtion to check for valid items on</param>
            <param name="sellRequest">sell request of items sold</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.FailQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.FailQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            Fail a quest in a player profile
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="failRequest">Fail quest request data</param>
            <param name="sessionId">Player/Session id</param>
            <param name="output">Client output</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestsFromDb">
            <summary>
            Get collection of All Quests from db
            </summary>
            <remarks>NOT CLONED</remarks>
            <returns>List of Quest objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestFromDb(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get quest by id from database (repeatables are stored in profile, check there if questId not found)
            </summary>
            <param name="questId">Id of quest to find</param>
            <param name="pmcData">Player profile</param>
            <returns>Found quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetMessageIdForQuestStart(System.String,System.String)">
            <summary>
                Get a quests startedMessageText key from db, if no startedMessageText key found, use description key instead
            </summary>
            <param name="startedMessageTextId">startedMessageText property from Quest</param>
            <param name="questDescriptionId">description property from Quest</param>
            <returns>message id</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestLocaleIdFromDb(System.String)">
            <summary>
                Get the locale Id from locale db for a quest message
            </summary>
            <param name="questMessageId">Quest message id to look up</param>
            <returns>Locale Id from locale db</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.UpdateQuestState(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.QuestStatusEnum,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Alter a quests state + Add a record to its status timers object
            </summary>
            <param name="pmcData">Profile to update</param>
            <param name="newQuestState">New state the quest should be in</param>
            <param name="questId">Id of the quest to alter the status of</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.ResetQuestState(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Enums.QuestStatusEnum,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Resets a quests values back to its chosen state
            </summary>
            <param name="pmcData">Profile to update</param>
            <param name="newQuestState">New state the quest should be in</param>
            <param name="questId">Id of the quest to alter the status of</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetFindItemConditionByQuestItem(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId[],System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest})">
            <summary>
            Find quest with 'findItem' condition that needs the item tpl be handed in
            </summary>
            <param name="itemTpl">item tpl to look for</param>
            <param name="questIds">Quests to search through for the findItem condition</param>
            <param name="allQuests">All quests to check</param>
            <returns>quest id with 'FindItem' condition id</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.AddAllQuestsToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Enums.QuestStatusEnum})">
            <summary>
            Add all quests to a profile with the provided statuses
            </summary>
            <param name="pmcProfile">profile to update</param>
            <param name="statuses">statuses quests should have added to profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.FindAndRemoveQuestFromArrayIfExists(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus})">
            <summary>
            Find and remove the provided quest id from the provided collection of quests
            </summary>
            <param name="questId">Id of quest to remove</param>
            <param name="quests">Collection of quests to remove id from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestsFailedByCompletingQuest(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Return a list of quests that would fail when supplied quest is completed
            </summary>
            <param name="completedQuestId">quest completed id</param>
            <returns>Collection of Quest objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetMailItemRedeemTimeHoursForProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get the hours a mails items can be collected for by profile type
            </summary>
            <param name="pmcData">Profile to get hours for</param>
            <returns>Hours item will be available for</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.CompleteQuest(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Quests.CompleteQuestRequestData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Handle player completing a quest
            Flag quest as complete in their profile
            Look for and flag any quests that fail when completing quest
            Show completed dialog on screen
            Add time locked quests unlocked by completing quest
            handle specific actions needed when quest is a repeatable
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Client request</param>
            <param name="sessionId">Player/session id</param>
            <returns>Client response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetClientQuests(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Handle client/quest/list
            Get all quests visible to player
            Exclude quests with incomplete preconditions (level/loyalty)
            </summary>
            <param name="sessionId">session/player id</param>
            <returns>Collection of quests</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.UpdateQuestsForGameEdition(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest},System.String)">
            <summary>
            Remove rewards from quests that do not fulfil the gameversion requirement
            </summary>
            <param name="quests">List of quests to check</param>
            <param name="gameVersion">Game version of the profile</param>
            <returns>Collection of Quest objects with the rewards filtered correctly for the game version</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestsFromProfileFailedByCompletingQuest(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Return a list of quests that would fail when supplied quest is completed
            </summary>
            <param name="completedQuestId">Quest completed id</param>
            <param name="pmcProfile"></param>
            <returns>Collection of Quest objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.FailQuests(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest},SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            Fail the provided quests - Update quest in profile, otherwise add fresh quest object with failed status
            </summary>
            <param name="sessionId">session id</param>
            <param name="pmcData">player profile</param>
            <param name="questsToFail">quests to fail</param>
            <param name="output">Client output</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.SendSuccessDialogMessageOnQuestComplete(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Send a popup to player on successful completion of a quest
            </summary>
            <param name="sessionId">session id</param>
            <param name="pmcData">Player profile</param>
            <param name="completedQuestId">Completed quest id</param>
            <param name="questRewards">Rewards given to player</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.AddTimeLockedQuestsToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Look for newly available quests after completing a quest with a requirement to wait x minutes (time-locked) before being available and add data to profile
            </summary>
            <param name="pmcData">Player profile to update</param>
            <param name="quests">Quests to look for wait conditions in</param>
            <param name="completedQuestId">Quest just completed</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.RemoveQuestFromScavProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Remove a quest entirely from a profile
            </summary>
            <param name="sessionId">Player id</param>
            <param name="questIdToRemove">Qid of quest to remove</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.GetQuestsWithDifferentStatuses(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus})">
            <summary>
            Get quests that have different statuses
            </summary>
            <param name="preQuestStatuses">Quests before</param>
            <param name="postQuestStatuses">Quests after</param>
            <returns>QuestStatusChange array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestHelper.PlayerLevelFulfillsQuestRequirement(SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest,System.Int32)">
            <summary>
            Does a provided quest have a level requirement equal to or below defined level
            </summary>
            <param name="quest">Quest to check</param>
            <param name="playerLevel">level of player to test against quest</param>
            <returns>true if quest can be seen/accepted by player of defined level</returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.InGameTraders">
            <summary>
            Value for in game reward traders to not duplicate quest rewards.
            Value can be modified by modders by overriding this value with new traders.
            Ensure to add Lightkeeper's ID (638f541a29ffd1183d187f57) and BTR Driver's ID (656f0f98d80a697f855d34b1)
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.ApplyQuestReward(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.QuestStatusEnum,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            Give player quest rewards - Skills/exp/trader standing/items/assort unlocks - Returns reward items player earned
            SKIP quests completed in-game
            </summary>
            <param name="profileData">Player profile (scav or pmc)</param>
            <param name="questId">questId of quest to get rewards for</param>
            <param name="state">State of the quest to get rewards for</param>
            <param name="sessionId">Session id</param>
            <param name="questResponse">Response to send back to client</param>
            <returns>Array of reward items player was given</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.IsInGameTrader(SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest)">
            <summary>
            Determines if quest rewards are given in raid by the trader instead of through messaging system.
            </summary>
            <param name="quest">The quest to check.</param>
            <returns>True if the quest's trader is in the in-game reward trader list; otherwise, false.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.GetQuestFromDb(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get quest by id from database (repeatable quests are stored in profile, check there if questId not found)
            </summary>
            <param name="questId">Id of quest to find</param>
            <param name="pmcData">Player profile</param>
            <returns>IQuest object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.GetQuestMoneyRewardBonusMultiplier(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get players money reward bonus from profile
            </summary>
            <param name="pmcData">player profile</param>
            <returns>bonus as a percent</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.QuestRewardHelper.ApplyMoneyBoost(SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest,System.Double,SPTarkov.Server.Core.Models.Enums.QuestStatusEnum)">
            <summary>
            Adjust a quests money rewards by supplied multiplier
            </summary>
            <param name="quest">Quest to apply bonus to</param>
            <param name="bonusPercent">Percent to adjust money rewards by</param>
            <param name="questStatus">Status of quest to apply money boost to rewards of</param>
            <returns>Updated quest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetEliminationConfigByPmcLevel(System.Int32,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Get the relevant elimination config based on the current players PMC level
            </summary>
            <param name="pmcLevel">Level of PMC character</param>
            <param name="repeatableConfig">Main repeatable config</param>
            <returns>EliminationConfig</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetExplorationConfigByPmcLevel(System.Int32,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Get the relevant exploration config based on the current players PMC level
            </summary>
            <param name="pmcLevel">Level of PMC character</param>
            <param name="repeatableConfig">Main repeatable config</param>
            <returns>ExplorationConfig</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetCompletionConfigByPmcLevel(System.Int32,SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig)">
            <summary>
                Get the relevant completion config based on the current players PMC level
            </summary>
            <param name="pmcLevel">Level of PMC character</param>
            <param name="repeatableConfig">Main repeatable config</param>
            <returns>CompletionConfig</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetClonedQuestTemplateForType(SPTarkov.Server.Core.Models.Enums.RepeatableQuestType,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Gets a cloned repeatable quest template for the provided type with a unique id
            </summary>
            <param name="type">Type of template to retrieve</param>
            <param name="traderId">TraderId that should provide this quest</param>
            <returns>Cloned quest template</returns>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GenerateRepeatableTemplate(SPTarkov.Server.Core.Models.Enums.RepeatableQuestType,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.PlayerGroup,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Generates the base object of quest type format given as templates in
                assets/database/templates/repeatableQuests.json
                The templates include Elimination, Completion and Extraction quest types
            </summary>
            <param name="type">Quest type: "Elimination", "Completion" or "Extraction"</param>
            <param name="traderId">Trader from which the quest will be provided</param>
            <param name="playerGroup">Scav daily or pmc daily/weekly quest</param>
            <param name="sessionId">sessionId to generate template for</param>
            <returns>
                Object which contains the base elements for repeatable quests of the requests type
                (needs to be filled with reward and conditions by called to make a valid quest)
            </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetRepeatableQuestTemplatesByGroup(SPTarkov.Server.Core.Models.Enums.PlayerGroup)">
            <summary>
                Returns the repeatable template ids for the provided side
            </summary>
            <param name="playerGroup">Side to get the templates for</param>
            <returns></returns>
            <exception cref="T:System.ArgumentOutOfRangeException"></exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Quest.RepeatableQuestHelper.GetQuestLocationByMapId(System.String)">
            <summary>
                Convert a raw location string into a location code can read (e.g. factory4_day into 55f2d3fd4bdc2d5f408b4567)
            </summary>
            <param name="locationKey">e.g. factory4_day</param>
            <returns>guid</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairHelper.GetCurrencyTag(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Gets currency TAG from currency tpl value
            </summary>
            <param name="currencyTpl">Currency tpl</param>
            <returns>Currency tag, e.g. RUB</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairHelper.GetCurrencyTag(System.Int32)">
            <summary>
            Get a currency TAG by its search filter value (e.g. 0 = all, 1 = RUB)
            </summary>
            <param name="currencyFilter">Search filter choice</param>
            <returns>Currency tag</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairHelper.MergeStackable(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Iterate over array of identical items and merge stack count
            Ragfair allows abnormally large stacks
            </summary>
            <param name="items">Items to merge</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairHelper.GetCurrencySymbol(System.String)">
            <summary>
            Return the symbol for a currency
            e.g. 5449016a4bdc2d6f028b456f return ₽
            </summary>
            <param name="currencyTpl">currency to get symbol for</param>
            <returns>symbol of currency</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetValidOffers(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Pass through to ragfairOfferService.getOffers(), get flea offers a player should see
            </summary>
            <param name="searchRequest">Data from client</param>
            <param name="itemsToAdd">ragfairHelper.filterCategories()</param>
            <param name="traderAssorts">Trader assorts</param>
            <param name="pmcData">Player profile</param>
            <returns>Offers the player should see</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.CheckAndLockOfferFromPlayerTieredFlea(SPTarkov.Server.Core.Models.Spt.Config.TieredFlea,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Int32)">
            <summary>
                Disable offer if item is flagged by tiered flea config based on player level
            </summary>
            <param name="tieredFlea">Tiered flea settings from ragfair config</param>
            <param name="offer">Ragfair offer to evaluate</param>
            <param name="tieredFleaLimitTypes">List of item types flagged with a required player level</param>
            <param name="playerLevel">Current level of player viewing offer</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetOffersThatRequireItem(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get matching offers that require the desired item and filter out offers from non traders if player is below ragfair
                unlock level
            </summary>
            <param name="searchRequest">Search request from client</param>
            <param name="pmcData">Player profile</param>
            <returns>Matching RagfairOffer objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetOffersForBuild(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get offers from flea/traders specifically when building weapon preset
            </summary>
            <param name="searchRequest">Search request data</param>
            <param name="itemsToAdd">string array of item tpls to search for</param>
            <param name="traderAssorts">All trader assorts player can access/buy</param>
            <param name="pmcData">Player profile</param>
            <returns>RagfairOffer array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.IsDisplayableOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort},SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean)">
            <summary>
            Should a ragfair offer be visible to the player
            </summary>
            <param name="searchRequest">Client request</param>
            <param name="itemsToAdd"></param>
            <param name="traderAssorts">Trader assort items - used for filtering out locked trader items</param>
            <param name="offer">Flea offer</param>
            <param name="offerRootItem">Root offer item</param>
            <param name="pmcProfile">Player profile</param>
            <param name="playerIsFleaBanned">Player cannot view flea yet/ever</param>
            <returns>True = should be shown to player</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetOffersInsideBuyRestrictionLimits(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer})">
            <summary>
                Get offers that have not exceeded buy limits
            </summary>
            <param name="possibleOffers">offers to process</param>
            <returns>Offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.TraderOfferLockedBehindLoyaltyLevel(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if offer is from trader standing the player does not have
            </summary>
            <param name="offer">Offer to check</param>
            <param name="pmcProfile">Player profile</param>
            <returns>True if item is locked, false if item is purchaseable</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.TraderOfferItemQuestLocked(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort})">
            <summary>
                Check if offer item is quest locked for current player by looking at sptQuestLocked property in traders
                barter_scheme
            </summary>
            <param name="offer">Offer to check is quest locked</param>
            <param name="traderAssorts">all trader assorts for player</param>
            <returns>true if quest locked</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.TraderOutOfStock(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Has trader offer ran out of stock to sell to player
            </summary>
            <param name="offer">Offer to check stock of</param>
            <returns>true if out of stock</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.TraderBuyRestrictionReached(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Check if trader offers' BuyRestrictionMax value has been reached
            </summary>
            <param name="offer">Offer to check restriction properties of</param>
            <returns>true if restriction reached, false if no restrictions/not reached</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.ProcessOffersOnProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Process all player-listed flea offers for a desired profile
            </summary>
            <param name="sessionId">Session id to process offers for</param>
            <returns>true = complete</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetTotalStackCountSize(System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
            Count up all root item StackObjectsCount properties of an array of items
            </summary>
            <param name="itemsInInventoryToSumStackCount">items to sum up</param>
            <returns>Total stack count</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.IncreaseProfileRagfairRating(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,System.Nullable{System.Double})">
            <summary>
            Add amount to players ragfair rating
            </summary>
            <param name="profile">Profile to update</param>
            <param name="amountToIncrementBy">Raw amount to add to players ragfair rating (excluding the reputation gain multiplier)</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetProfileOffers(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Return all offers a player has listed on a desired profile
            </summary>
            <param name="sessionId">Session/Player id</param>
            <returns>List of ragfair offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.DeleteOfferById(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Delete an offer from a desired profile and from ragfair offers
            </summary>
            <param name="sessionId">Session id of profile to delete offer from</param>
            <param name="offerId">Id of offer to delete</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.CompleteOffer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,System.Int32)">
            <summary>
            Complete the selling of players' offer
            </summary>
            <param name="offerOwnerSessionId">Session/Player id</param>
            <param name="offer">Sold offer details</param>
            <param name="boughtAmount">Amount item was purchased for</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.GetLocalisedOfferSoldMessage(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
            Get a localised message for when players offer has sold on flea
            </summary>
            <param name="itemTpl">Item sold</param>
            <param name="boughtAmount"></param>
            <returns>Localised string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.PassesSearchFilterCriteria(SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Check an offer passes the various search criteria the player requested
            </summary>
            <param name="searchRequest">Client search request</param>
            <param name="offer">Offer to check</param>
            <param name="offerRootItem">root item of offer</param>
            <param name="pmcData">Player profile</param>
            <returns>True if offer passes criteria</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.IsItemFunctional(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Check that the passed in offer item is functional
            </summary>
            <param name="offerRootItem">The root item of the offer</param>
            <param name="offer">Flea offer to check</param>
            <returns>True if the given item is functional</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.IsConditionItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Does the passed in item have a condition property
            </summary>
            <param name="item">Item to check</param>
            <returns>True if has condition</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairOfferHelper.ItemQualityInRange(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Int32,System.Int32)">
            <summary>
                Is items quality value within desired range
            </summary>
            <param name="item">Item to check quality of</param>
            <param name="min">Desired minimum quality</param>
            <param name="max">Desired maximum quality</param>
            <returns>True if in range</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairSellHelper.CalculateSellChance(System.Double,System.Double,System.Double)">
            <summary>
                Get the percent chance to sell an item based on its average listed price vs player chosen listing price
            </summary>
            <param name="averageOfferPriceRub">Price of average offer in roubles</param>
            <param name="playerListedPriceRub">Price player listed item for in roubles</param>
            <param name="qualityMultiplier">Quality multiplier of item being sold</param>
            <returns>percent value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairSellHelper.RollForSale(System.Nullable{System.Double},System.Int32,System.Boolean)">
            <summary>
                Get list of item count and sell time (empty list = no sell)
            </summary>
            <param name="sellChancePercent">chance item will sell</param>
            <param name="itemSellCount">count of items to sell</param>
            <param name="sellInOneGo">All items listed get sold at once</param>
            <returns>List of purchases of item(s) listed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.IsItemValidRagfairItem(System.Collections.Generic.KeyValuePair{System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem})">
            <summary>
            Is item valid / not on blacklist / not a quest item
            </summary>
            <param name="itemDetails">Item to check</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.IsItemOnCustomFleaBlacklist(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is supplied item tpl on the ragfair custom blacklist from configs/ragfair.json/dynamic
            </summary>
            <param name="itemTemplateId">Item tpl to check is blacklisted</param>
            <returns>True if its blacklisted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.IsItemCategoryOnCustomFleaBlacklist(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is supplied parent id on the ragfair custom item category blacklist
            </summary>
            <param name="itemParentId">Parent Id to check is blacklisted</param>
            <returns>true if blacklisted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.IsTrader(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Is supplied id a trader
            </summary>
            <param name="traderId">id to check</param>
            <returns>True if id was a trader</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.ReturnItems(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Send items back to player
            </summary>
            <param name="sessionID">Player to send items to</param>
            <param name="returnedItems">Items to send to player</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.GetDynamicOfferCurrency">
            <summary>
            Choose a currency at random with bias
            </summary>
            <returns>Currency TPL</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.GetPresetItems(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Given a preset id from globals.json, return an array of items[] with unique ids
            </summary>
            <param name="item">Preset item</param>
            <returns>Collection containing weapon and its children</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.GetPresetItemsByTpl(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json
            </summary>
            <param name="item">Preset item</param>
            <returns>Collection of item objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairServerHelper.GetOfferCountByBaseType(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get a randomised offer count for the provided item base type
            </summary>
            <param name="itemParentType">Parent type for the item</param>
            <returns>randomised number between min and max</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairSortHelper.SortOffers(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer},SPTarkov.Server.Core.Models.Enums.RagfairSort,System.Int32)">
            <summary>
            Sort a list of ragfair offers by something (id/rating/offer name/price/expiry time)
            </summary>
            <param name="offers">Offers to sort</param>
            <param name="type">How to sort it</param>
            <param name="direction">Ascending/descending</param>
            <returns>Sorted offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairSortHelper.SortOffersByPrice(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Order two offers by rouble price value
            </summary>
            <param name="a">Offer a</param>
            <param name="b">Offer b</param>
            <returns>-1, 0, 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RagfairSortHelper.SortOffersByExpiry(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer,SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Order two offers by rouble price value
            </summary>
            <param name="a">Offer a</param>
            <param name="b">Offer b</param>
            <returns>-1, 0, 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RepairHelper.UpdateItemDurability(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Boolean,System.Double,System.Boolean,System.Double,System.Boolean)">
            <summary>
                Alter an items durability after a repair by trader/repair kit
            </summary>
            <param name="itemToRepair">item to update durability details</param>
            <param name="itemToRepairDetails">db details of item to repair</param>
            <param name="isArmor">Is item being repaired a piece of armor</param>
            <param name="amountToRepair">how many unit of durability to repair</param>
            <param name="useRepairKit">Is item being repaired with a repair kit</param>
            <param name="traderQualityMultiplier">Trader quality value from traders base json</param>
            <param name="applyMaxDurabilityDegradation">should item have max durability reduced</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RepairHelper.GetRandomisedArmorRepairDegradationValue(SPTarkov.Server.Core.Models.Enums.ArmorMaterial,System.Boolean,System.Double,System.Double)">
            <summary>
                Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material
            </summary>
            <param name="material">What material is the armor being repaired made of</param>
            <param name="isRepairKit">Was a repair kit used</param>
            <param name="armorMax">Max amount of durability item can have</param>
            <param name="traderQualityMultiplier">Different traders produce different loss values</param>
            <returns>Amount to reduce max durability by</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Ragfair.RepairHelper.GetRandomisedWeaponRepairDegradationValue(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties,System.Boolean,System.Double,System.Double)">
            <summary>
                Repairing weapons reduces the total durability value slightly, get a randomised (to 2dp) amount
            </summary>
            <param name="itemProperties">Weapon properties</param>
            <param name="isRepairKit">Was a repair kit used</param>
            <param name="weaponMax">Max amount of durability item can have</param>
            <param name="traderQualityMultiplier">Different traders produce different loss values</param>
            <returns>Amount to reduce max durability by</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.CertificateHelper.TryLoadCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2@)">
            <summary>
                if the cert exist, try load it, else create one and try load again
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.CertificateHelper.GenerateSelfSignedCertificate">
            <summary>
                Generate and return a self-signed certificate
            </summary>
            <returns>X509Certificate2</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.CertificateHelper.SaveCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2)">
            <summary>
                Save a certificate as a file to disk
            </summary>
            <param name="certificate">Certificate to save</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.HttpServerHelper.GetBackendUrl">
            <summary>
            Prepend http to the url:port
            </summary>
            <returns>URI</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.HttpServerHelper.GetWebsocketUrl">
            <summary>
            Get websocket url + port
            </summary>
            <returns>wss:// address</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotificationSendHelper.SendMessageAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ws.WsNotificationEvent)">
            <summary>
                Send notification message to the appropriate channel
            </summary>
            <param name="sessionId">Session/player id</param>
            <param name="notificationMessage"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotificationSendHelper.SendMessageToPlayerAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo,System.String,SPTarkov.Server.Core.Models.Enums.MessageType)">
            <summary>
                Send a message directly to the player
            </summary>
            <param name="sessionId">Session id</param>
            <param name="senderDetails">Who is sending the message to player</param>
            <param name="messageText">Text to send player</param>
            <param name="messageType">Underlying type of message being sent</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotificationSendHelper.GetDialog(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.MessageType,SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo)">
            <summary>
                Helper function for SendMessageToPlayer(), get new dialog for storage in profile or find existing by sender id
            </summary>
            <param name="sessionId">Session id</param>
            <param name="messageType">Type of message to generate</param>
            <param name="senderDetails">Who is sending the message</param>
            <returns>Dialogue</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotificationSendHelper.GetEmptyDialogTemplate(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.MessageType,SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo)">
            <summary>
                Get an empty dialog template
            </summary>
            <param name="dialogKey">Key to assign</param>
            <param name="messageType">Type of message</param>
            <param name="senderDetails">Sender details</param>
            <returns>Empty dialog template</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotifierHelper.CreateRagfairOfferSoldNotification(SPTarkov.Server.Core.Models.Eft.Profile.Message,SPTarkov.Server.Core.Models.Eft.Profile.MessageContentRagfair)">
            <summary>
            Create a new notification that displays the "Your offer was sold!" prompt and removes sold offer from "My Offers" on clientside
            </summary>
            <param name="dialogueMessage">Message from dialog that was sent</param>
            <param name="ragfairData">Ragfair data to attach to notification</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotifierHelper.CreateNotificationPopup(SPTarkov.Server.Core.Models.Eft.Common.Tables.IllustrationConfig,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Create a new notification that displays a message to the player - currently used by quests as a reward
            </summary>
            <param name="config">IllustrationConfig object from quest reward</param>
            <param name="messageId">Message Id from quest reward</param>
            <returns>WsNotificationPopup</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotifierHelper.CreateNewMessageNotification(SPTarkov.Server.Core.Models.Eft.Profile.Message)">
            <summary>
            Create a new notification with the specified dialogueMessage object
            </summary>
            <param name="dialogueMessage"></param>
            <returns>WsChatMessageReceived</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotifierHelper.CreateRagfairNewRatingNotification(System.Double,System.Boolean)">
            <summary>
            Create a new rating ragfair notification
            </summary>
            <param name="rating">new rating</param>
            <param name="isGrowing">Rating is going up</param>
            <returns>WsRagfairNewRating</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Server.NotifierHelper.GetWebSocketServer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get the web socket server URI
            </summary>
            <param name="sessionId">Player/Session id</param>
            <returns>URI as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.AssortHelper.StripLockedQuestAssort(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId}},System.Boolean)">
            <summary>
                Remove assorts from a trader that have not been unlocked yet (via player completing corresponding quest)
            </summary>
            <param name="pmcProfile"></param>
            <param name="traderId">Traders id assort belongs to</param>
            <param name="traderAssorts">All assort items from same trader</param>
            <param name="mergedQuestAssorts">Dict of quest assort to quest id unlocks for all traders (key = started/failed/complete)</param>
            <param name="isFlea">Is the trader assort being modified the flea market</param>
            <returns>items minus locked quest assorts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.AssortHelper.GetQuestIdAndStatusThatShowAssort(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId}},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a quest id + the statuses quest can be in to unlock assort
            </summary>
            <param name="mergedQuestAssorts">quest assorts to search for assort id</param>
            <param name="assortId">Assort to look for linked quest id</param>
            <returns>quest id + array of quest status the assort should show for</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.AssortHelper.StripLockedLoyaltyAssort(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
            Remove assorts from a trader that have not been unlocked yet
            </summary>
            <param name="pmcProfile">Player profile</param>
            <param name="traderId">Traders id</param>
            <param name="assort">Traders assorts</param>
            <returns>Trader assorts minus locked loyalty assorts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.GetAssort(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
                Get a traders assorts
                Can be used for returning ragfair / fence assorts
                Filter out assorts not unlocked due to level OR quest completion
            </summary>
            <param name="sessionId">session id</param>
            <param name="traderId">traders id</param>
            <param name="showLockedAssorts">Should assorts player hasn't unlocked be returned - default false</param>
            <returns>a traders' assorts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.ResetBuyRestrictionCurrentValue(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Reset every traders root item `BuyRestrictionCurrent` property to 0
            </summary>
            <param name="assortItems">Items to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.HydrateMergedQuestAssorts">
            <summary>
            Create a dictionary keyed by quest status (started/success) with every assortId to QuestId from every trader
            </summary>
            <returns>Dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.ResetExpiredTrader(SPTarkov.Server.Core.Models.Eft.Common.Tables.Trader)">
            <summary>
                Reset a traders assorts and move nextResupply value to future
                Flag trader as needing a flea offer reset to be picked up by flea update() function
            </summary>
            <param name="trader">trader details to alter</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.TraderAssortsHaveExpired(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does the supplied trader need its assorts refreshed
            </summary>
            <param name="traderID">Trader to check</param>
            <returns>true they need refreshing</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderAssortHelper.GetPristineTraderAssorts(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get an array of pristine trader items prior to any alteration by player (as they were on server start)
            </summary>
            <param name="traderId">trader id</param>
            <returns>array of Items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetTraderByNickName(System.String)">
            <summary>
            Get a traders base data from its nickname, case-insensitive
            </summary>
            <param name="traderName">Nickname of trader, e.g. prapor</param>
            <returns>TraderBase</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetTrader(SPTarkov.Server.Core.Models.Common.MongoId,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Get a trader base object, update profile to reflect players current standing in profile (if session id provided)
                when trader not found in profile
            </summary>
            <param name="traderId">Traders Id to return base of</param>
            <param name="sessionId">OPTIONAL - Players id</param>
            <returns>Trader base</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetAllTraders(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle client/trading/api/traderSettings
            </summary>
            <param name="sessionId">session id</param>
            <returns>Return a list of all traders</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetTraderAssortsByTraderId(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all assort data for a particular trader
            </summary>
            <param name="traderId">Trader to get assorts for</param>
            <returns>TraderAssort</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetTraderAssortItemByAssortId(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Retrieve the Item from a traders assort data by its id
            </summary>
            <param name="traderId">Trader to get assorts for</param>
            <param name="assortId">Id of assort to find</param>
            <returns>Item object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.ResetTrader(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Reset a profiles trader data back to its initial state as seen by a level 1 player
                Does NOT take into account different profile levels
            </summary>
            <param name="sessionId">session id of player</param>
            <param name="traderId">trader id to reset</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetStartingStanding(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.ProfileTraderTemplate)">
            <summary>
                Get the starting standing of a trader based on the current profiles type (e.g. EoD, Standard etc)
            </summary>
            <param name="traderId">Trader id to get standing for</param>
            <param name="rawProfileTemplate">Raw profile from profiles.json to look up standing from</param>
            <returns>Standing value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.SetTraderUnlockedState(SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Alter a traders unlocked status
            </summary>
            <param name="traderId">Trader to alter</param>
            <param name="status">New status to apply</param>
            <param name="sessionId">Session id of player</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.AddStandingToTrader(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                Add standing to a trader and level them up if exp goes over level threshold
            </summary>
            <param name="sessionId">Session id of player</param>
            <param name="traderId">Traders id to add standing to</param>
            <param name="standingToAdd">Standing value to add to trader</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.AddStandingValuesTogether(System.Nullable{System.Double},System.Double)">
            <summary>
                Add standing to current standing
            </summary>
            <param name="currentStanding">current trader standing</param>
            <param name="standingToAdd">standing to add to trader standing</param>
            <returns>current standing + added standing</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.ValidateTraderStandingsAndPlayerLevelForProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Iterate over a profile's traders and ensure they have the correct loyalty level for the player.
            </summary>
            <param name="sessionId">Profile to check.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.LevelUp(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Calculate trader's level based on experience amount and increments level if over threshold.
                Also validates and updates player level if not correct based on XP value.
            </summary>
            <param name="traderId">Trader to check standing of.</param>
            <param name="pmcData">Profile to update trader in.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetNextUpdateTimestamp(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the next update timestamp for a trader.
            </summary>
            <param name="traderId">Trader to look up update value for.</param>
            <returns>Future timestamp.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetTraderUpdateSeconds(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the reset time between trader assort refreshes in seconds.
            </summary>
            <param name="traderId">Trader to look up.</param>
            <returns>Time in seconds.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetLoyaltyLevel(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
            Get the loyalty level object a profile has with specified trader
            </summary>
            <param name="traderId">Trader id to get loyalty level of</param>
            <param name="pmcData">Profile to look for loyalty data in</param>
            <returns>TraderLoyaltyLevel</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.AddTraderPurchasesToPlayerProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Helpers.Commerce.PurchaseDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Store the purchase of an assort from a trader in the player profile
            </summary>
            <param name="sessionId">Session id</param>
            <param name="newPurchaseDetails">New item assort id + count</param>
            <param name="itemPurchased">Item purchased</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetAccountTypeAdjustedTraderPurchaseLimit(System.Double,System.String)">
            <summary>
                EoD and Unheard get a 20% bonus (1.2) to personal trader limit purchases
            </summary>
            <param name="buyRestrictionMax">Existing value from trader item</param>
            <param name="gameVersion">Profiles game version</param>
            <returns>buyRestrictionMax value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.GetHighestSellToTraderPrice(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the highest price item can be sold to trader for (roubles)
            </summary>
            <param name="tpl">Item to look up best trader sell-to price</param>
            <returns>Rouble price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.Traders.TraderHelper.SortByTraderId(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderBase,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderBase)">
            <summary>
                Order traders by their traderId (tid)
            </summary>
            <param name="traderA">First trader to compare</param>
            <param name="traderB">Second trader to compare</param>
            <returns>1,-1 or 0</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.WeightedRandomHelper.GetWeightedValue``1(System.Collections.Generic.Dictionary{``0,System.Double})">
            <summary>
                Choose an item from the passed in array based on the weightings of each
            </summary>
            <param name="values">Items and weights to use</param>
            <returns>Chosen item from array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.WeightedRandomHelper.WeightedRandom``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{System.Double})">
            <summary>
                Picks the random item based on its weight.
                The items with higher weight will be picked more often (with a higher probability).
                For example:
                - items = ['banana', 'orange', 'apple']
                - weights = [0, 0.2, 0.8]
                - weightedRandom(items, weights) in 80% of cases will return 'apple', in 20% of cases will return
                'orange' and it will never return 'banana' (because probability of picking the banana is 0%)
            </summary>
            <param name="items">List of items</param>
            <param name="weights">List of weights</param>
            <returns>Dictionary with item and index</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.WeightedRandomHelper.ReduceWeightValues(System.Collections.Generic.IDictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
                Find the greatest common divisor of all weights and use it on the passed in dictionary
            </summary>
            <param name="weightedDict">Values to reduce</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Helpers.WeightedRandomHelper.CommonDivisor(System.Collections.Generic.List{System.Double})">
            <summary>
            Get the common divisor between all values from provided list and return it
            </summary>
            <param name="numbers">Numbers to get common divisor of</param>
            <returns>Common divisor</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Loaders.BundleLoader.GetBundles">
            <summary>
                HandleAsync singleplayer/bundles
            </summary>
            <returns> List of loaded bundles.</returns>
        </member>
        <member name="P:SPTarkov.Server.Core.Migration.IProfileMigration.MigrationName">
            <summary>
            The name of the migration
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Migration.IProfileMigration.PrerequisiteMigrations">
            <summary>
            An IEnumerable of migrations that need to come before the current one
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.CanMigrate(System.Text.Json.Nodes.JsonObject,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Migration.IProfileMigration})">
            <summary>
            Allows for adding checks if the profile in question can migrate
            </summary>
            <param name="profile">The profile to check</param>
            <param name="previouslyRanMigrations"></param>
            <returns>Returns true if the profile can migrate, returns false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.CanMigrate(System.Text.Json.Nodes.JsonObject,SPTarkov.Server.Core.Migration.ProfileMigrationContext,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Migration.IProfileMigration})">
            <summary>
            Allows for adding checks if the profile in question can migrate with per-profile migration context
            </summary>
            <param name="profile">The profile to check</param>
            <param name="context">Per-profile context shared between migration steps</param>
            <param name="previouslyRanMigrations"></param>
            <returns>Returns true if the profile can migrate, returns false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.Migrate(System.Text.Json.Nodes.JsonObject)">
            <summary>
            Migrate the profile, this should be used to handle and fix old data that has been removed from the <see cref="T:SPTarkov.Server.Core.Models.Eft.Profile.SptProfile"/> record
            or a general incompatibility due to different typing
            </summary>
            <param name="profile">The profile to migrate</param>
            <returns>Returns the migrated profile on success, or null if it failed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.Migrate(System.Text.Json.Nodes.JsonObject,SPTarkov.Server.Core.Migration.ProfileMigrationContext)">
            <summary>
            Migrate the profile with per-profile migration context.
            </summary>
            <param name="profile">The profile to migrate</param>
            <param name="context">Per-profile context shared between migration steps</param>
            <returns>Returns the migrated profile on success, or null if it failed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.PostMigrate(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
            Handles post migration of the profile, this can be used to fill new types with (old) data gotten from <see cref="M:SPTarkov.Server.Core.Migration.IProfileMigration.Migrate(System.Text.Json.Nodes.JsonObject)"/>
            </summary>
            <returns>Should return true if successful, should return false if not</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.IProfileMigration.PostMigrate(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Migration.ProfileMigrationContext)">
            <summary>
            Handles post migration of the profile with per-profile migration context.
            </summary>
            <param name="profile">The deserialized profile to update</param>
            <param name="context">Per-profile context shared between migration steps</param>
            <returns>Should return true if successful, should return false if not</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations._3._11.HideoutSeed">
            <summary>
            In 0.16.1.3.35312 BSG changed this to from an int to a hex64 encoded value.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations._3._11.ThreeTenMinorFixes">
            <summary>
            In the minor versions of 3.10 or somewhere in between these properties were added, it's possible that a profile has not updated
            To these thus never having received them, re-add them here.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations._4._0.RemovePassword">
            <summary>
            Password property was removed from profile.info in 4.0
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations._4._0.TheVoices">
            <summary>
            In 16.8.0.37972 BSG added customization for voices, technically this only affects BE profiles, but this should fix these.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.Migrations._4._0.TheVoices.#ctor(SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable)">
            <summary>
            In 16.8.0.37972 BSG added customization for voices, technically this only affects BE profiles, but this should fix these.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations.FixChatBotAids">
            <summary>
            Chatbots used to share a single hardcoded AID (1234566).
            This broke certain UI elements as they didn't expect multiple users with the same id
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.Migrations.FixChatBotAids.#ctor(SPTarkov.Server.Core.Models.Spt.Config.CoreConfig)">
            <summary>
            Chatbots used to share a single hardcoded AID (1234566).
            This broke certain UI elements as they didn't expect multiple users with the same id
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Migration.Migrations.FixChatBotAids.GetStaleBotUsers(System.Text.Json.Nodes.JsonObject)">
            <summary>
            Find every persisted chatbot user entry whose AID doesn't match the AID currently configured for that bot.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Migration.Migrations.Fixes.InvalidStackObjectsCountFix">
            <summary>
            This migration fixes an issue in SPT 4+ where we have made StackObjectsCount a double rather than an int, this should not be the case
            as it breaks the game due to the game expecting an int
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Common.IdWithCount.Id">
            <summary>
                ID of stack to take money from
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Common.IdWithCount.Count">
            <summary>
                Amount of money to take off player for treatment
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Common.MongoId">
            <summary>
            Represents a 12-<see cref="T:System.Byte"/> MongoDB-style ObjectId, consisting of:
            <list type="bullet">
              <item><description>4-byte timestamp (seconds since Unix epoch, big-endian)</description></item>
              <item><description>3-byte machine identifier</description></item>
              <item><description>2-byte process identifier (big-endian)</description></item>
              <item><description>3-byte incrementing counter (big-endian)</description></item>
            </list>
            </summary>
            <remarks>
            <para>
            This struct stores the ObjectId in two packed fields for efficient memory usage
            and comparison:
            <list type="bullet">
              <item><see cref="F:SPTarkov.Server.Core.Models.Common.MongoId._timestampAndMachine"/><description>: First 8 bytes (timestamp + machine ID)</description></item>
              <item><see cref="F:SPTarkov.Server.Core.Models.Common.MongoId._pidAndIncrement"/><description>: Last 4 bytes (process ID + counter)</description></item>
            </list>
            </para>
            <para>
            The struct is immutable and implements <see cref="T:System.IEquatable`1"/> for fast comparisons.
            </para>
            </remarks>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Common.MongoId._timestampAndMachine">
            <summary>
            The first 8 bytes: 4-byte timestamp + 3-byte machine ID + 1 byte of PID.
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Common.MongoId._pidAndIncrement">
            <summary>
            The last 4 bytes: remaining 1 byte of PID + 3-byte counter.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.#ctor">
            <summary>
            Initializes a new <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/> with a generated value
            based on the current time, machine ID, process ID, and counter.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.HexCharToValue(System.Char)">
            <summary>
            Converts a hexadecimal character into its corresponding integer nibble value.
            </summary>
            <param name="c">The hex character to evaluate (0-9, a-f, A-F).</param>
            <returns>An integer value from 0 to 15 if the character is valid hex; otherwise, -1.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.HexValueToChar(System.Int32)">
            <summary>
            Converts an integer nibble value into its corresponding lowercase hexadecimal character representation.
            </summary>
            <param name="value">The nibble value to convert (0-15).</param>
            <returns>A lowercase hexadecimal character representing the specified value.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.ToString">
            <summary>
            Returns the MongoId as a 24-character lowercase hexadecimal string.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.TryFormat(System.Span{System.Char},System.Int32@)">
            <summary>
            Tries to format the current <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/> instance into the provided character span.
            </summary>
            <param name="destination">The destination span. Must be at least 24 characters long.</param>
            <param name="charsWritten">When this method returns, contains the number of characters written.</param>
            <returns><see langword="true"/> if the formatting was successful; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.Equals(SPTarkov.Server.Core.Models.Common.MongoId)">
            <inheritdoc/>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.IsValidMongoId(System.String)">
            <summary>
            Validates whether the specified string represents a valid MongoDB ObjectId format.
            </summary>
            <param name="stringToCheck">The string representation of the identifier to validate.</param>
            <returns><see langword="true"/> if the string satisfies format constraints; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.Equals(System.Object)">
            <inheritdoc/>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.GetHashCode">
            <inheritdoc/>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Common.MongoId.Empty">
            <summary>
            Returns an empty <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/> instance with all internal bits initialized to zero.
            </summary>
            <returns>A default initialized <see cref="T:SPTarkov.Server.Core.Models.Common.MongoId"/>.</returns>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GenerateCondition.Role">
            <summary>
                e.g. assault/pmcBot/bossKilla
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings">
             <summary>
             <para>
             See BotGlobalAimingSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.MaxAimPrecicing">
            <summary>
            Time for Maximum shooting improvement depending on how long the bot aims
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.CoefFromCover">
            <summary>
            increased aiming when peeking out from behind cover
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.HardAim">
            <summary>
            Improved Aiming Factor
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.HardAimChance100">
            <summary>
            aim chance while shooting [0;100]
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.PanicTime">
            <summary>
            Panic time is normal
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.DangerUpPoint">
            <summary>
            danger point firing level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.MaxAimingUpgradeByTime">
            <summary>
            how much better can shooting be from zeroing in - 0.15 == 85%. 0.5 == 50% . 1 == 0%
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.DamageToDiscardAim0100">
            <summary>
            this is the probability that the bot will mow down the shot when hit. The alternative is to worsen the aiming time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.ShootToChangePriority">
            <summary>
            How many shots on target are needed approximately to change the priority to shooting at legs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.FirstContactAddSec">
            <summary>
            Added to the first time a bot aims at a player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.FirstContactAddChance100">
            <summary>
            Chance of triggering the delay specified in FIRST_CONTACT_ADD_SEC
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.BaseShief">
            <summary>
            Base shift in meters for aiming (example: BASE_SHIEF=5 => means at a distance of 20 meters the aiming will be as at 20+5=25)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.AnytimeLightWhenAim100">
            <summary>
            Chance that the bot will turn on the flashlight when aiming
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.AnyPartShootTime">
            <summary>
            How many seconds after first spotting an enemy will it be possible to shoot at any part of the body?
            default 900
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.MaxAimTime">
            <summary>
            Maximum aiming time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.BadShootsMin">
            <summary>
            Base number of hits past MIN
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalAimingSettings.FirstContactHardToSeeMissShootsDistance">
            <summary>
            The distance to the target, if exceeded, the bot misses on first contact if visibility is obstructed
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotUnderbarrelLauncherAimingSettings">
            <summary>
            See BotUnderbarrelLauncherAimingSettings in the client, this record should match that
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotUnderbarrelLauncherAimingSettings.BotMoveIfDelta">
            <summary>
            The bot is considered to be moving if it has passed more than X frame
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotUnderbarrelLauncherAimingSettings.PanicTime">
            <summary>
            Panic time is normal
            default 6
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotUnderbarrelLauncherAimingSettings.BadShootsMainCoef">
            <summary>
            Base coefficient from the formula == Y*ln(x/5+1.2)
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalCoreSettings">
             <summary>
             <para>
             See GClass611 (To be remapped to BotGlobalsCoreSettingsClass) in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLayData">
             <summary>
             <para>
             See BotGlobalLayData in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLayData.CheckShootWhenLaying">
            <summary>
            When lying down, checks whether it is possible to shoot from this position at the last known position of the enemy. (If not, then it can lie down around the corner, etc.)
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData">
             <summary>
             <para>
             See BotGlobalLookData in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.OldTimePoint">
            <summary>
            The lifetime of the point up to which the bot will pay attention to it with the standard inspection algorithm
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.MinDistanceVisibilityChangeSpeedK">
            <summary>
            The maximum value of the coefficient of the speed of change of the visibility scale at a minimum distance. The higher it is, the faster the scale will increase near the enemy
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.NoGreenDist">
            <summary>
            if the distance between players is less than X then grass and foliage are ignored at the Layers level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.NoGrassDist">
            <summary>
            if the distance between players is less than X then grass is ignored at the Layers level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.InsideBushCoef">
            <summary>
            Coefficient applied to the speed of notice if the bot is inside the bush
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.SelfNightvision">
            <summary>
            what curve to use for vision range by time of day
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalLookData.LookThroughPeriodByHit">
            <summary>
            How many seconds after being hit will you be able to see through the greenery?
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalPatrolSettings">
             <summary>
             <para>
             See BotGlobalPatrolSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsBossSettings">
             <summary>
             See BotGlobalsBossSettings in the client, this record should match that
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsBossSettings.KojaniyDistToBeEnemy">
            <summary>
            to calculate the number of enemies, this radius is taken into account
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsChangeSettings">
             <summary>
             <para>
             See BotGlobalsChangeSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings">
             <summary>
             <para>
             See BotGlobalsCoverSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings.RunIfFar">
            <summary>
            The bot will run to cover if it is closer than X
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings.StayIfFar">
            <summary>
            The bot will go shooting into cover if it is closer than X but more than RUN_IF_FAR
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings.MinToEnemyToBeNotSafe">
            <summary>
            If the enemy is closer than X to this point, the bot will consider that it is impossible to hide there.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings.EndHoldIfEnemyCloseAndVisible">
            <summary>
            If the enemy is visible (we are not under fire) and closer than X meters, then we stop holding.
            default 15
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsCoverSettings.CanLayToCover">
            <summary>
            Can it lie down in shelters if it is of the lying type?
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsGrenadeSettings">
             <summary>
             <para>
             See BotGlobalsGrenadeSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsHearingSettings">
             <summary>
             <para>
             See BotGlobasHearingSettings in the client (Yes, with the typo), this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalShootData">
             <summary>
             <para>
             See BotGlobalShootData in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalShootData.MissToHead">
            <summary>
            The bot misses the head
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalShootData.MissOnMove">
            <summary>
            The bot misses while moving
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalShootData.MissOnTransition">
            <summary>
            Bot misses during transition animations
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings">
             <summary>
             <para>
             See BotGlobalsMindSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.GrenadeDamageIgnore">
            <summary>
            Should the bot ignore damage from grenades
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.MinShootsTime">
            <summary>
            Min. number of shots fired at random at the position from which fire was conducted at close range
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.MaxShootsTime">
            <summary>
            Max number of shots fired at random at the position from which the fire was conducted at close range
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.TimeToRunToCoverCauseShootSec">
            <summary>
            The bot can only punish after this amount of time has passed since the last enemy it saw disappeared from the field.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.DamageReductionTimeSec">
            <summary>
            The time after which the bot will restore its characteristics after receiving damage
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.MinDamageScare">
            <summary>
            Minimum damage a bot must take to get a danger point
            default 20
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.ChanceToRunCauseDamage0100">
            <summary>
            The probability that a bot will run if it is hit while it is in cover and cannot/cannot see to shoot at the enemy
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.TimeToForgorAboutEnemySec">
            <summary>
            After X seconds, the enemy stops being given out by the task distributor to bots
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.TimeToFindEnemy">
            <summary>
            After X seconds the bot will search for the enemy by coming to the place of his last vision! must be less than TIME_TO_FORGOR_ABOUT_ENEMY_SEC
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.HitPointDetection">
            <summary>
            The coefficient of accuracy of perception of the position from which the player was hit is higher - more accurate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.DangerPointChooseCoef">
            <summary>
            Danger point coefficient when seeking shelter. Danger point
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.SimplePointChooseCoef">
            <summary>
            Danger point coefficient when seeking shelter. Simple point
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.SearchTarget">
            <summary>
            Does the player search for the opponent when there is a GoalTarget?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.EnemyByGroupsPmcPlayers">
            <summary>
            if the flag is set on at least one bot in a bot group, then the entire group becomes hostile, in which there is one hostile PMC player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.EnemyByGroupsSavagePlayers">
            <summary>
            if the flag is set on at least one bot in a bot group, then the entire group becomes hostile, which contains one hostile wild player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.BossIgnoreLoyalty">
            <summary>
            If true then bosses do not change their behavior for a player with a high reputation as a fencer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.FriendlyBotTypes">
            <summary>
            Must be sent to client as strings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.WarnBotTypes">
            <summary>
            Must be sent to client as strings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.EnemyBotTypes">
            <summary>
            Must be sent to client as strings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.RevengeBotTypes">
            <summary>
            Must be sent to client as strings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.EnemyLookAtMeAng">
            <summary>
            The angle at which the bot understands that the enemy is looking at it
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.BulletFeelDist">
            <summary>
            Distance from which a bot can "feel" a bullet
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.AttackImmediatlyChance0100">
            <summary>
            Chance that after losing sight of an enemy and not having a new one, the bot will immediately go looking for an enemy.
            Only applicable for attack tactics. (Then there is a check for your own strength and the strength of the enemy.)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.ChanceFuckYouOnContact100">
            <summary>
            Chance to show a faq when the bot sees the player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.FriendDeadAgrLow">
            <summary>
            How much does a bot's aggression drop if someone in its group is killed?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.ChanceToStayWhenWarnPlayer100">
            <summary>
            Chance that after the first 2 actions when warning the bot will stand and wait for the next 4 seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.DogFightIn">
            <summary>
            Will enter dogfight
            default 3
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.CanExecuteRequests">
            <summary>
            Can a bot execute requests?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.SurgeKitOnlySafeContainer">
            <summary>
            Use surgeon kit only from safe container
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.HowWorkOverDeadBody">
            <summary>
            What exactly to do when you come to a corpse 1 - use a medicine kit 2 - loot. Default - watch. public bool CAN_TALK = true;
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.MayBeCalledForHelp">
            <summary>
            The bot can be called to help by the boss (for example, Tagilla or Boar
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.UseAddToEnemyValidation">
            <summary>
            If the flag is set, then enemies are added only for reasons from the VALID_REASONS_TO_ADD_ENEMY list.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.ValidReasonsToAddEnemy">
            <summary>
            List of valid reasons for adding enemies, provided that the USE_ADD_TO_ENEMY_VALIDATION flag is set
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMindSettings.PushAndSuppressPush">
            <summary>
            For the PushAndSuppressLayer layer, the distance from which the bot will push HARD
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsMoveSettings">
             <summary>
             <para>
             See BotGlobalsMoveSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsScatteringSettings">
             <summary>
             <para>
             See BotGlobalsScatteringSettings in the client, this record should match that
             </para>
            
             <para>
             These are all nullable so that only values get written if they are set, we don't want default values to be written to the client
             </para>
             </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsScatteringSettings.FromShot">
            <summary>
            Degrees\How much the bot's spread angle diverges when it is hit, multiplied by the damage
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsScatteringSettings.BloodFall">
            <summary>
            Float\to Coefficient of change in working circle of accuracy during bleeding
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Bot.GlobalSettings.BotGlobalsScatteringSettings.LayFactor">
            <summary>
            At the moment of changing the position to prone/non-prone, the current circle of convergence will increase by X
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.Base">
            <summary>
                Map meta-data
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.LooseLoot">
            <summary>
                Loose loot positions and item weights
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.StaticLoot">
            <summary>
                Static loot item weights
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.StaticContainers">
            <summary>
                Static container positions and item weights
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.Statics">
            <summary>
                All possible static containers on map + their assign groupings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Location.AllExtracts">
            <summary>
                All possible map extracts extracted from client via modules patch
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotEasy">
            <summary>
                Weighting on how likely a bot will be Easy difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotHard">
            <summary>
                Weighting on how likely a bot will be Hard difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotImpossible">
            <summary>
                Weighting on how likely a bot will be Impossible difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotMax">
            <summary>
                Maximum Number of bots that are currently alive/loading/delayed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotMaxPlayer">
            <summary>
                Is not used in 33420
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotMaxTimePlayer">
            <summary>
                Is not used in 33420
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotNormal">
            <summary>
                Weighting on how likely a bot will be Normal difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotSpawnCountStep">
            <summary>
                How many bot slots that need to be open before trying to spawn new bots.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotSpawnPeriodCheck">
            <summary>
                How often to check if bots are spawn-able. In seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotSpawnTimeOffMax">
            <summary>
                The bot spawn will toggle on and off in intervals of Off(Min/Max) and On(Min/Max)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotStart">
            <summary>
                How soon bots will be allowed to spawn
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.LocationBase.BotStop">
            <summary>
                After this long bots will no longer spawn
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Exit.Chance">
            <summary>
                % Chance out of 100 exit will appear in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Wave.SptId">
            <summary>
                OPTIONAL - Needs to be unique - Used by custom wave service to ensure same wave isnt added multiple times
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Wave.SpawnMode">
            <summary>
                'pve' and/or 'regular'
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.SpawnpointTemplate.Id">
            <summary>
            Not a mongoId
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.PmcData.CheckedChambers">
            <summary>
            Returns the list of IDs of the weapons, which the player has checked the chamber of in the last raid.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.PostRaidStats.Arena">
            <summary>
                Only found in profile we get from client post raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Achievement.AssetPath">
            <summary>
            Unused in the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Achievement.ShowProgress">
            <summary>
            Unused in the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase.SessionId">
            <summary>
                SPT property - use to store player id - TODO - move to AID ( account id as guid of choice)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase.Achievements">
            <summary>
                Achievement id and timestamp
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase.IsPmc">
            <summary>
                SPT specific property used during bot generation in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.MoneyTransferLimits.NextResetTime">
            <summary>
                TODO: Implement
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TaskConditionCounter.SourceId">
            <summary>
                Quest id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory.HideoutAreaStashes">
            <summary>
                Key is hideout area enum numeric as string e.g. "24", value is area _id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory.FastPanel">
            <summary>
            key = "Item4", "Item10"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.InsuredItem.TId">
            <summary>
                Trader ID item was insured by
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Hideout.Seed">
            <summary>
                32 char hex value
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.Progress">
            <summary>
                Seconds passed of production
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.InProgress">
            <summary>
                Is craft in some state of being worked on by client (crafting/ready to pick up)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.ProductionTime">
            <summary>
                Seconds needed to fully craft
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.needFuelForAllProductionTime">
            <summary>
                Used in hideout production.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.NeedFuelForAllProductionTime">
            <summary>
                Used when sending data to client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.SptIsComplete">
            <summary>
                Some crafts are always inProgress, but need to be reset, e.g. water collector
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.SptIsContinuous">
            <summary>
                Is the craft a Continuous, e.g. bitcoins/water collector
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.SptRequiredTools">
            <summary>
                Stores a list of tools used in this craft and whether they're FiR, to give back once the craft is done
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Production.SptIsCultistCircle">
            <summary>
                Craft is cultist circle sacrifice
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea.CompleteTime">
            <summary>
                Must be integer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.HideoutSlot.LocationIndex">
            <summary>
                SPT specific value to keep track of what index this slot is (0,1,2,3 etc.)
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Common.Tables.DifficultyCategories">
            <summary>
            See BotSettingsComponents in the client, this record should match that
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Experience.AggressorBonus">
            <summary>
                key = bot difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Experience.Reward">
            <summary>
                key = bot difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Experience.StandingForKill">
            <summary>
                key = bot difficulty
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData.Weights">
            <summary>
                key: number of items, value: weighting
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData.Whitelist">
            <summary>
                Array of item tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.HideoutItem._Id">
            <summary>
                Hideout inventory id that was used by improvement action
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ItemLocation.Rotation">
            <summary>
                SPT property?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Upd.SptPresetId">
            <summary>
                SPT specific property, not made by BSG
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.UpdDogtag.Time">
            <summary>
            e.g. 2024-11-14T21:24:59.329+03:00
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.UpdDogtag.Status">
            <summary>
            e.g. "Killed by"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.UpdDogtag.WeaponName">
            <summary>
            e.g. 5fbcc1d9016cce60e8341ab3 ShortName
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ProfileSides.CustomFlags">
            <summary>
            Custom flags can be stored here
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ProfileTraderTemplate.FleaBlockedDays">
            <summary>
                How many days is usage of the flea blocked for upon profile creation
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ProfileTraderTemplate.LockedByDefaultOverride">
            <summary>
                What traders default to being locked on profile creation
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ProfileTraderTemplate.PurchaseAllClothingByDefaultForTrader">
            <summary>
                What traders should have their clothing unlocked/purchased on creation
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest.QuestName">
            <summary>
                SPT addition - human readable quest name
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest.Id">
            <summary>
                _id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest.Status">
            <summary>
                Becomes 'AppearStatus' inside client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest.Side">
            <summary>
                "Pmc" or "Scav"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest.SptStatus">
            <summary>
                Status of quest to player
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus">
            <summary>
                Based on QuestDataClass in the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition.ParentId">
            <summary>
            This is set as nullable in the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestCondition.Target">
            <summary>
                Can be: string[] or string
                Can be mongoId or string e.g. event_labyrinth_06_mech_place_01
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.PmcDataRepeatableQuest.ChangeRequirement">
            <summary>
                What it costs to reset: QuestId, ChangeRequirement. Redundant to change requirements within RepeatableQuest
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ChangeCost.TemplateId">
            <summary>
                What item it will take to reset daily
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.ChangeCost.Count">
            <summary>
                Amount of item needed to reset
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward.TraderId">
            <summary>
                Hideout area id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward.AvailableInGameEditions">
            <summary>
                Game editions whitelisted to get reward
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward.NotAvailableInGameEditions">
            <summary>
                Game editions blacklisted from getting reward
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward.Message">
            <summary>
            Only found with `NotificationPopup` rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem.Blocks">
            <summary>
            Used for easy access during bot generation to any slot/container this item is blocking.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties.SpawnFilter">
            <summary>
                Not used in client, but still exists in the items json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties.ContainType">
            <summary>
                Unknown type it is an object[] in the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties.BodyPartPriority">
            <summary>
            E.g. "Stomach" or "RightLeg"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderRepair.ExcludedIdList">
            <summary>
                Doesn't exist in client object
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Common.Vector2">
            <summary>
            This struct is used instead of <see cref="T:System.Numerics.Vector2"/>
            so the JSON representation can use lowercase member names ("x", "y").
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Common.Vector3">
            <summary>
            This struct is used instead of <see cref="T:System.Numerics.Vector3"/>
            so the JSON representation can use lowercase member names ("x", "y", "z").
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Dialog.ChatServer.IsDeveloper">
            <summary>
                Possibly removed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Game.GameConfigResponse.TotalInGame">
            <summary>
                Total in game time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Health.HealthTreatmentRequestData.Items">
            <summary>
                Id of stack to take money from <br />
                Amount of money to take off player for treatment
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Health.BodyPartValues.Effects">
            <summary>
                Effects in array to be removed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.HandleQTEEventRequestData.Results">
            <summary>
                true if QTE was successful, otherwise false
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.HandleQTEEventRequestData.Id">
            <summary>
                Id of the QTE object used from db/hideout/qte.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.Stage.Container">
            <summary>
                Containers inventory tpl
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCustomizationApplyRequestData.OfferId">
            <summary>
                Id of the newly picked item to apply to hideout
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.HideoutImproveAreaRequestData.AreaId">
            <summary>
                Hideout area id from areas.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Hideout.HideoutProduction.EndProduct">
            <summary>
                Tpl of item being crafted
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemDirectRequest.ItemWithModsToAdd">
            <summary>
                Item and child mods to add to player inventory
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemRequestData.TraderId">
            <summary>
                Trader id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemsDirectRequest.ItemsWithModsToAdd">
            <summary>
                Item and child mods to add to player inventory
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemsDirectRequest.Callback">
            <summary>
                Runs after EACH item with children is added
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemsDirectRequest.UseSortingTable">
            <summary>
                Should sorting table be used when no space found in stash
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.AddItemTempObject.ContainerIdentifier">
            <summary>
                Container item will be placed in - stash or sorting table
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.InventorySplitRequestData.SplitItem">
            <summary>
                Id of item to split
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.InventorySplitRequestData.NewItem">
            <summary>
                Id of new item stack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.InventorySplitRequestData.Container">
            <summary>
                Destination new item will be placed in
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.OpenRandomLootContainerRequestData.Item">
            <summary>
                Container item id being opened
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.PinOrLockItemRequest.Item">
            <summary>
                Id of item being pinned
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Inventory.PinOrLockItemRequest.State">
            <summary>
                "Pinned"/"Locked"/"Free"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.ItemEvent.ProfileChange.Improvements">
            <summary>
                Hideout area improvement id
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.ItemEvent.TraderData">
            <summary>
                Related to TraderInfo
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse">
            <summary>
                An object sent back to the game client that contains alterations the client must make to ensure server/client are in sync
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Location.GetAirdropLootResponse.Icon">
            <summary>
                The type of airdrop
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData.ServerId">
            <summary>
                ID of server player just left
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData.LostInsuredItems">
            <summary>
                Insured items left in raid by player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData.TransferItems">
            <summary>
                Items sent via traders to player, keyed to service e.g. BTRTransferStash
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult.Result">
            <summary>
                "Survived/Transit" etc
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult.ExitName">
            <summary>
                "Gate 3" etc
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.EndRaidResult.PlayTime">
            <summary>
                Seconds in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.LocationTransit.SptLastVisitedLocation">
            <summary>
                The location player last visited
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.LocationTransit.SptExitName">
            <summary>
                Name of exit taken
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.GetRaidConfigurationRequestData.IsNightRaid">
            <summary>
            Custom property that is not received from or sent to the client.
            We calculate this once based on the time slot selected for the raid to use it during inventory generation.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Match.StartLocalRaidRequestData.ShouldSkipLootGeneration">
            <summary>
                Should loot generation be skipped, default false
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.PresetBuild.PresetBuildActionRequestData.Name">
            <summary>
                name of preset given by player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.GetProfileSettingsRequest.MemberCategory">
            <summary>
                Chosen value for profile.Info.SelectedMemberCategory
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Profile.SearchFriendResponse">
            <summary>
                Identical to `UserDialogInfo`
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.SptProfile.TraderPurchases">
            <summary>
                Assort purchases made by player since last trader refresh
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.SptProfile.FriendProfileIds">
            <summary>
                List of friend profile IDs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.SptProfile.CustomisationUnlocks">
            <summary>
                Stores profile-related customisation, e.g. clothing / hideout walls / floors
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.SptProfile.DialogueProgress">
            <summary>
                Stores the most recently sent dialog progress result from the client
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Info.ProfileId">
            <summary>
                main profile id
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Profile.UserBuilds">
            <summary>
                used by profile.userbuilds
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Eft.Profile.DefaultEquipmentPreset">
            <summary>
                Used by defaultEquipmentPresets.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.Version">
            <summary>
                What version of SPT was this profile made with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.Mods">
            <summary>
                What mods has this profile loaded at any point in time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.ReceivedGifts">
            <summary>
                What gifts has this profile received and how many
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.BlacklistedItemTemplates">
            <summary>
                item TPLs blacklisted from being sold on flea for this profile
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.FreeRepeatableRefreshUsedCount">
            <summary>
                key: daily type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.Migrations">
            <summary>
                When was a profile migrated, value is timestamp
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.Spt.CultistRewards">
            <summary>
                Cultist circle rewards received that are one time use, key (md5) is a combination of sacrificed + reward items
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo.Id">
            <summary>
                _id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Quests.CompleteQuestRequestData.QuestId">
            <summary>
                Quest Id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Quests.CompleteQuestRequestData.Type">
            <summary>
            This is only set if the quest is repeatable
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.ItemsCost">
            <summary>
                Handbook price
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.RequirementsCost">
            <summary>
                Rouble price per item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.SellInOnePiece">
            <summary>
                True when offer is sold as pack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.SummaryCost">
            <summary>
                Rouble price - same as requirementsCost
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.UnlimitedCount">
            <summary>
                Trader only
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.Quantity">
            <summary>
                Tightly bound to offer.items[0].upd.stackObjectsCount
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer.CreatedBy">
            <summary>
            SPT property - offer made by player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData.OnlyFunctional">
            <summary>
                'Only Operational'
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Repair.RepairActionDataRequest.Target">
            <summary>
                item to repair
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Repair.RepairKitsInfo.Id">
            <summary>
                id of repair kit to use
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Repair.RepairKitsInfo.Count">
            <summary>
                amount of units to reduce kit by
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Trade.ProcessBuyTradeRequestData.SchemeItems">
            <summary>
                Id of stack to take money from, is money tpl when Action is `SptInsure`
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Weather.Weather.Rain">
            <summary>
                1 - 3 light rain, 3+ 'rain'
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Eft.Weather.Weather.Cloud">
            <summary>
                less than -0.4 = clear day
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Enums.DogtagSide.NotApplicable">
            <summary>
            This is for the dogtag equipped by the player, which shows up as 0 (integer) on the profile json.
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Enums.ModSpawn.DEFAULT_MOD">
            <summary>
            Chosen mod should be the tpl from the default weapon template
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Enums.ModSpawn.SPAWN">
            <summary>
            Normal behaviour
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Models.Enums.ModSpawn.SKIP">
            <summary>
            Item should not be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.IsPmc">
            <summary>
                Should the bot be generated as a PMC
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.Role">
            <summary>
                assault/pmcBot etc
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.RoleLowercase">
            <summary>
                assault/pmcBot etc
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.Side">
            <summary>
                Side of bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.PlayerLevel">
            <summary>
                Active players current level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.LocationSpecificPmcLevelOverride">
            <summary>
                Level specific overrides for PMC level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.BotRelativeLevelDeltaMax">
            <summary>
                Delta of highest level of bot e.g. 50 means 50 levels above player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.BotRelativeLevelDeltaMin">
            <summary>
                Delta of lowest level of bot e.g. 50 means 50 levels below player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.BotCountToGenerate">
            <summary>
                How many to create and store
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.BotDifficulty">
            <summary>
                Desired difficulty of the bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.IsPlayerScav">
            <summary>
                Will the generated bot be a player scav
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.Location">
            <summary>
            Map bots will be spawned on
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.ClearBotContainerCacheAfterGeneration">
            <summary>
            DEFAULT: True
            Should the bot container cache be cleared after generating bot equipment + loot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.BotLevel">
            <summary>
            Level the bot will have once generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails.GameVersion">
            <summary>
            Version of the game bot will use - Only apples to PMCs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.CoreBot.AXEMANKILLSEND">
            <summary>
            Default = 4
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.CoreBot.ActivePatrolGeneratorEvent">
            <summary>
            Christmas/rudans related
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.CoreBot.ActiveForceAttackEvents">
            <summary>
            Weather related?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.RootEquipmentSlot">
            <summary>
                Root Slot being generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.RootEquipmentPool">
            <summary>
                Equipment pool for root slot being generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.SpawnChances">
            <summary>
                Dictionary of mod items and their chance to spawn for this bot type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.BotData">
            <summary>
                Bot-specific properties
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.RandomisationDetails">
            <summary>
                Settings from bot.json to adjust how item is generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateEquipmentProperties.GenerateModsBlacklist">
            <summary>
                OPTIONAL - Do not generate mods for tpls in this array
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.Weapon">
            <summary>
                Weapon to add mods to / result that is returned
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.ModPool">
            <summary>
                Pool of compatible mods to attach to weapon
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.WeaponId">
            <summary>
                ParentId of weapon
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.ParentTemplate">
            <summary>
                Weapon which mods will be generated on
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.ModSpawnChances">
            <summary>
                Chance values mod will be added
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.AmmoTpl">
            <summary>
                Ammo tpl to use when generating magazines/cartridges
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.BotData">
            <summary>
                Bot-specific properties
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.ModLimits">
            <summary>
                limits placed on certain mod types per gun
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.WeaponStats">
            <summary>
                Info related to the weapon being generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.GenerateWeaponRequest.ConflictingItemTpls">
            <summary>
                Array of item tpls the weapon does not support
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotData.Role">
            <summary>
                Role of bot weapon is generated for
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotData.Level">
            <summary>
                Level of the bot weapon is being generated for
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.BotData.EquipmentRole">
            <summary>
                role of bot when accessing bot.json equipment config settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.ModSlot">
            <summary>
                Slot mod will fit into
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.IsRandomisableSlot">
            <summary>
                Will generate a randomised mod pool if true
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.BotWeaponSightWhitelist">
            <summary>
                Parent slot the item will be a part of
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.BotEquipBlacklist">
            <summary>
                Blacklist to prevent mods from being picked
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.ItemModPool">
            <summary>
                Pool of items to pick from
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.Weapon">
            <summary>
                List with only weapon tpl in it, ready for mods to be added
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.AmmoTpl">
            <summary>
                Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.ParentTemplate">
            <summary>
                Parent item the mod will go into
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.ModSpawnResult">
            <summary>
                Should mod be spawned/skipped/use default
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.WeaponStats">
            <summary>
                Weapon stats for weapon being generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Bots.ModToSpawnRequest.ConflictingItemTpls">
            <summary>
                List of item tpls the weapon does not support
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropConfig.Loot">
            <summary>
                What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot">
            <summary>
                Loot inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.WeaponPresetCount">
            <summary>
                Min/max of weapons inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ArmorPresetCount">
            <summary>
                Min/max of armors (head/chest/rig) inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ItemCount">
            <summary>
                Min/max of items inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.WeaponCrateCount">
            <summary>
                Min/max of sealed weapon boxes inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ItemBlacklist">
            <summary>
                Items to never allow - tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ItemTypeWhitelist">
            <summary>
                Item type (parentId) to allow inside crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ItemLimits">
            <summary>
                Item type/ item tpls to limit count of inside crate - key: item base type: value: max count
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ItemStackLimits">
            <summary>
                Items to limit stack size of key: item tpl value: min/max stack size
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.ArmorLevelWhitelist">
            <summary>
                Armor levels to allow inside crate e.g. [4,5,6]
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AirdropLoot.AllowBossItems">
            <summary>
                Should boss items be added to airdrop crate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.PresetBatch">
            <summary>
                How many variants of each bot should be generated on raid start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.Bosses">
            <summary>
                What bot types should be classified as bosses
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.Durability">
            <summary>
                Control weapon/armor durability min/max values for each bot type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.LootItemResourceRandomization">
            <summary>
                Controls the percentage values of randomization item resources
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.ItemSpawnLimits">
            <summary>
                Control how many items are allowed to spawn on a bot <br />
                key: bottype, value: <br />
                key: itemTpl: value: max item count>
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.Equipment">
            <summary>
                Blacklist/whitelist items on a bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.ShowTypeInNickname">
            <summary>
                Show a bots botType value after their name
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.AssaultBrainType">
            <summary>
                What ai brain should a normal scav use per map
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.PlayerScavBrainType">
            <summary>
                What ai brain should a player scav use per map
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.MaxBotCap">
            <summary>
                Max number of bots that can be spawned in a raid at any one time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.ChanceAssaultScavHasPlayerScavName">
            <summary>
                Chance scav has fake pscav name e.g. Scav name (player name)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.SecureContainerAmmoStackCount">
            <summary>
                How many stacks of secret ammo should a bot have in its bot secure container
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.BotRolesWithDogTags">
            <summary>
                Bot roles in this array will be given a dog tag on generation
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.WalletLoot">
            <summary>
                Settings to control the items that get added into wallets on bots
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.CurrencyStackSize">
            <summary>
                Currency weights, Keyed by botrole / currency
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.LowProfileGasBlockTpls">
            <summary>
                Tpls for low profile gas blocks
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.DisableLootOnBotTypes">
            <summary>
                What bottypes should be excluded from having loot generated on them (backpack/pocket/vest) does not disable food/drink/special/
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.BotNameLengthLimit">
            <summary>
                Max length a bots name can be
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.BotRolesThatMustHaveUniqueName">
            <summary>
                Bot roles that must have a unique name when generated vs other bots in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.WeeklyBoss">
            <summary>
                Values relating to the weekly boss system - a boss is randomly picked each week to spawn at 100% of the time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BotConfig.ReplaceScavWith">
            <summary>
                Replace all scavs across all maps with the provided WildSpawnType
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GoonSpawnSystem.RotationIntervalHours">
            <summary>
            How often (in hours) the goons rotate to a new map
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeeklyBossSettings.Enabled">
            <summary>
            Should a weekly boss be picked to 100% spawn
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeeklyBossSettings.BossPool">
            <summary>
            Bosses that can be picked
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeeklyBossSettings.ResetDay">
            <summary>
            Day of week boss choice resets
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WalletLootSettings.ChancePercent">
            <summary>
                Chance wallets have loot in them
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WalletLootSettings.WalletTplPool">
            <summary>
                What wallets will have money in them
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.WeaponModLimits">
            <summary>
                Limits for mod types per weapon .e.g. scopes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.WeaponSightWhitelist">
            <summary>
                Whitelist for weapon sight types allowed per gun
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.SkipBackPlateIfFrontPlateMissing">
            <summary>
                Whether the bot should skip chances to have a back plate if the front plate is missing
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.LimitPlateClassToFrontPlateClass">
            <summary>
                Try to match the bot's back plate level to the front plate's level instead of being a better plate
                Only works if filtering plates by level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.FilterPlatesByLevel">
            <summary>
                Should plates be filtered by level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.WeaponSlotIdsToMakeRequired">
            <summary>
                What additional slot ids should be seen as required when choosing a mod to add to a weapon
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.Randomisation">
            <summary>
                Adjust weighting/chances of items on bot by level of bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.Blacklist">
            <summary>
                Blacklist equipment by level of bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.Whitelist">
            <summary>
                Whitelist equipment by level of bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.WeightingAdjustmentsByBotLevel">
            <summary>
                Adjust equipment/ammo
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.ForceStock">
            <summary>
                Should the stock mod be forced to spawn on bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.FaceShieldIsActiveChancePercent">
            <summary>
                Chance face shield is down/active
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.LightIsActiveDayChancePercent">
            <summary>
                Chance gun flashlight is active during the day
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.LightIsActiveNightChancePercent">
            <summary>
                Chance gun flashlight is active during the night
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.LaserIsActiveChancePercent">
            <summary>
                Chance gun laser is active during the day
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.NvgIsActiveChanceDayPercent">
            <summary>
                Chance NODS are down/active during the day
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilters.NvgIsActiveChanceNightPercent">
            <summary>
                Chance NODS are down/active during the night
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ModLimits.ScopeLimit">
            <summary>
                How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ModLimits.LightLaserLimit">
            <summary>
                How many lasers or lights are allowed on a weapon - hard coded to work with TACTICAL_COMBO, and FLASHLIGHT
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.LevelRange">
            <summary>
                Between what levels do these randomisation setting apply to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.RandomisedWeaponModSlots">
            <summary>
                Mod slots that should be fully randomised -ignores mods from bottype.json and instead creates a pool using items.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.RandomisedArmorSlots">
            <summary>
                Armor slots that should be randomised e.g. 'Headwear, Armband'
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.Equipment">
            <summary>
                Equipment chances
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.WeaponMods">
            <summary>
                Weapon mod chances
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.EquipmentMods">
            <summary>
                Equipment mod chances
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisationDetails.MinimumMagazineSize">
            <summary>
                Key = weapon tpl, value = min size of magazine allowed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.NighttimeChanges.EquipmentModsModifiers">
            <summary>
                Applies changes to values stored in equipmentMods
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails.LevelRange">
            <summary>
                Between what levels do these equipment filter setting apply to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails.Equipment">
            <summary>
                Key: mod slot name e.g. mod_magazine, value: item tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails.Cartridge">
            <summary>
                Key: cartridge type e.g. Caliber23x75, value: item tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeightingAdjustmentDetails.LevelRange">
            <summary>
                Between what levels do these weight settings apply to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeightingAdjustmentDetails.Ammo">
            <summary>
                Key: ammo type e.g. Caliber556x45NATO, value: item tpl + weight
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeightingAdjustmentDetails.Equipment">
            <summary>
                Key: equipment slot e.g. TacticalVest, value: item tpl + weight
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeightingAdjustmentDetails.Clothing">
            <summary>
                Key: clothing slot e.g. feet, value: item tpl + weight
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisedResourceValues.ResourcePercent">
            <summary>
                Minimum percent of item to randomized between min and max resource
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RandomisedResourceValues.ChanceMaxResourcePercent">
            <summary>
                Chance for randomization to not occur
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Config.DefaultDurability">
            <summary>
                Durability values to be used when a more specific bot type can't be found
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BtrDeliveryConfig.ReturnTimeOverrideSeconds">
            <summary>
            Override to control how quickly delivery is processed/returned in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BtrDeliveryConfig.RunIntervalSeconds">
            <summary>
            How often server should process BTR delivery in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CoreConfig.ServerStartTime">
            <summary>
                Timestamp of server start up
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CoreConfig.CustomWatermarkLocaleKeys">
            <summary>
                Server locale keys that will be added to the bottom of the startup watermark
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BsgLogging.Verbosity">
            <summary>
                verbosity of what to log, yes I know this is backwards, but its how nlog deals with ordinals. <br />
                complain to them about it! In all cases, better exceptions will be logged.<br />
                WARNING: trace-info logging will quickly create log files in the megabytes.<br />
                0 - trace<br />
                1 - debug<br />
                2 - info<br />
                3 - warn<br />
                4 - error<br />
                5 - fatal<br />
                6 - off
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BsgLogging.SendToServer">
            <summary>
                Should we send the logging to the server
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.BetaDisclaimerText">
            <summary>
                Disclaimer outlining the intended usage of bleeding edge
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.BetaDisclaimerAcceptText">
            <summary>
                Text logged when users agreed to terms
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.ServerModsLoadedText">
            <summary>
                Server mods loaded message
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.ServerModsLoadedDebugText">
            <summary>
                Server mods loaded debug message text
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.ClientModsLoadedText">
            <summary>
                Client mods loaded message
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.ClientModsLoadedDebugText">
            <summary>
                Client mods loaded debug message text
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.IllegalPluginsLoadedText">
            <summary>
                Illegal plugins log message
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.IllegalPluginsExceptionText">
            <summary>
                Illegal plugins exception
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.ReleaseSummaryText">
            <summary>
                Summary of release changes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.IsBeta">
            <summary>
                Enables the cool watermark in-game
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.IsModdable">
            <summary>
                Whether mods are enabled
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.IsModded">
            <summary>
                Are mods loaded on the server?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Release.BetaDisclaimerTimeoutDelay">
            <summary>
                How long before the messagebox times out and closes the game
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.FixShotgunDispersion">
            <summary>
                Shotguns use a different value than normal guns causing huge pellet dispersion
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveModItemsFromProfile">
            <summary>
                Remove items added by mods when the mod no longer exists - can fix dead profiles stuck at game load
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RemoveInvalidTradersFromProfile">
            <summary>
                Remove invalid traders from profile - trader data can be leftover when player removes trader mod
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.FixProfileBreakingInventoryItemIssues">
            <summary>
                Fix issues that cause the game to not start due to inventory item issues
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GameFixes.RenamePreRaidLocales">
            <summary>
            Should pre-raid english locales be renamed during raid start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ServerFeatures.CreateNewProfileTypesBlacklist">
            <summary>
                Keyed to profile type e.g. "Standard" or "SPT Developer"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ServerFeatures.AchievementProfileIdBlacklist">
            <summary>
                Profile ids to ignore when calculating achievement stats
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ChatbotFeatures.Ids">
            <summary>
                Human readable id to guid for each bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ChatbotFeatures.Aids">
            <summary>
                Human readable id to account id for each bot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ChatbotFeatures.EnabledBots">
            <summary>
                Bot Ids player is allowed to interact with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Gift.Items">
            <summary>
                Items to send to player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Gift.Sender">
            <summary>
                Who is sending the gift to player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Gift.Trader">
            <summary>
                Optional - supply a trader type to send from, not necessary when sending from SYSTEM or USER
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Gift.LocaleTextId">
            <summary>
                Optional - if sending text from the client locale file
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Gift.ProfileChangeEvents">
            <summary>
                Optional, can be used to change profile settings like level/skills
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HideoutConfig.RunIntervalSeconds">
            <summary>
                How many seconds should pass before hideout crafts / fuel usage is checked and processed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HideoutConfig.RunIntervalValues">
            <summary>
                Default values used to hydrate `RunIntervalSeconds` with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HideoutConfig.UpdateProfileHideoutWhenActiveWithinMinutes">
            <summary>
                Only process a profile's hideout crafts when it has been active in the last x minutes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HideoutCraftToAdd.NewId">
            <summary>
                The new mongoId for the craft to use
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.HighValueThresholdRub">
            <summary>
                What is considered a "high-value" item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.HideoutTaskRewardTimeSeconds">
            <summary>
                Hideout/task reward crafts have a unique craft time
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.HideoutCraftSacrificeThresholdRub">
            <summary>
                Rouble amount player needs to sacrifice to get chance of hideout/task rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.CraftTimeOverride">
            <summary>
                -1 means no override, value in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.DirectRewards">
            <summary>
                Specific reward pool when player sacrifices specific item(s)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.DirectRewardStackSize">
            <summary>
                Overrides for reward stack sizes, keyed by item tpl
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.RewardItemBlacklist">
            <summary>
                Item tpls to exclude from the reward pool
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings.AdditionalRewardItemPool">
            <summary>
                Item tpls to include in the reward pool
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings.Repeatable">
            <summary>
                Is the reward a one time reward or can it be given multiple times
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HttpConfig.Ip">
            <summary>
                Address used by webserver
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HttpConfig.BackendIp">
            <summary>
                Address used by game client to connect to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HttpConfig.LogResponseBodies">
            <summary>
                Write full response bodies to the request log, debugging only. Responses reach tens of megabytes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HttpConfig.ServerImagePathOverride">
            <summary>
                e.g. "SPT_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "SPT_Data/Server/images/traders/NewTraderImage.png"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.AuthUserCredential.IsAdministrator">
            <summary>
                Gets or sets whether this user can access administrator-only web pages
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.RaidMenuSettings">
            <summary>
                Overrides to apply to the pre-raid settings screen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.CarExtracts">
            <summary>
                Names of car extracts
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.CoopExtracts">
            <summary>
                Names of coop extracts
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.CarExtractBaseStandingGain">
            <summary>
                Fence rep gain from a single car extract
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.CoopExtractBaseStandingGain">
            <summary>
                Fence rep gain from a single coop extract
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.ScavExtractStandingGain">
            <summary>
                Fence rep gain when successfully extracting as pscav
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.KeepFiRSecureContainerOnDeath">
            <summary>
                On death should items in your secure keep their Find in raid status regardless of how you finished the raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.AlwaysKeepFoundInRaidOnRaidEnd">
            <summary>
                If enabled always keep found in raid status on items
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InRaidConfig.PlayerScavHostileChancePercent">
            <summary>
                Percentage chance a player scav hot is hostile to the player when scavving
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.ReturnChancePercent">
            <summary>
                Chance item is returned as insurance, keyed by trader id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.ReturnTimeOverrideSeconds">
            <summary>
                Override to control how quickly insurance is processed/returned in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.StorageTimeOverrideSeconds">
            <summary>
                Override to control how long insurance returns stay in mail before expiring - in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.RunIntervalSeconds">
            <summary>
                How often server should process insurance in seconds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.MinAttachmentRoublePriceToBeTaken">
            <summary>
                Lowest rouble price for an attachment to be allowed to be taken
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InsuranceConfig.ChanceNoAttachmentsTakenPercent">
            <summary>
                Chance out of 100% no attachments from a parent are taken
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InventoryConfig.CustomMoneyTpls">
            <summary>
                Contains item tpls that the server should consider money and treat the same as roubles/euros/dollars
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InventoryConfig.SkillGainMultipliers">
            <summary>
                Multipliers for skill gain when inside menus, NOT in-game
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.InventoryConfig.DeprioritisedMoneyContainers">
            <summary>
                Container Tpls that should be deprioritised when choosing where to take money from for payments
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SealedAirdropContainerSettings.FoundInRaid">
            <summary>
                Should contents be flagged as found in raid when opened
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.Blacklist">
            <summary>
                Items that should be globally blacklisted
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.LootableItemBlacklist">
            <summary>
                Items that should not be lootable from any location
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.RewardItemBlacklist">
            <summary>
                items that should not be given as rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.RewardItemTypeBlacklist">
            <summary>
                Item base types that should not be given as rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.BossItems">
            <summary>
                Items that can only be found on bosses
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ItemConfig.CustomItemGlobalPresets">
            <summary>
                Presets to add to the globals.json `ItemPresets` dictionary on server start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HandbookPriceOverride.Price">
            <summary>
                Price in roubles
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HandbookPriceOverride.ParentId">
            <summary>
                NOT parentId from items.json, but handbook.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocaleConfig.GameLocale">
            <summary>
                e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocaleConfig.ServerLocale">
            <summary>
                e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocaleConfig.ServerSupportedLocales">
            <summary>
                Languages server can be translated into
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.RogueLighthouseSpawnTimeSettings">
            <summary>
                Rogues are classified as bosses and spawn immediately, this can result in no scavs spawning, delay rogues spawning to allow scavs to spawn first
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.CustomWaves">
            <summary>
                Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.OpenZones">
            <summary>
                Open zones to add to map
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.LootMaxSpawnLimits">
            <summary>
                Key = map id, value = dict of item tpls that should only have x forced loot spawn position
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.FitLootIntoContainerAttempts">
            <summary>
                How many attempts should be taken to fit an item into a container before giving up
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.AddOpenZonesToAllMaps">
            <summary>
                Add all possible zones to each maps `OpenZones` property
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.AddCustomBotWavesToMaps">
            <summary>
                Allow addition of custom bot waves designed by SPT to be added to maps - defined in configs/location.json.customWaves
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.EnableBotTypeLimits">
            <summary>
                Should the limits defined inside botTypeLimits to be applied to locations on game start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.BotTypeLimits">
            <summary>
                Add limits to a locations base.MinMaxBots array if enableBotTypeLimits is true
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.ContainerRandomisationSettings">
            <summary>
                Container randomisation settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.MinFillLooseMagazinePercent">
            <summary>
                How full must a random loose magazine be %
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.MinFillStaticMagazinePercent">
            <summary>
                How full must a random static magazine be %
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.MagazineLootHasAmmoChancePercent">
            <summary>
                Chance loose magazines have ammo in them TODO - rename to dynamicMagazineLootHasAmmoChancePercent
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.StaticMagazineLootHasAmmoChancePercent">
            <summary>
                Chance static magazines have ammo in them
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.LooseLootBlacklist">
            <summary>
                Key: map, value: loose loot ids to ignore
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.ScavRaidTimeSettings">
            <summary>
                Key: map, value: settings to control how long scav raids are
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.EquipmentLootSettings">
            <summary>
                Settings to adjust mods for lootable equipment in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.ReserveRaiderSpawnChanceOverrides">
            <summary>
                Min percentage to set raider spawns at, -1 makes no changes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.TplsToStripChildItemsFrom">
            <summary>
                Containers to remove all children from when generating static/loose loot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LocationConfig.NonMaps">
            <summary>
                Map ids players cannot visit
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EquipmentLootSettings.ModSpawnChancePercent">
            <summary>
                Percentage chance item will be added to equipment
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CustomWaves.Boss">
            <summary>
                Bosses spawn on raid start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ContainerRandomisationSettings.Maps">
            <summary>
                What maps can use the container randomisation feature
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ContainerRandomisationSettings.ContainerTypesToNotRandomise">
            <summary>
                Some container types don't work when randomised
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.ReduceLootByPercent">
            <summary>
                Should loot be reduced by same percent length of raid is reduced by
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.MinStaticLootPercent">
            <summary>
                Smallest % of container loot that should be spawned
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.MinDynamicLootPercent">
            <summary>
                Smallest % of loose loot that should be spawned
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.ReducedChancePercent">
            <summary>
                Chance raid time is reduced
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.ReductionPercentWeights">
            <summary>
                How much should raid time be reduced - weighted
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ScavRaidTimeLocationSettings.AdjustWaves">
            <summary>
                Should bot waves be removed / spawn times be adjusted
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LootConfig.LooseLoot">
            <summary>
                Spawn positions to add into a map, key=mapid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LootConfig.LooseLootSpawnPointAdjustments">
            <summary>
                Loose loot probability adjustments to apply on game start
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LootConfig.StaticItemWeightAdjustment">
            <summary>
                Adjust weighting of static items per location
                // value = percentage of original weight to use
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LostOnDeathConfig.Equipment">
            <summary>
                What equipment in each slot should be lost on death
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LostOnDeathConfig.SpecialSlotItems">
            <summary>
                Should special slot items be removed from quest inventory on death e.g. wifi camera/markers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.LostOnDeathConfig.QuestItems">
            <summary>
                Should quest items be removed from quest inventory on death
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.GameVersionWeight">
            <summary>
                What game version should the PMC have
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.AccountTypeWeight">
            <summary>
                What account type should the PMC have
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.VestLoot">
            <summary>
                Global whitelist/blacklist of vest loot for PMCs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.PocketLoot">
            <summary>
                Global whitelist/blacklist of pocket loot for PMCs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.BackpackLoot">
            <summary>
                Global whitelist/blacklist of backpack loot for PMCs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.UseDifficultyOverride">
            <summary>
                Use difficulty defined in config/bot.json/difficulty instead of chosen difficulty dropdown value
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.Difficulty">
            <summary>
                Difficulty override e.g. "AsOnline/Hard"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.LooseWeaponInBackpackChancePercent">
            <summary>
                Chance out of 100 to have a complete gun in backpack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.WeaponHasEnhancementChancePercent">
            <summary>
                Chance out of 100 to have an enhancement applied to PMC weapon
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.LooseWeaponInBackpackLootMinMax">
            <summary>
                MinMax count of weapons to have in backpack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.IsUsec">
            <summary>
                Percentage chance PMC will be USEC
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.ForceArmband">
            <summary>
                Force PMCs to use specific armband Tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.UsecType">
            <summary>
                WildSpawnType enum value USEC PMCs use
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.BearType">
            <summary>
                WildSpawnType enum value BEAR PMCs use
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.PmcType">
            <summary>
                What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.BotRelativeLevelDelta">
            <summary>
                How many levels above player level can a PMC be
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.ForceHealingItemsIntoSecure">
            <summary>
                Force a number of healing items into PMCs secure container to ensure they can heal
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PmcConfig.AddSecureContainerLootFromBotConfig">
            <summary>
                Should secure container loot from usec.json/bear.json be added to pmc bots secure
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HostilitySettings.AdditionalEnemyTypes">
            <summary>
                Bot roles that are 100% an enemy
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HostilitySettings.ChancedEnemies">
            <summary>
                Objects that determine the % chance another bot type is an enemy
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.HostilitySettings.AdditionalFriendlyTypes">
            <summary>
                Bot roles that are 100% a friendly
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SlotLootSettings.Whitelist">
            <summary>
                Item Type whitelist
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SlotLootSettings.Blacklist">
            <summary>
                Item tpl blacklist
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.MailRedeemTimeHours">
            <summary>
                Hours to get/redeem items from quest mail keyed by profile type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.UsecOnlyQuests">
            <summary>
                Collection of quests by id only available to usec
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.BearOnlyQuests">
            <summary>
                Collection of quests by id only available to bears
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.ProfileBlacklist">
            <summary>
                Quests that the keyed game version do not see/access
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.ProfileWhitelist">
            <summary>
                key=questid, gameversions that can see/access quest
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.RepeatableQuestTemplates">
            <summary>
                Holds repeatable quest template ids for pmc's and scav's
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.ShowNonSeasonalEventQuests">
            <summary>
                Show non-seasonal quests be shown to players
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.EventQuests">
            <summary>
                Collection of event quest data keyed by quest id.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.RepeatableQuests">
            <summary>
                List of repeatable quest configs for; daily, weekly, and daily scav.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.QuestConfig.LocationIdMap">
            <summary>
                Maps internal map names to their mongoId: Key - internal :: val - Mongoid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTemplates.Pmc">
            <summary>
                Pmc repeatable quest template ids keyed by type of quest
            Keys: elimination, completion, exploration
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTemplates.Scav">
            <summary>
                Scav repeatable quest template ids keyed by type of quest
            Keys: elimination, completion, exploration, pickup
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EventQuestData.Name">
            <summary>
                Name of the event quest
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EventQuestData.Season">
            <summary>
                Season to which this quest belongs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EventQuestData.StartTimestamp">
            <summary>
                Start timestamp
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EventQuestData.EndTimestamp">
            <summary>
                End timestamp
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EventQuestData.Yearly">
            <summary>
                Is this quest part of a yearly event, ex: Christmas
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.Id">
            <summary>
                Id for type of repeatable quest
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.Name">
            <summary>
                Human-readable name for repeatable quest type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.Side">
            <summary>
                Side this config belongs to. Note: Random not implemented, do not use!
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.Types">
            <summary>
                Types of tasks this config can generate; ex: Elimination
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.ResetTime">
            <summary>
                How long does the task stay active for after accepting it
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.NumQuests">
            <summary>
                How many quests should we provide per ResetTime
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.MinPlayerLevel">
            <summary>
                Min player level required to receive a quest from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.RewardScaling">
            <summary>
                Reward scaling config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.Locations">
            <summary>
                Location map
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.TraderWhitelist">
            <summary>
                Traders that are allowed to generate tasks from this config.
            Includes quest types, reward whitelist, and whether rewards can be weapons.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.QuestConfig">
            <summary>
                Quest config, holds information on how a task should be generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.RewardBaseTypeBlacklist">
            <summary>
                Item base types to block when generating rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.RewardBlacklist">
            <summary>
                Item tplIds to ignore when generating rewards
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.RewardAmmoStackMinSize">
            <summary>
                Minimum stack size that an ammo reward should be generated with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.FreeChangesAvailable">
            <summary>
                How many free task changes are available from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.FreeChanges">
            <summary>
                How many free task changes remain from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.KeepDailyQuestTypeOnReplacement">
            <summary>
                Should the task replacement category be the same as the one its replacing
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestConfig.StandingChangeCost">
            <summary>
                Reputation standing price for replacing a repeatable
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.Levels">
            <summary>
                Levels at which to increase to the next level of reward potential
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.Experience">
            <summary>
                Experience reward tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.Roubles">
            <summary>
                Rouble reward tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.GpCoins">
            <summary>
                Gp coin reward tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.Items">
            <summary>
                Item amount reward tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.Reputation">
            <summary>
                reputation amount reward tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.RewardSpread">
            <summary>
                Reward spread
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.SkillRewardChance">
            <summary>
                Skill reward chance tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RewardScaling.SkillPointReward">
            <summary>
                Skill reward amount tiers
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.TraderId">
            <summary>
                Trader Id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.Name">
            <summary>
                Human-readable name
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.QuestTypes">
            <summary>
                Quest types this trader can provide: Completion/Exploration/Elimination.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.RewardBaseWhitelist">
            <summary>
                Item categories that the reward can be
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.RewardCanBeWeapon">
            <summary>
                Can this reward be a weapon?
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderWhitelist.WeaponRewardChancePercent">
            <summary>
                Chance that the reward is a weapon
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTypesConfig.ExplorationConfig">
            <summary>
                Defines exploration repeatable task generation parameters
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTypesConfig.CompletionConfig">
            <summary>
                Defines completion repeatable task generation parameters
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTypesConfig.Pickup">
            <summary>
                Defines pickup repeatable task generation parameters - TODO: Not implemented/No Data - NOTE: Does not work with dynamicLocale
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepeatableQuestTypesConfig.Elimination">
            <summary>
                Defines elimination repeatable task generation parameters
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.LevelRange">
            <summary>
                Level range at which elimination tasks should be generated from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.MinimumExtracts">
            <summary>
                Minimum extract count that a per map extract requirement can be generated with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.MaximumExtracts">
            <summary>
                Maximum extract count that a per map extract requirement can be generated with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.MinimumExtractsWithSpecificExit">
            <summary>
                Minimum extract count that a specific extract can be generated with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.MaximumExtractsWithSpecificExit">
            <summary>
                Maximum extract count that a specific extract can be generated with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ExplorationConfig.SpecificExits">
            <summary>
                Specific extract generation data
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SpecificExits.Chance">
            <summary>
                Chance that an operational task is generated with a specific extract
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SpecificExits.PassageRequirementWhitelist">
            <summary>
                Whitelist of specific extract types
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.LevelRange">
            <summary>
                Level range at which completion tasks should be generated from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.RequestedItemCount">
            <summary>
                The minimum and maximum amounts that can be requested for an item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.UniqueItemCount">
            <summary>
                How many different unique items should be requested
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.RequestedBulletCount">
            <summary>
                The minimum and maximum amounts that can be requested for bullets - TODO: Not implemented
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.UseWhitelist">
            <summary>
                Should the item whitelist be used
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.UseBlacklist">
            <summary>
                Should the item blacklist be used
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.RequiredItemsAreFiR">
            <summary>
                Should the supplied items be required FiR
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.RequiredItemMinDurabilityMinMax">
            <summary>
                Min/Max durability requirements for the item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.CompletionConfig.RequiredItemTypeBlacklist">
            <summary>
                Blacklisted item types to not collect
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.LevelRange">
            <summary>
                Level range at which elimination tasks should be generated from this config
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.Targets">
            <summary>
                Target data probabilities
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.BodyPartChance">
            <summary>
                Chance that a specific body part is needed as a requirement
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.BodyParts">
            <summary>
                If the specific body part requirement is chosen, pick from these body parts
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.SpecificLocationChance">
            <summary>
                Chance that a specific location modifier is selected
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.DistLocationBlacklist">
            <summary>
                Locations that should be blacklisted as a requirement
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.DistanceProbability">
            <summary>
                Probability that a distance requirement is chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MaxDistance">
            <summary>
                Maximum distance in meters that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MinDistance">
            <summary>
                Minimum distance in meters that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MaxKills">
            <summary>
                Maximum amount of kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MinKills">
            <summary>
                Minimum amount of kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MaxBossKills">
            <summary>
                Maximum amount of boss kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MinBossKills">
            <summary>
                Minimum amount of boss kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MaxPmcKills">
            <summary>
                Maximum amount of PMC kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.MinPmcKills">
            <summary>
                Minimum amount of PMC kills that can be chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.WeaponRequirementChance">
            <summary>
                Chance that a specific weapon requirement is chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.WeaponCategoryRequirementChance">
            <summary>
                Chance that a weapon category requirement is chosen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.WeaponCategoryRequirements">
            <summary>
                If a weapon category requirement is chosen, pick from these categories
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.EliminationConfig.WeaponRequirements">
            <summary>
                If a weapon requirement is chosen, pick from these weapons
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BaseQuestConfig.PossibleSkillRewards">
            <summary>
                Possible skills that can be rewarded expirence points
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BossInfo.IsBoss">
            <summary>
                Is this target a boss
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BossInfo.IsPmc">
            <summary>
                Is ths target a PMC
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig.RunIntervalSeconds">
            <summary>
                How many seconds should pass before expired offers and processed + player offers checked if sold
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig.RunIntervalValues">
            <summary>
                Default values used to hydrate `runIntervalSeconds` with
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig.Sell">
            <summary>
                Player listing settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig.Traders">
            <summary>
                Trader ids + should their assorts be listed on flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig.OfferListingTaxMultiplier">
            <summary>
            Flea tax multi, default is off (-1)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Sell.Fees">
            <summary>
                Should a fee be deducted from player when listing an item for sale
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Sell.Chance">
            <summary>
                Settings to control chances of offer being sold
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Sell.Time">
            <summary>
                Settings to control how long it takes for a player offer to sell
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Sell.ExpireSeconds">
            <summary>
                Seconds from clicking remove to remove offer from market
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Chance.Base">
            <summary>
                Base chance percent to sell an item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Chance.SellMultiplier">
            <summary>
                Value to multiply the sell chance by
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Chance.MaxSellChancePercent">
            <summary>
                Max possible sell chance % for a player listed offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Chance.MinSellChancePercent">
            <summary>
                Min possible sell chance % for a player listed offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.PurchasesAreFoundInRaid">
            <summary>
                Should a purchased dynamic offers items be flagged as found in raid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.UseTraderPriceForOffersIfHigher">
            <summary>
                Use the highest trader price for an offer if its greater than the price in templates/prices.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.Barter">
            <summary>
                Barter offer specific settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.OfferAdjustment">
            <summary>
                Dynamic offer price below handbook adjustment values
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.ExpiredOfferThreshold">
            <summary>
                How many offers should expire before an offer regeneration occurs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.OfferItemCount">
            <summary>
                How many offers should be listed
            key can be mongoId or "default"
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.PriceRanges">
            <summary>
                How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.ShowDefaultPresetsOnly">
            <summary>
                Should default presets to listed only or should non-standard presets found in globals.json be listed too
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.IgnoreQualityPriceVarianceBlacklist">
            <summary>
                Tpls that should not use the variable price system when their quality is less than 100% (lower dura/uses = lower price)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.Condition">
            <summary>
                Settings to control the durability range of item items listed on flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.StackablePercent">
            <summary>
                Size stackable items should be listed for in percent of max stack size
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.NonStackableCount">
            <summary>
                Items that cannot be stacked can have multiples sold in one offer, what range of values can be listed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.Rating">
            <summary>
                Range of rating offers for items being listed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.Armor">
            <summary>
                Armor specific flea settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.ItemPriceMultiplier">
            <summary>
                A multiplier to apply to individual tpls price just prior to item quality adjustment
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.OfferCurrencyChangePercent">
            <summary>
                Percentage chance for offers to be listed in specified currency
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.ShowAsSingleStack">
            <summary>
                Item tpls that should be forced to sell as a single item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.RemoveSeasonalItemsWhenNotInEvent">
            <summary>
                Should christmas/halloween items be removed from flea when not within the seasonal bounds
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.Blacklist">
            <summary>
                Flea blacklist settings
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.UnreasonableModPrices">
            <summary>
                Dict of price limits keyed by item type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Dynamic.ItemPriceOverrideRouble">
            <summary>
                Custom rouble prices for items to override values from prices.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices.UseHandbookPrice">
            <summary>
            Should handbook prices be used (true) as a base or the values already in prices.json (false)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices.PriceMultiplier">
            <summary>
            Multiplier to apply to handbook price
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices.PreventPriceBeingBelowTraderBuyPrice">
            <summary>
            Don't allow prices being added that are below sell to trader price. Prevent ability to buy cheap items on flea and sell to traders for easy rep
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices.GeneratePresetPriceByChildren">
            <summary>
            Should weapons/armors have their price generated by totalling its child items
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.ChancePercent">
            <summary>
                Percentage change an offer is listed as a barter
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.ItemCountMin">
            <summary>
                Min number of required items for a barter requirement
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.ItemCountMax">
            <summary>
                Max number of required items for a barter requirement
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.PriceRangeVariancePercent">
            <summary>
                How much can the total price of requested items vary from the item offered
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.MinRoubleCostToBecomeBarter">
            <summary>
                Min rouble price for an offer to be considered for turning into a barter
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.MakeSingleStackOnly">
            <summary>
                Should barter offers only single stack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.ItemTplBlacklist">
            <summary>
                Item Tpls to never be turned into a barter
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BarterDetails.ItemTypeBlacklist">
            <summary>
                Item Base Classes to never be turned into a barter
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PackDetails.ChancePercent">
            <summary>
                Percentage change an offer is listed as a pack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PackDetails.ItemCountMin">
            <summary>
                Min number of required items for a pack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PackDetails.ItemCountMax">
            <summary>
                Max number of required items for a pack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.PackDetails.ItemTypeWhitelist">
            <summary>
                item types to allow being a pack
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.OfferAdjustment.AdjustPriceWhenBelowHandbookPrice">
            <summary>
                Shuld offer price be adjusted when below handbook price
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.OfferAdjustment.MaxPriceDifferenceBelowHandbookPercent">
            <summary>
                How big a percentage difference does price need to vary from handbook to be considered for adjustment
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.OfferAdjustment.HandbookPriceMultiplier">
            <summary>
                How much to multiply the handbook price to get the new price
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.OfferAdjustment.PriceThresholdRub">
            <summary>
                What is the minimum rouble price to consider adjusting price of item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.Condition.ConditionChance">
            <summary>
                Percentage change durability is altered
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.DamagedAmmoPacks">
            <summary>
                Damaged ammo packs
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.Custom">
            <summary>
                Custom blacklist for item Tpls
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.EnableBsgList">
            <summary>
                BSG blacklist a large number of items from flea, true = use blacklist
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.EnableQuestList">
            <summary>
                Should quest items be blacklisted from flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.TraderItems">
            <summary>
                Should trader items that are blacklisted by bsg be listed on flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.ArmorPlate">
            <summary>
                Maximum level an armor plate can be found in a flea-listed armor item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.EnableCustomItemCategoryList">
            <summary>
                Should specific categories be blacklisted from the flea, true = use blacklist
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RagfairBlacklist.CustomItemCategoryList">
            <summary>
                Custom category blacklist for parent Ids
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ArmorPlateBlacklistSettings.MaxProtectionLevel">
            <summary>
                Max level of plates an armor can have without being removed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ArmorPlateBlacklistSettings.IgnoreSlots">
            <summary>
                Item slots to NOT remove from items on flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.UnreasonableModPrices.Enabled">
            <summary>
                Enable a system that adjusts very high ragfair prices to be below a max multiple of items the handbook values
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.UnreasonableModPrices.HandbookPriceOverMultiplier">
            <summary>
                Multiplier to start adjusting item values from, e.g. a value of 10 means any value over 10x the handbook price gets adjusted
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.UnreasonableModPrices.NewPriceHandbookMultiplier">
            <summary>
                The new multiplier for items found using above property, e.g. a value of 4 means set items price to 4x handbook price
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ArmorSettings.RemoveRemovablePlateChance">
            <summary>
                % chance / 100 that armor plates will be removed from an offer before listing
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.ArmorSettings.PlateSlotIdToRemovePool">
            <summary>
                What slots are to be removed when removeRemovablePlateChance is true
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TieredFlea.UnlocksTpl">
            <summary>
                key: tpl, value: playerlevel
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TieredFlea.UnlocksType">
            <summary>
                key: item type id, value: playerlevel
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.RepairConfig.RepairKitIntellectGainMultiplier">
            <summary>
                INT gain multiplier per repaired item type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeaponTreatmentRepairValues.CritSuccessChance">
            <summary>
                The chance to gain more weapon maintenance skill
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeaponTreatmentRepairValues.CritFailureChance">
            <summary>
                The chance to gain less weapon maintenance skill
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeaponTreatmentRepairValues.PointGainMultiplier">
            <summary>
                The multiplier used for calculating weapon maintenance XP
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.BonusValues.ActiveDurabilityPercentMinMax">
            <summary>
                What dura is buff active between (min max of current max)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SeasonalEventConfig.EventGear">
            <summary>
                event / botType / equipSlot / itemid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SeasonalEventConfig.EventLoot">
            <summary>
                event / bot type / equipSlot / itemid
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SeasonalEventConfig.HostilitySettingsForEvent">
            <summary>
                key = event, second key = map name
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SeasonalEventConfig.ChristmasContainerIds">
            <summary>
                Ids of containers on locations that only have Christmas loot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.SeasonalEventConfig.BotAppearanceChanges">
            <summary>
                Season - botType - location (body/feet/hands/head)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.TraderConfig.TradersResetFromServerStart">
            <summary>
                Should trader reset times be set based on server start time (false = bsg time - on the hour)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.UpdateTime.Seconds">
            <summary>
                Seconds between trader resets
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.ChancePlateExistsInArmorPercent">
            <summary>
                Keyed to plate protection level
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.ItemStackSizeOverrideMinMax">
            <summary>
                Key: item tpl
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.PreventDuplicateOffersOfCategory">
            <summary>
                Prevent duplicate offers of items of specific categories by parentId
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.ItemCategoryRoublePriceLimit">
            <summary>
                Max rouble price before item is not listed on flea
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.PresetSlotsToRemoveChancePercent">
            <summary>
                Each slotid with % to be removed prior to listing on fence
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.BlacklistSeasonalItems">
            <summary>
                Block seasonal items from appearing when season is inactive
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.AmmoMaxPenLimit">
            <summary>
                Max pen value allowed to be listed on flea - affects ammo + ammo boxes
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.PlayerRepMin">
            <summary>
                Smallest value player rep with fence can fall to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.FenceConfig.PlayerRepMax">
            <summary>
                Highest value player rep with fence can climb to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeatherValues.GenerateWeatherAmountHours">
            <summary>
                How many hours to generate weather data into the future
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Config.WeatherValues.TimePeriod">
            <summary>
                Length of each weather period
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.RecipientId">
            <summary>
                Player id
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.Sender">
            <summary>
                Who is sending this message
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.DialogType">
            <summary>
                Optional - leave blank to use sender value
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.SenderDetails">
            <summary>
                Optional - if sender is USER these details are used
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.Trader">
            <summary>
                Optional - the trader sending the message
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.MessageText">
            <summary>
                Optional - used in player/system messages, otherwise templateId is used
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.Items">
            <summary>
                Optional - Items to send to player
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.ItemsMaxStorageLifetimeSeconds">
            <summary>
                Optional - How long items will be stored in mail before expiry
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.TemplateId">
            <summary>
                Optional - Used when sending messages from traders who send text from locale json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.SystemData">
            <summary>
                Optional - ragfair related
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.RagfairDetails">
            <summary>
                Optional - Used by ragfair messages
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.ProfileChangeEvents">
            <summary>
                OPTIONAL - allows modification of profile settings via mail
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails.ReplyTo">
            <summary>
                Optional - the MongoID of the dialogue message to reply to
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Inventory.OwnerInventoryItems.From">
            <summary>
                Inventory items from source
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Inventory.OwnerInventoryItems.To">
            <summary>
                Inventory items at destination
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.DynamicLootPercent">
            <summary>
                What percentage of dynamic loot should the map contain
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.StaticLootPercent">
            <summary>
                What percentage of static loot should the map contain
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.SimulatedRaidStartSeconds">
            <summary>
                How many seconds into the raid is the player simulated to spawn in at
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.RaidTimeMinutes">
            <summary>
                How many minutes are in the raid total
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.NewSurviveTimeSeconds">
            <summary>
                The new number of seconds required to avoid a run through
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.OriginalSurvivalTimeSeconds">
            <summary>
                The original number of seconds required to avoid a run through
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Location.RaidChanges.ExitChanges">
            <summary>
                Any changes required to the extract list
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition">
            <summary>
                Provides enum prepatch data needed to apply custom enum constants
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition.EnumType">
            <summary>
                Type of enum, full namespace must be provided.  E.g. `EFT.EBuffId` <br/><br/>
            When targeting nested types they should be denoted with `+`  E.g. `EFT.InventoryLogic.Weapon+EFireMode`
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition.ConstantName">
            <summary>
                The name to give your new constant.
            This will be validated and pre-patcher will provide feedback if this name is already taken.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition.ConstantValue">
            <summary>
                Value to give your new constant.
            This will be validated and pre-patcher will provide feedback if this constant is already taken.
            This value is a long, however it will be converted to the proper type on application. E.g. int, sbyte, etc
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition.JsonEnumName">
            <summary>
                CLIENT ONLY <br/><br/>
            Denotes the string to give the `JsonEnumName` attribute constructor should one exist.
            E.g. `EFT.EBuffId`
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Spt.Mod.ClientEnumDefinitions.Add(System.String,SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition)">
            <summary>
                Adds a singular definition
            </summary>
            <param name="modGuid">Mod guid that is adding this definition</param>
            <param name="definition">Definition to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Spt.Mod.ClientEnumDefinitions.AddRange(System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Spt.Mod.EnumEntryDefinition})">
            <summary>
                Adds multiple definitions
            </summary>
            <param name="modGuid">Mod guid that is adding these definitions</param>
            <param name="definitions">Definitions to add</param>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata">
             <summary>
             This interface describes a mod to the SPT Server. Every mod must contain exactly one
             implementation. All properties must be implemented, assign null to any optional property you don't need.
             </summary>
             <remarks>
             The SPT server uses this metadata to:
             <list type="bullet">
               <item>
                 <description>Identify the mod and display it (name, author, version, url, etc.) in places such as the launcher.</description>
               </item>
               <item>
                 <description>Validate the mod can load: SPT version compatibility, mod dependencies and incompatibilities.</description>
               </item>
               <item>
                 <description>Determine load order: classes are ordered first by <see cref="P:SPTarkov.DI.Annotations.Injectable.TypePriority">Type Priority</see>,
                 then by <see cref="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.ModGuid">Mod GUID</see> as a tiebreaker. In practice, Type Priority is almost always
                 the deciding factor; Mod GUID only matters when two or more classes share the same Type Priority value.</description>
               </item>
             </list>
            
             </remarks>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.ModGuid">
            <summary>
            A Global Unique ID (GUID) to distinguish this mod from all others.
            <br />
            It is recommended (but not mandatory) to use
            <see href="https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html">reverse domain name notation</see>.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Name">
            <summary>
            Human-readable name of this mod, shown to users
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Author">
            <summary>
            Username of this mod's author
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Contributors">
            <summary>
            Usernames of people who have contributed to this mod
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Version">
            <summary>
            Semantic version of this mod, this uses the semver standard: https://semver.org/
            <br/><br/>
            Version = new Version("1.0.0"); is valid
            <br/>
            Version = new Version("1.0.0.0"); is not
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.SptVersion">
            <summary>
            SPT version this mod was built for, this uses the semver standard constraints: https://semver.org/
            <br/><br/>
            Version = new Version("~4.0.0"); is valid
            <br/>
            Version = new Version("4.0.0.0"); is not
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.HasPrepatcher">
            <summary>
                Indicates whether this mod includes enum prepatch definitions. Definitions must be stored as one JSON array in
                <c>user/patchers/{ModGuid}</c>. If you don't know what this means, leave it false.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Incompatibilities">
            <summary>
            Mod GUIDs that are not compatible with this mod, the server will refuse to load if any are present
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.ModDependencies">
            <summary>
            Mods this mod depends on, they must be present for this mod to load
            <br/><br/>
            Key is the dependency's Mod GUID, value is the required version range
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.Url">
            <summary>
            Link to this mod's mod page or GitHub repository
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.IModMetadata.License">
            <summary>
            Name of the license this mod uses
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails.ItemTplToClone">
            <summary>
                Id of the item to copy and use as a base
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails.OverrideProperties">
            <summary>
                Item properties that should be applied over the top of the cloned base
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails.ParentId">
            <summary>
                ParentId for the new item (item type)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails.NewId">
            <summary>
                The id the new item should have. This is often known as the TplId, or TemplateId
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails.NewItemName">
            <summary>
            The new name to assign the item, this is typically something like weapon_colt_m4a1_556x45
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemDetailsBase.AddToHandbook">
            <summary>
            Whether the item should be added to Tarkov's handbook
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemDetailsBase.AddToFleaPriceDb">
            <summary>
            Whether the item should be added to the flea price database
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewItemDetailsBase.AddToWeaponShelf">
            <summary>
            Whether to add the new item to the hideout's weapon shelf whitelist
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Mod.NewQuestDetails">
            <summary>
                New quest detail object for use with the CustomQuestService.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewQuestDetails.NewQuest">
            <summary>
                Quest to be added to the database
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewQuestDetails.Locales">
            <summary>
                Locales for this quest. The primary key is the language to add to locale entries to<br/>
            The secondary key is the locale key, the value is the locale text itself.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Mod.NewQuestDetails.LockedToSide">
             <summary>
                 Only Usec and Bear are valid entries here,
             if used it will lock that quest to only being available to that specific side.<br/><br/>
            
             If not used, this should be left null to keep the quest open to both Usec and Bears.
             </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Mod.CreateQuestResult">
            <summary>
                Result from either creating a new quest or cloning one.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Spt.Mod.CreateQuestResult.#ctor(System.Boolean,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Result from either creating a new quest or cloning one.
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.UserId">
            <summary>
            Owner of the offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.Time">
            <summary>
            Time offer is listed at
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.Items">
            <summary>
            Items in the offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.BarterScheme">
            <summary>
            Cost of item (currency or barter)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.LoyalLevel">
            <summary>
            Loyalty level needed to buy item
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.Quantity">
            <summary>
            Amount of item being listed
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.Creator">
            <summary>
            Who created the offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.CreateFleaOfferDetails.SellInOnePiece">
            <summary>
            Offer should be sold all in one offer
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Ragfair.TplWithFleaPrice.Price">
            <summary>
                Roubles
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.WeaponPresetCount">
            <summary>
                Count of weapons to generate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ArmorPresetCount">
            <summary>
                Count of armor to generate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ItemCount">
            <summary>
                Count of items to generate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.WeaponCrateCount">
            <summary>
                Count of sealed weapon crates to generate
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ItemBlacklist">
            <summary>
                Item tpl blacklist to exclude
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ItemTypeWhitelist">
            <summary>
                Item tpl whitelist to pick from
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ItemLimits">
            <summary>
                key: item base type: value: max count
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ArmorLevelWhitelist">
            <summary>
                Allowed armor plate levels 2/3/4/5/6 for armor generated
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.AllowBossItems">
            <summary>
                Should boss items be included in allowed items
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.UseRewardItemBlacklist">
            <summary>
                Should item.json item reward blacklist be used
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.UseForcedLoot">
            <summary>
                Should forced loot be used instead of randomised loot
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.ForcedLoot">
            <summary>
                Item tpls + count of items to force include
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.LootRequest.BlockSeasonalItemsOutOfSeason">
            <summary>
                Should seasonal items appear when it's not the season for them
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Services.AirdropLootRequest.Icon">
            <summary>
                Airdrop icon used by client to show crate type
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.BtrMapConfig.BtrSkin">
            <summary>
            Known values: Tarcola, Cleare, Dirt, HeavyDirt
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.PathConfig.Id">
            <summary>
            Not mongoId
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.Preset.Encyclopedia">
            <summary>
                Default presets have this property
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.LocaleTable.Global">
            <summary>
            DO NOT USE THIS PROPERTY DIRECTLY, USE LOCALESERVICE INSTEAD
            THIS IS LAZY LOADED AND YOUR CHANGES WILL NOT BE SAVED
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.LocationTable.Base">
            <summary>
                Holds a mapping of the linkages between locations on the UI
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Spt.Tables.LocationTable.GetDictionary">
            <summary>
                Get map locations as a dictionary, keyed by its name e.g. Factory4Day
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Models.Spt.Tables.LocationTable.GetMappedKey(System.String)">
            <summary>
                Convert any type of key to Locations actual Property name.
                "factory4_day" or "Factory4Day" returns "Factory4Day"
            </summary>
            <returns></returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Models.Spt.Tables.ServerTable">
            <summary>
            Model for Assets/database/server.json
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.Profiles">
            <summary>
                The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec)
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.Prices">
            <summary>
                Flea prices of items - gathered from online flea market dump
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.DefaultEquipmentPresets">
            <summary>
                Default equipment loadouts that show on main inventory screen
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.Achievements">
            <summary>
                Achievements
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.CustomAchievements">
            <summary>
                Achievements
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable.LocationServices">
            <summary>
                Location services data
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.GetOutput(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get a fresh/empty response to send to the client
            </summary>
            <param name="sessionId">Player id</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.UpdateOutputProperties(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Update output object with most recent values from player profile
            </summary>
            <param name="sessionId"> Session id </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.CleanUpCompleteCraftsInProfile(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Production})">
            <summary>
                Required as continuous productions don't reset and stay at 100% completion but client thinks it hasn't started
            </summary>
            <param name="productions"> Productions in a profile </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.GetImprovementsFromProfileAndFlagComplete(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true
            </summary>
            <param name="pmcData"> Player profile </param>
            <returns> Dictionary of hideout improvements </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.GetProductionsFromProfileAndFlagComplete(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Production},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Return productions from player profile except those completed crafts the client has already seen
            </summary>
            <param name="productions"> Productions from player profile </param>
            <param name="sessionId"> Player session ID</param>
            <returns> Dictionary of hideout productions </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Routers.EventOutputHolder.ConstructTraderRelations(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderInfo})">
            <summary>
                Convert the internal trader data object into an object we can send to the client
            </summary>
            <param name="traderData"> Server data for traders </param>
            <returns> Dict of trader id + TraderData </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Http.SptHttpListener.SendResponseAsync(SPTarkov.Server.Core.Models.Common.MongoId,Microsoft.AspNetCore.Http.HttpRequest,Microsoft.AspNetCore.Http.HttpResponse,System.Object,System.String,System.Threading.CancellationToken)">
            <summary>
                Send HTTP response back to sender
            </summary>
            <param name="sessionID"> Player id making request </param>
            <param name="req"> Incoming request </param>
            <param name="resp"> Outgoing response </param>
            <param name="body"> Buffer </param>
            <param name="output"> Server generated response data</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the response operation.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Http.SptHttpListener.IsDebugRequest(Microsoft.AspNetCore.Http.HttpRequest)">
            <summary>
                Is request flagged as debug enabled
            </summary>
            <param name="req"> Incoming request </param>
            <returns> True if request is flagged as debug </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Http.SptHttpListener.LogRequest(Microsoft.AspNetCore.Http.HttpRequest,System.String)">
            <summary>
                Log request if enabled
            </summary>
            <param name="req"> Log request if enabled </param>
            <param name="output"> Output string </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Http.SptHttpListener.LogStreamedRequest(Microsoft.AspNetCore.Http.HttpRequest,SPTarkov.Server.Core.Models.Spt.Servers.StreamedJsonBody)">
            <summary>
                Log request if enabled
            </summary>
            <param name="req"> Log request if enabled </param>
            <param name="streamed"> streamed data </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.LoadAsync(System.Threading.CancellationToken)">
            <summary>
                Load all profiles in /user/profiles folder into memory (this.profiles)
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.SaveAsync(System.Threading.CancellationToken)">
            <summary>
                Save changes for each profile from memory into user/profiles json
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.GetProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a player profile from memory
            </summary>
            <param name="sessionId"> Session ID </param>
            <returns> SptProfile of the player </returns>
            <exception cref="T:System.Exception"> Thrown when sessionId is null / empty or no profiles with that ID are found </exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.GetProfiles">
            <summary>
                Gets all profiles from memory
            </summary>
            <returns> Dictionary of Profiles with their ID as Keys. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.DeleteProfileById(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Delete a profile by id (Does not remove the profile file!)
            </summary>
            <param name="sessionID"> ID of profile to remove </param>
            <returns> True when deleted, false when profile not found </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.CreateProfile(SPTarkov.Server.Core.Models.Eft.Profile.Info)">
            <summary>
                Create a new profile in memory with empty pmc/scav objects
            </summary>
            <param name="profileInfo"> Basic profile data </param>
            <exception cref="T:System.Exception"> Thrown when profile already exists </exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.AddProfile(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Add full profile in memory by key (info.id)
            </summary>
            <param name="profileDetails"> Profile to save </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.LoadProfileAsync(SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
                Look up profile json in user/profiles by id and store in memory. <br />
                Execute saveLoadRouters callbacks after being loaded into memory.
            </summary>
            <param name="sessionID"> ID of profile to store in memory </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.SaveProfileAsync(SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
                Save changes from in-memory profile to user/profiles json
                Execute onBeforeSaveCallbacks callbacks prior to being saved to json
            </summary>
            <param name="sessionID"> Profile id (user/profiles/id.json) </param>
            <returns> Time taken to save the profile in seconds </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.RemoveProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Remove a physical profile json from user/profiles
            </summary>
            <param name="sessionID"> Profile ID to remove </param>
            <returns> True if successful </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.SaveServer.IsProfileInvalidOrUnloadable(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Determines whether the specified profile is marked as invalid or cannot be loaded.
            </summary>
            <param name="sessionID">The ID of the profile to check.</param>
            <returns>
            <c>true</c> if the profile is invalid or unloadable; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler">
            <summary>
            Handles the lifecycle of WebSocket connections whose request path contains <see cref="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.GetHookUrl"/>.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.GetHookUrl">
            <summary>
            The URL fragment this handler responds to; a connection is routed here when its request path contains this value.
            </summary>
            <returns>The hook URL fragment (e.g. "/notifierServer/getwebsocket/").</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.GetSocketId">
            <summary>
            A human-readable identifier for this handler, used for logging.
            </summary>
            <returns>The handler's display name.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.OnConnectionAsync(System.Net.WebSockets.WebSocket,Microsoft.AspNetCore.Http.HttpContext,System.String)">
            <summary>
            Called once when a new WebSocket connection is opened.
            </summary>
            <param name="ws">The newly opened WebSocket.</param>
            <param name="context">The HTTP context the connection was upgraded from.</param>
            <param name="sessionIdContext">A unique reference identifying this specific connection.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.OnMessageAsync(System.Byte[],System.Net.WebSockets.WebSocketMessageType,System.Net.WebSockets.WebSocket,Microsoft.AspNetCore.Http.HttpContext)">
            <summary>
            Called for each complete message received from the client.
            </summary>
            <param name="rawData">The full message payload.</param>
            <param name="messageType">The type of the received message (text or binary).</param>
            <param name="ws">The WebSocket the message arrived on.</param>
            <param name="context">The HTTP context the connection was upgraded from.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.OnCloseAsync(System.Net.WebSockets.WebSocket,Microsoft.AspNetCore.Http.HttpContext,System.String)">
            <summary>
            Called once when the WebSocket connection closes; the socket should already be assumed closed here.
            </summary>
            <param name="ws">The closed WebSocket.</param>
            <param name="context">The HTTP context the connection was upgraded from.</param>
            <param name="sessionIdContext">The unique reference identifying the connection, matching the one passed to <see cref="M:SPTarkov.Server.Core.Servers.Ws.IWebSocketConnectionHandler.OnConnectionAsync(System.Net.WebSockets.WebSocket,Microsoft.AspNetCore.Http.HttpContext,System.String)"/>.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.FilterBotEquipment(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails)">
            <summary>
                Filter a bots data to exclude equipment and cartridges defines in the botConfig
            </summary>
            <param name="sessionId">Players id</param>
            <param name="baseBotNode">bots json data to filter</param>
            <param name="botGenerationDetails">details on how to generate a bot</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustChances(System.Collections.Generic.Dictionary{System.String,System.Double},System.Collections.Generic.Dictionary{System.String,System.Double})">
            <summary>
                Iterate over the changes passed in and apply them to baseValues parameter
            </summary>
            <param name="equipmentChanges">Changes to apply</param>
            <param name="baseValues">data to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustGenerationChances(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.GenerationData},SPTarkov.Server.Core.Models.Eft.Common.Tables.Generation)">
            <summary>
                Iterate over the Generation changes and alter data in baseValues.Generation
            </summary>
            <param name="generationChanges">Changes to apply</param>
            <param name="baseBotGeneration">dictionary to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotEquipmentSettings(System.String)">
            <summary>
                Get equipment settings for bot
            </summary>
            <param name="botEquipmentRole">equipment role to return</param>
            <returns>EquipmentFilters object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotWeaponSightWhitelist(System.String)">
            <summary>
                Get weapon sight whitelist for a specific bot type
            </summary>
            <param name="botEquipmentRole">equipment role of bot to look up</param>
            <returns>Dictionary of weapon type and their whitelisted scope types</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotEquipmentBlacklist(System.String,System.Double)">
            <summary>
                Get an object that contains equipment and cartridge blacklists for a specified bot type
            </summary>
            <param name="botRole">Role of the bot we want the blacklist for</param>
            <param name="playerLevel">Level of the player</param>
            <returns>EquipmentBlacklistDetails object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotEquipmentWhitelist(System.String,System.Int32)">
            <summary>
                Get the whitelist for a specific bot type that's within the players level
            </summary>
            <param name="botRole">Bot type</param>
            <param name="playerLevel">Players level</param>
            <returns>EquipmentFilterDetails object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotWeightingAdjustments(System.String,System.Int32)">
            <summary>
                Retrieve item weighting adjustments from bot.json config based on bot level
            </summary>
            <param name="botRole">Bot type to get adjustments for</param>
            <param name="botLevel">Level of bot</param>
            <returns>Weighting adjustments for bot items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.GetBotWeightingAdjustmentsByPlayerLevel(System.String,System.Int32)">
            <summary>
                Retrieve item weighting adjustments from bot.json config based on player level
            </summary>
            <param name="botRole">Bot type to get adjustments for</param>
            <param name="playerLevel">Level of bot</param>
            <returns>Weighting adjustments for bot items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.FilterEquipment(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails)">
            <summary>
                Filter bot equipment based on blacklist and whitelist from config/bot.json
                Prioritizes whitelist first, if one is found blacklist is ignored
            </summary>
            <param name="baseBotNode">bot .json file to update</param>
            <param name="blacklist">Equipment blacklist</param>
            <param name="whitelist">Equipment whitelist</param>
            <returns>Filtered bot file</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.FilterCartridges(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails,SPTarkov.Server.Core.Models.Spt.Config.EquipmentFilterDetails)">
            <summary>
                Filter bot cartridges based on blacklist and whitelist from config/bot.json
                Prioritizes whitelist first, if one is found blacklist is ignored
            </summary>
            <param name="baseBotNode">bot .json file to update</param>
            <param name="blacklist">equipment on this list should be excluded from the bot</param>
            <param name="whitelist">equipment on this list should be used exclusively</param>
            <returns>Filtered bot file</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustWeighting(SPTarkov.Server.Core.Models.Spt.Config.AdjustmentDetails,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Enums.EquipmentSlots,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}})">
            <summary>
                Add/Edit weighting changes to bot items using values from config/bot.json/equipment
            </summary>
            <param name="weightingAdjustments">Weighting change to apply to bot</param>
            <param name="botItemPool">Bot item dictionary to adjust, keyed by equipment slot</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustWeighting(SPTarkov.Server.Core.Models.Spt.Config.AdjustmentDetails,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}})">
            <summary>
                Add/Edit weighting changes to bot items using values from config/bot.json/equipment
            </summary>
            <param name="weightingAdjustments">Weighting change to apply to bot</param>
            <param name="botItemPool">Bot item dictionary to adjust, keyed by caliber</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustWeighting(SPTarkov.Server.Core.Models.Spt.Config.AdjustmentDetails,SPTarkov.Server.Core.Models.Eft.Common.Tables.Appearance)">
            <summary>
                Add/Edit weighting changes to bot items using values from config/bot.json/equipment
            </summary>
            <param name="weightingAdjustments">Weighting change to apply to bot</param>
            <param name="botItemPool">Bot appearance to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentFilterService.AdjustWeighting(SPTarkov.Server.Core.Models.Spt.Config.AdjustmentDetails,System.Func{System.String,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double}})">
            <summary>
                Add/Edit weighting changes to bot items using values from config/bot.json/equipment
            </summary>
            <param name="weightingAdjustments">Weighting change to apply to bot</param>
            <param name="poolResolver">Resolves an adjustment key to the item pool it applies to, null when the pool doesn't exist</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GeneratePool(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem},System.String)">
            <summary>
                Create a dictionary of mods for each item passed in
            </summary>
            <param name="inputItems"> Items to find related mods and store in modPool </param>
            <param name="poolKey"> Mod pool to choose from e.g. "weapon" for weaponModPool </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.ResetWeaponPool">
            <summary>
                Empty the mod pool
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GetCompatibleModsForWeaponSlot(SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Get array of compatible mods for an items mod slot (generate pool if it doesn't exist already)
            </summary>
            <param name="itemTpl"> Item to look up </param>
            <param name="slotName"> Slot to get compatible mods for </param>
            <returns> Hashset of tpls that fit the slot </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GetModsForGearSlot(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get mods for a piece of gear by its tpl
            </summary>
            <param name="itemTpl"> Items tpl to look up mods for </param>
            <returns> Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GetModsForWeaponSlot(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get mods for a weapon by its tpl
            </summary>
            <param name="itemTpl"> Weapons tpl to look up mods for </param>
            <returns> Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GetRequiredModsForWeaponSlot(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get required mods for a weapon by its tpl
            </summary>
            <param name="itemTpl"> Weapons tpl to look up mods for </param>
            <returns> Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GenerateWeaponPool">
            <summary>
                Create weapon mod pool and set generated flag to true
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotEquipmentModPoolService.GenerateGearPool">
            <summary>
                Create gear mod pool and set generated flag to true
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService">
            <summary>
            Service for keeping track of items and their exact position inside a bots container
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.#ctor(SPTarkov.Server.Core.Helpers.Items.ItemHelper)">
            <summary>
            Service for keeping track of items and their exact position inside a bots container
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.AddEmptyContainerToBot(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.EquipmentSlots,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Add a container + details to a bots cache ready to accept loot
            </summary>
            <param name="botId">Unique identifier of bot</param>
            <param name="containerName">name of container e.g. "Backpack"</param>
            <param name="containerInventoryItem">Inventory item loot will be linked to in bots inventory</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.TryAddItemToBotContainer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.EquipmentSlots,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.Int32,System.Int32)">
            <summary>
            Attempt to add an item + children to a container
            </summary>
            <param name="botId">Bots unique id</param>
            <param name="containerName">Name of container to add to e.g. "Backpack"</param>
            <param name="itemAndChildren">Item and its children to add to container</param>
            <param name="botInventory">Inventory to add Item+children to</param>
            <param name="itemWidth">Width of item with its children</param>
            <param name="itemHeight">Height of item with its children</param>
            <returns>ItemAddedResult</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.AddItemToBotContainerFixedPosition(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.EquipmentSlots,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseInventory,System.Int32,System.Int32,SPTarkov.Server.Core.Models.Eft.Common.Tables.ItemLocation)">
             <summary>
            Attempt to add an item + children to a container at a specific x/y grid position
             </summary>
             <param name="botId">Bots unique id</param>
             <param name="containerName">Name of container to add to e.g. "Backpack"</param>
             <param name="itemAndChildren">Item and its children to add to container</param>
             <param name="botInventory">Inventory to add Item+children to</param>
             <param name="itemWidth">Width of item with its children</param>
             <param name="itemHeight">Height of item with its children</param>
             <param name="fixedLocation">Details for where to place item in container grid</param>
             <returns>ItemAddedResult</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.GetOrCreateBotContainerDictionary(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Helper - Get the bot-specific container details, create if data doesn't exist
            </summary>
            <param name="botId">Bot unique identifier</param>
            <returns>Dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.FillGridRegion(System.Int32[0:,0:],System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Fill region of a 2D array
            </summary>
            <param name="grid">The 2D grid array to modify</param>
            <param name="x">The starting column index (left)</param>
            <param name="y">The starting row index (top)</param>
            <param name="itemWidth">The number of cells to update horizontally</param>
            <param name="itemHeight">The number of cells to update vertically</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.FlagGridIfFull(SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ContainerMapDetails,System.Int32,System.Int32)">
            <summary>
            Flag a container grid as full if a 1x1 item cannot fit or there are no spaces left in the 2d array
            </summary>
            <param name="gridDetails"></param>
            <param name="itemWidth"></param>
            <param name="itemHeight"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ItemAllowedInContainer(SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ContainerDetails,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Is the items subtype allowed inside this container / is it excluded from this container
            </summary>
            <param name="containerDetails">Details on the container we want to add item into</param>
            <param name="itemAndChildren">Item+children we want to add into container</param>
            <returns>true = item is allowed</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.IsItemBiggerThanGrid(System.Int32[0:,0:],System.Int32,System.Int32)">
            <summary>
            Is the items edge length bigger than the grid trying to hold it
            </summary>
            <param name="grid">Container grid</param>
            <param name="itemWidth">Width of item</param>
            <param name="itemHeight">Height of item</param>
            <returns>true = item bigger than grid</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.GetBotContainer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get a bots container details from cache by its id
            </summary>
            <param name="botId">Identifier of bot to get details of</param>
            <returns>Dictionary of containers and their details</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ClearCache">
            <summary>
             Clear the cache of all bot containers
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ClearCache(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Clear specific bot container details from cache
            </summary>
            <param name="botId">Bot identifier</param>
        </member>
        <member name="P:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ContainerDetails.ContainerGridDetails">
            <summary>
            Grid layout and flag if grid is full
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ContainerDetails.ContainerDbItem">
            <summary>
            Db record for the container holding items
            </summary>
        </member>
        <member name="P:SPTarkov.Server.Core.Services.Bot.BotInventoryContainerService.ContainerDetails.ContainerInventoryItem">
            <summary>
            Inventory item representing the container
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.ClearCache">
            <summary>
                Remove cached bot loot data
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.GetLootFromCache(System.String,System.Boolean,System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Common.MinMax{System.Double})">
            <summary>
                Get a dictionary of lootable item Tpls with their corresponding weight
            </summary>
            <param name="botRole">bot to get loot for</param>
            <param name="isPmc">is the bot a pmc</param>
            <param name="lootType">what type of loot is needed (backpack/pocket/stim/vest etc)</param>
            <param name="botJsonTemplate">Base json db file for the bot having its loot generated</param>
            <param name="itemPriceMinMax">OPTIONAL - item price min and max value filter</param>
            <remarks>THIS IS NOT A THREAD SAFE METHOD</remarks>
            <returns>dictionary, key = item tpl, value = weight</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.AddLootToCache(System.String,System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType)">
            <summary>
                Generate loot for a bot and store inside a private class property
            </summary>
            <param name="botRole">bots role (assault / pmcBot etc)</param>
            <param name="isPmc">Is the bot a PMC (alters what loot is cached)</param>
            <param name="botJsonTemplate">db template for bot having its loot generated</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.FilterItemPool(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},System.Func{SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Boolean})">
            <summary>
            Helper function - Filter out items from passed in pool based on a passed in delegate
            </summary>
            <param name="lootPool">Pool to filter</param>
            <param name="shouldBeSkipped">Delegate to filter pool by</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.GetGenerationWeights(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
            Return provided weights or an empty dictionary
            </summary>
            <param name="weights">Weights to return</param>
            <returns>Dictionary and should pool be hydrated by items in combined loot pool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.AddItemsToPool(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Double})">
            <summary>
            merge item tpls + weightings to passed in dictionary
            If exits already, skip
            </summary>
            <param name="poolToAddTo">Dictionary to add item to</param>
            <param name="poolOfItemsToAdd">Dictionary of items to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.IsBulletOrGrenade(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties)">
            <summary>
                Ammo/grenades have this property
            </summary>
            <param name="properties"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.IsMagazine(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties)">
            <summary>
                Internal and external magazine have this property
            </summary>
            <param name="properties"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.IsMedicalItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties)">
            <summary>
                Medical use items (e.g. morphine/lip balm/grizzly)
            </summary>
            <param name="properties"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.IsGrenade(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties)">
            <summary>
                Grenades have this property (e.g. smoke/frag/flash grenades)
            </summary>
            <param name="properties"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.BotRoleExistsInCache(System.String)">
            <summary>
                Check if a bot type exists inside the loot cache
            </summary>
            <param name="botRole">role to check for</param>
            <returns>true if they exist</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.InitCacheForBotRole(System.String)">
            <summary>
                If lootcache is undefined, init with empty property arrays
            </summary>
            <param name="botRole">Bot role to hydrate</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotLootCacheService.CompareByValue(System.Int32,System.Int32)">
            <summary>
                Compares two item prices by their flea (or handbook if that doesn't exist) price
            </summary>
            <param name="itemAPrice"></param>
            <param name="itemBPrice"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotNameService.ClearNameCache">
            <summary>
                Clear out generated pmc names from cache
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotNameService.GenerateUniqueBotNickname(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotType,SPTarkov.Server.Core.Models.Spt.Bots.BotGenerationDetails,System.Collections.Generic.HashSet{System.String})">
            <summary>
                Create a unique bot nickname
            </summary>
            <param name="botJsonTemplate">bot JSON data from db</param>
            <param name="botGenerationDetails"></param>
            <param name="uniqueRoles">Lowercase roles to always make unique</param>
            <returns>Nickname for bot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotNameService.AddRandomPmcNameToBotMainProfileNicknameProperty(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Add random PMC name to bots MainProfileNickname property
            </summary>
            <param name="bot">Bot to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotNameService.GetRandomPmcName">
            <summary>
                Choose a random PMC name from bear or usec bot jsons
            </summary>
            <returns>PMC name as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotWeaponModLimitService.GetWeaponModLimits(System.String)">
            <summary>
                Initalise mod limits to be used when generating a weapon
            </summary>
            <param name="botRole">"assault", "bossTagilla" or "pmc"</param>
            <returns>BotModLimits object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotWeaponModLimitService.WeaponModHasReachedLimit(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Spt.Bots.BotModLimits,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Check if weapon mod item is on limited list + has surpassed the limit set for it <br />
                Exception: Always allow ncstar backup mount <br />
                Exception: Always allow scopes with a scope for a parent <br />
                Exception: Always disallow mounts that hold only scopes once scope limit reached <br />
                Exception: Always disallow mounts that hold only flashlights once flashlight limit reached
            </summary>
            <param name="botRole">role the bot has e.g. assault</param>
            <param name="modTemplate">mods template data</param>
            <param name="modLimits">limits set for weapon being generated for this bot</param>
            <param name="modsParent">The parent of the mod to be checked</param>
            <param name="weapon">Array of IItem</param>
            <returns>true if over item limit</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.BotWeaponModLimitService.WeaponModLimitReached(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Bots.ItemCount,System.Nullable{System.Int32},System.String,System.String)">
            <summary>
                Check if the specific item type on the weapon has reached the set limit
            </summary>
            <param name="modTpl">log mod tpl if over type limit</param>
            <param name="currentCount">current number of this item on gun</param>
            <param name="maxLimit">mod limit allowed</param>
            <param name="botRole">role of bot we're checking weapon of</param>
            <param name="modType">OPTIONAL: Type of mod, scope or lightlaser</param>
            <returns>true if limit reached</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService">
            <summary>
                Cache bots in a dictionary, keyed by the bots ID
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService})">
            <summary>
                Cache bots in a dictionary, keyed by the bots ID
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService.CacheBot(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBase)">
            <summary>
                Store a bot in the cache, keyed by its ID.
            </summary>
            <param name="botToCache"> Bot details to cache </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService.ClearCache">
            <summary>
                Clean the cache of all bot details.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.MatchBotDetailsCacheService.GetBotById(System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Find a bot in the cache by its ID.
            </summary>
            <param name="id"> ID of bot to find </param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.SendVictimResponse(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Victim},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                For each PMC victim of the player, have a chance to send a message to the player, can be positive or negative
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="pmcVictims"> List of bots killed by player </param>
            <param name="pmcData"> Player profile </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.SendKillerResponse(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Aggressor)">
            <summary>
                Not fully implemented yet, needs method of acquiring killers details after raid
            </summary>
            <param name="sessionId"> Session id </param>
            <param name="pmcData"> Players profile </param>
            <param name="killer"> The bot who killed the player </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.ChooseMessage(System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Victim)">
            <summary>
                Choose a localised message to send the player (different if sender was killed or killed player)
            </summary>
            <param name="isVictim"> Is the message coming from a bot killed by the player </param>
            <param name="pmcData"> Player profile </param>
            <param name="victimData"> OPTIONAL - details of the pmc killed </param>
            <returns> Message from PMC to player </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.GetLocationName(System.String)">
            <summary>
                use map key to get a localised location name
                e.g. factory4_day becomes "Factory"
            </summary>
            <param name="locationKey"> Location key to localise </param>
            <returns> Localised location name </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.StripCapitalisation(System.Boolean)">
            <summary>
                Should capitalisation be stripped from the message response before sending
            </summary>
            <param name="isVictim"> Was responder a victim of player </param>
            <returns> True = should be stripped </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.AllCaps(System.Boolean)">
            <summary>
                Should capitalisation be stripped from the message response before sending
            </summary>
            <param name="isVictim"> Was responder a victim of player </param>
            <returns> True = should be stripped </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.AppendSuffixToMessageEnd(System.Boolean)">
            <summary>
                Should a suffix be appended to the end of the message being sent to player
            </summary>
            <param name="isVictim"> Was responder a victim of player </param>
            <returns> True = should be appended </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.ChooseResponseType(System.Boolean)">
            <summary>
                Choose a type of response based on the weightings in pmc response config
            </summary>
            <param name="isVictim"> Was responder killed by player </param>
            <returns> Response type (positive/negative) </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.GetResponseLocaleKeys(System.String,System.Boolean)">
            <summary>
                Get locale keys related to the type of response to send (victim/killer)
            </summary>
            <param name="keyType"> Positive/negative </param>
            <param name="isVictim"> Was responder killed by player </param>
            <returns>List of response locale keys </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.GetResponseSuffixLocaleKeys">
            <summary>
                Get all locale keys that start with `pmcresponse-suffix`
            </summary>
            <returns> List of keys </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Bot.PmcChatResponseService.GetVictimDetails(SPTarkov.Server.Core.Models.Eft.Common.Tables.Victim)">
            <summary>
                Convert a victim object into a IUserDialogInfo object
            </summary>
            <param name="pmcVictim"> Victim to convert </param>
            <returns> UserDialogInfo object </returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Commerce.FenceService.desiredAssortCounts">
            <summary>
                Desired baseline counts - Hydrated on initial assort generation as part of generateFenceAssorts()
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Commerce.FenceService.fenceAssort">
            <summary>
                Main assorts you see at all rep levels
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Commerce.FenceService.fenceDiscountAssort">
            <summary>
                Assorts shown on a separate tab when you max out fence rep
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Commerce.FenceService.nextPartialRefreshTimestamp">
            <summary>
                Time when some items in assort will be replaced
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.SetFenceAssort(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
                Replace main fence assort with new assort
            </summary>
            <param name="assort"> New assorts to replace old with </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.SetFenceDiscountAssort(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
                Replace discount fence assort with new assort
            </summary>
            <param name="discountAssort"> New assorts to replace old with </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetMainFenceAssort">
            <summary>
                Get main fence assort
            </summary>
            <returns> TraderAssort </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetDiscountFenceAssort">
            <summary>
                Get discount fence assort
            </summary>
            <returns> TraderAssort </returns>
            @return ITraderAssort
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetFenceAssorts(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get assorts player can purchase <br />
                Adjust prices based on fence level of player
            </summary>
            <param name="pmcProfile"> Player profile </param>
            <returns> TraderAssort </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AddItemsToFenceAssort(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Adds to fence assort a single item (with its children)
            </summary>
            <param name="items"> The items to add with all its children </param>
            <param name="mainItem"> The most parent item of the array </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetItemPrice(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Calculates the overall price for an item (with all its children)
            </summary>
            <param name="itemTpl"> The item tpl to calculate the fence price for </param>
            <param name="items"> The items (with its children) to calculate fence price for </param>
            <returns> Price of the item for Fence </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetAmmoBoxPrice(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Calculate the overall price for an ammo box, where only one item is
                the ammo box itself and every other items are the bullets in that box
            </summary>
            <param name="items"> The ammo box (and all its children ammo items) </param>
            <returns> The price of the ammo box </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AdjustAssortItemPricesByConfigMultiplier(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Double,System.Double)">
            <summary>
                Adjust all items contained inside an assort by a multiplier
            </summary>
            <param name="assort"> (clone) Assort that contains items with prices to adjust </param>
            <param name="itemMultiplier"> Multiplier to use on items </param>
            <param name="presetMultiplier"> Multiplier to use on presets </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AdjustItemPriceByModifier(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Double,System.Double)">
            <summary>
                Adjust assorts price by a modifier
            </summary>
            <param name="item"> Assort item details</param>
            <param name="assort"> Assort to be modified </param>
            <param name="modifier"> Value to multiply item price by </param>
            <param name="presetModifier"> Value to multiply preset price by </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetRawFenceAssorts">
            <summary>
                Get fence assorts with no price adjustments based on fence rep
            </summary>
            <returns> TraderAssort </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.NeedsPartialRefresh">
            <summary>
                Does fence need to perform a partial refresh because its passed the refresh timer defined in trader.json
            </summary>
            <returns> True if it needs a partial refresh </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.PerformPartialRefresh">
            <summary>
                Replace a percentage of fence assorts with freshly generated items
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.UpdateFenceAssorts(SPTarkov.Server.Core.Models.Spt.Fence.CreateFenceAssortsResult,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
                Handle the process of folding new assorts into existing assorts, when a new assort exists already, increment its StackObjectsCount instead
            </summary>
            <param name="newFenceAssorts"> Assorts to fold into existing fence assorts </param>
            <param name="existingFenceAssorts"> Current fence assorts, new assorts will be added to </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.IncrementPartialRefreshTime">
            <summary>
                Increment fence next refresh timestamp by current timestamp + partialRefreshTimeSeconds from config
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetItemCountsToGenerate(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Spt.Fence.GenerationAssortValues)">
            <summary>
                Get values that will hydrate the passed in assorts back to the desired counts
            </summary>
            <param name="assortItems"> Current assorts after items have been removed </param>
            <param name="generationValues"> Base counts assorts should be adjusted to </param>
            <returns> GenerationAssortValues object with adjustments needed to reach desired state </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.DeleteRandomAssorts(System.Int32,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort)">
            <summary>
                Delete desired number of items from assort (including children)
            </summary>
            <param name="itemCountToReplace"> Number of items to replace </param>
            <param name="assort"> Assort to adjust </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RemoveRandomItemFromAssorts(SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Choose an item at random and remove it + mods from assorts
            </summary>
            <param name="assort"> Trader assort to remove item from </param>
            <param name="rootItems"> Pool of root items to pick from to remove </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetCountOfItemsToReplace(System.Int32)">
            <summary>
                Get an integer rounded count of items to replace based on percentage from traderConfig value
            </summary>
            <param name="totalItemCount"> Total item count </param>
            <returns> Rounded int of items to replace </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetOfferCount">
            <summary>
                Get the count of items fence offers
            </summary>
            <returns> Count of fence offers </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GenerateFenceAssorts">
            <summary>
                Create trader assorts for fence and store in fenceService cache
                Uses fence base cache generation server start as a base
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.ConvertIntoFenceAssort(SPTarkov.Server.Core.Models.Spt.Fence.CreateFenceAssortsResult)">
            <summary>
                Convert the intermediary assort data generated into format client can process
            </summary>
            <param name="intermediaryAssorts"> Generated assorts that will be converted </param>
            <returns> TraderAssort in the correct data format for Fence </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.CreateInitialFenceAssortGenerationValues">
            <summary>
                Create object that contains calculated fence assort item values to make based on config.
                Stored in desiredAssortCounts
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.CreateFenceAssortSkeleton">
            <summary>
                Create skeleton to hold assort items
            </summary>
            <returns> TraderAssort object </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.CreateAssorts(SPTarkov.Server.Core.Models.Spt.Fence.GenerationAssortValues,System.Int32)">
            <summary>
                Hydrate assorts parameter object with generated assorts
            </summary>
            <param name="itemCounts"> Number of items to generate per type (Item, WeaponPreset, EquipmentPreset) </param>
            <param name="loyaltyLevel"> Loyalty level to set new item to </param>
            <returns> CreateFenceAssortResult object </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AddItemAssorts(System.Nullable{System.Int32},SPTarkov.Server.Core.Models.Spt.Fence.CreateFenceAssortsResult,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.ValueTuple{System.Int32,System.Int32}},System.Int32)">
            <summary>
                Add item assorts to existing assort data
            </summary>
            <param name="assortCount"> Number to add </param>
            <param name="assorts"> Data to add to </param>
            <param name="baseFenceAssortClone"> Base data to draw from </param>
            <param name="itemTypeLimits"> Item limits per base class </param>
            <param name="loyaltyLevel"> Loyalty level to set new item to </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetMatchingItem(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
                Find an assort item that matches the first parameter, also matches based on Upd properties
                e.g. salewa hp resource units left
            </summary>
            <param name="rootItemBeingAdded"> item to look for a match against </param>
            <param name="itemDbDetails"> DB details of matching item </param>
            <param name="itemsWithChildren"> Items to search through </param>
            <returns> Matching assort item </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.ItemShouldBeForceStacked(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Should this item be forced into only 1 stack on fence
            </summary>
            <param name="existingItem"> Existing item from fence assort </param>
            <param name="itemDbDetails"> Item we want to add DB details </param>
            <returns> True item should be force stacked </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AdjustItemPriceByQuality(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.BarterScheme}}},SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Adjust price of item based on what is left to buy (resource/uses left)
            </summary>
            <param name="barterSchemes"> All barter scheme for item having price adjusted </param>
            <param name="itemRoot"> Root item having price adjusted </param>
            <param name="itemTemplate"> DB template of item </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AddPresetsToAssort(System.Nullable{System.Int32},System.Nullable{System.Int32},SPTarkov.Server.Core.Models.Spt.Fence.CreateFenceAssortsResult,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderAssort,System.Int32)">
            <summary>
                Find presets in base fence assort and add desired number to 'assorts' parameter
            </summary>
            <param name="desiredWeaponPresetsCount"> How many WeaponPresets to add </param>
            <param name="desiredEquipmentPresetsCount"> How many WeaponPresets to add </param>
            <param name="assorts"> Assorts to add preset to </param>
            <param name="baseFenceAssort"> Base data to draw from </param>
            <param name="loyaltyLevel"> Loyalty level to set new presets to </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RandomiseArmorModDurability(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Adjust plate / soft insert durability values
            </summary>
            <param name="armor"> Armor item array to add mods into </param>
            <param name="itemDbDetails"> Armor items db template </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RandomiseArmorSoftInsertDurabilities(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Randomise the durability values of installed soft-insert items on armor
            </summary>
            <param name="softInsertSlots">Slots of soft inserts to randomise</param>
            <param name="armorItemAndMods">
                Flat collection of armor + inserts to get items from
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RandomiseArmorInsertsDurabilities(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Slot},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Randomise the durability values of plate items in armor <br />
                Has chance to remove plate
            </summary>
            <param name="plateSlots"> Slots of items to randomise </param>
            <param name="armorItemAndMods"> Array of armor + inserts to get items from </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetSingleItemStackCount(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Get stack size of a singular item (no mods)
            </summary>
            <param name="itemDbDetails"> Item being added to fence </param>
            <returns> Stack size </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RemoveRandomModsOfItem(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Remove parts of a weapon prior to being listed on flea
            </summary>
            <param name="itemAndMods"> Weapon to remove parts from </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.PresetModItemWillBeRemoved(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Roll % chance check to see if item should be removed
            </summary>
            <param name="weaponMod"> Weapon mod being checked </param>
            <param name="itemsBeingDeleted"> Current list of items on weapon being deleted </param>
            <returns> True if item will be removed </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.RandomiseItemUpdProperties(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Randomise items' Upd properties e.g. med packs/weapons/armor
            </summary>
            <param name="itemDetails"> Item being randomised </param>
            <param name="itemToAdjust"> Item being edited </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetRandomisedArmorDurabilityValues(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Spt.Config.ItemDurabilityCurrentMax)">
            <summary>
                Generate a randomised current and max durability value for an armor item
            </summary>
            <param name="itemDetails"> Item to create values for </param>
            <param name="equipmentDurabilityLimits"> Max durability percent min/max values </param>
            <returns> Durability + MaxDurability values </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.InitItemLimitCounter(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Int32})">
            <summary>
                Construct item limit record to hold max and current item count
            </summary>
            <param name="limits"> Limits as defined in config </param>
            <returns> Record, key: item tplId, value: current/max item count allowed </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetNextFenceUpdateTimestamp">
            <summary>
                Get the next Update timestamp for fence
            </summary>
            <returns> Future timestamp </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetFenceRefreshTime">
            <summary>
                Get fence refresh time in seconds
            </summary>
            <returns> Refresh time in seconds </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.GetFenceInfo(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get fence level the passed in profile has
            </summary>
            <param name="pmcData"> Player profile </param>
            <returns> FenceLevel object </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.AmendOrRemoveFenceOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Remove or lower stack size of an assort from fence by id
            </summary>
            <param name="assortId"> Assort ID to adjust </param>
            <param name="buyCount">`Count of items bought </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.FenceService.DeleteOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
            Remove an offer from assort
            </summary>
            <param name="assortId">Id of assort offer to remove</param>
            <param name="assortItemsToRemoveFrom">Assort items to remove from (fenceAssort.Items / fenceDiscountAssort.Items)</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.GiftExists(System.String)">
            <summary>
                Does a gift with a specific ID exist in db
            </summary>
            <param name="giftId"> Gift id to check for </param>
            <returns> True if it exists in db </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.GetGifts">
            <summary>
                Get dictionary of all gifts
            </summary>
            <returns> Dict keyed by gift id </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.GetGiftIds">
            <summary>
                Get an array of all gift ids
            </summary>
            <returns> String list of gift ids </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.SendGiftToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Send player a gift from a range of sources
            </summary>
            <param name="playerId"> Player to send gift to / sessionID </param>
            <param name="giftId"> ID of gift in configs/gifts.json to send player </param>
            <returns> Outcome of sending gift to player </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.GetSenderId(SPTarkov.Server.Core.Models.Spt.Config.Gift)">
            <summary>
                Get sender id based on gifts sender type enum
            </summary>
            <param name="giftData"> Gift to send player </param>
            <returns> trader/user/system id </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.GetMessageType(SPTarkov.Server.Core.Models.Spt.Config.Gift)">
            <summary>
                Convert GiftSenderType into a dialog MessageType
            </summary>
            <param name="giftData"> Gift to send player </param>
            <returns> MessageType enum value </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.SendPraporStartingGift(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Prapor sends gifts to player for first week after profile creation
            </summary>
            <param name="sessionId"> Player ID </param>
            <param name="day"> What day to give gift for </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.GiftService.SendGiftWithSilentReceivedCheck(System.String,SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Send player a gift with silent received check
            </summary>
            <param name="giftId"> ID of gift to send </param>
            <param name="sessionId"> Session ID of player to send to </param>
            <param name="giftCount"> Optional, how many to send </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.InsuranceDictionaryExists(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does player have insurance dictionary exists
            </summary>
            <param name="sessionId">Player id</param>
            <returns>True if exists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.GetInsurance(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all insured items by all traders for a profile
            </summary>
            <param name="sessionId">Profile id (session id)</param>
            <returns>Item list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.StartPostRaidInsuranceLostProcess(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Sends 'I will go look for your stuff' trader message +
                Store lost insurance items inside profile for later retrieval
            </summary>
            <param name="pmcData">Profile to send insured items to</param>
            <param name="sessionID">SessionId of current player</param>
            <param name="mapId">Id of the location player died/exited that caused the insurance to be issued on</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.GetInsuranceReturnTimestamp(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderBase)">
            <summary>
                Get a timestamp of when insurance items should be sent to player based on trader used to insure
                Apply insurance return bonus if found in profile
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="trader">Trader base used to insure items</param>
            <returns>Timestamp to return items to player in seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.StoreGearLostInRaidToSendLater(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Spt.Services.InsuranceEquipmentPkg})">
            <summary>
                Store lost gear post-raid inside profile, ready for later code to pick it up and mail it
            </summary>
            <param name="sessionId">Player/session id</param>
            <param name="equipmentPkg">Gear to store - generated by GetGearLostInRaid()</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.MapInsuredItemsToTrader(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                For the passed in items, find the trader it was insured against
            </summary>
            <param name="sessionId">Session id</param>
            <param name="lostInsuredItems">Insured items lost in a raid</param>
            <param name="pmcProfile">Player profile</param>
            <returns>InsuranceEquipmentPkg list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.ItemCannotBeLostOnDeath(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Some items should never be returned in insurance but BSG send them in the request
            </summary>
            <param name="lostItem">Item being returned in insurance</param>
            <param name="inventoryItems">Player inventory</param>
            <returns>True if item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.AddGearToSend(SPTarkov.Server.Core.Models.Spt.Services.InsuranceEquipmentPkg)">
            <summary>
                Add gear item to InsuredItems list in player profile
            </summary>
            <param name="gear">Gear to send</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.InsuranceTraderArrayExists(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does insurance exist for a player and by trader
            </summary>
            <param name="sessionId">Player id (session id)</param>
            <param name="traderId">Trader items insured with</param>
            <returns>True if exists</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.ResetInsuranceTraderArray(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Empty out list holding insured items by sessionId + traderId
            </summary>
            <param name="sessionId">Player id (session id)</param>
            <param name="traderId">Trader items insured with</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.AddInsuranceItemToArray(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Store insured item
            </summary>
            <param name="sessionId">Player id (session id)</param>
            <param name="traderId">Trader item insured with</param>
            <param name="itemToAdd">Insured item (with children)</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.InsuranceService.GetRoublePriceToInsureItemWithTrader(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get price of insurance * multiplier from config
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="inventoryItem">Item to be insured</param>
            <param name="traderId">Trader item is insured with</param>
            <returns>price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendDirectNpcMessageToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.String,SPTarkov.Server.Core.Models.Enums.MessageType,System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{System.Int64},SPTarkov.Server.Core.Models.Eft.Profile.SystemData,SPTarkov.Server.Core.Models.Eft.Profile.MessageContentRagfair)">
            <summary>
                Send a message from an NPC (e.g. prapor) to the player with or without items using direct message text, do not look up any locale
            </summary>
            <param name="sessionId"> The session ID to send the message to </param>
            <param name="trader"> The trader sending the message </param>
            <param name="messageType"> What type the message will assume (e.g. QUEST_SUCCESS) </param>
            <param name="message"> Text to send to the player </param>
            <param name="items"> Optional items to send to player </param>
            <param name="maxStorageTimeSeconds"> Optional time to collect items before they expire </param>
            <param name="systemData"> </param>
            <param name="ragfair"> </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendLocalisedNpcMessageToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId},SPTarkov.Server.Core.Models.Enums.MessageType,System.String,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{System.Int64},SPTarkov.Server.Core.Models.Eft.Profile.SystemData,SPTarkov.Server.Core.Models.Eft.Profile.MessageContentRagfair)">
            <summary>
                Send a message from an NPC (e.g. prapor) to the player with or without items
            </summary>
            <param name="sessionId"> The session ID to send the message to </param>
            <param name="trader"> The trader sending the message </param>
            <param name="messageType"> What type the message will assume (e.g. QUEST_SUCCESS) </param>
            <param name="messageLocaleId"> The localised text to send to player </param>
            <param name="items"> Optional items to send to player </param>
            <param name="maxStorageTimeSeconds"> Optional time to collect items before they expire </param>
            <param name="systemData"></param>
            <param name="ragfair"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendSystemMessageToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{System.Int64},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Spt.Dialog.ProfileChangeEvent})">
            <summary>
                Send a message from SYSTEM to the player with or without items
            </summary>
            <param name="sessionId"> The session ID to send the message to </param>
            <param name="message"> The text to send to player </param>
            <param name="items"> Optional items to send to player </param>
            <param name="maxStorageTimeSeconds"> Optional time to collect items before they expire </param>
            <param name="profileChangeEvents"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendLocalisedSystemMessageToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Spt.Dialog.ProfileChangeEvent},System.Nullable{System.Int64})">
            <summary>
                Send a message from SYSTEM to the player with or without items with localised text
            </summary>
            <param name="sessionId"> The session ID to send the message to </param>
            <param name="messageLocaleId"> Id of key from locale file to send to player </param>
            <param name="items"> Optional items to send to player </param>
            <param name="profileChangeEvents"></param>
            <param name="maxStorageTimeSeconds"> Optional time to collect items before they expire </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendUserMessageToPlayer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.UserDialogInfo,System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{System.Int64})">
            <summary>
                Send a USER message to a player with or without items
            </summary>
            <param name="sessionId"> The session ID to send the message to </param>
            <param name="senderDetails"> Who is sending the message </param>
            <param name="message"> The text to send to player </param>
            <param name="items"> Optional items to send to player </param>
            <param name="maxStorageTimeSeconds"> Optional time to collect items before they expire </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendMessageToPlayer(SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails)">
            <summary>
                Large function to send messages to players from a variety of sources (SYSTEM/NPC/USER).
                Helper functions in this class are available to simplify common actions
            </summary>
            <param name="messageDetails"> Details needed to send a message to the player </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.SendPlayerMessageToNpc(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String)">
            <summary>
                Send a message from the player to an NPC
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="targetNpcId"> NPC message is sent to </param>
            <param name="message"> Text to send to NPC </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.CreateDialogMessage(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails)">
            <summary>
                Create a message for storage inside a dialog in the player profile
            </summary>
            <param name="dialogId"> ID of dialog that will hold the message </param>
            <param name="messageDetails"> Various details on what the message must contain/do </param>
            <returns> Message </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.GetMessageToReplyTo(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.String)">
            <summary>
                Finds the Message to reply to using the ID of the recipient, message and the dialogue.
            </summary>
            <param name="recipientId"> The ID of the recipient </param>
            <param name="replyToId"> The ID of the message to reply to </param>
            <param name="dialogueId"> The ID of the dialogue (traderId or profileId) </param>
            <returns> A new instance with data from the found message, otherwise undefined </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.AddRewardItemsToMessage(SPTarkov.Server.Core.Models.Eft.Profile.Message,SPTarkov.Server.Core.Models.Eft.Profile.MessageItems,System.Nullable{System.Int64})">
            <summary>
                Add items to message and adjust various properties to reflect the items being added
            </summary>
            <param name="message"> Message to add items to </param>
            <param name="itemsToSendToPlayer"> Items to add to message </param>
            <param name="maxStorageTimeSeconds"> Total time the items are stored in mail before being deleted </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.ProcessItemsBeforeAddingToMail(System.Nullable{SPTarkov.Server.Core.Models.Enums.MessageType},SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails)">
            <summary>
                Perform various sanitising actions on the items before they're considered ready for insertion into message
            </summary>
            <param name="dialogType"> The type of the dialog that will hold the reward items being processed </param>
            <param name="messageDetails"> Details fo the message e.g. Text, items it has etc. </param>
            <returns> Sanitised items </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.GetBaseItemFromRewards(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Try to find the most correct item to be the 'primary' item in a reward mail
            </summary>
            <param name="items"> Possible items to choose from </param>
            <returns> Chosen 'primary' item </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.GetDialog(SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails)">
            <summary>
                Get a dialog with a specified entity (user/trader).
                Create and store empty dialog if none exists in profile.
            </summary>
            <param name="messageDetails"> Data on what message should do </param>
            <returns> Relevant Dialogue object </returns>
            <exception cref="T:System.Exception"> Thrown when message not found </exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.MailSendService.GetMessageSenderIdByType(SPTarkov.Server.Core.Models.Spt.Dialog.SendMessageDetails)">
            <summary>
                Get the appropriate sender id by the sender enum type
            </summary>
            <param name="messageDetails"> Data of the message </param>
            <returns> Gets an id of the individual sending it </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.PayMoney(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Trade.ProcessBuyTradeRequestData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Take money and insert items into return to server request
            </summary>
            <param name="pmcData"> PMC Profile </param>
            <param name="request"> Buy item request </param>
            <param name="sessionID"> Session ID </param>
            <param name="output"> Client response </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GetTraderItemHandbookPriceRouble(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the item price of a specific traders assort
            </summary>
            <param name="traderAssortId"> ID of the assort to look up</param>
            <param name="traderId"> ID of trader with assort </param>
            <returns> Handbook rouble price of the item </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GiveProfileMoney(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Nullable{System.Double},SPTarkov.Server.Core.Models.Eft.Trade.ProcessSellTradeRequestData,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Receive money back after selling
            </summary>
            <param name="pmcData"> PMC Profile</param>
            <param name="amountToSend"> Money to send back </param>
            <param name="request"> Sell Trade request data </param>
            <param name="output"> Client response </param>
            <param name="sessionID"> Session ID </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.AddPaymentToOutput(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Double,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Remove currency from player stash/inventory and update client object with changes
            </summary>
            <param name="pmcData"> Player profile to find and remove currency from</param>
            <param name="currencyTpl"> Type of currency to pay </param>
            <param name="amountToPay"> Money value to pay </param>
            <param name="sessionID"> Session ID </param>
            <param name="output"> Client response </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.AddPaymentToOutput(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Double,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,System.Collections.Generic.IReadOnlySet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Remove currency from player stash/inventory and update client object with changes
            </summary>
            <param name="pmcData"> Player profile to find and remove currency from</param>
            <param name="currencyTpl"> Type of currency to pay </param>
            <param name="amountToPay"> Money value to pay </param>
            <param name="sessionID"> Session ID </param>
            <param name="output"> Client response </param>
            <param name="requestedStackIds"> Money stack IDs the client asked to pay with, spent before any others </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GetSortedMoneyItemsInInventory(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get all money stacks in inventory and prioritise items in stash
            Ignore locked stacks
            Prioritise the lowest sized stack
            </summary>
            <param name="pmcData"> Player profile </param>
            <param name="currencyTpl"> Currency to find </param>
            <param name="playerStashId"> Players stash ID </param>
            <returns> List of sorted money items </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GetItemInStashCache(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Create a dictionary of all items from player inventory that are in the players stash
            </summary>
            <param name="items">Inventory items to check</param>
            <param name="playerStashId">Id of players stash</param>
            <returns>Dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.PrioritiseStashSort(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.IReadOnlyDictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Services.Commerce.PaymentService.InventoryLocation})">
            <summary>
            Get stacks of money from player inventory, ordered by priority to use from
            Post-raid healing would often take money out of the players pockets/secure container.
            Return money stacks in root of stash first, with the smallest stacks taking priority
            Stacks inside secure are returned last
            </summary>
            <param name="a"> First money stack item </param>
            <param name="b"> Second money stack item </param>
            <param name="itemIdToTplCache"> item id (as string) and template id KvP</param>
            <param name="itemInStashCache">Cache of item IDs and if they're in stash</param>
            <returns> Sort order, -1 if A has priority, 1 if B has priority, 0 if they match </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GetPriorityBySmallestStackSize(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
            Get priority of items based on their stack size
            Smallest stack size has priority
            </summary>
            <param name="a">Item A</param>
            <param name="b">Item B</param>
            <returns>-1 = a, 1 = b, 0 = same</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.PaymentService.GetItemLocation(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Recursively check items parents to see if it is inside the players inventory, not stash
            </summary>
            <param name="itemId"> Item ID to check </param>
            <param name="inventoryItems"> Player inventory </param>
            <param name="playerStashId"> Players stash ID </param>
            <returns> True if it's in inventory </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.RepairItemByTrader(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Repair.RepairItem,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Use trader to repair an items durability
            </summary>
            <param name="sessionID">Session id</param>
            <param name="pmcData">Profile to find item to repair in</param>
            <param name="repairItemDetails">Details of the item to repair</param>
            <param name="traderId">Trader being used to repair item</param>
            <returns>RepairDetails object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.PayForRepair(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.String,System.Double,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="sessionID">Session id</param>
            <param name="pmcData">Profile to take money from</param>
            <param name="repairedItemId">Repaired item id</param>
            <param name="repairCost">Cost to repair item in roubles</param>
            <param name="traderId">Id of the trader who repaired the item / who is paid</param>
            <param name="output">Client response</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.AddRepairSkillPoints(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Services.Commerce.RepairDetails,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Add skill points to profile after repairing an item
            </summary>
            <param name="sessionId">Session id</param>
            <param name="repairDetails">Details of item repaired, cost/item</param>
            <param name="pmcData">Profile to add points to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.GetWeaponRepairSkillPoints(SPTarkov.Server.Core.Services.Commerce.RepairDetails)">
            <summary>
                Return an approximation of the amount of skill points live would return for the given repairDetails
            </summary>
            <param name="repairDetails">The repair details to calculate skill points for</param>
            <returns>The number of skill points to reward the user</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.RepairItemByKit(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Repair.RepairKitsInfo},SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Profile to update repaired item in</param>
            <param name="repairKits">List of Repair kits to use</param>
            <param name="itemToRepairId">Item id to repair</param>
            <param name="output">ItemEventRouterResponse</param>
            <returns>Details of repair, item/price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.GetKitDivisor(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Boolean,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Calculate value repairkit points need to be divided by to get the durability points to be added to an item
            </summary>
            <param name="itemToRepairDetails">Item to repair details</param>
            <param name="isArmor">Is the item being repaired armor</param>
            <param name="pmcData">Player profile</param>
            <returns>Number to divide kit points by</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.GetBonusMultiplierValue(SPTarkov.Server.Core.Models.Enums.BonusType,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the bonus multiplier for a skill from a player profile
            </summary>
            <param name="skillBonus">Bonus to get multiplier of</param>
            <param name="pmcData">Player profile to look in for skill</param>
            <returns>Multiplier value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.ShouldRepairKitApplyDurabilityLoss(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean)">
            <summary>
                Should a repair kit apply total durability loss on repair
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="applyRandomizeDurabilityLoss">Value from repair config</param>
            <returns>True if loss should be applied</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.AddMaxResourceToKitIfMissing(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Update repair kits Resource object if it doesn't exist
            </summary>
            <param name="repairKitDetails">Repair kit details from db</param>
            <param name="repairKitInInventory">Repair kit to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.AddBuffToItem(SPTarkov.Server.Core.Services.Commerce.RepairDetails,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Chance to apply buff to an item (Armor/weapon) if repaired by armor kit
            </summary>
            <param name="repairDetails">Repair details of item</param>
            <param name="pmcData">Player profile</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.AddBuff(SPTarkov.Server.Core.Models.Spt.Config.BonusSettings,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Add random buff to item
            </summary>
            <param name="itemConfig">weapon/armor config</param>
            <param name="item">Item to repair</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.ShouldBuffItem(SPTarkov.Server.Core.Services.Commerce.RepairDetails,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Check if item should be buffed by checking the item type and relevant player skill level
            </summary>
            <param name="repairDetails">Item that was repaired</param>
            <param name="pmcData">Player profile</param>
            <returns>True if item should have buff applied</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.GetItemSkillType(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Based on item, what underlying skill does this item use for buff settings
            </summary>
            <param name="itemTemplate">Item to check for skill</param>
            <returns>Skill name</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.RepairService.GetDurabilityMultiplier(System.Double,System.Double)">
            <summary>
                Ensure multiplier is between 1 and 0.01
            </summary>
            <param name="receiveDurabilityMaxPercent">Max durability percent</param>
            <param name="receiveDurabilityPercent">current durability percent</param>
            <returns>durability multiplier value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.TraderPurchasePersisterService.GetProfileTraderPurchases(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the purchases made from a trader for this profile before the last trader reset
            </summary>
            <param name="sessionId"> Session id </param>
            <param name="traderId"> Trader to loop up purchases for </param>
            <returns> Dictionary of assort id and count purchased </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.TraderPurchasePersisterService.GetProfileTraderPurchase(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Get a purchase made from a trader for requested profile before the last trader reset
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="traderId"> Trader to loop up purchases for </param>
            <param name="assortId"> ID of assort to get data for </param>
            <returns> TraderPurchaseData </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.TraderPurchasePersisterService.ResetTraderPurchasesStoredInProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Remove all trader purchase records from all profiles that exist
            </summary>
            <param name="traderId"> Traders ID </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Commerce.TraderPurchasePersisterService.RemoveStalePurchasesFromProfiles(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Iterate over all server profiles and remove specific trader purchase data that has passed the trader refresh time
            </summary>
            <param name="traderId"> Trader ID </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.StartSacrifice(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Hideout.HideoutCircleOfCultistProductionStartRequestData)">
            <summary>
                Start a sacrifice event
                Generate rewards
                Delete sacrificed items
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile doing sacrifice</param>
            <param name="request">Client request</param>
            <returns>ItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetRewardAmountMultiplier(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings)">
            <summary>
                Get the reward amount multiple value based on players hideout management skill + configs rewardPriceMultiplierMinMax values
            </summary>
            <param name="pmcData"> Player profile </param>
            <param name="cultistCircleSettings"> Circle config settings </param>
            <returns> Reward Amount Multiplier </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.RegisterCircleOfCultistProduction(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Double)">
            <summary>
                Register production inside player profile
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="recipeId">Recipe id</param>
            <param name="sacrificedItems">Items player sacrificed</param>
            <param name="craftingTime">How long the ritual should take</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetCircleCraftingInfo(System.Double,SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings,SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings)">
            <summary>
                Get the circle craft time as seconds, value is based on reward item value
                And get the bonus status to determine what tier of reward is given
            </summary>
            <param name="rewardAmountRoubles">Value of rewards in roubles</param>
            <param name="circleConfig">Circle config values</param>
            <param name="directRewardSettings">OPTIONAL - Values related to direct reward being given</param>
            <returns>craft time + type of reward + reward details</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetSacrificedItems(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Get the items player sacrificed in circle
            </summary>
            <param name="pmcData">Player profile</param>
            <returns>Array of items from player inventory</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetRewardsWithinBudget(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Common.MongoId},System.Double,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings)">
            <summary>
                Given a pool of items + rouble budget, pick items until the budget is reached
            </summary>
            <param name="rewardItemTplPool">Items that can be picked</param>
            <param name="rewardBudget">Rouble budget to reach</param>
            <param name="cultistCircleStashId">Id of stash item</param>
            <param name="circleConfig"></param>
            <returns>Array of item arrays</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetDirectRewards(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get direct rewards
            </summary>
            <param name="sessionId">sessionId</param>
            <param name="directReward">Items sacrificed</param>
            <param name="cultistCircleStashId">Id of stash item</param>
            <returns>The reward object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.CheckForDirectReward(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings}})">
            <summary>
                Check for direct rewards from what player sacrificed
            </summary>
            <param name="sessionId">sessionId</param>
            <param name="sacrificedItems">Items sacrificed</param>
            <param name="directRewardsCache"></param>
            <returns>Direct reward items to send to player</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetDirectRewardBaseTypeStackSize(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Explicit rewards have their own stack sizes as they don't use a reward rouble pool
            </summary>
            <param name="rewardTpl">Item being rewarded to get stack size of</param>
            <returns>stack size of item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.FlagDirectRewardAsAcceptedInProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings)">
            <summary>
                Add a record to the player's profile to signal they have accepted a non-repeatable direct reward
            </summary>
            <param name="sessionId">Session id</param>
            <param name="directReward">Reward sent to player</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetRewardStackSize(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Get the size of a reward item's stack
                1 for everything except ammo, ammo can be between min stack and max stack
            </summary>
            <param name="itemTpl">Item chosen</param>
            <param name="rewardPoolRemaining">Rouble amount of pool remaining to fill</param>
            <returns>Size of stack</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetCultistCircleRewardPool(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Spt.Hideout.CircleCraftDetails,SPTarkov.Server.Core.Models.Spt.Config.CultistCircleSettings)">
            <summary>
                Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Profile of player who will be getting the rewards</param>
            <param name="craftingInfo">Do we return bonus items (hideout/task items)</param>
            <param name="cultistCircleConfig">Circle config</param>
            <returns>Array of tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.AddTaskItemRequirementsToRewardPool(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Check player's profile for quests with hand-in requirements and add those required items to the pool
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="itemRewardBlacklist">Items not to add to pool</param>
            <param name="rewardPool">Pool to add items to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.AddHideoutUpgradeRequirementsToRewardPool(SPTarkov.Server.Core.Models.Spt.Tables.HideoutTable,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Adds items the player needs to complete hideout crafts/upgrades to the reward pool
            </summary>
            <param name="hideoutTableDbData">Hideout area data</param>
            <param name="pmcData">Player profile</param>
            <param name="itemRewardBlacklist">Items not to add to pool</param>
            <param name="rewardPool">Pool to add items to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetPlayerAccessibleHideoutAreas(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.BotHideoutArea})">
            <summary>
                Get all active hideout areas
            </summary>
            <param name="areas">Hideout areas to iterate over</param>
            <returns>Active area array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GenerateRandomisedItemsAndAddToRewardPool(System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId},System.Boolean)">
            <summary>
                Get array of random reward items
            </summary>
            <param name="rewardPool">Reward pool to add to</param>
            <param name="itemRewardBlacklist">Item tpls to ignore</param>
            <param name="itemsShouldBeHighValue">Should these items meet the valuable threshold</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GetItemRequirements(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Hideout.StageRequirement})">
            <summary>
                Iterate over passed in hideout requirements and return the Item
            </summary>
            <param name="requirements">Requirements to iterate over</param>
            <returns>Array of item requirements</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.CreateSacrificeCacheKey(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Create an MD5 hash of the passed in items
            </summary>
            <param name="requiredItems">Items to create key for</param>
            <returns>Key</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.GenerateSacrificedItemsCache(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Spt.Config.DirectRewardSettings})">
            <summary>
                Create a map of the possible direct rewards, keyed by the items needed to be sacrificed
            </summary>
            <param name="directRewards">Direct rewards array from hideout config</param>
            <returns>Dictionary</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.CircleOfCultistService.AddRewardsToCircleContainer(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}},System.Int32[0:,0:],SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Attempt to add all rewards to cultist circle, if they don't fit remove one and try again until they fit
            </summary>
            <param name="sessionId">Session id</param>
            <param name="pmcData">Player profile</param>
            <param name="rewards">Rewards to send to player</param>
            <param name="containerGrid">Cultist grid to add rewards to</param>
            <param name="cultistCircleStashId">Stash id</param>
            <param name="output">Client output</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.MapMarkerService.CreateMarkerOnMap(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryCreateMarkerRequestData)">
            <summary>
                Add note to a map item in player inventory
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Add marker request</param>
            <returns>Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.MapMarkerService.DeleteMarkerFromMap(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryDeleteMarkerRequestData)">
            <summary>
                Delete a map marker
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Delete marker request</param>
            <returns>Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.MapMarkerService.EditMarkerOnMap(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Inventory.InventoryEditMarkerRequestData)">
            <summary>
                Edit an existing map marker
            </summary>
            <param name="pmcData">Player profile</param>
            <param name="request">Edit marker request</param>
            <returns>Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hideout.MapMarkerService.SanitiseMapMarkerText(System.String)">
            <summary>
                Strip out characters from note string that are not: letter/numbers/unicode/spaces
            </summary>
            <param name="mapNoteText">Marker text to sanitise</param>
            <returns>Sanitised map marker text</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Hosted.SystemInformationLogger">
            <summary>
            Logs system information (OS, RAM, CPU etc) on startup, at Info in gray so it's captured by the shipped
            Info-level file logger. The info lines use this class's own logger name, letting sptLogger.json exclude
            them from the console while keeping them in the file. Warnings are logged under the startup service's
            name so they stay visible on the console.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Hosted.SystemInformationLogger.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Hosted.SystemInformationLogger},SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Hosted.SPTStartupHostedService})">
            <summary>
            Logs system information (OS, RAM, CPU etc) on startup, at Info in gray so it's captured by the shipped
            Info-level file logger. The info lines use this class's own logger name, letting sptLogger.json exclude
            them from the console while keeping them in the file. Warnings are logged under the startup service's
            name so they stay visible on the console.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.AirdropService.GenerateAirdropLoot(System.Nullable{SPTarkov.Server.Core.Models.Enums.SptAirdropTypeEnum})">
            <summary>
                Handle client/location/getAirdropLoot
                Get loot for an airdrop container
                Generates it randomly based on config/airdrop.json values
            </summary>
            <param name="forcedAirdropType">OPTIONAL - Desired airdrop type, randomised when not provided</param>
            <returns>List of LootItem objects</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.AirdropService.GetLootThatFitsContainer(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.IEnumerable{System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item}})">
            <summary>
            Check if the items provided fit into the passed in container
            </summary>
            <param name="container">Crate item to fit items into</param>
            <param name="crateLootPool">Item pool to try and fit into container</param>
            <returns>Items that will fit container</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.AirdropService.GetAirdropCrateItem(SPTarkov.Server.Core.Models.Enums.SptAirdropTypeEnum)">
            <summary>
                Create a container create item based on passed in airdrop type
            </summary>
            <param name="airdropType">What type of container: weapon/common etc</param>
            <returns>Item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.AirdropService.ChooseAirdropType">
            <summary>
                Randomly pick a type of airdrop loot using weighted values from config
            </summary>
            <returns>airdrop type value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.AirdropService.GetAirdropLootConfigByType(System.Nullable{SPTarkov.Server.Core.Models.Enums.SptAirdropTypeEnum})">
            <summary>
                Get the configuration for a specific type of airdrop
            </summary>
            <param name="airdropType">Type of airdrop to get settings for</param>
            <returns>LootRequest</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.BtrDeliveryService.HandleItemTransferEvent(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData)">
            <summary>
                Check if player used BTR or transit item sending service and send items to player via mail if found
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="request"> End raid request from client </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.BtrDeliveryService.RemoveBTRDeliveryPackageFromProfile(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.BtrDelivery)">
            <summary>
            Remove a BTR delivery package from a profile using the package's ID.
            </summary>
            <param name="sessionId">The session ID of the profile to remove the package from.</param>
            <param name="delivery">The BTR delivery package to remove.</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.BtrDeliveryService.GetBTRDeliveryReturnTimestamp">
            <summary>
            Get a timestamp of when items given to the BTR driver should be sent to player.
            </summary>
            <returns>Timestamp to return items to player in seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.CustomLocationWaveService.AddBossWaveToMap(System.String,SPTarkov.Server.Core.Models.Eft.Common.BossLocationSpawn)">
            <summary>
                Add a boss wave to a map
            </summary>
            <param name="locationId">e.g. factory4_day, bigmap</param>
            <param name="waveToAdd">Boss wave to add to map</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.CustomLocationWaveService.AddNormalWaveToMap(System.String,SPTarkov.Server.Core.Models.Eft.Common.Wave)">
            <summary>
                Add a normal bot wave to a map
            </summary>
            <param name="locationId">e.g. factory4_day, bigmap</param>
            <param name="waveToAdd">Wave to add to map</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.CustomLocationWaveService.ClearBossWavesForMap(System.String)">
            <summary>
                Clear all custom boss waves from a map
            </summary>
            <param name="locationId">e.g. factory4_day, bigmap</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.CustomLocationWaveService.ClearNormalWavesForMap(System.String)">
            <summary>
                Clear all custom normal waves from a map
            </summary>
            <param name="locationId">e.g. factory4_day, bigmap</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.CustomLocationWaveService.ApplyWaveChangesToAllMaps">
            <summary>
                Add custom boss and normal waves to maps found in config/location.json to db
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService">
            <summary>
            Handles rotating the goons between maps on a configurable interval
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService},SPTarkov.Server.Core.Models.Spt.Tables.LocationTable,SPTarkov.Server.Core.Models.Spt.Config.BotConfig)">
            <summary>
            Handles rotating the goons between maps on a configurable interval
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService.OnUpdateAsync(System.Int64,System.Threading.CancellationToken)">
            <summary>
            Re-evaluate the goon spawn location whenever the rotation window changes
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService.GetRotationSeed">
            <summary>
            Create a consistent seed for the current rotation window, we mirror generating a seed for this the same way we do the boss of the week
            </summary>
            <returns>Seed for the current rotation window</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.GoonLocationSpawnService.AdjustGoonMapSpawns(System.Collections.Generic.HashSet{System.String})">
            <summary>
            Goons will spawn on one map, rotating every GoonSpawnSystem.RotationIntervalHours hours,
            changing randomly based on a consistent seed made from the current utc time window
            </summary>
            <param name="locationBlacklist">LocationIds to always ignore when choosing a spawn</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.IsSide(System.String,System.String)">
            <summary>
            Check player type for pmc or scav
            </summary>
            <param name="playerSide">string</param>
            <param name="sideCheck">What to check the bot against, default = PMC</param>
            <returns>bool</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.StartLocalRaidAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Match.StartLocalRaidRequestData,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/start
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.HandlePreRaidInventoryChecks(System.String,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Handle Pre Raid checks Alt-F4 Prevention and player inventory wiping
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.AdjustExtracts(System.String,System.String,SPTarkov.Server.Core.Models.Eft.Common.LocationBase)">
            <summary>
                Replace map exits with scav exits when player is scavving
            </summary>
            <param name="playerSide"> Players side (savage/usec/bear) </param>
            <param name="location"> ID of map being loaded </param>
            <param name="locationData"> Maps location base data </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.AdjustBotHostilitySettings(SPTarkov.Server.Core.Models.Eft.Common.LocationBase)">
            <summary>
                Adjust the bot hostility values prior to entering a raid
            </summary>
            <param name="location"> Map to adjust values of </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.GenerateLocationAndLoot(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Boolean)">
            <summary>
                Generate a maps base location (cloned) and loot
            </summary>
            <param name="sessionId"> Session/Player id </param>
            <param name="name"> Map name </param>
            <param name="generateLoot"> OPTIONAL - Should loot be generated for the map before being returned </param>
            <returns>LocationBase with loot</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.EndLocalRaidAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData,System.Threading.CancellationToken)">
            <summary>
                Handle client/match/local/end
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.SendCoopTakenFenceMessage(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            After taking a COOP extract, send player a gift via mail
            </summary>
            <param name="sessionId">Player/Session id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.HandleCarExtract(System.String,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Handle when a player extracts using a car - Add rep to fence
            </summary>
            <param name="extractName"> Name of the extract used </param>
            <param name="pmcData"> Player profile </param>
            <param name="sessionId"> Session ID </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.HandleCoopExtract(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.String)">
            <summary>
                Handle when a player extracts using a coop extract - add rep to fence
            </summary>
            <param name="sessionId"> Session/player id </param>
            <param name="pmcData"> Player profile </param>
            <param name="extractName"> Name of extract taken </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.GetFenceStandingAfterExtract(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Double,System.Double)">
            <summary>
                Get the fence rep gain from using a car or coop extract
            </summary>
            <param name="pmcData"> Profile </param>
            <param name="baseGain"> Amount gained for the first extract </param>
            <param name="extractCount"> Number of times extract was taken </param>
            <returns> Fence standing after taking extract </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.HandlePostRaidPlayerScavAsync(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean,System.Boolean,System.Boolean,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData,System.Threading.CancellationToken)">
            <summary>
            Perform post-raid profile changes
            </summary>
            <param name="sessionId">Player id</param>
            <param name="pmcProfile">Players PMC profile</param>
            <param name="scavProfile">Players scav profile</param>
            <param name="isDead">Did player die</param>
            <param name="isTransfer">Did player transfer to new map</param>
            <param name="isSurvived">DId player get 'survived' exit status</param>
            <param name="request">End raid request</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the saving operation.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.MigrateScavQuestProgressToPmcProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Scav quest progress isn't transferred automatically from scav to pmc, we do this manually
            </summary>
            <param name="scavProfile"> Scav profile with quest progress post-raid </param>
            <param name="pmcProfile"> Server pmc profile to copy scav quest progress into </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.UpdateLimbValuesAfterTransit(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotBaseHealth)">
            <summary>
            Slightly fix broken limbs and remove effects
            </summary>
            <param name="profileHealth">Profile health data to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.HandlePostRaidPmc(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean,System.Boolean,System.Boolean,SPTarkov.Server.Core.Models.Eft.Match.EndLocalRaidRequestData,System.String)">
            <summary>
                Handles PMC Profile after the raid
            </summary>
            <param name="sessionId"> Player id </param>
            <param name="fullServerProfile"> Pmc profile from server</param>
            <param name="scavProfile"> Scav profile </param>
            <param name="isDead"> Player died/got left behind in raid </param>
            <param name="isSurvived"> Not same as opposite of `isDead`, specific status </param>
            <param name="isTransfer"> Player transferred to another map </param>
            <param name="request"> Client request data </param>
            <param name="locationName"> Current finished Raid location </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.CheckForAndFixPickupQuestsAfterDeath(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus})">
            <summary>
                On death Quest items are lost, the client does not clean up completed conditions for picking up those quest items,
                If the completed conditions remain in the profile the player is unable to pick the item up again
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="lostQuestItems"> Quest items lost on player death </param>
            <param name="profileQuests"> Quest status data from player profile </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.LightkeeperQuestWorkaround(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus},System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus},SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                In 0.15 Lightkeeper quests do not give rewards in PvE, this issue also occurs in spt.
                We check for newly completed Lk quests and run them through the servers `CompleteQuest` process.
                This rewards players with items + craft unlocks + new trader assorts.
            </summary>
            <param name="sessionId"> Session ID </param>
            <param name="postRaidQuests"> Quest statuses post-raid </param>
            <param name="preRaidQuests"> Quest statuses pre-raid </param>
            <param name="pmcProfile"> Players profile </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.ProcessPostRaidQuests(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.QuestStatus})">
            <summary>
                Convert post-raid quests into correct format.
                Quest status comes back as a string version of the enum `Success`, not the expected value of 1.
            </summary>
            <param name="questsToProcess"> Quests data from client </param>
            <returns> List of adjusted QuestStatus post-raid </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.ApplyTraderStandingAdjustments(System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderInfo},System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TraderInfo})">
            <summary>
                Adjust server trader settings if they differ from data sent by client
            </summary>
            <param name="tradersServerProfile"> Server </param>
            <param name="tradersClientProfile"> Client </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.ResetSkillPointsEarnedDuringRaid(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.CommonSkill})">
            <summary>
                Reset the skill points earned in a raid to 0, ready for next raid
            </summary>
            <param name="commonSkills"> Profile common skills to update </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.MergePmcAndScavEncyclopedias(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Merge two dictionaries together.
                Prioritise pair that has true as a value
            </summary>
            <param name="primary"> Main dictionary </param>
            <param name="secondary"> Secondary dictionary </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.LocationLifecycleService.ProcessAchievementRewards(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,System.Collections.Generic.Dictionary{SPTarkov.Server.Core.Models.Common.MongoId,System.Int64})">
            <summary>
                Check for and add any rewards found via the gained achievements this raid
            </summary>
            <param name="fullProfile"> Profile to add customisations to </param>
            <param name="postRaidAchievements"> All profile achievements at the end of a raid </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.MatchLocationService.DeleteGroup(SPTarkov.Server.Core.Services.InRaid.MatchLocationService.DeleteGroupRequest)">
            <summary>
                DisbandRaidGroup
            </summary>
            <param name="request"></param>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.InRaid.OpenZoneService">
            <summary>
                Service for adding new zones to a maps OpenZones property.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.OpenZoneService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.InRaid.OpenZoneService},SPTarkov.Server.Core.Models.Spt.Tables.LocationTable,SPTarkov.Server.Core.Services.Locales.ServerLocalisationService,SPTarkov.Server.Core.Models.Spt.Config.LocationConfig)">
            <summary>
                Service for adding new zones to a maps OpenZones property.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.OpenZoneService.AddZoneToMap(System.String,System.String)">
            <summary>
                Add open zone to specified map
            </summary>
            <param name="locationId">map location (e.g. factory4_day)</param>
            <param name="zoneToAdd">zone to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.OpenZoneService.ApplyZoneChangesToAllMaps">
            <summary>
                Add open zones to all maps found in config/location.json to db
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.MakeAdjustmentsToMap(SPTarkov.Server.Core.Models.Spt.Location.RaidChanges,SPTarkov.Server.Core.Models.Eft.Common.LocationBase)">
            <summary>
                Make alterations to the base map data passed in
                Loot multipliers/waves/wave start times
            </summary>
            <param name="raidAdjustments">Changes to process on map</param>
            <param name="mapBase">Map to adjust</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.AdjustLootMultipliers(System.Collections.Generic.Dictionary{System.String,System.Double},System.Nullable{System.Double})">
            <summary>
                Adjust the loot multiplier values passed in to be a % of their original value
            </summary>
            <param name="mapLootMultipliers">Multipliers to adjust</param>
            <param name="loosePercent">Percent to change values to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.AdjustWaves(SPTarkov.Server.Core.Models.Eft.Common.LocationBase,SPTarkov.Server.Core.Models.Spt.Location.RaidChanges)">
            <summary>
                Adjust bot waves to act as if player spawned later
            </summary>
            <param name="mapBase">Map to adjust</param>
            <param name="raidAdjustments">Map adjustments</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.AdjustPMCSpawns(SPTarkov.Server.Core.Models.Eft.Common.LocationBase,SPTarkov.Server.Core.Models.Spt.Location.RaidChanges)">
             <summary>
            
             </summary>
             <param name="mapBase">Map to adjust</param>
             <param name="raidAdjustments">Map adjustments</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.GetRaidAdjustments(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Game.GetRaidTimeRequest)">
            <summary>
                Create a randomised adjustment to the raid based on map data in location.json
            </summary>
            <param name="sessionId">Session id</param>
            <param name="request">Raid adjustment request</param>
            <returns>Response to send to client</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.GetMapSettings(System.String)">
            <summary>
                Get raid start time settings for specific map
            </summary>
            <param name="location">Map Location e.g. bigmap</param>
            <returns>ScavRaidTimeLocationSettings</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidTimeAdjustmentService.GetExitAdjustments(SPTarkov.Server.Core.Models.Eft.Common.LocationBase,System.Double)">
            <summary>
                Adjust exit times to handle scavs entering raids part-way through
            </summary>
            <param name="mapBase">Map base file player is on</param>
            <param name="newRaidTimeMinutes">How long raid is in minutes</param>
            <returns>List of exit changes to send to client</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidWeatherService.GenerateFutureWeatherAndCache(SPTarkov.Server.Core.Models.Enums.Season)">
            <summary>
                Generate 24 hours of weather data starting from midnight today
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidWeatherService.GetWeightedWeatherTimePeriod">
            <summary>
                Get a time period to increment by, e.g. 15 or 30 minutes as milliseconds
            </summary>
            <returns>milliseconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidWeatherService.GetCurrentWeather">
            <summary>
                Find the first matching weather object that applies to the current time
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidWeatherService.GetUpcomingWeather">
            <summary>
                Find all matching weather objects that applies to the current time + future
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.InRaid.RaidWeatherService.ValidateWeatherDataExists(SPTarkov.Server.Core.Models.Enums.Season)">
            <summary>
                Ensure future weather data exists
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Items.ItemBaseClassService">
            <summary>
                Cache the baseids for each item in the items db inside a dictionary
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Items.ItemBaseClassService},SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable,SPTarkov.Server.Core.Services.Locales.ServerLocalisationService)">
            <summary>
                Cache the baseids for each item in the items db inside a dictionary
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Items.ItemBaseClassService._itemBaseClassesCache">
            <summary>
            Key = Item tpl, values = Ids of its parents
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.HydrateItemBaseClassCache">
            <summary>
                Create cache and store inside ItemBaseClassService <br />
                Store a dict of an items tpl to the base classes it and its parents have
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.AddBaseItems(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Helper method, recursively iterate through items parent items, finding and adding ids to dictionary
            </summary>
            <param name="itemIdToUpdate"> Item tpl to store base ids against in dictionary </param>
            <param name="item"> Item being checked </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.ItemHasBaseClass(SPTarkov.Server.Core.Models.Common.MongoId,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Does item tpl inherit from the requested base class
            </summary>
            <param name="itemTpl"> ItemTpl item to check base classes of </param>
            <param name="baseClasses"> BaseClass base class to check for </param>
            <returns> true if item inherits from base class passed in </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.ItemHasBaseClass(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does item tpl inherit from the requested base class
            </summary>
            <param name="itemTpl"> ItemTpl item to check base classes of </param>
            <param name="baseClasses"> BaseClass base class to check for </param>
            <returns> true if item inherits from base class passed in </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemBaseClassService.GetItemBaseClasses(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get base classes item inherits from
            </summary>
            <param name="itemTpl"> ItemTpl item to get base classes for </param>
            <returns> array of base classes </returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Items.ItemFilterService">
            <summary>
                Centralise the handling of blacklisting items, uses blacklist found in config/item.json, stores items that should not be used by players / broken items
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.#ctor(SPTarkov.Server.Core.Models.Spt.Config.ItemConfig)">
            <summary>
                Centralise the handling of blacklisting items, uses blacklist found in config/item.json, stores items that should not be used by players / broken items
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.GetItemRewardBlacklist">
            <summary>
                Get an HashSet of items that should never be given as a reward to player
            </summary>
            <returns>HashSet of item tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.GetItemRewardBaseTypeBlacklist">
            <summary>
                Get an HashSet of item types that should never be given as a reward to player
            </summary>
            <returns>HashSet of item base ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.GetBlacklistedItems">
            <summary>
                Return every template id blacklisted in config/item.json
            </summary>
            <returns>HashSet of blacklisted template ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.GetBlacklistedLootableItems">
            <summary>
                Return every template id blacklisted in config/item.json/lootableItemBlacklist
            </summary>
            <returns>HashSet of blacklisted template ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.GetBossItems">
            <summary>
                Return boss items in config/item.json
            </summary>
            <returns>HashSet of boss item template ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.AddItemToLootableBlacklistCache(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Add MongoIds to the global lootable item blacklist cache
            </summary>
            <param name="itemTplsToBlacklist">Tpls to blacklist</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.IsLootableItemBlacklisted(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if the provided template id is blacklisted in config/item.json/lootableItemBlacklist
            </summary>
            <param name="itemKey"> Template id</param>
            <returns>True if blacklisted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.AddItemToBlacklistCache(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
            Add MongoIds to the global blacklist cache
            </summary>
            <param name="itemTplsToBlacklist">Tpls to blacklist</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.IsBossItem(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if the provided template id is boss item in config/item.json
            </summary>
            <param name="tpl"> Template id</param>
            <returns>True if boss item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Items.ItemFilterService.IsItemRewardBlacklisted(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if item is blacklisted from being a reward for player
            </summary>
            <param name="tpl"> Item tpl to check is on blacklist </param>
            <returns>true when blacklisted</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.AbstractLocalisationService`1.GetText(System.String,System.Object)">
            <summary>
                Get a localised value using the passed in key
            </summary>
            <param name="key"> Key to look up locale for </param>
            <param name="args"> optional arguments </param>
            <returns> Localised string </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.AbstractLocalisationService`1.GetText``1(System.String,``0)">
            <summary>
                Get a localised value using the passed in key
            </summary>
            <param name="key"> Key to look up locale for </param>
            <param name="value"> Value to localize </param>
            <returns> Localised string </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.AbstractLocalisationService`1.GetLocaleKeys">
            <summary>
                Get all locale keys
            </summary>
            <returns> Generic collection of keys </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetLocaleDb(System.String)">
            <summary>
                Get the eft globals db file based on the configured locale in config/locale.json, if not found, fall back to 'en'
            </summary>
            <returns> Dictionary of locales for desired language - en/fr/cn </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.TryGetLocaleDb(System.String,System.Collections.Generic.Dictionary{System.String,System.String}@)">
            <summary>
                Attempts to retrieve the locale database for the specified language key
            </summary>
            <param name="languageKey">The language key for which the locale database should be retrieved.</param>
            <param name="localeToReturn">The resulting locale database as a dictionary, or null if the operation fails.</param>
            <returns>True if the locale database was successfully retrieved, otherwise false.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetDesiredGameLocale">
            <summary>
                Gets the game locale key from the locale.json file,
                if value is 'system' get system-configured locale
            </summary>
            <returns> Locale e.g en/ge/cz/cn </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetDesiredServerLocale">
            <summary>
                Gets the game locale key from the locale.json file,
                if value is 'system' get system locale
            </summary>
            <returns> Locale e.g en/ge/cz/cn </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetServerSupportedLocales">
            <summary>
                Get array of languages supported for localisation
            </summary>
            <returns> List of locales e.g. en/fr/cn </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetLocaleFallbacks">
            <summary>
                Get array of languages supported for localisation
            </summary>
            <returns> Dictionary of locales e.g. en/fr/cn </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetPlatformForServerLocale">
            <summary>
                Get the full locale of the computer running the server lowercased e.g. en-gb / pt-pt
            </summary>
            <returns> System locale as String </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetPlatformForClientLocale">
            <summary>
                Get the locale of the computer running the server
            </summary>
            <returns> Language part of locale e.g. 'en' part of 'en-US' </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.LocaleService.GetPlatformLocale">
            <summary>
                Get the current machines locale data
            </summary>
            <returns> The current platform locale </returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Locales.ServerLocalisationService">
            <summary>
                Handles translating server text into different languages
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.ServerLocalisationService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Locales.ServerLocalisationService},SPTarkov.Server.Core.Utils.RandomUtil,SPTarkov.Server.Core.Services.Locales.LocaleService,SPTarkov.Server.Core.Utils.JsonUtil,SPTarkov.Server.Core.Utils.FileUtil)">
            <summary>
                Handles translating server text into different languages
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Locales.ServerLocalisationService.GetRandomTextThatMatchesPartialKey(System.String)">
            <summary>
                From the provided partial key, find all keys that start with text and choose a random match
            </summary>
            <param name="partialKey"> Key to match locale keys on </param>
            <returns> Locale text </returns>
        </member>
        <member name="P:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.ProfilesLoaded">
            <summary>
            Is set to true once the server begins loading profiles, this is to prevent profile errors
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.CreateItemFromClone(SPTarkov.Server.Core.Models.Spt.Mod.NewItemFromCloneDetails,System.Reflection.Assembly)">
            <summary>
                Create a new item from a cloned item base <br />
                WARNING - If no item id is supplied, an id will be generated, this id will be random every time you add an item and will not be the same on each subsequent server start <br />
                Add to the items db <br />
                Add to the flea market <br />
                Add to the handbook <br />
                Add to the locales
            </summary>
            <param name="newItemDetails"> Item details for the new item to be created </param>
            <param name="callingAssembly"> The ability to assign another calling assembly, mostly useful for libraries </param>
            <returns> tplId of the new item created </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.CreateItem(SPTarkov.Server.Core.Models.Spt.Mod.NewItemDetails,System.Reflection.Assembly)">
            <summary>
                Create a new item without using an existing item as a template <br />
                Add to the items db <br />
                Add to the flea market <br />
                Add to the handbook <br />
                Add to the locales <br />
            </summary>
            <param name="newItemDetails"> Details on what the item to be created </param>
            <param name="callingAssembly"> The ability to assign another calling assembly, mostly useful for libraries </param>
            <returns> CreateItemResult containing the completed items ID </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.EnsureItemsCanStillBeAdded(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Items added once profiles are in memory are missing from those profiles item db checks, so refuse them
            </summary>
            <param name="newItemId"> ID of the item being added </param>
            <exception cref="T:System.InvalidOperationException"> Thrown when profiles have already been loaded </exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.UpdateBaseItemPropertiesWithOverrides(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItemProperties,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Iterates through supplied properties and updates the cloned items properties with them
            </summary>
            <param name="overrideProperties"> New properties to apply </param>
            <param name="itemClone"> Item to update </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddToItemsDb(System.String,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
                Add a new item object to the in-memory representation of items.json
            </summary>
            <param name="newItemId"> ID of the item to add to items.json </param>
            <param name="itemToAdd"> Item to add against the new id </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddToHandbookDb(SPTarkov.Server.Core.Models.Common.MongoId,System.String,System.Nullable{System.Double})">
            <summary>
                Add a handbook price for an item
            </summary>
            <param name="newItemId"> ID of the item being added </param>
            <param name="parentId"> Parent ID of the item being added </param>
            <param name="priceRoubles"> Price of the item being added </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddToLocaleDbs(System.Collections.Generic.Dictionary{System.String,SPTarkov.Server.Core.Models.Spt.Mod.LocaleDetails},System.String)">
            <summary>
                Iterate through the passed in locale data and add to each locale in turn <br />
                If data is not provided for each language EFT uses, the first object will be used in its place <br />
                e.g. <br />
                en[0] <br />
                fr[1] <br />
                <br />
                No jp provided, so english will be used as a substitute
            </summary>
            <param name="localeDetails"> key is language, value are the new locale details </param>
            <param name="newItemId"> ID of the item being created </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddToFleaPriceDb(System.String,System.Nullable{System.Double})">
            <summary>
                Add a price to the in-memory representation of prices.json, used to inform the flea of an items price on the market
            </summary>
            <param name="newItemId"> ID of the new item </param>
            <param name="fleaPriceRoubles"> Price of the new item </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddToWeaponShelf(System.String)">
            <summary>
                Add a weapon to the hideout weapon shelf whitelist
            </summary>
            <param name="newItemId"> Weapon ID to add </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomItemService.AddCustomWeaponToPMCs(System.String,System.Double,System.String)">
            <summary>
                Add a custom weapon to PMCs loadout
            </summary>
            <param name="weaponTpl"> Custom weapon tpl to add to PMCs </param>
            <param name="weaponWeight"> The weighting for the weapon to be picked vs other weapons </param>
            <param name="weaponSlot"> The slot the weapon should be added to (e.g. FirstPrimaryWeapon/SecondPrimaryWeapon/Holster) </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomQuestService.CreateQuest(SPTarkov.Server.Core.Models.Spt.Mod.NewQuestDetails)">
            <summary>
                Create a new custom quest from a NewQuestDetails object.
            </summary>
            <param name="newQuestDetails">Quest details to be used for creation</param>
            <returns>Result of the quest creation, remember to check it for errors!</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomQuestService.AddQuestLocales(System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.Dictionary{System.String,System.String}},SPTarkov.Server.Core.Models.Spt.Mod.CreateQuestResult)">
            <summary>
                Adds quest locales to the database
            </summary>
            <param name="locales">locales to add</param>
            <param name="result">create quest result</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.CustomQuestService.RestrictQuestSide(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.PlayerSide,SPTarkov.Server.Core.Models.Spt.Mod.CreateQuestResult)">
            <summary>
                Restricts a custom quest to a specific side.
            </summary>
            <param name="questId">Quest id to restrict</param>
            <param name="side">Side to restrict it to</param>
            <param name="result">Result of the quest creation</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.DatabaseIntegrityService.TakeItemSnapshot">
            <summary>
                Record which items existed at the point profiles began loading
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.Custom.DatabaseIntegrityService.EnsureNoItemsAddedSinceProfilesLoaded">
            <summary>
                Throw if items have appeared since the snapshot was taken
            </summary>
            <exception cref="T:SPTarkov.Server.Core.Exceptions.Database.DatabaseModifiedAfterCutoffException"> Thrown when items were added after profiles loaded </exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.InMemoryCacheService.StoreByKey``1(System.String,``0)">
            <summary>
                Store data into an in-memory object
            </summary>
            <param name="key"> Key to store data against </param>
            <param name="dataToCache"> Data to store in cache </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.InMemoryCacheService.GetDataByKey``1(System.String)">
            <summary>
                Retrieve data stored by a key
            </summary>
            <param name="key"> key</param>
            <returns> Stored data </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.InMemoryCacheService.HasStoredDataByKey(System.String)">
            <summary>
                Does data exist against the provided key
            </summary>
            <param name="key"> Key to check for data against </param>
            <returns> True if exists </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.InMemoryCacheService.ClearDataStoredByKey(System.String)">
            <summary>
                Remove data stored against key
            </summary>
            <param name="key"> Key to remove data against </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.InMemoryCacheService.ClearCache">
            <summary>
                Remove all data stored
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ModItemCacheService.GetCachedItemIdsFromMod(System.String)">
            <summary>
                Get all mod items for a provided mod by GUID
            </summary>
            <param name="guid">Guid of the mod to get the items for</param>
            <returns>Hashset of mod items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ModItemCacheService.GetAllCachedModItemIds">
            <summary>
                Get all items added by all mods. Key is mods guid and value is the items it has added
            </summary>
            <returns>All loaded mod items</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ModItemCacheService.AddModItem(System.Reflection.Assembly,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Adds a mod item to the cache.
            </summary>
            <param name="caller">Callers assembly</param>
            <param name="itemId">Item id added to database</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ModItemCacheService.GetModFromAssembly(System.Reflection.Assembly)">
            <summary>
                Get the SptMod object for the callers assembly
            </summary>
            <param name="caller">Assembly adding the item id</param>
            <returns>SptMod of the assembly</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ProfileDataService.ProfileDataExists(System.String,System.String)">
            <summary>
            Check if a specific mod file exists for a profile
            </summary>
            <param name="profileId">Profile to look up</param>
            <param name="modKey">Name of json file to look up</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ProfileDataService.GetAllProfileDataAsync(SPTarkov.Server.Core.Models.Common.MongoId,System.Threading.CancellationToken)">
            <summary>
            Gets all custom mod data assigned to a profile
            </summary>
            <param name="profileId">The profile to look up</param>
            <returns>A dictionary containing all of the profile data</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ProfileDataService.ClearProfileData(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Clear all data for a profile
            </summary>
            <param name="profileId">Id of profile to delete files for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Modding.ProfileDataService.GetCacheKey(SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
            Get the cache key in specific format
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.BuildParseCultures">
            <summary>
                Builds the cultures used to read backup folder names, in the order they're tried. <br />
                Only invariant is available under globalization-invariant mode, where folder names written by a
                non-Gregorian machine can't be decoded at all.
            </summary>
            <returns> The cultures to attempt a folder name with, invariant first. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.StartBackupSystem(System.Threading.CancellationToken)">
            <summary>
                Start the backup interval if enabled in config.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.InitializeAsync(System.Threading.CancellationToken)">
            <summary>
                Run the backup process. <br />
                This method orchestrates the profile backup service. Handles copying profiles to a backup directory and cleaning
                up old backups if the number exceeds the configured maximum.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.IsEnabled">
            <summary>
                Check to see if the backup service is enabled via the config.
            </summary>
            <returns> True if enabled, false otherwise. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.GenerateBackupTargetDir">
            <summary>
                Generates the target directory path for the backup. The directory path is constructed using the `directory` from
                the configuration and the current backup date.
            </summary>
            <returns> The target directory path for the backup. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.GenerateBackupDate">
            <summary>
                Generates a formatted backup date string in the format `YYYY-MM-DD_hh-mm-ss`.
            </summary>
            <returns> The formatted backup date string. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.FormatBackupDate(System.DateTime)">
            <summary>
                Formats a date as a backup folder name. <br />
                Always invariant, otherwise the machine's own calendar puts a Persian/Hijri/Buddhist year in the name.
            </summary>
            <param name="date"> The date to format. </param>
            <returns> The formatted backup date string. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.CleanBackups">
            <summary>
                Cleans up old backups in the backup directory. <br />
                If the number of backups exceeds the configured maximum, the oldest are deleted. Backups whose folder
                name can't be dated are left alone, and don't count towards the maximum.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.GetBackupPaths(System.String)">
            <summary>
                Retrieves the backup directories from the specified directory, oldest first. <br />
                Directories without a readable date in their name are skipped rather than sorted to an arbitrary position.
            </summary>
            <param name="dir"> The directory to search for backup files. </param>
            <returns> List of sorted backup file paths. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.ExtractDateFromFolderName(System.String)">
            <summary>
                Extracts a date from a folder name string formatted as `YYYY-MM-DD_hh-mm-ss`. <br />
                Older folders were named with the machine's own calendar, so a name is read as Gregorian first, then
                as each calendar that could have written it, and is only accepted if the result is a plausible date.
            </summary>
            <param name="folderPath"> The name of the folder from which to extract the date. </param>
            <returns> A DateTime object if the folder name is in the correct format, otherwise null. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.RemoveExcessBackups(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
                Removes excess backups from the backup directory.
            </summary>
            <param name="backupFilenames"> List of backup file names to be removed. </param>
            <returns> A promise that resolves when all specified backups have been removed. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.GetActiveServerMods">
            <summary>
                Get a List of active server mod details.
            </summary>
            <returns> A List of mod names. </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.BackupService.RestoreProfile(System.String)">
            <summary>
                Restores the most recent profile backup for the given profile Id
            </summary>
            <param name="profileId">The profile ID of the backup to restore</param>
            <returns>True on success. False on failure</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.CreateProfileService.DeleteProfileBySessionId(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Delete a profile
            </summary>
            <param name="sessionID"> ID of profile to delete </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.CreateProfileService.UpdateInventoryEquipmentId(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Make profiles pmcData.Inventory.equipment unique
            </summary>
            <param name="pmcData"> Profile to update </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.CreateProfileService.ResetAllTradersInProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                For each trader reset their state to what a level 1 player would see
            </summary>
            <param name="sessionId"> Session ID of profile to reset </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.CreateProfileService.AddMissingInternalContainersToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Ensure a profile has the necessary internal containers e.g. questRaidItems / sortingTable <br />
                DOES NOT check that stash exists
            </summary>
            <param name="pmcData"> Profile to check </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.CreateProfileService.GivePlayerStartingQuestRewards(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse)">
            <summary>
                Iterate over all quests in player profile, inspect rewards for the quests current state (accepted/completed)
                and send rewards to them in mail
            </summary>
            <param name="profileDetails"> Player profile </param>
            <param name="sessionID"> Session ID </param>
            <param name="response"> Event router response </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileActivityService.ContainsActiveProfile(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Does profile exist in activity cache
            </summary>
            <param name="sessionId">Profile id to check for</param>
            <returns>True when profile exists in cache</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileActivityService.GetFirstProfileActivityRaidData">
            <summary>
            TODO: Yes this is terrible, the other alternative is re-doing half of bot-gen which is currently doing guess-work anyway
            </summary>
            <returns>ProfileActivityRaidData</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileActivityService.ActiveWithinLastMinutes(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Was the requested profile active within the last x minutes
            </summary>
            <param name="sessionId"> Profile to check </param>
            <param name="minutes"> Minutes to check for activity in </param>
            <returns> True when profile was active within past x minutes </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileActivityService.GetActiveProfileIdsWithinMinutes(System.Int32)">
            <summary>
                Get a list of profile ids that were active in the last x minutes
            </summary>
            <param name="minutes"> How many minutes from now to search for profiles </param>
            <returns> List of active profile ids </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileActivityService.SetActivityTimestamp(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Update the timestamp a profile was last observed active
            </summary>
            <param name="sessionId"> Profile to update </param>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Profile.ProfileFixerService">
            <summary>
                Service for attempting to fix profile related issues.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Profile.ProfileFixerService},SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable,SPTarkov.Server.Core.Models.Spt.Tables.GlobalTable,SPTarkov.Server.Core.Models.Spt.Tables.TradersTable,SPTarkov.Server.Core.Utils.JsonUtil,SPTarkov.Server.Core.Helpers.Commerce.RewardHelper,SPTarkov.Server.Core.Helpers.Profile.HideoutHelper,SPTarkov.Server.Core.Services.Locales.ServerLocalisationService,SPTarkov.Server.Core.Models.Spt.Config.CoreConfig)">
            <summary>
                Service for attempting to fix profile related issues.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.CheckForAndFixPmcProfileIssues(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Find issues in the pmc profile data that may cause issues and fix them
            </summary>
            <param name="pmcProfile">profile to check and fix</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.CheckForAndFixDialogueAttachments(SPTarkov.Server.Core.Models.Eft.Profile.SptProfile)">
            <summary>
                Resolve any dialogue attachments that were accidentally created using the player's equipment ID as
                the stash root object ID
            </summary>
            <param name="fullProfile"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.FixProfileBreakingInventoryItemIssues(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Attempt to fix common item issues that corrupt profiles
            </summary>
            <param name="pmcProfile">Profile to check items of</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.RemoveDanglingConditionCounters(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                TODO - make this non-public - currently used by RepeatableQuestController
                Remove unused condition counters
            </summary>
            <param name="pmcProfile">profile to remove old counters from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.RemoveDanglingTaskConditionCounters(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Repeatable quests leave behind TaskConditionCounter objects that make the profile bloat with time, remove them
            </summary>
            <param name="pmcProfile">Player profile to check</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.RemoveOrphanedQuests(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                After removing mods that add quests, the quest panel will break without removing these
            </summary>
            <param name="pmcProfile">Profile to remove dead quests from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.VerifyQuestProductionUnlocks(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Verify that all quest production unlocks have been applied to the PMC Profile
            </summary>
            <param name="pmcProfile">The profile to validate quest productions for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.VerifyQuestProductionUnlock(SPTarkov.Server.Core.Models.Eft.Common.PmcData,SPTarkov.Server.Core.Models.Eft.Common.Tables.Reward,SPTarkov.Server.Core.Models.Eft.Common.Tables.Quest)">
            <summary>
                Validate that the given profile has the given quest reward production scheme unlocked, and add it if not
            </summary>
            <param name="pmcProfile">Profile to check</param>
            <param name="productionUnlockReward">The quest reward to validate</param>
            <param name="questDetails">The quest the reward belongs to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.FixOrphanedInsurance(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                Remove any entries from `pmcProfile.InsuredItems` that do not have a corresponding
                `pmcProfile.Inventory.items` entry
            </summary>
            <param name="pmcProfile"> PMC Profile to fix </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.AddHideoutEliteSlots(SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                If the profile has elite Hideout Management skill, add the additional slots from globals
                NOTE: This seems redundant, but we will leave it here just in case.
            </summary>
            <param name="pmcProfile">profile to add slots to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.AddEmptyObjectsToHideoutAreaSlots(SPTarkov.Server.Core.Models.Enums.Hideout.HideoutAreas,System.Int32,SPTarkov.Server.Core.Models.Eft.Common.PmcData)">
            <summary>
                add in objects equal to the number of slots
            </summary>
            <param name="areaType">area to check</param>
            <param name="emptyItemCount">area to update</param>
            <param name="pmcProfile">profile to update</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.AddMissingHideoutBonusesToProfile(SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Hideout.HideoutArea})">
            <summary>
                REQUIRED for dev profiles <br />
                Iterate over players hideout areas and find what's built, look for missing bonuses those areas give and add them if missing
            </summary>
            <param name="pmcProfile"> Profile to update </param>
            <param name="dbHideoutAreas"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.GetBonusFromProfile(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Bonus},SPTarkov.Server.Core.Models.Eft.Common.Tables.Bonus)">
            <summary>
                Finds a bonus in a profile
            </summary>
            <param name="profileBonuses"> Bonuses from profile </param>
            <param name="bonus"> Bonus to find </param>
            <returns> Matching bonus </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileFixerService.TagSearchRegex">
            <remarks>
            Pattern:<br/>
            <code>[^a-zA-Z0-9 -]</code><br/>
            Explanation:<br/>
            <code>
            ○ Match a character in the set [^ \-0-9A-Za-z].<br/>
            </code>
            </remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Profile.ProfileMigrationService.MigrateAndValidateProfile(System.Text.Json.Nodes.JsonObject)">
            <summary>
            Migrates and verifies if profiles are compatible
            </summary>
            <param name="profile">The profile as a <see cref="T:System.Text.Json.Nodes.JsonObject"/> to verify and migrate</param>
            <returns>The migrated and validated profile</returns>
            <exception cref="T:System.InvalidOperationException">Thrown if a profile file cannot be loaded at all</exception>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairCategoriesService.GetCategoriesFromOffers(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer},SPTarkov.Server.Core.Models.Eft.Ragfair.SearchRequestData,System.Boolean)">
            <summary>
                Get a dictionary of each item the play can see in their flea menu, filtered by what is available for them to buy
            </summary>
            <param name="offers">All offers in flea</param>
            <param name="searchRequestData">Search criteria requested</param>
            <param name="fleaUnlocked">Can player see full flea yet (level 15 by default)</param>
            <returns>KVP of item tpls + count of offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairLinkedItemService.GetLinkedDbItems(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Use ragfair linked item service to get a list of items that can fit on or in designated itemTpl
            </summary>
            <param name="itemTpl"> Item to get sub-items for </param>
            <returns> TemplateItem list </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairLinkedItemService.BuildLinkedItemTable">
            <summary>
                Create Dictionary of every item and the items associated with it
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairLinkedItemService.AddRevolverCylinderAmmoToLinkedItems(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Collections.Generic.HashSet{SPTarkov.Server.Core.Models.Common.MongoId})">
            <summary>
                Add ammo to revolvers linked item dictionary
            </summary>
            <param name="cylinder"> Revolvers cylinder </param>
            <param name="itemLinkedSet"> Set to add to </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairLinkedItemService.GetSlotFilters(SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem)">
            <summary>
            Get a set of unique tpls from an items Slot 'filter' array
            </summary>
            <param name="item">Db item to get tpls from</param>
            <returns>Set of tpls</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.GetOffers">
            <summary>
                Get all offers
            </summary>
            <returns> List of RagfairOffers </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.GetOffersOfType(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get offers for a desired item tpl
            </summary>
            <param name="templateId">Id of item to get offers for</param>
            <returns>IEnumerable <see cref="T:SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer"/></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.DoesOfferExist(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Does the offer exist on the ragfair
            </summary>
            <param name="offerId"> Offer id to check for </param>
            <returns> True when offer exists </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.RemoveOfferById(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Remove an offer from ragfair by offer id
            </summary>
            <param name="offerId"> Offer id to remove </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.ReduceOfferQuantity(SPTarkov.Server.Core.Models.Common.MongoId,System.Int32)">
            <summary>
                Reduce size of an offer stack by specified amount
            </summary>
            <param name="offerId"> Offer to adjust stack size of </param>
            <param name="amount"> How much to deduct from offers stack size </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.RemoveAllOffersByTrader(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Remove all offers from ragfair made by trader
            </summary>
            <param name="traderId">Trader to remove offers for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.TraderOffersNeedRefreshing(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Do the trader offers on flea need to be refreshed
            </summary>
            <param name="traderID"> Trader to check </param>
            <returns> True if they do </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.AddPlayerOffers">
            <summary>
            Iterate over player profiles and add offers to flea market offer cache
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.HideOffer(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Disable/Hide an offer from flea
            </summary>
            <param name="offerId"> OfferID to hide </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.RemoveExpiredOffers">
            <summary>
                Process cached expired offer ids
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.ProcessStaleOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
            Remove stale offer from flea
            Send offer items back when its player offer
            Skip trader offers - we want those to remain in 'expired' state until trader refresh
            </summary>
            <param name="staleOfferId"> Stale offer id to process </param>
            <param name="flagOfferAsExpired">OPTIONAL - Flag the passed in offer as expired default = true</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.ReturnUnsoldPlayerOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
            Process a player offer that didn't sell
            Reduce rep
            Send items back in mail
            Increment `notSellSum` value
            </summary>
            <param name="playerOffer">Offer to process</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.UnstackOfferItems(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Flea offer items are stacked up often beyond the StackMaxSize limit.
                Unstack the items into an array of root items and their children.
                Will create new items equal to the stack.
            </summary>
            <param name="items"> Offer items to unstack </param>
            <returns> Unstacked array of items </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairOfferService.EnoughExpiredOffersExistToProcess">
            <summary>
            Have enough offers expired their sell time beyond the `ExpiredOfferThreshold` config property
            </summary>
            <returns>True if enough offers have expired</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService">
            <summary>
                Stores flea prices for items as well as methods to interact with them.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.#ctor(SPTarkov.Common.Models.Logging.ISptLogger{SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService},SPTarkov.Server.Core.Models.Spt.Tables.TemplateTable,SPTarkov.Server.Core.Models.Spt.Tables.HideoutTable,SPTarkov.Server.Core.Utils.RandomUtil,SPTarkov.Server.Core.Helpers.Profile.HandbookHelper,SPTarkov.Server.Core.Helpers.Traders.TraderHelper,SPTarkov.Server.Core.Helpers.Items.PresetHelper,SPTarkov.Server.Core.Helpers.Items.ItemHelper,SPTarkov.Server.Core.Services.Locales.ServerLocalisationService,SPTarkov.Server.Core.Models.Spt.Config.RagfairConfig)">
            <summary>
                Stores flea prices for items as well as methods to interact with them.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.Load">
            <summary>
                Generate static (handbook) and dynamic (prices.json) flea prices, store inside class as dictionaries
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.RefreshStaticPrices">
            <summary>
                Iterate over all items of type "Item" in db and get template price, store in cache
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.ReplaceFleaBasePrices">
            <summary>
            Replace base item price used for flea
            Use handbook as a base price
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetHideoutCraftMultiplier(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices,System.Collections.Generic.HashSet{System.Nullable{SPTarkov.Server.Core.Models.Common.MongoId}})">
            <summary>
            Get the multiplier to apply to items used in hideout crafts
            If not hideout craft item, return 0
            </summary>
            <param name="itemTpl">Item to get multiplier for</param>
            <param name="config">Ragfair config</param>
            <param name="hideoutCraftItems">Craft item tpls</param>
            <returns>Multiplier</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetHideoutCraftItemTpls">
            <summary>
            Get a set of item tpls used by hideout crafts as requirements
            </summary>
            <returns>Set</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetFleaBasePriceMultiplier(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Spt.Config.GenerateFleaPrices)">
            <summary>
            Get the multiplier to apply to a handbook price to create the base flea price of an item
            </summary>
            <param name="itemTpl">Item to look up multiplier of</param>
            <param name="config"></param>
            <returns>Multiplier value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetFleaPriceForItem(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the dynamic price for an item. If value doesn't exist, use static (handbook) value.
                if no static value, return 1
            </summary>
            <param name="tplId">Item tpl id to get price for</param>
            <returns>price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetDynamicPriceForItem(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the dynamic (flea) price for an item
            </summary>
            <param name="itemTpl"> Item template id to look up </param>
            <returns> Price in roubles </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetStaticPriceForItem(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Grab the static (handbook) for an item by its tplId
            </summary>
            <param name="itemTpl">item template id to look up</param>
            <returns>price in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetAllFleaPrices">
            <summary>
                Get prices for all items on flea, prioritize handbook prices first, use prices from prices.json if missing
                This will refresh the caches prior to building the output
            </summary>
            <returns>Dictionary of item tpls and rouble cost</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetPriceDifference(System.Double,System.Double)">
            <summary>
                Get the percentage difference between two values
            </summary>
            <param name="a">numerical value a</param>
            <param name="b">numerical value b</param>
            <returns>different in percent</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetDynamicOfferPriceForOffer(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
                Generate a currency cost for an item and its mods
            </summary>
            <param name="offerItems">Item with mods to get price for</param>
            <param name="desiredCurrency">Currency price desired in</param>
            <param name="isPackOffer">Price is for a pack type offer</param>
            <returns>cost of item in desired currency</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetDynamicItemPrice(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Nullable{System.Boolean})">
            <summary>
            </summary>
            <param name="itemTemplateId">items tpl value</param>
            <param name="desiredCurrency">Currency to return result in</param>
            <param name="item">Item object (used for weapon presets)</param>
            <param name="offerItems"></param>
            <param name="isPackOffer"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.AdjustUnreasonablePrice(SPTarkov.Server.Core.Models.Spt.Config.UnreasonableModPrices,SPTarkov.Server.Core.Models.Common.MongoId,System.Double)">
            <summary>
                using data from config, adjust an items price to be relative to its handbook price
            </summary>
            <param name="unreasonableItemChange">Change object from config</param>
            <param name="itemTpl">Item being adjusted</param>
            <param name="price">Current price of item</param>
            <returns>Adjusted price of item</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetOfferTypeRangeValues(System.Boolean,System.Boolean)">
            <summary>
                Get different min/max price multipliers for different offer types (preset/pack/default)
            </summary>
            <param name="isPreset">Offer is a preset</param>
            <param name="isPack">Offer is a pack</param>
            <returns>MinMax values</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.AdjustPriceIfBelowHandbook(System.Double,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check to see if an items price is below its handbook price and adjust according to values set to config/ragfair.json
            </summary>
            <param name="itemPrice">price of item</param>
            <param name="itemTpl">item template Id being checked</param>
            <returns>adjusted price value in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.RandomiseOfferPrice(System.Double,SPTarkov.Server.Core.Models.Common.MinMax{System.Double})">
            <summary>
                Multiply the price by a randomised curve where n = 2, shift = 2
            </summary>
            <param name="existingPrice">price to alter</param>
            <param name="rangeValues">min and max to adjust price by</param>
            <returns>multiplied price</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetWeaponPresetPrice(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item},System.Double)">
            <summary>
                Calculate the cost of a weapon preset by adding together the price of its mods + base price of default weapon preset
            </summary>
            <param name="weaponRootItem">base weapon</param>
            <param name="weaponWithChildren">weapon plus mods</param>
            <param name="existingPrice">price of existing base weapon</param>
            <returns>price of weapon in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetPresetPriceByChildren(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Common.Tables.Item})">
            <summary>
                Calculate the cost of a weapon preset by adding together the price of its mods
            </summary>
            <param name="weaponWithChildren">weapon plus mods</param>
            <returns>price of weapon in roubles</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetHighestHandbookOrTraderPriceAsRouble(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get the highest price for an item that is stored in handbook or trader assorts
            </summary>
            <param name="itemTpl">Item to get highest price of</param>
            <returns>rouble cost</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairPriceService.GetWeaponPreset(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item)">
            <summary>
                Attempt to get the default preset for a weapon, failing that get the first preset in the array
                (assumes default = has encyclopedia entry)
            </summary>
            <param name="weapon">weapon item to get preset of</param>
            <returns>Default preset object</returns>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Ragfair.RagfairRequiredItemsService._requiredItemsCache">
            <summary>
            Key = tpl, Value = offerIds
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Services.Ragfair.RagfairRequiredItemsService._emptyOfferIdSet">
            <summary>
            Empty hashset to be returned when no keys found by GetRequiredOffersById (reduces memory allocations)
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairRequiredItemsService.GetRequiredOffersById(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
            Get the offerId of offers that require the supplied tpl
            </summary>
            <param name="tpl">Tpl to find offers ids for</param>
            <returns>Set of OfferIds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairRequiredItemsService.BuildRequiredItemTable">
            <summary>
            Create a cache of offer Ids keyed against the item tpl they require
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairRequiredItemsService.InvalidateCache">
            <summary>
            Flag the cache as stale
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairTaxService.CalculateTax(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Nullable{System.Double},System.Nullable{System.Int32},System.Boolean)">
            <summary>
                This method, along with CalculateItemWorth, is trying to mirror the client-side code found in the method "CalculateTaxPrice".
                It's structured to resemble the client-side code as closely as possible - avoid making any big structure changes if it's not necessary.
            </summary>
            <param name="item"> Item being sold on flea </param>
            <param name="pmcData"> Player profile </param>
            <param name="requirementsValue"></param>
            <param name="offerItemCount"> Number of offers being created </param>
            <param name="sellInOnePiece"></param>
            <returns> Tax in roubles </returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Ragfair.RagfairTaxService.CalculateItemWorth(SPTarkov.Server.Core.Models.Eft.Common.Tables.Item,SPTarkov.Server.Core.Models.Eft.Common.Tables.TemplateItem,System.Int32,SPTarkov.Server.Core.Models.Eft.Common.PmcData,System.Boolean)">
            <summary>
                This method is trying to replicate the item worth calculation method found in the client code.
                Any inefficiencies or style issues are intentional and should not be fixed, to preserve the client-side code mirroring.
            </summary>
            <param name="item"></param>
            <param name="itemTemplate"></param>
            <param name="itemCount"></param>
            <param name="pmcData"></param>
            <param name="isRootItem"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.BundleHashCacheService.GetOrCalculateHashAsync(System.String,System.Threading.CancellationToken)">
            <summary>
                Return the bundle's CRC, hashing the file only when size or write time no longer match the cached entry.
            </summary>
            <param name="bundlePath">The path to the bundle</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the hashing operation.
            </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.BundleHashCacheService.WriteCacheAsync(System.Threading.CancellationToken)">
            <summary>
                Writes only the bundles seen this run, dropping entries belonging to removed mods.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.NotificationService.Pop(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Pop first message from queue.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.NotificationService.Add(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Eft.Ws.WsNotificationEvent)">
            <summary>
                Add message to queue
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.NotificationService.Get(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get message queue for session
            </summary>
            <param name="sessionID">Session/player id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.FixDogtagCaseNotAcceptingAllDogtags">
            <summary>
            BSG don't have all the new dogtag types in the containers allowed list
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.GetWeeklyBoss(System.Collections.Generic.List{SPTarkov.Server.Core.Models.Eft.Common.WildSpawnType},System.DayOfWeek)">
            <summary>
            Choose a boss that will spawn at 100% on a map from a predefined collection of bosses
            </summary>
            <param name="bosses">Pool of bosses to pick from</param>
            <param name="bossResetDay">Day of week choice of boss changes</param>
            <returns>Boss to spawn for this week</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.FlagMapAsGuaranteedBoss(SPTarkov.Server.Core.Models.Eft.Common.WildSpawnType)">
            <summary>
            Given the provided boss, flag them as 100% spawn and add skull to the map they spawn on
            </summary>
            <param name="boss">Boss to flag</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.MergeCustomAchievements">
            <summary>
                Merge custom achievements into achievement db table
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.AdjustMapBotLimits">
            <summary>
                Apply custom limits on bot types as defined in configs/location.json/botTypeLimits
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.FixRoguesSpawningInstantlyOnLighthouse">
            <summary>
                Make Rogues spawn later to allow for scavs to spawn first instead of rogues filling up all spawn positions
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.AdjustLabsRaiderSpawnRate">
            <summary>
                Make non-trigger-spawned raiders spawn earlier + always
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.AdjustHideoutBuildTimes(System.Int32)">
            <summary>
                Adjust all hideout craft times to be no higher than the override
            </summary>
            <param name="overrideSeconds"> Time in seconds </param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.PostDbLoadService.ValidateQuestAssortUnlocksExist">
            <summary>
                Check for any missing assorts inside each traders assort.json data, checking against traders questassort.json
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetChristmasEventItems">
            <summary>
                Get an array of christmas items found in bots inventories as loot
            </summary>
            <returns>array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetHalloweenEventItems">
            <summary>
                Get an array of halloween items found in bots inventories as loot
            </summary>
            <returns>array</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.ItemIsSeasonalRelated(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Check if item id exists in christmas or halloween event arrays
            </summary>
            <param name="itemTpl">item tpl to check for</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetActiveEvents">
            <summary>
                Get active seasonal events
            </summary>
            <returns>Array of active events</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetInactiveSeasonalEventItems">
            <summary>
                Get an array of seasonal items that should not appear
                e.g. if halloween is active, only return christmas items
                or, if halloween and christmas are inactive, return both sets of items
            </summary>
            <returns>array of tpl strings</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.SeasonalEventEnabled">
            <summary>
                Is a seasonal event currently active
            </summary>
            <returns>true if event is active</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.ChristmasEventEnabled">
            <summary>
                Is christmas event active
            </summary>
            <returns>true if active</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.HalloweenEventEnabled">
            <summary>
                is halloween event active
            </summary>
            <returns>true if active</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.IsAutomaticEventDetectionEnabled">
            <summary>
                Is detection of seasonal events enabled (halloween / christmas)
            </summary>
            <returns>true if seasonal events should be checked for</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetEventBotGear(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Get a dictionary of gear changes to apply to bots for a specific event e.g. Christmas/Halloween
            </summary>
            <param name="eventType">Name of event to get gear changes for</param>
            <returns>bots with equipment changes</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetEventBotLoot(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Get a dictionary of loot changes to apply to bots for a specific event e.g. Christmas/Halloween
            </summary>
            <param name="eventType">Name of event to get gear changes for</param>
            <returns>bots with loot changes</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetEventDetails">
            <summary>
                Get the dates each seasonal event starts and ends at
            </summary>
            <returns>Record with event name + start/end date</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.IsQuestRelatedToEvent(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Look up quest in configs/quest.json
            </summary>
            <param name="questId">Quest to look up</param>
            <param name="eventType">event type (Christmas/Halloween/None)</param>
            <returns>true if related</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.EnableSeasonalEvents">
            <summary>
                Handle activating seasonal events
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.ForceSeasonalEvent(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Force a seasonal event to be active
            </summary>
            <param name="eventType">Event to force active</param>
            <returns>True if event was successfully force enabled</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.CacheActiveEvents">
            <summary>
                Store active events inside class list property `currentlyActiveEvents` + set class properties: christmasEventActive/halloweenEventActive
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetActiveWeatherSeason">
            <summary>
                Get the currently active weather season e.g. SUMMER/AUTUMN/WINTER
            </summary>
            <returns>Season enum value</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.RemoveChristmasItemsFromBotInventory(SPTarkov.Server.Core.Models.Eft.Common.Tables.BotTypeInventory,System.String)">
            <summary>
                Iterate through bots inventory and loot to find and remove christmas items (as defined in SeasonalEventService)
            </summary>
            <param name="botInventory">Bots inventory to iterate over</param>
            <param name="botRole">the role of the bot being processed</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.UpdateGlobalEvents(SPTarkov.Server.Core.Models.Spt.Tables.GlobalConfig,SPTarkov.Server.Core.Models.Spt.Config.SeasonalEvent)">
            <summary>
                Make adjusted to server code based on the name of the event passed in
            </summary>
            <param name="globalConfig">globals.json</param>
            <param name="eventType">Name of the event to enable. e.g. Christmas</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AdjustBotAppearanceValues(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
            Adjust the weights for all bots body part appearances, based on data inside
            seasonalevents.json/botAppearanceChanges
            </summary>
            <param name="season">Season to apply changes for</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AdjustZryachiyMeleeChance">
            <summary>
                Force zryachiy to always have a melee weapon
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.EnableHalloweenSummonEvent">
            <summary>
                Enable the halloween zryachiy summon event
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetLocationsWithZombies(System.Collections.Generic.Dictionary{System.String,System.Double})">
            <summary>
                Get location ids of maps with an infection above 0
            </summary>
            <param name="locationInfections">Dict of locations with their infection percentage</param>
            <returns>List of lowercased location ids</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetLocationFromInfectedLocation(System.String)">
            <summary>
                BSG store the location ids differently inside `LocationInfection`, need to convert to matching location IDs
            </summary>
            <param name="infectedLocationKey">Key to convert</param>
            <returns>List of locations</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddEventBossesToMaps(System.String,System.Collections.Generic.HashSet{System.String})">
            <summary>
                Add event bosses to maps
            </summary>
            <param name="eventType">Seasonal event, e.g. HALLOWEEN/CHRISTMAS</param>
            <param name="mapIdWhitelist">OPTIONAL - Maps to add bosses to</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AdjustTraderIcons(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Change trader icons to be more event themed (Halloween only so far)
            </summary>
            <param name="eventType">What event is active</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddLootItemsToGifterDropItemsList">
            <summary>
                Add lootable items from backpack into patrol.ITEMS_TO_DROP difficulty property
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddEventGearToBots(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Read in data from seasonalEvents.json and add found equipment items to bots
            </summary>
            <param name="eventType">Name of the event to read equipment in from config</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddEventLootToBots(SPTarkov.Server.Core.Models.Enums.SeasonalEventType)">
            <summary>
                Read in data from seasonalEvents.json and add found loot items to bots
            </summary>
            <param name="eventType">Name of the event to read loot in from config</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddPumpkinsToScavBackpacks">
            <summary>
                Add pumpkin loot boxes to scavs
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.EnableDancingTree">
            <summary>
                Set Khorovod(dancing tree) chance to 100% on all maps that support it
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.AddGifterBotToMaps">
            <summary>
                Add santa to maps
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GiveGift(SPTarkov.Server.Core.Models.Common.MongoId,System.String)">
            <summary>
                Send gift to player if they have not already received it
            </summary>
            <param name="playerId">Player to send gift to</param>
            <param name="giftKey">Key of gift to give</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.GetBaseRoleForEventBot(System.String)">
            <summary>
                Get the underlying bot type for an event bot e.g. `peacefullZryachiyEvent` will return `bossZryachiy`
            </summary>
            <param name="eventBotRole">Event bot role type</param>
            <returns>Bot role as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Services.Server.SeasonalEventService.EnableSnow">
            <summary>
                Force the weather to be snow
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2">
            <summary>
                Array of ProbabilityObjectArray which allow to randomly draw of the contained objects
                based on the relative probability of each of its elements.
                The probabilities of the contained element is not required to be normalized.
                Example:
                po = new ProbabilityObjectArray(
                new ProbabilityObject("a", 5),
                new ProbabilityObject("b", 1),
                new ProbabilityObject("c", 1)
                );
                res = po.draw(10000);
                // count the elements which should be distributed according to the relative probabilities
                res.filter(x => x==="b").reduce((sum, x) => sum + 1 , 0)
            </summary>
            <typeparam name="K"></typeparam>
            <typeparam name="V"></typeparam>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.CumulativeProbability(System.Collections.Generic.IEnumerable{System.Double})">
            <summary>
                Calculates the normalized cumulative probability of the ProbabilityObjectArray's elements normalized to 1
            </summary>
            <param name="probValues">The relative probability values of which to calculate the normalized cumulative sum</param>
            <returns>Cumulative Sum normalized to 1</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Filter(System.Predicate{SPTarkov.Server.Core.Utils.Collections.ProbabilityObject{`0,`1}})">
            <summary>
                Filter What is inside ProbabilityObjectArray
            </summary>
            <param name="predicate"></param>
            <returns>Filtered results</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Clone">
            <summary>
                Deep clone this ProbabilityObjectArray
            </summary>
            <returns>Deep Copy of ProbabilityObjectArray</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Drop(`0)">
            <summary>
                Drop an element from the ProbabilityObjectArray
            </summary>
            <param name="key">The key of the element to drop</param>
            <returns>ProbabilityObjectArray without the dropped element</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Data(`0)">
            <summary>
                Return the data field of an element of the ProbabilityObjectArray
            </summary>
            <param name="key">The key of the element whose data shall be retrieved</param>
            <returns>Stored data object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Probability(`0)">
            <summary>
                Get the relative probability of an element by its key
                Example:
                po = new ProbabilityObjectArray(new ProbabilityObject("a", 5), new ProbabilityObject("b", 1))
                po.maxProbability() // returns 5
            </summary>
            <param name="key">Key of element whose relative probability shall be retrieved</param>
            <returns>The relative probability</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.MaxProbability">
            <summary>
            Get the maximum relative probability out of a ProbabilityObjectArray
            Example:
            po = new ProbabilityObjectArray(new ProbabilityObject("a", 5), new ProbabilityObject("b", 1))
            po.maxProbability() // returns 5
            </summary>
            <returns>the maximum value of all relative probabilities in this ProbabilityObjectArray</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.MinProbability">
            <summary>
                Get the minimum relative probability out of a ProbabilityObjectArray
                * Example:
                po = new ProbabilityObjectArray(new ProbabilityObject("a", 5), new ProbabilityObject("b", 1))
                po.minProbability() // returns 1
            </summary>
            <returns>the minimum value of all relative probabilities in this ProbabilityObjectArray</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.Draw(System.Int32)">
             <summary>
            Draw random element of the ProbabilityObject N times to return an array of N keys
             Keeps chosen element in place
             Chosen items can be duplicates
             </summary>
             <param name="itemCountToDraw">The number of times we want to draw</param>
             <returns>Collection consisting of N random keys for this ProbabilityObjectArray</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObjectArray`2.DrawAndRemove(System.Int32,System.Collections.Generic.List{`0})">
             <summary>
            Draw random element of the ProbabilityObject N times to return an array of N keys
             Removes drawn elements
             </summary>
             <param name="itemCountToDraw">The number of times we want to draw</param>
             <param name="neverRemoveWhitelist">List of keys which shall be replaced even if drawing without replacement</param>
             <returns>Collection consisting of N random keys for this ProbabilityObjectArray</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Utils.Collections.ProbabilityObject`2">
            <summary>
                A ProbabilityObject which is use as an element to the ProbabilityObjectArray array
                It contains a key, the relative probability as well as optional data.
            </summary>
            <typeparam name="K"></typeparam>
            <typeparam name="V"></typeparam>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Collections.ProbabilityObject`2.#ctor(`0,System.Nullable{System.Double},`1)">
            <summary>
            constructor for the ProbabilityObject
            </summary>
            <param name="key">The key of the element</param>
            <param name="relativeProbability">The relative probability of this element</param>
            <param name="data">Optional data attached to the element</param>
        </member>
        <member name="P:SPTarkov.Server.Core.Utils.Collections.ProbabilityObject`2.RelativeProbability">
            <summary>
                Weighting of key compared to other ProbabilityObjects
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.FileUtil.WriteFileAsync(System.String,System.Byte[],System.Threading.CancellationToken)">
            <summary>
            Writes a file atomically by first writing to a temporary file, then replacing the original.
            This prevents corruption if the write operation fails or is interrupted.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.FileUtil.CopyFile(System.String,System.String,System.Boolean)">
            <summary>
                Copy a file from one path to another
            </summary>
            <param name="copyFromPath">Source file to copy from</param>
            <param name="destinationFilePath"></param>
            <param name="overwrite">Should destination file be overwritten</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.FileUtil.DeleteDirectory(System.String,System.Boolean)">
            <summary>
                Delete a directory, must be empty unless 'deleteContent' is set to 'true'
            </summary>
            <param name="directory"></param>
            <param name="deleteContent"></param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HashUtil.GenerateCrc32ForFileAsync(System.String,System.Threading.CancellationToken)">
            <summary>
            Generates a CRC32 hash for a file, reading in chunks using a pooled buffer to reduce allocations.
            </summary>
            <param name="filePath">The path to the file</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the hashing operation.
            </param>
            <returns>The CRC32 hash as a uint</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HashUtil.GenerateHashForData(SPTarkov.Server.Core.Utils.HashingAlgorithm,System.String)">
            <summary>
                Create a hash for the data parameter
            </summary>
            <param name="algorithm">algorithm to use to hash</param>
            <param name="data">data to be hashed</param>
            <returns>hash value</returns>
            <exception cref="T:System.NotImplementedException">thrown if the provided algorithm is not implemented</exception>
            >
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HashUtil.GenerateHashForDataAsync(SPTarkov.Server.Core.Utils.HashingAlgorithm,System.String,System.Threading.CancellationToken)">
            <summary>
                Create a hash for the data parameter asynchronously
            </summary>
            <param name="algorithm">algorithm to use to hash</param>
            <param name="data">data to be hashed</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the hashing operation.
            </param>
            <returns>A task which contains the hash value</returns>
            <exception cref="T:System.NotImplementedException">thrown if the provided algorithm is not implemented</exception>
            >
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HashUtil.GenerateAccountId">
            <summary>
                Generates an account ID for a profile
            </summary>
            <returns>Generated account ID</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HttpResponseUtil.NoBody``1(``0)">
            <summary>
            Return passed in data as JSON string
            </summary>
            <typeparam name="T"></typeparam>
            <param name="data">Object to serialise into string</param>
            <returns>response as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HttpResponseUtil.GetBody``1(``0,SPTarkov.Server.Core.Models.Enums.BackendErrorCodes,System.String,System.Boolean)">
            <summary>
            Game client needs server responses in a particular format
            </summary>
            <typeparam name="T"></typeparam>
            <param name="data"></param>
            <param name="err"></param>
            <param name="errmsg"></param>
            <param name="sanitize"></param>
            <returns>response as string</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HttpResponseUtil.EmptyResponse">
            <summary>
            Get empty string as a response
            </summary>
            <returns>Client response</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.HttpResponseUtil.AppendErrorToOutput(SPTarkov.Server.Core.Models.Eft.ItemEvent.ItemEventRouterResponse,System.String,SPTarkov.Server.Core.Models.Enums.BackendErrorCodes)">
            <summary>
            Add an error into the 'warnings' array of the client response message
            </summary>
            <param name="output">IItemEventRouterResponse</param>
            <param name="message">Error message</param>
            <param name="errorCode">Error code</param>
            <returns>IItemEventRouterResponse</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.ImporterUtil.LoadRecursiveAsync(System.String,System.Type,System.Func{System.String,System.String,System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Func{System.String,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.Task},System.Threading.CancellationToken)">
            <summary>
                Load files into objects recursively (asynchronous)
            </summary>
            <param name="filePath">Path to folder with files</param>
            <param name="loadedType"></param>
            <param name="onReadCallback"></param>
            <param name="onObjectDeserialized"></param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the loading operation.
            </param>
            <returns>Task</returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Utils.Json.CacheLazyLoadAttribute">
            <summary>
            Marks a type whose <see cref="T:SPTarkov.Server.Core.Utils.Json.LazyLoad`1"/> values should hold onto what they deserialise.
            </summary>
        </member>
        <member name="T:SPTarkov.Server.Core.Utils.Json.Converters.ProcessBaseTradeRequestDataConverter">
            <summary>
            This is necessary to process buying and selling from traders, those are the only types that do this
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Json.LazyLoad`1.AddTransformer(System.Func{`0,`0})">
            <summary>
            Adds a transformer to modify the value during lazy loading. Transformers execute
            in registration order.
            </summary>
            <param name="transformer">Function that transforms the value</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Json.LazyLoad`1.Clear">
            <summary>
            Drop any cached value so the next read deserialises again
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.Deserialize``1(System.String)">
            <summary>
                Convert JSON into an object
            </summary>
            <typeparam name="T">The type of the object to deserialize to</typeparam>
            <param name="json">The JSON string to deserialize</param>
            <returns>Deserialized object or null</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.Deserialize(System.String,System.Type)">
            <summary>
                Convert JSON into an object
            </summary>
            <param name="json">The JSON string to deserialize</param>
            <param name="type">The type of the object to deserialize to</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFile``1(System.String)">
            <summary>
                Convert JSON into an object from a file
            </summary>
            <param name="file">The JSON File to read</param>
            <returns>T</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFileAsync``1(System.String,System.Threading.CancellationToken)">
            <summary>
                Convert JSON into an object from a file asynchronously
            </summary>
            <param name="file">The JSON File to read</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the deserialization operation.
            </param>
            <returns>T</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFile(System.String,System.Type)">
            <summary>
                Convert JSON into an object from a file
            </summary>
            <param name="file">The JSON File to read</param>
            <param name="type">The type of the object to deserialize to</param>
            <returns>object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFileAsync(System.String,System.Type,System.Threading.CancellationToken)">
            <summary>
                Convert JSON into an object from a file asynchronously
            </summary>
            <param name="file">The JSON File to read</param>
            <param name="type">The type of the object to deserialize to</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the deserialization operation.
            </param>
            <returns>object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFileStream(System.IO.FileStream,System.Type)">
            <summary>
                Convert JSON into an object from a FileStream
            </summary>
            <param name="fs">The file stream to deserialize</param>
            <param name="type">The type of the object to deserialize to</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromFileStreamAsync(System.IO.FileStream,System.Type,System.Threading.CancellationToken)">
            <summary>
                Convert JSON into an object from a FileStream asynchronously
            </summary>
            <param name="fs">The file stream to deserialize</param>
            <param name="type">The type of the object to deserialize to</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the deserialization operation.
            </param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromStreamAsync(System.IO.Stream,System.Type,System.Threading.CancellationToken)">
            <summary>
                Convert JSON into an object from any stream asynchronously
            </summary>
            <param name="stream">The stream to deserialize</param>
            <param name="type">The type of the object to deserialize to</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the deserialization operation.
            </param>
            <returns>object</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.DeserializeFromMemoryStreamAsync``1(System.IO.MemoryStream,System.Threading.CancellationToken)">
            <summary>
                Convert JSON into an object from a MemoryStream asynchronously
            </summary>
            <param name="ms">The memory stream to deserialize</param>
            <param name="cancellationToken">
            The <see cref="T:System.Threading.CancellationToken"/> that can be used to cancel the deserialization operation.
            </param>
            <returns>T</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.Serialize``1(``0,System.Boolean)">
            <summary>
                Convert an object into JSON
            </summary>
            <typeparam name="T">Type of the object being serialised</typeparam>
            <param name="obj">Object to serialise</param>
            <param name="indented">Should JSON be indented</param>
            <returns>Serialised object as JSON, or null</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.JsonUtil.Serialize(System.Object,System.Type,System.Boolean)">
            <summary>
                Convert an object into JSON
            </summary>
            <param name="obj">Object to serialise</param>
            <param name="type">Type of object being serialized</param>
            <param name="indented">Should JSON be indented</param>
            <returns>Serialized text</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.MathUtil.ListAdd(System.Collections.Generic.IEnumerable{System.Double},System.Double)">
            <summary>
                Helper to add a constant to all list elements
            </summary>
            <param name="values">The list of numbers to which the summand should be added</param>
            <param name="additive"></param>
            <returns>A list of elements with the additive added to all elements</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.MathUtil.MapToRange(System.Double,System.Double,System.Double,System.Double,System.Double)">
            <summary>
                Maps a value from an input range to an output range linearly.
                Example:
                a_min = 0; a_max=1;
                b_min = 1; b_max=3;
                MapToRange(0.5, a_min, a_max, b_min, b_max) // returns 2
            </summary>
            <param name="x">The value from the input range to be mapped to the output range.</param>
            <param name="minIn">Minimum of the input range.</param>
            <param name="maxIn">Maximum of the input range.</param>
            <param name="minOut">Minimum of the output range.</param>
            <param name="maxOut">Maximum of the output range.</param>
            <returns>The result of the mapping.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.MathUtil.Interp1``1(``0,System.Collections.Generic.IReadOnlyList{``0},System.Collections.Generic.IReadOnlyList{``0})">
            <summary>
                Linear interpolation
                e.g. used to do a continuous integration for quest rewards which are defined for specific support centers of pmcLevel
            </summary>
            <param name="xp">The point of x at which to interpolate</param>
            <param name="x">Support points in x (of same length as y)</param>
            <param name="y">Support points in y (of same length as x)</param>
            <returns>Interpolated value at xp, or null if xp is out of bounds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.ProgramStatics.ENTRY_TYPE">
            <summary>
            What type of release is this
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.ProgramStatics.DEBUG">
            <summary>
            Server is running in debug mode
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.ProgramStatics.MODS">
            <summary>
            Are mods enable for the server
            </summary>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.ProgramStatics.BUILD_TIME">
            <summary>
            Timestamp of server build date
            </summary>
            <returns></returns>
        </member>
        <member name="T:SPTarkov.Server.Core.Utils.QteRandomUtil">
            <summary>
                Deterministic XORShift PRNG that mirrors the client's EFT.PseudoRandom.RandomXORShift, used to replay hideout workout QTE rolls
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.QteRandomUtil.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
                Deterministic XORShift PRNG that mirrors the client's EFT.PseudoRandom.RandomXORShift, used to replay hideout workout QTE rolls
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.QteRandomUtil.FromSeedHex(System.String)">
            <summary>
                Decode a Hideout.Seed hex string into the RNG
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RagfairOfferHolder._expiredOfferIds">
            <summary>
            Expired offer Ids
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RagfairOfferHolder._offersById">
            <summary>
            Ragfair offer cache, keyed by offer Id
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RagfairOfferHolder._offersByTemplate">
            <summary>
            Offer Ids keyed by tpl
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RagfairOfferHolder._offersByTrader">
            <summary>
            Offer ids keyed by trader Id
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RagfairOfferHolder._fakePlayerOffers">
            <summary>
            Fake player offer ids keyed by itemTPl
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetOfferById(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get a ragfair offer by its id
            </summary>
            <param name="id">Ragfair offer id</param>
            <returns>RagfairOffer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetStaleOfferIds">
            <summary>
                Get a ragfair offer by its id
            </summary>
            <returns>RagfairOffer</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetOffersByTemplate(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get ragfair offers that match the passed in tpl
            </summary>
            <param name="templateId">Tpl to get offers for</param>
            <returns>RagfairOffer list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetOffersByTrader(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Get all offers being sold by a trader
            </summary>
            <param name="traderId">Id of trader to get offers for</param>
            <returns>RagfairOffer list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetOffers">
            <summary>
                Get all ragfair offers
            </summary>
            <returns>RagfairOffer list</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.AddOffers(System.Collections.Generic.IEnumerable{SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer})">
            <summary>
                Add a collection of offers to ragfair
            </summary>
            <param name="offers">Offers to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.AddOffer(SPTarkov.Server.Core.Models.Eft.Ragfair.RagfairOffer)">
            <summary>
                Add single offer to ragfair
            </summary>
            <param name="offer">Offer to add</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.RemoveOffer(SPTarkov.Server.Core.Models.Common.MongoId,System.Boolean)">
            <summary>
                Remove an offer from ragfair by id
            </summary>
            <param name="offerId">Offer id to remove</param>
            <param name="checkTraderOffers">OPTIONAL - Should trader offers be checked for offer id</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.RemoveAllOffersByTrader(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Remove all offers a trader has
            </summary>
            <param name="traderId">Trader id to remove offers from</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.AddOfferByTemplates(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add offer to offersByTemplate cache
            </summary>
            <param name="template">Tpl to store offer against</param>
            <param name="offerId">Offer to store against tpl</param>
            <returns>True - offer was added</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.AddOfferByTrader(SPTarkov.Server.Core.Models.Common.MongoId,SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Cache an offer inside `offersByTrader` by trader id
            </summary>
            <param name="trader">Trader id to store offer against</param>
            <param name="offerId">Offer to store against</param>
            <returns>True - offer was added</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.FlagOfferAsExpired(SPTarkov.Server.Core.Models.Common.MongoId)">
            <summary>
                Add a stale offers id to _expiredOfferIds collection for later processing
            </summary>
            <param name="staleOfferId">Id of offer to add to stale collection</param>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetExpiredOfferCount">
            <summary>
                Get total count of current expired offers
            </summary>
            <returns>Number of expired offers</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.GetExpiredOfferItems">
            <summary>
                Get an array of arrays of expired offer items + children
            </summary>
            <returns>Expired offer assorts</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.ResetExpiredOfferIds">
            <summary>
                Clear out internal expiredOffers dictionary of all items
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RagfairOfferHolder.FlagExpiredOffersAfterDate(System.Int64)">
            <summary>
                Flag offers with an end date set before the passed in timestamp
            </summary>
            <param name="timestamp">Timestamp at point offer is 'expired'</param>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RandomUtil.MaxRandomValue">
            <summary>
            Max value at 2^48
            </summary>
        </member>
        <member name="F:SPTarkov.Server.Core.Utils.RandomUtil.MaxSignificantDigits">
            <summary>
                The IEEE-754 standard for double-precision floating-point numbers limits the number of digits (including both
                integer + fractional parts) to about 15–17 significant digits. 15 is a safe upper bound, so we'll use that.
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetInt(System.Int32,System.Int32,System.Boolean)">
            <summary>
                Generates a random integer between the specified minimum and maximum values, inclusive.
            </summary>
            <param name="min">The minimum value (inclusive).</param>
            <param name="max">The maximum value (optional).</param>
            <param name="exclusive">If max is exclusive or not.</param>
            <returns>A random integer between the specified minimum and maximum values.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetInt64(System.Int64,System.Int64)">
            <summary>
                Generates a cryptographically secure random 64-bit integer in the specified range.
            </summary>
            <param name="min">The minimum value (inclusive).</param>
            <param name="max">The maximum value (optional).</param>
            <returns>A random 64-bit integerbetween the specified minimum and maximum values.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetDouble(System.Double,System.Double)">
            <summary>
                Generates a random floating-point number within the specified range ~15-17 digits (8 bytes).
            </summary>
            <param name="min">The minimum value of the range (inclusive).</param>
            <param name="max">The maximum value of the range (exclusive).</param>
            <returns>A random floating-point number between `min` (inclusive) and `max` (exclusive).</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetBool">
            <summary>
                Generates a random boolean value.
            </summary>
            <returns>A random boolean value, where the probability of `true` and `false` is approximately equal.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetPercentOfValue(System.Double,System.Double,System.Int32)">
            <summary>
                Calculates the percentage of a given number and returns the result.
            </summary>
            <param name="percent">The percentage to calculate.</param>
            <param name="number">The number to calculate the percentage of.</param>
            <param name="toFixed">The number of decimal places to round the result to (default is 2).</param>
            <returns>The calculated percentage of the given number, rounded to the specified number of decimal places.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetPercentOfValue(System.Double,System.Single,System.Int32)">
            <summary>
                Calculates the percentage of a given number and returns the result.
            </summary>
            <param name="percent">The percentage to calculate.</param>
            <param name="number">The number to calculate the percentage of.</param>
            <param name="toFixed">The number of decimal places to round the result to (default is 2).</param>
            <returns>The calculated percentage of the given number, rounded to the specified number of decimal places.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.ReduceValueByPercent(System.Double,System.Double)">
            <summary>
                Reduces a given number by a specified percentage.
            </summary>
            <param name="number">The original number to be reduced.</param>
            <param name="percentage">The percentage by which to reduce the number.</param>
            <returns>The reduced number after applying the percentage reduction.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetChance100(System.Nullable{System.Double})">
            <summary>
                Determines if a random event occurs based on the given chance percentage.
            </summary>
            <param name="chancePercent">The percentage chance (0-100) that the event will occur.</param>
            <returns>`true` if the event occurs, `false` otherwise.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetRandomElement``1(System.Collections.Generic.IEnumerable{``0})">
            <summary>
                Returns a random string from the provided collection of strings.
                This method is separate from GetCollectionValue so we can use a generic inference with GetCollectionValue.
            </summary>
            <param name="collection">The collection of strings to select a random value from.</param>
            <returns>A randomly selected string from the array.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetKey``2(System.Collections.Generic.Dictionary{``0,``1})">
            <summary>
                Gets a random key from the given dictionary
            </summary>
            <param name="dictionary">The dictionary from which to retrieve a key.</param>
            <typeparam name="TKey">Type of key</typeparam>
            <typeparam name="TVal">Type of Value</typeparam>
            <returns>A random TKey representing one of the keys of the dictionary.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetVal``2(System.Collections.Generic.Dictionary{``0,``1})">
            <summary>
                Gets a random val from the given dictionary
            </summary>
            <param name="dictionary">The dictionary from which to retrieve a value.</param>
            <typeparam name="TKey">Type of key</typeparam>
            <typeparam name="TVal">Type of Value</typeparam>
            <returns>A random TVal representing one of the values of the dictionary.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetNormallyDistributedRandomNumber(System.Double,System.Double,System.Int32)">
            <summary>
                Generates a normally distributed random number using the Box-Muller transform.
            </summary>
            <param name="mean">The mean (μ) of the normal distribution.</param>
            <param name="sigma">The standard deviation (σ) of the normal distribution.</param>
            <param name="attempt">The current attempt count to generate a valid number (default is 0).</param>
            <returns>A normally distributed random number.</returns>
            <remarks>
                This function uses the Box-Muller transform to generate a normally distributed random number.
                If the generated number is less than 0, it will recursively attempt to generate a valid number up to 100 times.
                If it fails to generate a valid number after 100 attempts, it will return a random float between 0.01 and twice the mean.
            </remarks>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.RandInt(System.Int32,System.Nullable{System.Int32})">
            <summary>
                Generates a random integer between the specified range.
            </summary>
            <param name="low">The lower bound of the range (inclusive).</param>
            <param name="high">The upper bound of the range (exclusive). If not provided, the range will be from 0 to `low`.</param>
            <returns>A random integer within the specified range.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.RandNum(System.Double,System.Double,System.Int32)">
            <summary>
                Generates a random number between two given values with optional precision.
            </summary>
            <param name="val1">The first value to determine the range.</param>
            <param name="val2">The second value to determine the range. If not provided, 0 is used.</param>
            <param name="precision">
                The number of decimal places to round the result to. Must be a positive integer between 0
                and MaxSignificantDigits(15), inclusive. If not provided, precision is determined by the input values.
            </param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.DrawRandomFromList``1(System.Collections.Generic.List{``0},System.Int32,System.Boolean)">
            <summary>
                Draws a specified number of random elements from a given list.
            </summary>
            <param name="originalList">The list to draw elements from.</param>
            <param name="count">The number of elements to draw. Defaults to 1.</param>
            <param name="replacement">Whether to draw with replacement. Defaults to true.</param>
            <typeparam name="T">The type of elements in the list.</typeparam>
            <returns>A List containing the drawn elements.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.DrawRandomFromDict``2(System.Collections.Generic.Dictionary{``0,``1},System.Int32,System.Boolean)">
            <summary>
                Draws a specified number of random keys from a given dictionary.
            </summary>
            <param name="dict">The dictionary from which to draw keys.</param>
            <param name="count">The number of keys to draw. Defaults to 1.</param>
            <param name="replacement">Whether to draw with replacement. Defaults to true.</param>
            <typeparam name="TKey">The type of elements in keys</typeparam>
            <typeparam name="TVal">The type of elements in values</typeparam>
            <returns>A list of randomly drawn keys from the dictionary.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetBiasedRandomNumber(System.Double,System.Double,System.Double,System.Double)">
            <summary>
                Generates a biased random number within a specified range.
            </summary>
            <param name="min">The minimum value of the range (inclusive).</param>
            <param name="max">The maximum value of the range (inclusive).</param>
            <param name="shift">The bias shift to apply to the random number generation.</param>
            <param name="n">The number of iterations to use for generating a Gaussian random number.</param>
            <returns>A biased random number within the specified range.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.Shuffle``1(System.Collections.Generic.List{``0})">
            <summary>
                Shuffles a list in place using the Fisher-Yates algorithm.
            </summary>
            <param name="originalList">The list to shuffle.</param>
            <typeparam name="T">The type of elements in the list.</typeparam>
            <returns>The shuffled list.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetSecureRandomNumber">
            <summary>
                Generates a secure random number between 0 (inclusive) and 1 (exclusive).
                This method uses RandomNumberGenerator to generate a 48-bit random integer,
                which is then divided by the maximum possible 48-bit integer value to
                produce a floating-point number in the range [0, 1).
            </summary>
            <returns>A secure random number between 0 (inclusive) and 1 (exclusive).</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.GetNumberPrecision(System.Double)">
            <summary>
                Determines the number of decimal places in a number.
            </summary>
            <param name="num">The number to analyze.</param>
            <returns>The number of decimal places, or 0 if none exist.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.RandomUtil.RollChance(System.Double,System.Double)">
            <summary>
                Chance to roll a number out of 100
            </summary>
            <param name="chance">Percentage chance roll should success</param>
            <param name="scale">scale of chance to allow support of numbers > 1-100</param>
            <returns>true if success</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Streams.HashingReadStream.GetHashHex">
            <summary>Hash of everything read so far, as an uppercase hex string.</summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetDate">
            <summary>
                Gets the current date as a formatted UTC string.
            </summary>
            <returns>The current date as 'YYYY-MM-DD'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTime">
            <summary>
                Gets the current time as a formatted UTC string.
            </summary>
            <returns>The current time as 'HH-MM-SS'.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTimeStamp">
            <summary>
                Gets the current timestamp in seconds in UTC.
            </summary>
            <returns>The current timestamp in seconds since the Unix epoch in UTC.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetStartOfDayTimeStamp(System.Nullable{System.Int64})">
            <summary>
                Gets the start of day timestamp for the given date
            </summary>
            <param name="timestamp">datetime to get the time stamp for, if null it uses current date.</param>
            <returns>Unix epoch for the start of day of the calculated date</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTimeStampFromNowDays(System.Int32)">
            <summary>
                Get timestamp of today + passed in day count
            </summary>
            <param name="daysFromNow">Days from now</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTimeStampFromNowHours(System.Int32)">
            <summary>
                Get timestamp of today + passed in hour count
            </summary>
            <param name="hoursFromNow"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetBsgTimeMailFormat">
            <summary>
                Gets the current time in UTC in a format suitable for mail in EFT.
            </summary>
            <returns>The current time as 'HH:MM' in UTC.</returns>
            GetTimeMailFormat
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetBsgDateMailFormat">
            <summary>
                Gets the current date in UTC in a format suitable for emails in EFT.
            </summary>
            <returns>The current date as 'DD.MM.YYYY' in UTC.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetHoursAsSeconds(System.Int32)">
            <summary>
                Converts a number of hours into seconds.
            </summary>
            <param name="hours">The number of hours to convert.</param>
            <returns>The equivalent number of seconds.</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTimeStampOfNextHour">
            <summary>
                Gets the time stamp of the start of the next hour in UTC
            </summary>
            <returns>Time stamp of the next hour in unix time seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetTodayMidnightTimeStamp">
            <summary>
                Returns the current days timestamp at 00:00
                e.g. current time: 13th March 14:22 will return 13th March 00:00
            </summary>
            <returns>Timestamp</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetDateTimeFromTimeStamp(System.Int64)">
            <summary>
                Takes a timestamp and converts to its date with Epoch
            </summary>
            <param name="timeStamp"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetUtcDateTimeFromTimeStamp(System.Int64)">
            <summary>
                Takes a unix timestamp and converts to its UTC date
            </summary>
            <param name="timeStamp"></param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.TimeUtil.GetMinutesAsSeconds(System.Int32)">
            <summary>
            Get passed in minutes as seconds
            </summary>
            <param name="minutes">Minutes</param>
            <returns>Seconds</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Watermark.GetVersionTag(System.Boolean)">
            <summary>
                Get a version string (x.x.x) or (x.x.x-BLEEDINGEDGE) OR (X.X.X (18xxx))
            </summary>
            <param name="withEftVersion">Include the eft version this spt version was made for</param>
            <returns></returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Watermark.GetInGameVersionLabel">
            <summary>
                Handle singleplayer/settings/version
                Get text shown in game on screen, can't be translated as it breaks BSGs client when certain characters are used
            </summary>
            <returns>label text</returns>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Watermark.SetTitle">
            <summary>
                Set window title
            </summary>
        </member>
        <member name="M:SPTarkov.Server.Core.Utils.Watermark.Draw(Spectre.Console.Color)">
            <summary>
                Draw watermark on screen
            </summary>
        </member>
        <member name="T:System.Text.RegularExpressions.Generated.TagSearchRegex_0">
            <summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the TagSearchRegex method.</summary>
        </member>
        <member name="F:System.Text.RegularExpressions.Generated.TagSearchRegex_0.Instance">
            <summary>Cached, thread-safe singleton instance.</summary>
        </member>
        <member name="M:System.Text.RegularExpressions.Generated.TagSearchRegex_0.#ctor">
            <summary>Initializes the instance.</summary>
        </member>
        <member name="T:System.Text.RegularExpressions.Generated.TagSearchRegex_0.RunnerFactory">
            <summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
        </member>
        <member name="M:System.Text.RegularExpressions.Generated.TagSearchRegex_0.RunnerFactory.CreateInstance">
            <summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
        </member>
        <member name="T:System.Text.RegularExpressions.Generated.TagSearchRegex_0.RunnerFactory.Runner">
            <summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
        </member>
        <member name="M:System.Text.RegularExpressions.Generated.TagSearchRegex_0.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
            <summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
            <param name="inputSpan">The text being scanned by the regular expression.</param>
        </member>
        <member name="M:System.Text.RegularExpressions.Generated.TagSearchRegex_0.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
            <summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
            <param name="inputSpan">The text being scanned by the regular expression.</param>
            <returns>true if a possible match was found; false if no more matches are possible.</returns>
        </member>
        <member name="T:System.Text.RegularExpressions.Generated.Utilities">
            <summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
        </member>
        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout">
            <summary>Default timeout value set in <see cref="T:System.AppContext"/>, or <see cref="F:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout"/> if none was set.</summary>
        </member>
        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_hasTimeout">
            <summary>Whether <see cref="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout"/> is non-infinite.</summary>
        </member>
        <member name="F:System.Text.RegularExpressions.Generated.Utilities.s_ascii_120FF03FEFFFF07FEFFFF07">
            <summary>Supports searching for characters in or not in " -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".</summary>
        </member>
    </members>
</doc>
